L’association d’un Arduino et d’un capteur ultrason HC-SR04 ouvre un terrain de jeu très concret : mesurer des distances, éviter des obstacles, cartographier un environnement ou créer un radar interactif. Derrière ce petit module à moins de quelques euros se cachent pourtant des notions de temps de vol, de vitesse du son, de bruit électronique et de logique TTL qu’il vaut mieux maîtriser avant de brancher le capteur sur une maquette.
Ce guide déroule pas à pas le fonctionnement réel du HC-SR04, son câblage, la lecture fiable des données et les limites souvent passées sous silence. De l’astuce de temporisation au filtrage logiciel, tu vas comprendre comment tirer une mesure exploitable et comment choisir, le cas échéant, une alternative plus adaptée à ton projet.
| Élément clé | Description utile |
|---|---|
| Portée efficace | De 2 cm à environ 400 cm, idéale pour la détection d’obstacles et la mesure d’environnement. |
| Précision typique | Environ ±3 mm selon les conditions (bruit, orientation, surface de réflexion). |
| Signaux utilisés | Impulsion TRIG envoyée → impulsion ECHO reçue, calculée via le temps de vol du son. |
| Facteurs influençant la mesure | Température, obstacles absorbants, inclinaison de l’objet, interférences sonores. |
| Applications pratiques | Robots autonomes, systèmes anti-collision, jauges de distance, domotique. |
Calculateur de Projet Ultrason HC-SR04
Remplissez la duree OU la distance. Si les deux sont remplis, la duree est prioritaire.
Constante de division pour 20C : distance = duree / 58.2
Comprendre le capteur ultrason HC-SR04 et son principe de mesure
Le capteur ultrason HC-SR04 repose sur la mesure du temps de vol d’une onde sonore. Il émet un train d’ondes à environ 40 kHz, puis écoute l’écho renvoyé par l’obstacle. En mesurant le délai aller-retour, on déduit une distance grâce à la vitesse du son dans l’air.
Le module comporte deux transducteurs bien visibles : un pour l’émission (Trig) et un pour la réception (Echo). L’Arduino déclenche un signal de courte durée, le capteur émet l’ultrason, puis renvoie sur la broche Echo une impulsion dont la largeur correspond au temps de propagation. Le microcontrôleur se charge ensuite du calcul.
Sur le papier, ce fonctionnement paraît simple. En pratique, la géométrie de la scène, la température, l’humidité, la nature des surfaces et les réflexions parasites influencent fortement le résultat. Un projet fiable nécessite donc une approche méthodique, un peu de rigueur et quelques tests sur maquette.

Caractéristiques techniques du HC-SR04 utiles pour un projet Arduino
Avant de passer au montage, un point complet sur les spécifications oriente le dimensionnement du projet. Le HC-SR04 possède une plage de mesure annoncée de 2 à 400 cm. Dans la pratique, la zone réellement exploitable se situe souvent entre 10 cm et 2,5 m selon la surface et la position de l’obstacle.
La résolution théorique atteint environ 0,3 cm (3 mm). La distance se calcule à partir de la durée de l’impulsion reçue sur la broche Echo, avec la formule fréquemment utilisée :
distance (cm) = durée_impulsion (µs) / 58
Cette relation découle de la vitesse du son dans l’air autour de 340 m/s. Elle donne une valeur correcte tant que la température reste assez stable et que le trajet de l’onde reste simple.
Portée, angle de détection et géométrie du faisceau
Le HC-SR04 émet un faisceau ultrasonore dans un cône d’environ 15° à 30°. Plus la surface est bien perpendiculaire au capteur, plus l’écho renvoyé est franc. Dès que l’obstacle est incliné ou petit par rapport au diamètre du faisceau, la précision chute.
ArduinoArduino et domotique : automatiser sa maison pour pas cherSur de courtes distances (10–40 cm), la mesure reste généralement stable à condition d’éviter les obstacles latéraux. Au-delà de 2–3 m, l’atténuation du signal, les réflexions multiples et le bruit ambiant acoustique augmentent le « jitter » (variation d’une mesure à l’autre).
| Paramètre | Valeur typique HC-SR04 | Impact sur le projet Arduino |
|---|---|---|
| Portée théorique | 2–400 cm | Nécessite une validation pratique dans ton environnement |
| Zone optimale | 10–250 cm | Plage à privilégier pour une robotique stable |
| Résolution | ≈ 3 mm | Granularité de la mesure, utile pour la détection fine |
| Angle du faisceau | 15° à 30° | Influe sur la largeur de la zone scannée et les échos parasites |
| Fréquence ultrasonore | 40 kHz | Ne gêne pas l’oreille humaine mais reste sensible à l’environnement |
Consommation, tension et logique électrique
Le HC-SR04 fonctionne nativement en 5 V, avec une plage tolérée d’environ 4,5 à 5,5 V. Il consomme un courant de repos inférieur à 2 mA et entre 15 et 20 mA en fonctionnement, ce qui reste modéré pour un Arduino Uno alimenté par USB.
La sortie Echo renvoie des signaux en logique 5 V TTL. Sur un Arduino Uno ou Mega, la compatibilité est directe. Sur une carte 3,3 V (type Arduino Due, certains ESP32 ou cartes STM32), une adaptation de niveau s’impose pour protéger l’entrée du microcontrôleur.

Limites réelles et contraintes physiques du HC-SR04
Dans des fiches produits, le HC-SR04 apparaît souvent comme un « capteur de distance 4 m ». Dans un usage concret, plusieurs limites entrent en jeu :
- Surface plane et perpendiculaire nécessaire pour un écho propre.
- Précision dégradée dès que l’objet est décalé du centre du faisceau ou de petite taille.
- Absence de compensation de température, ce qui influe sur la vitesse du son.
- Sensibilité aux objets absorbants (mousses, textiles, matériaux poreux) qui absorbent l’onde au lieu de la renvoyer.
La vitesse du son varie avec la température et l’humidité. Une différence de 10 °C modifie suffisamment la mesure pour introduire une erreur significative sur plusieurs dizaines de centimètres. Pour de petits robots éducatifs, cette variation reste souvent acceptable, mais pour des mesures de niveau ou de positionnement, la compensation devient nécessaire.
Câblage du HC-SR04 avec Arduino : schéma et bonnes pratiques
Le branchement du HC-SR04 sur un Arduino reste direct, sans composant additionnel dans le cas d’une carte 5 V. Le module comporte quatre broches principales :
- VCC → +5 V de l’Arduino
- Trig → broche numérique de sortie (ex. D9)
- Echo → broche numérique d’entrée (ex. D10)
- GND → masse commune (GND)
Un schéma typique relie simplement VCC au 5 V de la carte, GND à la masse, puis les broches Trig et Echo à deux broches numériques configurées respectivement en sortie et en entrée.
Sur une carte 3,3 V, l’ajout d’un pont diviseur sur Echo s’impose. Deux résistances (par exemple 4,7 kΩ et 10 kΩ) permettent de ramener le niveau à une valeur sûre pour l’entrée du microcontrôleur tout en gardant un temps de montée correct.

Rappel sur la logique de déclenchement (TTL)
Le HC-SR04 attend une impulsion positive d’au moins 10 µs sur la broche Trig. Dès qu’il reçoit cette impulsion, il émet une salve ultrasonore, puis génère sur Echo un signal haut dont la durée correspond au temps aller‑retour.
En résumé :
- Trig passe à l’état HIGH pendant ≥ 10 µs.
- Le capteur envoie des ultrasons à 40 kHz.
- Echo passe à HIGH pendant la durée de vol du signal.
- L’Arduino mesure la durée à l’aide de
pulseIn()ou d’un timer.
Cette séquence impose un rythme de déclenchement. Un enchaînement trop rapide des mesures ne laisse pas au capteur le temps de traiter l’écho précédent et crée des lectures erratiques.
Code Arduino pas à pas : mesurer une distance avec le HC-SR04
Une fois le câblage en place, le cœur du tutoriel repose sur le code. L’objectif est de produire une fonction claire qui gère l’impulsion de déclenchement, la lecture du temps d’écho, puis la conversion en distance.
Exemple de code minimal commenté
Voici un schéma de code simple, adapté à un Arduino Uno, avec Trig sur D9 et Echo sur D10 :
const int trigPin = 9; // Broche Trig du HC-SR04
const int echoPin = 10; // Broche Echo du HC-SR04
void setup() {
Serial.begin(9600);
pinMode(trigPin, OUTPUT);
pinMode(echoPin, INPUT);
}
long mesureDureeEcho() {
// S'assurer que Trig est bas
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
// Impulsion de déclenchement de 10 µs
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
// Mesure de la durée du niveau haut sur Echo (en microsecondes)
long duree = pulseIn(echoPin, HIGH, 30000); // timeout 30 ms (~5 m)
return duree;
}
float calculDistanceCm(long duree) {
// Formule standard pour HC-SR04
// distance (cm) = durée (µs) / 58
if (duree == 0) {
return -1; // erreur ou hors plage
}
return duree / 58.0;
}
void loop() {
long duree = mesureDureeEcho();
float distance = calculDistanceCm(duree);
Serial.print("Distance: ");
Serial.print(distance);
Serial.println(" cm");
delay(100); // petite pause entre deux mesures
}Cette structure sépare clairement la mesure de la durée et le calcul de la distance. En cas de retour nul ou de dépassement de délai, la fonction renvoie une distance négative, ce qui facilite la gestion des erreurs dans la boucle principale.
Stabiliser la mesure : moyennes et filtrage logiciel
Le HC-SR04 génère souvent un jitter de 2 à 4 cm sur certaines configurations, surtout au‑delà de 2 m ou à proximité d’angles de murs. Un simple filtrage logiciel améliore notablement la lisibilité des données.
Quelques approches efficaces :
- Moyenne glissante sur N mesures (par exemple 5 à 10 lectures).
- Filtre médian pour éliminer un pic isolé.
- Rejet des valeurs hors plage (trop grandes ou trop petites) avant calcul.
En combinant un filtre médian puis une moyenne, tu obtiens un signal lissé sans retarder exagérément la réaction du système, idéal pour un projet de radar Arduino ou un robot autonome.
Gérer la vitesse du son : correction de température et environnement
La formule distance = impulsion/58 repose sur une approximation de la vitesse du son à 20 °C. En réalité, cette vitesse varie avec la température, l’humidité et la pression atmosphérique. Pour une mesure avancée, surtout en extérieur, intégrer une correction de température améliore la cohérence des résultats.
Influence de la température sur la distance mesurée
La vitesse du son dans l’air sec se rapproche d’une relation du type :
v (m/s) ≈ 331 + 0,6 × T(°C)
Sur une variation de 0 à 30 °C, la vitesse passe de l’ordre de 331 m/s à plus de 349 m/s. Une mesure basée sur une valeur fixe introduit donc un biais progressif avec la température ambiante.
Pour une application d’indication de proximité, cette dérive reste souvent tolérable. Pour un contrôle de niveau de cuve, un contrôle de position ou un suivi de déplacement précis, la correction de température devient beaucoup plus utile.
Approche avec un capteur de température externe
Une solution consiste à ajouter un capteur numérique type DS18B20, DHT22 ou un BME280. L’Arduino lit la température, calcule une valeur de vitesse du son actualisée, puis adapte la conversion temps → distance.
Schéma d’algorithme :
- Mesurer la température T.
- Calculer la vitesse du son v = 331 + 0,6 × T.
- Convertir la durée d’écho en distance avec v/2 (aller‑retour).
Ce type d’approche rapproche le comportement du HC-SR04 de modules plus avancés comme l’US‑100, qui intègre une compensation de température et communique en UART. Pour des projets structurés ou répétables, ce degré de précision facilite les réglages.
Limites du HC-SR04 et erreurs fréquentes à éviter
Le HC-SR04 reste attractif par son faible coût et l’abondance de bibliothèques Arduino. Il présente cependant plusieurs limites qui surprennent souvent lors des premiers essais.
Obstacles absorbants, petits objets et angles difficiles
Le capteur réagit très bien sur une surface plane, dure et perpendiculaire, par exemple une planche de bois ou un mur lisse. Dès que la surface devient souple, absorbante ou irrégulière (tissu, mousse, végétation), une part importante de l’onde ne revient plus vers le transducteur.
Les petits objets (tiges, bords fins, câbles) renvoient un écho trop faible ou dans une autre direction, ce qui crée des lectures instables. Dans un robot d’évitement d’obstacles, plusieurs capteurs orientés différemment ou une combinaison avec un infrarouge, par exemple un capteur décrit dans un guide sur les capteurs IR Arduino, renforcent alors la détection.
Échos multiples, crosstalk et interférences
En environnement confiné ou encombré (couloirs, pièces étroites, mobilier), les ultrasons rebondissent sur plusieurs surfaces avant de revenir. Le capteur capte alors un écho secondaire plus tardif que le premier, ce qui donne une distance supérieure à la réalité.
ArduinoPiloter un relais 230 V avec Arduino en sécurité : 5 erreurs à éviterL’utilisation de plusieurs modules HC-SR04 côte à côte introduit une autre source de problème : le crosstalk. Les salves d’ultrasons se superposent et un capteur reçoit l’écho d’un autre. Une gestion rigoureuse du déclenchement (tirer les capteurs les uns après les autres avec un délai suffisant) limite ce phénomène.
Logique 3,3 V et incompatibilité directe
Le HC-SR04 renvoie un signal 5 V sur Echo. En environnement 3,3 V, brancher directement cette sortie sur l’entrée d’un microcontrôleur dépasse les spécifications de la plupart des puces. Certains montages semblent fonctionner au début, puis tombent en panne de manière irrégulière.
Un adaptateur de niveau à transistors ou un pont diviseur à résistances règle ce point en quelques minutes de montage. Sur un Arduino 5 V classique, cet aspect ne pose pas de souci.
Comparatif : HC-SR04 et alternatives ultrason ou TOF
Lorsque l’usage se limite à un projet éducatif ou à un robot simple, le HC-SR04 répond souvent au besoin. Dès que l’application exige une plus grande stabilité, une meilleure portée ou une protection mécanique, d’autres références gagnent en pertinence.
Comparaison synthétique avec quelques modules courants
| Module | Technologie | Plage de mesure typique | Point fort | Point de vigilance |
|---|---|---|---|---|
| HC-SR04 | Ultrason 40 kHz | 2–400 cm (optimum 10–250 cm) | Coût réduit, large support Arduino | Pas de compensation de température, jitter notable |
| US-100 | Ultrason + UART | Proche du HC-SR04 | Compensation de température, meilleure stabilité à courte distance | Prix supérieur |
| HY-SRF05 | Ultrason amélioré | Distance mini plus courte, portée plus longue | Amélioration directe du HC-SR04 | Budget légèrement plus élevé |
| JSN-SR04T | Ultrason étanche | ≈ 3 cm à plusieurs mètres | Capteur étanche, usage extérieur | Calibrage plus délicat, faisceau parfois plus large |
| TOF10120 | TOF laser (I2C / Serial) | 5–180 cm | Capteur compact, distance précise sans dépendance à l’acoustique | Prix plus élevé qu’un HC-SR04, plage plus courte |
| TFMini | TOF (Lidar) | Plusieurs mètres | Mesure stable, signaux propres | Coût nettement supérieur |
Les modules Maxbotix, Devantech, LV‑MaxSonar et URM09 visent aussi des usages plus exigeants en robotique ou en instrumentation. Ils proposent en général une meilleure stabilité, une cohérence plus constante et parfois des formats compacts adaptés aux contraintes mécaniques fortes.
Choisir le bon capteur selon le projet
En fonction de l’usage, le choix s’oriente assez naturellement :
- Budget minimal, projet pédagogique, robot simple → HC-SR04.
- Code propre avec température intégrée → US-100 grâce à son interface UART.
- Mise à niveau d’un HC-SR04 existant → HY‑SRF05 pour une meilleure distance minimale et une portée étendue.
- Environnement humide ou extérieur → JSN‑SR04T, module étanche.
- Projet compact ou usage professionnel → capteurs Devantech, Maxbotix ou URM09.
- Longues distances (>50 m) → capteur dédié haute puissance, souvent type Lidar ou sonar spécialisé.
Pour un Arduino de débutant, des ressources comme la page idées de projets Arduino pour débutants restent très utiles pour associer le bon capteur à la bonne application dès le démarrage.
Exemples d’applications Arduino avec HC-SR04
Associer un HC-SR04 à un Arduino ouvre la voie à de nombreux montages. En combinant la mesure de distance à des sorties LED, des buzzers, des servomoteurs ou même des écrans LCD, tu crées des démonstrateurs très parlants.
Radar ultrason Arduino avec balayage servo
Un projet populaire consiste à monter le capteur sur un servomoteur. Le servo balaie l’espace devant le robot, tandis que l’Arduino mesure la distance pour chaque angle, puis envoie les données vers le port série ou un affichage graphique.
La séquence typique :
- Faire tourner le servo de 0° à 180° par pas réguliers.
- À chaque position, déclencher une mesure HC-SR04.
- Stocker la distance associée à l’angle.
- Tracer en temps réel un pseudo‑radar sur le moniteur série ou un écran.
Ce type de montage illustre très bien le concept de cartographie simple et sensibilise aux questions de temps de réponse, de filtrage et de traitement de données.
Système d’aide au stationnement et mesure de niveau
Pour un prototype d’aide au stationnement, le HC-SR04 se fixe à l’arrière d’un châssis ou d’un modèle réduit. En fonction de la distance mesurée, l’Arduino fait varier le clignotement d’une LED ou la fréquence d’un buzzer. La logique reste simple mais met en jeu la notion de seuils de distance.
En mesure de niveau (cuve d’eau, bac, silo), le capteur s’installe au-dessus du volume à surveiller. L’Arduino convertit ensuite une distance d’air en hauteur de liquide ou de matière. Ce type de montage exploite bien la plage 10–250 cm, avec un faible courant de fonctionnement.
« Le HC-SR04 m’a permis de mettre au point un système de détection d’obstacles pour un petit robot autonome Arduino. En filtrant légèrement les mesures et en évitant les surfaces molles, j’obtiens une navigation satisfaisante pour un budget réduit. »
Cette classe de projets montre comment une bonne compréhension des limites du HC‑SR04 apporte un résultat stable sans recourir d’emblée à des capteurs plus coûteux.
Structurer un tutoriel distance complet autour du HC-SR04
Pour bâtir un tutoriel solide sur la mesure de distance avec Arduino et HC-SR04, une progression logique clarifie la démarche pour le lecteur et pour ton propre développement.
Étapes clés d’un projet structuré
- Analyse du besoin : plage de distance utile, précision attendue, environnement (intérieur, extérieur, humidité, bruit).
- Choix du capteur : HC‑SR04 ou alternative (US‑100, HY‑SRF05, JSN‑SR04T, TOF laser).
- Schéma de câblage : gestion de la logique 5 V/3,3 V, longueur des câbles, alimentation.
- Écriture d’un code clair : séparation trig/echo, conversion distance, gestion d’erreur.
- Filtrage et validation : tests en conditions réelles, mesures à plusieurs distances fixes.
- Intégration mécanique : orientation du capteur, vibration, protection contre les chocs ou l’humidité.
En suivant cette trame, l’utilisation du HC‑SR04 ne se limite plus à un simple exemple de base. Elle sert de support à l’apprentissage de la mesure physique, de l’électronique numérique et de la programmation embarquée sur Arduino.





