Internet of Things : capteurs connectés
Solution 1 : Arduino + carte Ethernet + capteur DHT22
Solution 2 : Arduino + capteur DHT22 + Labview protocole TCP
Solution 3 : NodeMCU Wifi + capteur DHT22
Au lycée un téléphone partagera sa 4G via un hotspot Wifi
Exemple de projet IoT : mesure du pH et de la température d'une piscine.
Le a pour objectif de mettre en oeuvre des capteurs connectés et une base de donnée MySQL.
Matériel solution 3
NodeMCU + ESP8266 : Cette carte de developpement Wifi pour les objets connectés peut se trouver pour moins de 3 euros...
Avantage : ce microcontrôleur (ESP8266 ) sur cette carte (NodeMCU)
peut être programmé par l'IDE Arduino.
On utilise donc le même langage pour le programmer.
Attention il faut utiliser la bibliothèque Adafruit pour programmer le DHT22 sur une NodeMCU.
- Bibliothèque DHT22 par Adafruit
- A dafruit_Sensor library (nécessaire pour utiliser la bibliothèque DHT22 ci-dessus)
Température relevée le 09-04-24 à 16:05:16
Voir le
graphe
Consigne haute : 65 °C Consigne basse : °C |
Installation des cartes esp8266
Il faut tout d'abord mettre à jour l'IDE
Arduino pour installer un nouveau module pour gérer les cartes esp8266.
De cette façon le NodeMCU se programme comme un Arduino...
Exemple de procédure à suivre :
- Cliquer sur
- puis sur
- Ajouter l'URL de gestionnaire de cartes supplémentaires :
http://arduino.esp8266.com/stable/package_esp8266com_index.json
- Installer les cartes esp8266 à l'aide du gestionnaire de
cartes :
Remarque : les opérations 1 à 9 ne sont à réaliser qu'une seule fois.
-
Dorénavant, lorsque vous voulez utiliser une carte NodeMCU basée sur l’esp8266,
il faudra commencer par sélectionner la carte NodeMCU à l'aide du gestionnaire de cartes.
Procédure de communication :
Le programme en langage Arduino
Son objectif est d'envoyer via un réseau Wifi la température et l'humidité mesuré par un capteur DHT22.
Le programme envoie une adresse URL contenant les mesures du capteur au serveur.
En tant que client Wifi, le NodeMCU reçoit la réponse
tel que le montre le moniteur série ci-contre.
Remarque : nous pouvons récupérer dans la réponse les consignes
Ch et Cb stockées sur le site.
Le NodeMCU dispose aussi d'une
entrée analogique A0 3,3 V <-> 1023
Nous avons donc aussi la possibilité de placer une CTN sur cette
entrée...
Difficultés rencontrées :
- la bibliothèque DHT22 habituelle ne fonctionne plus avec
NodeMCU
par contre la bibliothèque DHT22 fournie par Adafruit fonctionne. - Sur notre NodeMCU il faut mettre hors tension puis sous
tension le DHT22 pour que cela fonctionne
Remède : on alimente le DHT22 par les pattes D3 et D4. D2 sert à la transmission des données.
Ainsi nous contrôlons la mise sous tension du DHT22 - La mesure de la température à l'aide d'une CTN sur A0
n'était pas conforme à nos attentes
Nous avons contrôlé la tension au voltmètre : elle était juste.
Nous avons mesuré et comparé la résistance de notre CTN 100kΩ β=3950K, elle était conforme à la théorie
La résistance de visualisation R1 était de 100kΩ, mais elle se comportait comme une résistance équivalente de 78 kΩ
En fait il faut tenir compte d'une résistance d'entrée( R_IN) sur A0 que nous avons évalué à 355 kΩ - Autre solution : prendre une CTN 10 kΩ β=3950K
pour pouvoir négliger la résistance d'entrée...
Ou mieux : étaloner la CTN et son électronique associée... - Dernière solution testée avec succès : ajouter un CAN 16
bits I2C
ADS115
Il est fiable et facile à mettre en oeuvre.
Ainsi l'ESP8266 dispose de 4 entrées analogiques avec une résolution de 0,125 mV (contre 4,88 mV pour un Arduino Uno)
communique.php
Pour transmettre des mesures on utilise la page communique.php
Par exemple le NodeMCU génère l'URL
suivante :
http://bts2m.free.fr/DHT22/communique.php?t=23.2&h=43
A la fin de l'adresse nous avons ajouté
?t=23.2&h=43
Ce sont les paramètres que l'on envoie à communique.php
Cette page php va récupérer les variables température
t=23.2
et (&) humidité h=43
Il suffira d'utiliser la méthode
$_GET['t']
pour récupérer la température t.
Les dernières données sont stockées dans le fichier bts2m.free.fr/DHT22/Transfert.txt
L'ensemble des données est mis en forme dans bts2m.free.fr/DHT22/Ttab.txt
Elles sont aussi stockées dans un tableau TetH.csv que l'on peut ouvrir avec Excel.
GrapheT.php
Cette mise en forme permet l'utilisation de l'API
Google Charts
Exemple du code php pour mettre en oeuvre Google Charts
Autre API utilisée :
Gauge
Nous en profitons pour transmettre une Consigne Haute Ch et une
consigne Basse Cb
stockée dans
bts2m.free.fr/DHT22/ConsigneB.txt
et
ConsigneH.txt
Exemple du code php utilisé.