Table des matières:
- Étape 1: Matériel requis
- Étape 2: Connexions matérielles
- Étape 3: Code pour la planification des tâches
- Étape 4: Code de lecture des valeurs de température et d'humidité
- Étape 5: Code pour héberger un serveur Web
- Étape 6: Configuration de Thingspeak
- Étape 7: Code pour publier des données sur Thing Speak
- Étape 8: Code général
- Étape 9: Crédits
Vidéo: APPLICATION TEMPÉRATURE ET HUMIDITÉ THINGSPEAK UTILISANT ESP8266 : 9 étapes
2024 Auteur: John Day | [email protected]. Dernière modifié: 2024-01-30 09:06
En bricolant avec mes trucs électroniques, j'ai eu l'idée de créer une application météo basée sur le Web. Cette application Web utilise le capteur SHT31 pour obtenir les données de température et d'humidité en temps réel. Nous avons déployé notre projet sur le module WiFi ESP8266. En ligne ou hors ligne ! Ne vous inquiétez pas, que vous soyez en ligne ou hors ligne, vous obtiendrez les mises à jour météo de n'importe où et n'importe quand. Cette application Web publie des données sur le serveur Web local ainsi que sur le cloud. Pour les opérations cloud, nous utilisons l'API ThingSpeak. SHT31 utilise I2C pour obtenir les données du capteur.
SHT 31 est un capteur de température et d'humidité fabriqué par Sensirion. Le SHT31 offre un haut niveau de précision autour de ±2 % HR. Sa plage d'humidité est comprise entre 0 et 100 % et sa plage de température est comprise entre -40 et 125 °C. Il est beaucoup plus fiable et rapide avec 8 secondes de temps de réponse du capteur. Ses fonctionnalités incluent un traitement de signal amélioré et une compatibilité I2C. Il possède différents modes de fonctionnement, ce qui le rend économe en énergie.
Dans ce tutoriel, nous avons interfacé SHT 31 avec la carte Adafruit Huzzah. Pour lire les valeurs de température et d'humidité, nous avons utilisé le blindage ESP8266 I2C. Cet adaptateur rend toutes les broches accessibles à l'utilisateur et offre un environnement I2C convivial.
Étape 1: Matériel requis
Matériel utilisé pour effectuer cette tâche:
- SHT 31
- Adafruit Huzzah ESP8266
- Adaptateur ESP8266 I2C
- Câble I2C
Étape 2: Connexions matérielles
Cette étape comprend le guide de raccordement du matériel. Cette section explique essentiellement les connexions de câblage requises entre le capteur et l'ESP8266. Les connexions sont les suivantes.
- Le SHT31 fonctionne sur I2C. L'image ci-dessus montre la connexion entre l'ESP8266 et le module SHT31. Nous utilisons un câble I2C pour cela ou nous pouvons utiliser 4 fils de cavalier F à F.
- un fil est utilisé pour Vcc, le deuxième fil pour GND et deux autres pour SDA et SCL respectivement
- Selon l'adaptateur I2C, la broche 2 et la broche 14 d'une carte ESP8266 sont utilisées respectivement comme SDA et SCL
Étape 3: Code pour la planification des tâches
Dans ce tutoriel, nous effectuons trois opérations
- Lire les données de SHT11 en utilisant le protocole I2C
- héberger le serveur Web et publier la lecture du capteur sur la page Web
- publier les lectures des capteurs sur l'API ThingSpeak
Pour ce faire, nous utilisons la bibliothèque TaskScheduler. Nous avons programmé trois tâches différentes faisant référence à trois opérations de contrôle différentes. Cela se fait comme suit
- La tâche 1 sert à lire la valeur du capteur, cette tâche s'exécute pendant 1 seconde jusqu'à ce qu'elle atteigne un délai d'attente de 10 secondes.
- Lorsque la tâche 1 atteint son délai d'expiration, la tâche 2 est activée et la tâche 1 est désactivée.
- Nous nous connectons à AP dans ce rappel, deux variables booléennes sont prises en charge pour la commutation entre STA et AP
-
Dans la tâche 2, nous hébergeons un serveur Web à 192.168.1.4. Cette tâche s'exécute toutes les 5 secondes jusqu'à ce qu'elle atteigne son délai d'expiration qui est de 50 secondes
- Lorsque la tâche 2 atteint le délai d'expiration, la tâche 3 est activée et la tâche 2 est désactivée.
- Nous nous connectons à STA (IP locale) dans ce calbackDans la tâche 3, nous publions la lecture du capteur sur l'API ThingSpeak du cloud
- La tâche 3 s'exécute toutes les cinq secondes jusqu'à ce qu'elle atteigne son délai d'attente, c'est-à-dire 50 secondes
- Lorsque la tâche 3 atteint son délai d'expiration, la tâche 1 est à nouveau activée et la tâche 3 est désactivée.
- Lorsqu'aucun rappel n'est appelé ou que l'appareil est inactif, il passe en veille légère, économisant ainsi de l'énergie.
void taskI2CCallback();
void taskI2CDisable(); void taskAPCallback(); void taskAPDisable(); void taskWiFiCallback(); void taskWiFiDisable(); //Tâches pour i2c, hébergement de serveur Web et publication sur Thingspeak Tâche tI2C(1 * TASK_SECOND, TASK_FOREVER, &taskI2CCallback, &ts, false, NULL, &taskI2CDisable); Tâche tI2C(1 * TASK_SECOND, TASK_FOREVER, &taskI2CCallback, &ts, false, NULL, &taskI2CDisable); Tâche tAP(5*TASK_SECOND, TASK_FOREVER, &taskAPCallback, &ts, false, NULL, &taskAPDisable); Tâche tWiFi(5* TASK_SECOND, TASK_FOREVER, &taskWiFiCallback, &ts, false, NULL, &taskWiFiDisable); //timeout pour les tâches tI2C.setTimeout(10 * TASK_SECOND); tAP.setTimeout(50 * TASK_SECOND); tWiFi.setTimeout(50 * TASK_SECOND); //activer la tâche I2C tI2C.enable();
Étape 4: Code de lecture des valeurs de température et d'humidité
Nous utilisons la bibliothèque Wire.h pour lire les valeurs de température et d'humidité. Cette bibliothèque facilite la communication i2c entre le capteur et l'appareil maître. 0x44 est l'adresse I2C pour SHT31.
SHT31 fonctionne dans un mode de fonctionnement différent. Vous pouvez vous référer à la fiche technique pour cela. Nous utilisons 0x2C et 0x06 comme MSB et LSB respectivement pour le fonctionnement à un seul coup.
//Rappel de tâche I2C void taskI2CCallback(){ Serial.println("taskI2CStarted"); racine int non signée[6]; //commencer la transmission à partir de 0x44; Wire.beginTransmission(Adr); //pour une transmission en un coup avec une répétabilité élevée, nous utilisons 0x2C(MSB) et 0x06(LSB) Wire.write(0x2C); Wire.write(0x06); //fin de la transmission Wire.endTransmission(); //demande des octets à partir de 0x44 Wire.beginTransmission(Addr); Wire.endTransmission(); Wire.requestFrom(Adr, 6); if(Wire.available() == 6){ //data[0] et data[1] contiennent 16 bits de température. root[0] = Wire.read(); root[1] =Wire.read(); //data[2] contient 8 bits de CRC root[2] = Wire.read(); //data[3] et data[4] contiennent 16 bits d'humidité root[3] = Wire.read(); root[4] = Wire.read(); //data[5] se compose de 8 bits CRC root[5] = Wire.read(); } int temp = (root[0] * 256) + root[1]; //décaler le MSB de 8 bits ajouter LSB float cTemp = -45,0 + (175,0 * temp / 65535,0); float fTemp = (cTemp * 1,8) + 32,0; //décalez le MSB de 8 bits, ajoutez-y du LSB en pleine résolution et *100 pour le pourcentage d'humidité flottante = (100.0 * ((root[3] * 256.0) + root[4])) / 65535.0; tempC = cTemp; tempF = fTemp; humide = humidité; Serial.print("Température dans C:\t"); Serial.println(String(cTemp, 1)); Serial.print("Température dans F:\t"); Serial.println(String(fTemp, 1)); Serial.print("Humidité:\t "); Serial.println(String(humidité, 1)); }
Étape 5: Code pour héberger un serveur Web
Nous avons hébergé un serveur Web à partir de notre appareil sur une adresse IP statique.
La bibliothèque ESP8266WebServer est utilisée pour héberger le serveur Web
- Nous devons d'abord déclarer l'adresse IP, la passerelle et le masque de sous-réseau pour créer notre IP statique
- Déclarez maintenant le ssid et le mot de passe de votre point d'accès. connectez-vous au point d'accès à partir de n'importe quel appareil STA
- hébergez le serveur sur le port 80 qui est un port par défaut pour le protocole de communication Internet, Hypertext Transfer Protocol (HTTP) entrez 192.168.1.4 sur votre navigateur Web pour la page Web d'introduction et 192.168.1.4/Value pour la page Web de lecture du capteur
//IP statique pour APIPAddress ap_local_IP (192, 168, 1, 4);IPAddress ap_gateway (192, 168, 1, 254); IPAddress ap_subnet (255, 255, 255, 0); //ssid et AP pour le WiFi local en mode STA const char WiFissid = "*********"; const char WiFipass = "*********"; //ssid et passe pour AP const char APssid = "********"; const char APpass = "********"; Serveur ESP8266WebServer (80); void setup{server.on("/", onHandleDataRoot); server.on("/Value", onHandleDataFeed); server.onNotFound(onHandleNotFound);} void taskAPCallback(){ Serial.println("taskAP a démarré"); server.handleClient(); } void onHandleDataRoot(){ server.send(200, "text/html", PAGE1); } void onHandleDataFeed(){ server.send(200, "text/html", PAGE2); } void onHandleNotFound(){ String message = "Fichier introuvable\n\n"; message += "URI: "; message += serveur.uri(); message += "\nMéthode: "; message += (server.method() == HTTP_GET)?"GET":"POST"; message += "\nArguments: "; message += serveur.args(); message += "\n"; server.send(404, "text/plain", message); } void reconnectAPWiFi(){ WiFi.mode(WIFI_AP_STA); retard (100); WiFi.disconnect(); statut booléen = WiFi.softAPConfig(ap_local_IP, ap_gateway, ap_subnet); if(status ==true){ Serial.print("Setting soft-AP … "); booléen ap = WiFi.softAP(APssid, APpass); if(ap==true){ Serial.print("connecté à:\t"); //Adresse IP monIP = WiFi.softAPIP(); Serial.println(WiFi.softAPIP()); } serveur.begin();
}
Étape 6: Configuration de Thingspeak
ThingSpeak est une plateforme IoT. ThingSpeak est un service Web gratuit qui vous permet de collecter et de stocker les données des capteurs dans le cloud.
Dans cette étape, je vais vous donner une brève procédure pour configurer votre compte Thing Speak
- Inscrivez-vous pour un nouveau compte utilisateur dans ThingSpeak
- Créez une nouvelle chaîne en sélectionnant Chaînes, Mes chaînes, puis Nouvelle chaîne
- Modifier vos champs
- Ces champs contiennent les données de votre capteur
- Notez la clé d'API d'écriture et l'ID de canal
- Sur votre croquis Arduino, vous pouvez utiliser la bibliothèque ThingSpeak pour Arduino ou vous pouvez directement POST les données à l'API ThingSpeak
- l'étape suivante traite de la publication du contenu sur l'API Thing Speak
Étape 7: Code pour publier des données sur Thing Speak
Ici, nous publions les lectures des capteurs sur Thing Speak. les étapes suivantes sont nécessaires pour accomplir cette tâche-
- Créez votre compte dans thing speakCréez des canaux et des champs pour stocker les données de vos capteurs
- nous pouvons obtenir et publier les données d'ESP vers thingSpeak et vice-versa en utilisant les requêtes GET et POST à l'api.
- nous pouvons publier nos données sur ThingSpeak comme suit
id taskWiFiCallback(){ WiFiClient wifiClient; if(wifiClient.connect(hostId, 80)){ String postStr = apiKey; postStr +="&field1="; postStr += String(humide); postStr +="&field2="; postStr += String(tempC); postStr +="&field3="; postStr += String(tempF); postStr += "\r\n\r\n"; wifiClient.print("POST /mise à jour HTTP/1.1\n"); wifiClient.print("Hôte: api.thingspeak.com\n"); wifiClient.print("Connexion: fermer\n"); wifiClient.print("X-THINGSPEAKAPIKEY: "+apiKey+"\n"); wifiClient.print("Type de contenu: application/x-www-form-urlencoded\n"); wifiClient.print("Contenu-Longueur: "); wifiClient.print(postStr.length()); wifiClient.print("\n\n"); wifiClient.print(postStr); } wifiClient.stop(); }
Étape 8: Code général
Le code global est disponible dans mon dépôt GitHub
Étape 9: Crédits
- Arduino JSON
- Serveur Web ESP826
- Planificateur de tâches
- SHT 31
- Analyse I2C
- HIH6130 tutoriel instructables
- Câble
- NCD.io
Conseillé:
Automatiser une serre avec LoRa ! (Partie 1) -- Capteurs (température, humidité, humidité du sol) : 5 étapes
Automatiser une serre avec LoRa ! (Partie 1) || Capteurs (température, humidité, humidité du sol) : dans ce projet, je vais vous montrer comment j'ai automatisé une serre. Cela signifie que je vais vous montrer comment j'ai construit la serre et comment j'ai câblé l'électronique d'alimentation et d'automatisation. Je vais également vous montrer comment programmer une carte Arduino qui utilise L
ESP8266 Surveillance de la température Nodemcu à l'aide de DHT11 sur un serveur Web local - Obtenez la température et l'humidité de la pièce sur votre navigateur : 6 étapes
ESP8266 Surveillance de la température Nodemcu à l'aide de DHT11 sur un serveur Web local | Obtenez la température et l'humidité de la pièce sur votre navigateur : Salut les gars, aujourd'hui, nous allons faire une analyse de l'humidité et de l'humidité; système de surveillance de la température utilisant ESP 8266 NODEMCU & Capteur de température DHT11. La température et l'humidité seront obtenues à partir du capteur DHT11 et de l'amp; il peut être vu sur un navigateur quelle page Web sera gérée
Surveillance à distance de la température et de l'humidité avec ESP8266 et l'application Blynk : 15 étapes
Surveillance à distance de la température et de l'humidité avec ESP8266 et l'application Blynk : c'était mon premier projet avec la puce ESP8266. Je viens de construire une nouvelle serre près de chez moi et c'était intéressant pour moi ce qui s'y passe pendant une journée ? Je veux dire comment la température et l'humidité changent? La serre est-elle suffisamment aérée ? Alors je déc
Enregistreur Internet de température et d'humidité avec affichage utilisant ESP8266 : 3 étapes
Enregistreur Internet de température et d'humidité avec affichage utilisant ESP8266 : je voulais partager un petit projet qui, je pense, vous plaira. Il s'agit d'un petit enregistreur de température et d'humidité Internet durable avec affichage. Cela se connecte à emoncms.org et éventuellement, localement à un Raspberry PI ou à votre propre emoncm
Envoyer la température et l'humidité à l'application Blynk (Wemos D1 Mini Pro). : 15 étapes (avec photos)
Envoyer la température et l'humidité à l'application Blynk (Wemos D1 Mini Pro). : Ce Instructable examine l'utilisation du Wemos D1 Mini Pro pour envoyer des données (température et humidité) à l'application Blynk