Cuprins:
- Pasul 1: Specificații hardware și software
- Pasul 2: senzori de presiune și temperatură fără fir
- Pasul 3: Conectarea la WiFi
- Pasul 4: Configurarea UbiDots pe ESP32
- Pasul 5: Publicarea citirilor senzorului pe UbiDots
- Pasul 6: Vizualizarea datelor
- Pasul 7: Cod general
Video: Publicarea datelor senzorului de presiune fără fir folosind MQTT: 7 pași
2024 Autor: John Day | [email protected]. Modificat ultima dată: 2024-01-30 11:44
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
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
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
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
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
- 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:
Trimiterea datelor senzorului de vibrații și temperatură fără fir către Excel folosind Node-RED: 25 de pași
Trimiterea datelor senzorului de vibrații și temperatură fără fir către Excel folosind Node-RED: Prezentarea senzorului de temperatură și vibrații wireless IoT Industrial Long Range IoT, oferind până la o rază de 2 mile utilizarea unei structuri de rețea fără fir mesh. Incorporând un senzor de precizie de vibrație și temperatură pe 16 biți, acest dispozitiv
Trimiterea datelor despre vibrații și temperatură fără fir către Foi de calcul Google folosind Node-RED: 37 de pași
Trimiterea datelor despre vibrații și temperatură fără fir către Foi de calcul Google folosind Node-RED: Introducerea senzorului de temperatură și vibrații fără fir IoT Industrial Long Range IoT de la NCD, oferind până la o rază de 2 mile utilizarea unei structuri de rețea fără fir mesh. Incorporând un senzor de precizie de vibrație și temperatură pe 16 biți, acest dispozitiv
Robot Arduino fără fir folosind modulul HC12 fără fir: 7 pași
Robot wireless Arduino folosind modulul HC12 fără fir: Hei băieți, bine ați revenit. În postarea mea anterioară, am explicat ce este un circuit H Bridge, circuitul de conducător auto L293D IC, piggybacking L293D driverul IC pentru conducerea driverelor de curent mare și modul în care puteți proiecta și crea propriul dvs. driver de motor L293D
Trimiterea datelor senzorului de temperatură și umiditate fără fir IoT pe termen lung către foaia Google: 39 de pași
Trimiterea datelor senzorului de temperatură și umiditate fără fir IoT pe termen lung către foaia Google: Folosim aici senzorul de temperatură și umiditate NCD, dar pașii rămân egali pentru oricare dintre produsele ncd, deci dacă aveți alți senzori fără fir ncd, experiența este gratuită. alături de pe lângă. Prin oprirea acestui text, trebuie să
Crearea de alerte prin e-mail a senzorului de temperatură și umiditate fără fir NCD folosind roșu nod: 22 de pași
Crearea de alerte prin e-mail ale senzorului de temperatură și umiditate fără fir NCD folosind roșu nod: folosim aici senzorul de temperatură și umiditate al NCD, dar pașii rămân egali pentru oricare dintre produsele ncd, deci dacă aveți alți senzori fără fir ncd, experiența este gratuită. observă alături. Prin oprirea acestui text, trebuie să