Turinys:

„UbiDots“-ESP32 prijungimas ir kelių jutiklių duomenų paskelbimas: 6 veiksmai
„UbiDots“-ESP32 prijungimas ir kelių jutiklių duomenų paskelbimas: 6 veiksmai

Video: „UbiDots“-ESP32 prijungimas ir kelių jutiklių duomenų paskelbimas: 6 veiksmai

Video: „UbiDots“-ESP32 prijungimas ir kelių jutiklių duomenų paskelbimas: 6 veiksmai
Video: Ubidots iSpindel 2024, Lapkritis
Anonim
„UbiDots“-ESP32 prijungimas ir kelių jutiklių duomenų paskelbimas
„UbiDots“-ESP32 prijungimas ir kelių jutiklių duomenų paskelbimas

ESP32 ir ESP 8266 yra labai pažįstami SoC IoT srityje. Tai savotiška palaima daiktų interneto projektams. ESP 32 yra įrenginys su integruotu „WiFi“ir BLE. Tiesiog nurodykite savo SSID, slaptažodį ir IP konfigūracijas ir integruokite dalykus į debesį. Šioje pamokoje mes apsvarstysime kai kurias pagrindines daiktų interneto sąlygas, tokias kaip daiktų interneto platforma, MQTT, nelaisvės portalai ir kt. Taigi pereikime prie jo

  • „IoT Architecture“labai paprastais žodžiais susideda iš įterpto įrenginio ir „IoT“platformos, kad įrenginys būtų įtrauktas į debesį. Čia mes naudojame „UbiDots IoT“platformą jutiklių duomenims vizualizuoti.
  • IP nustatymų ir vartotojo duomenų tvarkymas gali sukelti galvos skausmą vartotojui. Ką daryti, jei vartotojas nori pakeisti „WiFi“prisijungimo duomenis? Ką daryti, jei vartotojas nori pakeisti DHCP/statinio IP nustatymus? ESP32 mirksėjimas kiekvieną kartą nėra patikimas ir net nėra šių problemų sprendimas. Taigi mes eisime per uždarą portalą, kad išsaugotume „WiFi“prisijungimo duomenis ir kitas konfigūracijas.
  • MQTT dabar tampa labai įprastu terminu daiktų interneto pasaulyje. ji pralenkė „Publish“ir „Subscribe“užklausas ir atsakymus (HTTP) dėl greitos, tvirtos ir paprastos architektūros.

Čia, šioje pamokoje, mes parodysime.

  • „WiFi“ir MQTT įgaliojimų suteikimas naudojant „Captive Portal“.
  • Kelių jutiklių duomenų publikavimas ir prenumeravimas „UbiDots“.
  • Jutiklio duomenų skaitymas iš belaidžių temperatūros ir drėgmės jutiklių.
  • Interneto formos priegloba iš ESP32.
  • Skaitymas ir rašymas iš SPIFFS ESP32.

1 žingsnis: Aparatūros ir programinės įrangos specifikacija

Techninės ir programinės įrangos specifikacijos
Techninės ir programinės įrangos specifikacijos
  • ESP32 WiFi/BLE
  • Belaidis temperatūros ir drėgmės jutiklis

Programinės įrangos specifikacija

„Arduino IDE“

2 veiksmas: sukurkite nelaisvės portalą

Nelaisvės portalo kūrimas
Nelaisvės portalo kūrimas
Nelaisvės portalo kūrimas
Nelaisvės portalo kūrimas
Nelaisvės portalo kūrimas
Nelaisvės portalo kūrimas

Nepriklausomas portalas yra tinklalapis, kuris rodomas naujai prisijungusiems vartotojams, prieš jiems suteikiant platesnę prieigą prie tinklo išteklių. Čia mes aptarnaujame tris tinklalapius, kad pasirinktume tarp DHCP ir statinių IP nustatymų. IP adresą į ESP galime apibrėžti dviem būdais.

  • DHCP IP adresas- tai būdas dinamiškai priskirti įrenginiui IP adresą. Numatytasis ESP IP adresas yra 192.168.4.1
  • Statinis IP adresas- mūsų tinklo įrenginiui priskiriamas nuolatinis IP adresas. norėdami suteikti įrenginiui statinį IP, turime apibrėžti IP adresą, šliuzo adresą ir potinklio kaukę.

Pirmasis tinklalapis priglobtas 192.168.1.77. Čia vartotojui suteikiami radijo mygtukai, skirti pasirinkti tarp DHCP ir statinio IP nustatymų. Kitame tinklalapyje turime pateikti su IP susijusią informaciją, kad galėtume tęsti.

HTML kodas

Tinklalapių HTML kodą galima rasti šioje „Github“saugykloje. Norėdami sukurti HTML tinklalapius, galite naudoti bet kurį IDE arba teksto redaktorių, pvz., „Sublime“ar užrašų knygelę ++.

  • Pirmiausia sukurkite HTML tinklalapį su dviem radijo mygtukais, kad pasirinktumėte DHCP arba Statiniai IP nustatymai.
  • Dabar sukurkite mygtuką, kad pateiktumėte savo atsakymą
  • Pavadinkite radijo mygtukus.
  • ESP žiniatinklio serverio klasė ims šiuos pavadinimus kaip argumentus ir gaus atsakymą į radijo mygtukus naudodami šiuos argumentus
  • Dabar įterpkite mygtuką „PATEIKTI“, kad išsiųstumėte atsakymą į įrenginį. Kituose tinklalapiuose turime teksto laukelių.
  • Teksto laukelyje nurodykite vardo vertę ir įvesties tipą ir pridėkite pateikimo mygtuką prie „PATEIKTI“, kad pateiktumėte atsakymą.
  • Sukurkite mygtuką „RESET“, kad iš naujo nustatytumėte teksto lauko turinį.

3 veiksmas: pateikite „WiFi“ir „UbiDots“kredencialus

Teikia „WiFi“ir „UbiDots“kredencialus
Teikia „WiFi“ir „UbiDots“kredencialus

Pagrindinė problema kyla tvarkant „WiFi“prisijungimo duomenis. Nors turime „WiFiMulti“biblioteką, kur galime suteikti įrenginiui kelis SSID ir slaptažodžius, o įrenginys prisijungs prie turimo tinklo. Bet ką daryti, jei turimo tinklo nėra „WiFiMulti“sąraše. Visą laiką mirksintis ESP32 įrenginys nėra patikimas sprendimas.

Norėdami išspręsti šią problemą, mes priglobiame tinklalapį, kuriame vartotojas gali pateikti turimo tinklo SSID ir slaptažodį. Jis veikia taip.

  • Tinklalapis priglobiamas statiniu IP arba DHCP IP, kurį vartotojas pasirinko iš užfiksuoto portalo
  • Šiame tinklalapyje yra teksto laukai, skirti įvesti SSID, slaptažodį ir UBIDOTS prieigos rakto ID, kad būtų galima prijungti įrenginį prie „UbiDots“.
  • Įvesties laukuose įveskite vietinio „WiFi“SSID ir slaptažodį, įveskite „UbiDot“prieigos rakto ID ir įveskite PATEIKTI
  • Šie įgaliojimai išsaugomi ESP32 EEPROM
  • Po 60 sekundžių įrenginys automatiškai atsijungs nuo AP
  • Kitą kartą, kai įjungsite įrenginį, vartotojas neprivalo atlikti šios procedūros, įrenginys automatiškai paims vartotojo kredencialus iš EEPROM ir toliau paskelbs jutiklių rodmenis „UbiDots“.

4 žingsnis: paskelbkite jutiklių rodmenis „UbiDots“

Čia mes naudojame belaidžius temperatūros ir drėgmės jutiklius su ESP 32 prietaisu, kad gautume temperatūros ir drėgmės duomenis. Mes siunčiame duomenis į „UbiDots“naudodami MQTT protokolą. MQTT vadovaujasi paskelbimo ir prenumeratos mechanizmu, o ne tuo prašymu ir atsakymu. Jis yra greitesnis ir patikimesnis nei HTTP. Tai veikia taip.

  • Mes naudojame užduočių planuoklį, kad suplanuotume užduotį, pavyzdžiui, gauname duomenis iš jutiklių, skelbiame jutiklių rodmenis, užsiprenumeruojame MQTT temą.
  • Pirma, įtraukite užduočių planavimo priemonės antraštės failus, jos egzempliorių ir suplanuokite užduotis.
  • Mes suplanavome dvi užduotis, susijusias su dviem skirtingomis valdymo operacijomis.

#define _TASK_TIMEOUT#include

Planuotojas ts;

// --------- Užduotys ------------ // Užduotis tSensor (4 * TASK_SECOND, TASK_FOREVER, & taskSensorCallback, & ts, false, NULL ir & taskSensorDisable); Užduotis tWiFi (10* TASK_SECOND, TASK_FOREVER, & taskWiFiCallback, & ts, false, NULL ir & taskWiFiDisable);

1 užduotis skirta skaityti jutiklio vertę; ši užduotis vykdoma 1 sekundę, kol pasibaigs 10 sekundžių skirtasis laikas

  • Kai Task1 pasiekia savo laiką, mes prisijungiame prie vietinio „Wifi“ir „MQTT“brokerio.
  • Dabar 2 užduotis įjungta ir mes išjungiame 1 užduotį

  • 2 užduotis skirta jutiklių duomenims paskelbti „UbiDots MQTT“tarpininkui, ši užduotis vykdoma 20 sekundžių, kol pasibaigs 20 sekundžių skirtasis laikas
  • Pasibaigus 2 užduočiai, 1 užduotis vėl įjungiama, o 2 užduotis išjungiama. Čia vėl gauname atnaujintą vertę ir procesas tęsiasi.

I2C jutiklio duomenų skaitymas

Mes gauname 29 baitų kadrą iš belaidžių temperatūros ir drėgmės jutiklių. Šiuo rėmeliu manipuliuojama, kad būtų gauti tikri temperatūros ir drėgmės duomenys

uint8_t duomenys [29];

duomenys [0] = Serial1.read (); vėlavimas (k); // chck for start byte if (data [0] == 0x7E) {while (! Serial1.available ()); for (i = 1; i <29; i ++) {data = Serial1.read (); uždelsimas (1); } if (duomenys [15] == 0x7F) ///////, kad patikrintumėte, ar gaunami duomenys teisingi {if (duomenys [22] == 1) //////// įsitikinkite, kad jutiklio tipas yra teisingas {

drėgmė = (((((duomenys [24]) * 256) + duomenys [25]) /100,0); drėgmė /=10,0; cTempint = (((uint16_t) (duomenys [26]) << 8) | duomenys [27]); cTemp = (plūdė) cTempint /100.0; cTemp /= 10,0; fTemp = cTemp * 1,8 + 32; fTemp /= 10,0; baterija = atsitiktinis (100, 327); įtampa = baterija/100; mazgasId = duomenys [16];}

Prisijungimas prie „UbiDots MQTT“API

Įtraukite MQTT proceso antraštės failą

#įtraukti

apibrėžti kitus MQTT kintamuosius, pvz., kliento vardą, tarpininko adresą, prieigos rakto ID (mes gauname žetono ID iš EEPROM)

#define MQTT_CLIENT_NAME "ClientVBShightime123"

char mqttBroker = "things.ubidots.com";

anglies naudingoji apkrova [100]; char tema [150];

// sukurti kintamąjį, kad būtų išsaugotas prieigos rakto ID

String tokenId;

Sukurkite kintamuosius skirtingiems jutiklių duomenims saugoti ir sukurkite char kintamąjį, kad išsaugotumėte temą

#define VARIABLE_LABEL_TEMPF "tempF" // Kintamosios etiketės priskyrimas #define VARIABLE_LABEL_TEMPC "tempC" // Kintamosios etiketės #define VARIABLE_LABEL_BAT "bat" #define VARIABLE_LABEL_HUMID "drėgnos etiketės" priskyrimas // Assing

char tema1 [100]; char tema2 [100]; char tema3 [100];

paskelbti duomenis minėtoje MQTT temoje, naudingoji apkrova atrodys {"tempc": {value: "tempData"}}

sprintf (tema1, "%s", ""); sprintf (tema1, „%s%s“, „/v1.6/devices/“, DEVICE_LABEL); sprintf (naudingoji apkrova, „%s“, „“); // Išvalo naudingąją apkrovą sprintf (naudingoji apkrova, "{"%s / ":", VARIABLE_LABEL_TEMPC); // Prideda vertę sprintf (naudingoji apkrova, "%s {" vertė / ":%s}", naudingoji apkrova, str_cTemp); // Prideda vertę sprintf (naudingoji apkrova, "%s}", naudingoji apkrova); // Uždaro žodyno skliaustus Serial.println (naudingoji apkrova); Serial.println (client.publish (tema1, naudingoji apkrova)? "Paskelbta": "nepaskelbta");

// Darykite tą patį ir kitai temai

client.publish () skelbia duomenis „UbiDots“

5 žingsnis: vizualizuokite duomenis

Duomenų vizualizavimas
Duomenų vizualizavimas
Duomenų vizualizavimas
Duomenų vizualizavimas
Duomenų vizualizavimas
Duomenų vizualizavimas
  • Eikite į „Ubidots“ir prisijunkite prie savo paskyros.
  • Viršuje esančiame skirtuke Duomenys eikite į informacijos suvestinę.
  • Dabar spustelėkite „+“piktogramą, kad pridėtumėte naujų valdiklių.
  • Iš sąrašo pasirinkite valdiklį ir pridėkite kintamąjį bei įrenginius.
  • Jutiklio duomenis galima vizualizuoti prietaisų skydelyje naudojant skirtingus valdiklius.

6 žingsnis: bendras kodas

HTML ir ESP32 „Over“kodą galima rasti šioje „GitHub“saugykloje.

Kreditai

  • ncd ESP32 pertraukimo plokštė.
  • ncd Belaidžiai temperatūros ir drėgmės jutikliai.
  • pubsclubient
  • „UbiDots“
  • Darbų planuotojas

Rekomenduojamas: