Innholdsfortegnelse:

UbiDots-Koble til en ESP32 og publisere flere sensordata: 6 trinn
UbiDots-Koble til en ESP32 og publisere flere sensordata: 6 trinn

Video: UbiDots-Koble til en ESP32 og publisere flere sensordata: 6 trinn

Video: UbiDots-Koble til en ESP32 og publisere flere sensordata: 6 trinn
Video: Как к подключиться Firebase с участием Массачусетский технологический институт 2024, Juli
Anonim
UbiDots-Koble til en ESP32 og publisere flere sensordata
UbiDots-Koble til en ESP32 og publisere flere sensordata

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

Maskinvare- og programvarespesifikasjon
Maskinvare- og programvarespesifikasjon
  • ESP32 WiFi/BLE
  • Trådløs temperatur- og fuktighetssensor

Programvarespesifikasjon

Arduino IDE

Trinn 2: Opprette en Captive Portal

Opprette en Captive Portal
Opprette en Captive Portal
Opprette en Captive Portal
Opprette en Captive Portal
Opprette en Captive Portal
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

Tilbyr WiFi og UbiDots legitimasjon
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

Visualisering av dataene
Visualisering av dataene
Visualisering av dataene
Visualisering av dataene
Visualisering av dataene
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: