Obsah:

Publikovanie údajov senzora bezdrôtového tlaku pomocou MQTT: 7 krokov
Publikovanie údajov senzora bezdrôtového tlaku pomocou MQTT: 7 krokov

Video: Publikovanie údajov senzora bezdrôtového tlaku pomocou MQTT: 7 krokov

Video: Publikovanie údajov senzora bezdrôtového tlaku pomocou MQTT: 7 krokov
Video: Многопользовательские 3D воздушные истребители!! 🛩✈🛫🛬 - Air Wars 3 GamePlay 🎮📱 2024, Júl
Anonim
Publikovanie údajov senzora bezdrôtového tlaku pomocou MQTT
Publikovanie údajov senzora bezdrôtového tlaku pomocou MQTT

ESP32 a ESP 8266 sú veľmi dobre známe SoC v oblasti IoT. Toto sú akési výhody pre projekty internetu vecí. ESP 32 je zariadenie s integrovaným WiFi a BLE. Stačí zadať konfiguráciu SSID, heslo a IP a integrovať veci do cloudu. Tu v tomto návode sa zamyslíme nad niektorými základnými pojmami IoT, ako sú platforma IoT, MQTT, portály pre vlastnú potrebu atď. Poďme si to teda prejsť.

  • Architektúra IoT veľmi jednoduchými slovami pozostáva z vstavaného zariadenia a platformy IoT na umiestnenie zariadenia do cloudu. Tu používame platformu UbiDots IoT na vizualizáciu údajov zo senzorov.
  • Správa nastavení IP a poverení používateľa môže byť pre používateľa bolesť hlavy. Čo keď chce používateľ zmeniť poverenia WiFi? Čo keď chce používateľ zmeniť nastavenia DHCP/statickej IP? Blikanie ESP32 vždy nie je spoľahlivé a dokonca ani riešenie týchto problémov. Prejdeme teda portálom na uchovanie, aby sme uložili poverenia WiFi a ďalšie konfigurácie.
  • MQTT sa teraz stáva veľmi bežným pojmom vo svete internetu vecí. vďaka rýchlej, robustnej a štíhlej architektúre prekonal požiadavky na publikovanie a predplatné (HTTP).

Tu v tomto návode budeme demonštrovať.

  • Poskytovanie poverení WiFi a MQTT pomocou portálu pre vlastnú potrebu.
  • Publikovanie a predplatné viacerých údajov senzorov do UbiDots.
  • Čítanie údajov zo senzora z bezdrôtového snímača tlaku a teploty
  • Hostenie webového formulára z ESP32.
  • Čítanie a zápis z SPIFFS ESP32.

Krok 1: Špecifikácia hardvéru a softvéru

Špecifikácia hardvéru

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

Špecifikácia softvéru

  • 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

Vlastnosti

  • Priemyselný snímač bezdrôtového snímača teploty s dlhým dosahom
  • Prevádzkový rozsah 0 až 14 000 mbar -40 ° až +85 ° C (-40 ° až 185 ° F)
  • Konfigurovateľné rozlíšenie interného výpočtu tlaku 0,012 až 0,065 mbar
  • Konfigurovateľné rozlíšenie vnútornej teploty výpočtu 0,002 až 0,012 ° C
  • Presnosť ± 2,5 mbar, ± 2 ° C
  • Výstupy absolútneho tlaku, relatívneho tlaku a relatívnej nadmorskej výšky
  • 2 míľový dosah s integrovanou anténou
  • Vynikajúci dosah LOS až 28 míľ s anténami s vysokým ziskom
  • Rozhranie k Raspberry Pi, Microsoft® Azure®, Arduino a ďalším
  • Bezdrôtová sieťová sieť pomocou DigiMesh®

Konfigurácia bezdrôtového snímača tlaku a teploty pomocou Labview Utility a XCTU

Senzor pracuje v dvoch režimoch

  • Konfiguračný režim: Nakonfigurujte Pan ID, oneskorenie, počet opakovaní atď. Viac o tomto je nad rámec tohto pokynu a bude vysvetlené v nasledujúcom návode.
  • Režim spustenia: Zariadenie používame v režime spustenia. A na analýzu týchto hodnôt používame nástroj Labview Utility

Toto používateľské rozhranie Labview zobrazuje hodnoty v pekných grafoch. Zobrazuje aktuálne aj minulé hodnoty. Na tento odkaz si môžete stiahnuť používateľské rozhranie Labview. kliknutím na ikonu Spustiť v ponuke vstupnej stránky prejdete do režimu spustenia.

Krok 3: Pripojenie k WiFi

Pripojenie k WiFi
Pripojenie k WiFi
Pripojenie k WiFi
Pripojenie k WiFi

Portál na prihlásenie používame na ukladanie poverení WiFi a na pohyb v nastaveniach IP. Podrobný úvod do portálu na zajatie nájdete v nasledujúcom návode.

Portál pre vlastnú potrebu nám dáva možnosť vybrať si medzi statickým a DHCP nastavením. Stačí zadať prihlasovacie údaje, ako sú statická adresa IP, maska podsiete, brána a bezdrôtová senzorová brána sa na tejto adrese IP nakonfigurujú.

Je hostiteľom webovej stránky so zoznamom dostupných sietí WiFi a RSSI. Vyberte sieť WiFi a heslo a zadajte príkaz na odoslanie. Poverenia sa uložia do EEPROM a nastavenie IP sa uloží do SPIFFS. Viac o tom nájdete v tomto návode.

Krok 4: Nastavenie UbiDots na ESP32

Nastavenie UbiDots na ESP32
Nastavenie UbiDots na ESP32

Tu používame bezdrôtové snímače tlaku a teploty so zariadením ESP 32 na získanie údajov o teplote a vlhkosti. Údaje odosielame do UbiDots pomocou protokolu MQTT. MQTT sa riadi mechanizmom publikovania a prihlásenia na odber, a nie požiadavkou a odpoveďou. Je rýchlejší a spoľahlivejší ako HTTP. Funguje to nasledovne.

  • Plánovač úloh používame na naplánovanie úlohy, ako je načítanie údajov zo senzorov, publikovanie nameraných hodnôt zo senzorov, Prihlásenie sa na tému MQTT.
  • Najprv zahrňte hlavičkové súbory Plánovača úloh, sú to inštancie a naplánuje úlohy.
  • Naplánovali sme dve úlohy týkajúce sa dvoch rôznych riadiacich operácií.

#define _TASK_TIMEOUT#include Plánovač ts; // --------- Úlohy ------------ // Úloha tSensor (4 * TASK_SECOND, TASK_FOREVER, & taskSensorCallback, & ts, false, NULL, & taskSensorDisable); Úloha tWiFi (10* TASK_SECOND, TASK_FOREVER, & taskWiFiCallback, & ts, false, NULL, & taskWiFiDisable);

  • Úloha 1 je na prečítanie hodnoty senzora. Táto úloha trvá 1 sekundu, kým nedosiahne časový limit 10 sekúnd.
  • Akonáhle úloha 1 vyprší, pripájame sa k miestnemu brokerovi Wifi a MQTT.
  • Teraz je úloha 2 povolená a úlohu 1 deaktivujeme
  • Úloha 2 je na publikovanie údajov zo senzorov maklérovi UbiDots MQTT. Táto úloha trvá 20 sekúnd, kým nedosiahne časový limit 20 sekúnd.
  • Akonáhle úloha 2 uplynie, úloha 1 je znova povolená a úloha 2 je zakázaná. Opäť tu dostávame aktualizovanú hodnotu a proces pokračuje.

Čítanie údajov senzora I2C

Z bezdrôtových snímačov teploty a vlhkosti získavame 29-bajtový rámec. S týmto rámcom sa manipuluje, aby sa získali údaje o skutočnej teplote a vlhkosti

ak (Serial1.available ())

{data [0] = Serial1.read (); oneskorenie (k); if (data [0] == 0x7E) {while (! Serial1.available ()); pre (i = 1; i <36; i ++) {údaje = Serial1.read (); oneskorenie (1); } if (data [15] == 0x7F) /////// a skontroluje správnosť prijatých údajov {if (data [22] == 0x06) //////// uistite sa, že je typ snímača je správne {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); plávajúca batéria = ((údaje [18] * 256) + údaje [19]); plávajúce napätie = 0,00322 * batéria; Serial.print („číslo senzora“); Serial.println (údaje [16]); Serial.print ("Typ snímača"); Serial.println (údaje [22]); Serial.print („Verzia firmvéru“); Serial.println (údaje [17]); Serial.print ("Teplota v stupňoch Celzia:"); Serial.print (cTemp); Serial.println ("C"); Serial.print ("Absolútny tlak:"); Serial.println (abs_pressure); Serial.print ("mbar"); Serial.print ("relatívny tlak:"); Serial.println (rlt_pressure); Serial.print ("mbar"); Serial.print ("Delta Altitude:"); Serial.println (delta_alt); Serial.print ("meter"); Serial.print ("hodnota ADC:"); Serial.println (batéria); Serial.print ("Napätie batérie:"); Serial.print (napätie); Serial.println ("\ n"); if (napätie <1) {Serial.println ("Čas na výmenu batérie"); }}} else {for (i = 0; i <36; i ++) {Serial.print (data ); Serial.print (","); oneskorenie (1); }}}}

Pripojenie k rozhraniu UbiDots MQTT API

Zahrňte súbor hlavičky pre proces MQTT

#zahrnúť

definujte pre MQTT ďalšie premenné, ako sú meno klienta, adresa makléra, ID tokenu

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

char mqttBroker = "things.ubidots.com";

užitočné zaťaženie znakov [100]; char téma [150]; // vytvorenie premennej na uloženie záznamu ID tokenu

Krok 5: Publikovanie nameraných hodnôt senzora do UbiDots

Publikovanie údajov zo senzorov do UbiDots
Publikovanie údajov zo senzorov do UbiDots

Vytvorte premenné na ukladanie rôznych údajov zo senzorov a vytvorte premennú char na ukladanie tém

#define VARIABLE_LABEL_TEMPF "tempF" // Assing the variable label #define VARIABLE_LABEL_TEMPC "tempC" // Assing the variable label #define VARIABLE_LABEL_BAT "bat" #define VARIABLE_LABEL_HUMID "humid" // Assing the variable label

char topic1 [100];

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

publikovať údaje do uvedenej témy MQTT, užitočné zaťaženie bude vyzerať {{tempc ": {value:" tempData "}}

sprintf (topic1, "%s", ""); sprintf (topic1, "%s%s", "/v1.6/devices/", DEVICE_LABEL); sprintf (užitočné zaťaženie, "%s", ""); // Čistí sprintf užitočného zaťaženia (užitočné zaťaženie, "{"%s / ":", VARIABLE_LABEL_TEMPC); // Pridá hodnotu sprintf (užitočné zaťaženie, "%s {" hodnota / ":%s}", užitočné zaťaženie, str_cTemp); // Pridá hodnotu sprintf (užitočné zaťaženie, "%s}", užitočné zaťaženie); // Zatvorí slovníky v zátvorkách Serial.println (užitočné zaťaženie); Serial.println (client.publish (topic1, užitočné zaťaženie)? "Publikované": "nezverejnené"); // Urobte to isté aj pre inú tému

client.publish () publikuje údaje do UbiDots

Krok 6: Vizualizácia údajov

Vizualizácia údajov
Vizualizácia údajov
  • Prejdite na stránku Ubidots a prihláste sa do svojho účtu.
  • Prejdite na informačný panel na karte Údaje v hornej časti.
  • Teraz kliknite na ikonu „+“a pridajte nové miniaplikácie.
  • Vyberte miniaplikáciu zo zoznamu a pridajte premennú a zariadenia.
  • Údaje senzora je možné vizualizovať na palubnej doske pomocou rôznych miniaplikácií.

Krok 7: Celkový kód

Nadmerný kód pre HTML a ESP32 nájdete v tomto úložisku GitHub.

Kredity

  • ncd ESP32 oddeľovacia doska.
  • ncd Bezdrôtové snímače tlaku a teploty
  • pubsubclient
  • UbiDots
  • Plánovač úloh

Odporúča: