INHOUDSOPGAWE:

Koppel 'n DHT11/DHT22-sensor aan die wolk met 'n ESP8266-kaart: 9 stappe
Koppel 'n DHT11/DHT22-sensor aan die wolk met 'n ESP8266-kaart: 9 stappe

Video: Koppel 'n DHT11/DHT22-sensor aan die wolk met 'n ESP8266-kaart: 9 stappe

Video: Koppel 'n DHT11/DHT22-sensor aan die wolk met 'n ESP8266-kaart: 9 stappe
Video: Arduino Tutorial 28 - DHT11 Temperature Sensor with LCD | SunFounder's ESP32 IoT Learnig kit 2024, Desember
Anonim
Koppel 'n DHT11/DHT22-sensor aan die wolk met 'n ESP8266-kaart
Koppel 'n DHT11/DHT22-sensor aan die wolk met 'n ESP8266-kaart

In die vorige artikel het ek my ESP8266-gebaseerde NodeMCU-bord aan 'n Cloud4RPi-diens gekoppel. Nou is dit tyd vir 'n regte projek!

Voorrade

Hardeware vereistes:

  • Enige bord gebaseer op 'n ESP8266 -chip (byvoorbeeld NodeMCU)
  • 'N DHT11- of DHT22 -sensor

Sagteware en dienste:

  • DHT -sensorbiblioteek deur Adafruit - v1.3.7
  • Adafruit Unified Sensor - v1.0.3
  • cloud4rpi-esp-arduino-v0.1.0
  • Cloud4RPI - Wolkbeheerpaneel vir IoT -toestelle
  • PlatformIO IDE vir VSCode

Stap 1: Meet temperatuur en humiditeit

Meet temperatuur en humiditeit
Meet temperatuur en humiditeit

Ek het reeds 'n DHT11 -sensor gehad, so ek het besluit om dit te gebruik vir temperatuur- en humiditeitsmetings. Kom ons kies 'n Arduino -biblioteek om sensordata te lees.

Die Arduino -register bevat verskeie biblioteke, waaruit ek die gewildste een gekies het.

Volgens hul GitHub -bewaarplek moet ons ook 'n Adafruit Unified Sensor -pakket byvoeg.

Stap 2: Skep en konfigureer projek

Skep en konfigureer projek
Skep en konfigureer projek

Ek het reeds in die eerste deel beskryf hoe om 'n PlatformIO -projek te skep en biblioteke te installeer. My projek heet “MyNodeMCU”. Die struktuur word hierbo getoon.

Hierdie projek is 'n effens aangepaste Cloud4RPi-voorbeeld. Ek het besluit om die toesteltoken en Wi-Fi-geloofsbriewe in die konfigurasielêer te plaas in plaas van die kode.

Die platform.io -lêer lyk soos volg:

[platformio] default_envs = nodemcuv2 [env: nodemcuv2] platform = espressif8266 raamwerk = arduino bord = nodemcuv2

Stap 3: Installeer biblioteke

Installeer biblioteke
Installeer biblioteke

Die installering van biblioteke is redelik eenvoudig. U kan dit doen vanaf die IDE se grafiese koppelvlak, of deur die vereiste biblioteekname by die lib_deps -afdeling van die platform.io -lêer te voeg:

; … lib_deps = cloud4rpi -esp -arduino Adafruit Unified Sensor DHT -sensorbiblioteek build_flags = -D MQTT_MAX_PACKET_SIZE = 1024 -D MQTT_MAX_TRANSFER_SIZE = 128 -D CLOUD4RPI_DEBUG = 0_D SSID_NAME = / " D CLOUD4RPI_TOKEN = / "_ JOU_DEVICE_TOKEN _ \"

Bygevoegde biblioteke word outomaties in die submap van 'n projek geïnstalleer.

Die main.cpp -kop lyk soos volg:

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

Stap 4: Koppel 'n DHT11 -sensor aan

Adafruit bied 'n DHTtester.ino -voorbeeld van 'n sensorverbinding.

Hierdie kode initialiseer 'n sensor en definieer 'n struktuur om die meetresultaat op te slaan (indien dit suksesvol was):

#define DHTPIN 2 // Digitale pen wat aan die DHT -sensor gekoppel is#definieer DHTTYPE DHT11 // DHT 11 // … DHT dht (DHTPIN, DHTTYPE); dht.begin (); // … struct DHT_Result {float h; dryf t; }; DHT_Result dhtResult;

Die volgende funksie wys hoe om sensordata te lees en te stoor in die datastruktuur hierbo beskryf

void readSensors () {float h = dht.readHumidity (); // Lees temperatuur as Celsius (die standaard) float t = dht.readTemperature ();

// Kontroleer of enige lees misluk het en verlaat

if (isnan (h) || isnan (t)) {Serial.println (F ("Kan nie lees van DHT -sensor nie!")); terugkeer; } dhtResult.h = h; dhtResult.t = t; }

Stap 5: Stuur data na die wolk

Sodra ons die data het, is die volgende stap om dit na die Cloud4RPi -diens te stuur.

Die Cloud4RPi for Arduino -bladsy beskryf die biblioteek -API, 'n stel metodes wat gebruik word om:

  • skep, lees en werk veranderlikes op,
  • stuur veranderlike waardes na die wolk met behulp van die MQTT -protokol.

Die biblioteek ondersteun drie veranderlike tipes: Bool, numeries en string.

Die werkstroom van die biblioteek begin met die skep van 'n API -instansie met behulp van die Device Token vanaf die cloud4rpi.io -webwerf (raadpleeg die deel 1 van die artikel vir meer inligting).

#as gedefinieer (CLOUD4RPI_TOKEN) Cloud4RPi c4r (CLOUD4RPI_TOKEN); #else Cloud4RPi c4r ("!!! _ NO_DEVICE_TOKEN _ !!!"); #endif

Verklaar dan veranderlikes vir DHT11 -lesings:

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

Kry dan data van die sensor, stoor dit in veranderlikes en publiseer die data aan Cloud4RPi:

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

Temperatuur en humiditeit verander nie vinnig nie, dus is dit nie nodig om meer as een waarde per 5 minute te stuur nie.

Stap 6: Diagnose

Cloud4RPi ondersteun diagnostiese data saam met veranderlike waardes. Ek het uptyd, Wi-Fi-seinsterkte en IP-adres as diagnostiese data gebruik:

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

Let wel: die millis -funksie wat ek gebruik om elke ~ 50 dae uptime te herstel. Wat meer as genoeg is vir my projek.

Die volgende kode stel diagnostiese veranderlike waardes:

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

Die uptimeHumanReadable -funksie skakel millisekondes om in 'n gerieflike vorm:

String uptimeHumanReadable (ongetekende lang millisekondes) {statiese char uptimeStr [32]; ongetekende lang sekondes = millisekondes / 1000; ongetekende lang minute = sekondes / 60; ongetekende int ure = min / 60; ongetekende int dae = ure / 24; sekondes -= min * 60; minute -= ure * 60; ure -= dae * 24; sprintf (uptimeStr, "%d days%2.2d:%2.2d:%2.2d", (byte) dae, (byte) ure, (byte) minute, (byte) sekondes); terugkeer string (uptimeStr); }

Die funksie lewer 'n string soos hierdie 5 dae 10:23:14 in plaas van 'n vreemde groot getal.

Stap 7: Begin en ontfout die projek

Begin en ontfout die projek
Begin en ontfout die projek

Nadat die gemaakte kode saamgestel is en in NodeMCU geflits is, maak die toestel verbinding met 'n wolkdiens en begin dit data stuur.

U kan die woordelikheid van die aanmelding verhoog deur die CLOUD4RPI_DEBUG -voorverwerker -veranderlike op 1 te stel (voeg -D CLOUD4RPI_DEBUG = 1 by die build_flags -afdeling in platform.io -lêer).

Maak dan die cloud4rpi.io -webwerf oop en let op die nuwe toestel aanlyn. Maak dit oop om alle veranderlike waardes van die toestel te sien: sensor en diagnostiek.

Stap 8: Dashboard -opset

Dashboardkonfigurasie
Dashboardkonfigurasie

In hierdie stap is die dataverbinding met die wolk operasioneel. Laat ons nou die visuele voorstelling van die data konfigureer.

Ek het die Dashboard -konfigurasie -UI gebruik om die volgende paneelbord te skep.

Die paneelbord is deelbaar, so ek deel dit onmiddellik met my vriend.

Stap 9: Gevolgtrekking

Afsluiting
Afsluiting

Die volledige projekkode is in wese beskikbaar.

Dit is al vir nou!

Vrae en voorstelle is welkom in die kommentaar.

Aanbeveel: