Guides

HC-SR04 sur Raspberry Pi : câblage et code Python pas à pas

Branche un HC-SR04 au Raspberry Pi sans exposer un GPIO aux 5 V : câblage du pont diviseur, script gpiozero, tests pratiques et pannes courantes.

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 TRIG directement à 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-SR04Connexion Raspberry PiRemarque
VCCpin physique 2, 5 Valimentation du module
GNDpin physique 6, GNDmasse commune obligatoire
TRIGGPIO 24, pin physique 18sortie 3,3 V du Pi vers le capteur
ECHOGPIO 25, pin physique 22uniquement 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

Ne manquez rien

Recevez nos meilleurs articles directement dans votre boite mail.

S'abonner

Articles connexes