
Innholdsfortegnelse:
2025 Forfatter: John Day | [email protected]. Sist endret: 2025-01-23 15:02

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
Jeg lagde en gammel CD -stasjon til Wifi -robot ved hjelp av Nodemcu, L298N Motor Drive og mange flere: 5 trinn

Jeg lagde en gammel CD -stasjon til Wifi -robot ved hjelp av Nodemcu, L298N Motor Drive og mange flere .: VX Robotics & Elektronikk til stede
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
Hvordan lage og sette inn en tabell og legge til flere kolonner og/eller rader i tabellen i Microsoft Office Word 2007: 11 trinn

Hvordan lage og sette inn en tabell og legge til flere kolonner og/eller rader i tabellen i Microsoft Office Word 2007: Har du noen gang hatt mye data du jobber med og tenkt for deg selv … " hvordan kan jeg få alt av disse dataene ser bedre ut og blir lettere å forstå? " I så fall kan en tabell i Microsoft Office Word 2007 være svaret ditt
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