Ma fontaine d’eau fraîche connectée dans mon réfrigérateur avec un esp8266

Aujourd’hui on va apprendre à créer un système pour remplir la réserve d’eau de sont réfrigérateur avec un esp8266 et avoir de l’eau fraiche tous les jours.
On va devoir avoir un code fiable pour éviter les fuites 😁

Schéma de branchement d'un esp8266 et capteur de niveau d'eau

En matériel il nous faut un ESP8266

– 1 pcb
– 1 L7805CV
– 1 TIP120
– 2 condensateur 100µF ou supérieur et minimum 16V
– 1 résistance 220Ω ( pour le bouton )
– 1 résistance 2.2kΩ (pour le TIP120)
– 1 résistance 330Ω (pour la led )
– 1 led
– 1 diode 1N4001 ou supérieur
– 1 electrovanne 12v DCF-HSY4
– 1 ou 2 capteur de niveau XKC-Y25-V
– 1 bouton poussoir
– un tuyaux pour réfrigérateur américain, coudes et robinet
– 1 alimentation 12v minimum 1A

Branchements et câblages

On va devoir générer une alimentation en 5V pour alimenter l’ESP8266 et les capteurs de niveau. Notre alimentation de base est une alimentation en 12V pour commander l’électrovanne. Pour la transformer en 5V on utilise un L7805CV avec un condensateur en entrée et un en sortie.
Le pin 1 du L7805CV est pour le 12V entrant, le pin 2 est pour le gnd et le pin 3 est pour la sortie en 5V.
Le 5V sert à alimenter le XKC-Y25-V sur le pin câble bleu, le gnd va sur le pin câble marron.

Restons sur les capteurs de niveau d’eau, vous avez le choix, un ou deux capteur.
De mon coté j’ai choisi un seul capteur.
Niveau branchement pour un capteur c’est le pin D8 de l’esp qui doit être connecté au câble jaune du capteur de niveau ( capteur de niveau haut ). Avec deux capteur il faut connecter le deuxième capteur sur le pin D6 ( capteur de niveau bas ).

Parlons maintenant de la partie électrovanne DCF-HSY4, d’un coté elle est connecté au 12V et de l’autre elle est connecté au TIP120 le pin 2. Le pin 3 est connecté au gnd et une diode relie le pin 3 et 2 du TIP120. Le pin 1 est quand a lui relié au une résistance de 2.2kΩ qui est elle même reliée au pin D1 de l’ESP.

Une led est utilisée pour afficher l’alarme en cas de disfonctionnement du dispositif de remplissage. Cette led est connectée au gnd d’un coté puis de l’autre a un résistance de 330Ω qui elle même est connecté au pin D3 de l’ESP.

Et enfin un bouton poussoir est la pour remettre à 0 l’alarme de disfonctionnement ou forcer le remplissage. Sur un des coté du bouton on y emmène le 5V de l’autre coté une résistance de 220Ω qui elle même est connecté au gnd et aussi au pin D5 de l’esp.

Si vous n’avez pas encore effectué cette étape dans votre logiciel Arduino, suivez ces instructions : allez dans “Préférences”, puis “Gestionnaire de cartes supplémentaires” et ajoutez l’URL suivante : http://arduino.esp8266.com/stable/package_esp8266com_index.json

Ajouter la carte dans outils, type de carte, gestionnaire de carte et ajouter esp8266
Lorsque vous téléversez votre programme, assurez-vous de sélectionner la carte correcte pour un transfert de code réussi.

Que va t’on faire dans le code ?

Maintenant, entrons dans la partie de programmation du microcontrôleur ESP8266 ! Voici ce que j’ai prévu :

  1. Établir une connexion à un réseau Wi-Fi.
  2. Récupérer la date et l’heure actuelle depuis un serveur en France.
  3. Programmer l’ouverture d’une vanne à une heure spécifique.
  4. Avoir la possibilité de forcer l’ouverture de la vanne manuellement.

Pour réaliser ces tâches, nous utilisons plusieurs bibliothèques indispensables dans notre programme :

  • NTPClient de Fabrice Weinberg pour la gestion de l’heure.
  • Arduino Timer de Michael Contreras pour gérer les délais et les temporisations.
  • En ce qui concerne les autres librairies nécessaires, elles sont incluses lorsque vous ajoutez le package ESP8266. Si par hasard vous ne les trouvez pas, une recherche sur Internet devrait vous permettre de les localiser. 😄

Code , programmation de l’esp8266

On appelle nos différentes librairies WiFiUdp.h et ESP8266WiFi.h pour gérer le wifi.
Ensuite NTPClient.h pour nous permettre de synchroniser l’horloge de l’esp8266 avec un serveur ntp pour obtenir l’heure exacte.
Pour finir la librairie arduino-timer.h pour gérer des minuteries.

On passe aux définitions des variables, avec SSID et PASSWORD pour les informations de connexion au wifi.
Ensuite les pin pour l’électrovanne D1,la led alarme D3, le capteur niveau haut D8, le capteur de niveau bas (optionnel) D6 et pour le bouton de forçage de remplissage et remise à zéro de l’alarme le pin D5.
Le TEMPMAX est le temps maximal pendant lequel l’électrovanne s’active avant de se mettre en alarme, 60000 correspond a 1 minute. C’est à adapter au temps de remplissage maximum de votre réservoir.
Puis 2 variable HEURESTART et MINUTESTART pour définir l’heure et les minutes à laquelle activer le remplissage du réservoir.

Ensuite nous avons toute la partie NTP pour la synchronisation de l’heure sur internet.

Puis définition du timer ainsi que des variables booléen pour les timer d’alarme et le bouton.

La fonction miseAJourTimeWeb pour mettre a jour l’heure avec ntp.

Ensuite la fonction resetESP8266 qui sert à relancer l’esp et ne pas crash après quelques jours de fonctionnement. Le reset ne se fait pas si l’alarme est enclenchée.

Partie setup, le serial pour debug mais pas obligatoire, on entre dans le dur avec la connexion wifi avec WiFi.begin, on enchaine avec une boucle ou on s’assure d’être connecté avant de poursuivre.

Puis on définir les pinMode, vanne et alarme en OUTPUT car on envoie une tension et les capteurs de niveau et le bouton en INPUT car on reçoit une tension. Et on met l’alarme à LOW pour éteindre la led.

Activons le timer avec timeClient.begin et appeler la miseAJourTimeWeb.
Et on crée un timer qui se lance tous les jour pour reset l’esp avec timer.every(86400000, resetESP8266)

Nous avons la fonction timerStopVanne qui arrête la vanne quand le temps est écoulé. Et créer ensuite un timer task.

Attaquons la boucle avec un timer.tick pour faire fonctionner le timer.
Ensuite nos variables heure et minutes qui récupère l’heure et minute du moment.
Deux autres variables pour les capteurs de niveau , capteurHaut et capteurBas.
Notre premier condition est timerAlarm qui évite de déclencher le remplissage si il y a eu une alarme de dysfonctionnement.
La condition suivante permet de déclencher le remplissage si l’heure, minutes est atteinte ainsi que le capteurHaut est a l’état LOW et que timerStarted est à faux, cette variable permet un seul déclenchement.
Dans cette condition on passe VANNEPIN à l’état HIGH et déclenchement du timer pour arrêter la vanne en cas de temps dépassé.
Et on passe timerStarted à true.
Dans la condition else if elle se déclenche une fois que le remplissage a commencé avec timerStarted et que le capteurHaut est à l’état HIGH.
Dans cette condition on bascule VANNEPIN à LOW, on passe timerStarted à false et un arrêt du timer de temps dépassé pour l’alarme avec timer.cancel(task).

Voyons une partie optionnelle avec deux capteur, j’ai préféré utiliser un seul capteur car je ne vide pas mon réservoir en une journée au pire je pourrais le déclencher manuellement.
Dans cette partie on a une condition if et une else if, dans le if on vérifie que les deux capteurs capteurBas et capteurHaut sont à LOW.
Le if suivant vérifie que nous ne somme pas dans le timerStarted, on rempli le réservoir VANNEPIN et on déclenche le timer de sécurité timer.in(TEMPMAX, timerStopVanne).
On passe nos variables timerStarted, resetTimer et resetDoubleSensor à true.
Dans le else if on vérifie que les capteurs capteurBas et capteurHaut sont à HIGH et que resetDoubleSensor soit à true.
Dedans on annule le timer d’alarme avec timer.cancel ; on passe timerStarted et resetDoubleSensor à false.
Puis arrêt de la vanne VANNEPIN avec un état à LOW.

Passons à la dernière partie, la gestion du bouton pour allumage forcé et reset de l’alarme.
On récupère l’état du bouton de remplissage boutonForcage.
Dans la condition if on vérifie que le bouton est enfoncé, on vérifie ensuite si le capteurHaut est à l’état LOW et si c’est le cas activer la vanne sur VANNEPIN sinon on arrête la vanne.
On met boutonAppuye à true , timerAlarm à false ( remise de l’alarme à false ) et l’état de la led d’alarme ALARMEPIN à LOW.
Dans la condition else if on vérifie que la variable boutonAppuye est à true.
A l’intérieur on arrête la vanne avec VANNEPIN à LOW, on passe boutonAppuye, timerStarted, resetTimer à false et on cancel le timer d’arrêt avec timer.cancel(task).

Ce que je vous recommande c’est de faire tourner le code avec un seul capteur, c’est suffisant et on peut passer le câble plus facilement.

Télécharger le code pour l’esp8266 pour remplir notre réserve d’au automatiquement

Et voici le code : Télécharger
Et pour les fichiers 3d le seul vraiment exploitable pour votre projet est celui pour le capteur de niveau d’eau mais je vous met le projet complet aussi pour fusion 360
Télécharger projet fusion
Télécharger stl capteur XKC-Y25-V

📌 FAQ – Fontaine connectée avec ESP8266

Q : Pourquoi utiliser un ESP8266 pour automatiser une fontaine d’eau ?
R : L’ESP8266 permet de connecter facilement ton projet à un réseau Wi-Fi pour récupérer l’heure pour l’automatisation. Tu pourras avec des modification de code contrôler ou surveiller ta fontaine d’eau à distance via une interface web, une app ou même avec des notifications.


Q : Est-ce dangereux d’installer un système connecté dans un réfrigérateur ?
R : Non, si les composants sont bien isolés et protégés contre l’humidité. Il est recommandé d’utiliser des boîtiers étanches ou imprimés en 3D pour isoler l’électronique, ainsi que des connexions fiables. Si ton alimentation est bien isolée aucun problème.


Q : Quel type de capteur ou d’électrovanne peut-on utiliser ?
R : Tu peux utiliser une électrovanne 12 V ou 5 V pour contrôler l’arrivée d’eau, pilotée via un relais.


Q : Est-ce que ce projet peut être alimenté par une batterie ?
R : Techniquement oui, mais comme le système est dans un frigo et a besoin d’une alimentation stable, il est préférable d’utiliser un bloc secteur ou de se raccorder sur l’alim du frigo (en toute sécurité).


Q : Est-ce que je peux contrôler la fontaine depuis mon smartphone ?
R : Oui, avec l’ESP8266 tu peux créer une interface web simple, ou utiliser des services comme Blynk, Telegram Bot ou même ESPHome pour un contrôle mobile.

🔗 À découvrir aussi sur Retro&Geek

👉 Créer une application Android avec AppInventor pour contrôler un Arduino en Bluetooth
Idéal pour comprendre comment interfacer des projets maison avec un smartphone.

👉 Configurer le module HC-05 pour Arduino
Apprends à paramétrer un module Bluetooth HC-05 pour des projets domotiques simples.

👉 Créer une caméra thermique DIY avec AMG8833 et ESP8266
Un autre projet avancé utilisant l’ESP8266 pour afficher des données en ligne.

👉 Fabriquer un caisson pour imprimante 3D – Tevo Tornado
Pour protéger ton imprimante si tu fabriques des boîtiers ou composants 3D liés à la domotique.

N’hésitez pas à poser vos questions sur les réseaux sociaux de la chaîne instagramtwitter , facebook ,youtube , discord; si vous ne comprenez pas certaines parties du tutoriel n’hésitez pas , me dire ce que vous aimeriez que je crée pour en faire des vidéos tutoriel  et à partager les projets que vous aimeriez créer etc…

Comme toujours allez sur la page de C’est quoi Retro et Geek pour connaître tout ce que je recherche à faire sur la chaîne.

Merci les RetroGeeker et RetroGeekeuse