Obsah:

UbiDots-Pripojenie ESP32 a publikovanie údajov z viacerých senzorov: 6 krokov
UbiDots-Pripojenie ESP32 a publikovanie údajov z viacerých senzorov: 6 krokov

Video: UbiDots-Pripojenie ESP32 a publikovanie údajov z viacerých senzorov: 6 krokov

Video: UbiDots-Pripojenie ESP32 a publikovanie údajov z viacerých senzorov: 6 krokov
Video: Изучите Arduino за 30 минут: примеры и проекты 2024, November
Anonim
UbiDots-Pripojenie ESP32 a publikovanie údajov z viacerých senzorov
UbiDots-Pripojenie ESP32 a publikovanie údajov z viacerých senzorov

ESP32 a ESP 8266 sú veľmi dobre známe SoC v oblasti IoT. Toto sú akési výhody pre projekty internetu vecí. ESP 32 je zariadenie s integrovaným WiFi a BLE. Stačí zadať konfiguráciu SSID, heslo a IP a integrovať veci do cloudu. Tu v tomto návode sa zamyslíme nad niektorými základnými pojmami IoT, ako sú platforma IoT, MQTT, portály pre vlastnú potrebu atď. Poďme si to teda prejsť.

  • Architektúra IoT veľmi jednoduchými slovami pozostáva z vstavaného zariadenia a platformy IoT na umiestnenie zariadenia do cloudu. Tu používame platformu UbiDots IoT na vizualizáciu údajov zo senzorov.
  • Správa nastavení IP a poverení používateľa môže byť pre používateľa bolesť hlavy. Čo keď chce používateľ zmeniť poverenia WiFi? Čo keď chce používateľ zmeniť nastavenia DHCP/statickej IP? Blikanie ESP32 vždy nie je spoľahlivé a dokonca ani riešenie týchto problémov. Prejdeme teda portálom na uchovanie, aby sme uložili poverenia WiFi a ďalšie konfigurácie.
  • MQTT sa teraz stáva veľmi bežným pojmom vo svete internetu vecí. vďaka rýchlej, robustnej a štíhlej architektúre prekonal požiadavky na publikovanie a predplatné (HTTP).

Tu v tomto návode budeme demonštrovať.

  • Poskytovanie poverení WiFi a MQTT pomocou portálu pre vlastnú potrebu.
  • Publikovanie a predplatné viacerých údajov senzorov do UbiDots.
  • Čítanie údajov zo senzorov z bezdrôtových snímačov teploty a vlhkosti.
  • Hostenie webového formulára z ESP32.
  • Čítanie a zápis z SPIFFS ESP32.

Krok 1: Špecifikácia hardvéru a softvéru

Špecifikácia hardvéru a softvéru
Špecifikácia hardvéru a softvéru
  • ESP32 WiFi/BLE
  • Bezdrôtový snímač teploty a vlhkosti

Špecifikácia softvéru

Arduino IDE

Krok 2: Vytvorenie portálu pre vlastnú potrebu

Vytvorenie portálu pre vlastnú potrebu
Vytvorenie portálu pre vlastnú potrebu
Vytvorenie portálu pre vlastnú potrebu
Vytvorenie portálu pre vlastnú potrebu
Vytvorenie portálu pre vlastnú potrebu
Vytvorenie portálu pre vlastnú potrebu

Portál na prihlásenie do vlastníctva je webová stránka, ktorá sa zobrazuje novo pripojeným používateľom predtým, ako im bude poskytnutý širší prístup k sieťovým zdrojom. Tu ponúkame tri webové stránky na výber medzi nastaveniami DHCP a statickej IP. môžeme definovať IP adresu pre ESP dvoma spôsobmi.

  • Adresa IP DHCP- je to spôsob, ako dynamicky priradiť adresu IP zariadeniu. Predvolená adresa IP ESP je 192.168.4.1
  • Statická adresa IP- priradenie trvalej adresy IP nášmu sieťovému zariadeniu. Aby sme zariadeniu poskytli statickú IP, musíme definovať IP adresu, adresu brány a masku podsiete.

Prvá webová stránka je hostovaná na adrese 192.168.1.77. Tu sú používateľovi k dispozícii prepínače na výber medzi nastaveniami DHCP a Static IP. Na ďalšej webovej stránke musíme poskytnúť informácie súvisiace s IP, aby sme mohli pokračovať ďalej.

HTML kód

HTML kód pre webové stránky nájdete v tomto úložisku Github. Na vytváranie webových stránok HTML môžete použiť akékoľvek IDE alebo textový editor, ako napríklad Sublime alebo notepad ++.

  • Najprv vytvorte webovú stránku HTML obsahujúcu dva prepínače na výber medzi nastaveniami DHCP a statickej IP.
  • Teraz vytvorte tlačidlo na odoslanie odpovede
  • Pomenujte prepínače.
  • Trieda webového servera ESP bude brať tieto názvy ako argumenty a pomocou týchto argumentov dostane odpoveď na prepínače
  • Teraz vložte tlačidlo „ODOSLAŤ“na odoslanie odpovede do zariadenia. Na ostatných webových stránkach máme textové polia.
  • Do textového poľa zadajte hodnotu názvu a typ vstupu a pridajte tlačidlo „Odoslať“na odoslanie odpovede.
  • Vytvorte tlačidlo „RESET“na resetovanie obsahu textového poľa.

Krok 3: Poskytnutie poverení WiFi a UbiDots

Poskytovanie poverení WiFi a UbiDots
Poskytovanie poverení WiFi a UbiDots

Hlavný problém nastáva pri správe poverení WiFi. Aj keď na to máme knižnicu WiFiMulti, v ktorej môžeme zariadeniu poskytnúť viacero SSID a hesiel a zariadenie sa pripojí k dostupnej sieti. Ale čo keď dostupná sieť nie je v zozname WiFiMulti. Neustále blikanie zariadenia ESP32 nie je spoľahlivé riešenie.

Na vyriešenie tohto problému hostíme webovú stránku, na ktorej môže používateľ odoslať SSID a heslo dostupnej siete. Funguje to nasledovne.

  • Webová stránka je hostená na statickej IP alebo DHCP IP podľa výberu používateľa z portálu na prihlásenie do siete
  • Táto webová stránka obsahuje textové polia na zadanie SSID, hesla a ID tokenu UBIDOTS na pripojenie zariadenia k UbiDots.
  • Do vstupných polí zadajte SSID a heslo miestnej WiFi, zadajte ID tokenu UbiDot a zadajte SUBMIT
  • Tieto poverenia sú uložené v EEPROM ESP32
  • Po 60 sekundách sa zariadenie automaticky odpojí od prístupového bodu
  • Keď používateľ najbližšie zapne zariadenie, nemusí tento postup nasledovať. Zariadenie automaticky vyzdvihne prihlasovacie údaje používateľa z pamäte EEPROM a bude pokračovať v publikovaní hodnôt senzorov do UbiDots.

Krok 4: Publikovanie nameraných hodnôt senzora do UbiDots

Tu na získanie údajov o teplote a vlhkosti používame bezdrôtové snímače teploty a vlhkosti so zariadením ESP 32. Údaje odosielame do UbiDots pomocou protokolu MQTT. MQTT sa riadi mechanizmom publikovania a prihlásenia na odber, a nie požiadavkou a odpoveďou. Je rýchlejší a spoľahlivejší ako HTTP. Funguje to nasledovne.

  • Plánovač úloh používame na naplánovanie úlohy, ako je načítanie údajov zo senzorov, publikovanie nameraných hodnôt zo senzorov, Prihlásenie sa na tému MQTT.
  • Najprv zahrňte hlavičkové súbory Plánovača úloh, sú to inštancie a naplánuje úlohy.
  • Naplánovali sme dve úlohy týkajúce sa dvoch rôznych riadiacich operácií.

#define _TASK_TIMEOUT#include

Plánovač ts;

// --------- Úlohy ------------ // Úloha tSensor (4 * TASK_SECOND, TASK_FOREVER, & taskSensorCallback, & ts, false, NULL, & taskSensorDisable); Úloha tWiFi (10* TASK_SECOND, TASK_FOREVER, & taskWiFiCallback, & ts, false, NULL, & taskWiFiDisable);

Úloha 1 je na prečítanie hodnoty senzora. Táto úloha trvá 1 sekundu, kým nedosiahne časový limit 10 sekúnd

  • Akonáhle úloha 1 vyprší, pripájame sa k miestnemu brokerovi Wifi a MQTT.
  • Teraz je úloha 2 povolená a úlohu 1 deaktivujeme
  • Úloha 2 je na publikovanie údajov zo senzorov maklérovi UbiDots MQTT. Táto úloha trvá 20 sekúnd, kým nedosiahne časový limit 20 sekúnd.

  • Akonáhle úloha 2 uplynie, úloha 1 je znova povolená a úloha 2 je zakázaná. Opäť tu dostávame aktualizovanú hodnotu a proces pokračuje.

Čítanie údajov senzora I2C

Z bezdrôtových snímačov teploty a vlhkosti získavame 29-bajtový rámec. S týmto rámcom sa manipuluje, aby sa získali údaje o skutočnej teplote a vlhkosti

uint8_t údaje [29];

údaje [0] = Serial1.read (); oneskorenie (k); // chck pre štartovací bajt if (údaje [0] == 0x7E) {while (! Serial1.available ()); pre (i = 1; i <29; i ++) {údaje = Serial1.read (); oneskorenie (1); } if (data [15] == 0x7F) /////// a skontroluje správnosť prijatých údajov {if (data [22] == 1) //////// uistite sa, že je typ snímača je správne {

vlhkosť = ((((údaje [24]) * 256) + údaje [25]) /100,0); vlhkosť /=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; batéria = náhodná (100, 327); napätie = batéria/100; nodeId = údaje [16];}

Pripojenie k rozhraniu UbiDots MQTT API

Zahrňte súbor hlavičky pre proces MQTT

#zahrnúť

definovať ďalšie premenné pre MQTT, ako je meno klienta, adresa makléra, ID tokenu (načítavame ID tokenu z EEPROM)

#define MQTT_CLIENT_NAME "ClientVBShightime123"

char mqttBroker = "things.ubidots.com";

užitočné zaťaženie znakov [100]; téma témy [150];

// vytvorenie premennej na uloženie ID tokenu

Reťazec tokenId;

Vytvorte premenné na ukladanie rôznych údajov zo senzorov a vytvorte premennú char na ukladanie tém

#define VARIABLE_LABEL_TEMPF "tempF" // Assing the variable label #define VARIABLE_LABEL_TEMPC "tempC" // Assing the variable label #define VARIABLE_LABEL_BAT "bat" #define VARIABLE_LABEL_HUMID "humid" // Assing the variable label

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

publikovať údaje do uvedenej témy MQTT, užitočné zaťaženie bude vyzerať {{tempc ": {value:" tempData "}}

sprintf (topic1, "%s", ""); sprintf (topic1, "%s%s", "/v1.6/devices/", DEVICE_LABEL); sprintf (užitočné zaťaženie, "%s", ""); // Čistí sprintf užitočného zaťaženia (užitočné zaťaženie, "{"%s / ":", VARIABLE_LABEL_TEMPC); // Pridá hodnotu sprintf (užitočné zaťaženie, "%s {" hodnota / ":%s}", užitočné zaťaženie, str_cTemp); // Pridá hodnotu sprintf (užitočné zaťaženie, "%s}", užitočné zaťaženie); // Zatvorí slovníky v zátvorkách Serial.println (užitočné zaťaženie); Serial.println (client.publish (topic1, užitočné zaťaženie)? "Publikované": "nezverejnené");

// Urobte to isté aj pre inú tému

client.publish () publikuje údaje do UbiDots

Krok 5: Vizualizácia údajov

Vizualizácia údajov
Vizualizácia údajov
Vizualizácia údajov
Vizualizácia údajov
Vizualizácia údajov
Vizualizácia údajov
  • Prejdite na stránku Ubidots a prihláste sa do svojho účtu.
  • Prejdite na informačný panel na karte Údaje v hornej časti.
  • Teraz kliknite na ikonu „+“a pridajte nové miniaplikácie.
  • Vyberte miniaplikáciu zo zoznamu a pridajte premennú a zariadenia.
  • Údaje senzora je možné vizualizovať na palubnej doske pomocou rôznych miniaplikácií.

Krok 6: Celkový kód

Nadmerný kód pre HTML a ESP32 nájdete v tomto úložisku GitHub.

Kredity

  • ncd ESP32 oddeľovacia doska.
  • ncd Bezdrôtové snímače teploty a vlhkosti.
  • pubsubclient
  • UbiDots
  • Plánovač úloh

Odporúča: