Sisukord:

UbiDots-ESP32 ühendamine ja mitme anduri andmete avaldamine: 6 sammu
UbiDots-ESP32 ühendamine ja mitme anduri andmete avaldamine: 6 sammu

Video: UbiDots-ESP32 ühendamine ja mitme anduri andmete avaldamine: 6 sammu

Video: UbiDots-ESP32 ühendamine ja mitme anduri andmete avaldamine: 6 sammu
Video: ESP32 Home Automation - Control Relays Wi-Fi local webserver | Restore relay state using EEPROM 2024, November
Anonim
UbiDots-ESP32 ühendamine ja mitme anduri andmete avaldamine
UbiDots-ESP32 ühendamine ja mitme anduri andmete avaldamine

ESP32 ja ESP 8266 on IoT valdkonnas väga tuttavad SoC. Need on IoT -projektide jaoks omamoodi õnnistused. ESP 32 on integreeritud WiFi ja BLE -ga seade. Andke lihtsalt oma SSID, parool ja IP -konfiguratsioonid ning integreerige asjad pilve. Siin, selles juhendis, kaalume mõningaid IoT põhitermineid, nagu IoT platvorm, MQTT, vangistatud portaalid jne. Nii et vaatame selle läbi

  • Väga lihtsate sõnadega IoT -arhitektuur koosneb sisseehitatud seadmest ja IoT -platvormist, mis asetab seadme pilve. Siin kasutame andurite andmete visualiseerimiseks UbiDots IoT platvormi.
  • IP -seadete ja kasutaja mandaatide haldamine võib kasutajale peavalu valmistada. Mis saab siis, kui kasutaja soovib muuta WiFi mandaati? Mis saab siis, kui kasutaja soovib muuta DHCP/staatilise IP seadeid? ESP32 igakordne vilkumine ei ole usaldusväärne ega ole isegi nende probleemide lahendus. Nii et me läheme läbi suletud portaali, et salvestada WiFi volikirjad ja muud konfiguratsioonid.
  • MQTT on nüüd muutumas IoT maailmas väga levinud terminiks. see on kiire, jõulise ja lahja arhitektuuri tõttu ületanud avaldamise ja tellimise taotlused ja vastused (HTTP).

Siin selles juhendatavas me demonstreerime.

  • WiFi ja MQTT mandaadi andmine Captive Portali abil.
  • Mitme anduri andmete avaldamine ja tellimine UbiDotsi.
  • Andmeandmete lugemine traadita temperatuuri- ja niiskusanduritelt.
  • Veebivormi hostimine ESP32 -st.
  • Lugemine ja kirjutamine SPIFFS ESP32 -st.

Samm: riistvara ja tarkvara spetsifikatsioon

Riistvara ja tarkvara spetsifikatsioon
Riistvara ja tarkvara spetsifikatsioon
  • ESP32 WiFi/BLE
  • Juhtmevaba temperatuuri ja niiskuse andur

Tarkvara spetsifikatsioon

Arduino IDE

2. samm: vangistatud portaali loomine

Vangistamisportaali loomine
Vangistamisportaali loomine
Vangistamisportaali loomine
Vangistamisportaali loomine
Vangistamisportaali loomine
Vangistamisportaali loomine

Suletud portaal on veebileht, mis kuvatakse äsja ühendatud kasutajatele enne, kui neile antakse laiem juurdepääs võrguressurssidele. Siin teenindame kolme veebilehte, et valida DHCP ja staatilise IP -sätete vahel. saame ESP -le IP -aadressi määratleda kahel viisil.

  • DHCP IP-aadress- see on viis seadmele IP-aadressi dünaamiliseks määramiseks. ESP vaikimisi IP -aadress on 192.168.4.1
  • Staatiline IP-aadress- meie võrguseadmele püsiva IP-aadressi määramine. seadmele staatilise IP pakkumiseks peame määratlema IP -aadressi, lüüsi aadressi ja alamvõrgu maski.

Esimest veebilehte hostitakse aadressil 192.168.1.77. Siin on kasutajal raadionupud, et valida DHCP ja staatilise IP seadete vahel. Järgmisel veebilehel peame edasiseks jätkamiseks esitama IP -ga seotud teabe.

HTML kood

Veebilehtede HTML -koodi leiate sellest Githubi hoidlast. HTML -veebilehtede tegemiseks võite kasutada mis tahes IDE -d või tekstiredaktorit, näiteks Sublime või märkmikku ++.

  • Esmalt looge HTML -veebileht, mis sisaldab kahte raadionuppu, et valida DHCP ja staatilise IP -sätete vahel.
  • Nüüd looge vastuse esitamiseks nupp
  • Andke raadionuppudele mõni nimi.
  • ESP veebiserveri klass võtab need nimed argumentidena ja saab nende argumentide abil raadionuppude vastuse
  • Nüüd sisestage vastuse seadmesse saatmiseks nupp „ESITA”. Teistel veebilehtedel on meil tekstiväljad.
  • Andke tekstiväljale nime väärtus ja sisenditüüp ning lisage vastuse saatmiseks nupule „ESITA” saatmisnupp.
  • Looge tekstivälja sisu lähtestamiseks nupp „LÄHTENE“.

Samm: WiFi ja UbiDotsi mandaatide pakkumine

WiFi ja UbiDotsi mandaatide pakkumine
WiFi ja UbiDotsi mandaatide pakkumine

Põhiprobleem ilmneb WiFi volikirjade haldamisel. Isegi kui meil on selleks WiFiMulti teek, kus saame anda seadmele mitu SSID -d ja parooli ning seade loob ühenduse saadaoleva võrguga. Aga mis siis, kui saadaolevat võrku pole WiFiMulti loendis. ESP32 seadme pidev vilkumine ei ole usaldusväärne lahendus.

Selle probleemi lahendamiseks majutame veebilehte, kus kasutaja saab esitada saadaoleva võrgu SSID ja parooli. See toimib järgmiselt.

  • Veebilehte hostitakse staatilisel IP -l või DHCP IP -l, mille kasutaja on valinud suletud portaalist
  • See veebileht sisaldab tekstivälju SSID, parooli ja UBIDOTS -i tunnuskoodi sisestamiseks, et ühendada seade UbiDotsiga.
  • Sisestage sisestusväljadele oma kohaliku WiFi SSID ja parool, sisestage UbiDot'i tunnus ja sisestage ESITA
  • Need mandaadid salvestatakse ESP32 EEPROM -i
  • 60 sekundi pärast katkeb seade AP-st automaatselt
  • Järgmisel korral, kui seadme sisse lülitate, ei pea kasutaja seda protseduuri järgima. Seade otsib automaatselt kasutaja mandaadi EEPROM -ist ja jätkab andurite näitude avaldamist UbiDotsile.

4. samm: andurite näitude avaldamine UbiDotsis

Siin kasutame temperatuuri ja niiskuse andmete saamiseks ESP 32 seadmega traadita temperatuuri ja niiskuse andureid. Saadame andmed UbiDotsile, kasutades MQTT protokolli. MQTT järgib avaldamise ja tellimise mehhanismi, mitte seda taotlust ja vastust. See on kiirem ja usaldusväärsem kui HTTP. See toimib järgmiselt.

  • Me kasutame ülesannete ajastamiseks ülesannete planeerijat, näiteks andmete andmete toomist, andurite näitude avaldamist, MQTT -i tellimist.
  • Esiteks lisage ülesannete ajastamise päisefailid, see on eksemplar ja ajakava.
  • Oleme kavandanud kaks ülesannet, mis viitavad kahele erinevale juhtimistoimingule.

#define _TASK_TIMEOUT#include

Planeerija ts;

// --------- Ülesanded ------------ // Ülesanne tSensor (4 * TASK_SECOND, TASK_FOREVER, & taskSensorCallback, & ts, false, NULL ja & taskSensorDisable); Ülesanne tWiFi (10* TASK_SECOND, TASK_FOREVER, & taskWiFiCallback, & ts, false, NULL ja & taskWiFiDisable);

Ülesanne 1 on anduri väärtuse lugemiseks, see ülesanne kestab 1 sekund, kuni see jõuab 10 sekundi aegumiseni

  • Kui ülesanne1 saab oma aja, loome ühenduse kohaliku Wifi ja MQTT maakleriga.
  • Nüüd on ülesanne 2 lubatud ja me keelame ülesande 1
  • Ülesanne 2 on andurite andmete avaldamiseks UbiDots MQTT maaklerile, see ülesanne kestab 20 sekundit, kuni see jõuab 20 sekundi aegumiseni

  • Kui ülesanne 2 saab oma aja, on ülesanne 1 uuesti lubatud ja ülesanne 2 keelatud. Jällegi saame värskendatud väärtuse ja protsess läheb edasi.

I2C anduri andmete lugemine

Me saame traadita temperatuuri ja niiskuse anduritelt 29-baidise kaadri. Seda kaadrit manipuleeritakse, et saada tegelikke temperatuuri ja niiskuse andmeid

uint8_t andmed [29];

andmed [0] = Serial1.read (); viivitus (k); // chck algusbaiti jaoks, kui (andmed [0] == 0x7E) {while (! Serial1.available ()); for (i = 1; i <29; i ++) {data = Serial1.read (); viivitus (1); } if (andmed [15] == 0x7F) ///////, et kontrollida, kas taastamisandmed on õiged {if (andmed [22] == 1) //////// veenduge, et anduri tüüp on õige {

niiskus = (((((andmed [24]) * 256) + andmed [25]) /100,0); niiskus /=10,0; cTempint = (((uint16_t) (andmed [26]) << 8) | andmed [27]); cTemp = (ujuk) cTempint /100,0; cTemp /= 10,0; fTemp = cTemp * 1,8 + 32; fTemp /= 10,0; aku = juhuslik (100, 327); pinge = aku/100; nodeId = andmed [16];}

Ühendamine UbiDots MQTT API -ga

Kaasa MQTT protsessi päisefail

#kaasake

määratlege MQTT jaoks muud muutujad, näiteks kliendi nimi, maakleri aadress, märgi ID (toome sümboolse ID EEPROMist)

#define MQTT_CLIENT_NAME "ClientVBShightime123"

char mqttBroker = "things.ubidots.com";

süsiniku kasulik koormus [100]; süsinikteema [150];

// loo muutuja tokeni ID salvestamiseks

String tokenId;

Looge muutujaid erinevate andurite andmete salvestamiseks ja looge teema muutmiseks char muutuja

#define VARIABLE_LABEL_TEMPF "tempF" // Muutuja sildi määramine #define VARIABLE_LABEL_TEMPC "tempC" // Muutuja sildi määramine #define VARIABLE_LABEL_BAT "bat" #define VARIABLE_LABEL_HUMID "niiske silt" // Assing

char teema1 [100]; char teema2 [100]; char teema3 [100];

avaldage andmed mainitud MQTT -teemal, kuna koormus näeb välja selline: "tempc": {value: "tempData"}}

sprintf (teema1, "%s", ""); sprintf (teema1, "%s%s", "/v1.6/devices/", DEVICE_LABEL); sprintf (kasulik koormus, "%s", ""); // Puhastab kasulikku koormust sprintf (kasulik koormus, "{"%s / ":", VARIABLE_LABEL_TEMPC); // Lisab väärtuse sprintf (kasulik koormus, "%s {" väärtus / ":%s}", kasulik koormus, str_cTemp); // Lisab väärtuse sprintf (kasulik koormus, "%s}", kasulik koormus); // Sulgeb sõnastiku sulgud Serial.println (kasulik koormus); Serial.println (klient.publish (teema1, kasulik koormus)? "Avaldatud": "notpublished");

// Tehke sama ka teise teema puhul

client.publish () avaldab andmed UbiDotsis

Samm: andmete visualiseerimine

Andmete visualiseerimine
Andmete visualiseerimine
Andmete visualiseerimine
Andmete visualiseerimine
Andmete visualiseerimine
Andmete visualiseerimine
  • Avage Ubidots ja logige oma kontole sisse.
  • Liikuge ülaosas oleval vahekaardil Andmed juhtpaneelile.
  • Nüüd klõpsake uute vidinate lisamiseks ikooni "+".
  • Valige loendist vidin ja lisage muutuja ja seadmed.
  • Andurite andmeid saab armatuurlaual visualiseerida erinevate vidinate abil.

6. samm: üldine kood

HTML -i ja ESP32 ülekoodi leiate sellest GitHubi hoidlast.

Autorid

  • ncd ESP32 katkestusplaat.
  • ncd Traadita temperatuuri ja niiskuse andurid.
  • pubi allklient
  • UbiDots
  • Ülesannete planeerija

Soovitan: