Turinys:
- 1 žingsnis: Aparatūros ir programinės įrangos specifikacija
- 2 veiksmas: sukurkite nelaisvės portalą
- 3 veiksmas: pateikite „WiFi“ir „UbiDots“kredencialus
- 4 žingsnis: paskelbkite jutiklių rodmenis „UbiDots“
- 5 žingsnis: vizualizuokite duomenis
- 6 žingsnis: bendras kodas
Video: „UbiDots“-ESP32 prijungimas ir kelių jutiklių duomenų paskelbimas: 6 veiksmai
2024 Autorius: John Day | [email protected]. Paskutinį kartą keistas: 2024-01-30 10:47
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
- ESP32 WiFi/BLE
- Belaidis temperatūros ir drėgmės jutiklis
Programinės įrangos specifikacija
„Arduino IDE“
2 veiksmas: sukurkite nelaisvės portalą
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
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
- 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:
ESP 32 prijungimas su ultragarso jutikliu: 3 žingsniai
ESP 32 prijungimas prie ultragarso jutiklio: ultragarso jutikliai veikia skleisdami garso bangas, kurių dažnis yra per didelis, kad žmonės galėtų išgirsti. Tada jie laukia, kol garsas atsispindės, apskaičiuodami atstumą pagal reikalingą laiką. Tai panašu į tai, kaip radaras matuoja laiką, kurio reikia
„Processing“ir „Arduino“prijungimas ir 7 segmentų ir servo GUI valdiklio prijungimas: 4 žingsniai
„Processing“ir „Arduino“bei „Make 7 Segment“ir „Servo GUI Controller“prijungimas: Kai kuriems jūsų sukurtiems projektams reikia naudoti „Arduino“, nes tai yra paprasta prototipų kūrimo platforma, tačiau grafikos rodymas „Arduino“serijos monitoriuje gali užtrukti gana ilgai ir net sunku. Galite rodyti grafikus „Arduino“serijos monitoriuje
KELIŲ JUTIKLIŲ PRIJUNGIMAS SU VIENU ARDUINO UNO SERIAL PORT: 4 žingsniai
KELIŲ JUTIKLIŲ PRIJUNGIMAS SU VIENU ARDUINO UNO SERIAL PORT: Šioje pamokoje mes išplėsime vieną „Arduino UNO UART“(Rx/Tx) nuoseklųjį prievadą, kad būtų galima prijungti kelis „Atlas“jutiklius. Plėtimas atliekamas naudojant 8: 1 nuosekliojo prievado plėtiklio plokštę. „Arduino“prievadas yra prijungtas prie plėtiklio po to, kai
KELIŲ JUTIKLIŲ PRIJUNGIMAS SU RASPBERRY PI: 6 žingsniai (su paveikslėliais)
KELIŲ JUTIKLIŲ JUNGIMAS su AVYNĖS PI: Šiame projekte mes prijungsime tris „Atlas Scientific“EZO jutiklius (pH, ištirpusį deguonį ir temperatūrą) prie „Raspberry Pi 3B+“. Užuot prijungę grandines prie „Raspberry Pi“, mes naudosime „Whitebox Labs Tentacle T3“skydą. T
Kelių mygtukų prijungimas prie vieno „Arduino“kaiščio: 4 veiksmai
Kelių mygtukų prijungimas prie vieno „Arduino“kaiščio: Sveiki visi, kai jūsų „Arduino“projektuose užaugo mirksintys šviesos diodai, jums gali prireikti papildomų kaiščių. Parodysiu triuką, kurį galite naudoti ten, kur galite turėti kelis mygtukus, kurie visi yra prijungti prie to paties analoginio kaiščio