Innehållsförteckning:
- Steg 1: Specifikationer för hårdvara och programvara
- Steg 2: Trådlösa tryck- och temperatursensorer
- Steg 3: Ansluter till WiFi
- Steg 4: Konfigurera UbiDots på ESP32
- Steg 5: Publicera sensoravläsningar till UbiDots
- Steg 6: Visualisera data
- Steg 7: Övergripande kod
Video: Publicera trådlös trycksensordata med hjälp av MQTT: 7 steg
2024 Författare: John Day | [email protected]. Senast ändrad: 2024-01-30 12:45
ESP32 ochESP 8266 är mycket välkända SoC inom IoT -området. Dessa är en slags välsignelse för IoT -projekten. ESP 32 är en enhet med integrerad WiFi och BLE. Ge bara dina SSID, lösenord och IP -konfigurationer och integrera sakerna i molnet. Här i denna instruerbara, Vi kommer att begrunda några av de grundläggande termerna för IoT som IoT -plattform, MQTT, Captive portaler etc. Så låt oss gå igenom det
- IoT -arkitekturen i mycket enkla ord består av en inbäddad enhet och IoT -plattform för att placera enheten i molnet. Här använder vi UbiDots IoT -plattform för att visualisera sensordata.
- Hantera IP -inställningar och användaruppgifter kan vara en huvudvärk för användaren. Vad händer om användaren vill ändra WiFi -uppgifterna? Vad händer om användaren vill ändra DHCP/statiska IP -inställningar? Att blinka ESP32 varje gång är inte pålitligt och inte ens lösningen på dessa problem. Så vi kommer att gå igenom den fångna portalen för att spara WiFi -uppgifterna och andra konfigurationer.
- MQTT blir nu en mycket vanlig term i IoT -världen. den har överträffat begäran och svar (HTTP) från Publicera och prenumerera på grund av den snabba, robusta och smala arkitekturen.
Här i denna instruerbara kommer vi att demonstrera.
- Ge WiFi och MQTT -referenser med Captive Portal.
- Publicera och prenumerera på flera sensordata till UbiDots.
- Läser sensordata från trådlös tryck- och temperatursensor
- Hosta ett webbformulär från ESP32.
- Läsa och skriva från SPIFFS ESP32.
Steg 1: Specifikationer för hårdvara och programvara
Hårdvaruspecifikation
- ESP32 WiFi/BLE
- Trådlös tryck- och temperatursensor
Programvaruspecifikation
- Arduino IDE
- XCTU
- Labview Utility
Steg 2: Trådlösa tryck- och temperatursensorer
Funktioner
- Industriell kvalitet sensor lång räckvidd trådlös trycksensor
- Arbetsområde 0 till 14000 mbar -40 ° till +85 ° C (-40 ° till 185 ° F)
- Konfigurerbar intern beräkning Tryckupplösning 0,012 till 0,065 mbar
- Konfigurerbar intern beräkningstemperatur Upplösning 0,002 till 0,012 ° C
- Noggrannhet ± 2,5 mbar, ± 2 ° C
- Absolut tryck, relativ tryck och relativ höjdförändringsutgång
- 2 Mile-of-Sight Range med inbyggd antenn
- Överlägsen LOS-räckvidd på upp till 28 Miles med High-gain-antenner
- Gränssnitt till Raspberry Pi, Microsoft® Azure®, Arduino och mer
- Trådlöst nätverk med DigiMesh®
Konfigurera trådlös tryck- och temperatursensor med Labview Utility och XCTU
Sensorn körs i två lägen
- Konfigurationsläge: Konfigurera pan -ID, fördröjning, antal försök etc. Mer om detta ligger utanför räckvidden för denna instruerbara och kommer att förklaras i nästa instruerbara.
- Körläge: Vi kör enheten i körläge. Och för att analysera detta värde använder vi Labview Utility
Denna Labview UI visar värdena i fina grafer. Den visar både aktuella och tidigare värden. Du kan gå till den här länken för att ladda ner Labview UI. klicka på Kör -ikonen från målsidans meny för att gå till körläge.
Steg 3: Ansluter till WiFi
Vi använder portalen för att spara WiFi -uppgifterna och för att sväva genom IP -inställningarna. För en detaljerad introduktion på den fångna portalen kan du gå igenom följande instruerbara.
Den fångade portalen ger oss möjlighet att välja mellan statiska och DHCP -inställningar. Ange bara autentiseringsuppgifterna som statisk IP, nätmask, gateway och Wireless Sensor Gateway kommer att konfigureras på den IP: n.
En webbsida är värd där en lista som visar tillgängliga WiFi -nätverk och där RSSI. Välj WiFi -nätverket och lösenordet och skriv in. Uppgifterna sparas i EEPROM och IP -inställningen sparas i SPIFFS. Mer om detta finns i denna instruerbara.
Steg 4: Konfigurera UbiDots på ESP32
Här använder vi trådlösa tryck- och temperatursensorer med ESP 32 -enheten för att få data om temperatur och luftfuktighet. Vi skickar data till UbiDots med MQTT -protokollet. MQTT följer en publicerings- och prenumerationsmekanism snarare den begäran och svaret. Det är snabbare och pålitligare än HTTP. Detta fungerar enligt följande.
- Vi använder Task Scheduler för att schemalägga uppgiften som att hämta data från sensorer, publicera sensoravläsningarna, prenumerera på MQTT -ämne.
- Inkludera först rubrikfilerna för Task Scheduler, det är instans och schemalägger uppgifterna.
- Vi har planerat två uppgifter som avser två olika kontrolloperationer.
#define _TASK_TIMEOUT#include Scheduler ts; // --------- Uppgifter ------------ // Uppgift tSensor (4 * TASK_SECOND, TASK_FOREVER, & taskSensorCallback, & ts, false, NULL, & taskSensorDisable); Task tWiFi (10* TASK_SECOND, TASK_FOREVER, & taskWiFiCallback, & ts, false, NULL, & taskWiFiDisable);
- Uppgift 1 är för avläsning av sensorvärdet, den här uppgiften körs i 1 sekund tills den når timeout på 10 sekunder.
- När uppgiften1 når sin tid, ansluter vi till lokal Wifi- och MQTT -mäklare.
- Nu är uppgift 2 aktiverad och vi inaktiverar uppgift 1
- Uppgift 2 är för att publicera sensordata till UbiDots MQTT -mäklare, den här uppgiften körs i 20 sekunder tills den når timeout på 20 sekunder
- När uppgift 2 når sin timeout är uppgift 1 aktiverad igen och uppgift 2 inaktiverad. Även här får vi det uppdaterade värdet och processen fortsätter.
Läser av I2C -sensordata
Vi får en ram på 29 byte från trådlösa temperatur- och fuktsensorer. Denna ram manipuleras för att få den faktiska temperaturen och luftfuktighetsdata
if (Serial1.available ())
{data [0] = Serial1.read (); fördröjning (k); if (data [0] == 0x7E) {while (! Serial1.available ()); för (i = 1; i <36; i ++) {data = Serial1.read (); fördröjning (1); } if (data [15] == 0x7F) /////// för att kontrollera om mottagna data är korrekta {if (data [22] == 0x06) //////// se till att sensortypen är korrekt {int cTemp = ((((data [24]) * 256) + data [25])); int16_t abs_pressure = ((((uint16_t) (data [26]) << 8) | data [27])*0,001); int rlt_pressure = ((((data [28]) * 256) + data [29]) * 0,001); int16_t delta_alt = ((((uint16_t) (data [30]) << 8) | data [31])*0,01); flottörbatteri = ((data [18] * 256) + data [19]); flottörspänning = 0,00322 * batteri; Serial.print ("Sensornummer"); Serial.println (data [16]); Serial.print ("Sensortyp"); Serial.println (data [22]); Serial.print ("firmwareversion"); Serial.println (data [17]); Serial.print ("Temperatur i Celsius:"); Serial.print (cTemp); Serial.println ("C"); Serial.print ("Absolut tryck:"); Serial.println (abs_pressure); Serial.print ("mbar"); Serial.print ("Relativt tryck:"); Serial.println (rlt_pressure); Serial.print ("mbar"); Serial.print ("Delta Altitude:"); Serial.println (delta_alt); Serial.print ("mätare"); Serial.print ("ADC -värde:"); Serial.println (batteri); Serial.print ("Batterispänning:"); Serial.print (spänning); Serial.println ("\ n"); if (spänning <1) {Serial.println ("Dags att byta batteri"); }}} annat {för (i = 0; i <36; i ++) {Serial.print (data ); Serial.print (","); fördröjning (1); }}}}
Ansluter till UbiDots MQTT API
Inkludera rubrikfilen för MQTT -processen
#omfatta
definiera andra variabler för MQTT som klientnamn, mäklaradress, token -ID
#define TOKEN "BBFF-************************************" // Dina Ubidots TOKEN#definiera MQTT_CLIENT_NAME "****************************"
char mqttBroker = "things.ubidots.com";
röding nyttolast [100]; röding ämne [150]; // skapa variabel för att lagra token ID toke
Steg 5: Publicera sensoravläsningar till UbiDots
Skapa variabler för att lagra olika sensordata och skapa en char -variabel för att lagra ämne
#define VARIABLE_LABEL_TEMPF "tempF" // Utvärdera variabeln etikett #definiera VARIABLE_LABEL_TEMPC "tempC" // Tilldela variabeln etikett #define VARIABLE_LABEL_BAT "bat" #define VARIABLE_LABEL_HUMID "variabel" //
char topic1 [100];
char topic2 [100]; char topic3 [100];
publicera data till det nämnda MQTT -ämnet nyttolasten kommer att se ut som {"tempc": {value: "tempData"}}
sprintf (topic1, "%s", ""); sprintf (topic1, "%s%s", "/v1.6/devices/", DEVICE_LABEL); sprintf (nyttolast, "%s", ""); // Rensar nyttolasten sprintf (nyttolast, "{"%s / ":", VARIABLE_LABEL_TEMPC); // Lägger till värdet sprintf (nyttolast, "%s {" värde / ":%s}", nyttolast, str_cTemp); // Lägger till värdet sprintf (nyttolast, "%s}", nyttolast); // Stänger ordlistans parenteser Serial.println (nyttolast); Serial.println (client.publish (topic1, nyttolast)? "Publicerad": "notpublished"); // Gör samma sak för andra ämnen också
client.publish () publicerar data till UbiDots
Steg 6: Visualisera data
- Gå till Ubidots och logga in på ditt konto.
- Navigera till instrumentpanelen från fliken Data ovan.
- Klicka nu på "+" -ikonen för att lägga till de nya widgetarna.
- Välj en widget från listan och lägg till en variabel och enheter.
- Sensordata kan visualiseras på instrumentpanelen med hjälp av olika widgets.
Steg 7: Övergripande kod
Över -koden för HTML och ESP32 finns i detta GitHub -arkiv.
Poäng
- ncd ESP32 breakout board.
- ncd trådlösa tryck- och temperatursensorer
- pubsubclient
- UbiDots
- Schemaläggaren
Rekommenderad:
Trådlös vibrations- och temperatursensordata till MySQL med hjälp av Node-RED: 40 steg
Trådlös vibrations- och temperatursensordata till MySQL med hjälp av Node-RED: Presentation av NCD: s Long Range IoT Industrial trådlösa vibrations- och temperatursensor, med upp till 2 mils intervall användning av en trådlös nätverksstruktur. Denna enhet innehåller en precisions 16-bitars vibrations- och temperaturgivare och
Skicka data om trådlös vibration och temperatur till Google Sheets med hjälp av Node-RED: 37 steg
Skicka data om trådlös vibration och temperatur till Google Sheets med hjälp av Node-RED: Introduktion till NCD: s Long Range IoT Industrial trådlösa vibrations- och temperatursensor, med upp till 2 mils intervall användning av en trådlös nätverksstruktur. Denna enhet innehåller en precisions 16-bitars vibrations- och temperaturgivare och
Trådlös Arduino -robot med HC12 trådlös modul: 7 steg
Trådlös Arduino -robot som använder HC12 trådlös modul: Hej killar, välkommen tillbaka. I mitt förra inlägg förklarade jag vad en H Bridge Circuit är, L293D motorförare IC, piggybacking L293D Motorförare IC för att köra högströmsmotordrivrutiner och hur du kan designa och göra din egen L293D -motorförarkort,
Skapa e-postvarningar för NCD trådlös temperatur- och fuktighetssensor med hjälp av nodrött: 22 steg
Skapa e-postvarningar för NCD trådlös temperatur- och luftfuktighetssensor med hjälp av Node-Red: Vi använder här NCD: s temperatur- och fuktighetssensor, men stegen förblir lika för någon av ncd-produkterna, så om du har andra trådlösa ncd-sensorer, upplev gratis observera bredvid. Genom att stoppa den här texten måste du
Trådlös kommunikation med hjälp av billiga 433MHz RF -moduler och Pic -mikrokontroller. Del 2: 4 steg (med bilder)
Trådlös kommunikation med hjälp av billiga 433MHz RF -moduler och Pic -mikrokontroller. Del 2: På den första delen av denna instruerbara, visade jag hur man programmerar en PIC12F1822 med MPLAB IDE och XC8 -kompilator, för att skicka en enkel sträng trådlöst med billiga TX/RX 433MHz -moduler. Mottagarmodulen var ansluten via en USB till UART TTL kabelannons