Përmbajtje:

Publikimi i të dhënave të sensorit të presionit pa tel duke përdorur MQTT: 7 hapa
Publikimi i të dhënave të sensorit të presionit pa tel duke përdorur MQTT: 7 hapa

Video: Publikimi i të dhënave të sensorit të presionit pa tel duke përdorur MQTT: 7 hapa

Video: Publikimi i të dhënave të sensorit të presionit pa tel duke përdorur MQTT: 7 hapa
Video: Взлом кода: углубленное исследование уровня 7 OSI 2024, Nëntor
Anonim
Publikimi i të dhënave të sensorit të presionit pa tel duke përdorur MQTT
Publikimi i të dhënave të sensorit të presionit pa tel duke përdorur MQTT

ESP32 dheESP 8266 janë SoC shumë të njohura në fushën e IoT. Këto janë një lloj ndihme për projektet IoT. ESP 32 është një pajisje me WiFi dhe BLE të integruar. Thjesht jepni konfigurimin tuaj SSID, fjalëkalimin dhe IP dhe integroni gjërat në cloud. Këtu në këtë udhëzues, Ne do të meditojmë përmes disa prej kushteve themelore të IoT si platforma IoT, MQTT, Portalet e Kapur etj. Pra, le të kalojmë nëpër të

  • Arkitektura IoT me fjalë shumë të thjeshta përbëhet nga një pajisje e ngulitur dhe platforma IoT për ta vënë pajisjen në re. Këtu po përdorim platformën UbiDots IoT për të vizualizuar të dhënat e sensorit.
  • Menaxhimi i cilësimeve IP dhe kredencialet e përdoruesit mund të jetë një dhimbje koke për përdoruesit. Po nëse Përdoruesi dëshiron të ndryshojë kredencialet WiFi? Po sikur përdoruesi të ndryshojë cilësimet e DHCP/IP statike? Ndezja e ESP32 çdo herë nuk është e besueshme dhe as zgjidhje për këto probleme. Pra, ne do të kalojmë përmes portalit të kapur për të ruajtur kredencialet WiFi dhe konfigurimet e tjera.
  • MQTT tani po bëhet një term shumë i zakonshëm në botën IoT. ka tejkaluar kërkesën dhe përgjigjet (HTTP) nga Publish and Subscribe për shkak të arkitekturës së shpejtë, të fuqishme dhe të dobët.

Këtu në këtë udhëzues, ne do të demonstrojmë.

  • Dhënia e kredencialeve WiFi dhe MQTT duke përdorur Portalin e Kapur.
  • Publikimi dhe Abonimi i të dhënave të shumta të Sensorit në UbiDots.
  • Leximi i të dhënave të sensorit nga sensori i presionit pa tel dhe temperaturës
  • Pritja e një forme uebi nga ESP32.
  • Leximi dhe Shkrimi nga SPIFFS ESP32.

Hapi 1: Specifikimet e harduerit dhe softuerit

Specifikimet e harduerit

  • ESP32 WiFi/BLE
  • Sensori i presionit dhe temperaturës pa tel

Specifikimi i Softuerit

  • Arduino IDE
  • XCTU
  • Shërbimi Labview

Hapi 2: Sensorët e presionit dhe temperaturës pa tel

Sensorë të presionit dhe temperaturës pa tel
Sensorë të presionit dhe temperaturës pa tel
Sensorë të presionit dhe temperaturës pa tel
Sensorë të presionit dhe temperaturës pa tel
Sensorë të presionit dhe temperaturës pa tel
Sensorë të presionit dhe temperaturës pa tel

Karakteristikat

  • Sensor i shkallës industriale Sensor i temperaturës së presionit pa tel me rreze të gjatë
  • Gama e funksionimit 0 deri në 14000 mbar -40 ° deri +85 ° C (-40 ° deri 185 ° F)
  • Llogaritja e brendshme e konfigurueshme Rezolucioni i presionit 0.012 në 0.065 mbar
  • Llogaritja e brendshme e konfigurueshme Zgjidhja e temperaturës 0.002 deri 0.012 ° C
  • Saktësi ± 2.5 mbar, ± 2 ° C
  • Presionet Absolute, Presioni Relativ dhe Lartësia Relative daljet e ndryshimit
  • Gama e Linjës së Pamjes 2 Mile me Antenë në bord
  • Gama Superior LOS deri në 28 milje me antena me fitim të lartë
  • Ndërfaqja me Raspberry Pi, Microsoft® Azure®, Arduino dhe më shumë
  • Rrjetëzimi pa tel me rrjetë duke përdorur DigiMesh®

Konfigurimi i sensorit të presionit dhe temperaturës pa tel duke përdorur mjetin Labview dhe XCTU

Sensori funksionon në dy mënyra

  • Mënyra e konfigurimit: Konfiguroni ID -në e Pan -it, vonesën, numrin e riprovimeve etj. Më shumë për këtë është përtej fushëveprimit të këtij udhëzuesi dhe do të shpjegohet në udhëzuesin tjetër.
  • Mënyra e ekzekutimit: Ne po e drejtojmë pajisjen në modalitetin Run. Dhe për të analizuar këto vlera ne po përdorim Shërbimin Labview

Ky UI Labview tregon vlerat në grafikë të bukur. Ajo tregon vlerat aktuale dhe të kaluara. Ju mund të shkoni në këtë lidhje për të shkarkuar ndërfaqen e Labview. klikoni në ikonën Run nga menyja e faqes së uljes për të shkuar në modalitetin e ekzekutimit.

Hapi 3: Lidhja me WiFi

Po lidhet me WiFi
Po lidhet me WiFi
Po lidhet me WiFi
Po lidhet me WiFi

Ne po përdorim portalin e kapur për të ruajtur kredencialet WiFi dhe për të lëvizur përmes cilësimeve të IP. Për hyrjen e hollësishme në portalin robër, mund të kaloni udhëzimet e mëposhtme udhëzuese.

Portali i kapur na jep mundësinë të zgjedhim midis cilësimeve Static dhe DHCP. Thjesht futni kredencialet si IP Static, Subnet Mask, gateway dhe Porta e Sensorit Wireless do të konfigurohet në atë IP.

Një faqe në internet po mbahet ku një listë që tregon rrjetet WiFi në dispozicion dhe atje RSSI. Zgjidhni rrjetin WiFi dhe fjalëkalimin dhe futni paraqit. Kredencialet do të ruhen në EEPROM dhe cilësimi IP do të ruhet në SPIFFS. Më shumë për këtë mund të gjeni në këtë udhëzues.

Hapi 4: Vendosja e UbiDots në ESP32

Vendosja e UbiDots në ESP32
Vendosja e UbiDots në ESP32

Këtu ne po përdorim sensorë pa presion dhe temperaturë me pajisjen ESP 32 për të marrë të dhënat e temperaturës dhe lagështisë. Ne po i dërgojmë të dhënat në UbiDots duke përdorur protokollin MQTT. MQTT ndjek një mekanizëm publikimi dhe abonimi më tepër se kërkesën dhe përgjigjen. Isshtë më e shpejtë dhe e besueshme se HTTP. Kjo funksionon si më poshtë.

  • Ne po përdorim Task Scheduler për të planifikuar detyrën si marrja e të dhënave nga sensorët, Publikimi i leximeve të sensorëve, Abonimi në temën MQTT.
  • Së pari, përfshini skedarët e titullit të Task Scheduler, është shembulli dhe cakton detyrat.
  • Ne kemi planifikuar dy detyra që i referohen dy operacioneve të ndryshme të kontrollit.

#define _TASK_TIMEOUT#përfshijnë Scheduler ts; // --------- Detyrat ------------ // Detyra tSensor (4 * TASK_SECOND, TASK_FOREVER, & taskSensorCallback, & ts, false, NULL, & taskSensorDisable); Detyra tWiFi (10* TASK_SECOND, TASK_FOREVER, & taskWiFiCallback, & ts, false, NULL, & taskWiFiDisable);

  • Detyra 1 është për të lexuar vlerën e sensorit kjo detyrë funksionon për 1 sekondë derisa të arrijë afatin prej 10 sekondash.
  • Kur Task1 arrin kohën e tij Ne jemi duke u lidhur me ndërmjetësin lokal Wifi dhe MQTT.
  • Tani Detyra 2 është aktivizuar dhe ne po e çaktivizojmë Detyrën 1
  • Detyra 2 është për publikimin e të dhënave të sensorit tek ndërmjetësi UbiDots MQTT, kjo detyrë funksionon për 20 sekonda derisa të arrijë afatin prej 20 sekondash
  • Kur Task2 arrin kohën e vet, Detyra 1 aktivizohet përsëri dhe Task2 është çaktivizuar. Këtu përsëri, ne po marrim vlerën e përditësuar dhe procesi vazhdon.

Leximi i të dhënave të sensorit I2C

Ne po marrim një kornizë 29-bajtësh nga sensorët e temperaturës dhe lagështisë pa tela. Ky kuadër është manipuluar për të marrë të dhënat aktuale të temperaturës dhe lagështisë

nese (Serial1.e disponueshme ())

{data [0] = Serial1.read (); vonesa (k); nëse (të dhënat [0] == 0x7E) {ndërsa (! Serial1.disponueshme ()); për (i = 1; i <36; i ++) {të dhënat = Serial1.lex (); vonesa (1); } nëse (të dhënat [15] == 0x7F) /////// për të kontrolluar nëse të dhënat e marrjes janë të sakta {nëse (të dhënat [22] == 0x06) //////// sigurohuni që lloji i sensorit është e saktë {int cTemp = ((((të dhënat [24]) * 256) + të dhënat [25])); int16_t abs_pressure = (((((uint16_t) (të dhënat [26]) << 8) | të dhënat [27])*0.001); int rlt_pressure = ((((të dhënat [28]) * 256) + të dhënat [29]) * 0.001); int16_t delta_alt = (((((uint16_t) (të dhënat [30]) << 8) | të dhënat [31])*0.01); bateri notuese = ((të dhëna [18] * 256) + të dhëna [19]); tensioni notues = 0.00322 * bateri; Serial.print ("Numri i sensorit"); Serial.println (të dhënat [16]); Serial.print ("Lloji i sensorit"); Serial.println (të dhënat [22]); Serial.print ("Versioni i firmuerit"); Serial.println (të dhënat [17]); Serial.print ("Temperatura në Celsius:"); Serial.print (cTemp); Serial.println ("C"); Serial.print ("Presioni Absolut:"); Serial.println (abs_pressure); Serial.print ("mbar"); Serial.print ("Presioni Relativ:"); Serial.println (rlt_pressure); Serial.print ("mbar"); Serial.print ("Delta Altitude:"); Serial.println (delta_alt); Serial.print ("metër"); Serial.print ("Vlera ADC:"); Serial.println (bateri); Serial.print ("Tensioni i baterisë:"); Serial.print (tension); Serial.println ("\ n"); if (tension <1) {Serial.println ("Koha për të zëvendësuar baterinë"); }}} tjetër {për (i = 0; i <36; i ++) {Serial.print (të dhënat ); Serial.print (","); vonesa (1); }}}}

Lidhja me UbiDots MQTT API

Përfshini skedarin e kokës për procesin MQTT

#përfshi

përcaktoni variabla të tjerë për MQTT si emri i klientit, adresa e ndërmjetësit, ID -ja e shenjës

#define TOKEN "BBFF-*********************************" // Ubidots juaj TOKEN#përcakto MQTT_CLIENT_NAME "**************************"

char mqttBroker = "things.ubidots.com";

ngarkesa e karbonit [100]; temë char [150]; // krijoni variabël për të ruajtur tokenin ID të shenjës

Hapi 5: Publikimi i leximeve të sensorëve në UbiDots

Publikimi i leximeve të sensorit në UbiDots
Publikimi i leximeve të sensorit në UbiDots

Krijoni variabla për të ruajtur të dhëna të ndryshme të sensorit dhe krijoni një ndryshore char për të ruajtur temën

#define VARIABLE_LABEL_TEMPF "tempF" // Vlerësimi i etiketës së ndryshores #përcakto VARIABLE_LABEL_TEMPC "tempC" // Vlerësimi i etiketës së ndryshores #define VARIABLE_LABEL_BAT "bat" #përcakto VARIABLE_LABEL_HUMID "etiketën e lagësht" // Vlerësimi

tema char1 [100];

tema e kar22 [100]; tema char3 [100];

publikoni të dhënat në temën e përmendur MQTT, ngarkesa do të duket si {"tempc": {vlera: "tempData"}}

sprintf (tema1, "%s", ""); sprintf (tema1, "%s%s", "/v1.6/devices/", DEVICE_LABEL); sprintf (ngarkesa, "%s", ""); // Pastron sprint -in e ngarkesës (ngarkesa, "{"%s / ":", VARIABLE_LABEL_TEMPC); // Shton vlerën sprintf (ngarkesa, "%s {" vlera / ":%s}", ngarkesa, str_cTemp); // Shton vlerën sprintf (ngarkesa, "%s}", ngarkesa); // Mbyll kllapat e fjalorit Serial.println (ngarkesa); Serial.println (client.publish (topic1, payload)? "Published": "notpublished"); // Bëni të njëjtën gjë edhe për tema të tjera

client.publish () publikon të dhënat në UbiDots

Hapi 6: Vizualizimi i të dhënave

Vizualizimi i të dhënave
Vizualizimi i të dhënave
  • Shkoni te Ubidots dhe Hyni në llogarinë tuaj.
  • Shkoni te Paneli i Kontrollit nga skeda e të dhënave e shënuar në krye.
  • Tani klikoni ikonën "+" për të shtuar widget -et e reja.
  • Zgjidhni një widget nga lista dhe shtoni një ndryshore dhe pajisje.
  • Të dhënat e sensorit mund të vizualizohen në pult duke përdorur pajisje të ndryshme.

Hapi 7: Kodi i përgjithshëm

Kodi Over për HTML dhe ESP32 mund të gjendet në këtë depo GitHub.

Kredite

  • ncd ESP32 bordi i shpërthimit.
  • ncd Sensorë Presioni dhe Temperature pa tela
  • pubsubclient
  • UbiDots
  • Programi i detyrave

Recommended: