Სარჩევი:

UbiDots-ESP32– ის დაკავშირება და მრავალი სენსორის მონაცემების გამოქვეყნება: 6 ნაბიჯი
UbiDots-ESP32– ის დაკავშირება და მრავალი სენსორის მონაცემების გამოქვეყნება: 6 ნაბიჯი

ვიდეო: UbiDots-ESP32– ის დაკავშირება და მრავალი სენსორის მონაცემების გამოქვეყნება: 6 ნაბიჯი

ვიდეო: UbiDots-ESP32– ის დაკავშირება და მრავალი სენსორის მონაცემების გამოქვეყნება: 6 ნაბიჯი
ვიდეო: Arduino კოდი VL53L1X ფრენის დრო 400 სმ ლაზერული მანძილის სენსორი 2024, ივლისი
Anonim
UbiDots-ESP32– ის დაკავშირება და მრავალი სენსორის მონაცემების გამოქვეყნება
UbiDots-ESP32– ის დაკავშირება და მრავალი სენსორის მონაცემების გამოქვეყნება

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 და UbiDots სერთიფიკატები
უზრუნველყოს 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
  • ამოცანების განრიგი

გირჩევთ: