Composants · 3 min de lecture

Capteur de distance HC-SR04 : mesurer une distance par ultrasons avec Arduino

Comment fonctionne le capteur ultrasonique HC-SR04 et comment le brancher sur Arduino ? Broches TRIG et ECHO, formule de distance, branchement sur ESP32 et Pico, et conseils pour plus de précision.

Le HC-SR04 est un capteur bon marché et très répandu qui mesure la distance jusqu'à un objet grâce au son. Il fonctionne comme l'écholocation des chauves-souris : il émet un son à haute fréquence inaudible et mesure le temps que met l'écho à revenir. C'est la base des radars de recul, des robots qui évitent les obstacles, des jauges de niveau de réservoir et des toises électroniques.

HC-SR04
HC-SR04 : deux capsules ultrasoniques, un émetteur et un récepteur, et 4 broches (VCC, TRIG, ECHO, GND).

Comment fonctionne le HC-SR04 ?

  1. L'Arduino envoie une impulsion de 10 microsecondes sur la broche TRIG.
  2. Le capteur émet 8 impulsions sonores à 40 kHz.
  3. Le son rebondit sur l'objet et revient ; pendant ce temps, la broche ECHO reste à HIGH.
  4. L'Arduino mesure la durée pendant laquelle ECHO reste à HIGH et calcule la distance.

Le son se déplace dans l'air à environ 343 m/s : il parcourt un centimètre en 29 microsecondes environ. La durée mesurée couvre l'aller et le retour, on la divise donc par deux : distance (cm) = durée (µs) × 0,0343 / 2, soit en gros durée / 58.

Caractéristiques techniques

CaractéristiqueValeur
Alimentation5 V, environ 15 mA
Plage de mesure2–400 cm
RésolutionEnviron 3 mm
Angle de mesureEnviron 15°
BrochesVCC, TRIG, ECHO, GND

Mesurer une distance avec Arduino

Relie VCC au 5V, GND au GND, TRIG à la broche 9 et ECHO à la broche 10. Le code ci-dessous affiche la distance dans le moniteur série et signale à part l'absence d'objet ou un objet trop lointain.

const int TRIG_PIN = 9;    // tetik / trigger
const int ECHO_PIN = 10;   // yankı / echo

void setup() {
  pinMode(TRIG_PIN, OUTPUT);
  pinMode(ECHO_PIN, INPUT);
  Serial.begin(9600);
}

void loop() {
  digitalWrite(TRIG_PIN, LOW);
  delayMicroseconds(2);
  digitalWrite(TRIG_PIN, HIGH);      // 10 µs darbe / 10 µs pulse
  delayMicroseconds(10);
  digitalWrite(TRIG_PIN, LOW);

  long duration = pulseIn(ECHO_PIN, HIGH, 30000); // en fazla 30 ms bekle / wait max 30 ms
  if (duration == 0) {
    Serial.println("Menzil dışı / out of range");
  } else {
    float cm = duration * 0.0343 / 2;   // gidiş-dönüş / round trip
    Serial.print(cm);
    Serial.println(" cm");
  }
  delay(100);                          // ölçümler arası / between readings
}
Le délai de 30 000 µs passé à pulseIn correspond à environ 5 mètres. Sans délai, le code peut attendre jusqu'à 1 seconde quand il n'y a pas d'objet.

Utilisation avec l'ESP32 et la Raspberry Pi Pico

La broche ECHO du HC-SR04 sort du 5 V, alors que les broches de l'ESP32 et de la Pico sont en 3,3 V. Ne branche pas ECHO directement : réalise un pont diviseur avec des résistances de 1 kΩ et 2 kΩ, ou utilise la version HC-SR04P qui fonctionne en 3,3 V.

Conseils pour des mesures précises

  • Surfaces molles ou inclinées : le tissu, la mousse et les surfaces en biais réfléchissent mal le son ; des mesures peuvent manquer.
  • Fais une moyenne : prendre la médiane de 3 à 5 mesures supprime les sauts brusques.
  • Effet de la température : la vitesse du son varie d'environ 0,6 m/s par degré ; pour un travail précis, corrige-la avec un capteur de température.
  • Plusieurs capteurs : des capteurs déclenchés en même temps entendent les échos des autres ; déclenche-les l'un après l'autre.
  • Intervalle de mesure : laisse au moins 60 ms entre deux mesures pour que l'écho précédent s'éteigne.

Pour associer le capteur à un buzzer et faire un radar de recul, lis Qu'est-ce qu'un buzzer ? ; pour découvrir d'autres capteurs, le Guide des capteurs Arduino.

Questions fréquentes

Jusqu'à quelle distance mesure le HC-SR04 ?

En théorie jusqu'à 4 mètres. En pratique, on obtient des résultats fiables jusqu'à 2 à 3 mètres sur une surface plane et dure.

Pourquoi mon HC-SR04 affiche-t-il toujours 0 ou une valeur énorme ?

TRIG et ECHO sont peut-être inversés, l'objet hors de portée, ou le capteur dirigé vers une surface qui ne réfléchit pas le son. Vérifie le câblage et utilise un délai avec pulseIn.

Le HC-SR04 peut-il mesurer un niveau d'eau ?

Oui, fixé sur le couvercle du réservoir et orienté vers le bas, il mesure la distance jusqu'à la surface de l'eau. En milieu humide il doit être protégé ; le JSN-SR04T étanche est plus adapté.

Quels autres capteurs de distance existent pour Arduino ?

Pour les courtes distances et la détection de ligne, on utilise l'infrarouge TCRT5000, et pour une précision millimétrique le capteur laser VL53L0X. Le HC-SR04 reste le plus courant grâce à son bon rapport prix/portée.

Voir tous les projets
HC-SR04 Mesure de la distance (affichage en série)
#27Débutant

HC-SR04 Mesure de la distance (affichage en série)

Le capteur ultrasonique HC-SR04 permet de mesurer la distance et d'afficher le résultat en cm sur le moniteur série. Il enseigne le principe du calcul de la distance à l'aide d'une onde sonore.

4.6(44)
64
Capteur de stationnement avec HC-SR04
#28Intermédiaire
Premium

Capteur de stationnement avec HC-SR04

Projet de capteur de stationnement avec un capteur HC-SR04 qui augmente la fréquence du buzzer à l'approche de l'objet et l'avertit par une LED. Enseigne la logique de retour d'information proportionn

4.8(64)
83
Mesure de la distance à l'aide d'un écran LCD
#31Avancé
Premium

Mesure de la distance à l'aide d'un écran LCD

Le projet qui affiche la valeur lue par le capteur de distance HC-SR04 en cm en temps réel sur l'écran LCD 2x16. Il combine les données du capteur et l'affichage LCD.

4.5(44)
57
Projet de mesure de la hauteur
#33Intermédiaire
Premium

Projet de mesure de la hauteur

Le projet permet de mesurer la hauteur en calibrant le capteur HC-SR04 et l'écran LCD I2C. Il offre une application pratique en gérant les étapes d'étalonnage et de mesure à l'aide de deux boutons.

4.5(25)
33
Robot évitant les obstacles
#81Avancé
Premium

Robot évitant les obstacles

Que diriez-vous de construire un véhicule intelligent qui trouve son propre chemin ? Le Robot Évitant les Obstacles scrute en permanence son environnement grâce au capteur ultrasonique situé devant lu

5.0(38)
49
ESP32 HC-SR04 Télémètre à ultrasons
#116Intermédiaire
Premium

ESP32 HC-SR04 Télémètre à ultrasons

Le capteur à ultrasons HC-SR04 calcule la distance en mesurant le temps de vol (Time of Flight) de l'onde sonore qu'il émet lorsqu'elle rebondit sur un objet. Dans ce projet, nous enverrons une impulsion de 10 microsecondes sur la broche TRIG de l'ESP32 et nous lirons le temps de réverbération provenant de la broche ECHO à l'aide de la fonction `pulseIn()`. Nous afficherons la distance calculée en cm sur le moniteur série. Le capteur HC-SR04 fonctionnant en 5 V, un **diviseur de tension** est in

4.9(27)
43
Compteur de rak'ahs pour la prière avec ESP32 (HC-SR04 + écran OLED SSD1306 + 2 boutons)
#136Avancé
Premium

Compteur de rak'ahs pour la prière avec ESP32 (HC-SR04 + écran OLED SSD1306 + 2 boutons)

Vous arrive-t-il parfois d'oublier à quelle rak'ah vous en êtes lorsque vous priez ? Ce projet consiste à fabriquer un compteur de rak'ahs que l'on place à côté du tapis de prière et qui compte les prosternations lorsque vous approchez votre main. Le capteur de distance à ultrasons HC-SR04 détecte l'approche de la main, l'écran OLED SSD1306 affiche le nombre de rak'ahs, et deux boutons permettent de sélectionner 2, 3 ou 4 rak'ahs et de remettre le compteur à zéro. Grâce à une machine à états int

4.8(11)
14
Capteur de stationnement ESP32 (HC-SR04 + barre à 5 LED + buzzer + écran OLED)
#142Avancé
Premium

Capteur de stationnement ESP32 (HC-SR04 + barre à 5 LED + buzzer + écran OLED)

La version ESP32 du capteur de stationnement pour voiture ! Grâce au capteur à ultrasons HC-SR04, nous mesurons la distance par rapport à l'objet situé devant. À mesure que la distance diminue, la barre composée de 5 LED se remplit (vert → jaune → rouge) et l'intervalle entre les bips du buzzer se raccourcit. Lorsque l'objet est très proche (moins de 10 cm), l'alarme retentit en continu et toutes les LED s'allument. L'écran OLED SSD1306 affiche en gros caractères la valeur instantanée en cm, un

0.0(0)

Découvre comment le HC-SR04 mesure une distance grâce au son, comment le brancher sur Arduino, la formule de distance et comment stabiliser les mesures.