Mesure d’un niveau d’eau avec un ESP32

Ce billet montre comment mesurer un niveau d’eau dans un seau, une cuve, … à l’aide d’un ESP32-WROOM et d’un capteur à ultra-sons. L’un des modèles de capteur le plus répandu est le HC-SR04. ATTENTION, ce composant fonctionne en 5 Volts et n’est donc pas compatible avec les broches de l’ESP32 qui ne supportent que du 3.3 Volts, aussi le choix s’est porté sur le module RCWL-1601 fonctionnant en 3.3 Volts. De plus le RCWL-1601 se programme exactement comme un HC-SR04

Dans cet article, les tests ont été réalisés à l’aide de l’assemblage suivant

Schéma

Pour les broches Echo et Trigger, n’importe quelle broche GPIO peut être utilisée:

Le composant RCWL-1601 a le même brochage que le HC-SR04

Le programme de tests a été écrit en micro-python utilisant le code proposé sur Github

Python

Ce programme envoie toutes les 5 secondes la distance mesurée en cm sur un serveur mqtt. Cette option permet d’utiliser facilement un programme sous Windows ou Linux effectuant des statistiques:

Python

Ce programme calcule des statistiques en captant 120 valeurs reçues depuis le serveur mqtt Ce programme a été exécuté avec le seau vide, puis avec un litre d’eau, deux litres,… jusqu’à dix litres. Les résultats obtenus sont (mesures en centimètres):

Nombre de litresDistance du capteur à la surface de l’eauMiniMaxiÉcart maxiÉcart moyen
023,7523,6824,250,580,03
121,6521,5621,720,080,02
218,4418,3819,380,940,03
315,8615,8215,930,070,02
414,3214,2114,380,110,03
510,6410,1511,120,870,31
68,397,568,450,570,04
74,854,814,910,060,03
82,782,732,850,070,03
92,192,152,250,060,03

Graphiquement, on voit que la courbe n’est pas tout à fait linéaire, cela est du principalement au fait que le seau n »a pas une forme cylindrique mais une forme de cône (le diamètre en bas est inférieur au diamètre en haut:

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *