Innehållsförteckning:

Ansluta en DHT11/DHT22-sensor till molnet med ett ESP8266-baserat kort: 9 steg
Ansluta en DHT11/DHT22-sensor till molnet med ett ESP8266-baserat kort: 9 steg

Video: Ansluta en DHT11/DHT22-sensor till molnet med ett ESP8266-baserat kort: 9 steg

Video: Ansluta en DHT11/DHT22-sensor till molnet med ett ESP8266-baserat kort: 9 steg
Video: Измерьте температуру и влажность Wi-Fi с помощью ESP32 DHT11 и DHT22 - Robojax 2024, November
Anonim
Ansluta en DHT11/DHT22-sensor till molnet med ett ESP8266-baserat kort
Ansluta en DHT11/DHT22-sensor till molnet med ett ESP8266-baserat kort

I föregående artikel kopplade jag mitt ESP8266-baserade NodeMCU-kort till en Cloud4RPi-tjänst. Nu är det dags för ett riktigt projekt!

Tillbehör

Hårdvarukrav:

  • Vilket kort som helst baserat på ett ESP8266 -chip (till exempel NodeMCU)
  • En DHT11- eller DHT22 -sensor

Programvara och tjänster:

  • DHT -sensorbibliotek av Adafruit - v1.3.7
  • Adafruit Unified Sensor - v1.0.3
  • cloud4rpi-esp-arduino-v0.1.0
  • Cloud4RPI - Molnkontrollpanel för IoT -enheter
  • PlatformIO IDE för VSCode

Steg 1: Mät temperatur och luftfuktighet

Mät temperatur och luftfuktighet
Mät temperatur och luftfuktighet

Jag hade redan en DHT11 -sensor, så jag bestämde mig för att använda den för temperatur- och fuktmätningar. Låt oss välja ett Arduino -bibliotek för att läsa sensordata.

Arduino -registret innehåller flera bibliotek, varifrån jag valde det mest populära.

Enligt deras GitHub -förvar måste vi också lägga till ett Adafruit Unified Sensor -paket.

Steg 2: Skapa och konfigurera projekt

Skapa och konfigurera projekt
Skapa och konfigurera projekt

Jag har redan beskrivit hur man skapar ett PlatformIO -projekt och installerar bibliotek i den första delen. Mitt projekt heter "MyNodeMCU". Strukturen visas ovan.

Detta projekt är ett något modifierat Cloud4RPi-exempel. Jag bestämde mig för att lagra enhetstoken och Wi-Fi-referenser i konfigurationsfilen istället för kod.

Filen platform.io ser ut så här:

[platformio] default_envs = nodemcuv2 [env: nodemcuv2] plattform = espressif8266 framework = arduino board = nodemcuv2

Steg 3: Installera bibliotek

Installera bibliotek
Installera bibliotek

Installationen av bibliotek är ganska enkel. Du kan göra det från IDE: s grafiska gränssnitt, eller genom att lägga till nödvändiga biblioteksnamn i avsnittet lib_deps i platform.io -filen:

; … Lib_deps = cloud4rpi -esp -arduino Adafruit Unified Sensor DHT -sensorbibliotek build_flags = -D MQTT_MAX_PACKET_SIZE = 1024 -D MQTT_MAX_TRANSFER_SIZE = 128 -D CLOUD4RPI_DEBUG = 0 -D SSID_NAME = / "_WISI_ \" D CLOUD4RPI_TOKEN = / "_ YOUR_DEVICE_TOKEN _ \"

Tillagda bibliotek installeras automatiskt i ett projekts undermapp.

Huvudet main.cpp ser ut så här:

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

Steg 4: Anslut en DHT11 -sensor

Adafruit tillhandahåller ett DHTtester.ino -exempel på en sensoranslutning.

Denna kod initierar en sensor och definierar en struktur för att lagra mätresultatet (om det lyckades):

#define DHTPIN 2 // Digital pin ansluten till DHT -sensorn#definiera DHTTYPE DHT11 // DHT 11 //… DHT dht (DHTPIN, DHTTYPE); dht.begin (); // … struct DHT_Result {float h; flyta t; }; DHT_Result dhtResult;

Nästa funktion visar hur man läser sensordata och lagrar den i datastrukturen som beskrivs ovan

void readSensors () {float h = dht.readHumidity (); // Läs temperaturen som Celsius (standard) float t = dht.readTemperature ();

// Kontrollera om någon läsning misslyckades och avsluta

if (isnan (h) || isnan (t)) {Serial.println (F ("Det gick inte att läsa från DHT -sensor!")); lämna tillbaka; } dhtResult.h = h; dhtResult.t = t; }

Steg 5: Skicka data till molnet

När vi har den informationen är nästa steg att skicka den till Cloud4RPi -tjänsten.

Cloud4RPi för Arduino -sidan beskriver bibliotekets API, som är en uppsättning metoder som används för att:

  • skapa, läsa och uppdatera variabler,
  • skicka variabla värden till molnet med MQTT -protokollet.

Biblioteket stöder tre variabeltyper: Bool, Numeric och String.

Arbetsflödet för biblioteket börjar med att skapa en API -instans med hjälp av Device Token från cloud4rpi.io -webbplatsen (se artikelns del 1 för mer information).

#if definierad (CLOUD4RPI_TOKEN) Cloud4RPi c4r (CLOUD4RPI_TOKEN); #else Cloud4RPi c4r ("!!! _ NO_DEVICE_TOKEN _ !!!"); #endif

Deklarera sedan variabler för DHT11 -avläsningar:

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

Hämta sedan data från sensorn, spara dem i variabler och publicera data till Cloud4RPi:

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

Temperatur och luftfuktighet ändras inte snabbt, så det är inte nödvändigt att skicka mer än ett värde per 5 minuter.

Steg 6: Diagnostik

Cloud4RPi stöder diagnostikdata tillsammans med variabla värden. Jag använde upptid, Wi-Fi-signalstyrka och IP-adress som diagnosdata:

c4r.declareDiagVariable ("IP_Address"); c4r.declareDiagVariable ("RSSI"); // WiFi -signalstyrka c4r.declareDiagVariable ("Uptime");

Obs: Millis -funktionen jag använder för att få drifttid återställs till noll var ~ 50: e dag. Vilket är mer än tillräckligt för mitt projekt.

Följande kod anger värden för diagnostiska variabler:

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

Funktionen uptimeHumanReadable konverterar millisekunder till en bekväm form:

String uptimeHumanReadable (osignerade långa millisekunder) {static char uptimeStr [32]; osignerade långa sekunder = millisekunder / 1000; osignerade långa minuter = sek / 60; osignerade int timmar = min / 60; osignerade int dagar = timmar / 24; sekunder -= min * 60; minuter -= timmar * 60; timmar -= dagar * 24; sprintf (uptimeStr, "%d days%2.2d:%2.2d:%2.2d", (byte) dagar, (byte) timmar, (byte) minuter, (byte) sekunder); retursträng (uptimeStr); }

Funktionen matar ut en sträng så här 5 dagar 10:23:14 istället för ett konstigt stort tal.

Steg 7: Starta och felsöka projektet

Starta och felsöka projektet
Starta och felsöka projektet

Efter att ha skapat den skapade koden och blinkat den till NodeMCU ansluter enheten till en molntjänst och börjar skicka data.

Du kan öka loggningsomfattningen genom att ställa in CLOUD4RPI_DEBUG -förbehandlingsvariabeln till 1 (lägg till -D CLOUD4RPI_DEBUG = 1 till build_flags -sektionen i platform.io -filen).

Öppna sedan cloud4rpi.io -webbplatsen och lägg märke till den nya enheten online. Öppna den för att se alla variabelvärden som tas emot från enheten: sensor och diagnostik.

Steg 8: Dashboardkonfiguration

Dashboardkonfiguration
Dashboardkonfiguration

Vid detta steg är dataanslutningen till molnet operativ. Låt oss nu konfigurera den visuella representationen av data.

Jag använde instrumentpanelens konfigurationsgränssnitt för att skapa följande instrumentpanel.

Instrumentpanelen är delbar, så jag delar den direkt med min vän.

Steg 9: Slutsats

Slutsats
Slutsats

Hela projektets kod finns i huvudsak.

Det var allt tills vidare!

Frågor och förslag är välkomna i kommentarerna.

Rekommenderad: