Obsah:
Video: UbiDots-připojení ESP32 a publikování více senzorových dat: 6 kroků
2025 Autor: John Day | [email protected]. Naposledy změněno: 2025-01-13 06:57
ESP32 a ESP 8266 jsou velmi dobře známé SoC v oblasti IoT. Toto jsou jakési výhody pro projekty IoT. ESP 32 je zařízení s integrovaným WiFi a BLE. Stačí zadat konfiguraci SSID, hesla a IP a integrovat věci do cloudu. Zde v tomto pokynu se zamyslíme nad některými základními pojmy IoT, jako je platforma IoT, MQTT, Captive portals atd. Pojďme si to tedy projít
- Architektura IoT ve velmi jednoduchých slovech se skládá z integrovaného zařízení a platformy IoT pro umístění zařízení do cloudu. Zde používáme platformu UbiDots IoT k vizualizaci dat ze senzorů.
- Správa nastavení IP a přihlašovacích údajů uživatele může být pro uživatele bolest hlavy. Co když chce uživatel změnit pověření WiFi? Co když chce uživatel změnit nastavení DHCP/Static IP? Blikání ESP32 pokaždé není spolehlivé a dokonce ani řešení těchto problémů. Projdeme tedy portál pro zajetí, abychom uložili přihlašovací údaje WiFi a další konfigurace.
- MQTT se nyní stává velmi běžným pojmem ve světě IoT. díky rychlé, robustní a štíhlé architektuře překonal požadavky na publikování a odběr (HTTP).
Zde v tomto pokynu budeme demonstrovat.
- Poskytování pověření WiFi a MQTT pomocí Captive Portal.
- Publikování a přihlášení k odběru více dat senzorů do UbiDots.
- Čtení dat ze senzorů z bezdrátových snímačů teploty a vlhkosti.
- Hostování webového formuláře z ESP32.
- Čtení a zápis z SPIFFS ESP32.
Krok 1: Specifikace hardwaru a softwaru
- ESP32 WiFi/BLE
- Bezdrátový snímač teploty a vlhkosti
Specifikace softwaru
Arduino IDE
Krok 2: Vytvoření portálu pro vlastní potřebu
Zajatý portál je webová stránka, která se zobrazí nově připojeným uživatelům před tím, než jim bude udělen širší přístup k síťovým prostředkům. Zde nabízíme tři webové stránky pro výběr mezi nastavením DHCP a Static IP. IP adresu pro ESP můžeme definovat dvěma způsoby.
- DHCP IP adresa- je to způsob, jak dynamicky přiřadit IP adresu zařízení. Výchozí IP adresa ESP je 192.168.4.1
- Statická IP adresa- přiřazení trvalé IP adresy našemu síťovému zařízení. k zajištění statické IP adresy zařízení potřebujeme definovat IP adresu, adresu brány a masku podsítě.
První webová stránka je hostována na adrese 192.168.1.77. Zde jsou uživateli k dispozici přepínače pro výběr mezi nastavením DHCP a Static IP. Na další webové stránce musíme poskytnout informace související s IP, abychom mohli pokračovat dále.
HTML kód
HTML kód pro webové stránky najdete v tomto úložišti Github. K vytváření webových stránek HTML můžete použít jakýkoli IDE nebo textový editor, jako je Sublime nebo notepad ++.
- Nejprve vytvořte webovou stránku HTML obsahující dva přepínače pro výběr mezi nastavením DHCP a statickou IP.
- Nyní vytvořte tlačítko pro odeslání odpovědi
- Pojmenujte přepínače.
- Třída webového serveru ESP bude tyto názvy brát jako argumenty a pomocí těchto argumentů získá odpověď přepínačů
- Nyní vložte tlačítko 'ODESLAT' pro odeslání odpovědi do zařízení. Na ostatních webových stránkách máme textová pole.
- Do textového pole zadejte hodnotu názvu a typ vstupu a přidejte tlačítko Odeslat k odeslání odpovědi „ODESLAT“.
- Vytvořením tlačítka „RESET“obnovíte obsah textového pole.
Krok 3: Poskytnutí pověření WiFi a UbiDots
Hlavní problém nastává při správě pověření WiFi. I když pro to máme knihovnu WiFiMulti, kde můžeme zařízení poskytnout více SSID a hesel a zařízení se připojí k dostupné síti. Ale co když dostupná síť není v seznamu WiFiMulti. Neustálé blikání zařízení ESP32 není spolehlivé řešení.
Chcete -li tento problém vyřešit, hostujeme webovou stránku, kde může uživatel odeslat SSID a heslo dostupné sítě. Funguje to následovně.
- Webová stránka je hostována na statické IP nebo DHCP IP, kterou si uživatel zvolil z portálu pro zajetí
- Tato webová stránka obsahuje textová pole pro zadání SSID, hesla a ID tokenu UBIDOTS pro připojení zařízení k UbiDots.
- Do vstupních polí zadejte SSID a heslo vaší místní WiFi, zadejte ID tokenu UbiDot a zadejte SUBMIT
- Tato pověření jsou uložena v EEPROM ESP32
- Po 60 sekundách se zařízení automaticky odpojí od přístupového bodu
- Až příště zapnete zařízení, uživatel nemusí tento postup dodržovat, zařízení automaticky načte přihlašovací údaje uživatele z EEPROM a bude pokračovat v publikování naměřených hodnot na UbiDots.
Krok 4: Publikování údajů ze senzorů do UbiDots
Zde používáme bezdrátové snímače teploty a vlhkosti se zařízením ESP 32 k získávání údajů o teplotě a vlhkosti. Data odesíláme do UbiDots pomocí protokolu MQTT. MQTT sleduje spíše mechanismus publikování a odběru, než požadavek a odpověď. Je rychlejší a spolehlivější než HTTP. Funguje to následovně.
- Používáme Plánovač úloh k naplánování úkolu, jako je načítání dat ze senzorů, publikování údajů ze senzorů, Přihlášení k tématu MQTT.
- Nejprve zahrňte soubory záhlaví Plánovače úloh, je to instance a naplánuje úkoly.
- Naplánovali jsme dva úkoly odkazující na dvě různé řídicí operace.
#define _TASK_TIMEOUT#include
Plánovač ts;
// --------- Úkoly ------------ // Úkol tSensor (4 * TASK_SECOND, TASK_FOREVER, & taskSensorCallback, & ts, false, NULL, & taskSensorDisable); Úkol tWiFi (10* TASK_SECOND, TASK_FOREVER, & taskWiFiCallback, & ts, false, NULL, & taskWiFiDisable);
Úkol 1 je pro čtení hodnoty senzoru, který běží po dobu 1 sekundy, dokud nedosáhne časového limitu 10 sekund
- Když úkol 1 vyprší, připojujeme se k místnímu brokerovi Wifi a MQTT.
- Nyní je úkol 2 povolen a deaktivujeme úkol 1
-
Úkol 2 je pro publikování dat senzoru brokerovi UbiDots MQTT. Tento úkol běží 20 sekund, dokud nedosáhne časového limitu 20 sekund
- Když úkol 2 vyprší, úkol 1 je znovu povolen a úkol 2 je deaktivován. Zde opět získáváme aktualizovanou hodnotu a proces pokračuje.
Čtení dat senzoru I2C
Získáváme 29bajtový rámec z bezdrátových snímačů teploty a vlhkosti. Tento rámec je zpracován tak, aby získal údaje o skutečné teplotě a vlhkosti
uint8_t data [29];
data [0] = Serial1.read (); zpoždění (k); // chck pro start byte if (data [0] == 0x7E) {while (! Serial1.available ()); pro (i = 1; i <29; i ++) {data = Serial1.read (); zpoždění (1); } if (data [15] == 0x7F) /////// pro kontrolu správnosti přijímaných dat {if (data [22] == 1) //////// zkontrolujte typ senzoru je správně {
vlhkost = ((((data [24]) * 256) + data [25]) /100,0); vlhkost /=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; baterie = náhodná (100, 327); napětí = baterie/100; nodeId = data [16];}
Připojení k UbiDots MQTT API
Zahrňte soubor záhlaví pro proces MQTT
#zahrnout
definovat další proměnné pro MQTT, jako je jméno klienta, adresa makléře, ID tokenu (načítáme ID tokenu z EEPROM)
#define MQTT_CLIENT_NAME "ClientVBShightime123"
char mqttBroker = "things.ubidots.com";
užitečné zatížení znaků [100]; téma tématu [150];
// vytvoření proměnné pro uložení ID tokenu
Řetězec tokenId;
Vytvořte proměnné pro ukládání různých dat ze senzorů a vytvořte proměnnou char pro uložení tématu
#define VARIABLE_LABEL_TEMPF "tempF" // Zadání označení proměnné #define VARIABLE_LABEL_TEMPC "tempC" // Zadání označení proměnné #define VARIABLE_LABEL_BAT "bat" #define VARIABLE_LABEL_HUMID "vlhké" // Označení proměnné
char topic1 [100]; char topic2 [100]; char topic3 [100];
publikovat data do zmíněného tématu MQTT, užitečné zatížení bude vypadat jako {"tempc": {value: "tempData"}}
sprintf (topic1, "%s", ""); sprintf (topic1, "%s%s", "/v1.6/devices/", DEVICE_LABEL); sprintf (užitečné zatížení, "%s", ""); // Čistí sprintf užitečného zatížení (užitečné zatížení, "{"%s / ":", VARIABLE_LABEL_TEMPC); // Přidá hodnotu sprintf (užitečné zatížení, "%s {" hodnota / ":%s}", užitečné zatížení, str_cTemp); // Přidá hodnotu sprintf (užitečné zatížení, "%s}", užitečné zatížení); // Zavře závorky slovníku Serial.println (užitečné zatížení); Serial.println (client.publish (topic1, užitečné zatížení)? "Publikováno": "nezveřejněno");
// Udělejte to samé i pro jiné téma
client.publish () publikuje data do UbiDots
Krok 5: Vizualizace dat
- Přejděte na Ubidots a přihlaste se ke svému účtu.
- Přejděte na hlavní panel z karty Data uvedené v horní části.
- Nyní klikněte na ikonu „+“a přidejte nové widgety.
- Vyberte ze seznamu widget a přidejte proměnnou a zařízení.
- Data senzorů lze zobrazit na palubní desce pomocí různých widgetů.
Krok 6: Celkový kód
Over code pro HTML a ESP32 najdete v tomto úložišti GitHub.
Kredity
- ncd ESP32 breakout deska.
- ncd Bezdrátové snímače teploty a vlhkosti.
- pubsubclient
- UbiDots
- Plánovač úkolů