Სარჩევი:

უკაბელო წნევის სენსორის მონაცემების გამოქვეყნება MQTT გამოყენებით: 7 ნაბიჯი
უკაბელო წნევის სენსორის მონაცემების გამოქვეყნება MQTT გამოყენებით: 7 ნაბიჯი

ვიდეო: უკაბელო წნევის სენსორის მონაცემების გამოქვეყნება MQTT გამოყენებით: 7 ნაბიჯი

ვიდეო: უკაბელო წნევის სენსორის მონაცემების გამოქვეყნება MQTT გამოყენებით: 7 ნაბიჯი
ვიდეო: Gastrointestinal Dysmotility in Autonomic Disorders 2024, დეკემბერი
Anonim
უკაბელო წნევის სენსორის მონაცემების გამოქვეყნება MQTT გამოყენებით
უკაბელო წნევის სენსორის მონაცემების გამოქვეყნება MQTT გამოყენებით

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- სთან
დაკავშირება WiFi- სთან
დაკავშირება WiFi- სთან
დაკავშირება WiFi- სთან

ჩვენ ვიყენებთ დატყვევებულ პორტალს, რომ შევინარჩუნოთ WiFi სერთიფიკატები და გადავიდეთ IP პარამეტრებში. ტყვე პორტალზე დეტალური დანერგვისთვის შეგიძლიათ გაიაროთ შემდეგი ინსტრუქცია.

დატყვევებული პორტალი გვაძლევს არჩევანის გაკეთებას სტატიკურ და DHCP პარამეტრებს შორის. უბრალოდ შეიყვანეთ რწმუნებათა სიგელები, როგორიცაა სტატიკური IP, ქვექსელის ნიღაბი, კარიბჭე და უკაბელო სენსორის კარიბჭე კონფიგურირებული იქნება ამ IP– ზე.

მასპინძლობს ვებგვერდს, სადაც არის სია, სადაც ნაჩვენებია ხელმისაწვდომი WiFi ქსელები და იქ არის RSSI. აირჩიეთ WiFi ქსელი და პაროლი და შეიყვანეთ წარდგენა. სერთიფიკატები შეინახება EEPROM– ში და IP პარამეტრი შეინახება SPIFFS– ში. ამის შესახებ მეტი შეგიძლიათ იხილოთ ამ ინსტრუქციებში.

ნაბიჯი 4: UbiDots– ის დაყენება ESP32– ზე

UbiDots– ის დაყენება ESP32– ზე
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– ზე

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

გირჩევთ: