Innholdsfortegnelse:

Koble en DHT11/DHT22-sensor til skyen med et ESP8266-basert kort: 9 trinn
Koble en DHT11/DHT22-sensor til skyen med et ESP8266-basert kort: 9 trinn

Video: Koble en DHT11/DHT22-sensor til skyen med et ESP8266-basert kort: 9 trinn

Video: Koble en DHT11/DHT22-sensor til skyen med et ESP8266-basert kort: 9 trinn
Video: Программирование модуля датчика температуры и влажности ESP8266 ESP01 DHT11 | удаленныйXY | ФЛПрог 2024, November
Anonim
Koble en DHT11/DHT22-sensor til skyen med et ESP8266-basert kort
Koble en DHT11/DHT22-sensor til skyen med et ESP8266-basert kort

I forrige artikkel koblet jeg mitt ESP8266-baserte NodeMCU-kort til en Cloud4RPi-tjeneste. Nå er det på tide med et skikkelig prosjekt!

Rekvisita

Krav til maskinvare:

  • Alle brett basert på en ESP8266 -brikke (for eksempel NodeMCU)
  • En DHT11 eller DHT22 sensor

Programvare og tjenester:

  • DHT -sensorbibliotek av Adafruit - v1.3.7
  • Adafruit Unified Sensor - v1.0.3
  • cloud4rpi-esp-arduino-v0.1.0
  • Cloud4RPI - Cloud -kontrollpanel for IoT -enheter
  • PlatformIO IDE for VSCode

Trinn 1: Mål temperatur og fuktighet

Mål temperatur og fuktighet
Mål temperatur og fuktighet

Jeg hadde allerede en DHT11 -sensor, så jeg bestemte meg for å bruke den til temperatur- og fuktighetsmålinger. La oss velge et Arduino -bibliotek for å lese sensordata.

Arduino -registeret inneholder flere biblioteker, hvorfra jeg valgte det mest populære.

I følge deres GitHub -depot er vi også pålagt å legge til en Adafruit Unified Sensor -pakke.

Trinn 2: Opprett og konfigurer prosjekt

Opprett og konfigurer prosjekt
Opprett og konfigurer prosjekt

Jeg beskrev allerede hvordan jeg lager et PlatformIO -prosjekt og installerer biblioteker i den første delen. Prosjektet mitt heter “MyNodeMCU”. Strukturen er vist ovenfor.

Dette prosjektet er et lett modifisert Cloud4RPi-eksempel. Jeg bestemte meg for å lagre enhetens token og Wi-Fi-legitimasjon i konfigurasjonsfilen i stedet for kode.

Platform.io -filen ser slik ut:

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

Trinn 3: Installer biblioteker

Installer biblioteker
Installer biblioteker

Installasjon av biblioteker er ganske enkelt. Du kan gjøre det fra IDEs grafiske grensesnitt, eller ved å legge til nødvendige biblioteknavn i lib_deps -delen av 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 _ \"

Lagte biblioteker installeres automatisk i undermappen til et prosjekt.

Main.cpp -overskriften ser slik ut:

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

Trinn 4: Koble til en DHT11 -sensor

Adafruit gir et DHTtester.ino -eksempel på en sensortilkobling.

Denne koden initialiserer en sensor og definerer en struktur for å lagre måleresultatet (i tilfelle det var vellykket):

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

Den neste funksjonen viser hvordan du leser sensordata og lagrer dem i datastrukturen beskrevet ovenfor

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

// Kontroller om noen av lesningene mislyktes, og avslutt

if (isnan (h) || isnan (t)) {Serial.println (F ("Kunne ikke lese fra DHT -sensor!")); komme tilbake; } dhtResult.h = h; dhtResult.t = t; }

Trinn 5: Sende data til nettskyen

Når vi har disse dataene, er neste trinn å sende dem til Cloud4RPi -tjenesten.

Cloud4RPi for Arduino -siden beskriver bibliotekets API, som er et sett med metoder som brukes til:

  • lage, lese og oppdatere variabler,
  • sende variable verdier inn i skyen ved hjelp av MQTT -protokollen.

Biblioteket støtter tre variabeltyper: Bool, Numeric og String.

Arbeidsflyten i biblioteket starter med å opprette en API -forekomst ved hjelp av Device Token fra nettstedet cloud4rpi.io (se artikkelens del 1 for detaljer).

#if definert (CLOUD4RPI_TOKEN) Cloud4RPi c4r (CLOUD4RPI_TOKEN); #else Cloud4RPi c4r ("!!! _ NO_DEVICE_TOKEN _ !!!"); #slutt om

Deretter deklarerer du variabler for DHT11 -avlesninger:

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

Få deretter data fra sensoren, lagre dem i variabler og publiser dataene til Cloud4RPi:

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

Temperatur og fuktighet endres ikke raskt, så det er ikke nødvendig å sende mer enn én verdi per 5 minutter.

Trinn 6: Diagnostikk

Cloud4RPi støtter diagnostiske data sammen med variable verdier. Jeg brukte oppetid, Wi-Fi-signalstyrke og IP-adresse som diagnostiske data:

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

Merk: Millis -funksjonen jeg bruker for å få oppetid tilbakestilles til null hver ~ 50. dag. Noe som er mer enn nok for prosjektet mitt.

Følgende kode angir verdier for diagnostiske variabler:

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

Funksjonen uptimeHumanReadable konverterer millisekunder til en praktisk form:

String uptimeHumanReadable (usignerte lange millisekunder) {static char uptimeStr [32]; usignerte lange sekunder = millisekunder / 1000; usignerte lange minutter = sek / 60; usignerte int timer = min / 60; usignerte int dager = timer / 24; sekunder -= minutter * 60; minutter -= timer * 60; timer -= dager * 24; sprintf (uptimeStr, "%d days%2.2d:%2.2d:%2.2d", (byte) dager, (byte) timer, (byte) minutter, (byte) sekunder); returstreng (uptimeStr); }

Funksjonen sender ut en streng som denne 5 dager 10:23:14 i stedet for et merkelig stort tall.

Trinn 7: Start og feilsøk prosjektet

Start og feilsøk prosjektet
Start og feilsøk prosjektet

Etter å ha samlet den opprettede koden og blinket den inn i NodeMCU, kobler enheten seg til en skytjeneste og begynner å sende data.

Du kan øke loggingsomfanget ved å sette CLOUD4RPI_DEBUG -preprosessorvariabelen til 1 (legg til -D CLOUD4RPI_DEBUG = 1 i build_flags -delen i platform.io -filen).

Deretter åpner du nettstedet cloud4rpi.io og merker den nye enheten online. Åpne den for å se alle variable verdier mottatt fra enheten: sensor og diagnostikk.

Trinn 8: Dashboard -konfigurasjon

Dashboard -konfigurasjon
Dashboard -konfigurasjon

På dette trinnet er datatilkoblingen til skyen operativ. La oss nå konfigurere den visuelle representasjonen av dataene.

Jeg brukte Dashboard -konfigurasjonsgrensesnittet for å lage følgende dashbord.

Dashbordet er delbart, så jeg deler det umiddelbart med min venn.

Trinn 9: Konklusjon

Konklusjon
Konklusjon

Hele prosjektets kode er tilgjengelig i hovedsak.

Det er alt for nå!

Spørsmål og forslag mottas gjerne i kommentarene.

Anbefalt: