Სარჩევი:
- ნაბიჯი 1: შექმენით AWS ანგარიში
- ნაბიჯი 2: აპარატურის და პროგრამული უზრუნველყოფის სპეციფიკაციები
- ნაბიჯი 3: უკაბელო ვიბრაციის და ტემპერატურის სენსორები
- ნაბიჯი 4: ESP32 AWS Firmware
- ნაბიჯი 5: სენსორის მონაცემების მიღება უკაბელო ვიბრაციისა და ტემპერატურის სენსორისგან
- ნაბიჯი 6: დაკავშირება AWS– თან
- ნაბიჯი 7: მონაცემთა ვიზუალიზაცია AWS– ში
- ნაბიჯი 8: საერთო კოდი
ვიდეო: დაწყება AWS IoT უკაბელო ტემპერატურის სენსორით MQTT გამოყენებით: 8 ნაბიჯი
2024 ავტორი: John Day | [email protected]. ბოლოს შეცვლილი: 2024-01-30 10:19
ადრეულ ინსტრუქციებში, ჩვენ გავლილი გვაქვს ღრუბლოვანი სხვადასხვა პლატფორმები, როგორიცაა Azure, Ubidots, ThingSpeak, Losant და ა.შ. ჩვენ ვიყენებთ MQTT პროტოკოლს სენსორული მონაცემების ღრუბელში გაგზავნისთვის თითქმის ყველა ღრუბლოვან პლატფორმაზე. MQTT– ის, მისი უპირატესობებისა და სარგებლის შესახებ მეტი ინფორმაციისთვის HTTP პროტოკოლთან დაკავშირებით შეგიძლიათ იხილოთ ამ ინსტრუქციულად.
ამ სასწავლო ინსტრუქციაში ჩვენ გავადიდებთ Amazon– ის კიდევ ერთ და ყველაზე ნაცნობ ღრუბლოვან პლატფორმას. ბევრი თქვენგანი შეიძლება იცნობდეს AWS, ანუ Amazon ვებ სერვისებს და AWS– ის მიერ მოწოდებულ ღრუბლოვან ფუნქციონირებას. ის მრავალი წლის განმავლობაში იყო ვებ განვითარების ბირთვი. IoT პროგრამების მზარდი მასშტაბით, AWS გამოვიდა AWSIoT გადაწყვეტა. AWSIoT არის საიმედო გადაწყვეტა ჩვენი IoT პროგრამების მასპინძლობისთვის.
ამ ინსტრუქციის დაცვით:
- თქვენ შეძლებთ შექმნათ AWS ანგარიში თქვენი IoT პროგრამისთვის
- თქვენ შეძლებთ დაუკავშიროთ ESP32 AWS IoT ბირთვს
- გაგზავნეთ და მიიღეთ შეტყობინებები MQTT და HTTP პროტოკოლის გამოყენებით
- ვიზუალურად გაგზავნილი მონაცემები AWS– ში
ნაბიჯი 1: შექმენით AWS ანგარიში
AWS ანგარიშის დაყენება საკმაოდ მარტივია. თქვენ უბრალოდ უნდა ატვირთოთ რამდენიმე სერთიფიკატი, დაურთოთ მას პოლიტიკა, დაარეგისტრიროთ მოწყობილობა და დაიწყოთ სენსორის მონაცემების შეტყობინებების მიღება AWS– ში.
AWS ანგარიშის დასაყენებლად მიჰყევით ამ გაკვეთილს.
ნაბიჯი 2: აპარატურის და პროგრამული უზრუნველყოფის სპეციფიკაციები
პროგრამული უზრუნველყოფის სპეციფიკაცია
AWS ანგარიში
აპარატურის სპეციფიკაცია
- ESP32
- უკაბელო ტემპერატურისა და ვიბრაციის სენსორი
- ზიგმოს კარიბჭის მიმღები
ნაბიჯი 3: უკაბელო ვიბრაციის და ტემპერატურის სენსორები
ეს არის გრძელი დიაპაზონის სამრეწველო IoT უკაბელო ვიბრაციისა და ტემპერატურის სენსორი, რომელიც ამაყობს 2 მილის დიაპაზონით უკაბელო mesh ქსელის არქიტექტურის გამოყენებით. 16 ბიტიანი ვიბრაციისა და ტემპერატურის სენსორის ჩათვლით, ეს სენსორი გადასცემს უაღრესად ზუსტ ვიბრაციის მონაცემებს მომხმარებლის მიერ განსაზღვრული ინტერვალებით. მას აქვს შემდეგი მახასიათებლები:
- სამრეწველო კლასის 3 ღერძი ვიბრაციის სენსორი ± 32 გ დიაპაზონში
- ითვლის RMS, MAX და MIN გ ვიბრაციას
- ხმაურის მოცილება დაბალი გამავლობის ფილტრის გამოყენებით
- სიხშირის დიაპაზონი (გამტარუნარიანობა) 12, 800 ჰერცამდე
- საცდელი მაჩვენებელი 25, 600 ჰც -მდე
- დაშიფრული კომუნიკაცია 2 მილის უკაბელო დიაპაზონში
- სამუშაო ტემპერატურის დიაპაზონი -40 -დან +85 ° C- მდე
- კედელზე დამონტაჟებული ან მაგნიტით დამონტაჟებული IP65 რეიტინგული დანართი მაგალითი პროგრამული უზრუნველყოფა ვიზუალური სტუდიისა და ლაბორატორიისთვის VIEW
- ვიბრაციის სენსორი გარე ზონდის ვარიანტით
- 500 -მდე გადაცემა 4 AA ბატარეიდან ბევრი კარიბჭე და მოდემი ხელმისაწვდომია
ნაბიჯი 4: ESP32 AWS Firmware
AWS– თან დასაკავშირებლად და მონაცემების გაგზავნის დასაწყებად გაიარეთ შემდეგი ნაბიჯები
- ჩამოტვირთეთ AWS ბიბლიოთეკა შემდეგი Github საცავიდან
- კლონირება repo და განათავსეთ AWS_IOT ფაილი ბიბლიოთეკის საქაღალდეში Arduino დირექტორია
git კლონი
ახლა მოდით გადავიდეთ კოდზე:
- ამ აპლიკაციაში ჩვენ გამოვიყენეთ ტყვედ ჩავარდნილი პორტალი, რომ შევინარჩუნოთ WiFi სერთიფიკატები და გადავიდეთ IP პარამეტრებში. ტყვე პორტალზე დეტალური დანერგვისთვის შეგიძლიათ გაიაროთ შემდეგი ინსტრუქცია.
- დატყვევებული პორტალი გვაძლევს არჩევანის გაკეთებას სტატიკურ და DHCP პარამეტრებს შორის. უბრალოდ შეიყვანეთ რწმუნებათა სიგელები, როგორიცაა სტატიკური IP, ქვექსელის ნიღაბი, კარიბჭე და უკაბელო სენსორის კარიბჭე კონფიგურირებული იქნება ამ IP– ზე.
- მასპინძლობს ვებგვერდს, სადაც არის სია, სადაც ნაჩვენებია ხელმისაწვდომი WiFi ქსელები და იქ არის RSSI. აირჩიეთ WiFi ქსელი და პაროლი და შეიყვანეთ წარდგენა. სერთიფიკატები შეინახება EEPROM– ში და IP პარამეტრი შეინახება SPIFFS– ში. ამის შესახებ მეტი შეგიძლიათ იხილოთ ამ ინსტრუქციებში.
ნაბიჯი 5: სენსორის მონაცემების მიღება უკაბელო ვიბრაციისა და ტემპერატურის სენსორისგან
ჩვენ ვიღებთ 54 ბაიტიან ჩარჩოს უსადენო ტემპერატურისა და ვიბრაციის სენსორებისგან. ეს ჩარჩო მანიპულირებულია ტემპერატურისა და ვიბრაციის მონაცემების მისაღებად.
ESP32– ს აქვს სამი UART, რომელიც გამოიყენება სერიული გამოყენებისთვის
- RX0 GPIO 3, TX0 GPIO 1
- RX1 GPIO9, TX1 GPIO 10
- RX2 GPIO 16, TX2 GPIO 17
და 3 ტექნიკური სერიული პორტი
- სერიული
- სერიალი 1
- სერიალი 2
პირველი, აწარმოეთ აპარატურის სერიული სათაურის ფაილი. აქ ჩვენ ვიყენებთ RX2 და TX2 aka. სერიული მონაცემების მისაღებად ESP32 დაფის GPIO 16 და GPIO 17 ქინძისთავები.
#ჩართეთ
# განსაზღვრეთ RXD2 16 # განსაზღვრეთ TXD2 17
Serial2.begin (115200, SERIAL_8N1, RXD2, TXD2); // ქინძისთავები 16 rx2, 17 tx2, 19200 bps, 8 ბიტი არ არის პარიტეტული 1 გაჩერების ბიტი
შემდეგი ნაბიჯები მიგიყვანთ შემდგომში სენსორის რეალური მნიშვნელობების მისაღებად
- შექმენით ცვლადები ტემპერატურის, ტენიანობის, ბატარეის და სხვა სენსორული მნიშვნელობების შესანახად
- დააყენეთ Rx, tx pin, baud rate და parity bits აპარატურის სერიისთვის
- პირველი, შეამოწმეთ, რომ არის რაიმე წასაკითხი Serial1.available ()
- ჩვენ მივიღებთ 54 ბაიტის ჩარჩოს.
- შეამოწმეთ 0x7E, რომელიც არის საწყისი ბაიტი.
- ვიბრაციის მონაცემები შედგება RMS მნიშვნელობისგან 3 ღერძისთვის, მინ მნიშვნელობები 3 ღერძისთვის, მაქსიმალური მნიშვნელობები 3 ღერძისთვის.
- ტემპერატურა და ბატარეის ღირებულებები შეიცავს 2 ბაიტი მონაცემს
- მიიღეთ სენსორის სახელი, ტიპი, სენსორის ვერსია შეიცავს 1 ბაიტი მონაცემს და შეგიძლიათ მიიღოთ შესაბამისი მისამართიდან
if (Serial2.available ()) {Serial.println ("სერიალის წაკითხვა"); მონაცემები [0] = Serial2.read (); დაგვიანება (ლ); if (მონაცემები [0] == 0x7E) {Serial.println ("მივიღე პაკეტი"); ხოლო (! Serial2.available ()); for (i = 1; i <55; i ++) {data = Serial2.read (); დაგვიანება (1); } თუ (მონაცემი [15] == 0x7F) /////// შეამოწმეთ თუ არა სწორი მონაცემები {თუ (მონაცემები [22] == 0x08) //////// დარწმუნდით, რომ სენსორის ტიპი სწორია {rms_x = (((uint16_t) (((მონაცემები [24]) << 16) + ((მონაცემები [25]) << 8) + (მონაცემები [26]))/100); rms_y = ((uint16_t) (((მონაცემები [27]) << 16) + ((მონაცემები [28]) << 8) + (მონაცემები [29]))/100); rms_z = ((uint16_t) (((მონაცემები [30]) << 16) + ((მონაცემები [31]) << 8) + (მონაცემები [32]))/100); int16_t max_x = ((uint16_t) (((მონაცემები [33]) << 16) + ((მონაცემები [34]) << 8) + (მონაცემები [35]))/100); int16_t max_y = ((uint16_t) (((მონაცემები [36]) << 16) + ((მონაცემები [37]) << 8) + (მონაცემები [38]))/100); int16_t max_z = ((uint16_t) (((მონაცემები [39]) << 16) + ((მონაცემები [40]) << 8) + (მონაცემები [41]))/100);
int16_t min_x = ((uint16_t) (((მონაცემები [42]) << 16) + ((მონაცემები [43]) << 8) + (მონაცემები [44]))/100); int16_t min_y = ((uint16_t) (((მონაცემები [45]) << 16) + ((მონაცემები [46]) << 8) + (მონაცემები [47]))/100); int16_t min_z = ((uint16_t) (((მონაცემები [48]) << 16) + ((მონაცემები [49]) << 8) + (მონაცემები [50]))/100);
cTemp = ((((მონაცემები [51]) * 256) + მონაცემები [52])); მცურავი ბატარეა = ((მონაცემები [18] * 256) + მონაცემები [19]); ძაბვა = 0.00322 * ბატარეა; Serial.print ("სენსორის ნომერი"); Serial.println (მონაცემები [16]); senseNumber = მონაცემები [16]; Serial.print ("სენსორის ტიპი"); Serial.println (მონაცემები [22]); Serial.print ("Firmware Version"); Serial.println (მონაცემები [17]); Serial.print ("ტემპერატურა ცელსიუსში:"); Serial.print (cTemp); Serial.println ("C"); Serial.print ("RMS ვიბრაცია X ღერძში:"); სერიული. ბეჭდვა (rms_x); Serial.println ("მგ"); Serial.print ("RMS ვიბრაცია Y- ღერძში:"); სერიული. ბეჭდვა (rms_y); Serial.println ("მგ"); Serial.print ("RMS ვიბრაცია Z ღერძში:"); Serial.print (rms_z); Serial.println ("მგ");
Serial.print ("მინიმალური ვიბრაცია X ღერძში:");
Serial.print (min_x); Serial.println ("მგ"); Serial.print ("მინიმალური ვიბრაცია Y- ღერძში:"); Serial.print (min_y); Serial.println ("მგ"); Serial.print ("მინიმალური ვიბრაცია Z ღერძში:"); Serial.print (min_z); Serial.println ("მგ");
Serial.print ("ADC მნიშვნელობა:");
Serial.println (ბატარეა); Serial.print ("ბატარეის ძაბვა:"); სერიული. ბეჭდვა (ძაბვა); Serial.println ("\ n"); if (ძაბვა <1) {Serial.println ("ბატარეის შეცვლის დრო"); }}} სხვა {for (i = 0; i <54; i ++) {Serial.print (data ); Serial.print (","); დაგვიანება (1); }}}}
ნაბიჯი 6: დაკავშირება AWS– თან
- ჩართეთ AWS_IOT.h, WiFi.h სათაურის ფაილები AWSIoT კერასთან კავშირის დასადგენად
- შეიყვანეთ თქვენი მასპინძლის მისამართი, კლიენტის ID, რომელიც იქნება პოლიტიკის სახელი და თემის სახელი, რომელიც იქნება ნივთის სახელი
// ********* AWS რწმუნებათა სიგელები ************* // char HOST_ADDRESS = "a2smbp7clzm5uw-ats.iot.us-east-1.amazonaws.com"; char CLIENT_ID = "ncdGatewayPolicy"; char TOPIC_NAME = "ncdGatewayThing";
შექმენით char ცვლადი თქვენი JSON შესანახად, ამ შემთხვევაში ჩვენ შევქმენით ფორმატი JSON შესანახად
const char *format = "{" SensorId / ": \"%d / ", \" messageId / ":%d, \" rmsX / ":%d, \" rmsY / ":%d, \" rmsZ / ":%d, \" cTemp / ":%d, \" ძაბვა / ":%. 2f}";
შექმენით AWS_IOT კლასის მაგალითი
AWS_IOT esp; // AWS_IOT კლასის მაგალითი
ახლა დაუკავშირდით AWSIoT კერას შემდეგი მეთოდით
void reconnectMQTT () {if (hornbill.connect (HOST_ADDRESS, CLIENT_ID) == 0) {Serial.println ("დაკავშირებულია AWS"); დაგვიანება (1000);
if (0 == hornbill.subscribe (TOPIC_NAME, mySubCallBackHandler))
{Serial.println ("წარმატებით გამოწერა"); } else {Serial.println ("გამოწერა ვერ მოხერხდა, შეამოწმეთ საგნის სახელი და სერთიფიკატები"); ხოლო (1); }} else {Serial.println ("AWS კავშირი ვერ მოხერხდა, შეამოწმეთ HOST მისამართი"); ხოლო (1); }
დაგვიანება (2000);
}
გამოაქვეყნეთ სენსორის მონაცემები ყოველი 1 წუთის შემდეგ
if (tick> = 60) // გამოაქვეყნეთ თემაში ყოველ 5 წამში {tick = 0; char დატვირთვა [PAYLOAD_MAX_LEN]; snprintf (დატვირთვა, PAYLOAD_MAX_LEN, ფორმატი, senseNumber, msgCount ++, rms_x, rms_y, rms_z, cTemp, ძაბვა); Serial.println (დატვირთვა); if (hornbill.publish (TOPIC_NAME, payload) == 0) {Serial.print ("შეტყობინების გამოქვეყნება:"); Serial.println (დატვირთვა); } else {Serial.println ("გამოქვეყნება ვერ მოხერხდა"); }} vTaskDelay (1000 / პორტი TICK_RATE_MS); მონიშვნა ++;
ნაბიჯი 7: მონაცემთა ვიზუალიზაცია AWS– ში
- შედით თქვენს AWS ანგარიშზე.
- ინსტრუმენტთა პანელის მარცხენა კუთხეში ნახავთ სერვისის ჩანართს
- დააწკაპუნეთ ამ ჩანართზე და ნივთების ინტერნეტის სათაურში აირჩიეთ IoT Core.
- აირჩიეთ QoS და არა. შეტყობინებები აბონენტებისთვის. შეიყვანეთ თემის სახელი.
ნაბიჯი 8: საერთო კოდი
თქვენ შეგიძლიათ იპოვოთ საერთო კოდი ამ Github საცავში.
კრედიტები
- არდუინო ჯსონი
- უკაბელო ტემპერატურისა და ტენიანობის სენსორები
- ESP32
- PubSubClient
გირჩევთ:
უკაბელო ვიბრაციისა და ტემპერატურის სენსორის მონაცემები MySQL– ში Node-RED გამოყენებით: 40 ნაბიჯი
უკაბელო ვიბრაციისა და ტემპერატურის სენსორის მონაცემები MySQL– ში Node-RED– ის გამოყენებით: NCD– ის Long Range IoT სამრეწველო უკაბელო ვიბრაციისა და ტემპერატურის სენსორის დანერგვა, რომელიც 2 მილის მანძილზე ამაყობს უკაბელო mesh ქსელის სტრუქტურის გამოყენებით. ვიბრაციისა და ტემპერატურის ზუსტი 16 ბიტიანი სენსორის ჩართვით, ეს მოწყობილობა გადადის
უკაბელო ვიბრაციისა და ტემპერატურის სენსორის მონაცემების გაგზავნა Excel- ში Node-RED გამოყენებით: 25 ნაბიჯი
უკაბელო ვიბრაციისა და ტემპერატურის სენსორის მონაცემების გაგზავნა Excel– ში Node-RED– ის გამოყენებით: NCD– ს Long Range IoT სამრეწველო უკაბელო ვიბრაციისა და ტემპერატურის სენსორის გაცნობა, რომელიც 2 მილის მანძილზე ამაყობს უკაბელო mesh ქსელის სტრუქტურის გამოყენებით. ვიბრაციისა და ტემპერატურის ზუსტი 16 ბიტიანი სენსორის ჩართვით, ეს მოწყობილობა გადადის
Arduino ინტერფეისი ულტრაბგერითი სენსორით და უკონტაქტო ტემპერატურის სენსორით: 8 ნაბიჯი
Arduino ინტერფეისის ულტრაბგერითი სენსორი და უკონტაქტო ტემპერატურის სენსორი: დღესდღეობით, შემქმნელები, დეველოპერები ამჯობინებენ Arduino– ს პროექტების პროტოტიპების სწრაფი განვითარებისათვის. Arduino არის ღია კოდის ელექტრონიკის პლატფორმა, რომელიც დაფუძნებულია ადვილად გამოსაყენებელ აპარატურასა და პროგრამულ უზრუნველყოფაზე. Arduino– ს აქვს ძალიან კარგი მომხმარებლის საზოგადოება. ამ პროექტში
Node-RED IoT გრძელი დიაპაზონის ვიბრაციისა და ტემპერატურის სენსორით: 34 ნაბიჯი
Node-RED IoT გრძელი დიაპაზონის ვიბრაციისა და ტემპერატურის სენსორით: წარმოგიდგენთ NCD– ს შორეულ მანძილზე უსადენო ტემპერატურის ტენიანობის სენსორს, რომელიც გამოირჩევა 28 მილის დიაპაზონით უკაბელო mesh ქსელის არქიტექტურის გამოყენებით. Honeywell HIH9130 ტემპერატურის ტენიანობის სენსორის ჩართვა გადასცემს უაღრესად ზუსტ ტემპერატურას
უკაბელო Arduino Robot HC12 უკაბელო მოდულის გამოყენებით: 7 ნაბიჯი
უკაბელო Arduino Robot HC12 უკაბელო მოდულის გამოყენებით: გამარჯობათ ბიჭებო, კეთილი იყოს თქვენი მობრძანება. ჩემს წინა პოსტში მე ავუხსენი რა არის H Bridge Circuit, L293D საავტომობილო მძღოლის IC, piggybacking L293D საავტომობილო მძღოლის IC მაღალი ძრავის მძღოლების მართვისთვის და როგორ შეგიძლიათ შექმნათ და შექმნათ თქვენი საკუთარი L293D საავტომობილო მძღოლის დაფა