Tartalomjegyzék:

UbiDots-ESP32 csatlakoztatása és több érzékelő adatainak közzététele: 6 lépés
UbiDots-ESP32 csatlakoztatása és több érzékelő adatainak közzététele: 6 lépés

Videó: UbiDots-ESP32 csatlakoztatása és több érzékelő adatainak közzététele: 6 lépés

Videó: UbiDots-ESP32 csatlakoztatása és több érzékelő adatainak közzététele: 6 lépés
Videó: Control 32 Servo over Wi-Fi using ESP32 and PCA9685 via desktop or mobile phone V5 2024, November
Anonim
UbiDots-ESP32 csatlakoztatása és több érzékelő adatainak közzététele
UbiDots-ESP32 csatlakoztatása és több érzékelő adatainak közzététele

Az ESP32 és az ESP 8266 nagyon jól ismert SoC az IoT területén. Ezek egyfajta áldás az IoT projektek számára. Az ESP 32 egy olyan eszköz, amely integrált WiFi -vel és BLE -vel rendelkezik. Csak adja meg SSID -jét, jelszavát és IP -konfigurációit, és integrálja a dolgokat a felhőbe. Itt, ebben az oktatható útmutatóban átgondoljuk az IoT alapvető feltételeit, például az IoT platformot, az MQTT -t, a fogságba esett portálokat stb.

  • Az IoT architektúra nagyon egyszerű szavakkal egy beágyazott eszközből és egy IoT platformból áll, amely az eszközt a felhőbe helyezi. Itt az UbiDots IoT platformot használjuk az érzékelő adatok megjelenítésére.
  • Az IP -beállítások és a felhasználói hitelesítő adatok kezelése fejtörést okozhat a felhasználónak. Mi a teendő, ha a felhasználó módosítani szeretné a WiFi hitelesítő adatait? Mi a teendő, ha a felhasználó meg akarja változtatni a DHCP/statikus IP -beállításokat? Az ESP32 mindenkori villogása nem megbízható, és nem is megoldás ezekre a problémákra. Tehát átmegyünk a fogságban lévő portálon a WiFi hitelesítő adatok és más konfigurációk mentéséhez.
  • Az MQTT ma már nagyon gyakori kifejezéssé válik az IoT világában. felülbírálta a közzététel és a feliratkozás kéréseit és válaszát (HTTP) a gyors, robusztus és karcsú architektúra miatt.

Itt, ebben az oktatóanyagban, demonstrálni fogunk.

  • WiFi és MQTT hitelesítő adatok megadása a Captive Portal használatával.
  • Több érzékelő adatainak közzététele és előfizetése az UbiDots rendszerre.
  • Az érzékelő adatainak beolvasása a vezeték nélküli hőmérséklet- és páratartalom -érzékelőkből.
  • Webes űrlap tárolása az ESP32 -ből.
  • Olvasás és írás SPIFFS ESP32 -ből.

1. lépés: Hardver és szoftver specifikáció

Hardver és szoftver specifikáció
Hardver és szoftver specifikáció
  • ESP32 WiFi/BLE
  • Vezeték nélküli hőmérséklet- és páratartalom -érzékelő

Szoftver specifikáció

Arduino IDE

2. lépés: Rögzített portál létrehozása

Rögzített portál létrehozása
Rögzített portál létrehozása
Rögzített portál létrehozása
Rögzített portál létrehozása
Rögzített portál létrehozása
Rögzített portál létrehozása

A lekötött portál egy olyan weboldal, amely az újonnan csatlakozott felhasználók számára jelenik meg, mielőtt szélesebb hozzáférést kapnak a hálózati erőforrásokhoz. Itt három weboldalt szolgálunk ki, amelyek közül választhatunk a DHCP és a statikus IP -beállítások között. kétféleképpen határozhatjuk meg az IP -címet az ESP -hez.

  • DHCP IP-cím- ez az IP-cím dinamikus hozzárendelésének módja az eszközhöz. Az ESP alapértelmezett IP -címe 192.168.4.1
  • A statikus IP-cím- állandó IP-cím hozzárendelése hálózati eszközünkhöz. Ahhoz, hogy a készülékhez statikus IP -t biztosítsunk, meg kell határoznunk az IP -címet, az átjáró címét és az alhálózati maszkot.

Az első weboldal a 192.168.1.77 címen található. Itt a felhasználó választógombokkal választhat a DHCP és a statikus IP beállítások között. A következő weboldalon meg kell adnunk az IP -vel kapcsolatos információkat a továbblépéshez.

HTML kód

A weboldalak HTML kódja megtalálható ebben a Github adattárban. Bármilyen IDE vagy szövegszerkesztő, például Sublime vagy Jegyzettömb ++ használható HTML weboldalak készítéséhez.

  • Először hozzon létre egy HTML -weboldalt, amely két választógombot tartalmaz a DHCP és a statikus IP -beállítások közötti választáshoz.
  • Most hozza létre a gombot a válasz küldéséhez
  • Adjon nevet a választógomboknak.
  • Az ESP webszerver osztály ezeket a neveket érvként veszi fel, és a választógombok válaszát kapja ezen argumentumok használatával
  • Most helyezzen be egy „SUBMIT” gombot a válasz elküldéséhez az eszközre. A többi weboldalon szövegdobozok vannak.
  • Adja meg a névértéket és a beviteli típust a szövegmezőben, és adjon hozzá egy elküldés gombot a „BEKÜLDÉS” elemhez a válasz elküldéséhez.
  • Hozzon létre egy "RESET" gombot a szövegmező tartalmának visszaállításához.

3. lépés: WiFi és UbiDots hitelesítő adatok biztosítása

WiFi és UbiDots hitelesítő adatok biztosítása
WiFi és UbiDots hitelesítő adatok biztosítása

A fő probléma a WiFi hitelesítő adatok kezelése során jelentkezik. Annak ellenére, hogy van WiFiMulti könyvtárunk, ahol több SSID -t és jelszót adhatunk az eszköznek, és az eszköz csatlakozni fog a rendelkezésre álló hálózathoz. De mi van akkor, ha a rendelkezésre álló hálózat nem szerepel a WiFiMulti listában. Az ESP32 eszköz folyamatos villogása nem megbízható megoldás.

A probléma megoldásához weboldalt üzemeltetünk, ahol a felhasználó elküldheti az elérhető hálózat SSID -jét és jelszavát. A következőképpen működik.

  • A weboldal a felhasználó által a rögzített portálon választott statikus IP vagy DHCP IP címen található
  • Ez a weboldal szöveges mezőket tartalmaz az SSID, a jelszó és az UBIDOTS -token azonosítójának megadásához az eszköz csatlakoztatásához az UbiDots rendszerhez.
  • Írja be a helyi WiFi SSID -jét és jelszavát a beviteli mezőkbe, írja be az UbiDot token azonosítóját, és írja be a SUBMIT
  • Ezeket a hitelesítő adatokat az ESP32 EEPROM -ba menti
  • 60 másodperc elteltével az eszköz automatikusan leválik az AP-ről
  • Amikor legközelebb bekapcsolja az eszközt, a felhasználónak nem kell ezt az eljárást követnie, A készülék automatikusan lekéri a felhasználói hitelesítő adatokat az EEPROM -ból, és folytatja az érzékelői leolvasásának közzétételét az UbiDots rendszerben.

4. lépés: Az érzékelői leolvasások közzététele az UbiDots rendszerben

Itt vezeték nélküli hőmérséklet- és páratartalom -érzékelőket használunk az ESP 32 készülékkel a hőmérséklet- és páratartalom -adatok lekéréséhez. Az adatokat az UbiDots -nak küldjük az MQTT protokoll használatával. Az MQTT egy közzétételi és feliratkozási mechanizmust követ, nem pedig ezt a kérést és választ. Gyorsabb és megbízhatóbb, mint a HTTP. Ez a következőképpen működik.

  • A Feladatütemezőt használjuk a feladat ütemezéséhez, mint például adatok lekérése az érzékelőkből, Az érzékelő leolvasásának közzététele, Feliratkozás az MQTT témára.
  • Először is tartalmazza a Feladatütemező fejlécfájljait, a példányt és a feladatok ütemezését.
  • Két feladatot ütemeztünk, amelyek két különböző vezérlési műveletre vonatkoznak.

#define _TASK_TIMEOUT#include

Ütemezés ts;

// --------- Feladatok ------------ // Task tSensor (4 * TASK_SECOND, TASK_FOREVER, & taskSensorCallback, & ts, false, NULL és & taskSensorDisable); TWiFi feladat (10* TASK_SECOND, TASK_FOREVER, & taskWiFiCallback, & ts, false, NULL és & taskWiFiDisable);

Az 1. feladat az érzékelő értékének leolvasására szolgál, ez a feladat 1 másodpercig fut, amíg el nem éri a 10 másodperces időtúllépést

  • Amikor a Task1 eléri a határidőt Csatlakozunk a helyi Wifi és MQTT brókerhez.
  • Most a 2. feladat engedélyezve van, és letiltjuk az 1. feladatot

  • A 2. feladat az érzékelőadatok közzététele az UbiDots MQTT brókernek, ez a feladat 20 másodpercig fut, amíg el nem éri a 20 másodperces időt
  • Amikor a 2. feladat eléri az időtúllépést, az 1. feladat ismét engedélyezve van, és a 2. feladat le van tiltva. Itt is megkapjuk a frissített értéket, és a folyamat folytatódik.

Az I2C érzékelő adatainak beolvasása

29 bájtos keretet kapunk a vezeték nélküli hőmérséklet- és páratartalom-érzékelőktől. Ezt a keretet manipulálják a tényleges hőmérséklet- és páratartalom -adatok lekérésére

uint8_t adatok [29];

adatok [0] = Sorozat1.olvasás (); késleltetés (k); // chck a kezdő bájthoz if (data [0] == 0x7E) {while (! Serial1.available ()); for (i = 1; i <29; i ++) {data = Sorozat1.olvasás (); késleltetés (1); } if (data [15] == 0x7F) /////// annak ellenőrzésére, hogy a recive adatok helyesek -e {if (data [22] == 1) //////// győződjön meg arról, hogy az érzékelő típusa helyes {

páratartalom = (((([adatok [24]) * 256) + adatok [25]) /100,0); páratartalom /=10,0; cTempint = (((uint16_t) (adatok [26]) << 8) | adatok [27]); cTemp = (lebegés) cTempint /100.0; cTemp /= 10,0; fTemp = cTemp * 1,8 + 32; fTemp /= 10,0; akkumulátor = véletlenszerű (100, 327); feszültség = akkumulátor/100; nodeId = adatok [16];}

Csatlakozás az UbiDots MQTT API -hoz

Tartalmazza a fejlécfájlt az MQTT folyamathoz

#befoglalni

definiáljon más változókat az MQTT számára, mint például az ügyfél neve, a bróker címe, a token azonosítója (A token azonosítót az EEPROM -ból kérjük le)

#define MQTT_CLIENT_NAME "ClientVBShightime123"

char mqttBroker = "things.ubidots.com";

char hasznos terhelés [100]; char topic [150];

// változó létrehozása a token azonosító tárolásához

String tokenId;

Hozzon létre változókat a különböző érzékelőadatok tárolásához, és hozzon létre egy char változót a téma tárolásához

#define VARIABLE_LABEL_TEMPF "tempF" // A változó címke hozzárendelése #define VARIABLE_LABEL_TEMPC "tempC" // A változócímke hozzárendelése #define VARIABLE_LABEL_BAT "bat" #define VARIABLE_LABEL_HUMID "nedves címke" // Assing

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

tegye közzé az adatokat az említett MQTT témában, a hasznos terhelés {{tempc”: {value:" tempData "}}

sprintf (topic1, "%s", ""); sprintf (topic1, "%s%s", "/v1.6/devices/", DEVICE_LABEL); sprintf (hasznos teher, "%s", ""); // Megtisztítja a hasznos terhelést sprintf (hasznos terhelés, "{"%s / ":", VARIABLE_LABEL_TEMPC); // hozzáadja a sprintf értéket (hasznos terhelés, "%s {" érték / ":%s}", hasznos terhelés, str_cTemp); // hozzáadja a sprintf értéket (hasznos terhelés, "%s}", hasznos terhelés); // Bezárja a szótár zárójeleit Serial.println (hasznos terhelés); Serial.println (kliens.publish (topic1, hasznos terhelés)? "Published": "notpublished");

// Ugyanezt tegye más témában is

A client.publish () közzéteszi az adatokat az UbiDots rendszerben

5. lépés: Az adatok megjelenítése

Az adatok vizualizálása
Az adatok vizualizálása
Az adatok vizualizálása
Az adatok vizualizálása
Az adatok vizualizálása
Az adatok vizualizálása
  • Lépjen az Ubidots oldalra, és jelentkezzen be fiókjába.
  • Navigáljon az Irányítópulthoz az adatlap tetején.
  • Most kattintson a "+" ikonra az új modulok hozzáadásához.
  • Válasszon ki egy widgetet a listából, és adjon hozzá egy változót és eszközöket.
  • Az érzékelőadatok a vezérlőpulton különböző widgetek segítségével jeleníthetők meg.

6. lépés: Általános kód

A HTML és az ESP32 Over kódja megtalálható ebben a GitHub adattárban.

Hitelek

  • ncd ESP32 kitörő tábla.
  • ncd Vezeték nélküli hőmérséklet- és páratartalom -érzékelők.
  • pubsubclient
  • UbiDots
  • Feladat ütemező

Ajánlott: