Table des matières:

Connecter un capteur DHT11/DHT22 au cloud avec une carte basée sur ESP8266 : 9 étapes
Connecter un capteur DHT11/DHT22 au cloud avec une carte basée sur ESP8266 : 9 étapes

Vidéo: Connecter un capteur DHT11/DHT22 au cloud avec une carte basée sur ESP8266 : 9 étapes

Vidéo: Connecter un capteur DHT11/DHT22 au cloud avec une carte basée sur ESP8266 : 9 étapes
Vidéo: IoT Contrôle par WiFi, Température et Humidité, depuis DHT22 (AM2302) NodeMCU ESP8266 + serveur web 2024, Juin
Anonim
Connecter un capteur DHT11/DHT22 au cloud avec une carte basée sur ESP8266
Connecter un capteur DHT11/DHT22 au cloud avec une carte basée sur ESP8266

Dans l'article précédent, j'ai connecté ma carte NodeMCU basée sur ESP8266 à un service Cloud4RPi. Maintenant, il est temps pour un vrai projet!

Fournitures

Exigences matérielles:

  • Toute carte basée sur une puce ESP8266 (par exemple, NodeMCU)
  • Un capteur DHT11 ou DHT22

Logiciels et services:

  • Bibliothèque de capteurs DHT par Adafruit - v1.3.7
  • Capteur unifié Adafruit - v1.0.3
  • cloud4rpi-esp-arduino - v0.1.0
  • Cloud4RPI - Panneau de contrôle cloud pour les appareils IoT
  • PlatformIO IDE pour VSCode

Étape 1: Mesurer la température et l'humidité

Mesurer la température et l'humidité
Mesurer la température et l'humidité

J'avais déjà un capteur DHT11, j'ai donc décidé de l'utiliser pour les mesures de température et d'humidité. Choisissons une bibliothèque Arduino pour lire les données des capteurs.

Le registre Arduino contient plusieurs bibliothèques, parmi lesquelles j'ai sélectionné la plus populaire.

Selon leur référentiel GitHub, nous devons également ajouter un package Adafruit Unified Sensor.

Étape 2: Créer et configurer le projet

Créer et configurer un projet
Créer et configurer un projet

J'ai déjà décrit comment créer un projet PlatformIO et installer des bibliothèques dans la première partie. Mon projet s'appelle « MyNodeMCU ». La structure est illustrée ci-dessus.

Ce projet est un exemple Cloud4RPi légèrement modifié. J'ai décidé de stocker le jeton de l'appareil et les informations d'identification Wi-Fi dans le fichier de configuration au lieu du code.

Le fichier platform.io se présente comme suit:

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

Étape 3: Installer les bibliothèques

Installer des bibliothèques
Installer des bibliothèques

L'installation des bibliothèques est assez simple. Vous pouvez le faire à partir de l'interface graphique de l'EDI ou en ajoutant les noms de bibliothèque requis à la section lib_deps du fichier platform.io:

; …lib_deps = cloud4rpi-esp-arduino Adafruit Unified Sensor Bibliothèque de capteurs DHT build_flags = -D MQTT_MAX_PACKET_SIZE=1024 -D MQTT_MAX_TRANSFER_SIZE=128 -D CLOUD4RPI_DEBUG=0 -D SSID_NAME=\"_YOUR_WIFI_\"_YOUR_WIFI_\" D CLOUD4RPI_TOKEN=\"_YOUR_DEVICE_TOKEN_\"

Les bibliothèques ajoutées seront automatiquement installées dans le sous-dossier d'un projet.

L'en-tête main.cpp se présente comme suit:

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

Étape 4: Connectez un capteur DHT11

Adafruit fournit un exemple DHTtester.ino de connexion de capteur.

Ce code initialise un capteur et définit une structure pour stocker le résultat de la mesure (en cas de succès):

#define DHTPIN 2 // Broche numérique connectée au capteur DHT#define DHTTYPE DHT11 // DHT 11 // … DHT dht(DHTPIN, DHTTYPE); dht.begin(); // … struct DHT_Result { float h; flotteur t; }; DHT_Result dhtResult;

La fonction suivante montre comment lire les données du capteur et les stocker dans la structure de données décrite ci-dessus

void readSensors() { float h = dht.readHumidity(); // Lecture de la température en Celsius (valeur par défaut) float t = dht.readTemperature();

// Vérifiez si des lectures ont échoué et quittez

if (isnan(h) || isnan(t)) { Serial.println(F("Échec de la lecture depuis le capteur DHT !")); revenir; } dhtRésultat.h = h; dhtRésultat.t = t; }

Étape 5: Envoi de données vers le cloud

Une fois que nous avons ces données, l'étape suivante consiste à les envoyer au service Cloud4RPi.

La page Cloud4RPi pour Arduino décrit l'API de la bibliothèque, qui est un ensemble de méthodes utilisées pour:

  • créer, lire et mettre à jour des variables,
  • envoyer des valeurs de variables dans le cloud à l'aide du protocole MQTT.

La bibliothèque prend en charge trois types de variables: Bool, Numeric et String.

Le flux de travail de la bibliothèque commence par la création d'une instance d'API à l'aide du jeton de périphérique du site Web cloud4rpi.io (reportez-vous à la partie 1 de l'article pour plus de détails).

#si défini(CLOUD4RPI_TOKEN) Cloud4RPi c4r(CLOUD4RPI_TOKEN); #else Cloud4RPi c4r("!!!_NO_DEVICE_TOKEN_!!!"); #fin si

Ensuite, déclarez les variables pour les lectures DHT11:

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

Ensuite, récupérez les données du capteur, enregistrez-les dans des variables et publiez les données sur Cloud4RPi:

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

La température et l'humidité ne changent pas rapidement, il n'est donc pas nécessaire d'envoyer plus d'une valeur toutes les 5 minutes.

Étape 6: Diagnostic

Cloud4RPi prend en charge les données de diagnostic ainsi que les valeurs variables. J'ai utilisé la disponibilité, la force du signal Wi-Fi et l'adresse IP comme données de diagnostic:

c4r.declareDiagVariable("IP_Address");c4r.declareDiagVariable("RSSI"); // Force du signal WiFi c4r.declareDiagVariable("Uptime");

Remarque: La fonction millis que j'utilise pour obtenir la disponibilité est remise à zéro tous les 50 jours environ. Ce qui est plus que suffisant pour mon projet.

Le code suivant définit les valeurs des variables de diagnostic:

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

La fonction uptimeHumanReadable convertit les millisecondes en une forme pratique:

String uptimeHumanReadable (millisecondes longues non signées) { static char uptimeStr[32]; longues secondes non signées = millisecondes / 1000; minutes longues non signées = secondes / 60; heures entières non signées = min / 60; jours entiers non signés = heures / 24; secondes -= minutes * 60; min -= heures * 60; heures -= jours * 24; sprintf(uptimeStr, "%d jours %2.2d:%2.2d:%2.2d", (octet)jours, (octet)heures, (octet)mins, (octet)secs); return String(uptimeStr); }

La fonction génère une chaîne comme celle-ci 5 jours 10:23:14 au lieu d'un étrange grand nombre.

Étape 7: démarrer et déboguer le projet

Démarrer et déboguer le projet
Démarrer et déboguer le projet

Après avoir compilé le code créé et l'avoir flashé dans NodeMCU, l'appareil se connecte à un service cloud et commence à envoyer des données.

Vous pouvez augmenter la verbosité de la journalisation en définissant la variable de préprocesseur CLOUD4RPI_DEBUG sur 1 (ajoutez -D CLOUD4RPI_DEBUG=1 à la section build_flags dans le fichier platform.io).

Ensuite, ouvrez le site cloud4rpi.io et remarquez le nouvel appareil en ligne. Ouvrez-le pour voir toutes les valeurs de variables reçues de l'appareil: capteur et diagnostics.

Étape 8: Configuration du tableau de bord

Configuration du tableau de bord
Configuration du tableau de bord

A cette étape, la connexion de données au cloud est opérationnelle. Maintenant, configurons la représentation visuelle des données.

J'ai utilisé l'interface utilisateur de configuration du tableau de bord pour créer le tableau de bord suivant.

Le tableau de bord est partageable, donc je le partage instantanément avec mon ami.

Étape 9: Conclusion

Conclusion
Conclusion

Le code complet du projet est disponible dans l'essentiel.

C'est tout pour le moment!

Les questions et suggestions sont les bienvenues dans les commentaires.

Conseillé: