INHOUDSOPGAWE:

Publisering van draadlose druksensordata met behulp van MQTT: 7 stappe
Publisering van draadlose druksensordata met behulp van MQTT: 7 stappe

Video: Publisering van draadlose druksensordata met behulp van MQTT: 7 stappe

Video: Publisering van draadlose druksensordata met behulp van MQTT: 7 stappe
Video: SUPPRESSED Technologies, Their Inventors ELIMINATED 2024, Desember
Anonim
Publisering van draadlose druksensordata met behulp van MQTT
Publisering van draadlose druksensordata met behulp van MQTT

ESP32 en ESP 8266 is baie bekend op die gebied van IoT. Dit is 'n soort seën vir die IoT -projekte. ESP 32 is 'n toestel met geïntegreerde WiFi en BLE. Gee net u SSID, wagwoord en IP -konfigurasies en integreer die dinge in die wolk. Hier in hierdie instruksies, sal ons nadink oor 'n paar van die basiese terme van IoT, soos IoT -platform, MQTT, Captive -portale, ens. Laat ons dus daardeur gaan

  • Die IoT -argitektuur bestaan in baie eenvoudige woorde uit 'n ingeboude toestel en IoT -platform om die toestel in die wolk te plaas. Hier gebruik ons UbiDots IoT -platform om die sensordata te visualiseer.
  • Die bestuur van die IP -instellings en gebruikersbewyse kan 'n hoofpyn vir die gebruiker wees. Wat as die gebruiker die WiFi -geloofsbriewe wil verander? Wat as die gebruiker die DHCP/Statiese IP -instellings wil verander? Elke keer dat die ESP32 flits, is nie betroubaar nie, en selfs nie die oplossing vir hierdie probleme nie. Ons gaan dus deur die gevange portaal om die WiFi -geloofsbriewe en ander konfigurasies te stoor.
  • MQTT word nou 'n baie algemene term in die IoT -wêreld. dit het die versoek en antwoorde (HTTP) deur Publiseer en inteken oortref vanweë die vinnige, robuuste en skraal argitektuur.

Hier in hierdie instruksies gaan ons demonstreer.

  • Gee WiFi- en MQTT -geloofsbriewe met Captive Portal.
  • Publiseer en teken op veelvuldige sensordata op UbiDots in.
  • Lees die sensordata van die draadlose druk- en temperatuursensor
  • Die aanbied van 'n webvorm vanaf die ESP32.
  • Lees en skryf van SPIFFS ESP32.

Stap 1: Spesifikasie van hardeware en sagteware

Hardeware spesifikasie

  • ESP32 WiFi/BLE
  • Draadlose druk- en temperatuursensor

Sagteware spesifikasie

  • Arduino IDE
  • XCTU
  • Labview Utility

Stap 2: Draadlose druk- en temperatuursensors

Draadlose druk- en temperatuursensors
Draadlose druk- en temperatuursensors
Draadlose druk- en temperatuursensors
Draadlose druk- en temperatuursensors
Draadlose druk- en temperatuursensors
Draadlose druk- en temperatuursensors

Kenmerke

  • Industriële graad sensor langafstand draadlose druktemperatuur sensor
  • Bedryfsbereik 0 tot 14000 mbar -40 ° tot +85 ° C (-40 ° tot 185 ° F)
  • Instelbare interne berekening Drukresolusie 0,012 tot 0,065 mbar
  • Instelbare interne berekeningstemperatuurresolusie 0,002 tot 0,012 ° C
  • Akkuraatheid ± 2,5 mbar, ± 2 ° C
  • Uitsette van absolute druk, relatiewe druk en relatiewe hoogteverandering
  • 2-myl bereiklyn met siglyn met ingeboude antenne
  • Superieure LOS-reeks tot 28 myl met hoë-wins antennes
  • Koppelvlak met Raspberry Pi, Microsoft® Azure®, Arduino en meer
  • Draadlose netwerknetwerk met DigiMesh®

Draadlose druk- en temperatuursensor instel met behulp van Labview Utility en XCTU

Die sensor werk in twee modusse

  • Konfigurasiemodus: Stel die pan -ID, vertraging, aantal herproewe, ens in. Meer hieroor is buite die omvang van hierdie instruksies en sal in die volgende instruksies verduidelik word.
  • Uitvoermodus: ons gebruik die toestel in die loopmodus. En om hierdie waarde te ontleed, gebruik ons die Labview Utility

Hierdie Labview UI toon die waardes in mooi grafieke. Dit toon die huidige sowel as die vorige waardes. U kan na hierdie skakel gaan om die Labview UI af te laai. Klik op die ikoon Uitvoering in die menu van die bestemmingsbladsy om na die uitvoermodus te gaan.

Stap 3: Koppel aan WiFi

Koppel aan WiFi
Koppel aan WiFi
Koppel aan WiFi
Koppel aan WiFi

Ons gebruik die gevange portaal om die WiFi -geloofsbriewe te stoor en deur die IP -instellings te beweeg. Vir 'n gedetailleerde inleiding op die portaal, kan u die volgende instruksies deurlees.

Die gevange portaal gee ons die opsie om te kies tussen statiese en DHCP -instellings. Voer net die geloofsbriewe in, soos Static IP, Subnet Mask, gateway en die Wireless Sensor Gateway sal op die IP gekonfigureer word.

'N Webblad word aangebied met 'n lys met beskikbare WiFi -netwerke en daar RSSI. Kies die WiFi -netwerk en wagwoord en voer in. Die geloofsbriewe word in die EEPROM gestoor en die IP -instelling word in die SPIFFS gestoor. Meer hieroor kan gevind word in hierdie instruksies.

Stap 4: Die opstel van UbiDots op ESP32

Stel UbiDots op ESP32 op
Stel UbiDots op ESP32 op

Hier gebruik ons draadlose druk- en temperatuursensors met die ESP 32 -toestel om die temperatuur- en humiditeitsdata te kry. Ons stuur die data na UbiDots met behulp van die MQTT -protokol. MQTT volg 'n publiseer- en intekeningsmeganisme eerder as die versoek en antwoord. Dit is vinniger en betroubaarder as HTTP. Dit werk soos volg.

  • Ons maak gebruik van Taakplanner om die taak te skeduleer, soos om data van sensors af te haal, die sensorlesings te publiseer, in te teken op die MQTT -onderwerp.
  • Sluit eerstens die koptekstlêers van die taakplanner in, die instansie daarvan en skeduleer die take.
  • Ons het twee take geskeduleer wat verwys na twee verskillende beheerbedrywighede.

#define _TASK_TIMEOUT#sluit skeduler ts in; // --------- Take ------------ // Taak tSensor (4 * TASK_SECOND, TASK_FOREVER, & taskSensorCallback, & ts, false, NULL, & taskSensorDisable); Taak tWiFi (10* TASK_SECOND, TASK_FOREVER, & taskWiFiCallback, & ts, false, NULL, & taskWiFiDisable);

  • Taak 1 is vir die lees van die sensorwaarde wat hierdie taak vir 1 sekonde uitvoer totdat dit die tydsduur van 10 sekondes bereik.
  • As die taak1 sy tyd bereik het, maak ons verbinding met die plaaslike Wifi- en MQTT -makelaar.
  • Nou is taak 2 geaktiveer en skakel ons taak 1 uit
  • Taak 2 is om die sensorgegevens aan UbiDots MQTT -makelaar te publiseer, hierdie taak duur 20 sekondes totdat dit 'n tydsverloop van 20 sekondes bereik
  • As die taak 2 sy tyd bereik het, word taak 1 weer aangeskakel en taak 2 is gedeaktiveer. Weereens kry ons die opgedateerde waarde en die proses gaan voort.

Lees die I2C -sensordata

Ons kry 'n raam van 29 byte van die draadlose sensors vir temperatuur en humiditeit. Hierdie raam word gemanipuleer om die werklike temperatuur- en humiditeitsdata te kry

as (Serial1.available ())

{data [0] = Serial1.read (); vertraging (k); if (data [0] == 0x7E) {terwyl (! Serial1.available ()); vir (i = 1; i <36; i ++) {data = Serial1.read (); vertraging (1); } if (data [15] == 0x7F) /////// om seker te maak of die gegewens korrek is {if (data [22] == 0x06) //////// maak seker dat die tipe sensor is is korrek {int cTemp = ((((data [24]) * 256) + data [25])); int16_t abs_druk = ((((uint16_t) (data [26]) << 8) | data [27])*0.001); int rlt_druk = ((((data [28]) * 256) + data [29]) * 0.001); int16_t delta_alt = ((((uint16_t) (data [30]) << 8) | data [31])*0,01); float battery = ((data [18] * 256) + data [19]); dryfspanning = 0.00322 * battery; Serial.print ("Sensornommer"); Serial.println (data [16]); Serial.print ("Sensortipe"); Serial.println (data [22]); Serial.print ("Firmware -weergawe"); Serial.println (data [17]); Serial.print ("Temperatuur in Celsius:"); Serial.print (cTemp); Serial.println ("C"); Serial.print ("Absolute druk:"); Serial.println (abs_druk); Serial.print ("mbar"); Serial.print ("Relatiewe druk:"); Serial.println (rlt_pressure); Serial.print ("mbar"); Serial.print ("Delta Hoogte:"); Serial.println (delta_alt); Serial.print ("meter"); Serial.print ("ADC -waarde:"); Serial.println (battery); Serial.print ("Batteryspanning:"); Reeks.afdruk (spanning); Serial.println ("\ n"); if (spanning <1) {Serial.println ("Tyd om die battery te vervang"); }}} anders {vir (i = 0; i <36; i ++) {Serial.print (data ); Serial.print (","); vertraging (1); }}}}

Koppel aan UbiDots MQTT API

Sluit die koplêer vir die MQTT -proses in

#insluit

definieer ander veranderlikes vir MQTT soos kliëntnaam, makelaarsadres, die token -ID

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

char mqttBroker = "things.ubidots.com";

char -vrag [100]; char onderwerp [150]; // skep 'n veranderlike om die token -ID -token te stoor

Stap 5: Publiseer sensorlesings aan UbiDots

Publiseer sensorlesings aan UbiDots
Publiseer sensorlesings aan UbiDots

Skep veranderlikes om verskillende sensor data te stoor en skep 'n char veranderlike om onderwerp te stoor

#define VARIABLE_LABEL_TEMPF "tempF" // Die veranderlike etiket bepaal

char onderwerp1 [100];

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

publiseer die data na die genoemde MQTT -onderwerp, en die laai sal soos {"tempc": {value: "tempData"}} lyk

sprintf (topic1, "%s", ""); sprintf (topic1, "%s%s", "/v1.6/devices/", DEVICE_LABEL); sprintf (loonvrag, "%s", ""); // Maak die loonvrag sprintf skoon (laai, "{"%s / ":", VARIABLE_LABEL_TEMPC); // Voeg die waarde sprintf (payload, "%s {" value / ":%s}", payload, str_cTemp) by; // Voeg die waarde sprintf (payload, "%s}", payload) by; // Sluit die woordeboekhakies Serial.println (loonvrag); Serial.println (client.publish (topic1, payload)? "Gepubliseer": "niepubliseer"); // Doen dieselfde vir ander onderwerpe

client.publish () publiseer die data aan UbiDots

Stap 6: Visualisering van die data

Visualisering van die data
Visualisering van die data
  • Gaan na Ubidots en meld aan by u rekening.
  • Navigeer na die dashboard vanaf die blad Data bo -aan.
  • Klik nou op die "+" - ikoon om die nuwe widgets by te voeg.
  • Kies 'n widget uit die lys en voeg 'n veranderlike en toestelle by.
  • Die sensordata kan op die dashboard met behulp van verskillende widgets gevisualiseer word.

Stap 7: Algehele kode

Die Over -kode vir HTML en ESP32 kan gevind word in hierdie GitHub -bewaarplek.

Krediete

  • ncd ESP32 breakout board.
  • ncd draadlose druk- en temperatuursensors
  • kroegondernemer
  • UbiDots
  • Taak skeduleerder

Aanbeveel: