Home Assistant-Gestion piscine-4_Mesure Ph

Dans la série « gestion piscine », faisant suite aux articles sur la filtration, la mesure de puissance électrique et la mise à niveau automatique, je vous propose de découvrir mon dispositif de mesure du pH.

Les possesseurs de piscine le savent, le pH est une composante importante dans le traitement des eaux de piscine. Un mauvais pH rendra très difficile voir impossible le traitement de l’eau. Personnellement, je cible une valeur de Ph à 7.2 +-0.2.

Dans le commerce vous trouvez beaucoup de régulateurs de pH, malheureusement à des prix trop élevés à mon gout.

J’ai découvert les modules EZO fabriqués par AtlasScientific au hasard du net, mais la toute récente intégration du module EZO dans EspHome m’a conforté dans ce choix.

Je commande les modules EZO chez https://www.whiteboxes.ch/ , c’est rapide et j’ai pas trouvé mieux ailleurs en Europe. leur boutique est bien organisée, vous y retrouvez bon nombre de produits ainsi que la documentation très fournie associée.

Vous y trouvez notamment des modules et sondes de mesure de conductivité, ORP, oxygène dissoute, température, mesure de gaz O² et CO², de couleur, humidité, pression, ainsi que divers accessoires.

Nota: dans un premier temps, je ne traite dans cet article que la mesure de pH, la régulation avec des pompes péristaltiques fera l’objet d’une mise à jour.

La partie matérielle

La liste des courses se résume à:

  • Un module mesure de ph EZO
  • Une sonde pH EZO. J’utilise celle ci mais il existe des modèles compatibles industriels beaucoup plus chers et des modèles chinois beaucoup moins chers, c’est selon l’importance et le budget que vous accorderez à la fiabilité et la pérennité de la mesure.
  • Un connecteur SMA pour la sonde.
  • Un module d’isolation galvanique EZO. Je ne l’ai utilisé qu’apres avoir essayé sans, mais je rencontrai des problèmes de stabilité de mesure, résolus grâce à ce module.
  • Un afficheur local 2 lignes de 16 caractères . Vous en trouvez à foison sur le net, c’est pratique de le choisir avec une puce compatible ESPHome.
  • Un ESP32. J’ai choisi ce modèle car je pense lui confier à terme d’autres fonctionnalités dédiées à la piscine, cependant un esp8266 D1 ferait très bien l’affaire.
  • Une alimentation 220VCA-5VCC courant continu.
  • Quelques connecteurs et cordons JST précablés.
  • Divers composants et accessoires

Pour des raison pratiques j’ai dissocié la partie ESP de la partie mesure du pH, donc deux circuits imprimés.

Je préfère intégrer mes composants sur un circuit imprimé, c’est plus propre et donc plus fiable. Je conçois mes schémas et mes circuit imprimés avec le logiciel Eagle et je les grave avec une CNC de ma fabrication.

Schéma électronique de mesure du pH

Vous y retrouvez:

  • Le module d’isolation galvanique
  • Le module de mesure de pH
  • le connecteur SMA (SV1)

Circuit imprimé réalisé avec Eagle

Fichiers Eagle à télécharger

Schéma électronique de l’ESP

Quelques explications sur le schéma:

  • Bus I²C (pin 21,22) a quatre connecteurs: 1 pour l’afficheur, 1 pour le module EZO, 2 pour de futures pompes péristaltiques (injection pH+ et pH-).
  • Bus UART (pin 18,19): Réserve si besoin de brancher un UART
  • Entrées digitales (pin 16,17): Si besoin d’une action rapide en local (Bouton poussoir Marche arrêt pompe par exemple)
  • Entrée analogique (pin 3): Mesure de pression du filtre à sable
  • Entrée analogique (pin 4): Mesure de pression refoulement (A venir)
  • BP RAZ (Pin 2): Accès au « reboot » de l’ESP en local.

Vous constaterez l’anticipation de quelques fonctionnalités complémentaires qui feront l’objet d’articles spécifiques.

Le Circuit imprimé réalisé avec Eagle

J’évite si possible la fabrication de circuit double face, d’où l’utilisation de quelques straps (en rouge) me permettant de m’en sortir avec un CI simple face.

Fichiers Eagle à télécharger

La partie logicielle

Module EZO

Le module de mesure EZO peux communiquer selon deux protocoles: I²C ou UART. Seul le protocole I²C est disponible dans ESPHome . Par défaut le module est configuré d’usine en UART, il faut donc le basculer en I²C. C’est très simple et bien expliqué dans la documentation du module.

Deux solutions pour le changement de protocole, par logiciel ou par câblage, c’est celle que je préfère, car plus rapide à mettre en œuvre:

  • Connecter TX et PGND
  • Veiller à ce que RX soit déconnecté
  • Alimenter en 0-5v via GND et VCC
  • La led passe en bleue, c’est OK, vous êtes en I²C. A noter que la manipulation est identique pour le re basculer en UART.

Pour information, La led du module est verte en UART et bleue en I²C.

La solution logiciel nécessite un montage sur le port série avec par exemple un Arduino et l’utilisation du code fourni par EZO.

L’isolateur galvanique ne nécessite pas d’intervention.

ESP Home

Rien de particulier, vous y retrouvez les déclarations standards ESPHome, la déclaration EZO ainsi que celle de l’afficheur. A noter la déclaration du bus I²C sur les GPIO spécifiques à l’esp32, celle de l’esp8266 sont différentes (GPIO5->scl, GPIO4->sda). L’option « scan: true » autorise l’ESP à scanner les esclaves i²C, pratique pour vérifier dans le log si l’ESP reconnait le module EZO et l’afficheur. L’adresse I²C de l’EZO et de l’afficheur sont différentes donc pas de souci de compatibilité.

Si besoin de précisions sur le flashage de l’ESP, se reporter à mon article « Home Assistant-ESP HOME ».

esphome:
  name: esp125_piscine
  platform: ESP32
  board: lolin_d32

wifi:
  ssid: "xxx"
  password: "xxxxxxxxxxx"

  # Enable fallback hotspot (captive portal) in case wifi connection fails
  ap:
    ssid: "Esp125 Piscine Fallback Hotspot"
    password: "xxxxxxxxxxx"
    
  manual_ip:
    static_ip: 192.168.0.xxx
    gateway: 192.168.0.1
    subnet: 255.255.255.0

captive_portal:

# Enable logging
logger:

# Enable Home Assistant API
api:

ota:

web_server:
  port: 80

# Configuration pour ESP32
i2c:
  sda: 21
  scl: 22
  scan: True
  id: bus_a
  

sensor:
# Mesure du pH
  - platform: ezo
    id: esp125_ph_ezo
    address: 99
    unit_of_measurement: "pH"
    update_interval: 10s

#  Pas indispensable
  - platform: uptime
    name: "ESP125 Uptime Sensor"
    id: esp125_uptime
    update_interval: 10s

  - platform: wifi_signal
    name: "ESP125 WiFi Signal Sensor"
    update_interval: 60s

# Gestion afficheur
display:
  - platform: lcd_pcf8574
    dimensions: 16x2
    address: 0x27
    lambda: |-
      it.printf(0,0,"Ph= %.2f",id(esp125_ph_ezo).state);
      
switch:    
  - platform: restart
    name: "ESP125_Restart"

Une fois l’ESP flashé, alimenté et connecte, vous retrouvez dans HA la mesure de ph et l’affichage en local.

Vous pouvez aussi vérifier son fonctionnement dans la page WEB de l’ESP.

Calibration du module EZO

La calibration est à faire au moins une fois dans l’année. J’utilise de temps en temps les bonnes veilles languettes de réactifs afin de vérifier si la mesure de pH est fiable.

Pour la calibration, nous devons arrêter l’ESP, récupérer le circuit imprimé des modules EZO ainsi que la sonde et raccorder provisoirement le CI sur un Arduino ou un autre ESP.

Préparer 3 solutions de pH étalon dans 250 ml d’eau distillée: (j’utilise des solutions étalon commandées en quantité chez aliexpress)

  • Midle: 6.86
  • Low: 4.00
  • High:9.18

Telecharger le programme arduino_UNO_pH_sample_code dans un arduino (ou un ESP en adaptant le code) https://www.whiteboxes.ch/shop/ezo-ph-circuit/

1-Basculer le module EZO en mode UART si pas déjà fait. la led s’affiche en vert. Voir ci dessus la manipulation à effectuer.

  1. Brancher le module ph EZO en mode UART
  2. Téléverser le programme dans l’arduino
  3. Lancer le monitoring de l’arduino à 9600 bauds
  4. Plonger la sonde dans la préparation « midle »
  5. Attendre la stabilisation environ 2 minutes
  6. Envoyer la commande via la fenêtre de monitoring: Cal,mid,6.86
  7. Le module répond OK
  8. Recommencer avec la préparation avec: Cal,low,4.00
  9. Puis avec la préparation: Cal,high,9.18

Le pHmetre est calibré. Dans leur doc, AtlasScientific utilise du 7.00, 4.00, 10.00, peu importe si les dissolutions utilisées sont calibrées.

Command syntax 
Issuing the cal,mid command after 
the 
EZO"•• pH circuit has been calibrated, will 
clear the other calibration points 
. Full 
calibration will have to be redone. 
Cal,mid,n 
Cal,low,n 
Cal,high,n 
Cal,clear 
Example 
single point calibration at midpoint 
two point calibration at Iowpoint 
three point calibration at highpoint 
delete calibration data 
device calibrated? 
Response 
*OK 
*OK 
*OK

Mise en oeuvre

Pour la mise en oeuvre, J’utilise une chambre de mesure qui permet de positionner deux sondes et deux injecteurs dans le circuit hydraulique, plus un débitmètre. Ne pas oublier les vannes de séparation avant et après ce qui évite d’avoir à vidanger pour intervenir sur les sondes. Dans mon cas j’ai positionner la sonde pt100 de mesure de température sur le deuxième emplacement. L’injecteur et en attente de la pompe de régulation de pH.

Conclusion

Pour quelques dizaines d’euro, un peu de bricolage, vous pouvez vous fabriquer un pH-mètre, de bonne qualité, évolutif et parfaitement intégré dans HA.