Obsah:

UbiDots-připojení ESP32 a publikování více senzorových dat: 6 kroků
UbiDots-připojení ESP32 a publikování více senzorových dat: 6 kroků

Video: UbiDots-připojení ESP32 a publikování více senzorových dat: 6 kroků

Video: UbiDots-připojení ESP32 a publikování více senzorových dat: 6 kroků
Video: LinuxDays 2015 - MQTT, protokol pro IoT - Adam Hořčica 2024, Červenec
Anonim
UbiDots-připojení ESP32 a publikování více senzorových dat
UbiDots-připojení ESP32 a publikování více senzorových dat

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

Specifikace hardwaru a softwaru
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

Vytvoření portálu pro vlastní potřebu
Vytvoření portálu pro vlastní potřebu
Vytvoření portálu pro vlastní potřebu
Vytvoření portálu pro vlastní potřebu
Vytvoření portálu pro vlastní potřebu
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

Poskytování pověření WiFi a UbiDots
Poskytování 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

Vizualizace dat
Vizualizace dat
Vizualizace dat
Vizualizace dat
Vizualizace dat
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ů

Doporučuje: