Gestion du Terrarium par un NodeMCU

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 :

Le montage :

Image non disponible

Image non disponible

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 :

Image non disponible

Se rendre dans  Fichier » puis Préférences :

Image non disponible

puis dans l’image ci-dessous :

Image non disponible

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 » :

Image non disponible

Tapez esp8266 dans le champ de recherche, vous devriez voir esp8266 by esp8266 community.

Image non disponible

Puis installez et fermez .

Maintenant sélectionnez le type de carte : NodeMCU 0.9

Image non disponible

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 :

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 :

Image non disponible

Branchez le NodeMCU sur un port USB du pc, puis dans « Outils », « port » choisissez le port ou est connecté le NodeMcu :

Image non disponible

Sous Windows ce serait COM3 ou 4 ou autre.

Puis ouvrez la com série  ici :

Image non disponible

cette fenêtre apparaît :

Image non disponible

Configurez le terminal série comme dans l’encadré bleu de l'image ci-dessus, laissez le ouvert et revenez sur l’IDE puis faite téléverser le programme :

Image non disponible

L’ IDE va enregistrer le programme, le compiler :

Image non disponible

et le téléverser dans le NodeMcu :

Image non disponible Image non disponible

Ensuite retournez sur le terminal série , vous devriez avoir ceci si rien est trouvé :

Image non disponible

N’hésitez pas à intervertir SDA et SCL pour vérifier, si tout va bien une adresse est trouvée :

Image non disponible

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 :
image non disponible

la page historique :
image non disponible

la partie Admin :

l'authentification:
image non disponible

la page Admin :
image non disponible

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:

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 :

Image non disponible

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) :

image non disponible

Démonstration de l’affichage :

Appuyez sur le bouton et relâche le, la séquence d'affichage se lance .

Mon prototype fini :

Image non disponible

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.