Tartalomjegyzék:
- 1. lépés: Hardver és szoftver specifikáció
- 2. lépés: Rögzített portál létrehozása
- 3. lépés: WiFi és UbiDots hitelesítő adatok biztosítása
- 4. lépés: Az érzékelői leolvasások közzététele az UbiDots rendszerben
- 5. lépés: Az adatok megjelenítése
- 6. lépés: Általános kód
Videó: UbiDots-ESP32 csatlakoztatása és több érzékelő adatainak közzététele: 6 lépés
2024 Szerző: John Day | [email protected]. Utoljára módosítva: 2024-01-30 09:41
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ó
- 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
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
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
- 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:
Hőmérséklet -érzékelő élő adatainak ábrázolása (TMP006) MSP432 LaunchPad és Python használatával: 9 lépés
Hőmérséklet -érzékelő (TMP006) élő adatainak ábrázolása MSP432 LaunchPad és Python használatával: A TMP006 egy hőmérséklet -érzékelő, amely méri az objektum hőmérsékletét anélkül, hogy kapcsolatba kellene lépnie az objektummal. Ebben az oktatóanyagban a BoosterPack (TI BOOSTXL-EDUMKII) élő hőmérsékleti adatait ábrázoljuk a Python használatával
A vezeték nélküli hőmérséklet- és páratartalom -érzékelő adatainak küldése Excelbe: 34 lépés
A vezeték nélküli hőmérséklet- és páratartalom -érzékelő adatainak küldése Excel -be: Itt az NCD hőmérséklet- és páratartalom -érzékelőjét használjuk, de a lépések minden ncd -termék esetében megegyeznek, így ha más ncd -vezeték nélküli érzékelőkkel rendelkezik, kísérletezzen a mellett. Ennek a szövegnek a leállításával meg kell
TÖBB ÉRZÉKELŐ CSATLAKOZTATÁSA EGY ARDUINO UNO SERIAL PORT -hoz: 4 lépés
TÖBB ÉRZÉKELŐ CSATLAKOZTATÁSA EGY ARDUINO UNO SERIAL PORT -ba: Ebben az oktatóanyagban egyetlen Arduino UNO UART (Rx/Tx) soros portot bővítünk, hogy több Atlas -érzékelő csatlakoztatható legyen. A bővítés 8: 1 soros portbővítő kártyával történik. Az Arduino portja kapcsolódik a bővítőhöz, miután
TÖBB ÉRZÉKELŐ CSATLAKOZTATÁSA RASPBERRY PI -vel: 6 lépés (képekkel)
TÖBB ÉRZÉKELŐ CSATLAKOZTATÁSA RASPBERRY PI -hez: Ebben a projektben az Atlas Scientific három EZO érzékelőjét (pH, oldott oxigén és hőmérséklet) csatlakoztatjuk egy Raspberry Pi 3B+készülékhez. Ahelyett, hogy az áramköröket a Raspberry Pi -hez csatlakoztatnánk, a Whitebox Labs Tentacle T3 pajzsát fogjuk használni. T
Az IoT nagy hatótávolságú vezeték nélküli hőmérséklet- és páratartalom -érzékelő adatainak küldése a Google Táblázatba: 39 lépés
Az IoT nagy hatótávolságú vezeték nélküli hőmérséklet- és páratartalom -érzékelő adatainak küldése a Google Táblázatba: Itt az NCD hőmérséklet- és páratartalom -érzékelőjét használjuk, de a lépések ugyanazok maradnak bármelyik ncd -termék esetében, így ha más ncd vezeték nélküli érzékelővel rendelkezik, nyugodtan figyelje mellett mellette. Ennek a szövegnek a leállításával meg kell