Taula de continguts:

Connexió d’un sensor DHT11 / DHT22 al núvol amb una placa basada en l’ESP8266: 9 passos
Connexió d’un sensor DHT11 / DHT22 al núvol amb una placa basada en l’ESP8266: 9 passos

Vídeo: Connexió d’un sensor DHT11 / DHT22 al núvol amb una placa basada en l’ESP8266: 9 passos

Vídeo: Connexió d’un sensor DHT11 / DHT22 al núvol amb una placa basada en l’ESP8266: 9 passos
Vídeo: ESP32 DHT Web Server Project 2024, De novembre
Anonim
Connexió d’un sensor DHT11 / DHT22 al núvol amb una placa basada en l’ESP8266
Connexió d’un sensor DHT11 / DHT22 al núvol amb una placa basada en l’ESP8266

A l’article anterior, vaig connectar la meva placa NodeMCU basada en l’ESP8266 a un servei Cloud4RPi. Ara, és hora d’un projecte real!

Subministraments

Requisits de maquinari:

  • Qualsevol placa basada en un xip ESP8266 (per exemple, NodeMCU)
  • Un sensor DHT11 o DHT22

Programes i serveis:

  • Biblioteca de sensors DHT d'Adafruit - v1.3.7
  • Adafruit Unified Sensor - v1.0.3
  • cloud4rpi-esp-arduino - v0.1.0
  • Cloud4RPI: tauler de control del núvol per a dispositius IoT
  • PlatformIO IDE per a VSCode

Pas 1: mesureu la temperatura i la humitat

Mesureu la temperatura i la humitat
Mesureu la temperatura i la humitat

Ja tenia un sensor DHT11, així que vaig decidir utilitzar-lo per mesurar la temperatura i la humitat. Escollim una biblioteca Arduino per llegir les dades del sensor.

El registre Arduino conté diverses biblioteques, de les quals he seleccionat la més popular.

Segons el seu dipòsit GitHub, també se’ns exigeix afegir un paquet Adafruit Unified Sensor.

Pas 2: Creeu i configureu el projecte

Crea i configura el projecte
Crea i configura el projecte

Ja he descrit com crear un projecte PlatformIO i instal·lar biblioteques a la primera part. El meu projecte es diu "MyNodeMCU". L’estructura es mostra a la part superior.

Aquest projecte és un exemple de Cloud4RPi lleugerament modificat. Vaig decidir emmagatzemar el testimoni del dispositiu i les credencials de Wi-Fi al fitxer de configuració en lloc del codi.

El fitxer platform.io té el següent aspecte:

[platformio] default_envs = nodemcuv2 [env: nodemcuv2] plataforma = espressif8266 framework = placa arduino = nodemcuv2

Pas 3: instal·leu biblioteques

Instal·leu biblioteques
Instal·leu biblioteques

La instal·lació de les biblioteques és bastant senzilla. Podeu fer-ho des de la interfície gràfica de l'IDE o afegint els noms de biblioteca necessaris a la secció lib_deps del fitxer platform.io:

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

Les biblioteques afegides s’instal·laran automàticament a la subcarpeta d’un projecte.

La capçalera main.cpp té el següent aspecte:

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

Pas 4: connecteu un sensor DHT11

Adafruit proporciona un exemple DHTtester.ino d’una connexió de sensor.

Aquest codi inicialitza un sensor i defineix una estructura per emmagatzemar el resultat de la mesura (en cas que fos correcte):

#define DHTPIN 2 // Pin digital connectat al sensor DHT # define DHTTYPE DHT11 // DHT 11 // … DHT dht (DHTPIN, DHTTYPE); dht.begin (); // … struct DHT_Result {float h; flotador t; }; DHT_Resultat dhtResultat;

La següent funció mostra com llegir les dades del sensor i emmagatzemar-les a l’estructura de dades descrita anteriorment

void readSensors () {float h = dht.readHumidity (); // Llegiu la temperatura com Celsius (per defecte) flotant t = dht.readTemperature ();

// Comproveu si alguna lectura ha fallat i sortiu

if (isnan (h) || isnan (t)) {Serial.println (F ("No s'ha pogut llegir del sensor DHT!")); tornar; } dhtResult.h = h; dhtResult.t = t; }

Pas 5: enviament de dades al núvol

Un cop tinguem aquestes dades, el següent pas és enviar-les al servei Cloud4RPi.

La pàgina Cloud4RPi per Arduino descriu l'API de la biblioteca, que és un conjunt de mètodes utilitzats per:

  • crear, llegir i actualitzar variables,
  • enviar valors variables al núvol mitjançant el protocol MQTT.

La biblioteca admet tres tipus de variables: Bool, Numeric i String.

El flux de treball de la biblioteca comença amb la creació d’una instància de l’API mitjançant el testimoni de dispositiu del lloc web cloud4rpi.io (consulteu la part 1 de l’article per obtenir més informació).

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

A continuació, declareu les variables per a les lectures DHT11:

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

A continuació, obteniu dades del sensor, deseu-les en variables i publiqueu-les a Cloud4RPi:

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

La temperatura i la humitat no canvien ràpidament, de manera que no cal enviar més d’un valor cada 5 minuts.

Pas 6: diagnòstic

Cloud4RPi admet dades de diagnòstic juntament amb valors variables. He utilitzat el temps d'activitat, la intensitat del senyal Wi-Fi i l'adreça IP com a dades de diagnòstic:

c4r.declareDiagVariable ("Adreça_IP"); c4r.declareDiagVariable ("RSSI"); // Intensitat del senyal WiFi c4r.declareDiagVariable ("Temps d’activitat");

Nota: la funció millis que faig servir per obtenir restabliments de temps d'activitat a zero cada ~ 50 dies. La qual cosa és més que suficient per al meu projecte.

El codi següent defineix els valors de les variables de diagnòstic:

c4r.setDiagVariable ("RSSI", (String) WiFi. RSSI () + "dBm"); c4r.setDiagVariable ("IP_Address", WiFi.localIP (). toString ()); c4r.setDiagVariable ("Temps d'activitat", uptimeHumanReadable (currentMillis)); c4r.publishDiag ();

La funció uptimeHumanReadable converteix els mil·lisegons en una forma convenient:

String uptimeHumanReadable (mil·lisegons llargs sense signar) {static char uptimeStr [32]; secs llargs sense signar = milisegons / 1000; mins llargs sense signar = segons / 60; hores sense signar = mins / 60; dies int signats = hores / 24; segons - = minuts * 60; minuts - = hores * 60; hores - = dies * 24; sprintf (uptimeStr, "% d dies% 2.2d:% 2.2d:% 2.2d", (byte) dies, (byte) hores, (byte) mins, (byte) segons); return String (uptimeStr); }

La funció emet una cadena com aquesta 5 dies 10:23:14 en lloc d'un número gran estrany.

Pas 7: inicieu i depureu el projecte

Inicieu i depureu el projecte
Inicieu i depureu el projecte

Després de compilar el codi creat i introduir-lo a NodeMCU, el dispositiu es connecta a un servei al núvol i comença a enviar dades.

Podeu augmentar la verbositat del registre establint la variable de preprocessador CLOUD4RPI_DEBUG a 1 (afegiu -D CLOUD4RPI_DEBUG = 1 a la secció build_flags al fitxer platform.io).

A continuació, obriu el lloc cloud4rpi.io i observeu el nou dispositiu en línia. Obriu-lo per veure tots els valors de variables rebuts del dispositiu: sensor i diagnòstic.

Pas 8: Configuració del tauler

Configuració del tauler
Configuració del tauler

En aquest pas, la connexió de dades al núvol està operativa. Ara, configurem la representació visual de les dades.

He utilitzat la interfície d’usuari de configuració del tauler per crear el següent tauler.

El tauler es pot compartir, de manera que el comparteixo instantàniament amb el meu amic.

Pas 9: Conclusió

Conclusió
Conclusió

El codi complet del projecte està disponible al resum.

Això és tot per ara!

Les preguntes i suggeriments són benvinguts als comentaris.

Recomanat: