Table des matières:
- Fournitures
- Étape 1: Mesurer la température et l'humidité
- Étape 2: Créer et configurer le projet
- Étape 3: Installer les bibliothèques
- Étape 4: Connectez un capteur DHT11
- Étape 5: Envoi de données vers le cloud
- Étape 6: Diagnostic
- Étape 7: démarrer et déboguer le projet
- Étape 8: Configuration du tableau de bord
- Étape 9: Conclusion
Vidéo: Connecter un capteur DHT11/DHT22 au cloud avec une carte basée sur ESP8266 : 9 étapes
2024 Auteur: John Day | [email protected]. Dernière modifié: 2024-01-30 09:07
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é
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
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
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
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
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
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é:
Comment créer une domotique basée sur l'IoT avec le relais de contrôle des capteurs NodeMCU : 14 étapes (avec photos)
Comment faire de la domotique basée sur l'IoT avec le relais de contrôle des capteurs NodeMCU : Dans ce projet basé sur l'IoT, j'ai réalisé la domotique avec le module de relais de contrôle Blynk et NodeMCU avec retour en temps réel. En mode manuel, ce module de relais peut être contrôlé à partir d'un mobile ou d'un smartphone et, commutateur manuel. En mode automatique, cette smar
Moniteur météorologique M5Stack M5stick C basé sur ESP32 avec DHT11 - Surveiller la température, l'humidité et l'indice de chaleur sur le M5stick-C avec DHT11 : 6 étapes
Moniteur météorologique M5Stack M5stick C basé sur ESP32 avec DHT11 | Surveiller l'indice d'humidité et de chaleur de la température sur M5stick-C avec DHT11 : Salut les gars, dans ces instructables, nous apprendrons comment interfacer le capteur de température DHT11 avec m5stick-C (une carte de développement par m5stack) et l'afficher sur l'écran de m5stick-C. Donc, dans ce tutoriel, nous allons lire la température, l'humidité & chauffer je
Jouer au jeu Flappy Bird avec la carte de développement M5stick C basée sur M5stack Esp32 : 5 étapes
Jouer au jeu Flappy Bird avec la carte de développement M5stick C basée sur M5stack Esp32 : Salut les gars, aujourd'hui, nous allons apprendre à télécharger le code du jeu Flappy Bird sur la carte de développement m5stick c fournie par m5stack. Pour ce petit projet, vous aurez besoin de deux choses : m5stick-c conseil de développement : https://www.utsource.net/itm/p/8663561.h
Comment connecter le capteur d'humidité du sol et l'ESP8266 au cloud AskSensors IoT : 10 étapes
Comment connecter le capteur d'humidité du sol et l'ESP8266 au cloud IoT AskSensors : cette instructable vous montre comment connecter votre capteur d'humidité du sol et l'ESP8266 au cloud IoT. Pour ce projet, nous utiliserons un module WiFi de nœud MCU ESP8266 et un capteur d'humidité du sol qui mesure le contenu volumétrique de l'eau à l'intérieur du so
Une solution de vision abordable avec bras robotique basée sur Arduino : 19 étapes (avec photos)
Une solution de vision abordable avec bras robotique basée sur Arduino : lorsque nous parlons de vision industrielle, cela nous semble toujours tellement inaccessible. Alors que nous avons fait une démo de vision open source qui serait super facile à faire pour tout le monde. Dans cette vidéo, avec la caméra OpenMV, peu importe où se trouve le cube rouge, le robot est