L'humidité et la température sont des paramètres très courants pour mesurer dans de nombreux endroits comme la ferme, la serre, le médical, la maison d'industries et les bureaux. Nous avons déjà couvert la mesure de l'humidité et de la température à l'aide d'Arduino et affiché les données sur l'écran LCD.
Dans ce projet IoT, nous allons surveiller l'humidité et la température sur Internet à l'aide de ThingSpeak où nous afficherons les données d'humidité et de température actuelles sur Internet à l'aide du serveur ThingSpeak. Il est accompli par les communications de données entre Arduino, le module de capteur DHT11, le module WIFI ESP8266 et l'écran LCD. Un thermomètre à échelle Celsius et un humidimètre à échelle de pourcentage affichent la température et l'humidité ambiantes via un écran LCD et les envoient également au serveur ThingSpeak pour une surveillance en direct de n'importe où dans le monde.
Configuration de travail et de ThingSpeak:
Ce projet basé sur l'IoT comportant quatre sections, premièrement, le capteur d' humidité et de température DHT11 détecte les données d'humidité et de température . Deuxièmement, Arduino Uno extrait les données du capteur DHT11 en tant que nombre approprié en pourcentage et échelle Celsius, et les envoie au module Wi-Fi. Troisièmement, le module Wi-Fi ESP8266 envoie les données au serveur de ThingSpeak. Et enfin ThingSpeak analyse les données et les affiche sous forme de graphique. L' écran LCD en option est également utilisé pour afficher la température et l'humidité.
ThingSpeak fournit un très bon outil pour les projets basés sur l'IoT pour Arduino. En utilisant le site ThingSpeak, nous pouvons surveiller nos données sur Internet de n'importe où, et nous pouvons également contrôler notre système sur Internet, en utilisant les canaux et les pages Web fournis par ThingSpeak. ThingSpeak «collecte» les données des capteurs, «analyse et visualise» les données et «agit» en déclenchant une réaction. Ici, nous expliquons comment envoyer des données au serveur ThingSpeak en utilisant le module ESP8266 WIFI:
1. Tout d'abord, l'utilisateur doit créer un compte sur ThingSpeak.com, puis se connecter et cliquer sur Commencer.
2. Allez maintenant dans le menu «Chaînes» et cliquez sur l' option Nouvelle chaîne sur la même page pour un processus ultérieur.
3. Maintenant, vous verrez un formulaire pour créer le canal, remplissez le nom et la description selon votre choix. Remplissez ensuite «Humidité» et «Température» dans les étiquettes Champ 1 et Champ 2, cochez les cases des deux champs. Cochez également la case à cocher pour l'option `` Rendre public '' ci-dessous dans le formulaire et enfin Enregistrer la chaîne. Votre nouvelle chaîne a maintenant été créée.
4. Cliquez maintenant sur l'onglet 'Clés API' et enregistrez les clés API d'écriture et de lecture, ici nous n'utilisons que la clé d'écriture. Vous devez copier cette clé dans char * api_key dans le code.
5. Ensuite, cliquez sur "Importation / exportation de données" et copiez l'URL de demande de mise à jour du flux de canal GET, qui est:
api.thingspeak.com/update?api_key=SIWOYBX26OXQ1WMS&field1=0
6. L'utilisateur doit maintenant ouvrir «api.thingspeak.com» en utilisant la fonction httpGet avec le postUrl comme «update? Api_key = SIWOYBX26OXQ1WMS & field1 = 0», puis envoyer les données en utilisant le flux de données ou l'adresse de demande de mise à jour.
Avant d'envoyer les données, l'utilisateur doit modifier cette chaîne de requête ou postUrl avec des champs de données de température et d'humidité, comme indiqué ci-dessous. Ici, nous avons ajouté les deux paramètres dans la chaîne que nous devons envoyer via la requête GET au serveur, après quoi nous avons utilisé httpGet pour envoyer les données au serveur. Vérifiez le code complet ci-dessous.
Sprintf (postUrl, "update? Api_key =% s & field1 =% s & field2 =% s", api_key, humidStr, tempStr); httpGet ("api.thingspeak.com", postUrl, 80);
L'ensemble du processus est démontré dans la section Vidéo, à la fin de cet article.
Le fonctionnement de ce projet est basé sur une communication série à un seul fil pour récupérer les données de DHT11. Tout d'abord Arduino envoie un signal de démarrage au module DHT, puis DHT donne un signal de réponse avec des données contenant. Arduino collecte et extrait les données en deux parties, d'abord l'humidité et la seconde, la température, puis les envoie au serveur LCD 16x2 et ThingSpeak. ThingSpeak affiche les données sous forme de graphique comme ci-dessous:
Vous pouvez en savoir plus sur le capteur DHT11 et son interface avec Arduino ici.
Description du circuit:
Les connexions pour ce projet de surveillance de la température et de l'humidité ThingSpeak sont très simples. Ici, un affichage à cristaux liquides est utilisé pour afficher la température et l'humidité, qui est directement connecté à Arduino en mode 4 bits. Les broches de l'écran LCD à savoir RS, EN, D4, D5, D6 et D7 sont connectées aux broches numériques Arduino numéro 14, 15, 16, 17, 18 et 19. Cet écran LCD est facultatif.
Le module de capteur DHT11 est connecté à la broche numérique 12 d'Arduino. Les broches Vcc et GND du module Wi-Fi ESP8266 sont directement connectées à 3,3 V et GND d'Arduino et CH_PD est également connecté à 3,3 V. Les broches Tx et Rx de l'ESP8266 sont directement connectées aux broches 2 et 3 d'Arduino. La bibliothèque série logicielle est également utilisée ici pour permettre la communication série sur les broches 2 et 3 d'Arduino. Nous avons déjà couvert en détail l'interfaçage du module Wi-Fi ESP8266 avec Arduino.
Partie de programmation:
La programmation d'une partie de ce projet joue un rôle très important pour effectuer toutes les opérations. Tout d'abord, nous incluons les bibliothèques requises et initialisons les variables.
#include "dht.h" // Y compris la bibliothèque pour dht #include
Après cela, entrez votre clé API d'écriture et prenez quelques chaînes.
char * api_key = "SIWOYBX26OXQ1WMS"; // Entrez votre clé API d'écriture à partir de ThingSpeak static char postUrl; int humi, tem; void httpGet (String ip, String path, int port = 80);
Dans la fonction void loop () , nous lisons la température et l'humidité, puis affichons ces lectures sur l'écran LCD.
La fonction void send2server () est utilisée pour envoyer les données au serveur. La fonction Send2server est une routine de service d'interruption de minuterie, appelant toutes les 20 secondes. Lorsque nous appelons la fonction de mise à jour, la routine de service d'interruption de minuterie est appelée.
void send2server () {char tempStr; char humidStr; dtostrf (tem, 5, 3, tempStr); dtostrf (humi, 5, 3, humidStr); sprintf (postUrl, "mettre à jour? api_key =% s & field1 =% s & field2 =% s", api_key, humidStr, tempStr); httpGet ("api.thingspeak.com", postUrl, 80); }