Turinys:

Belaidžio slėgio jutiklio duomenų publikavimas naudojant MQTT: 7 žingsniai
Belaidžio slėgio jutiklio duomenų publikavimas naudojant MQTT: 7 žingsniai

Video: Belaidžio slėgio jutiklio duomenų publikavimas naudojant MQTT: 7 žingsniai

Video: Belaidžio slėgio jutiklio duomenų publikavimas naudojant MQTT: 7 žingsniai
Video: Gastrointestinal Dysmotility in Autonomic Disorders 2024, Lapkritis
Anonim
Belaidžio slėgio jutiklio duomenų publikavimas naudojant MQTT
Belaidžio slėgio jutiklio duomenų publikavimas naudojant MQTT

ESP32 ir ESP 8266 yra labai pažįstami SoC IoT srityje. Tai savotiška palaima daiktų interneto projektams. ESP 32 yra įrenginys su integruotu „WiFi“ir BLE. Tiesiog nurodykite savo SSID, slaptažodį ir IP konfigūracijas ir integruokite dalykus į debesį. Šioje pamokoje mes apsvarstysime kai kurias pagrindines daiktų interneto sąlygas, tokias kaip daiktų interneto platforma, MQTT, nelaisvės portalai ir kt. Taigi pereikime prie jo

  • „IoT Architecture“labai paprastais žodžiais susideda iš įterpto įrenginio ir „IoT“platformos, kad įrenginys būtų įtrauktas į debesį. Čia mes naudojame „UbiDots IoT“platformą jutiklių duomenims vizualizuoti.
  • IP nustatymų ir vartotojo duomenų tvarkymas gali sukelti galvos skausmą vartotojui. Ką daryti, jei vartotojas nori pakeisti „WiFi“prisijungimo duomenis? Ką daryti, jei vartotojas nori pakeisti DHCP/statinio IP nustatymus? ESP32 mirksėjimas kiekvieną kartą nėra patikimas ir net nėra šių problemų sprendimas. Taigi mes eisime per uždarą portalą, kad išsaugotume „WiFi“prisijungimo duomenis ir kitas konfigūracijas.
  • MQTT dabar tampa labai įprastu terminu daiktų interneto pasaulyje. ji pralenkė „Publish“ir „Subscribe“užklausas ir atsakymus (HTTP) dėl greitos, tvirtos ir paprastos architektūros.

Čia, šioje pamokoje, mes parodysime.

  • „WiFi“ir MQTT įgaliojimų suteikimas naudojant „Captive Portal“.
  • Kelių jutiklių duomenų publikavimas ir prenumeravimas „UbiDots“.
  • Jutiklio duomenų skaitymas iš belaidžio slėgio ir temperatūros jutiklio
  • Interneto formos priegloba iš ESP32.
  • Skaitymas ir rašymas iš SPIFFS ESP32.

1 žingsnis: Aparatūros ir programinės įrangos specifikacija

Techninės įrangos specifikacija

  • ESP32 WiFi/BLE
  • Belaidis slėgio ir temperatūros jutiklis

Programinės įrangos specifikacija

  • „Arduino IDE“
  • XCTU
  • „Labview Utility“

2 žingsnis: belaidžiai slėgio ir temperatūros jutikliai

Belaidžiai slėgio ir temperatūros jutikliai
Belaidžiai slėgio ir temperatūros jutikliai
Belaidžiai slėgio ir temperatūros jutikliai
Belaidžiai slėgio ir temperatūros jutikliai
Belaidžiai slėgio ir temperatūros jutikliai
Belaidžiai slėgio ir temperatūros jutikliai

funkcijos

  • Pramoninio laipsnio jutiklis ilgo nuotolio belaidis slėgio temperatūros jutiklis
  • Veikimo diapazonas nuo 0 iki 14000 mbar -40 ° iki +85 ° C (nuo -40 ° iki 185 ° F)
  • Konfigūruojama vidinė skaičiavimo slėgio skiriamoji geba nuo 0,012 iki 0,065 mbar
  • Konfigūruojama vidinė skaičiavimo temperatūros skiriamoji geba nuo 0,002 iki 0,012 ° C
  • Tikslumas ± 2,5 mbar, ± 2 ° C
  • Absoliutus slėgis, santykinis slėgis ir santykinis aukštis
  • 2 mylių matomumo diapazonas su laive esančia antena
  • Aukščiausios klasės LOS diapazonas iki 28 mylių su didelio stiprumo antenomis
  • Sąsaja su „Raspberry Pi“, „Microsoft® Azure®“, „Arduino“ir kt
  • Belaidis akių tinklas naudojant „DigiMesh®“

Belaidžio slėgio ir temperatūros jutiklio konfigūravimas naudojant „Labview Utility“ir „XCTU“

Jutiklis veikia dviem režimais

  • Konfigūracijos režimas: sukonfigūruokite „Pan ID“, vėlavimą, pakartotinių bandymų skaičių ir tt
  • Vykdymo režimas: įrenginys paleidžiamas veikimo režimu. Šiai vertei analizuoti naudojame „Labview Utility“

Ši „Labview“vartotojo sąsaja rodo vertes gražiose diagramose. Tai rodo dabartines ir praeities vertybes. Norėdami atsisiųsti „Labview“vartotojo sąsają, galite eiti į šią nuorodą. nukreipimo puslapio meniu spustelėkite piktogramą Vykdyti, kad pereitumėte į veikimo režimą.

3 veiksmas: prisijunkite prie „WiFi“

Prisijungimas prie „WiFi“
Prisijungimas prie „WiFi“
Prisijungimas prie „WiFi“
Prisijungimas prie „WiFi“

Mes naudojame uždarąjį portalą, norėdami išsaugoti „WiFi“prisijungimo duomenis ir slinkti per IP nustatymus. Norėdami gauti išsamų įvadą į nelaisvės portalą, galite perskaityti šią instrukciją.

Nepriklausomas portalas suteikia mums galimybę pasirinkti tarp statinio ir DHCP nustatymų. Tiesiog įveskite tokius įgaliojimus kaip statinis IP, potinklio kaukė, šliuzas ir belaidžio jutiklio šliuzas bus sukonfigūruoti tuo IP.

Priglobiamas tinklalapis, kuriame pateikiamas galimų „WiFi“tinklų ir RSSI sąrašas. Pasirinkite „WiFi“tinklą ir slaptažodį ir įveskite „Pateikti“. Įgaliojimai bus išsaugoti EEPROM, o IP nustatymai - SPIFFS. Daugiau apie tai galite rasti šioje instrukcijoje.

4 veiksmas: „UbiDots“nustatymas ESP32

„UbiDots“nustatymas naudojant ESP32
„UbiDots“nustatymas naudojant ESP32

Čia mes naudojame belaidžius slėgio ir temperatūros jutiklius su ESP 32 prietaisu, kad gautume temperatūros ir drėgmės duomenis. Mes siunčiame duomenis į „UbiDots“naudodami MQTT protokolą. MQTT vadovaujasi paskelbimo ir prenumeratos mechanizmu, o ne tuo prašymu ir atsakymu. Jis yra greitesnis ir patikimesnis nei HTTP. Tai veikia taip.

  • Mes naudojame užduočių planuoklį, kad suplanuotume užduotį, pavyzdžiui, gauname duomenis iš jutiklių, skelbiame jutiklių rodmenis, užsiprenumeruojame MQTT temą.
  • Pirma, įtraukite užduočių planavimo priemonės antraštės failus, jos egzempliorių ir suplanuokite užduotis.
  • Mes suplanavome dvi užduotis, susijusias su dviem skirtingomis valdymo operacijomis.

#define _TASK_TIMEOUT#include Scheduler ts; // --------- Užduotys ------------ // Užduotis tSensor (4 * TASK_SECOND, TASK_FOREVER, & taskSensorCallback, & ts, false, NULL ir & taskSensorDisable); Užduotis tWiFi (10* TASK_SECOND, TASK_FOREVER, & taskWiFiCallback, & ts, false, NULL ir & taskWiFiDisable);

  • 1 užduotis skirta skaityti jutiklio vertę; ši užduotis vykdoma 1 sekundę, kol pasibaigs 10 sekundžių skirtasis laikas.
  • Kai Task1 pasiekia savo laiką, mes prisijungiame prie vietinio „Wifi“ir „MQTT“brokerio.
  • Dabar 2 užduotis įjungta ir mes išjungiame 1 užduotį
  • 2 užduotis skirta jutiklių duomenims paskelbti „UbiDots MQTT“tarpininkui, ši užduotis vykdoma 20 sekundžių, kol pasibaigs 20 sekundžių skirtasis laikas
  • Pasibaigus 2 užduočiai, 1 užduotis vėl įjungiama, o 2 užduotis išjungiama. Čia vėl gauname atnaujintą vertę ir procesas tęsiasi.

I2C jutiklio duomenų skaitymas

Mes gauname 29 baitų kadrą iš belaidžių temperatūros ir drėgmės jutiklių. Šiuo rėmeliu manipuliuojama, kad būtų gauti tikri temperatūros ir drėgmės duomenys

jei (Serial1.available ())

{duomenys [0] = Serial1.read (); vėlavimas (k); if (duomenys [0] == 0x7E) {while (! Serial1.available ()); for (i = 1; i <36; i ++) {data = Serial1.read (); uždelsimas (1); } if (duomenys [15] == 0x7F) ///////, kad patikrintumėte, ar gaunami duomenys teisingi {if (duomenys [22] == 0x06) //////// įsitikinkite, kad jutiklio tipas yra teisingas {int cTemp = ((((duomenys [24]) * 256) + duomenys [25])); int16_t abs_pressure = (((((uint16_t) (duomenys [26]) << 8) | duomenys [27])*0,001); int rlt_pressure = ((((duomenys [28]) * 256) + duomenys [29]) * 0,001); int16_t delta_alt = (((((uint16_t) (duomenys [30]) << 8) | duomenys [31])*0,01); plūdinė baterija = ((duomenys [18] * 256) + duomenys [19]); plūdės įtampa = 0,00322 * baterija; Serial.print („Jutiklio numeris“); Serial.println (duomenys [16]); Serial.print („Jutiklio tipas“); Serial.println (duomenys [22]); Serial.print („Firmware Version“); Serial.println (duomenys [17]); Serial.print ("Temperatūra Celsijaus laipsniais:"); Serial.print (cTemp); Serial.println ("C"); Serial.print ("Absoliutus slėgis:"); Serial.println (abs_pressure); Serial.print („mbar“); Serial.print ("Santykinis slėgis:"); Serial.println (rlt_pressure); Serial.print („mbar“); Serial.print („Delta Altitude:“); Serial.println (delta_alt); Serijinis atspaudas („skaitiklis“); Serial.print ("ADC reikšmė:"); Serial.println (baterija); Serial.print ("Baterijos įtampa:"); Serijinis atspaudas (įtampa); Serial.println ("\ n"); if (įtampa <1) {Serial.println („Laikas pakeisti bateriją“); }}} else {for (i = 0; i <36; i ++) {Serial.print (duomenys ); Serial.print (","); uždelsimas (1); }}}}

Prisijungimas prie „UbiDots MQTT“API

Įtraukite MQTT proceso antraštės failą

#įtraukti

apibrėžti kitus MQTT kintamuosius, pvz., kliento vardą, tarpininko adresą, prieigos rakto ID

#define TOKEN "BBFF-***********************************" // Jūsų Ubidots TOKEN#define MQTT_CLIENT_NAME "***************************"

char mqttBroker = "things.ubidots.com";

anglies naudingoji apkrova [100]; char tema [150]; // sukurti kintamąjį, kad būtų išsaugotas prieigos rakto ID

5 veiksmas: jutiklių rodmenų paskelbimas „UbiDots“

Jutiklių rodmenų publikavimas „UbiDots“
Jutiklių rodmenų publikavimas „UbiDots“

Sukurkite kintamuosius skirtingiems jutiklių duomenims saugoti ir sukurkite char kintamąjį, kad išsaugotumėte temą

#define VARIABLE_LABEL_TEMPF "tempF" // Kintamosios etiketės priskyrimas #define VARIABLE_LABEL_TEMPC "tempC" // Kintamosios etiketės #define VARIABLE_LABEL_BAT "bat" #define VARIABLE_LABEL_HUMID "drėgnos etiketės" priskyrimas // Assing

char tema1 [100];

char tema2 [100]; char tema3 [100];

paskelbti duomenis minėtoje MQTT temoje, naudingoji apkrova atrodys {"tempc": {value: "tempData"}}

sprintf (tema1, "%s", ""); sprintf (tema1, „%s%s“, „/v1.6/devices/“, DEVICE_LABEL); sprintf (naudingoji apkrova, „%s“, „“); // Išvalo naudingąją apkrovą sprintf (naudingoji apkrova, "{"%s / ":", VARIABLE_LABEL_TEMPC); // Prideda vertę sprintf (naudingoji apkrova, "%s {" vertė / ":%s}", naudingoji apkrova, str_cTemp); // Prideda vertę sprintf (naudingoji apkrova, "%s}", naudingoji apkrova); // Uždaro žodyno skliaustus Serial.println (naudingoji apkrova); Serial.println (client.publish (tema1, naudingoji apkrova)? "Paskelbta": "nepaskelbta"); // Darykite tą patį ir kitai temai

client.publish () skelbia duomenis „UbiDots“

6 žingsnis: vizualizuokite duomenis

Duomenų vizualizavimas
Duomenų vizualizavimas
  • Eikite į „Ubidots“ir prisijunkite prie savo paskyros.
  • Viršuje esančiame skirtuke Duomenys eikite į informacijos suvestinę.
  • Dabar spustelėkite „+“piktogramą, kad pridėtumėte naujų valdiklių.
  • Iš sąrašo pasirinkite valdiklį ir pridėkite kintamąjį bei įrenginius.
  • Jutiklio duomenis galima vizualizuoti prietaisų skydelyje naudojant skirtingus valdiklius.

7 žingsnis: bendras kodas

HTML ir ESP32 „Over“kodą galima rasti šioje „GitHub“saugykloje.

Kreditai

  • ncd ESP32 pertraukimo plokštė.
  • ncd belaidžiai slėgio ir temperatūros jutikliai
  • pubsclubient
  • „UbiDots“
  • Darbų planuotojas

Rekomenduojamas: