Taula de continguts:
- Subministraments
- Pas 1: mesureu la temperatura i la humitat
- Pas 2: Creeu i configureu el projecte
- Pas 3: instal·leu biblioteques
- Pas 4: connecteu un sensor DHT11
- Pas 5: enviament de dades al núvol
- Pas 6: diagnòstic
- Pas 7: inicieu i depureu el projecte
- Pas 8: Configuració del tauler
- Pas 9: Conclusió
Vídeo: Connexió d’un sensor DHT11 / DHT22 al núvol amb una placa basada en l’ESP8266: 9 passos
2024 Autora: John Day | [email protected]. Última modificació: 2024-01-30 08:13
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
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
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
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
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
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ó
El codi complet del projecte està disponible al resum.
Això és tot per ara!
Les preguntes i suggeriments són benvinguts als comentaris.
Recomanat:
Connexió d'Arduino WiFi al núvol mitjançant ESP8266: 7 passos
Connexió d'Arduino WiFi al núvol mitjançant ESP8266: en aquest tutorial us explicarem com connectar el vostre Arduino al núvol IoT a través de WiFi. Configurarem una configuració composta des d'un mòdul WiFi Arduino i un ESP8266 com a cosa IoT i el prepararem per comunicar-se amb el núvol AskSensors
Guia de connexió PLSD: Connexió a Apple TV mitjançant AirPlay [No oficial]: 10 passos
Guia de connexió PLSD: Connexió a Apple TV mitjançant AirPlay [No oficial]: es proporciona la següent guia per il·lustrar el procés de connexió a televisors Apple de sala de conferències mitjançant AirPlay. Aquest recurs no oficial es proporciona com a cortesia de l’administració, el personal i els hostes autoritzats del districte escolar de Perkins
Establir una connexió WiFi amb ESP8266 i obtenir l'adreça IP local: 3 passos
Establir una connexió WiFi amb ESP8266 i obtenir l’adreça IP local: en aquest tutorial veurem com establir una connexió WiFi amb la placa WiFi ESP8266. La connectarem amb la xarxa WiFi local
Com programar una placa AVR mitjançant una placa Arduino: 6 passos
Com programar una placa AVR mitjançant una placa Arduino: teniu instal·lada una placa de microcontrolador AVR? És complicat programar-lo? Bé, esteu al lloc correcte. Aquí us mostraré com programar una placa de microcontrolador Atmega8a mitjançant una placa Arduino Uno com a programador. Així que sense avançar
Clau basada en 10 $ IoT basada en el control de la bicicleta: 7 passos (amb imatges)
Clau basada en IoT de 10 $ menys control de la bicicleta: CONTROLA LA TEVA BICICLETA SENSE FIL AMB EL TEU TELÈFON ANDROID. SENSE CLAU, SENSE TENSIÓ