BTS Mesure BTS Mesure
NodeMCUArduinoCommuniqueGrapheTGauge

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  projet 2018 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.

 

Température relevée le 09-04-24 à 16:05:16

Voir le graphe 

Consigne haute : 65 °C

Consigne Haute °C

Consigne basse : °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 :

  1. Cliquer sur Fichier
  2. puis sur  Preferences
  3. Ajouter l'URL de gestionnaire de cartes supplémentaires :

    http://arduino.esp8266.com/stable/package_esp8266com_index.json

  1.  Installer les cartes esp8266 à l'aide du gestionnaire de cartes :
    Remarque : les opérations 1 à 9 ne sont à réaliser qu'une seule fois.

 

  1. 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é.