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
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:
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 litres | Distance du capteur à la surface de l’eau | Mini | Maxi | Écart maxi | Écart moyen |
0 | 23,75 | 23,68 | 24,25 | 0,58 | 0,03 |
1 | 21,65 | 21,56 | 21,72 | 0,08 | 0,02 |
2 | 18,44 | 18,38 | 19,38 | 0,94 | 0,03 |
3 | 15,86 | 15,82 | 15,93 | 0,07 | 0,02 |
4 | 14,32 | 14,21 | 14,38 | 0,11 | 0,03 |
5 | 10,64 | 10,15 | 11,12 | 0,87 | 0,31 |
6 | 8,39 | 7,56 | 8,45 | 0,57 | 0,04 |
7 | 4,85 | 4,81 | 4,91 | 0,06 | 0,03 |
8 | 2,78 | 2,73 | 2,85 | 0,07 | 0,03 |
9 | 2,19 | 2,15 | 2,25 | 0,06 | 0,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: