Cuprins:

Publicarea datelor senzorului de presiune fără fir folosind MQTT: 7 pași
Publicarea datelor senzorului de presiune fără fir folosind MQTT: 7 pași

Video: Publicarea datelor senzorului de presiune fără fir folosind MQTT: 7 pași

Video: Publicarea datelor senzorului de presiune fără fir folosind MQTT: 7 pași
Video: Curs 8 WSN 2024, Noiembrie
Anonim
Publicarea datelor senzorului de presiune fără fir folosind MQTT
Publicarea datelor senzorului de presiune fără fir folosind MQTT

ESP32 și ESP 8266 sunt SoC foarte familiari în domeniul IoT. Acestea sunt un fel de avantaj pentru proiectele IoT. ESP 32 este un dispozitiv cu WiFi și BLE integrate. Dă doar configurația SSID, parola și IP și integrează lucrurile în cloud. Aici, în acest instructiv, vom analiza câțiva dintre termenii de bază ai IoT, cum ar fi platforma IoT, MQTT, portaluri captive etc. Deci, haideți să trecem prin ea

  • Arhitectura IoT în cuvinte foarte simple constă dintr-un dispozitiv încorporat și o platformă IoT pentru a pune dispozitivul în cloud. Aici folosim platforma IoT UbiDots pentru a vizualiza datele senzorilor.
  • Gestionarea setărilor IP și a acreditărilor de utilizator poate fi o durere de cap pentru utilizator. Ce se întâmplă dacă utilizatorul dorește să schimbe acreditările WiFi? Ce se întâmplă dacă utilizatorul dorește să schimbe setările DHCP / Static IP? Intermitentul ESP32 de fiecare dată nu este fiabil și nici măcar soluția pentru aceste probleme. Deci, vom trece prin portalul captiv pentru a salva acreditările WiFi și alte configurații.
  • MQTT devine acum un termen foarte comun în lumea IoT. a depășit cererile și răspunsurile (HTTP) de la Publicare și Abonare datorită arhitecturii rapide, robuste și slabe.

Aici, în acest instructiv, vom demonstra.

  • Oferirea de acreditări WiFi și MQTT utilizând Captive Portal.
  • Publicarea și abonarea mai multor date senzorilor la UbiDots.
  • Citirea datelor senzorului de la senzorul wireless de presiune și temperatură
  • Găzduirea unui formular web de la ESP32.
  • Citirea și scrierea din SPIFFS ESP32.

Pasul 1: Specificații hardware și software

Specificații hardware

  • ESP32 WiFi / BLE
  • Senzor de presiune și temperatură fără fir

Specificații software

  • IDE Arduino
  • XCTU
  • Utilitarul Labview

Pasul 2: senzori de presiune și temperatură fără fir

Senzori de presiune și temperatură fără fir
Senzori de presiune și temperatură fără fir
Senzori de presiune și temperatură fără fir
Senzori de presiune și temperatură fără fir
Senzori de presiune și temperatură fără fir
Senzori de presiune și temperatură fără fir

Caracteristici

  • Senzor de grad industrial Senzor de temperatură de presiune fără fir cu rază lungă de acțiune
  • Domeniu de operare 0 - 14000 mbar -40 ° până la + 85 ° C (-40 ° până la 185 ° F)
  • Rezoluție presiune de calcul intern configurabilă de la 0,012 la 0,065 mbar
  • Rezoluție temperatură de calcul intern configurabilă de la 0,002 la 0,012 ° C
  • Precizie ± 2,5 mbar, ± 2 ° C
  • Presiunea absolută, presiunea relativă și altitudinea relativă schimbă ieșirile
  • Linie de vizibilitate de 2 mile cu antenă la bord
  • Gama LOS superioară de până la 28 de mile cu antene cu câștig ridicat
  • Interfață cu Raspberry Pi, Microsoft® Azure®, Arduino și multe altele
  • Rețea wireless Mesh utilizând DigiMesh®

Configurarea senzorului de presiune și temperatură fără fir folosind Labview Utility și XCTU

Senzorul rulează în două moduri

  • Mod de configurare: configurați ID-ul Pan, întârzierea, numărul de reîncercări etc. Mai multe despre acest lucru depășesc sfera acestui instructable și vor fi explicate în următoarea instructable.
  • Run Mode: rulăm dispozitivul în modul Run. Și pentru a analiza aceste valori, folosim utilitarul Labview

Această interfață Labview arată valorile în grafice frumoase. Arată valorile curente, precum și cele din trecut. Puteți accesa acest link pentru a descărca interfața de utilizare Labview. faceți clic pe pictograma Executare din meniul paginii de destinație pentru a accesa modul de rulare.

Pasul 3: Conectarea la WiFi

Conectarea la WiFi
Conectarea la WiFi
Conectarea la WiFi
Conectarea la WiFi

Folosim portalul captiv pentru a salva acreditările WiFi și pentru a naviga prin setările IP. Pentru introducerea detaliată pe portalul captiv, puteți parcurge următoarele instrucțiuni.

Portalul captiv ne oferă opțiunea de a alege între setările Static și DHCP. Introduceți doar acreditările precum IP static, mască de subrețea, gateway și gateway-ul senzorului wireless va fi configurat pe acel IP.

O pagină web este găzduită în care apare o listă care prezintă rețelele WiFi disponibile și acolo RSSI. Selectați rețeaua WiFi și parola și introduceți trimitere. Acreditările vor fi salvate în EEPROM și setarea IP va fi salvată în SPIFFS. Mai multe despre acest lucru pot fi găsite în acest instructable.

Pasul 4: Configurarea UbiDots pe ESP32

Configurarea UbiDots pe ESP32
Configurarea UbiDots pe ESP32

Aici folosim senzori de presiune și temperatură fără fir cu dispozitivul ESP 32 pentru a obține datele de temperatură și umiditate. Trimitem datele către UbiDots folosind protocolul MQTT. MQTT urmărește mai degrabă un mecanism de publicare și abonare care solicită și răspunde. Este mai rapid și mai fiabil decât HTTP. Acest lucru funcționează după cum urmează.

  • Folosim Task Scheduler pentru a programa sarcina, cum ar fi preluarea datelor de la senzori, publicarea citirilor senzorilor, abonarea la subiectul MQTT.
  • În primul rând, includeți fișierele antet Task Scheduler, este instanța și planifică sarcinile.
  • Am programat două sarcini referitoare la două operații de control diferite.

#define _TASK_TIMEOUT # include Scheduler ts; // --------- Tasks ------------ // Task tSensor (4 * TASK_SECOND, TASK_FOREVER, & taskSensorCallback, & ts, false, NULL, & taskSensorDisable); Task tWiFi (10 * TASK_SECOND, TASK_FOREVER și & taskWiFiCallback, & ts, false, NULL și & taskWiFiDisable);

  • Sarcina 1 este pentru citirea valorii senzorului, această sarcină rulează timp de 1 secundă până când ajunge la expirarea de 10 secunde.
  • Când Task1 își expiră, ne conectăm la brokerul local Wifi și MQTT.
  • Acum Task 2 este activat și dezactivăm Task 1
  • Sarcina 2 este pentru publicarea datelor senzorilor în brokerul UbiDots MQTT, această sarcină rulează timp de 20 de secunde până când ajunge la expirarea de 20 de secunde
  • Când Task2 își expiră, Task 1 este activat din nou și Task2 este dezactivat. Din nou, obținem valoarea actualizată și procesul continuă.

Citirea datelor senzorului I2C

Obținem un cadru de 29 de octeți de la senzorii de temperatură și umiditate fără fir. Acest cadru este manipulat pentru a obține datele reale de temperatură și umiditate

if (Serial1.available ())

{date [0] = Serial1.read (); întârziere (k); if (date [0] == 0x7E) {while (! Serial1.available ()); for (i = 1; i <36; i ++) {date = Serial1.read (); întârziere (1); } if (data [15] == 0x7F) /////// pentru a verifica dacă datele de recepție sunt corecte {if (data [22] == 0x06) //////// asigurați-vă că tipul senzorului este corect {int cTemp = ((((date [24]) * 256) + date [25])); int16_t abs_pressure = ((((uint16_t) (date [26]) << 8) | date [27]) * 0,001); int rlt_pressure = ((((date [28]) * 256) + date [29]) * 0,001); int16_t delta_alt = ((((uint16_t) (date [30]) << 8) | date [31]) * 0,01); baterie plutitoare = ((date [18] * 256) + date [19]); tensiune plutitoare = 0,00322 * baterie; Serial.print („Număr senzor”); Serial.println (date [16]); Serial.print („Tip senzor”); Serial.println (date [22]); Serial.print („Versiunea firmware”); Serial.println (date [17]); Serial.print ("Temperatura în grade Celsius:"); Serial.print (cTemp); Serial.println ("C"); Serial.print ("Presiune absolută:"); Serial.println (abs_pressure); Serial.print ("mbar"); Serial.print ("Presiune relativă:"); Serial.println (rlt_pressure); Serial.print ("mbar"); Serial.print ("Delta Altitude:"); Serial.println (delta_alt); Serial.print ("contor"); Serial.print ("valoare ADC:"); Serial.println (baterie); Serial.print ("Tensiunea bateriei:"); Serial.print (tensiune); Serial.println ("\ n"); if (tensiune <1) {Serial.println ("Timpul de înlocuire a bateriei"); }}} else {for (i = 0; i <36; i ++) {Serial.print (data ); Serial.print (","); întârziere (1); }}}}

Conectarea la API-ul UbiDots MQTT

Includeți fișierul antet pentru procesul MQTT

#include

definiți alte variabile pentru MQTT, cum ar fi numele clientului, adresa brokerului, ID-ul simbolului

#define TOKEN "BBFF - ************************************" // Ubidots TOKEN # define MQTT_CLIENT_NAME "*****************************"

char mqttBroker = "things.ubidots.com";

sarcină utilă char [100]; subiect char [150]; // creați o variabilă pentru a stoca token ID token

Pasul 5: Publicarea citirilor senzorului pe UbiDots

Publicarea citirilor senzorilor pe UbiDots
Publicarea citirilor senzorilor pe UbiDots

Creați variabile pentru a stoca diferite date ale senzorilor și creați o variabilă char pentru a stoca subiectul

char topic1 [100];

char topic2 [100]; char topic3 [100];

publicați datele pe subiectul MQTT menționat, sarcina utilă va arăta ca {"tempc": {value: "tempData"}}

sprintf (topic1, "% s", ""); sprintf (topic1, "% s% s", "/v1.6/devices/", DEVICE_LABEL); sprintf (sarcină utilă, "% s", ""); // Curăță sarcina utilă sprintf (sarcină utilă, "{"% s / ":", VARIABLE_LABEL_TEMPC); // Adaugă valoarea sprintf (sarcină utilă, "% s {" valoare / ":% s}", sarcină utilă, str_cTemp); // Adaugă valoarea sprintf (sarcină utilă, "% s}", sarcină utilă); // Închide parantezele dicționarului Serial.println (sarcină utilă); Serial.println (client.publish (topic1, payload)? "Published": "nepublicat"); // Faceți același lucru și pentru alte subiecte

client.publish () publică datele în UbiDots

Pasul 6: Vizualizarea datelor

Vizualizarea datelor
Vizualizarea datelor
  • Accesați Ubidots și conectați-vă la contul dvs.
  • Navigați la Tabloul de bord din fila Date listată în partea de sus.
  • Acum faceți clic pe pictograma „+” pentru a adăuga noile widgeturi.
  • Selectați un widget din listă și adăugați o variabilă și dispozitive.
  • Datele senzorului pot fi vizualizate pe tabloul de bord folosind diferite widget-uri.

Pasul 7: Cod general

Codul Over pentru HTML și ESP32 poate fi găsit în acest depozit GitHub.

credite

  • ncd ESP32 board breakout.
  • Senzori de presiune și temperatură fără fir ncd
  • pubsubclient
  • UbiDots
  • Planificator de sarcini

Recomandat: