Sisukord:

Traadita rõhuanduri andmete avaldamine MQTT abil: 7 sammu
Traadita rõhuanduri andmete avaldamine MQTT abil: 7 sammu

Video: Traadita rõhuanduri andmete avaldamine MQTT abil: 7 sammu

Video: Traadita rõhuanduri andmete avaldamine MQTT abil: 7 sammu
Video: 5 - Настроек в iOS 15 которые нужно ВКЛЮЧИТЬ! 2024, November
Anonim
Traadita rõhuandurite andmete avaldamine MQTT abil
Traadita rõhuandurite andmete avaldamine MQTT abil

ESP32 ja ESP 8266 on IoT valdkonnas väga tuttavad SoC. Need on IoT -projektide jaoks omamoodi õnnistused. ESP 32 on integreeritud WiFi ja BLE -ga seade. Andke lihtsalt oma SSID, parool ja IP -konfiguratsioonid ning integreerige asjad pilve. Siin, selles juhendis, kaalume mõningaid IoT põhitermineid, nagu IoT platvorm, MQTT, vangistatud portaalid jne. Nii et vaatame selle läbi

  • Väga lihtsate sõnadega IoT -arhitektuur koosneb sisseehitatud seadmest ja IoT -platvormist, mis asetab seadme pilve. Siin kasutame andurite andmete visualiseerimiseks UbiDots IoT platvormi.
  • IP -seadete ja kasutaja mandaatide haldamine võib kasutajale peavalu valmistada. Mis saab siis, kui kasutaja soovib muuta WiFi mandaati? Mis saab siis, kui kasutaja soovib muuta DHCP/staatilise IP seadeid? ESP32 igakordne vilkumine ei ole usaldusväärne ega ole isegi nende probleemide lahendus. Nii et me läheme läbi suletud portaali, et salvestada WiFi volikirjad ja muud konfiguratsioonid.
  • MQTT on nüüd muutumas IoT maailmas väga levinud terminiks. see on kiire, jõulise ja lahja arhitektuuri tõttu ületanud avaldamise ja tellimise taotlused ja vastused (HTTP).

Siin selles juhendatavas me demonstreerime.

  • WiFi ja MQTT mandaadi andmine Captive Portali abil.
  • Mitme anduri andmete avaldamine ja tellimine UbiDotsi.
  • Andmeandmete lugemine traadita rõhu- ja temperatuuriandurilt
  • Veebivormi hostimine ESP32 -st.
  • Lugemine ja kirjutamine SPIFFS ESP32 -st.

Samm: riistvara ja tarkvara spetsifikatsioon

Riistvara spetsifikatsioon

  • ESP32 WiFi/BLE
  • Juhtmevaba rõhu- ja temperatuuriandur

Tarkvara spetsifikatsioon

  • Arduino IDE
  • XCTU
  • Labview Utility

Samm: traadita rõhu- ja temperatuuriandurid

Juhtmevabad rõhu ja temperatuuri andurid
Juhtmevabad rõhu ja temperatuuri andurid
Juhtmevabad rõhu ja temperatuuri andurid
Juhtmevabad rõhu ja temperatuuri andurid
Juhtmevabad rõhu ja temperatuuri andurid
Juhtmevabad rõhu ja temperatuuri andurid

Funktsioonid

  • Tööstusliku astme andur pikaajaline traadita rõhu temperatuuriandur
  • Tööpiirkond 0 kuni 14000 mbar -40 ° kuni +85 ° C (-40 ° kuni 185 ° F)
  • Seadistatav sisemine arvutusrõhu eraldusvõime 0,012 kuni 0,065 mbar
  • Konfigureeritav sisemise arvutuse temperatuuri eraldusvõime 0,002 kuni 0,012 ° C
  • Täpsus ± 2,5 mbar, ± 2 ° C
  • Absoluutse rõhu, suhtelise rõhu ja suhtelise kõrguse muutmise väljundid
  • 2 miili kaugus vaateväljast koos pardaantenniga
  • Suurepärane LOS-vahemik kuni 28 miili suure võimendusega antennidega
  • Liides Raspberry Pi, Microsoft® Azure®, Arduino ja teistega
  • Juhtmevaba võrguühendus DigiMesh® -i abil

Traadita rõhu- ja temperatuurianduri seadistamine Labview Utility ja XCTU abil

Andur töötab kahes režiimis

  • Konfiguratsioonirežiim: seadistage pan -ID, viivitus, korduskatete arv jne. Lisateave selle juhendi reguleerimisalast välja ja seda selgitatakse järgmises juhendis.
  • Käivitusrežiim: Käitame seadme töörežiimis. Nende väärtuste analüüsimiseks kasutame Labview Utility

See Labview kasutajaliides näitab väärtusi kenades graafikutes. See näitab praeguseid ja mineviku väärtusi. Sellelt lingilt saate alla laadida Labview kasutajaliidese. käivitusrežiimi minemiseks klõpsake sihtlehe menüüst ikooni Käivita.

Samm: WiFi -ga ühenduse loomine

WiFi -ga ühenduse loomine
WiFi -ga ühenduse loomine
WiFi -ga ühenduse loomine
WiFi -ga ühenduse loomine

Me kasutame suletud portaali WiFi mandaatide salvestamiseks ja IP -seadete hõljumiseks. Suletud portaali üksikasjaliku tutvustuse jaoks saate läbi vaadata järgmise juhendi.

Suletud portaal annab meile võimaluse valida staatiliste ja DHCP -seadete vahel. Sisestage lihtsalt sellised volikirjad nagu staatiline IP, alamvõrgumask, lüüs ja traadita anduri lüüs konfigureeritakse sellel IP -l.

Hostitakse veebilehte, kus on loetelu saadaolevatest WiFi -võrkudest ja seal RSSI. Valige WiFi -võrk ja parool ning sisestage Esita. Volitused salvestatakse EEPROM -i ja IP -sätted salvestatakse SPIFFS -i. Lisateavet selle kohta leiate sellest juhendist.

Samm: seadistage UbiDots ESP32 -le

UbiDotide seadistamine ESP32 -le
UbiDotide seadistamine ESP32 -le

Siin kasutame temperatuuri ja niiskuse andmete saamiseks ESP 32 seadmega traadita rõhu- ja temperatuuriandureid. Saadame andmed UbiDotsile, kasutades MQTT protokolli. MQTT järgib avaldamise ja tellimise mehhanismi, mitte seda taotlust ja vastust. See on kiirem ja usaldusväärsem kui HTTP. See toimib järgmiselt.

  • Me kasutame ülesannete ajastamiseks ülesannete planeerijat, näiteks andmete andmete toomist, andurite näitude avaldamist, MQTT -i tellimist.
  • Esiteks lisage ülesannete ajastamise päisefailid, see on eksemplar ja ajakava.
  • Oleme kavandanud kaks ülesannet, mis viitavad kahele erinevale juhtimistoimingule.

#define _TASK_TIMEOUT#include Scheduler ts; // --------- Ülesanded ------------ // Ülesanne tSensor (4 * TASK_SECOND, TASK_FOREVER, & taskSensorCallback, & ts, false, NULL ja & taskSensorDisable); Ülesanne tWiFi (10* TASK_SECOND, TASK_FOREVER, & taskWiFiCallback, & ts, false, NULL ja & taskWiFiDisable);

  • Ülesanne 1 on anduri väärtuse lugemiseks, see ülesanne kestab 1 sekund, kuni see jõuab 10 sekundi aegumiseni.
  • Kui ülesanne1 saab oma aja, loome ühenduse kohaliku Wifi ja MQTT maakleriga.
  • Nüüd on ülesanne 2 lubatud ja me keelame ülesande 1
  • Ülesanne 2 on andurite andmete avaldamiseks UbiDots MQTT maaklerile, see ülesanne kestab 20 sekundit, kuni see jõuab 20 sekundi aegumiseni
  • Kui ülesanne 2 saab oma aja, on ülesanne 1 uuesti lubatud ja ülesanne 2 keelatud. Jällegi saame värskendatud väärtuse ja protsess läheb edasi.

I2C anduri andmete lugemine

Me saame traadita temperatuuri ja niiskuse anduritelt 29-baidise kaadri. Seda raami töödeldakse, et saada tegelikke temperatuuri ja niiskuse andmeid

kui (Serial1.available ())

{andmed [0] = Seriaal1.lugemine (); viivitus (k); if (andmed [0] == 0x7E) {while (! Serial1.available ()); jaoks (i = 1; i <36; i ++) {data = Serial1.read (); viivitus (1); } if (andmed [15] == 0x7F) ///////, et kontrollida, kas tagasivõtmisandmed on õiged {if (andmed [22] == 0x06) //////// veenduge, et anduri tüüp on õige {int cTemp = ((((andmed [24]) * 256) + andmed [25])); int16_t abs_pressure = (((((uint16_t) (andmed [26]) << 8) | andmed [27])*0,001); int rlt_pressure = ((((andmed [28]) * 256) + andmed [29]) * 0,001); int16_t delta_alt = (((((uint16_t) (andmed [30]) << 8) | andmed [31])*0,01); ujukpatarei = ((andmed [18] * 256) + andmed [19]); ujukipinge = 0,00322 * aku; Serial.print ("Anduri number"); Serial.println (andmed [16]); Serial.print ("Anduri tüüp"); Serial.println (andmed [22]); Serial.print ("Püsivara versioon"); Serial.println (andmed [17]); Serial.print ("Temperatuur Celsiuse järgi:"); Serial.print (cTemp); Serial.println ("C"); Serial.print ("Absoluutne rõhk:"); Seeria.println (abs_rõhk); Serial.print ("mbar"); Serial.print ("Suhteline rõhk:"); Seeria.println (rlt_rõhk); Serial.print ("mbar"); Serial.print ("Delta kõrgus:"); Serial.println (delta_alt); Serial.print ("meeter"); Serial.print ("ADC väärtus:"); Serial.println (aku); Serial.print ("Aku pinge:"); Jadajälg (pinge); Serial.println ("\ n"); if (pinge <1) {Serial.println ("Aku vahetamise aeg"); }}} muu {jaoks (i = 0; i <36; i ++) {Serial.print (andmed ); Serial.print (","); viivitus (1); }}}}

Ühendamine UbiDots MQTT API -ga

Kaasa MQTT protsessi päisefail

#kaasake

määratlege MQTT jaoks muud muutujad, näiteks kliendi nimi, maakleri aadress, märgi ID

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

char mqttBroker = "things.ubidots.com";

söe kasulik koormus [100]; char teema [150]; // loo muutuja tokeni ID toke salvestamiseks

Samm: andurite näitude avaldamine UbiDotsis

Andurite näitude avaldamine UbiDotsile
Andurite näitude avaldamine UbiDotsile

Looge muutujaid erinevate andurite andmete salvestamiseks ja looge teema muutmiseks char muutuja

#define VARIABLE_LABEL_TEMPF "tempF" // Muutuja sildi määramine #define VARIABLE_LABEL_TEMPC "tempC" // Muutuja sildi määramine #define VARIABLE_LABEL_BAT "bat" #define VARIABLE_LABEL_HUMID "niiske silt" // Assing

char teema1 [100];

char teema2 [100]; char teema3 [100];

avaldage andmed mainitud MQTT -teemal, kuna koormus näeb välja selline: "tempc": {value: "tempData"}}

sprintf (teema1, "%s", ""); sprintf (teema1, "%s%s", "/v1.6/devices/", DEVICE_LABEL); sprintf (kasulik koormus, "%s", ""); // Puhastab kasulikku koormust sprintf (kasulik koormus, "{"%s / ":", VARIABLE_LABEL_TEMPC); // Lisab väärtuse sprintf (kasulik koormus, "%s {" väärtus / ":%s}", kasulik koormus, str_cTemp); // Lisab väärtuse sprintf (kasulik koormus, "%s}", kasulik koormus); // Sulgeb sõnastiku sulgud Serial.println (kasulik koormus); Serial.println (klient.publish (teema1, kasulik koormus)? "Avaldatud": "notpublished"); // Tehke sama ka teise teema puhul

client.publish () avaldab andmed UbiDotsis

6. samm: andmete visualiseerimine

Andmete visualiseerimine
Andmete visualiseerimine
  • Avage Ubidots ja logige oma kontole sisse.
  • Liikuge ülaosas oleval vahekaardil Andmed juhtpaneelile.
  • Nüüd klõpsake uute vidinate lisamiseks ikooni "+".
  • Valige loendist vidin ja lisage muutuja ja seadmed.
  • Andurite andmeid saab armatuurlaual visualiseerida erinevate vidinate abil.

Samm 7: üldine kood

HTML -i ja ESP32 ülekoodi leiate sellest GitHubi hoidlast.

Autorid

  • ncd ESP32 katkestusplaat.
  • ncd juhtmevabad rõhu- ja temperatuuriandurid
  • pubi allklient
  • UbiDots
  • Ülesannete planeerija

Soovitan: