Résolu sur le forum : Borne Wallbox Pulsar Plus 7,4 kW sur abonnement 6 kVA : quel délestage avant accord copro (urgent)Ma panne diagnostiquée — réponse sous 48 h29 €

Arduino et capteur ultrason HC-SR04 : tutoriel distance

Arduinomis à jour le 3 mars 2026

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
C
us
cm

Remplissez la duree OU la distance. Si les deux sont remplis, la duree est prioritaire.

Conditions environnementales
Vitesse du son
m/s
Vitesse du son
cm/us
Resultats de mesure
Distance
cm
Distance
m
Duree pulseIn
us
Temps de vol aller simple
us
Zone de detection (cone 15 degres)
Rayon du cone
cm
Diametre de la zone
cm
Faisabilite de la mesure
Code Arduino adapte

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.

Conseil pratique : garde dès le début une vision système. Le HC-SR04 ne se limite pas au capteur lui‑même : alimentation, câblage, code, structure mécanique et environnement acoustique jouent tous sur la qualité de la mesure.

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 cher

Sur 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ètreValeur typique HC-SR04Impact sur le projet Arduino
Portée théorique2–400 cmNécessite une validation pratique dans ton environnement
Zone optimale10–250 cmPlage à privilégier pour une robotique stable
Résolution≈ 3 mmGranularité de la mesure, utile pour la détection fine
Angle du faisceau15° à 30°Influe sur la largeur de la zone scannée et les échos parasites
Fréquence ultrasonore40 kHzNe 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.

Box attention alimentation : même si la tension de 5 V semble proche des 3,3 V, un branchement direct de la broche Echo sur une entrée 3,3 V risque d’endommager le microcontrôleur. Un simple pont diviseur ou un convertisseur de niveau évite ce type de dommage définitif.

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.

Astuce câblage : garde les fils Trig et Echo aussi courts que possible et torsade-les ensemble si tu observes des mesures instables. Tu limites ainsi le couplage avec d’autres signaux et les perturbations électromagnétiques.

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.

Box lisibilité du code : en isolant le calcul de distance dans une fonction dédiée, tu simplifies la maintenance. Tu peux ensuite y intégrer une correction de température, un filtrage ou un changement de formule sans toucher au reste du programme.

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 à éviter

L’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.

Box erreur fréquente : lancer plusieurs mesures ultrason en parallèle sans synchronisation génère des résultats incohérents. Un simple séquencement dans la boucle Arduino résout la majorité des cas de crosstalk.

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

ModuleTechnologiePlage de mesure typiquePoint fortPoint de vigilance
HC-SR04Ultrason 40 kHz2–400 cm (optimum 10–250 cm)Coût réduit, large support ArduinoPas de compensation de température, jitter notable
US-100Ultrason + UARTProche du HC-SR04Compensation de température, meilleure stabilité à courte distancePrix supérieur
HY-SRF05Ultrason amélioréDistance mini plus courte, portée plus longueAmélioration directe du HC-SR04Budget légèrement plus élevé
JSN-SR04TUltrason étanche≈ 3 cm à plusieurs mètresCapteur étanche, usage extérieurCalibrage plus délicat, faisceau parfois plus large
TOF10120TOF laser (I2C / Serial)5–180 cmCapteur compact, distance précise sans dépendance à l’acoustiquePrix plus élevé qu’un HC-SR04, plage plus courte
TFMiniTOF (Lidar)Plusieurs mètresMesure stable, signaux propresCoû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.

Note méthode : garde toujours sous la main un carnet de tests ou un fichier de log pour noter la distance réelle et la valeur mesurée par l’Arduino. Tu obtiens rapidement une vision claire des écarts, des zones d’incertitude et des conditions qui perturbent le plus ton capteur.

Donnez votre avis

Soyez le 1er à noter cet article


Partagez cet article maintenant !


Ça ne règle pas votre cas ?

Décrivez la panne sur le forum, avec une photo si vous pouvez : les membres qui ont eu la même répondent, et le sujet reste pour les suivants.

Avatar photoAvatar photoAvatar photoAvatar photoAvatar photoRejoindre les 54 membres — gratuit, 44 pannes résolues

Dans le même tiroir

Scène réaliste d’un bureau d’électronique avec un Arduino et un capteur DHT22 connectés sur une table en bois, entourés d’outils et d’un ordinateur affichant des mesures.
Arduino

Arduino DHT22 code : exemple complet

Le capteur DHT22 transforme une simple carte Arduino en véritable poste de mesure température / humidité. Avec quelques lignes de…

Portrait de Inès DameronInès Dameron · 14 Fév 2026
Scène réaliste d'un bureau où une personne configure l'Arduino IDE sur un ordinateur portable avec une carte Arduino Uno connectée et des composants électroniques éparpillés.
Arduino

Arduino IDE : installation et configuration

Installer et configurer Arduino IDE conditionne la stabilité de vos projets, la fiabilité des téléversements et votre confort de développement…

Portrait de Inès DameronInès Dameron · 11 Fév 2026
La lettre du club

Une lettre par mois, accrochée au panneau

Les sujets du forum résolus dans le mois, un guide, un chiffre qu’on peut vérifier chez soi. Rien d’autre, jamais plus souvent — et on se désabonne d’un clic.

Ce qu’il y a dedans

Votre adresse

Une lettre par mois. Désabonnement en un clic.