Tartalomjegyzék:

Vezeték nélküli nyomásérzékelő adatok közzététele az MQTT használatával: 7 lépés
Vezeték nélküli nyomásérzékelő adatok közzététele az MQTT használatával: 7 lépés

Videó: Vezeték nélküli nyomásérzékelő adatok közzététele az MQTT használatával: 7 lépés

Videó: Vezeték nélküli nyomásérzékelő adatok közzététele az MQTT használatával: 7 lépés
Videó: Ezeket az iPhone tippeket biztos használni fogod! 2024, November
Anonim
Vezeték nélküli nyomásérzékelő adatok közzététele az MQTT használatával
Vezeték nélküli nyomásérzékelő adatok közzététele az MQTT használatával

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 nyomás- és hőmérsékletérzékelőbő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ó

Hardver specifikáció

  • ESP32 WiFi/BLE
  • Vezeték nélküli nyomás- és hőmérsékletérzékelő

Szoftver specifikáció

  • Arduino IDE
  • XCTU
  • Labview segédprogram

2. lépés: Vezeték nélküli nyomás- és hőmérséklet -érzékelők

Vezeték nélküli nyomás- és hőmérséklet -érzékelők
Vezeték nélküli nyomás- és hőmérséklet -érzékelők
Vezeték nélküli nyomás- és hőmérséklet -érzékelők
Vezeték nélküli nyomás- és hőmérséklet -érzékelők
Vezeték nélküli nyomás- és hőmérséklet -érzékelők
Vezeték nélküli nyomás- és hőmérséklet -érzékelők

Jellemzők

  • Ipari fokozatú érzékelő nagy hatótávolságú vezeték nélküli nyomáshőmérséklet -érzékelő
  • Működési tartomány: 0 -14000 mbar -40 ° - +85 ° C (-40 ° -185 ° F)
  • Konfigurálható belső számítási nyomásfelbontás 0,012-0,065 mbar
  • Konfigurálható belső számítási hőmérséklet felbontás 0,002-0,012 ° C
  • Pontosság ± 2,5 mbar, ± 2 ° C
  • Abszolút nyomás, relatív nyomás és relatív magasságváltozás kimenetek
  • 2 mérföldes látótávolság fedélzeti antennával
  • Kiváló, akár 28 mérföldes LOS tartomány nagy erősítésű antennákkal
  • Interfész a Raspberry Pi, a Microsoft® Azure®, az Arduino és a többivel
  • Vezeték nélküli Mesh hálózat DigiMesh® használatával

A vezeték nélküli nyomás- és hőmérsékletérzékelő beállítása a Labview Utility és az XCTU segítségével

Az érzékelő két üzemmódban működik

  • Konfigurációs mód: Konfigurálja a Pan azonosítót, késleltetést, az újbóli próbálkozások számát stb. Erről bővebben az utasítás nem terjed ki, és ezt a következő utasításban ismertetjük.
  • Futtatás mód: Futtatás üzemmódban futtatjuk az eszközt. Ezen értékek elemzéséhez pedig a Labview segédprogramot használjuk

Ez a Labview felhasználói felület szép grafikonokon mutatja az értékeket. Mutatja a jelenlegi és a korábbi értékeket. Erre a linkre kattintva letöltheti a Labview felhasználói felületét. kattintson a Futtatás ikonra a céloldal menüjében, hogy futási módba lépjen.

3. lépés: Csatlakozás a WiFi -hez

Csatlakozás a WiFi -hez
Csatlakozás a WiFi -hez
Csatlakozás a WiFi -hez
Csatlakozás a WiFi -hez

A rögzített portált használjuk a WiFi hitelesítő adatok mentésére és az IP -beállítások lebegésére. A Capture Portal részletes bevezetéséhez olvassa el az alábbi utasításokat.

A rögzített portál lehetőséget kínál a statikus és a DHCP beállítások közötti választásra. Csak adja meg a hitelesítő adatokat, például a statikus IP -t, az alhálózati maszkot, az átjárót és a vezeték nélküli érzékelő átjárót az adott IP -címen.

Egy weboldal található, ahol az elérhető WiFi hálózatok és az RSSI listája látható. Válassza ki a WiFi hálózatot és a jelszót, majd írja be a Küldés gombot. A hitelesítő adatok az EEPROM -ba kerülnek mentésre, az IP -beállítás pedig a SPIFFS -be. Erről bővebben ebben az oktatóanyagban olvashat.

4. lépés: Az UbiDots beállítása az ESP32 rendszeren

Az UbiDots beállítása az ESP32 rendszeren
Az UbiDots beállítása az ESP32 rendszeren

Itt vezeték nélküli nyomás- és hőmérsékleté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 Scheduler 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

ha (Serial1.available ())

{adatok [0] = Sorozat1.olvasás (); késleltetés (k); if (data [0] == 0x7E) {while (! Serial1.available ()); for (i = 1; i <36; i ++) {data = Sorozat1.olvasás (); késleltetés (1); } if (data [15] == 0x7F) ///////, hogy ellenőrizze, hogy a recive adatok helyesek -e {if (data [22] == 0x06) //////// győződjön meg arról, hogy az érzékelő típusa helyes {int cTemp = (((([adatok [24]) * 256) + adatok [25])); int16_t abszorpció = (((((uint16_t) (adatok [26]) << 8) | adatok [27])*0,001); int rlt_nyomás = (((([adatok [28]) * 256) + adatok [29]) * 0,001); int16_t delta_alt = (((((uint16_t) (adatok [30]) << 8) | adatok [31])*0,01); úszó akkumulátor = ((adatok [18] * 256) + adatok [19]); úszó feszültség = 0,00322 * akkumulátor; Serial.print ("Érzékelő száma"); Serial.println (adatok [16]); Serial.print ("Érzékelő típusa"); Serial.println (adatok [22]); Serial.print ("Firmware verzió"); Serial.println (adatok [17]); Serial.print ("Hőmérséklet Celsius -ban:"); Serial.print (cTemp); Serial.println ("C"); Serial.print ("Abszolút nyomás:"); Soros.println (abszolútnyomás); Serial.print ("mbar"); Serial.print ("Relatív nyomás:"); Soros.println (rlt_nyomás); Serial.print ("mbar"); Serial.print ("Delta magasság:"); Soros.println (delta_alt); Soros.nyomtatás ("méter"); Serial.print ("ADC érték:"); Soros.println (akkumulátor); Serial.print ("Akkumulátor feszültsége:"); Soros.nyomat (feszültség); Serial.println ("\ n"); if (feszültség <1) {Serial.println ("Az akkumulátor cseréjének ideje"); }}} else {for (i = 0; i <36; i ++) {Serial.print (data ); Serial.print (","); késleltetés (1); }}}}

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, például az ügyfél nevét, a bróker címét, a token azonosítóját

#define TOKEN "BBFF-***********************************" // Az Ubidotok TOKEN#define MQTT_CLIENT_NAME "***************************"

char mqttBroker = "things.ubidots.com";

szén hasznos terhelés [100]; char téma [150]; // változó létrehozása a token ID toke tárolásához

5. lépés: Az érzékelői leolvasások közzététele az UbiDots rendszerben

Érzékelő leolvasása az UbiDots -on
Érzékelő leolvasása az UbiDots -on

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 így fog kinézni: "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

6. lépés: Az adatok megjelenítése

Az adatok vizualizálása
Az adatok vizualizálása
  • 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 különböző widgetek segítségével megjeleníthetők a műszerfalon.

7. 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 nyomás- és hőmérsékletérzékelők
  • pubsubclient
  • UbiDots
  • Feladat ütemező

Ajánlott: