Innholdsfortegnelse:
- Trinn 1: Spesifikasjon for maskinvare og programvare
- Trinn 2: Trådløse trykk- og temperatursensorer
- Trinn 3: Koble til WiFi
- Trinn 4: Konfigurere UbiDots på ESP32
- Trinn 5: Publisering av sensoravlesninger til UbiDots
- Trinn 6: Visualisering av dataene
- Trinn 7: Samlet kode
Video: Publisering av trådløse trykksensordata ved hjelp av MQTT: 7 trinn
2024 Forfatter: John Day | [email protected]. Sist endret: 2024-01-30 11:23
ESP32 ogESP 8266 er veldig kjent SoC innen IoT. Dette er en slags velsignelse for IoT -prosjektene. ESP 32 er en enhet med integrert WiFi og BLE. Bare gi SSID, passord og IP -konfigurasjoner og integrer tingene i skyen. Her i denne instruksen vil vi tenke gjennom noen av de grunnleggende begrepene for IoT som IoT -plattform, MQTT, Captive -portaler etc. Så la oss gå gjennom det
- IoT -arkitekturen består i veldig enkle ord av en innebygd enhet og IoT -plattform for å sette enheten i skyen. Her bruker vi UbiDots IoT -plattform for å visualisere sensordata.
- Administrering av IP -innstillinger og brukerlegitimasjon kan være en hodepine for brukeren. Hva om brukeren vil endre WiFi -legitimasjonen? Hva om brukeren ønsker å bytte innstillinger for DHCP/statisk IP? Å blinke ESP32 hver gang er ikke pålitelig og ikke engang løsningen på disse problemene. Så vi går gjennom den fangede portalen for å lagre WiFi -legitimasjonen og andre konfigurasjoner.
- MQTT blir nå et veldig vanlig begrep i IoT -verdenen. den har overgått forespørsel og svar (HTTP) av Publiser og Abonner på grunn av den raske, robuste og slanke arkitekturen.
Her i denne instruksen skal vi demonstrere.
- Å gi WiFi og MQTT -legitimasjon ved hjelp av Captive Portal.
- Publisering og abonnement på flere sensordata til UbiDots.
- Lese sensordata fra trådløs trykk- og temperatursensor
- Hosting av et webskjema fra ESP32.
- Lese og skrive fra SPIFFS ESP32.
Trinn 1: Spesifikasjon for maskinvare og programvare
Maskinvarespesifikasjon
- ESP32 WiFi/BLE
- Trådløs trykk- og temperatursensor
Programvarespesifikasjon
- Arduino IDE
- XCTU
- Labview Utility
Trinn 2: Trådløse trykk- og temperatursensorer
Funksjoner
- Industriell karakter sensor lang rekkevidde trådløs trykktemperatursensor
- Driftsområde 0 til 14000 mbar -40 ° til +85 ° C (-40 ° til 185 ° F)
- Konfigurerbar intern beregning Trykkoppløsning 0,012 til 0,065 mbar
- Konfigurerbar intern beregningstemperaturoppløsning 0,002 til 0,012 ° C
- Nøyaktighet ± 2,5 mbar, ± 2 ° C
- Absolutt trykk, relativt trykk og relativ høydeendringsutgang
- 2 Mile Line-of-Sight Range med innebygd antenne
- Overlegen LOS-rekkevidde på opptil 28 Miles med høygevinstantenner
- Grensesnitt til Raspberry Pi, Microsoft® Azure®, Arduino og mer
- Trådløst nettverk ved bruk av DigiMesh®
Konfigurere trådløs trykk- og temperatursensor ved hjelp av Labview Utility og XCTU
Sensoren kjøres i to moduser
- Konfigurasjonsmodus: Konfigurer Pan -ID, forsinkelse, antall forsøk osv. Mer om dette er utenfor omfanget av denne instruksjonsboken og vil bli forklart i neste instruksjonsbaserte.
- Kjørmodus: Vi kjører enheten i Kjør -modus. Og for å analysere denne verdien bruker vi Labview Utility
Denne Labview UI viser verdiene i fine grafer. Den viser nåværende så vel som tidligere verdier. Du kan gå til denne lenken for å laste ned Labview UI. klikk på Kjør -ikonet fra landingssidemenyen for å gå til kjøremodus.
Trinn 3: Koble til WiFi
Vi bruker portalen for å lagre Wi -Fi -legitimasjonen og for å sveve gjennom IP -innstillingene. For en detaljert introduksjon på portalen, kan du gå gjennom følgende instrukser.
Den fangede portalen gir oss muligheten til å velge mellom statiske og DHCP -innstillinger. Bare skriv inn legitimasjonen som Statisk IP, Nettverksmaske, gateway og Wireless Sensor Gateway vil bli konfigurert på den IP -en.
En webside blir vert der en liste som viser tilgjengelige WiFi -nettverk og det RSSI. Velg WiFi -nettverket og passordet og skriv inn. Legitimasjonen lagres i EEPROM og IP -innstillingen lagres i SPIFFS. Mer om dette finner du i denne instruksjonsboken.
Trinn 4: Konfigurere UbiDots på ESP32
Her bruker vi trådløse trykk- og temperatursensorer med ESP 32 -enheten for å få data om temperatur og fuktighet. Vi sender dataene til UbiDots ved hjelp av MQTT -protokollen. MQTT følger en publiserings- og abonnementsmekanisme i stedet for forespørsel og svar. Det er raskere og pålitelig enn HTTP. Dette fungerer som følger.
- Vi bruker Task Scheduler for å planlegge oppgaven som å hente data fra sensorer, publisere sensoravlesningene, abonnere på MQTT -emne.
- Inkluder først oppgaveplanleggeroverskriftfilene, det er forekomst og planlegger oppgavene.
- Vi har planlagt to oppgaver som refererer til to forskjellige kontrolloperasjoner.
#define _TASK_TIMEOUT#include Scheduler ts; // --------- Oppgaver ------------ // Oppgave tSensor (4 * TASK_SECOND, TASK_FOREVER, & taskSensorCallback, & ts, false, NULL, & taskSensorDisable); Oppgave tWiFi (10* TASK_SECOND, TASK_FOREVER, & taskWiFiCallback, & ts, false, NULL, & taskWiFiDisable);
- Oppgave 1 er for å lese sensorverdien denne oppgaven kjører i 1 sekund til den når timeout på 10 sekunder.
- Når oppgave1 når sin tid, kobler vi til lokal Wifi- og MQTT -megler.
- Nå er oppgave 2 aktivert, og vi deaktiverer oppgave 1
- Oppgave 2 er for å publisere sensordata til UbiDots MQTT -megler, denne oppgaven løper i 20 sekunder til den når timeout på 20 sekunder
- Når oppgave 2 når sin timeout, er oppgave 1 aktivert igjen og oppgave 2 er deaktivert. Her får vi den oppdaterte verdien igjen, og prosessen fortsetter.
Lese I2C -sensordata
Vi får en 29-byte ramme fra de trådløse temperatur- og fuktighetssensorene. Denne rammen manipuleres for å få de faktiske temperatur- og fuktighetsdataene
hvis (Serial1.available ())
{data [0] = Serial1.read (); forsinkelse (k); if (data [0] == 0x7E) {while (! Serial1.available ()); for (i = 1; i <36; i ++) {data = Serial1.read (); forsinkelse (1); } if (data [15] == 0x7F) /////// for å sjekke om mottatte data er riktige {if (data [22] == 0x06) //////// kontroller sensortypen er riktig {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); flytebatteri = ((data [18] * 256) + data [19]); flytespenning = 0,00322 * batteri; Serial.print ("Sensornummer"); Serial.println (data [16]); Serial.print ("Sensortype"); Serial.println (data [22]); Serial.print ("Fastvareversjon"); Serial.println (data [17]); Serial.print ("Temperatur i Celsius:"); Serial.print (cTemp); Serial.println ("C"); Serial.print ("Absolutt trykk:"); Serial.println (abs_pressure); Serial.print ("mbar"); Serial.print ("Relativt trykk:"); Serial.println (rlt_pressure); Serial.print ("mbar"); Serial.print ("Delta Altitude:"); Serial.println (delta_alt); Serial.print ("meter"); Serial.print ("ADC -verdi:"); Serial.println (batteri); Serial.print ("Batterispenning:"); Serial.print (spenning); Serial.println ("\ n"); if (spenning <1) {Serial.println ("Tid til å bytte batteri"); }}} annet {for (i = 0; i <36; i ++) {Serial.print (data ); Serial.print (","); forsinkelse (1); }}}}
Koble til UbiDots MQTT API
Inkluder topptekstfilen for MQTT -prosessen
#inkludere
definere andre variabler for MQTT som klientnavn, megleradresse, token -ID
#define TOKEN "BBFF-***********************************" // Ubidots TOKEN#definere MQTT_CLIENT_NAME "****************************"
char mqttBroker = "things.ubidots.com";
røye nyttelast [100]; røye emne [150]; // opprett variabel for å lagre token ID toke
Trinn 5: Publisering av sensoravlesninger til UbiDots
Lag variabler for å lagre forskjellige sensordata og lag en char -variabel for å lagre emne
#define VARIABLE_LABEL_TEMPF "tempF" // Vurder variabeletiketten #definere VARIABLE_LABEL_TEMPC "tempC" // Assosier variabeletiketten #define VARIABLE_LABEL_BAT "bat" #define VARIABLE_LABEL_HUMID "variable" //
char topic1 [100];
røye topic2 [100]; røye topic3 [100];
publiser dataene til det nevnte MQTT -emnet, nyttelasten vil se ut som {"tempc": {value: "tempData"}}
sprintf (topic1, "%s", ""); sprintf (topic1, "%s%s", "/v1.6/devices/", DEVICE_LABEL); sprintf (nyttelast, "%s", ""); // Renser nyttelast sprintf (nyttelast, "{"%s / ":", VARIABLE_LABEL_TEMPC); // Legger til verdien sprintf (nyttelast, "%s {" verdi / ":%s}", nyttelast, str_cTemp); // Legger til verdien sprintf (nyttelast, "%s}", nyttelast); // Lukker ordbokens parenteser Serial.println (nyttelast); Serial.println (client.publish (topic1, nyttelast)? "Publisert": "ikkepublisert"); // Gjør det samme for andre temaer også
client.publish () publiserer dataene til UbiDots
Trinn 6: Visualisering av dataene
- Gå til Ubidots og logg inn på kontoen din.
- Naviger til oversikten fra kategorien Data som er oppført øverst.
- Klikk nå på "+" - ikonet for å legge til de nye widgetene.
- Velg en widget fra listen, og legg til en variabel og enheter.
- Sensordataene kan visualiseres på dashbordet ved hjelp av forskjellige widgets.
Trinn 7: Samlet kode
Over -koden for HTML og ESP32 finnes i dette GitHub -depotet.
Studiepoeng
- ncd ESP32 breakout board.
- ncd trådløse trykk- og temperatursensorer
- pubsubclient
- UbiDots
- Oppgaveplanlegger
Anbefalt:
DIY -- Hvordan lage en edderkopprobot som kan kontrolleres ved hjelp av smarttelefon ved hjelp av Arduino Uno: 6 trinn
DIY || Hvordan lage en edderkopprobot som kan kontrolleres ved hjelp av smarttelefon ved hjelp av Arduino Uno: Mens du lager en edderkopprobot, kan du lære så mange ting om robotikk. Som å lage roboter er både underholdende og utfordrende. I denne videoen skal vi vise deg hvordan du lager en Spider -robot, som vi kan bruke ved hjelp av smarttelefonen vår (Androi
Hvordan lage en drone ved hjelp av Arduino UNO - Lag en quadcopter ved hjelp av mikrokontroller: 8 trinn (med bilder)
Hvordan lage en drone ved hjelp av Arduino UNO | Lag en Quadcopter ved hjelp av mikrokontroller: Introduksjon Besøk min Youtube -kanal En Drone er en veldig dyr gadget (produkt) å kjøpe. I dette innlegget skal jeg diskutere hvordan jeg får det billig? Og hvordan kan du lage din egen slik til en billig pris … Vel, i India er alle materialer (motorer, ESCer
Strukturell helseovervåking av sivile infrastrukturer ved bruk av trådløse vibrasjonssensorer: 8 trinn
Strukturell helseovervåking av sivile infrastrukturer ved bruk av trådløse vibrasjonssensorer: Forringelsen av den gamle bygningen og sivil infrastruktur kan føre til dødelig og farlig situasjon. Den konstante overvåking av disse strukturene er obligatorisk. Strukturell helseovervåking er en ekstremt viktig metode for å evaluere
Visualisering av trådløse sensordata ved hjelp av Google -diagrammer: 6 trinn
Visualisering av trådløse sensordata ved hjelp av Google -diagrammer: Prediktiv analyse av maskinene er svært nødvendig for å minimere nedetid på maskinen. Regelmessig kontroll hjelper til med å øke maskinens driftstid og i sin tur øker dets feiltoleranse. Trådløs vibrasjon og temperatur sen
4 -veis trafikklyssystem ved bruk av 5 Arduinos og 5 NRF24L01 trådløse moduler: 7 trinn (med bilder)
4 -veis trafikklyssystem ved hjelp av 5 Arduinos og 5 NRF24L01 trådløse moduler: For en liten stund siden laget jeg en instruksjonsartikkel som beskriver et enkelt trafikklys på et brødbrett. Jeg har også laget en annen instruks som viser de grunnleggende rammene for bruk av en trådløs NRF24L01 modul. Dette fikk meg til å tenke! Det er ganske mange