Le fonctionnement :
La lumière s’allume à 7h et se coupe à 21h tous les jours.
Pendant qu’il fait jour, la consigne du chauffage est de 28 °C, dés qu’il fait nuit la consigne passe à 23°C.
Il y a 2 sondes de températures, une au point chaud et une au point froid, un tapis chauffant (résistance) est collé sous le terrarium au point chaud.
Si la température du point chaud dépasse la consigne et que la température au point froid est > 23 °C
(pour ne pas activer le chauffage l’été), on coupe le chauffage, sinon on l’allume.
Ceci est vérifié toute les 10s.
Si l'on appuie sur le bouton et qu'on le relâche, l'écran LCD s'allume et la séquence d'affichage des datas se lancent puis le LCD s'éteint.
Les datas des sondes sont envoyées dans une base de données sur un NAS.
Envoyées toutes les minutes, pour créer un graphe de l'historique sur une page web.
Elle sont envoyées également dans un fichier CSV qui est écrasé avec les nouvelles valeurs.
Ceci afin d'avoir la température et humidité en temps réel sous forme de jauge sur la page web.
Matériel nécessaire :
- Un NodeMCU :
Environ 8 euros
- Une alim 5v micro usb :
- Deux sondes DHT22 (Température et humidité) :
environ 5 euros pièce
- un module 2 relais :
environ 3 euros
- Un écran LCD 16x2 avec convertisseur I2C :
environ 2 euros
- Un bouton poussoir :
- Des câbles Dupont :
- Deux rallonges électrique de 1,5 m
Le montage :
Les sondes sur les GPIO14 et GPIO0
Les sondes en 3.3v et GND et une résistance 4,7K entre la pin 3.3v et la pin data de la sonde.
Le module relais en 5v et GND et les GPIO16 et GPIO5 pour le chauffage et la lampe.
L'écran LCD et I2C relié (soudure ou câble)
L' I2C en 3.3v et GND, SDA sur GPIO4 et SCL sur GPIO2
Le bouton au GPIO12 et au GND
Sur le schema le bouton est relié au 3.3v, c'est une erreur
Programmer le NodeMCU :
On peut utiliser plusieurs Firmware différent avec le NodeMCU,
avec le Firmware d’origine le langage est le LUA
avec micro python le langage est python
et ce qui nous intéresse dans notre cas c'est l’ IDE Arduino avec le langage de l’Arduino (langage c).
On le programme par le port série (port USB d’un pc).
Commençons par télécharger l’ IDE Arduino, une fois installé lancez le, vous devriez avoir ceci :
Se rendre dans Fichier » puis Préférences :
puis dans l’image ci-dessous :
Souligné en vert, le chemin où se trouve le dossier Arduino et les librairies,
les programmes que l’on fait.
(je suis sous Linux, pour Windows il y aurait c:/Arduino/ ou c:/document/Arduino)
Souligné en bleu vous devez placer ici cette URL :
http://arduino.esp8266.com/stable/package_esp8266com_index.json
Puis faites OK pour valider.
Allez dans « Outils », « Type de carte », et « Gestionnaire de carte » :
Tapez esp8266 dans le champ de recherche, vous devriez voir esp8266 by esp8266 community.
Puis installez et fermez .
Maintenant sélectionnez le type de carte : NodeMCU 0.9
Maintenant il faut installer les librairies pour les capteurs, le LCD par I2C et celle pour la gestion du temps.
les librairies DHT, Time, wire, liquidchrystal_I2C et ESP8266HTTPUpdateServer
Dézippez le dossier, copiez ci qu'il y a dans le dossier terrarium-NodeMcu_librairie dans votre dossier librairie, le chemin se trouve dans préférence souligné en vert dans une image précédente, généralement :
/home/xxxx/Arduino/librairies pour Linux
et
c/Arduino/librairies ou c/mes document/Arduino/librairies pour Windows.)
Le programme :
Il se décompose en 6 parties :
- Le code pour interroger le serveur NTP et nous donner l’heure. (NTP code)
- La fonction qui gère le chauffage et la lumière. (terrarium)
- La fonction d'écoute du bouton et de l'affichage du lcd
- La fonction qui envoi les datas des sondes tous les minutes au NAS.
Les 2 premières servent au fonctionnement du terrarium et sont donc nécessaire.
Les 2 autres servent à exporter les datas sur un serveur web distant, pour faire une page web avec les datas et historique du terrarium,
et si on appuie sur le bouton l'écran LCD s'allume et affiche les datas puis s'éteint.
Elle ne sont pas obligatoire .
Pour utiliser l'écran LCD on doit connaître son adresse I2C, sinon l'écran n'est pas reconnu (adresse 0x3F dans le programme terranodemcu.ino ligne 10), il faut utiliser un programme qui scan les adresses I2C .
voici le code scanI2C.ino :
Copiez ce fichier scanI2C.ino, puis collez le dans l’ide Arduino, vous devriez avoir ceci :
Branchez le NodeMCU sur un port USB du pc, puis dans « Outils », « port » choisissez le port ou est connecté le NodeMcu :
Sous Windows ce serait COM3 ou 4 ou autre.
Puis ouvrez la com série ici :
cette fenêtre apparaît :
Configurez le terminal série comme dans l’encadré bleu, laissez le ouvert et revenez sur l’IDE puis faite téléverser le programme :
L’ IDE va enregistrer le programme, le compiler :
et le téléverser dans le NodeMcu :
Ensuite retournez sur le terminal série , vous devriez avoir ceci si rien est trouvé :
N’hésitez pas à intervertir SDA et SCL pour vérifier, si tout va bien une adresse est trouvée :
Pour le tuto j’ai branché un baromètre qui a l’adresse 0x77, mais mon écran a l’adresse 03xF .
Notez l’adresse trouvée pour votre écran.
Puis ouvrez un nouveau fichier, effacer le contenu du nouveau fichier et copiez ce programme terranodemcu.ino :
et collez le dans l’ide Arduino.
Lisez le code il est commenté et il y a des parties à modifier avec vos paramètres.
Dés que le programme se lance, la lumière s’allumera s’il est entre 7h30 et 18h30 (à modifier selon vos souhaits).
La partie web :
Ce site est composé de 3 parties:
- la page d'accueil :
- la page historique :
- la partie Admin :
- l'authentification:
- la page Admin :
Sur votre serveur, dans mysql ou autre bdd, if faut créer une base de donnée nommée dht22.
Puis l' on crée la table suivante:
CREATE TABLE temphumi (date TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP, tempC DOUBLE, tempF DOUBLE, humiC DOUBLE, humiF DOUBLE);
Puis on va télécharger le site. (les fichiers sont consultable sur mon Github : terranodemcu)
dé-zippez et allez dans le dossier terranodemcu qui se trouve dans le dossier partie_web.
Ensuite, Il faut modifier dans le dossier terranodemcu:
connexion.php où il faut modifier vos accès à votre base de donnée.
Et trois fichiers à modifier dans le dossier admin du dossier terranodemcu:
auth.php où il faut définir vos accès à la page admin, backup.php en fin de fichier, il faut renseigner votre login et mdp de la base de donnée et index.php où il faut renseigner l'adresse IP de votre nodemcu.
Il y a le script alerte.sh (Uniquement si vous êtes chez free mobile, sinon supprimez ce fichier), Il envoi une série de 5 ping et récupére la moyenne de la température au point chaud de la dernière heure, si la com est perdue ou si la température moyenne de la dernière heure est inférieur à 22 °C un SMS vous sera envoyé (allez dans option de votre ligne et récupérer votre identifiant et mdp de cette option puis remplacez les XXX et YYY dans alerte.sh, une tache sur mon serveur exécute ce script toutes les heures)
Puis vous copiez le dossier terranodemcu à la racine de votre serveur web. (WWW)
Il faut maintenant donner les droits en écriture au groupe HTML sur le fichier :
data.csv
Pour voir votre page web :
http://adresse_ip_de_votre_serveur/terranodemcu
Vos aurez votre premier point dans la page historique au bout d'une minute
On peut accéder en local à la page admin du nodemcu et se passer du site: http://adresse_IP_du_nodemcu/firmware, elle est protégée par le login et le mot de passe qui est défini dans le programme terranodemcu.ino .
Si on passe par la page admin du site, il faut s'identifier avec le login et le mot de passe qui est défini dans auth.php (dossier admin du site web), puis il faudra donner le login et le mot de passe de la page admin du nodemcu, qui est défini dans le programme terranodemcu.ino.
on à plus besoin de s'authentifier sur la page admin tant que l'on appuie pas sur déconnexion où que l'on ferme le navigateur.
Cette page admin sert à flasher le nodemcu par le web, il suffit de lui envoyer le programme sous forme de fichier .bin
Quand vous compilez un programme, l'IDE Arduino crée un fichier .bin c'est ce fichier qu'il faudra envoyer :
Agrandissez la fenêtre du bas (flèche rouge), puis cliquez sur vérifier (cercle rouge), et notez le chemin du fichier (rectangle rouge) normalement il se trouve dans le dossier /tmp/arduino_buildXXXX
Voici le résultat :
ce tutoriel est le système utilisé sur le petit terrarium (celui en verre) :
Démonstration de l’affichage :
Appuyez sur le bouton et relâche le, la séquence d'affichage se lance .
Mon prototype fini :
une petite vidéo pour vous montrer la séquence d'affichage:
j’ai du éteindre la lumière sinon La vidéo donnait rien
Si vous avez des questions, n’hésitez pas, je suis disponible
Sinon c'est très fiable, plus de 2 ans déjà et aucune panne.