Სარჩევი:
- ნაბიჯი 1: აპარატურის და პროგრამული უზრუნველყოფის სპეციფიკაცია
- ნაბიჯი 2: უკაბელო წნევისა და ტემპერატურის სენსორები
- ნაბიჯი 3: WiFi– სთან დაკავშირება
- ნაბიჯი 4: UbiDots– ის დაყენება ESP32– ზე
- ნაბიჯი 5: გამოაქვეყნეთ სენსორული კითხვები UbiDots– ზე
- ნაბიჯი 6: მონაცემების ვიზუალიზაცია
- ნაბიჯი 7: საერთო კოდი
ვიდეო: უკაბელო წნევის სენსორის მონაცემების გამოქვეყნება MQTT გამოყენებით: 7 ნაბიჯი
2024 ავტორი: John Day | [email protected]. ბოლოს შეცვლილი: 2024-01-30 10:19
ESP32 დაESP 8266 არის ძალიან ნაცნობი SoC IoT სფეროში. ეს არის ერთგვარი სიკეთე IoT პროექტებისთვის. ESP 32 არის მოწყობილობა ინტეგრირებული WiFi და BLE. უბრალოდ მიუთითეთ თქვენი SSID, პაროლი და IP კონფიგურაცია და ინტეგრირეთ საგნები ღრუბელში. აქ ამ სასწავლო ინსტრუქციაში ჩვენ განვიხილავთ IoT– ის ძირითად პირობებს, როგორიცაა IoT პლატფორმა, MQTT, ტყვე პორტალები და ა.შ.
- IoT არქიტექტურა ძალიან მარტივი სიტყვებით შედგება ჩამონტაჟებული მოწყობილობისა და IoT პლატფორმისგან, რომელიც აყენებს მოწყობილობას ღრუბელში. აქ ჩვენ ვიყენებთ UbiDots IoT პლატფორმას სენსორის მონაცემების ვიზუალიზაციისთვის.
- IP პარამეტრების მართვა და მომხმარებლის რწმუნებათა სიგელები შეიძლება იყოს თავის ტკივილი მომხმარებლისთვის. რა მოხდება, თუ მომხმარებელს სურს შეცვალოს WiFi სერთიფიკატები? რა მოხდება, თუ მომხმარებელს სურს DHCP/სტატიკური IP პარამეტრების შეცვლა? ESP32- ის ყოველ ჯერზე განათება არ არის საიმედო და არც კი არის ამ პრობლემების გადაწყვეტა. ასე რომ, ჩვენ გავდივართ დატყვევებულ პორტალზე, რათა შევინარჩუნოთ WiFi სერთიფიკატები და სხვა კონფიგურაციები.
- MQTT ახლა ხდება ძალიან გავრცელებული ტერმინი IoT სამყაროში. მას გადააჭარბა მოთხოვნასა და პასუხებს (HTTP) გამოქვეყნება და გამოწერა სწრაფი, ძლიერი და სუსტი არქიტექტურის გამო.
აქ ამ სასწავლო ინსტრუქციაში ჩვენ ვაპირებთ დემონსტრირებას.
- WiFi და MQTT სერთიფიკატების მიცემა Captive Portal– ის გამოყენებით.
- მრავალი სენსორის მონაცემების გამოქვეყნება და გამოწერა UbiDots– ზე.
- სენსორის მონაცემების წაკითხვა უკაბელო წნევისა და ტემპერატურის სენსორისგან
- ვებ ფორმის განთავსება ESP32– დან.
- კითხვა და წერა SPIFFS ESP32– დან.
ნაბიჯი 1: აპარატურის და პროგრამული უზრუნველყოფის სპეციფიკაცია
აპარატურის სპეციფიკაცია
- ESP32 WiFi/BLE
- უკაბელო წნევის და ტემპერატურის სენსორი
პროგრამული უზრუნველყოფის სპეციფიკაცია
- Arduino IDE
- XCTU
- Labview Utility
ნაბიჯი 2: უკაბელო წნევისა და ტემპერატურის სენსორები
მახასიათებლები
- სამრეწველო კლასის სენსორი გრძელი დიაპაზონის უკაბელო წნევის ტემპერატურის სენსორი
- ოპერაციული დიაპაზონი 0 -დან 14000 მბარ -40 ° -მდე +85 ° C (-40 ° -დან 185 ° F- მდე)
- კონფიგურირებადი შიდა გამოთვლის წნევის რეზოლუცია 0.012 to 0.065 mbar
- კონფიგურირებადი შიდა გაანგარიშება ტემპერატურის რეზოლუცია 0.002 -დან 0.012 ° C- მდე
- სიზუსტე ± 2.5 mbar, ± 2 ° C
- აბსოლუტური წნევა, შედარებითი წნევა და სიმაღლის შედარებითი სიმაღლე ცვლილებების შედეგები
- 2 მილი მხედველობის არე ბორტ ანტენით
- უმაღლესი LOS დიაპაზონი 28 მილიმდე მაღალი მიღწევების ანტენებით
- ინტერფეისი Raspberry Pi, Microsoft® Azure®, Arduino და სხვა
- უკაბელო ქსელის ქსელი DigiMesh®– ის გამოყენებით
უკაბელო წნევისა და ტემპერატურის სენსორის კონფიგურაცია Labview კომუნალური და XCTU გამოყენებით
სენსორი მუშაობს ორ რეჟიმში
- კონფიგურაციის რეჟიმი: დააკონფიგურირეთ Pan ID, დაგვიანება, ხელახალი მცდელობა და ა.შ. ამის შესახებ მეტი არ არის ამ ინსტრუქციის ფარგლებს მიღმა და განმარტებული იქნება შემდეგ ინსტრუქციებში.
- გაშვების რეჟიმი: ჩვენ ვუშვებთ მოწყობილობას გაშვების რეჟიმში. და ამ ღირებულების გასაანალიზებლად ჩვენ ვიყენებთ Labview Utility- ს
ეს Labview UI აჩვენებს მნიშვნელობებს ლამაზ გრაფიკებში. ის გვიჩვენებს მიმდინარე და წარსულ ღირებულებებს. თქვენ შეგიძლიათ გადახვიდეთ ამ ბმულზე, რომ ჩამოტვირთოთ Labview UI. დააწკაპუნეთ გაშვების ხატულაზე სადესანტო გვერდის მენიუდან, რომ გადადით რეჟიმში.
ნაბიჯი 3: WiFi– სთან დაკავშირება
ჩვენ ვიყენებთ დატყვევებულ პორტალს, რომ შევინარჩუნოთ WiFi სერთიფიკატები და გადავიდეთ IP პარამეტრებში. ტყვე პორტალზე დეტალური დანერგვისთვის შეგიძლიათ გაიაროთ შემდეგი ინსტრუქცია.
დატყვევებული პორტალი გვაძლევს არჩევანის გაკეთებას სტატიკურ და DHCP პარამეტრებს შორის. უბრალოდ შეიყვანეთ რწმუნებათა სიგელები, როგორიცაა სტატიკური IP, ქვექსელის ნიღაბი, კარიბჭე და უკაბელო სენსორის კარიბჭე კონფიგურირებული იქნება ამ IP– ზე.
მასპინძლობს ვებგვერდს, სადაც არის სია, სადაც ნაჩვენებია ხელმისაწვდომი WiFi ქსელები და იქ არის RSSI. აირჩიეთ WiFi ქსელი და პაროლი და შეიყვანეთ წარდგენა. სერთიფიკატები შეინახება EEPROM– ში და IP პარამეტრი შეინახება SPIFFS– ში. ამის შესახებ მეტი შეგიძლიათ იხილოთ ამ ინსტრუქციებში.
ნაბიჯი 4: UbiDots– ის დაყენება ESP32– ზე
აქ ჩვენ ვიყენებთ უსადენო წნევისა და ტემპერატურის სენსორებს ESP 32 მოწყობილობით, ტემპერატურისა და ტენიანობის მონაცემების მისაღებად. ჩვენ მონაცემებს ვაგზავნით UbiDots– ში MQTT პროტოკოლის გამოყენებით. MQTT მიჰყვება გამოქვეყნების და გამოწერის მექანიზმს, ვიდრე მოთხოვნას და პასუხს. ის უფრო სწრაფი და საიმედოა ვიდრე HTTP. ეს მუშაობს შემდეგნაირად.
- ჩვენ ვიყენებთ Task Scheduler– ს დავალების დასაგეგმად, როგორიცაა სენსორების მონაცემების მოპოვება, სენსორული მონაცემების გამოქვეყნება, MQTT თემის გამოწერა.
- პირველ რიგში, შეიტანეთ Task Scheduler– ის სათაურის ფაილები, მისი მაგალითი და ადგენს დავალებებს.
- ჩვენ დავგეგმეთ ორი ამოცანა, რომელიც ეხება ორ განსხვავებულ საკონტროლო ოპერაციას.
#განსაზღვრეთ _TASK_TIMEOUT#მოიცავს Scheduler ts; // --------- ამოცანები ------------ // ამოცანის tSensor (4 * TASK_SECOND, TASK_FOREVER, & taskSensorCallback, & ts, false, NULL, & taskSensorDisable); ამოცანა tWiFi (10* TASK_SECOND, TASK_FOREVER, & taskWiFiCallback, & ts, false, NULL, & taskWiFiDisable);
- ამოცანა 1 არის სენსორის მნიშვნელობის წასაკითხად, ეს ამოცანა გადის 1 წამის განმავლობაში, სანამ არ მიაღწევს 10 წამის ვადას.
- როდესაც Task1 ამოიწურება თავის დროზე ჩვენ ვუკავშირდებით ადგილობრივ Wifi და MQTT ბროკერს.
- ახლა ამოცანა 2 ჩართულია და ჩვენ ვთიშავთ ამოცანას 1
- ამოცანა 2 არის სენსორული მონაცემების გამოქვეყნება UbiDots MQTT ბროკერისთვის, ეს ამოცანა 20 წამის განმავლობაში გრძელდება სანამ არ მიაღწევს დროის 20 წამს.
- როდესაც Task2 დრო ამოიწურება, ამოცანა 1 კვლავ ჩართულია და Task2 გამორთულია. ისევ აქ, ჩვენ ვიღებთ განახლებულ მნიშვნელობას და პროცესი გრძელდება.
I2C სენსორის მონაცემების კითხვა
ჩვენ ვიღებთ 29 ბაიტიან ჩარჩოს უკაბელო ტემპერატურისა და ტენიანობის სენსორებისგან. ეს ჩარჩო მანიპულირებულია ტემპერატურისა და ტენიანობის ფაქტობრივი მონაცემების მისაღებად
თუ (Serial1.available ())
{data [0] = Serial1.read (); დაგვიანება (ლ); if (მონაცემები [0] == 0x7E) {ხოლო (! Serial1.available ()); for (i = 1; i <36; i ++) {data = Serial1.read (); დაგვიანება (1); } თუ (მონაცემი [15] == 0x7F) /////// შეამოწმეთ თუ არა სწორი მონაცემები {თუ (მონაცემები [22] == 0x06) //////// დარწმუნდით სენსორის ტიპში სწორია {int cTemp = ((((მონაცემები [24]) * 256) + მონაცემები [25])); int16_t abs_pressure = (((((uint16_t) (მონაცემები [26]) << 8) | მონაცემები [27])*0.001); int rlt_pressure = ((((მონაცემები [28]) * 256) + მონაცემები [29]) * 0.001); int16_t delta_alt = (((((uint16_t) (მონაცემები [30]) << 8) | მონაცემები [31])*0.01); მცურავი ბატარეა = ((მონაცემები [18] * 256) + მონაცემები [19]); მცურავი ძაბვა = 0.00322 * ბატარეა; Serial.print ("სენსორის ნომერი"); Serial.println (მონაცემები [16]); Serial.print ("სენსორის ტიპი"); Serial.println (მონაცემები [22]); Serial.print ("Firmware Version"); Serial.println (მონაცემები [17]); Serial.print ("ტემპერატურა ცელსიუსში:"); Serial.print (cTemp); Serial.println ("C"); Serial.print ("აბსოლუტური წნევა:"); Serial.println (abs_pressure); Serial.print ("mbar"); Serial.print ("შედარებითი წნევა:"); Serial.println (rlt_pressure); Serial.print ("mbar"); Serial.print ("დელტა სიმაღლე:"); Serial.println (delta_alt); Serial.print ("მეტრი"); Serial.print ("ADC მნიშვნელობა:"); Serial.println (ბატარეა); Serial.print ("ბატარეის ძაბვა:"); სერიული. ბეჭდვა (ძაბვა); Serial.println ("\ n"); if (ძაბვა <1) {Serial.println ("ბატარეის შეცვლის დრო"); }}} სხვა {for (i = 0; i <36; i ++) {Serial.print (data ); Serial.print (","); დაგვიანება (1); }}}}
დაკავშირება UbiDots MQTT API– სთან
ჩართეთ სათაურის ფაილი MQTT პროცესისთვის
#ჩართეთ
განსაზღვრეთ სხვა ცვლადები MQTT– ისთვის, როგორიცაა კლიენტის სახელი, ბროკერის მისამართი, ნიშნის ID
#განსაზღვრეთ TOKEN "BBFF-*********************************" // თქვენი Ubidots TOKEN#განსაზღვრეთ MQTT_CLIENT_NAME "***************************"
char mqttBroker = "things.ubidots.com";
char დატვირთვა [100]; char თემა [150]; // ცვლადის შექმნა ნიშნის ID ტოკინის შესანახად
ნაბიჯი 5: გამოაქვეყნეთ სენსორული კითხვები UbiDots– ზე
შექმენით ცვლადები სხვადასხვა სენსორული მონაცემების შესანახად და შექმენით char ცვლადი თემის შესანახად
#განსაზღვრეთ VARIABLE_LABEL_TEMPF "tempF" // ცვლადი იარლიყის შემოწმება #განსაზღვრეთ VARIABLE_LABEL_TEMPC "tempC" // ცვლადი იარლიყის დადგენა #განსაზღვრეთ VARIABLE_LABEL_BAT "ღამურა" #განსაზღვრეთ VARIABLE_LABEL_HUMID "ცვლადი ეტიკეტი" // მონიშვნა
char თემა 1 [100];
char თემა 2 [100]; char თემა 3 [100];
გამოაქვეყნეთ მონაცემები აღნიშნულ MQTT თემაზე, დატვირთვა გამოიყურება {"tempc": {მნიშვნელობა: "tempData"}}
sprintf (თემა 1, "%s", ""); sprintf (თემა 1, "%s%s", "/v1.6/devices/", DEVICE_LABEL); sprintf (დატვირთვა, "%s", ""); // ასუფთავებს დატვირთვას sprintf (დატვირთვა, "{"%s / ":", VARIABLE_LABEL_TEMPC); // ამატებს მნიშვნელობას sprintf (დატვირთვა, "%s {" მნიშვნელობა / ":%s}", დატვირთვა, str_cTemp); // ამატებს მნიშვნელობას sprintf (დატვირთვა, "%s}", დატვირთვა); // ხურავს ლექსიკონის ფრჩხილებს Serial.println (დატვირთვა); Serial.println (client.publish (topic1, payload)? "Published": "notpublished"); // იგივე გააკეთე სხვა თემისთვისაც
client.publish () აქვეყნებს მონაცემებს UbiDots– ში
ნაბიჯი 6: მონაცემების ვიზუალიზაცია
- გადადით Ubidots– ში და შედით თქვენს ანგარიშზე.
- გადადით საინფორმაციო დაფაზე მონაცემების ჩანართიდან, რომელიც ჩამოთვლილია ზემოთ.
- ახლა დააჭირეთ ღილაკს "+" ახალი ვიჯეტების დასამატებლად.
- აირჩიეთ ვიჯეტი სიიდან და დაამატეთ ცვლადი და მოწყობილობები.
- სენსორის მონაცემები შეიძლება ვიზუალიზდეს დაფაზე სხვადასხვა ვიჯეტის გამოყენებით.
ნაბიჯი 7: საერთო კოდი
HTML და ESP32– ის Over კოდი შეგიძლიათ იხილოთ ამ GitHub საცავში.
კრედიტები
- ncd ESP32 გარღვევის დაფა.
- ncd უკაბელო წნევის და ტემპერატურის სენსორები
- pubsubclient
- UbiDots
- ამოცანების განრიგი
გირჩევთ:
უკაბელო ტემპერატურისა და ტენიანობის სენსორის მონაცემების გაგზავნა Excel– ში: 34 ნაბიჯი
უკაბელო ტემპერატურისა და ტენიანობის სენსორის მონაცემების გაგზავნა Excel- ში: ჩვენ აქ ვიყენებთ NCD– ს ტემპერატურისა და ტენიანობის სენსორს, მაგრამ ნაბიჯები თანაბარი რჩება ნებისმიერი ncd პროდუქტისთვის, ასე რომ, თუ თქვენ გაქვთ სხვა ncd უკაბელო სენსორები, შეგიძლიათ თავისუფლად დააკვირდეთ გარდა ამისა. ამ ტექსტის გაჩერების საშუალებით თქვენ უნდა
უკაბელო ვიბრაციისა და ტემპერატურის სენსორის მონაცემების გაგზავნა Excel- ში Node-RED გამოყენებით: 25 ნაბიჯი
უკაბელო ვიბრაციისა და ტემპერატურის სენსორის მონაცემების გაგზავნა Excel– ში Node-RED– ის გამოყენებით: NCD– ს Long Range IoT სამრეწველო უკაბელო ვიბრაციისა და ტემპერატურის სენსორის გაცნობა, რომელიც 2 მილის მანძილზე ამაყობს უკაბელო mesh ქსელის სტრუქტურის გამოყენებით. ვიბრაციისა და ტემპერატურის ზუსტი 16 ბიტიანი სენსორის ჩართვით, ეს მოწყობილობა გადადის
IoT გრძელი დიაპაზონის უკაბელო ტემპერატურისა და ტენიანობის სენსორის მონაცემების გაგზავნა Google ცხრილში: 39 ნაბიჯი
IoT გრძელი დიაპაზონის უკაბელო ტემპერატურისა და ტენიანობის სენსორის მონაცემების გაგზავნა Google Sheet– ში: ჩვენ ვიყენებთ აქ NCD– ს ტემპერატურისა და ტენიანობის სენსორს, მაგრამ ნაბიჯები თანაბარი რჩება ნებისმიერი ncd პროდუქტისთვის, ასე რომ, თუ თქვენ გაქვთ სხვა ncd უკაბელო სენსორები, დაიცავით თავისუფლად გვერდით გარდა ამ ტექსტის გაჩერების საშუალებით თქვენ უნდა
UbiDots-ESP32– ის დაკავშირება და მრავალი სენსორის მონაცემების გამოქვეყნება: 6 ნაბიჯი
UbiDots-ESP32– ის დაკავშირება და მრავალი სენსორის მონაცემების გამოქვეყნება: ESP32 და ESP 8266 ძალიან ნაცნობი SoC in IoT სფეროში. ეს არის ერთგვარი სიკეთე IoT პროექტებისთვის. ESP 32 არის მოწყობილობა ინტეგრირებული WiFi და BLE. უბრალოდ მიუთითეთ თქვენი SSID, პაროლი და IP კონფიგურაცია და ინტეგრირება მოახდინეთ საგნებში
უკაბელო სენსორის მონაცემების ვიზუალიზაცია Google დიაგრამების გამოყენებით: 6 ნაბიჯი
უკაბელო სენსორული მონაცემების ვიზუალიზაცია Google დიაგრამების გამოყენებით: მანქანების პროგნოზირებადი ანალიზი ძალიან აუცილებელია იმისათვის, რომ მინიმუმამდე დაიყვანოს აპარატის გათიშვის დრო. რეგულარული შემოწმება ხელს უწყობს აპარატის მუშაობის დროის გაზრდას და, თავის მხრივ, აძლიერებს მის შეცდომების შემწყნარებლობას. უკაბელო ვიბრაცია და ტემპერატურა