J'ai un bassin de 800 litres que j'utilise pour arroser le potager. Ce bassin se remplit avec l'eau du puits via un surpresseur qui déclenche la pompe lorsque j'ouvre le robinet. Il m'arrive régulièrement d'oublier de fermer ce robinet (il faut environ 15 minutes pour que le bassin soit rempli), ce qui fait que l'eau déborde régulièrement. D'où l'idée d'automatiser la fermeture et l'ouverture de la vanne.

Mon choix s'est finalement porté vers un système mécanique afin de pouvoir agir manuellement si l'électronique ne répondait pas (il faudra pouvoir débrayer ou déplacer le servomoteur pour agir manuellement sur la vanne).

I- Cahier des charges :

  • Pouvoir toujours manœuvrer le robinet manuellement. -> Ceci élimine l'utilisation d'une électrovanne au profit d'un système de ce genre basé sur un servomoteur https://www.amazon.fr/compatible-Assistant-t%C3%A9l%C3%A9commande-automatisation-r%C3%A9gulateur/dp/B08YYMLT4C. Mais il faudra pouvoir le débrayer en écartant le servomoteur de la vanne à actionner et même mieux avoir un interrupteur pour choisir la position du servomoteur (2 possibilités à étudier).
  • Il n'y a pas de ligne électrique proche du bassin et j'aimerai éviter d'avoir à en tirer une. -> Il faudrait donc que le système fonctionne sur batterie autour des 5 volts.
  • Piloter la vanne via la domotique serait un plus en utilisant un firmware libre comme Tasmota (ne pas passer par Tuya, Smart Life par exemple). -> Via un module ESP32.

Mon choix s'est donc porté vers un système mécanique utilisant un servomoteur en m'inspirant du schéma suivant (source : https://github.com/arendst/Tasmota/discussions/10443) :

Schema ESP32 Servo

II- Choix du matériel :

III- Branchements :

Schéma bassin servo

  WeMos LOLIN32 Lite pinout mischianti low 1024x545

IV- Paramètrage dans la console de Tasmota :

Info sur les commandes Tasmota : https://tasmota.github.io/docs/Commands/#setoptions

  • Pour alimenter le module ESP 32 en 5 volts, j'ai récupéré un câble micro-USB que j'ai relié aux bornes + et - du module MP1584. J'ai essayé aussi via la connexion pour batterie Lipo en 3,7 volts mais sans succès.
  • Pour couper le circuit rapidement, j'ai rajouté un interrupteur "général" après la borne + de la batterie 12 volts.
  • Pour afficher dans la Web UI, l'adresse IP et le nom d'hôte : SetOption53 1

  • Avec ce montage, le servomoteur est toujours sous tension. Par contre, si l'on veut que le relais soit activé à l'allumage du module, il faut taper cette commande : PowerOnState 1
  • Commandes à faire au départ :
    SetOption80 1 // enable Shutters support.
    Shuttermode 5 // enable Shutter mode for servo.
    PWMfrequency 240 // this is a global variable for all Servos, pour le servo de 35 kg. Pour le servo de 80 kg, PWMfrequency 50 (50 Hz correspond à 20 ms).
    SetOption15 0 // to control the storage of values.
  • Pour le servo de 35 kg tournant à 180° :
    Avec Tasmota, il y a un problème avec la configuration "Shutter" : pour déplacer le servo, il faut utiliser la commande "pwm1 xxx" où xxx prend des valeurs de 80 à 560 (le milieu se situera donc à 320) pour mon servomoteur (déterminé en le testant). Attention aussi à la valeur de "PwmFrequency" qui permet d'actionner le moteur (pour mon servo, la valeur est autour de 240).
    Pour cela, il faut dans la console Tasmota, taper la commande "ShutterPWMRange1 80, 560" indiquant les valeurs minimale et maximale pour faire tourner le servo de 0° à 180°.
  • Pour le servo de 80 kg tournant à 270° (et dans les sens anti-horaire) :
    Avec Tasmota, il y a un problème avec la configuration "Shutter" : pour déplacer le servo, il faut utiliser la commande "pwm1 xxx" où xxx prend des valeurs de 120 à 615 (un déplacement de 90° se fera par pas de 165) pour mon servomoteur (déterminé en le testant). Attention aussi à la valeur de "PwmFrequency" qui permet d'actionner le moteur (pour mon servo, la valeur est autour de 50).
    Pour cela, il faut dans la console Tasmota, taper la commande "ShutterPWMRange1 120, 615" indiquant les valeurs minimale et maximale pour faire tourner le servo de 0° à 270°.
  • Du coup, on peut éliminer la gestion shutter avec la commande : SetOption80 0
  • J'ai rajouté aussi un interrupteur ON/OFF (en fonctionnement "toggle" pour qu'il informe à chaque changement d'état même s'il aurait mieux valu un bouton poussoir) pour pouvoir changer manuellement la position du servo moteur en appuyant dessus. Voir la "rule" plus bas.
  • Lorsque l'eau atteint la sonde, celle-ci doit renvoyer un signal pour que le servo actionne la fermeture de la vanne.
  • Mise en place de règles pour automatiser la fermeture et l'ouverture du servo de 35 kg :
    • Le Switch1 (inter 1) correspond à la sonde flotteur reliée au GPIO 12, avec le réglage : Switchmode1 1. De cette façon, lorsque le flotteur est en haut (bassin plein), cela met le servo moteur à la position "pwm1 80" (vanne fermée).
    • Le Switch2 (inter 2) correspond à l'interrupteur sur le GPIO 15. Dès qu'on appuie dessus, cela inverse la position du servomoteur : soit à la position "pwm1 80" (vanne fermée), soit à la position "pwm1 320" (vanne ouverte 1/4 de tour).
    • Il y a 2 relais virtuels sur les GPIO 16 (relais 2 qui est actionné avec POWER2) et 17 (relais 3 qui est actionné avec POWER3) afin de pouvoir agir à partir de la WebUI.
    • Pour effacer une règle : Rule1 ''
  • Pour le servo de 35 kg tournant à 180° :
    Pour fermer la vanne dès que le flotteur est en haut, inverser le servo via l'interrupteur manuel ou fermer/ouvrir la vanne à partir de la WebUI de Tasmota :
    Rule1 ON Switch1#state=0 DO Backlog Pwm1 80;Var1 0; POWER2 0; POWER3 0 ENDON ON Switch1#state=1 DO POWER2 1 ENDON ON Switch2#state=2 DO if (Var1==0) Pwm1 320;Var1 1; POWER3 1 endif ENDON ON Switch2#state=2 DO if (Var1==1) Pwm1 80;Var1 0; POWER3 0 endif ENDON ON POWER3#state==1 DO backlog Pwm1 320;Var1 1 ENDON ON POWER3#state==0 DO backlog Pwm1 80;Var1 0 ENDON
    Ne pas oublier d'activer la règle avec : rule1 1
    Décortiquons un peu ce code :
    • La variable Var1 sert à indiquer la position du servo (et donc la position de la vanne). Var1 0 correspond à la position vanne fermée alors que Var1 1 correspond à la position vanne ouverte.
    • ON Switch1#state=0 DO Backlog Pwm1 80;Var1 0; POWER2 0; POWER3 0 ENDON
      Lorsque le flotteur (Switch1) passe en position haute (OFF ou 0), cela ferme le servo avec la commande Pwm1 80, donne à la variable Var1 la valeur 0 (vanne fermée), et ajuste l'affichage de la WebUI de Tasmota en mettant le relais 2 (POWER2) à 0 ce qui indiquera pour le bouton "FLOTTEUR" la valeur OFF et en mettant le relais 3 (POWER3) à 0 ce qui mettra le bouton "SERVO" à OFF.
    • ON Switch1#state=1 DO POWER2 1 ENDON
      Lorsque le flotteur (Switch1) repasse en position basse (ON ou 1), cela ajuste l'affichage de la WebUI de Tasmota en mettant le relais 2 (POWER2) à 1 ce qui indiquera pour le bouton "FLOTTEUR" la valeur ON.
    • ON Switch2#state=2 DO if (Var1==0) Pwm1 320;Var1 1; POWER3 1 endif ENDON
      Lorsque l'interrupteur (Switch2) est actionné, si la vanne est fermée (Var1==0), cela ouvre le servo d'1/4 de tour avec la commande Pwm1 320, donne à la variable Var1 la valeur 1 (vanne ouverte), et ajuste l'affichage de la WebUI de Tasmota en mettant le relais 3 (POWER3) à 1 ce qui mettra le bouton "SERVO" à ON.
    • ON Switch2#state=2 DO if (Var1==1) Pwm1 80;Var1 0; POWER3 0 endif ENDON
      Lorsque l'interrupteur (Switch2) est actionné, si la vanne est ouverte (Var1==1), cela ferme le servo avec la commande Pwm1 80, donne à la variable Var1 la valeur 0 (vanne fermée), et ajuste l'affichage de la WebUI de Tasmota en mettant le relais 3 (POWER3) à 0 ce qui mettra le bouton "SERVO" à OFF.
    • ON POWER3#state==1 DO backlog Pwm1 320;Var1 1 ENDON
      Lorsque que dans la WebUI de Tasmota, on appuie sur le 3e bouton SERVO pour le passer à ON pour ouvrir la vanne, cela ouvre le servo d'1/4 de tour avec la commande Pwm1 320 et donne à la variable Var1 la valeur 1 (vanne ouverte).
    • ON POWER3#state==0 DO backlog Pwm1 80;Var1 0 ENDON
      Lorsque que dans la WebUI de Tasmota, on appuie sur le 3e bouton SERVO pour le passer à OFF pour fermer la vanne, cela ferme le servo avec la commande Pwm1 80 et donne à la variable Var1 la valeur 0 (vanne fermée).
  • Pour le servo de 80 kg tournant à 270° (mais dans le sens inverse du servo à 35 kg... soit le sens anti-horaire) :
    Pour fermer la vanne dès que le flotteur est en haut, inverser le servo via l'interrupteur manuel ou fermer/ouvrir la vanne à partir de la WebUI de Tasmota :
    Rule1 ON Switch1#state=0 DO Backlog Pwm1 340;Var1 0; POWER2 0; POWER3 0 ENDON ON Switch1#state=1 DO POWER2 1 ENDON ON Switch2#state=2 DO if (Var1==0) Pwm1 175;Var1 1; POWER3 1 endif ENDON ON Switch2#state=2 DO if (Var1==1) Pwm1 340;Var1 0; POWER3 0 endif ENDON ON POWER3#state==1 DO backlog Pwm1 175;Var1 1 ENDON ON POWER3#state==0 DO backlog Pwm1 340;Var1 0 ENDON
    Ne pas oublier d'activer la règle avec : rule1 1
  • Une fois le montage en place, il a été nécessaire d'affiner les valeurs d'ouvertures et de fermeture (les angles n'étant pas parfaitement respectés) :
    Rule1 ON Switch1#state=0 DO Backlog Pwm1 340;Var1 0; POWER2 0; POWER3 0 ENDON ON Switch1#state=1 DO POWER2 1 ENDON ON Switch2#state=2 DO if (Var1==0) Pwm1 150;Var1 1; POWER3 1 endif ENDON ON Switch2#state=2 DO if (Var1==1) Pwm1 340;Var1 0; POWER3 0 endif ENDON ON POWER3#state==1 DO backlog Pwm1 150;Var1 1 ENDON ON POWER3#state==0 DO backlog Pwm1 340;Var1 0 ENDON

V- Fonctionnement :

Tasmota Servo vanne1

Tasmota Servo vanne2

  • GPIO 0 -> permet d'allumer le relais 1 servant à commander le servomoteur. On peut donc désactiver ou activer le système en appuyant sur le 1er bouton ON/OFF.
  • GPIO 2 -> permet de piloter le servomoteur avec la commande Pwm1 ayant soit 80 (position fermée) soit 360 (position 1/4 ouvert).
  • GPIO 12 -> Branchement du flotteur qui lorsqu'il est en position haute (niveau d'eau maximum) va déclencher la fermeture de la vanne avec le servo. Dans l'interface WebUI de Tasmota, c'est le deuxième bouton qui n'a aucune action (relais virtuel sur le GPIO 16), c'est juste un indicateur de l'état du flotteur : ON (flotteur en position basse) et OFF (flotteur en position haute).
  • GPIO 15 -> Branchement de l'interrupteur manuel permettant d'inverser la position du servo.
  • GPIO 16 -> Relais 2 virtuel qui permet d'avoir un 2e bouton dans la WebUI de Tasmota. Dans la règle de Tasmota (rule1), ce bouton correspond au POWER2. Il permet d'indiquer la position du flotteur.
  • GPIO 17 -> Relais 3 virtuel qui permet d'avoir un 3e bouton dans la WebUI de Tasmota. Il permet d'actionner la vanne à distance dans la "rule1" via POWER3. Il permet aussi d'indiquer la position de la vanne : OFF (vanne fermée) et ON (vanne ouverte).

  • Pour changer l'intitulé des boutons dans WebUI, il faut utiliser la commande "webbutton" comme par exemple : WebButton2 FLOTTEUR
    WebButton3 SERVO

Ci-dessous une vidéo décrivant le fonctionnement :

{mp4}Domotique_Tasmota_Servo_Vanne{/mp4}

VI- Pièces de fixation :

  • Ces pièces ont été conçues sous FreeCAD et fabriquées à l'aide de mon imprimante 3D. Elles sont disponibles au bas de cette page pour ceux et celles intéressées.
    ATTENTION : ces pièces sont trop flexibles et ne permettent pas d'actionner la vanne. Il va falloir créer un collier en métal pour apporter de la rigidité. Il faudrait peut-être aussi un servomoteur plus costaud comme un 80 kg...
  • Il y a le berceau qui maintient le servomoteur avec une partie en forme de cercle à l'intérieur afin de pouvoir l'insérer puis le faire pivoter.
  • Il y a le support à fixer sur le tuyau (ou ailleurs) permettant de faire profiler l'axe du servomoteur avec l'axe de la vanne. Vu le montage de ma vanne (ouverture vers le haut), il faudra fixer au-dessous de la vanne pour laisser le champ libre au-dessus.
  • Il y a la "fourche" qui permet d'enserrer la poignée de la vanne pour pouvoir l'actionner. Pour faciliter son déplacement, il y aura 2 rouleaux de part et d'autre de la poignée.
  • Pièces à venir plus tard...