Სარჩევი:
- ნაბიჯი 1: აპარატურის და პროგრამული უზრუნველყოფის სპეციფიკაცია
- ნაბიჯი 2: ტყვე პორტალის შექმნა
- ნაბიჯი 3: WiFi და UbiDots სერთიფიკატების მიწოდება
- ნაბიჯი 4: გამოაქვეყნეთ სენსორული კითხვები UbiDots– ზე
- ნაბიჯი 5: მონაცემების ვიზუალიზაცია
- ნაბიჯი 6: საერთო კოდი
ვიდეო: UbiDots-ESP32– ის დაკავშირება და მრავალი სენსორის მონაცემების გამოქვეყნება: 6 ნაბიჯი
2024 ავტორი: John Day | [email protected]. ბოლოს შეცვლილი: 2024-01-30 10:18
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
ნაბიჯი 2: ტყვე პორტალის შექმნა
დატყვევებული პორტალი არის ვებ გვერდი, რომელიც ნაჩვენებია ახლად დაკავშირებულ მომხმარებლებამდე, სანამ მათ არ ექნებათ უფრო ფართო წვდომა ქსელის რესურსებზე. აქ ჩვენ ვემსახურებით სამ ვებ გვერდს, რათა შევარჩიოთ DHCP და სტატიკური IP პარამეტრები. ჩვენ შეგვიძლია განვსაზღვროთ IP მისამართი ESP– ს ორი გზით.
- DHCP IP მისამართი- ეს არის მოწყობილობა მოწყობილობისთვის IP მისამართის დინამიურად მინიჭების საშუალება. ESP– ის ნაგულისხმევი IP მისამართია 192.168.4.1
- სტატიკური IP მისამართი- მუდმივი IP მისამართის მინიჭება ჩვენს ქსელურ მოწყობილობაზე. მოწყობილობის სტატიკური IP მიწოდებისთვის ჩვენ უნდა განვსაზღვროთ IP მისამართი, კარიბჭის მისამართი და ქვექსელის ნიღაბი.
პირველი ვებ – გვერდი მასპინძლობს 192.168.1.77. აქ მომხმარებელს ეძლევა რადიო ღილაკები DHCP და სტატიკური IP პარამეტრებს შორის ასარჩევად. მომდევნო ვებ გვერდზე, ჩვენ უნდა მივაწოდოთ IP– სთან დაკავშირებული ინფორმაცია შემდგომი გასაგრძელებლად.
HTML კოდი
ვებ გვერდების HTML კოდი შეგიძლიათ იხილოთ ამ Github საცავში. თქვენ შეგიძლიათ გამოიყენოთ ნებისმიერი IDE ან ტექსტური რედაქტორი, როგორიცაა Sublime ან notepad ++, რათა შექმნათ HTML ვებ გვერდები.
- პირველი შექმენით HTML ვებ გვერდი, რომელიც შეიცავს ორ რადიო ღილაკს, რათა აირჩიოთ DHCP და სტატიკური IP პარამეტრები.
- ახლა შექმენით ღილაკი თქვენი პასუხის გასაგზავნად
- მიეცით სახელი რადიო ღილაკებს.
- ESP ვებ სერვერის კლასი მიიღებს ამ სახელებს არგუმენტებად და მიიღებს რადიო ღილაკების პასუხს ამ არგუმენტების გამოყენებით
- ახლა ჩადეთ ღილაკი "SUBMIT", რომ გამოაგზავნოთ პასუხი მოწყობილობაზე. სხვა ვებ გვერდებზე ჩვენ გვაქვს ტექსტური ყუთები.
- მიეცით სახელის მნიშვნელობა და შეყვანის ტიპი ტექსტურ ყუთს და დაამატეთ გაგზავნის ღილაკი "გამოგზავნა" პასუხის გაგზავნა.
- შექმენით ღილაკი "გადატვირთვა" ტექსტური ველის შინაარსის გადასატვირთად.
ნაბიჯი 3: WiFi და UbiDots სერთიფიკატების მიწოდება
მთავარი პრობლემა წარმოიქმნება WiFi სერთიფიკატების მართვისას. მიუხედავად იმისა, რომ ჩვენ გვაქვს WiFiMulti ბიბლიოთეკა, სადაც შეგვიძლია მივაწოდოთ მოწყობილობას მრავალი SSID და პაროლი და მოწყობილობა დაუკავშირდება არსებულ ქსელს. მაგრამ რა მოხდება, თუ ხელმისაწვდომი ქსელი არ არის WiFiMulti სიაში. ESP32 მოწყობილობის მუდმივად ციმციმი არ არის საიმედო გამოსავალი.
ამ პრობლემის გადასაჭრელად, ჩვენ ვმასპინძლობთ ვებ გვერდს, სადაც მომხმარებელს შეუძლია წარმოადგინოს არსებული ქსელის SSID და პაროლი. ის მუშაობს შემდეგნაირად.
- ვებ – გვერდი განთავსებულია სტატიკური IP– ის ან DHCP IP– ის მიერ, როგორც ეს არჩეულია მომხმარებლის მიერ დატყვევებული პორტალიდან
- ეს ვებ გვერდი შეიცავს ტექსტურ ველებს, რათა შეიყვანოთ SSID, პაროლი და UBIDOTS ნიშანი ID მოწყობილობის UbiDots– თან დასაკავშირებლად.
- შეიყვანეთ თქვენი ადგილობრივი WiFi– ის SSID და პაროლი შეყვანის ველში, შეიყვანეთ UbiDot– ის სიმბოლო და შეიყვანეთ SUBMIT
- ეს სერთიფიკატები ინახება ESP32– ის EEPROM– ში
- 60 წამის შემდეგ მოწყობილობა ავტომატურად გაითიშება AP– დან
- შემდეგ ჯერზე, როდესაც ჩართავთ მოწყობილობას, მომხმარებელს არ სჭირდება ამ პროცედურის დაცვა, მოწყობილობა ავტომატურად მოიტანს მომხმარებლის რწმუნებათა სიგელებს EEPROM– დან და გააგრძელებს სენსორის კითხვების გამოქვეყნებას UbiDots– ში.
ნაბიჯი 4: გამოაქვეყნეთ სენსორული კითხვები UbiDots– ზე
აქ ჩვენ ვიყენებთ უსადენო ტემპერატურისა და ტენიანობის სენსორებს ESP 32 მოწყობილობით ტემპერატურისა და ტენიანობის მონაცემების მისაღებად. ჩვენ მონაცემებს ვაგზავნით UbiDots– ში MQTT პროტოკოლის გამოყენებით. MQTT მიჰყვება გამოქვეყნების და გამოწერის მექანიზმს, ვიდრე მოთხოვნას და პასუხს. ის უფრო სწრაფი და საიმედოა ვიდრე HTTP. ეს მუშაობს შემდეგნაირად.
- ჩვენ ვიყენებთ Task Scheduler– ს დავალების დასაგეგმად, როგორიცაა სენსორების მონაცემების მოპოვება, სენსორული მონაცემების გამოქვეყნება, MQTT თემის გამოწერა.
- პირველ რიგში, შეიტანეთ Task Scheduler– ის სათაურის ფაილები, მისი მაგალითი და ადგენს დავალებებს.
- ჩვენ დავგეგმეთ ორი ამოცანა, რომელიც ეხება ორ განსხვავებულ საკონტროლო ოპერაციას.
#განსაზღვრეთ _TASK_TIMEOUT#მოიცავს
განრიგი ც;
// --------- ამოცანები ------------ // ამოცანის 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 ბაიტიან ჩარჩოს უკაბელო ტემპერატურისა და ტენიანობის სენსორებისგან. ეს ჩარჩო მანიპულირებულია ტემპერატურისა და ტენიანობის ფაქტობრივი მონაცემების მისაღებად
uint8_t მონაცემები [29];
მონაცემები [0] = Serial1.read (); დაგვიანება (ლ); // chick for start byte if (მონაცემები [0] == 0x7E) {while (! Serial1.available ()); for (i = 1; i <29; i ++) {data = Serial1.read (); დაგვიანება (1); } if (მონაცემები [15] == 0x7F) /////// შეამოწმოთ სწორია თუ არა ამოღებული მონაცემები {if (მონაცემები [22] == 1) //////// დარწმუნდით, რომ სენსორის ტიპი სწორია {
ტენიანობა = ((((მონაცემები [24]) * 256) + მონაცემები [25]) /100.0); ტენიანობა /=10.0; cTempint = ((((uint16_t) (მონაცემები [26]) << 8) | მონაცემები [27]); cTemp = (float) cTempint /100.0; cTemp /= 10.0; fTemp = cTemp * 1.8 + 32; fTemp /= 10.0; ბატარეა = შემთხვევითი (100, 327); ძაბვა = ბატარეა/100; nodeId = მონაცემები [16];}
დაკავშირება UbiDots MQTT API– სთან
ჩართეთ სათაურის ფაილი MQTT პროცესისთვის
#ჩართეთ
განსაზღვრეთ სხვა ცვლადები MQTT– ისთვის, როგორიცაა კლიენტის სახელი, ბროკერის მისამართი, ჟეტონის ID (ჩვენ ვიღებთ ნიშნის ID– ს EEPROM– დან)
#განსაზღვრეთ MQTT_CLIENT_NAME "კლიენტი VBShightime123"
char mqttBroker = "things.ubidots.com";
char დატვირთვა [100]; char თემა [150];
// შექმნა ცვლადი ნიშნის ID შესანახად
სიმებიანი ნიშანი;
შექმენით ცვლადები სხვადასხვა სენსორული მონაცემების შესანახად და შექმენით 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– ში
ნაბიჯი 5: მონაცემების ვიზუალიზაცია
- გადადით Ubidots– ში და შედით თქვენს ანგარიშზე.
- გადადით საინფორმაციო დაფაზე მონაცემების ჩანართიდან, რომელიც ჩამოთვლილია ზემოთ.
- ახლა დააჭირეთ ღილაკს "+" ახალი ვიჯეტების დასამატებლად.
- აირჩიეთ ვიჯეტი სიიდან და დაამატეთ ცვლადი და მოწყობილობები.
- სენსორის მონაცემები შეიძლება ვიზუალიზდეს დაფაზე სხვადასხვა ვიჯეტის გამოყენებით.
ნაბიჯი 6: საერთო კოდი
HTML და ESP32– ის Over კოდი შეგიძლიათ იხილოთ ამ GitHub საცავში.
კრედიტები
- ncd ESP32 გარღვევის დაფა.
- ncd უკაბელო ტემპერატურის და ტენიანობის სენსორები.
- pubsubclient
- UbiDots
- ამოცანების განრიგი
გირჩევთ:
3 ღერძიანი გიროსკოპის სენსორის BMG160 დაკავშირება არდუინო ნანოსთან: 5 ნაბიჯი
3 ღერძიანი გიროსკოპის სენსორის BMG160 ინტერფეისი არდუინო ნანოსთან: დღევანდელ სამყაროში ახალგაზრდების და ბავშვების ნახევარზე მეტს უყვარს თამაში და ყველა ვისაც უყვარს, თამაშების ტექნიკური ასპექტებით მოხიბლული იცის მოძრაობის აღქმის მნიშვნელობა ამ დომენში. ჩვენც გაოგნებული ვიყავით ერთი და იგივე რამით
ტემპერატურის სენსორის ცოცხალი მონაცემების შედგენა (TMP006) MSP432 LaunchPad- ისა და პითონის გამოყენებით: 9 ნაბიჯი
ტემპერატურის სენსორის ცოცხალი მონაცემების შედგენა (TMP006) MSP432 LaunchPad და პითონის გამოყენებით: TMP006 არის ტემპერატურის სენსორი, რომელიც ზომავს ობიექტის ტემპერატურას ობიექტთან კონტაქტის გარეშე. ამ გაკვეთილში ჩვენ დავხატავთ პირდაპირი ტემპერატურის მონაცემებს BoosterPack– დან (TI BOOSTXL-EDUMKII) პითონის გამოყენებით
DHT11/DHT22 სენსორის ღრუბელთან დაკავშირება ESP8266 დაფუძნებული დაფით: 9 ნაბიჯი
DHT11/DHT22 სენსორის ღრუბელთან დაკავშირება ESP8266 დაფუძნებული დაფით: წინა სტატიაში მე დავაკავშირე ჩემი ESP8266 დაფუძნებული NodeMCU დაფა Cloud4RPi სერვისთან. ახლა, დროა რეალური პროექტისთვის
უკაბელო წნევის სენსორის მონაცემების გამოქვეყნება MQTT გამოყენებით: 7 ნაბიჯი
უსადენო წნევის სენსორის მონაცემების გამოქვეყნება MQTT- ის გამოყენებით: ESP32 დაESP 8266 ძალიან ნაცნობი SoCა IoT სფეროში. ეს არის ერთგვარი სიკეთე IoT პროექტებისთვის. ESP 32 არის მოწყობილობა ინტეგრირებული WiFi და BLE. უბრალოდ მიაწოდეთ თქვენი SSID, პაროლი და IP კონფიგურაცია და ინტეგრირეთ საგნები
Arduino– ზე მრავალი ღილაკის დაკავშირება ერთ პინთან: 4 ნაბიჯი
Arduino– ს მრავალ ღილაკთან დაკავშირება ერთ პინზე: გამარჯობა ყველას, როდესაც თქვენი Arduino– ს პროექტებმა გადააჭარბა მოციმციმე LED– ებს, თქვენ შეიძლება დაგჭირდეთ დამატებითი ქინძისთავების საჭიროება. მე გაჩვენებთ ხრიკს, რომელიც შეგიძლიათ გამოიყენოთ სადაც შეგიძლიათ გქონდეთ მრავალი ღილაკი, ყველა ერთსა და იმავე ანალოგიურ პინთან დაკავშირებული