Afin de mesurer le niveau d’eau dans mon mégot d’eau, j’ai décidé d’essayer un module de mesure de distance à ultrasons étanche. Cela fonctionne de la même manière que les modules à ultrasons standard que j’ai utilisés dans mon précédent didacticiel de mesure de distance par ultrasons à l’aide de Python.
Le capteur à ultrasons étanche que j’ai commandé ressemble à ceci :

Cela consiste en :
- Transducteur étanche
- Câble
- Tableau de contrôle


La carte de contrôle possède les mêmes quatre connexions que les modules HR-SR04 :
Le module fournit des mesures dans une plage de 25 cm à 450 cm. Le transducteur lui-même ressemble à l’appareil que vous trouveriez dans un système de capteur de recul de voiture plutôt qu’à l’agencement à deux transducteurs du module classique HR-SR04.
Connexion au Pi
Le module peut être alimenté par les broches 5V et Ground du Pi. J’ai utilisé les broches 2 et 6 sur l’en-tête GPIO du Pi.
La broche d’entrée sur le module est appelée « déclencheur » car elle est utilisée pour déclencher l’envoi de l’impulsion ultrasonore. Cela fonctionne très bien avec un signal de 3,3 V du GPIO, j’ai donc connecté le déclencheur directement à la broche 16 (GPIO23).
La sortie du module est appelée « écho » et nécessite un peu plus de réflexion. La broche de sortie est basse (0V) jusqu’à ce que le module ait effectué sa mesure de distance. Il met ensuite cette broche au niveau haut (+5V) pendant le même temps qu’il a fallu à l’impulsion pour revenir. Notre script doit donc mesurer le temps pendant lequel cette broche reste haute. Le module utilise un niveau +5V pour un « high » mais c’est trop élevé pour les entrées sur le Pi qui n’aiment que 3,3V. Afin de garantir que le Pi ne soit touché qu’avec 3,3 V, nous pouvons utiliser un diviseur de tension de base. Celui-ci est formé de deux résistances.
Si R1 et R2 sont identiques, la tension est divisée en deux. Cela nous donnerait 2,5V. Si R2 est le double de la valeur de R1, nous obtenons 3,33 V, ce qui est bien. Donc, idéalement, vous voulez que R2 soit entre R1 et R1 x 2. Dans mon exemple de circuit, j’ai utilisé des résistances de 330 et 470 ohms. Une alternative serait d’utiliser les valeurs 1K et 1K5.
Voici un schéma de mon circuit final. J’ai choisi GPIO23 et GPIO24 mais vous pouvez utiliser l’une des 17 broches GPIO disponibles sur l’en-tête GPIO. N’oubliez pas de mettre à jour le script Python en conséquence.

Circuit de module à ultrasons
J’ai utilisé un petit morceau de maquette pour créer le diviseur de tension :

Le fil blanc est connecté à la broche Echo, le fil violet au GPIO24 et les fils bleu/noir à la masse. Ignorez les résistances bleues car elles ne sont pas utilisées dans ce cas.
Script Python
Pour tester mon module, j’ai utilisé le même script que j’ai utilisé dans mes précédents articles sur les capteurs à ultrasons. Bien que cette fois j’ai fait quelques améliorations.
Il existe deux exemples de scripts Python que vous pouvez télécharger et essayer.
ultrasonique_1.py
Un script pour faire une seule lecture et afficher le résultat en centimètres.
ultrasonique_2.py
Un script pour prendre des lectures en continu et afficher le résultat en centimètres.
Vous pouvez les télécharger directement sur votre Pi en utilisant :
wget https://bitbucket.org/MattHawkinsUK/rpispy-misc/raw/master/python/ultrasonic_1.py
et :
wget https://bitbucket.org/MattHawkinsUK/rpispy-misc/raw/master/python/ultrasonic_2.py
Une fois téléchargés, ils peuvent être exécutés en utilisant :
python ultrasonic_1.py
et :
python ultrasonic_2.py
Si vous l’avez installé, les scripts devraient également fonctionner sous Python 3 :
python3 ultrasonic_1.py
Vous pouvez utiliser toutes les broches GPIO de votre choix pour modifier votre script Python en conséquence.
Vitesse du son
Le calcul utilisé pour trouver la distance repose sur la vitesse du son. Cela varie en fonction de la température, j’ai donc mis à jour ces scripts pour calculer la valeur correcte à utiliser en fonction d’une température définie. Vous pouvez modifier cette valeur si nécessaire ou peut-être la mesurer dynamiquement à l’aide d’un capteur de température.
l’eau les mégots
J’aime les gros mégots d’eau et je ne sais pas mentir. Je suis en train de poser du béton pour former une base plus appropriée pour mes mégots d’eau, mais une fois qu’ils seront installés, je fixerai ce capteur dans le couvercle de l’un d’entre eux. J’écrirai un nouvel article détaillant cela, mais ce sera probablement un projet de printemps l’année prochaine.
Précision
Voici quelques points concernant la précision :
- Vous obtenez de meilleures lectures sur une surface plane et solide sans aucun autre objet à proximité. Le capteur envoie des impulsions qui forment un « cône » afin que tout ce qui gêne les résultats.
- La précision de la mesure de distance dépend du timing. Python sous Linux n’est pas idéal pour un timing précis, mais pour des problèmes généraux, cela fonctionnera correctement. Pour améliorer la précision, vous devriez commencer à utiliser C à la place.
- Lorsque les GPIO sont configurés, le module a besoin d’un certain temps avant d’être prêt à effectuer sa première lecture, j’ai donc ajouté un délai de 0,5 seconde au début du script.
Acheter ce capteur à ultrasons étanche
Voici un lien vers le Capteur de transducteur de mesure de distance de module à ultrasons étanche J’ai commandé sur eBay. Ces appareils sont disponibles auprès d’autres vendeurs et vous pouvez voir la sélection par recherche eBay pour « Capteur de module à ultrasons étanche ».
