Cuprins:

Conectarea unui senzor DHT11 / DHT22 la cloud cu o placă bazată pe ESP8266: 9 pași
Conectarea unui senzor DHT11 / DHT22 la cloud cu o placă bazată pe ESP8266: 9 pași

Video: Conectarea unui senzor DHT11 / DHT22 la cloud cu o placă bazată pe ESP8266: 9 pași

Video: Conectarea unui senzor DHT11 / DHT22 la cloud cu o placă bazată pe ESP8266: 9 pași
Video: Using Micro SD Card and Data logging with Arduino | Arduino Step by Step Course Lesson 106 2024, Noiembrie
Anonim
Conectarea unui senzor DHT11 / DHT22 la cloud cu o placă bazată pe ESP8266
Conectarea unui senzor DHT11 / DHT22 la cloud cu o placă bazată pe ESP8266

În articolul anterior, mi-am conectat placa NodeMCU bazată pe ESP8266 la un serviciu Cloud4RPi. Acum, este timpul pentru un proiect real!

Provizii

Cerințe hardware:

  • Orice placă bazată pe un cip ESP8266 (de exemplu, NodeMCU)
  • Un senzor DHT11 sau DHT22

Software și servicii:

  • Biblioteca de senzori DHT de Adafruit - v1.3.7
  • Senzor unificat Adafruit - v1.0.3
  • cloud4rpi-esp-arduino - v0.1.0
  • Cloud4RPI - Panou de control cloud pentru dispozitive IoT
  • PlatformIO IDE pentru VSCode

Pasul 1: Măsurați temperatura și umiditatea

Măsurați temperatura și umiditatea
Măsurați temperatura și umiditatea

Aveam deja un senzor DHT11, așa că am decis să îl folosesc pentru măsurători de temperatură și umiditate. Să alegem o bibliotecă Arduino pentru a citi datele senzorilor.

Registrul Arduino conține mai multe biblioteci, dintre care am selectat-o pe cea mai populară.

Conform depozitului lor GitHub, trebuie să adăugăm și un pachet Adafruit Unified Sensor.

Pasul 2: Creați și configurați proiectul

Creați și configurați proiectul
Creați și configurați proiectul

Am descris deja cum să creați un proiect PlatformIO și să instalați biblioteci în prima parte. Proiectul meu se numește „MyNodeMCU”. Structura este prezentată mai sus.

Acest proiect este un exemplu ușor modificat Cloud4RPi. Am decis să stochez simbolul dispozitivului și acreditările Wi-Fi în fișierul de configurare în loc de cod.

Fișierul platform.io arată după cum urmează:

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

Pasul 3: Instalați biblioteci

Instalați biblioteci
Instalați biblioteci

Instalarea bibliotecilor este destul de simplă. Puteți face acest lucru din interfața grafică a IDE sau adăugând numele bibliotecii necesare în secțiunea lib_deps din fișierul platform.io:

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

Bibliotecile adăugate vor fi instalate automat în subfolderul unui proiect.

Antetul main.cpp arată după cum urmează:

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

Pasul 4: Conectați un senzor DHT11

Adafruit oferă un exemplu DHTtester.ino de conexiune senzor.

Acest cod inițializează un senzor și definește o structură pentru a stoca rezultatul măsurătorii (în cazul în care a avut succes):

#define DHTPIN 2 // Pin digital conectat la senzorul DHT # define DHTTYPE DHT11 // DHT 11 // … DHT dht (DHTPIN, DHTTYPE); dht.begin (); // … struct DHT_Result {float h; plutitor t; }; DHT_Result dhtResult;

Următoarea funcție arată cum să citiți datele senzorului și să le stocați în structura de date descrisă mai sus

void readSensors () {float h = dht.readHumidity (); // Citiți temperatura ca Celsius (implicit) float t = dht.readTemperature ();

// Verificați dacă citirile au eșuat și ieșiți

if (isnan (h) || isnan (t)) {Serial.println (F ("Nu s-a citit de la senzorul DHT!")); întoarcere; } dhtResult.h = h; dhtResult.t = t; }

Pasul 5: Trimiterea datelor către cloud

Odată ce avem aceste date, următorul pas este să le trimitem serviciului Cloud4RPi.

Pagina Cloud4RPi pentru Arduino descrie API-ul bibliotecii, care este un set de metode utilizate pentru:

  • creați, citiți și actualizați variabile,
  • trimiteți valori variabile în cloud utilizând protocolul MQTT.

Biblioteca acceptă trei tipuri de variabile: Bool, Numeric și String.

Fluxul de lucru al bibliotecii începe cu crearea unei instanțe API utilizând simbolul dispozitivului de pe site-ul web cloud4rpi.io (consultați partea 1 a articolului pentru detalii).

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

Apoi, declarați variabile pentru citirile DHT11:

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

Apoi, obțineți date de la senzor, salvați-le în variabile și publicați datele în Cloud4RPi:

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

Temperatura și umiditatea nu se schimbă rapid, deci nu este necesară trimiterea mai multor valori la 5 minute.

Pasul 6: Diagnosticare

Cloud4RPi acceptă date de diagnostic împreună cu valori variabile. Am folosit timp de funcționare, intensitatea semnalului Wi-Fi și adresa IP ca date de diagnostic:

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

Notă: Funcția de milis pe care o folosesc pentru a obține resetarea timpului de funcționare la zero la fiecare ~ 50 de zile. Ceea ce este mai mult decât suficient pentru proiectul meu.

Următorul cod stabilește valorile variabilei de diagnostic:

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

Funcția uptimeHumanReadable convertește milisecundele într-o formă convenabilă:

String uptimeHumanReadable (milisecunde lungi nesemnate) {static char uptimeStr [32]; secunde lungi nesemnate = milisecunde / 1000; minute lungi nesemnate = secunde / 60; orele int nesemnate = min / 60; zile int nesemnate = ore / 24; secunde - = minute * 60; minute - = ore * 60; ore - = zile * 24; sprintf (uptimeStr, "% d days% 2.2d:% 2.2d:% 2.2d", (byte) days, (byte) hours, (byte) mins, (byte) secs); return String (uptimeStr); }

Funcția afișează un șir ca acesta 5 zile 10:23:14 în loc de un număr mare ciudat.

Pasul 7: Porniți și depanați proiectul

Porniți și depanați proiectul
Porniți și depanați proiectul

După compilarea codului creat și introducerea acestuia în NodeMCU, dispozitivul se conectează la un serviciu cloud și începe să trimită date.

Puteți crește verbozitatea jurnalizării setând variabila preprocesator CLOUD4RPI_DEBUG la 1 (adăugați -D CLOUD4RPI_DEBUG = 1 la secțiunea build_flags din fișierul platform.io).

Apoi, deschideți site-ul cloud4rpi.io și observați noul dispozitiv online. Deschideți-l pentru a vedea toate valorile variabile primite de pe dispozitiv: senzor și diagnosticare.

Pasul 8: Configurarea tabloului de bord

Configurare tablou de bord
Configurare tablou de bord

La acest pas, conexiunea de date la cloud este operațională. Acum, să configurăm reprezentarea vizuală a datelor.

Am folosit interfața de configurare a tabloului de bord pentru a crea următorul tablou de bord.

Tabloul de bord este partajabil, așa că îl împărtășesc instantaneu prietenului meu.

Pasul 9: Concluzie

Concluzie
Concluzie

Codul complet al proiectului este disponibil în esență.

Asta este tot pentru acum!

Întrebări și sugestii sunt binevenite în comentarii.

Recomandat: