Indholdsfortegnelse:
- Trin 1: Specifikationer for hardware og software
- Trin 2: Oprettelse af en Captive Portal
- Trin 3: Tilvejebringelse af WiFi og UbiDots legitimationsoplysninger
- Trin 4: Publicering af sensoraflæsninger til UbiDots
- Trin 5: Visualisering af data
- Trin 6: Overordnet kode
Video: UbiDots-Tilslutning af en ESP32 og udgivelse af flere sensordata: 6 trin
2024 Forfatter: John Day | [email protected]. Sidst ændret: 2024-01-30 08:28
ESP32 ogESP 8266 er meget velkendte SoC inden for IoT. Disse er en slags velsignelse for IoT -projekterne. ESP 32 er en enhed med integreret WiFi og BLE. Bare giv dine SSID, adgangskode og IP -konfigurationer og integrer tingene i skyen. Her i denne instruktive vil vi overveje nogle af de grundlæggende vilkår for IoT som IoT -platform, MQTT, Captive -portaler osv. Så lad os gå igennem det
- IoT -arkitekturen består i meget enkle ord af en integreret enhed og IoT -platform til at sætte enheden i skyen. Her bruger vi UbiDots IoT -platform til at visualisere sensordata.
- Håndtering af IP -indstillinger og brugeroplysninger kan være en hovedpine for brugeren. Hvad hvis brugeren vil ændre WiFi -legitimationsoplysningerne? Hvad hvis brugeren vil ændre DHCP/statisk IP -indstillinger? At blinke ESP32 hver gang er ikke pålideligt og ikke engang løsningen på disse problemer. Så vi går gennem den fangede portal for at gemme WiFi -legitimationsoplysninger og andre konfigurationer.
- MQTT er nu ved at blive et meget almindeligt begreb i IoT -verdenen. det har overgået anmodning og svar (HTTP) fra Publish and Subscribe på grund af den hurtige, robuste og slanke arkitektur.
Her i denne instruktive vil vi demonstrere.
- Giver WiFi og MQTT -legitimationsoplysninger ved hjælp af Captive Portal.
- Publicering og abonnement på flere sensordata til UbiDots.
- Læsning af sensordata fra trådløse temperatur- og fugtighedsfølere.
- Hosting af en webformular fra ESP32.
- Læsning og skrivning fra SPIFFS ESP32.
Trin 1: Specifikationer for hardware og software
- ESP32 WiFi/BLE
- Trådløs temperatur- og luftfugtighedssensor
Softwarespecifikation
Arduino IDE
Trin 2: Oprettelse af en Captive Portal
En fanget portal er en webside, der vises for nyligt tilsluttede brugere, før de får bredere adgang til netværksressourcer. Her serverer vi tre websider at vælge mellem DHCP og statisk IP -indstillinger. vi kan definere IP -adressen til ESP på to måder.
- DHCP IP-adresse- det er en måde at dynamisk tildele IP-adressen til enheden. ESP's standard IP -adresse er 192.168.4.1
- Den statiske IP-adresse- tildeling af en permanent IP-adresse til vores netværksenhed. For at levere den statiske IP til enheden skal vi definere IP -adressen, gateway -adressen og undernetmasken.
Den første webside hostes på 192.168.1.77. Her er brugeren udstyret med radioknapperne for at vælge mellem DHCP og statisk IP -indstillinger. På den næste webside skal vi levere de IP -relaterede oplysninger for at fortsætte videre.
HTML -kode
HTML -koden til websider findes i dette Github -arkiv. Du kan bruge enhver IDE eller teksteditor som Sublime eller notesblok ++ til at lave HTML -websider.
- Opret først en HTML -webside med to alternativknapper for at vælge mellem DHCP- og statisk IP -indstillinger.
- Opret nu knappen for at indsende dit svar
- Giv radioknapper et navn.
- ESP -webserverklassen tager disse navne som argumenter og får svaret fra radioknapperne ved hjælp af disse argumenter
- Indsæt nu en 'SEND' -knap for at sende svaret til enheden. På de andre websider har vi tekstbokse.
- Giv navneværdien og indtastningstypen til tekstfeltet, og tilføj en send -knap for at 'SEND' indsende svaret.
- Opret en 'RESET' knap for at nulstille indholdet i tekstfeltet.
Trin 3: Tilvejebringelse af WiFi og UbiDots legitimationsoplysninger
Hovedproblemet opstår under administration af WiFi -legitimationsoplysningerne. Selvom vi har WiFiMulti -bibliotek til det, hvor vi kan give flere SSID'er og adgangskoder til enheden, og enheden vil oprette forbindelse til det tilgængelige netværk. Men hvad nu hvis det tilgængelige netværk ikke er på WiFiMulti -listen. Blinker ESP32 -enheden hele tiden er ikke en pålidelig løsning.
For at løse dette problem hoster vi en webside, hvor brugeren kan indsende SSID og adgangskode for det tilgængelige netværk. Det fungerer som følger.
- Websiden er hostet på den statiske IP- eller DHCP -IP, som brugeren vælger fra den bundne portal
- Denne webside indeholder tekstfelter til indtastning af SSID, adgangskode og UBIDOTS -token -id for at forbinde enheden til UbiDots.
- Indtast SSID og adgangskode for din lokale WiFi i inputfelterne, indtast UbiDots token -id, og indtast SEND
- Disse legitimationsoplysninger gemmes i ESP32's EEPROM
- Efter 60 sekunder afbrydes enheden automatisk fra AP
- Næste gang du tænder enheden, skal brugeren ikke følge denne procedure. Enheden henter automatisk brugeroplysningerne fra EEPROM og fortsætter med at offentliggøre sensoraflæsningerne til UbiDots.
Trin 4: Publicering af sensoraflæsninger til UbiDots
Her bruger vi trådløse temperatur- og luftfugtighedssensorer med ESP 32 -enheden til at få oplysninger om temperatur og luftfugtighed. Vi sender dataene til UbiDots ved hjælp af MQTT -protokollen. MQTT følger en publicerings- og abonnementsmekanisme snarere end anmodning og svar. Det er hurtigere og mere pålideligt end HTTP. Dette fungerer som følger.
- Vi gør brug af Task Scheduler til at planlægge opgaven som at hente data fra sensorer, offentliggøre sensoraflæsninger, abonnere på MQTT -emne.
- Inkluder først opgaveplanlægningens overskriftsfiler, dens instans og planlægger opgaverne.
- Vi har planlagt to opgaver, der refererer til to forskellige kontroloperationer.
#define _TASK_TIMEOUT#inkludere
Planlægger ts;
// --------- Opgaver ------------ // Opgave tSensor (4 * TASK_SECOND, TASK_FOREVER, & taskSensorCallback, & ts, false, NULL, & taskSensorDisable); Opgave tWiFi (10* TASK_SECOND, TASK_FOREVER, & taskWiFiCallback, & ts, false, NULL, & taskWiFiDisable);
Opgave 1 er til aflæsning af sensorværdien, denne opgave kører i 1 sekund, indtil den når timeout på 10 sekunder
- Når opgave1 når sin tid, opretter vi forbindelse til lokal Wifi- og MQTT -mægler.
- Nu er opgave 2 aktiveret, og vi deaktiverer opgave 1
-
Opgave 2 er til offentliggørelse af sensordata til UbiDots MQTT -mægler, denne opgave kører i 20 sekunder, indtil den når timeout på 20 sekunder
- Når opgave 2 når sin timeout, er opgave 1 aktiveret igen, og opgave 2 er deaktiveret. Her får vi igen den opdaterede værdi, og processen fortsætter.
Læsning af I2C -sensordata
Vi får en 29-byte ramme fra de trådløse temperatur- og luftfugtighedssensorer. Denne ramme manipuleres for at få faktiske data om temperatur og luftfugtighed
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); } hvis (data [15] == 0x7F) /////// for at kontrollere, om de modtagne data er korrekte {hvis (data [22] == 1) //////// kontroller sensortypen er korrekt {
luftfugtighed = ((((data [24]) * 256) + data [25]) /100,0); fugtighed /=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 = tilfældigt (100, 327); spænding = batteri/100; nodeId = data [16];}
Opretter forbindelse til UbiDots MQTT API
Inkluder header -filen til MQTT -processen
#omfatte
definere andre variabler for MQTT som klientnavn, mægleradresse, token -id (vi henter token -id'et fra EEPROM)
#define MQTT_CLIENT_NAME "ClientVBShightime123"
char mqttBroker = "things.ubidots.com";
kul nyttelast [100]; kul emne [150];
// opret variabel for at gemme token -id
String tokenId;
Opret variabler for at gemme forskellige sensordata og opret en char -variabel til at gemme emne
#define VARIABLE_LABEL_TEMPF "tempF" // Assosering af variabeletiketten #definere VARIABLE_LABEL_TEMPC "tempC" // Vurder variabeletiketten #define VARIABLE_LABEL_BAT "bat" #define VARIABLE_LABEL_HUMID "variable" //
char emne1 [100]; char emne2 [100]; char emne3 [100];
offentliggøre dataene til det nævnte MQTT -emne, vil nyttelasten se ud som {"tempc": {value: "tempData"}}
sprintf (emne1, "%s", ""); sprintf (emne1, "%s%s", "/v1.6/devices/", DEVICE_LABEL); sprintf (nyttelast, "%s", ""); // Renser nyttelast sprintf (nyttelast, "{"%s / ":", VARIABLE_LABEL_TEMPC); // Tilføjer værdien sprintf (nyttelast, "%s {" værdi / ":%s}", nyttelast, str_cTemp); // Tilføjer værdien sprintf (nyttelast, "%s}", nyttelast); // Luk ordbogens parenteser Serial.println (nyttelast); Serial.println (client.publish (emne1, nyttelast)? "Udgivet": "ikkeudgivet");
// Gør også det samme for andre emner
client.publish () offentliggør dataene til UbiDots
Trin 5: Visualisering af data
- Gå til Ubidots og log ind på din konto.
- Naviger til instrumentbrættet fra fanen Data, der er angivet øverst.
- Klik nu på ikonet "+" for at tilføje de nye widgets.
- Vælg en widget fra listen, og tilføj en variabel og enheder.
- Sensordataene kan visualiseres på instrumentbrættet ved hjælp af forskellige widgets.
Trin 6: Overordnet kode
Over -koden til HTML og ESP32 kan findes i dette GitHub -lager.
Credits
- ncd ESP32 breakout board.
- ncd Trådløse temperatur- og fugtighedsfølere.
- pubber
- UbiDots
- Opgaveplanlægger
Anbefalede:
Fjern baggrund for flere billeder ved hjælp af Photoshop 2020: 5 trin
Fjern baggrund for flere billeder ved hjælp af Photoshop 2020: Fjernelse af baggrunden for et billede er super let nu! Sådan bruges Adobe Photoshop 2020 til at fjerne baggrunden for flere (batch) billeder ved hjælp af et simpelt script
Sådan foretages flere ESP-tal via ESP-NU ved hjælp af ESP32 og ESP8266: 8 trin
Sådan laver du flere ESP-tal via ESP-NU Brug af ESP32 og ESP8266: På mit igangværende projekt har jeg brug for flere ESP til at tale med hinanden uden en router. For at gøre dette vil jeg bruge ESP-NOW til at få trådløs kommunikation med hinanden uden en router på ESP
Se sensordata efter LCD -skærm: 5 trin
Se sensordata efter skærm LCD: I dette projekt skal vi se data fra 2 sensorer på en skærm med Arduino. Anvendelsen af dette projekt overvåger fugtighed og temperatur i et drivhus
Visualisering af trådløse sensordata ved hjælp af Google -diagrammer: 6 trin
Visualisering af trådløse sensordata ved hjælp af Google -diagrammer: Forudsigelig analyse af maskinerne er meget nødvendig for at minimere maskinens nedetid. Regelmæssig kontrol hjælper med at øge maskinens driftstid og øger igen sin fejltolerance. Trådløs vibration og temperatur sen
Gem Arduino Sensordata i MYsql ved hjælp af behandling: 6 trin
Gem Arduino Sensordata til MYsql Ved hjælp af behandling: Ærligt talt er det svært at gemme Arduino -data direkte til MySQL, så jeg i afhængighed af Arduino IDE brugte Processing IDE, der ligner Arduino IDE, men med meget forskellig brug, og du kan kode det i java.Bemærk: kør ikke Arduino seriel moni