Par Rémi Favreau — 8 septembre 2026
Le HC-SR04 fonctionne avec un Raspberry Pi, mais pas en reliant ses quatre broches au hasard. Le point critique est la sortie ECHO du capteur : la documentation gpiozero demande un pont diviseur entre cette sortie 5 V et l’entrée du Pi. Sans lui, le montage peut endommager le GPIO.
Voici un montage vérifiable, puis un test Python volontairement court. L’objectif n’est pas de construire tout de suite un robot autonome : on valide d’abord une mesure stable sur la table.
Réponse rapide
- alimente le HC-SR04 en 5 V ;
- relie
TRIGdirectement à un GPIO, ici GPIO 24 ; - relie
ECHOà GPIO 25 via un pont 330 Ω / 470 Ω ; - utilise la numérotation BCM dans gpiozero ;
- coupe l’alimentation avant de modifier le câblage.
La fiche technique distribuée par SparkFun annonce une plage de 2 à 400 cm. Prends cette plage comme une valeur nominale du module, pas comme une garantie : la même fiche demande une cible suffisamment grande, plane et lisse pour le test.
Matériel nécessaire
Il faut un Raspberry Pi avec ses broches GPIO accessibles, un HC-SR04, une breadboard, des fils Dupont, une résistance de 330 Ω et une résistance de 470 Ω. Un multimètre est utile pour contrôler le point milieu du pont diviseur avant de le connecter au GPIO.
Si tu utilises une variante HC-SR04P tolérante 3,3 V, vérifie précisément la référence imprimée sur le module. La documentation gpiozero distingue cette variante du HC-SR04 classique. Ne supprime pas le pont diviseur uniquement parce que les cartes se ressemblent.
Pourquoi ECHO ne va pas directement sur le Pi
Le module classique est alimenté en 5 V et son signal ECHO est lui aussi à 5 V. La documentation gpiozero avertit explicitement qu’un pont diviseur est nécessaire pour protéger le Raspberry Pi.
Le montage proposé place 330 Ω entre ECHO et le point milieu, puis 470 Ω entre ce point milieu et la masse. Le point milieu rejoint GPIO 25. La tension théorique vaut :
5 × 470 / (330 + 470) = 2,94 V
Cette valeur convient à une entrée logique 3,3 V. Elle n’alimente pas le capteur : elle abaisse seulement le signal de retour vers le Pi.
Câblage broche par broche
| Broche HC-SR04 | Connexion Raspberry Pi | Remarque |
|---|---|---|
VCC | pin physique 2, 5 V | alimentation du module |
GND | pin physique 6, GND | masse commune obligatoire |
TRIG | GPIO 24, pin physique 18 | sortie 3,3 V du Pi vers le capteur |
ECHO | GPIO 25, pin physique 22 | uniquement via le pont 330 Ω / 470 Ω |
Avant de démarrer le Pi, contrôle trois points : VCC n’est pas confondu avec ECHO, les deux masses sont communes, et GPIO 25 est bien relié au point milieu du pont plutôt qu’à ECHO directement.
gpiozero utilise par défaut la numérotation Broadcom (BCM) : 24 et 25 désignent GPIO24 et GPIO25, ici les broches physiques 18 et 22. Le guide gpiozero vs RPi.GPIO explique le choix de bibliothèque ; celui sur les protocoles GPIO, I2C, SPI et UART replace ces broches dans l’écosystème du Pi. Le guide des capteurs pour robot débutant aide ensuite à comparer les familles de capteurs.
Premier test avec gpiozero
Installe gpiozero si ton image Raspberry Pi OS ne l’inclut pas, puis crée distance.py :
from time import sleep
from gpiozero import DistanceSensor
sensor = DistanceSensor(echo=25, trigger=24, max_distance=2.0)
try:
while True:
distance_cm = sensor.distance * 100
print(f"Distance : {distance_cm:.1f} cm")
sleep(0.3)
except KeyboardInterrupt:
pass
finally:
sensor.close()
Lance le script avec un objet plat placé à environ 30 cm du capteur. Déplace-le lentement, puis compare l’affichage à une règle. max_distance=2.0 fixe ici la borne utilisée par la classe à deux mètres ; ce paramètre ne transforme pas le HC-SR04 en instrument de précision.
La fiche technique décrit le principe : une impulsion haute d’au moins 10 µs sur TRIG déclenche huit cycles ultrasonores à 40 kHz. La largeur du signal ECHO représente le temps aller-retour. gpiozero encapsule cette séquence et expose une distance normalisée.
Protocole de vérification avant de monter le robot
Commence avec cinq mesures successives à 20, 50 et 100 cm. Note les valeurs sans déplacer la cible, sans imposer d’avance une tolérance arbitraire. Si les valeurs sautent ou restent à zéro, reprends le contrôle du câblage, de l’alimentation et de la position de la cible.
Refais ensuite le test en modifiant un seul paramètre à la fois, par exemple l’orientation de la cible. Compare les résultats à la configuration plane et lisse demandée par la fiche technique, sans transformer une observation ponctuelle en règle générale.
Avec plusieurs capteurs, commence par les interroger l’un après l’autre. Ce protocole permet de vérifier si des résultats anormaux disparaissent quand les salves ne se chevauchent pas. La distance de détection retenue doit aussi laisser au robot le temps mécanique de s’arrêter ; elle se valide sur le châssis réel.
Si la distance reste à zéro ou saute
Aucune mesure : vérifie d’abord la masse commune, puis les numéros BCM 24 et 25. Contrôle aussi que TRIG et ECHO n’ont pas été inversés.
Valeur maximale permanente : la mesure atteint la borne fixée par max_distance. Rapproche une surface plane et rigide, face au capteur. Si la valeur quitte la borne, la cible dépassait la fenêtre configurée ; sinon, reprends les contrôles de câblage et d’alimentation sans attribuer d’emblée une cause unique.
Mesures instables : teste d’abord le capteur seul, puis répète exactement le même essai quand les moteurs tournent. Si les valeurs changent, l’alimentation et le routage des fils deviennent des hypothèses à contrôler, pas une cause déjà prouvée.
Avertissement DistanceSensorNoEcho / no echo received : gpiozero n’a détecté aucun écho. Vérifie ECHO, le pont diviseur, la masse, l’alimentation et place une cible plane dans la plage de mesure. sleep(0.3) ralentit seulement l’affichage : DistanceSensor effectue ses mesures dans un thread interne, avec sa propre cadence.
Quand préférer un autre capteur
Le HC-SR04 répond au montage documenté ici. Si ton cahier des charges impose une autre géométrie, une interface numérique ou un encombrement différent, compare les fiches techniques des familles optiques et ultrasonores avant de choisir. Vérifie surtout la tension logique, l’interface et la plage annoncée au lieu de déduire qu’un module est meilleur dans tous les cas.
Sources techniques
- Documentation gpiozero — DistanceSensor, consultée le 7 septembre 2026.
- Documentation gpiozero — numérotation des broches, consultée le 7 septembre 2026.
- Code source gpiozero : DistanceSensor, consulté le 7 septembre 2026.
- Fiche technique HC-SR04 distribuée par SparkFun, provenance Elecfreaks, consultée le 7 septembre 2026.