Tartalomjegyzék:

DHT11/DHT22 érzékelő csatlakoztatása a felhőhöz ESP8266 alapú táblával: 9 lépés
DHT11/DHT22 érzékelő csatlakoztatása a felhőhöz ESP8266 alapú táblával: 9 lépés

Videó: DHT11/DHT22 érzékelő csatlakoztatása a felhőhöz ESP8266 alapú táblával: 9 lépés

Videó: DHT11/DHT22 érzékelő csatlakoztatása a felhőhöz ESP8266 alapú táblával: 9 lépés
Videó: DHT11/22 Temp Sensor Trouble - Collin’s Lab Notes #adafruit #collinslabnotes 2024, Június
Anonim
DHT11/DHT22 érzékelő csatlakoztatása a felhőhöz ESP8266 alapú kártyával
DHT11/DHT22 érzékelő csatlakoztatása a felhőhöz ESP8266 alapú kártyával

Az előző cikkben az ESP8266-alapú NodeMCU kártyát egy Cloud4RPi szolgáltatáshoz kötöttem. Itt az ideje egy igazi projektnek!

Kellékek

Hardverkövetelmények:

  • Bármely ESP8266 chipen alapuló kártya (például NodeMCU)
  • DHT11 vagy DHT22 érzékelő

Szoftverek és szolgáltatások:

  • DHT szenzortár Adafruit - v1.3.7
  • Adafruit Unified Sensor - v1.0.3
  • cloud4rpi-esp-arduino-v0.1.0
  • Cloud4RPI - Felhővezérlő panel IoT -eszközökhöz
  • PlatformIO IDE a VSCode számára

Lépés: Mérje meg a hőmérsékletet és a páratartalmat

Mérje meg a hőmérsékletet és a páratartalmat
Mérje meg a hőmérsékletet és a páratartalmat

Már volt DHT11 érzékelőm, ezért úgy döntöttem, hogy hőmérséklet- és páratartalom -mérésre használom. Válasszunk egy Arduino könyvtárat az érzékelő adatok olvasásához.

Az Arduino registry több könyvtárat tartalmaz, amelyek közül a legnépszerűbbet választottam.

A GitHub adattáruk szerint egy Adafruit Unified Sensor csomagot is hozzá kell adnunk.

2. lépés: Projekt létrehozása és konfigurálása

Projekt létrehozása és konfigurálása
Projekt létrehozása és konfigurálása

Az első részben már leírtam a PlatformIO projekt létrehozásának és a könyvtárak telepítésének módját. A projektemet „MyNodeMCU” -nak hívják. A szerkezet fent látható.

Ez a projekt egy kissé módosított Cloud4RPi példa. Úgy döntöttem, hogy az eszköz tokenjét és a Wi-Fi hitelesítő adatait a konfigurációs fájlban tárolja a kód helyett.

A platform.io fájl a következőképpen néz ki:

[platformio] default_envs = nodemcuv2 [env: nodemcuv2] platform = espressif8266 Framework = arduino board = nodemcuv2

3. lépés: Telepítse a könyvtárakat

Telepítse a Könyvtárakat
Telepítse a Könyvtárakat

A könyvtárak telepítése meglehetősen egyszerű. Ezt megteheti az IDE grafikus felületéről, vagy a szükséges könyvtárnevek hozzáadásával a platform.io fájl lib_deps részéhez:

; … Lib_deps = cloud4rpi -esp -arduino Adafruit Unified Sensor DHT szenzorkönyvtár build_flags = -D MQTT_MAX_PACKET_SIZE = 1024 -D MQTT_MAX_TRANSFER_SIZE = 128 -D CLOUD4RPI_DEBUG = 0 -SSID_ / \ " -\" D CLOUD4RPI_TOKEN = / "_ YOUR_DEVICE_TOKEN _ \"

A hozzáadott könyvtárak automatikusan telepítésre kerülnek a projekt almappájába.

A main.cpp fejléc a következőképpen néz ki:

#include #include #include #include "DHT.h"

4. lépés: Csatlakoztasson egy DHT11 érzékelőt

Az Adafruit egy DHTtester.ino példát kínál az érzékelő csatlakoztatására.

Ez a kód inicializálja az érzékelőt, és definiál egy struktúrát a mérési eredmény tárolására (ha sikeres volt):

#define DHTPIN 2 // Digitális tű a DHT érzékelőhöz csatlakoztatva#define DHTTYPE DHT11 // DHT 11 //… DHT dht (DHTPIN, DHTTYPE); dht.begin (); //… structure DHT_Result {float h; úszó t; }; DHT_Eredmény dhtResult;

A következő funkció bemutatja, hogyan kell olvasni az érzékelő adatait és tárolni azokat a fent leírt adatszerkezetben

void readSensors () {float h = dht.readHumidity (); // A hőmérséklet olvasása Celsius -ban (alapértelmezett) float t = dht.readTemperature ();

// Ellenőrizze, hogy nem sikerült -e olvasni, és lépjen ki

if (isnan (h) || isnan (t)) {Serial.println (F ("Nem sikerült leolvasni a DHT szenzorból!")); Visszatérés; } dhtResult.h = h; dhtResult.t = t; }

5. lépés: Adatok küldése a felhőbe

Ha megvannak az adatok, a következő lépés az, hogy elküldjük a Cloud4RPi szolgáltatásnak.

A Cloud4RPi for Arduino oldal leírja a könyvtár API -t, amely a következő módszerek összessége:

  • változók létrehozása, olvasása és frissítése,
  • változó értékeket küld a felhőbe az MQTT protokoll használatával.

A könyvtár három változótípust támogat: Bool, Numeric és String.

A könyvtár munkafolyamata az API -példány létrehozásával kezdődik a cloud4rpi.io webhely Device Token használatával (részletekért lásd a cikk 1. részét).

#if meghatározott (CLOUD4RPI_TOKEN) Cloud4RPi c4r (CLOUD4RPI_TOKEN); #else Cloud4RPi c4r ("!!! _ NO_DEVICE_TOKEN _ !!!"); #endif

Ezután deklarálja a változókat a DHT11 leolvasásokhoz:

c4r.declareNumericVariable ("DHT11_Temp"); c4r.declareNumericVariable ("DHT11_Hum");

Ezután szerezzen be adatokat az érzékelőből, mentse őket változókba, és tegye közzé az adatokat a Cloud4RPi -ben:

c4r.setVariable ("DHT11_Temp", dhtResult.t); c4r.setVariable ("DHT11_Hum", dhtResult.h); c4r.publishData ();

A hőmérséklet és a páratartalom nem változik gyorsan, ezért 5 percenként egynél több érték elküldése nem szükséges.

6. lépés: Diagnosztika

A Cloud4RPi támogatja a diagnosztikai adatokat a változó értékekkel együtt. Az üzemidőt, a Wi-Fi jelerősséget és az IP-címet használtam diagnosztikai adatként:

c4r.declareDiagVariable ("IP_cím"); c4r.declareDiagVariable ("RSSI"); // WiFi jelerősség c4r.declareDiagVariable ("Uptime");

Megjegyzés: Az üzemidő eléréséhez használt millis függvény ~ 50 naponta nullázódik. Ami több mint elég a projektemhez.

A következő kód a diagnosztikai változók értékeit állítja be:

c4r.setDiagVariable ("RSSI", (String) WiFi. RSSI () + "dBm"); c4r.setDiagVariable ("IP_Cím", WiFi.localIP (). toString ()); c4r.setDiagVariable ("Uptime", uptimeHumanReadable (currentMillis)); c4r.publishDiag ();

Az uptimeHumanReadable függvény ezredmásodperceket alakít át kényelmes formába:

String uptimeHumanReadable (előjel nélküli hosszú ezredmásodpercek) {static char uptimeStr [32]; előjel nélküli hosszú másodperc = ezredmásodperc / 1000; előjel nélküli hosszú perc = másodperc / 60; előjel nélküli int óra = perc / 60; előjel nélküli int nap = óra / 24; másodperc -= perc * 60; perc -= óra * 60; óra -= nap * 24; sprintf (uptimeStr, "%d nap%2.2d:%2.2d:%2.2d", (bájt) nap, (bájt) óra, (bájt) perc, (bájt) másodperc); return String (uptimeStr); }

A függvény egy ilyen karakterláncot ad ki 5 nap 10:23:14 helyett egy furcsa nagy szám helyett.

7. lépés: A projekt indítása és hibakeresése

Indítsa el és hibakeresés a projektet
Indítsa el és hibakeresés a projektet

A létrehozott kód összeállítása és a NodeMCU -ba való felvillantása után az eszköz csatlakozik egy felhőszolgáltatáshoz, és megkezdi az adatok küldését.

Növelheti a naplózási szóhasználatot, ha a CLOUD4RPI_DEBUG előfeldolgozó változót 1 -re állítja (a -D CLOUD4RPI_DEBUG = 1 értéket adja hozzá a build_flags szakaszhoz a platform.io fájlban).

Ezután nyissa meg a cloud4rpi.io webhelyet, és vegye észre az új eszközt online. Nyissa meg, hogy megtekinthesse az eszköztől kapott összes változó értéket: érzékelőt és diagnosztikát.

8. lépés: A műszerfal konfigurálása

Irányítópult konfigurálása
Irányítópult konfigurálása

Ebben a lépésben működik a felhőhöz való adatkapcsolat. Most konfiguráljuk az adatok vizuális megjelenítését.

A Dashboard konfigurációs felhasználói felületét használtam a következő műszerfal létrehozásához.

A műszerfal megosztható, így azonnal megosztom a barátommal.

9. lépés: Következtetés

Következtetés
Következtetés

A projekt teljes kódja megtalálható a lényegben.

Ez minden most!

Kérdéseket és javaslatokat várunk a megjegyzésekben.

Ajánlott: