Kazalo:

UbiDots-Povezovanje ESP32 in objava podatkov z več senzorji: 6 korakov
UbiDots-Povezovanje ESP32 in objava podatkov z več senzorji: 6 korakov

Video: UbiDots-Povezovanje ESP32 in objava podatkov z več senzorji: 6 korakov

Video: UbiDots-Povezovanje ESP32 in objava podatkov z več senzorji: 6 korakov
Video: Next Videos - ESP32 Development Board (Web Server Project) 2024, November
Anonim
UbiDots-Povezovanje ESP32 in objava podatkov z več senzorji
UbiDots-Povezovanje ESP32 in objava podatkov z več senzorji

ESP32 in ESP 8266 sta zelo znana SoC na področju interneta stvari. To je nekakšen dar za projekte IoT. ESP 32 je naprava z vgrajenim WiFi in BLE. Samo podajte svoje nastavitve SSID, geslo in IP ter stvari vključite v oblak. Tukaj, v tem navodilu, bomo razmislili o nekaterih osnovnih pogojih interneta stvari, kot so platforma IoT, MQTT, zaprti portali itd.

  • Arhitektura IoT z zelo preprostimi besedami je sestavljena iz vgrajene naprave in platforme IoT, ki napravo postavi v oblak. Tukaj uporabljamo platformo UbiDots IoT za vizualizacijo podatkov senzorja.
  • Upravljanje nastavitev IP in uporabniških poverilnic je lahko za uporabnika glavobol. Kaj pa, če želi uporabnik spremeniti poverilnice WiFi? Kaj pa, če želi uporabnik preklopiti nastavitve DHCP/Statični IP? Vsakič utripanje ESP32 ni zanesljivo in niti ni rešitev za te težave. Tako bomo šli skozi zaporni portal, da shranimo poverilnice WiFi in druge konfiguracije.
  • MQTT postaja zelo pogost izraz v svetu IoT. zaradi hitre, robustne in vitke arhitekture je presegel zahteve in odzive (HTTP) s strani Publish and Subscribe.

Tukaj v tem navodilu bomo pokazali.

  • Dajanje poverilnic za WiFi in MQTT z uporabo Captive Portal.
  • Objavljanje in naročanje več podatkov senzorjev na UbiDots.
  • Branje podatkov tipala iz brezžičnih senzorjev temperature in vlažnosti.
  • Gostovanje spletnega obrazca iz ESP32.
  • Branje in pisanje iz SPIFFS ESP32.

1. korak: Specifikacije strojne in programske opreme

Specifikacije strojne in programske opreme
Specifikacije strojne in programske opreme
  • ESP32 WiFi/BLE
  • Brezžični senzor temperature in vlažnosti

Specifikacije programske opreme

Arduino IDE

2. korak: Ustvarite portal za ujetništvo

Ustvarjanje zaprtega portala
Ustvarjanje zaprtega portala
Ustvarjanje zaprtega portala
Ustvarjanje zaprtega portala
Ustvarjanje zaprtega portala
Ustvarjanje zaprtega portala

Zaprti portal je spletna stran, ki se prikaže novo povezanim uporabnikom, preden jim odobri širši dostop do omrežnih virov. Tukaj prikazujemo tri spletne strani za izbiro med nastavitvami DHCP in statičnim IP. IP naslov ESP lahko definiramo na dva načina.

  • Naslov IP DHCP- to je način za dinamično dodelitev naslova IP napravi. Privzeti naslov IP ESP je 192.168.4.1
  • Statični naslov IP- dodelitev stalnega naslova IP naši omrežni napravi. Za zagotovitev statičnega IP -ja napravi moramo določiti naslov IP, naslov prehoda in masko podomrežja.

Prva spletna stran gostuje na naslovu 192.168.1.77. Tu so uporabniku na voljo izbirni gumbi za izbiro med nastavitvami DHCP in statičnega IP. Na naslednji spletni strani moramo za nadaljnjo uporabo posredovati informacije, povezane z IP.

Koda HTML

Kodo HTML za spletne strani najdete v tem skladišču Github. Za izdelavo spletnih strani HTML lahko uporabite kateri koli IDE ali urejevalnik besedil, na primer Sublime ali notepad ++.

  • Najprej ustvarite spletno stran HTML, ki vsebuje dva izbirna gumba za izbiro med nastavitvami DHCP in statičnim IP.
  • Zdaj ustvarite gumb za pošiljanje svojega odgovora
  • Izbirnim gumbom dajte ime.
  • Razred spletnega strežnika ESP bo ta imena vzel kot argumente in s temi argumenti dobil odziv izbirnih gumbov
  • Zdaj vstavite gumb "POŠLJI", da pošljete odgovor na napravo. Na drugih spletnih straneh imamo polja z besedilom.
  • V besedilno polje vnesite vrednost imena in vrsto vnosa ter dodajte gumb za predložitev, da »POŠLJI« pošljite odgovor.
  • Ustvarite gumb 'RESET' za ponastavitev vsebine besedilnega polja.

3. korak: Zagotavljanje poverilnic za WiFi in UbiDots

Zagotavljanje poverilnic WiFi in UbiDots
Zagotavljanje poverilnic WiFi in UbiDots

Glavna težava se pojavi pri upravljanju poverilnic WiFi. Čeprav imamo za to knjižnico WiFiMulti, kjer lahko napravi damo več SSID -jev in gesel, naprava pa se bo povezala z razpoložljivim omrežjem. Kaj pa, če razpoložljivega omrežja ni na seznamu WiFiMulti. Nenehno utripanje naprave ESP32 ni zanesljiva rešitev.

Za rešitev te težave gostujemo na spletni strani, kjer lahko uporabnik predloži SSID in geslo razpoložljivega omrežja. Deluje na naslednji način.

  • Spletna stran gostuje na statičnem IP ali DHCP IP naslovu, ki ga izbere uporabnik s spletnega portala
  • Ta spletna stran vsebuje besedilna polja za vnos SSID, gesla in ID žetona UBIDOTS za povezavo naprave z UbiDots.
  • V vnosna polja vnesite SSID in geslo lokalnega WiFi, vnesite ID žetona UbiDot in vnesite SUBMIT
  • Te poverilnice se shranijo v EEPROM ESP32
  • Po 60 sekundah se naprava samodejno prekine z dostopno točko
  • Naslednjič, ko vklopite napravo, uporabniku ni treba upoštevati tega postopka, naprava bo samodejno pridobila uporabniške poverilnice iz EEPROM -a in nadaljevala z objavo odčitkov senzorja v UbiDots.

4. korak: objava odčitkov senzorjev v UbiDots

Tukaj uporabljamo brezžične senzorje temperature in vlažnosti z napravo ESP 32, da dobimo podatke o temperaturi in vlažnosti. Podatke pošiljamo na UbiDots s protokolom MQTT. MQTT sledi mehanizmu objave in naročnine in ne tej zahtevi in odgovoru. Je hitrejši in zanesljivejši od HTTP. To deluje na naslednji način.

  • Za načrtovanje naloge uporabljamo načrtovalnik opravil, na primer pridobivanje podatkov iz senzorjev, objavo odčitkov senzorjev, naročanje na temo MQTT.
  • Najprej vključite datoteke glave razporejevalnika opravil, njegov primerek in razporedi opravila.
  • Načrtovali smo dve nalogi, ki se nanašata na dve različni operaciji nadzora.

#define _TASK_TIMEOUT#include

Načrtovalec ts;

// --------- Opravila ------------ // Task tSensor (4 * TASK_SECOND, TASK_FOREVER, & taskSensorCallback, & ts, false, NULL in & taskSensorDisable); Opravilo tWiFi (10* TASK_SECOND, TASK_FOREVER in & taskWiFiCallback, & ts, false, NULL, & taskWiFiDisable);

Naloga 1 je za branje vrednosti senzorja, ki traja 1 sekundo, dokler ne doseže časovne omejitve 10 sekund

  • Ko poteče Task1, se povezujemo z lokalnim posrednikom Wifi in MQTT.
  • Zdaj je 2. naloga omogočena in onemogočamo 1.
  • Naloga 2 je za objavo podatkov senzorja posredniku UbiDots MQTT, to opravilo traja 20 sekund, dokler ne doseže časovne omejitve 20 sekund

  • Ko Task2 poteče, se 1. naloga znova omogoči, Task2 pa onemogoči. Tu spet dobivamo posodobljeno vrednost in postopek se nadaljuje.

Branje podatkov senzorja I2C

Od brezžičnih senzorjev temperature in vlažnosti dobimo 29-bajtni okvir. Ta okvir se manipulira, da dobite podatke o dejanski temperaturi in vlažnosti

uint8_t podatki [29];

podatki [0] = Serial1.read (); zamuda (k); // chck za začetni bajt if (data [0] == 0x7E) {while (! Serial1.available ()); za (i = 1; i <29; i ++) {podatki = Serial1.read (); zamuda (1); } if (data [15] == 0x7F) ///////, da preverite, ali so sprejemljivi podatki pravilni {if (data [22] == 1) //////// se prepričajte o tipu senzorja je pravilen {

vlažnost = ((((podatki [24]) * 256) + podatki [25]) /100,0); vlažnost /=10,0; cTempint = (((uint16_t) (podatki [26]) << 8) | podatki [27]); cTemp = (float) cTempint /100,0; cTemp /= 10,0; fTemp = cTemp * 1,8 + 32; fTemp /= 10,0; baterija = naključna (100, 327); napetost = baterija/100; nodeId = podatki [16];}

Povezovanje z API -jem UbiDots MQTT

Vključite datoteko glave za postopek MQTT

#vključi

določite druge spremenljivke za MQTT, kot so ime odjemalca, naslov posrednika, ID žetona (ID žetona pridobivamo iz EEPROM -a)

#define MQTT_CLIENT_NAME "ClientVBShightime123"

char mqttBroker = "things.ubidots.com";

tovor char [100]; tema char [150];

// ustvari spremenljivko za shranjevanje ID -ja žetona

Niz tokenId;

Ustvarite spremenljivke za shranjevanje različnih podatkov senzorjev in ustvarite spremenljivko char za shranjevanje teme

#define VARIABLE_LABEL_TEMPF "tempF" // Določanje oznake spremenljivke #define VARIABLE_LABEL_TEMPC "tempC" // Določanje oznake spremenljivke #define VARIABLE_LABEL_BAT "bat" #define VARIABLE_LABEL_HUMID "label" humid "// Assing the variable label

char topic1 [100]; char topic2 [100]; char topic3 [100];

objavi podatke na omenjeno temo MQTT, bo tovor videti kot {"tempc": {vrednost: "tempData"}}

sprintf (topic1, "%s", ""); sprintf (tema1, "%s%s", "/v1.6/devices/", DEVICE_LABEL); sprintf (koristna obremenitev, "%s", ""); // Počisti koristno obremenitev sprintf (koristna obremenitev, "{"%s / ":", VARIABLE_LABEL_TEMPC); // doda vrednost sprintf (koristna obremenitev, "%s {" vrednost / ":%s}", koristna obremenitev, str_cTemp); // doda vrednost sprintf (koristna obremenitev, "%s}", koristna obremenitev); // Zapira slovarske oklepaje Serial.println (koristna obremenitev); Serial.println (client.publish (topic1, koristna obremenitev)? "Objavljeno": "ni objavljeno");

// Enako storite tudi za drugo temo

client.publish () objavi podatke v UbiDots

5. korak: Vizualizacija podatkov

Vizualizacija podatkov
Vizualizacija podatkov
Vizualizacija podatkov
Vizualizacija podatkov
Vizualizacija podatkov
Vizualizacija podatkov
  • Pojdite na Ubidots in se prijavite v svoj račun.
  • Pomaknite se do nadzorne plošče na zavihku Podatki, ki je naveden na vrhu.
  • Zdaj kliknite ikono "+", da dodate nove pripomočke.
  • Izberite gradnik s seznama in dodajte spremenljivko in naprave.
  • Podatke senzorja si lahko ogledate na armaturni plošči z različnimi pripomočki.

6. korak: Splošna koda

Kodo Over za HTML in ESP32 najdete v tem skladišču GitHub.

Krediti

  • ncd ESP32 odklopna plošča.
  • ncd brezžični senzorji temperature in vlažnosti.
  • pubsubclient
  • UbiDots
  • Načrtovalnik opravil

Priporočena: