Indholdsfortegnelse:

Tilslutning af en DHT11/DHT22-sensor til skyen med et ESP8266-baseret kort: 9 trin
Tilslutning af en DHT11/DHT22-sensor til skyen med et ESP8266-baseret kort: 9 trin

Video: Tilslutning af en DHT11/DHT22-sensor til skyen med et ESP8266-baseret kort: 9 trin

Video: Tilslutning af en DHT11/DHT22-sensor til skyen med et ESP8266-baseret kort: 9 trin
Video: Tilslutning af lampe til lampeudtag – Sådan tilslutter du din lampe til et loftudtag | SILVAN 2024, November
Anonim
Tilslutning af en DHT11/DHT22-sensor til skyen med et ESP8266-baseret kort
Tilslutning af en DHT11/DHT22-sensor til skyen med et ESP8266-baseret kort

I den forrige artikel tilsluttede jeg mit ESP8266-baserede NodeMCU-kort til en Cloud4RPi-tjeneste. Nu er det tid til et rigtigt projekt!

Forbrugsvarer

Hardware krav:

  • Ethvert kort baseret på en ESP8266 -chip (f.eks. NodeMCU)
  • En DHT11 eller DHT22 sensor

Software og tjenester:

  • DHT -sensorbibliotek af Adafruit - v1.3.7
  • Adafruit Unified Sensor - v1.0.3
  • cloud4rpi-esp-arduino-v0.1.0
  • Cloud4RPI - Cloud -kontrolpanel til IoT -enheder
  • PlatformIO IDE til VSCode

Trin 1: Mål temperatur og fugtighed

Mål temperatur og luftfugtighed
Mål temperatur og luftfugtighed

Jeg havde allerede en DHT11 -sensor, så jeg besluttede at bruge den til temperatur- og fugtighedsmålinger. Lad os vælge et Arduino -bibliotek til at læse sensordata.

Arduino -registreringsdatabasen indeholder flere biblioteker, hvorfra jeg valgte den mest populære.

Ifølge deres GitHub -depot skal vi også tilføje en Adafruit Unified Sensor -pakke.

Trin 2: Opret og konfigurer projekt

Opret og konfigurer projekt
Opret og konfigurer projekt

Jeg beskrev allerede, hvordan man opretter et PlatformIO -projekt og installerer biblioteker i den første del. Mit projekt hedder "MyNodeMCU". Strukturen er vist ovenfor.

Dette projekt er et let modificeret Cloud4RPi-eksempel. Jeg besluttede at gemme enhedens token og Wi-Fi-legitimationsoplysninger i konfigurationsfilen i stedet for kode.

Platformen.io -filen ser således ud:

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

Trin 3: Installer biblioteker

Installer biblioteker
Installer biblioteker

Installation af biblioteker er ganske enkel. Du kan gøre det fra IDEs grafiske grænseflade eller ved at tilføje nødvendige biblioteksnavne til sektionen 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 = / -WSI_WI D CLOUD4RPI_TOKEN = / "_ YOUR_DEVICE_TOKEN _ \"

Tilføjede biblioteker installeres automatisk i et projekts undermappe.

Main.cpp -overskriften ser således ud:

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

Trin 4: Tilslut en DHT11 -sensor

Adafruit giver et DHTtester.ino -eksempel på en sensorforbindelse.

Denne kode initialiserer en sensor og definerer en struktur til lagring af måleresultatet (hvis det lykkedes):

#define DHTPIN 2 // Digital pin forbundet til DHT -sensoren#definere DHTTYPE DHT11 // DHT 11 //… DHT dht (DHTPIN, DHTTYPE); dht.begin (); //… struct DHT_Result {float h; flyde t; }; DHT_Result dhtResult;

Den næste funktion viser, hvordan sensordata læses og gemmes i datastrukturen beskrevet ovenfor

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

// Kontroller, om nogen læsning mislykkedes, og afslut

if (isnan (h) || isnan (t)) {Serial.println (F ("Kunne ikke læse fra DHT -sensor!")); Vend tilbage; } dhtResult.h = h; dhtResult.t = t; }

Trin 5: Send data til skyen

Når vi har disse data, er det næste trin at sende dem til Cloud4RPi -tjenesten.

Siden Cloud4RPi til Arduino beskriver bibliotekets API, som er et sæt metoder, der bruges til:

  • oprette, læse og opdatere variabler,
  • sende variable værdier ind i skyen ved hjælp af MQTT -protokollen.

Biblioteket understøtter tre variable typer: Bool, Numeric og String.

Bibliotekets arbejdsgang starter med at oprette en API -forekomst ved hjælp af Device Token fra cloud4rpi.io -webstedet (se artiklens del 1 for detaljer).

#if defineret (CLOUD4RPI_TOKEN) Cloud4RPi c4r (CLOUD4RPI_TOKEN); #else Cloud4RPi c4r ("!!! _ NO_DEVICE_TOKEN _ !!!"); #Afslut Hvis

Angiv derefter variabler for DHT11 -aflæsninger:

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

Hent derefter data fra sensoren, gem dem i variabler og offentliggør dataene til Cloud4RPi:

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

Temperatur og fugtighed ændres ikke hurtigt, så det er ikke nødvendigt at sende mere end én værdi pr. 5 minutter.

Trin 6: Diagnostik

Cloud4RPi understøtter diagnostiske data sammen med variable værdier. Jeg brugte oppetid, Wi-Fi-signalstyrke og IP-adresse som diagnosedata:

c4r.declareDiagVariable ("IP_Address"); c4r.declareDiagVariable ("RSSI"); // WiFi signalstyrke c4r.declareDiagVariable ("oppetid");

Bemærk: Millis -funktionen, jeg bruger til at opnå uptime nulstilles til hver 50. dag. Hvilket er mere end nok til mit projekt.

Følgende kode angiver diagnosevariabelværdier:

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

Funktionen uptimeHumanReadable konverterer millisekunder til en bekvem form:

String uptimeHumanReadable (usignerede lange millisekunder) {statisk char uptimeStr [32]; usignerede lange sekunder = millisekunder / 1000; usignerede lange minutter = sek / 60; usignerede int timer = min / 60; usignerede int dage = timer / 24; sekunder -= minutter * 60; minutter -= timer * 60; timer -= dage * 24; sprintf (uptimeStr, "%d dage%2.2d:%2.2d:%2.2d", (byte) dage, (byte) timer, (byte) minutter, (byte) sek)); return String (uptimeStr); }

Funktionen udsender en streng som denne 5 dage 10:23:14 i stedet for et mærkeligt stort tal.

Trin 7: Start og fejlsøg projektet

Start og fejlsøg projektet
Start og fejlsøg projektet

Efter at have sammensat den oprettede kode og blinket den til NodeMCU, opretter enheden forbindelse til en cloud -tjeneste og begynder at sende data.

Du kan øge logos verbositet ved at indstille CLOUD4RPI_DEBUG preprocessor -variablen til 1 (tilføj -D CLOUD4RPI_DEBUG = 1 til build_flags -sektionen i platform.io -filen).

Åbn derefter cloud4rpi.io -webstedet, og læg mærke til den nye enhed online. Åbn den for at se alle variable værdier modtaget fra enheden: sensor og diagnostik.

Trin 8: Dashboard -konfiguration

Dashboard -konfiguration
Dashboard -konfiguration

På dette trin er dataforbindelsen til skyen operationel. Lad os nu konfigurere den visuelle repræsentation af dataene.

Jeg brugte Dashboard -konfigurationsgrænsefladen til at oprette følgende dashboard.

Instrumentbrættet kan deles, så jeg deler det med det samme med min ven.

Trin 9: Konklusion

Konklusion
Konklusion

Hele projektets kode er tilgængelig i det væsentlige.

Det er alt for nu!

Spørgsmål og forslag modtages gerne i kommentarerne.

Anbefalede: