Obsah:

Publikování dat senzoru bezdrátového tlaku pomocí MQTT: 7 kroků
Publikování dat senzoru bezdrátového tlaku pomocí MQTT: 7 kroků

Video: Publikování dat senzoru bezdrátového tlaku pomocí MQTT: 7 kroků

Video: Publikování dat senzoru bezdrátového tlaku pomocí MQTT: 7 kroků
Video: KOM21 Měření vlhkosti 2024, Listopad
Anonim
Publikování dat senzoru bezdrátového tlaku pomocí MQTT
Publikování dat senzoru bezdrátového tlaku pomocí MQTT

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 senzoru z bezdrátového senzoru tlaku a teploty
  • Hostování webového formuláře z ESP32.
  • Čtení a zápis z SPIFFS ESP32.

Krok 1: Specifikace hardwaru a softwaru

Specifikace hardwaru

  • ESP32 WiFi/BLE
  • Bezdrátový snímač tlaku a teploty

Specifikace softwaru

  • Arduino IDE
  • XCTU
  • Nástroj Labview

Krok 2: Bezdrátové snímače tlaku a teploty

Bezdrátové snímače tlaku a teploty
Bezdrátové snímače tlaku a teploty
Bezdrátové snímače tlaku a teploty
Bezdrátové snímače tlaku a teploty
Bezdrátové snímače tlaku a teploty
Bezdrátové snímače tlaku a teploty

Funkce

  • Průmyslový snímač Bezdrátový snímač teploty s dlouhým dosahem
  • Provozní rozsah 0 až 14 000 mbar -40 ° až +85 ° C (-40 ° až 185 ° F)
  • Konfigurovatelné interní výpočetní rozlišení tlaku 0,012 až 0,065 mbar
  • Konfigurovatelné vnitřní výpočetní teplotní rozlišení 0,002 až 0,012 ° C
  • Přesnost ± 2,5 mbar, ± 2 ° C
  • Výstupy pro absolutní tlak, relativní tlak a relativní nadmořskou výšku
  • 2 mílový dosah s integrovanou anténou
  • Vynikající dosah LOS až 28 mil s anténami s vysokým ziskem
  • Rozhraní k Raspberry Pi, Microsoft® Azure®, Arduino a dalším
  • Bezdrátová síťová síť využívající DigiMesh®

Konfigurace bezdrátového senzoru tlaku a teploty pomocí Labview Utility a XCTU

Senzor pracuje ve dvou režimech

  • Konfigurační režim: Nakonfigurujte ID Pan, zpoždění, počet opakování atd. Více o tom je mimo rozsah tohoto pokynu a bude vysvětleno v dalším pokynu.
  • Run Mode: Zařízení provozujeme v režimu Run. A pro analýzu těchto hodnot používáme nástroj Labview Utility

Toto uživatelské rozhraní Labview zobrazuje hodnoty v pěkných grafech. Zobrazuje aktuální i minulé hodnoty. Chcete -li si stáhnout uživatelské rozhraní Labview, přejděte na tento odkaz. kliknutím na ikonu Spustit v nabídce vstupní stránky přejdete do režimu spuštění.

Krok 3: Připojení k WiFi

Připojení k WiFi
Připojení k WiFi
Připojení k WiFi
Připojení k WiFi

Portál pro zajetí používáme k ukládání pověření WiFi a k přechodu přes nastavení IP. Podrobný úvod do portálu pro zajetí můžete projít následujícím návodem.

Portál pro zajetí nám dává možnost vybrat si mezi statickým a DHCP nastavením. Stačí zadat přihlašovací údaje, jako je statická IP, maska podsítě, brána a bezdrátová senzorová brána se na této IP nakonfigurují.

Hostuje se webová stránka se seznamem dostupných WiFi sítí a RSSI. Vyberte síť WiFi a heslo a zadejte odeslat. Pověření budou uložena do EEPROM a nastavení IP bude uloženo do SPIFFS. Více o tom najdete v tomto návodu.

Krok 4: Nastavení UbiDots na ESP32

Nastavení UbiDots na ESP32
Nastavení UbiDots na ESP32

Zde používáme bezdrátové snímače tlaku a teploty 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

pokud (Serial1.available ())

{data [0] = Serial1.read (); zpoždění (k); if (data [0] == 0x7E) {while (! Serial1.available ()); pro (i = 1; i <36; i ++) {data = Serial1.read (); zpoždění (1); } if (data [15] == 0x7F) /////// pro kontrolu, zda jsou přijímaná data správná {if (data [22] == 0x06) //////// zkontrolujte typ senzoru je správná {int cTemp = (((((data [24]) * 256) + data [25])); int16_t abs_pressure = (((((uint16_t) (data [26]) << 8) | data [27])*0,001); int rlt_pressure = (((((data [28]) * 256) + data [29]) * 0,001); int16_t delta_alt = (((((uint16_t) (data [30]) << 8) | data [31])*0,01); float baterie = ((data [18] * 256) + data [19]); plovoucí napětí = 0,00322 * baterie; Serial.print („číslo senzoru“); Serial.println (data [16]); Serial.print („Typ senzoru“); Serial.println (data [22]); Serial.print („Verze firmwaru“); Serial.println (data [17]); Serial.print ("Teplota ve stupních Celsia:"); Serial.print (cTemp); Serial.println ("C"); Serial.print („Absolutní tlak:“); Serial.println (abs_pressure); Serial.print ("mbar"); Serial.print („Relativní tlak:“); Serial.println (rlt_pressure); Serial.print ("mbar"); Serial.print ("Delta Altitude:"); Serial.println (delta_alt); Serial.print ("metr"); Serial.print ("hodnota ADC:"); Serial.println (baterie); Serial.print ("Napětí baterie:"); Serial.print (napětí); Serial.println ("\ n"); if (napětí <1) {Serial.println ("Čas na výměnu baterie"); }}} else {for (i = 0; i <36; i ++) {Serial.print (data ); Serial.print (","); zpoždění (1); }}}}

Připojení k UbiDots MQTT API

Zahrňte soubor záhlaví pro proces MQTT

#zahrnout

definujte pro MQTT další proměnné, jako je jméno klienta, adresa makléře, ID tokenu

#define TOKEN "BBFF-*************************************" // // Vaše Ubidots TOKEN#definovat MQTT_CLIENT_NAME "****************************"

char mqttBroker = "things.ubidots.com";

užitečné zatížení char [100]; char téma [150]; // vytvoření proměnné pro uložení tokenu ID tokenu

Krok 5: Publikování údajů ze senzorů do UbiDots

Publikování údajů ze senzorů do UbiDots
Publikování údajů ze senzorů do UbiDots

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 6: 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 7: 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 tlaku a teploty
  • pubsubclient
  • UbiDots
  • Plánovač úkolů

Doporučuje: