Indholdsfortegnelse:

UbiDots-Tilslutning af en ESP32 og udgivelse af flere sensordata: 6 trin
UbiDots-Tilslutning af en ESP32 og udgivelse af flere sensordata: 6 trin

Video: UbiDots-Tilslutning af en ESP32 og udgivelse af flere sensordata: 6 trin

Video: UbiDots-Tilslutning af en ESP32 og udgivelse af flere sensordata: 6 trin
Video: Setting up an ESP32 with Arduino IDE 2024, December
Anonim
UbiDots-Tilslutning af en ESP32 og publicering af flere sensordata
UbiDots-Tilslutning af en ESP32 og publicering af flere sensordata

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

Hardware- og softwarespecifikation
Hardware- og softwarespecifikation
  • ESP32 WiFi/BLE
  • Trådløs temperatur- og luftfugtighedssensor

Softwarespecifikation

Arduino IDE

Trin 2: Oprettelse af en Captive Portal

Oprettelse af en Captive Portal
Oprettelse af en Captive Portal
Oprettelse af en Captive Portal
Oprettelse af en Captive Portal
Oprettelse af en Captive Portal
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

Tilbyder WiFi og UbiDots legitimationsoplysninger
Tilbyder 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

Visualisering af data
Visualisering af data
Visualisering af data
Visualisering af data
Visualisering af data
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: