Innholdsfortegnelse:
- Trinn 1: Spesifikasjon for maskinvare og programvare
- Trinn 2: Opprette en Captive Portal
- Trinn 3: Tilbyr WiFi og UbiDots legitimasjon
- Trinn 4: Publisering av sensoravlesninger til UbiDots
- Trinn 5: Visualisering av dataene
- Trinn 6: Samlet kode
Video: UbiDots-Koble til en ESP32 og publisere flere sensordata: 6 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øse temperatur- og fuktighetssensorer.
- Hosting av et webskjema fra ESP32.
- Lese og skrive fra SPIFFS ESP32.
Trinn 1: Spesifikasjon for maskinvare og programvare
- ESP32 WiFi/BLE
- Trådløs temperatur- og fuktighetssensor
Programvarespesifikasjon
Arduino IDE
Trinn 2: Opprette en Captive Portal
En fanget portal er en webside som vises for nylig tilkoblede brukere før de får bredere tilgang til nettverksressurser. Her serverer vi tre nettsider for å velge mellom DHCP og statiske IP -innstillinger. vi kan definere IP -adressen til ESP på to måter.
- DHCP IP-adresse- det er en måte å dynamisk tildele IP-adressen til enheten. ESPs standard IP -adresse er 192.168.4.1
- Den statiske IP-adressen- tilordne en permanent IP-adresse til vår nettverksenhet. For å gi den statiske IP -adressen til enheten trenger vi å definere IP -adressen, gateway -adressen og nettverksmasken.
Den første nettsiden er hostet på 192.168.1.77. Her er brukeren utstyrt med radioknappene for å velge mellom innstillinger for DHCP og statisk IP. På den neste nettsiden må vi oppgi IP -relatert informasjon for å fortsette videre.
HTML -kode
HTML -koden for nettsider finnes i dette Github -depotet. Du kan bruke hvilken som helst IDE eller tekstredigerer som Sublime eller notepad ++ for å lage HTML -websider.
- Lag først en HTML -webside som inneholder to alternativknapper for å velge mellom DHCP og statisk IP -innstilling.
- Lag nå knappen for å sende inn svaret ditt
- Gi et navn til alternativknappene.
- ESP -webserverklassen tar disse navnene som argumenter og får svaret fra radioknappene ved hjelp av disse argumentene
- Sett inn en "SEND" -knapp for å sende svaret til enheten. På de andre nettsidene har vi tekstbokser.
- Gi navneverdien og inndatatypen til tekstboksen, og legg til en send -knapp for å "SEND" send inn svaret.
- Lag en RESET -knapp for å tilbakestille innholdet i tekstfeltet.
Trinn 3: Tilbyr WiFi og UbiDots legitimasjon
Hovedproblemet oppstår når du administrerer Wi -Fi -legitimasjonen. Selv om vi har WiFiMulti -bibliotek for det hvor vi kan gi flere SSID -er og passord til enheten, og enheten vil koble seg til det tilgjengelige nettverket. Men hva om det tilgjengelige nettverket ikke er i WiFiMulti -listen. Å blinke ESP32 -enheten hele tiden er ikke en pålitelig løsning.
For å løse dette problemet, er vi vert for en webside der brukeren kan sende inn SSID og passord for det tilgjengelige nettverket. Det fungerer som følger.
- Nettsiden er lagret på den statiske IP- eller DHCP -IP -en som brukeren velger fra portalen
- Denne websiden inneholder tekstfelt for å angi SSID, passord og UBIDOTS -token -ID for å koble enheten til UbiDots.
- Skriv inn SSID og passord for din lokale WiFi i inndatafeltene, Skriv inn UbiDots token -ID og skriv inn SEND
- Disse legitimasjonene lagres i ESP32s EEPROM
- Etter 60 sekunder kobler enheten seg automatisk fra AP
- Neste gang du slår på enheten, trenger ikke brukeren å følge denne prosedyren. Enheten vil automatisk hente brukeropplysningene fra EEPROM og fortsette med å publisere sensoravlesningene til UbiDots.
Trinn 4: Publisering av sensoravlesninger til UbiDots
Her bruker vi trådløse temperatur- og fuktighetssensorer 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#inkluderer
Planlegger 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å faktiske data om temperatur og fuktighet
uint8_t data [29];
data [0] = Serial1.read (); forsinkelse (k); // chck for startbyte hvis (data [0] == 0x7E) {while (! Serial1.available ()); for (i = 1; i <29; i ++) {data = Serial1.read (); forsinkelse (1); } if (data [15] == 0x7F) /////// for å sjekke om mottatte data er riktige {if (data [22] == 1) //////// kontroller sensortypen er korrekt {
fuktighet = ((((data [24]) * 256) + data [25]) /100,0); fuktighet /=10,0; cTempint = (((uint16_t) (data [26]) << 8) | data [27]); cTemp = (float) cTempint /100.0; cTemp /= 10,0; fTemp = cTemp * 1,8 + 32; fTemp /= 10,0; batteri = tilfeldig (100, 327); spenning = batteri/100; nodeId = data [16];}
Koble til UbiDots MQTT API
Inkluder overskriftsfilen for MQTT -prosessen
#inkludere
definere andre variabler for MQTT som klientnavn, megleradresse, token ID (Vi henter token ID fra EEPROM)
#define MQTT_CLIENT_NAME "ClientVBShightime123"
char mqttBroker = "things.ubidots.com";
røye nyttelast [100]; røye emne [150];
// opprett variabel for å lagre token ID
String tokenId;
Lag variabler for å lagre forskjellige sensordata og lag en char -variabel for å lagre emne
#define VARIABLE_LABEL_TEMPF "tempF" // Vurder variabeletiketten #definer 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 5: 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 6: Samlet kode
Over -koden for HTML og ESP32 finnes i dette GitHub -depotet.
Studiepoeng
- ncd ESP32 breakout board.
- ncd Trådløse temperatur- og fuktighetssensorer.
- pubsubclient
- UbiDots
- Oppgaveplanlegger
Anbefalt:
Arduino Slik kobler du til flere servomotorer - PCA9685 Opplæring: 6 trinn
Arduino Slik kobler du til flere servomotorer - PCA9685 Opplæring: I denne opplæringen lærer vi hvordan du kobler flere servomotorer med PCA9685 -modul og arduino.PCA9685 -modul er veldig bra når du trenger å koble til flere motorer, du kan lese mer om det her https : //www.adafruit.com/product/815 Se Vi
Hvordan kode og publisere Matlab 2016b til Word (nybegynnerguide): 4 trinn
Hvordan kode og publisere Matlab 2016b til Word (nybegynnerguide): Matlab er et språk med høy ytelse som brukes til å beregne tekniske resultater. Den har muligheten til å integrere grafikk, beregninger og programmering på en brukervennlig måte. Med dette programmet kan brukeren publisere problemer og løsninger
Se sensordata etter LCD -skjerm: 5 trinn
Se sensordata etter LCD -skjerm: I dette prosjektet må vi se data fra 2 sensorer på en skjerm med Arduino. Søknaden for dette prosjektet overvåker fuktighet og temperatur i et drivhus
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
Lagre Arduino Sensordata til MYsql ved hjelp av prosessering: 6 trinn
Lagre Arduino Sensordata til MYsql ved bruk av prosessering: Ærlig talt er det vanskelig å lagre Arduino -data direkte til MySQL, slik at jeg i avhengighet av Arduino IDE brukte Processing IDE som ligner på Arduino IDE, men med mye forskjellig bruk, og du kan kode det inn java.Merk: ikke kjør Arduino seriell moni