Cuprins:
- Provizii
- Pasul 1: Măsurați temperatura și umiditatea
- Pasul 2: Creați și configurați proiectul
- Pasul 3: Instalați biblioteci
- Pasul 4: Conectați un senzor DHT11
- Pasul 5: Trimiterea datelor către cloud
- Pasul 6: Diagnosticare
- Pasul 7: Porniți și depanați proiectul
- Pasul 8: Configurarea tabloului de bord
- Pasul 9: Concluzie
Video: Conectarea unui senzor DHT11 / DHT22 la cloud cu o placă bazată pe ESP8266: 9 pași
2024 Autor: John Day | [email protected]. Modificat ultima dată: 2024-01-30 11:43
Î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
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
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
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
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
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
Codul complet al proiectului este disponibil în esență.
Asta este tot pentru acum!
Întrebări și sugestii sunt binevenite în comentarii.
Recomandat:
Conectarea ESP 32 cu senzor cu ultrasunete: 3 pași
Conectarea ESP 32 cu senzor cu ultrasunete: senzorii cu ultrasunete funcționează prin emiterea undelor sonore la o frecvență prea mare pentru ca oamenii să o audă. Apoi așteaptă ca sunetul să fie reflectat înapoi, calculând distanța pe baza timpului necesar. Acest lucru este similar cu modul în care radar măsoară timpul necesar
Conectarea unui comutator de alimentare la Creator Ci40: 4 pași
Conectarea unui comutator de alimentare la Creator Ci40: Construirea plăcii Creator Ci40 într-o incintă poate necesita controlul de la distanță a plăcii. Acest lucru instructiv arată cum să adăugați opțiuni active și pasive pentru controlul sursei de alimentare DC pe placă. De ce veți avea nevoie 1 Creator
Conectarea WiFi Arduino la cloud utilizând ESP8266: 7 pași
Conectarea Arduino WiFi la cloud folosind ESP8266: În acest tutorial vă vom explica cum să vă conectați Arduino la cloud IoT prin WiFi. Vom configura o configurare compusă dintr-un modul Arduino și un modul WiFi ESP8266 ca un lucru IoT și îl vom pregăti pentru a comunica cu cloud-ul AskSensors
Noțiuni de bază despre IoT: conectarea IoT-ului dvs. la cloud utilizând sistemul de operare Mongoose: 5 pași
Noțiuni de bază despre IoT: conectarea IoT-ului dvs. la cloud folosind sistemul de operare Mongoose: dacă sunteți o persoană care se ocupă de bricolaj și electronică, cel mai adesea, veți întâlni termenul de Internet al obiectelor, de obicei abreviat ca IoT, și că se referă la un set de dispozitive care se pot conecta la internet! A fi o astfel de persoană
UbiDots-Conectarea unui ESP32 și publicarea datelor cu senzori multipli: 6 pași
UbiDots-Conectarea unui ESP32 și Publicarea datelor cu senzori multipli: ESP32 și ESP 8266 sunt SoC foarte familiare în domeniul IoT. Acestea sunt un fel de avantaj pentru proiectele IoT. ESP 32 este un dispozitiv cu WiFi și BLE integrate. Dă doar configurația SSID, parola și IP și integrează lucrurile în