Modules capteurs à ultrasons HC-SR04

Ce guide complet est votre ressource unique pour explorer tout ce qu'il y a à savoir sur le HC-SR04. Nous commencerons par les bases, en comprenant son principe de fonctionnement fondamental, qui est la clé pour libérer son potentiel. Ensuite, nous aborderons des aspects importants tels que ses principales spécifications, comment l'interfacer avec des microcontrôleurs populaires, et nous nous plongerons même dans des scénarios d'utilisation avancés. À la fin de ce guide, vous serez parfaitement équipé pour exploiter tout le potentiel du HC-SR04 dans vos propres projets.

Qu'est-ce que le module capteur à ultrasons HC-SR04 ?

Le module capteur à ultrasons HC-SR04 est un dispositif remarquable et très polyvalent qui s'est taillé une place de choix dans le vaste paysage des projets électroniques. Ce qui le distingue vraiment, c'est son rapport qualité-prix, une caractéristique qui le rend accessible à un large éventail d'utilisateurs, des amateurs soucieux de leur budget aux professionnels à la recherche d'une solution abordable pour leurs projets.

Front and back view of HC SR04 Ultrasonic Sensor Module
Front and back view of HC - SR04 Ultrasonic Sensor Module

Spécifications techniques

Il est essentiel de bien comprendre les spécifications techniques du module capteur à ultrasons HC-SR04 pour toute mise en œuvre de projet. Voici le tableau des spécifications techniques :

Operating Voltage
+5V DC (4.5V to 5.5V)
Operating Current
~15mA (Standby: ~2mA)
Range
2cm to 400cm (0.8" to 13ft)
Accuracy
±3mm (Best case, varies with environment)
Resolution
0.3cm (1mm theoretically possible with calibration)
Angle of Detection
~15° cone angle
Trigger Input Signal
10μs HIGH pulse to initiate ranging
Echo Output Signal
Pulse width proportional to distance: 1μs = 0.017cm (based on sound speed 340m/s)
Maximum Frequency
40kHz ultrasonic frequency
Measurement Cycle
≥60ms (to avoid interference between measurements)
Operating Temperature
-15°C to +60°C (5°F to 140°F)
Dimensions
45mm × 20mm × 15mm (sensor module)
Weight
~5g (module only)

Explication :

  1. Portée : Le HC – SR04 a une portée opérationnelle allant de 2 cm à 400 cm (0,8 pouce à 157 pouces). Cette portée relativement large le rend adapté à une grande variété d'applications. Par exemple, dans un projet de robotique à petite échelle où le robot doit se déplacer dans une pièce, la portée de 2 à 400 cm permet de détecter efficacement les meubles ou les murs à proximité. Dans une application industrielle à plus grande échelle, il peut être utilisé pour mesurer la distance entre les composants d'une machine dans cette plage. Cependant, il est important de noter que la précision peut varier légèrement aux extrémités de cette plage.
  1. Résolution : avec une résolution de 0,3 cm, le HC-SR04 peut fournir des mesures de distance assez précises. Ce niveau de précision est suffisant pour la plupart des amateurs et de nombreuses applications industrielles. Dans un projet lié à l'impression 3D où le capteur est utilisé pour détecter la distance par rapport au plateau d'impression afin de permettre un nivellement automatique, la résolution de 0,3 cm permet de s'assurer que la tête d'impression se trouve à la bonne hauteur au-dessus du plateau, ce qui garantit des impressions de haute qualité.
  1. Alimentation électrique : il fonctionne avec une alimentation électrique de 5 V CC. Pendant son fonctionnement, il consomme un courant de 15 mA, ce qui représente une consommation d'énergie relativement faible. En mode veille, la consommation de courant est encore plus faible, inférieure à 2 mA. Cela en fait un choix économe en énergie pour les projets alimentés par batterie. Par exemple, dans un nœud de capteur IoT alimenté par batterie qui utilise le HC-SR04 pour la détection de distance, la faible consommation d'énergie garantit que la batterie peut durer plus longtemps.
  1. Angle de fonctionnement : l'angle de fonctionnement du HC-SR04 est inférieur à 15°. Cela signifie que le capteur a un champ de vision relativement étroit. Il est plus efficace pour détecter les obstacles qui se trouvent directement devant lui. Dans un système de sécurité domestique intelligent où le capteur est utilisé pour détecter les intrus qui s'approchent d'une porte, l'angle de fonctionnement étroit permet une détection ciblée des objets qui se dirigent directement vers le capteur, réduisant ainsi les fausses alarmes provenant d'objets situés dans la zone périphérique.
  1. Interface : le module dispose d'une interface à 4 broches, qui comprend les broches VCC, GND, Trig et Echo. La conception simple de cette interface facilite la connexion à divers microcontrôleurs et autres composants électroniques.

Explication du brochage

Pin 1
Label
VCC
Function
Power Supply (Positive)
Voltage
5V DC
Connection
Arduino: 5V
Raspberry Pi: 5V (Common ground with module)
Pin 2
Label
Trig (Trigger)
Function
Trigger Input
▶ 10μs High Pulse to Start Measurement
▶ Low Level to Reset
Connection
Arduino: Any Digital Pin (e.g., D2)
Raspberry Pi: Any GPIO (e.g., GPIO17)
Pin 3
Label
Echo
Function
Echo Output
▶ High Duration = Round-Trip Time of Ultrasonic Waves
▶ Max High Time: 38ms (Timeout for No Obstacle)
Connection
Arduino: Any Digital Pin (e.g., D3)
Raspberry Pi: GPIO with **Voltage Divider** (5V→3.3V)
⚠️ Direct 5V Echo to Raspberry Pi may damage GPIO! Use 1kΩ + 2kΩ voltage divider.
Pin 4
Label
GND
Function
Power Ground (Common Ground)
Connection
Arduino/GND
Raspberry Pi/GND

Explication :

La broche VCC est chargée d'alimenter le module. Le connecter à une source d'alimentation stable de 5 V, de préférence à partir de la sortie 5 V du microcontrôleur, garantit le bon fonctionnement du module. Une alimentation électrique stable est essentielle pour obtenir des mesures précises. Si l'alimentation électrique est instable, cela peut entraîner des mesures de distance incohérentes. Par exemple, en cas de pics ou de chutes de tension dans l'alimentation électrique du HC-SR04, le capteur peut émettre des impulsions ultrasoniques incorrectes ou mal interpréter les échos reçus, ce qui entraîne des calculs de distance inexacts.
La broche GND fournit la connexion à la terre nécessaire. Elle complète le circuit électrique et aide à maintenir une tension de référence stable pour le module. Sans une connexion à la terre appropriée, le module peut ne pas fonctionner du tout ou produire des résultats erratiques. Dans un projet basé sur Arduino, la broche GND du HC-SR04 est généralement connectée à la broche GND de la carte Arduino afin de garantir une référence de terre commune.
La broche Trig est le point de départ de la magie. Lorsqu'une impulsion de niveau haut de 10 μs est envoyée à cette broche, elle déclenche l'émetteur ultrasonique qui envoie une rafale de 8 impulsions d'ondes ultrasoniques de 40 kHz. Dans un projet Raspberry Pi basé sur Python, vous pouvez utiliser la bibliothèque GPIO (General Purpose Input/Output) pour générer cette impulsion de 10 μs à niveau haut. Ce mécanisme d'entrée numérique simple permet de contrôler facilement le processus de mesure de distance.

The Echo pin is the key to obtaining the distance information. Once the ultrasonic waves are sent out, the Echo pin goes high. It remains high until the reflected waves are received by the ultrasonic receiver. The duration for which the Echo pin is high is directly proportional to the time it takes for the ultrasonic waves to travel to the obstacle and back. By measuring this time duration, we can calculate the distance to the obstacle using the formula Distance ( cm ) = Time ( μs ) × 0.0343 2 . In a C++-based Arduino project, you can use the pulseIn() function to measure the duration of the high-level pulse on the Echo pin.

Composants principaux et principe de fonctionnement

Composants clés

Pour bien comprendre le fonctionnement du module capteur à ultrasons HC-SR04, il est essentiel de se familiariser au préalable avec ses composants principaux. Chaque pièce joue un rôle distinct et crucial dans le fonctionnement global du module.

  1. Émetteur à ultrasons : il s'agit du composant responsable de la première étape du processus de mesure de la distance. Il émet des ondes ultrasonores à une fréquence de 40 kHz. Ces ondes à haute fréquence sont inaudibles pour l'oreille humaine, mais elles sont essentielles au fonctionnement du capteur. Lorsqu'il est déclenché, l'émetteur envoie ces ondes dans l'environnement environnant. Considérez-le comme un haut-parleur puissant qui émet des ondes sonores à une fréquence bien supérieure à celle que nous pouvons entendre. Dans une application robotique, par exemple, l'émetteur à ultrasons d'un robot enverrait ces ondes de 40 kHz dans la direction dans laquelle le robot se déplace, se préparant à détecter tout obstacle sur son chemin.
  1. Récepteur à ultrasons : comme son nom l'indique, le récepteur à ultrasons a pour fonction de capter les ondes ultrasonores qui ont été réfléchies par les obstacles se trouvant dans le champ d'action du capteur. Une fois que l'émetteur a envoyé les ondes, celles-ci se propagent dans l'air jusqu'à ce qu'elles rencontrent un objet. Les ondes rebondissent alors, et c'est au récepteur de capter ces ondes réfléchies. Il s'agit en quelque sorte d'un microphone très sensible capable de détecter les échos les plus faibles des ondes ultrasonores. Dans un système domotique où le HC-SR04 est utilisé pour détecter la présence d'une personne dans une pièce, le récepteur capterait les ondes qui rebondissent sur le corps de la personne.
  1. Circuit de commande : C'est le cerveau derrière l'opération. Le circuit de commande gère l'ensemble de la séquence de traitement du signal. Il coordonne les actions de l'émetteur et du récepteur. Lorsqu'il reçoit un signal de déclenchement, il ordonne à l'émetteur d'émettre les ondes ultrasonores. Il surveille ensuite attentivement le récepteur pour détecter les ondes réfléchies entrantes. Une fois les ondes reçues, le circuit de commande calcule le temps qu'elles ont mis pour atteindre l'obstacle et revenir. À partir de ce temps et de la vitesse connue du son dans l'air, il calcule la distance jusqu'à l'obstacle. Dans un environnement industriel, le circuit de commande d'un HC-SR04 utilisé pour des machines automatisées gère précisément ces opérations afin de garantir des mesures de distance précises pour le bon fonctionnement des machines.

Comment ça marche

Maintenant que nous connaissons les composants clés, examinons étape par étape comment le HC-SR04 mesure réellement la distance.

Signal de déclenchement : 

Le processus commence par un signal de déclenchement. Lorsqu'une impulsion haute de 10 μs est appliquée à la broche Trig (déclencheur) du module HC-SR04, cela revient à donner au capteur une commande de « démarrage ». Cette impulsion électrique courte mais significative déclenche toute la séquence de mesure de distance. Par exemple, dans un projet basé sur Arduino, vous utiliseriez une simple ligne de code pour envoyer cette impulsion haute de 10 μs à la broche Trig du HC-SR04, lui indiquant de commencer le processus de mesure.

Wave Propagation: 

Une fois déclenché, l'émetteur ultrasonique entre en action. Le module envoie une rafale de 8 impulsions ultrasoniques à une fréquence de 40 kHz. Ces impulsions sont comme une série de « balles soniques » invisibles qui sont projetées dans l'environnement. Après avoir envoyé ces impulsions, le module passe en mode veille, attendant patiemment que les ondes heurtent un obstacle et rebondissent. Dans un scénario réel, si vous utilisiez le HC-SR04 pour mesurer la distance par rapport à un mur dans une pièce, les 8 impulsions se déplaceraient vers le mur, se propageant en forme de cône avec un angle relativement étroit d'environ 15 degrés.

Détection d'écho : 

La broche Echo est essentielle pour détecter les ondes réfléchies. Dès que les ondes ultrasonores sont émises, la broche Echo passe à l'état haut. C'est ainsi que le capteur indique qu'il a commencé le processus de mesure. Il attend ensuite le retour des ondes réfléchies. Lorsque le récepteur ultrasonore capte les ondes réfléchies, la broche Echo passe à l'état bas. La durée pendant laquelle la broche Echo reste à l'état haut est égale au temps de trajet aller-retour des ondes ultrasonores. Dans un projet Raspberry Pi, vous utiliseriez une fonction pour mesurer le temps pendant lequel la broche Echo est activée, ce qui est une étape cruciale dans le calcul de la distance.

Calcul de distance :

Distance Calculation: The final step is to calculate the distance to the obstacle. The formula for calculating the distance in centimeters is Distance (cm) = Time ((μs)) × 0.0343 2 . The factor 0.0343 comes from the speed of sound in air, which is approximately 343 m/s. Since the waves travel to the obstacle and back (a round-trip), we divide the total distance traveled by 2 to get the one-way distance to the obstacle. For example, if the time measured for the Echo pin to be high is 2000μs, then the distance would be calculated as 2000 × 0.0343 2 = 34.3 cm. This calculation is the same whether you're using the HC-SR04 in a simple hobbyist project or a complex industrial application.

Interfaçage avec les microcontrôleurs courants

Guide d'installation Arduino

Schéma de câblage

La connexion du module capteur à ultrasons HC-SR04 à un Arduino est un processus simple. Voici comment procéder :

  • VCC : connectez la broche VCC du HC-SR04 à la broche 5V de l'Arduino. Cela fournit l'alimentation nécessaire au module capteur. Une alimentation stable de 5V provenant de l'Arduino garantit le fonctionnement optimal du capteur.
  • GND : la broche GND (masse) du HC-SR04 doit être connectée à la broche GND de l'Arduino. Cela établit une référence de masse commune pour le capteur et l'Arduino, ce qui est essentiel pour une communication électrique correcte.
  • Trig : connectez la broche Trig (déclencheur) du HC-SR04 à la broche numérique 2 de l'Arduino. C'est la broche à laquelle l'Arduino enverra l'impulsion de niveau haut de 10 μs pour déclencher le processus de mesure de distance dans le HC-SR04.
  • Echo : la broche Echo du HC-SR04 est connectée à la broche numérique 3 de l'Arduino. L'Arduino lira l'impulsion de haute durée sur cette broche pour calculer la distance jusqu'à l'obstacle.
Voici un schéma de câblage simple pour illustrer les connexions :
				
					       HC - SR04         Arduino
         VCC ------------ 5V
         GND ------------ GND
         Trig ------------ Digital Pin 2
         Echo ------------ Digital Pin 3
				
			

Exemple de code

Voici un exemple de code Arduino de base pour vous aider à démarrer avec la mesure de distance à l'aide du HC-SR04 :
				
					const int trigPin = 2;
const int echoPin = 3;

void setup() {
  Serial.begin(9600);
  pinMode(trigPin, OUTPUT);
  pinMode(echoPin, INPUT);
}

void loop() {
  digitalWrite(trigPin, LOW);
  delayMicroseconds(2);
  digitalWrite(trigPin, HIGH);
  delayMicroseconds(10);
  digitalWrite(trigPin, LOW);

  long duration = pulseIn(echoPin, HIGH);
  float distance = duration * 0.0343 / 2;

  Serial.print("Distance: ");
  Serial.print(distance);
  Serial.println(" cm");

  delay(500);
}
				
			
Dans la fonction de configuration, nous initialisons d'abord la communication série à un débit de 9600 bauds, ce qui nous permet de visualiser les mesures de distance dans le moniteur série Arduino. Ensuite, nous définissons la broche trigPin comme broche de sortie et la broche echoPin comme broche d'entrée.
Dans la fonction loop, nous commençons par régler la broche trigPin sur LOW pendant 2 microsecondes afin de garantir un démarrage propre. Ensuite, nous la réglons sur HIGH pendant 10 microsecondes afin de déclencher l'émetteur à ultrasons dans le HC-SR04. Après cela, nous réglons à nouveau la broche trigPin sur LOW.
La fonction pulseIn est ensuite utilisée pour mesurer la durée de l'impulsion de niveau haut sur l'echoPin. Cette durée représente le temps mis par les ondes ultrasonores pour aller jusqu'à l'obstacle et revenir. Nous calculons ensuite la distance à l'aide de la formule distance = durée * 0,0343 / 2, où 0,0343 est la vitesse du son en cm/μs et nous divisons par 2 car les ondes vont jusqu'à l'obstacle et reviennent.
Enfin, nous imprimons la distance calculée sur le moniteur série et ajoutons un délai de 500 millisecondes avant la mesure suivante.

In the setup function, we first initialize the serial communication at a baud rate of 9600, which allows us to view the distance readings in the Arduino Serial Monitor. Then, we set the trigPin as an output pin and the echoPin as an input pin.

In the loop function, we start by setting the trigPin to LOW for 2 microseconds to ensure a clean start. Then, we set it HIGH for 10 microseconds to trigger the ultrasonic transmitter in the HC-SR04. After that, we set the trigPin back to LOW.

The pulseIn() function is then used to measure the duration of the high-level pulse on the echoPin. This duration represents the time it took for the ultrasonic waves to travel to the obstacle and back. We then calculate the distance using the formula distance = duration * 0.0343 / 2, where 0.0343 is the speed of sound in cm/μs and we divide by 2 because the waves travel to the obstacle and back.

Finally, we print the calculated distance to the Serial Monitor and add a 500-millisecond delay before the next measurement.

Conseils

  1. Mesure précise de la durée :

When using the pulseIn() function, it's important to note that it measures the duration of a pulse. In the case of the HC-SR04, this is the time the Echo pin is high. To ensure accurate measurements, make sure there are no other electrical interferences that could affect the pulse duration. Also, be aware that if the obstacle is too far away, the pulse may time out. You can set a timeout value in the pulseIn() function to handle such cases gracefully. For example, long duration = pulseIn(echoPin, HIGH, 20000); where 20000 is the timeout value in microseconds.

  1. Éviter les sources de bruit :

Les ondes ultrasoniques peuvent être affectées par des sources de bruit intense. Lorsque vous placez le HC-SR04 dans votre projet, évitez les zones où le bruit est intense, comme à proximité de haut-parleurs ou dans un environnement industriel très bruyant. Le bruit peut interférer avec les ondes ultrasoniques émises par le capteur, ce qui peut entraîner des mesures de distance inexactes. Si vous devez utiliser le capteur dans une zone bruyante, envisagez d'utiliser des matériaux insonorisants ou des boîtiers pour protéger le capteur du bruit.

Intégration Raspberry Pi

Attention à la tension

L'un des éléments clés à prendre en compte lors de l'intégration du HC-SR04 à un Raspberry Pi concerne les niveaux de tension. Les broches GPIO (General Purpose Input/Output) d'un Raspberry Pi ne peuvent accepter qu'une tension maximale de 3,3 V. Cependant, le HC-SR04 fonctionne sur 5 V, et la broche Echo du HC-SR04 peut émettre un signal de 5 V. Connecter un signal de 5 V directement à une broche GPIO du Raspberry Pi peut endommager le Pi.

To solve this issue, you can use a voltage divider circuit. A simple voltage divider using a 1kΩ and a 2kΩ resistor can be used to convert the 5V output from the Echo pin of the HC-SR04 to a 3.3V-compatible signal for the Raspberry Pi. The formula for calculating the output voltage V out of a voltage divider is V out = V in × R 2 R 1 + R 2 , where V in is the input voltage (5V in this case), R 1 is the first resistor (1kΩ), and R 2 is the second resistor (2kΩ). Plugging in the values, we get V out = 5 × 2000 1000 + 2000 3.33 V , which is within the safe range for the Raspberry Pi GPIO pin.

Câblage

  • VCC : Connectez la broche VCC du HC-SR04 à la broche 5V du Raspberry Pi. Cela permet d'alimenter le module capteur HC-SR04.

  • GND : la broche GND du HC-SR04 doit être connectée à la broche GND du Raspberry Pi afin d'établir une masse commune.
  • Trig : Connectez la broche Trig du HC-SR04 à la broche GPIO 17 du Raspberry Pi. Le Raspberry Pi utilisera cette broche pour envoyer l'impulsion de déclenchement de niveau haut de 10 μs au HC-SR04.
  • Echo : la broche Echo du HC-SR04, après être passée par le circuit diviseur de tension (résistances de 1 kΩ et 2 kΩ), est connectée à la broche GPIO 27 du Raspberry Pi. Le Raspberry Pi lira l'impulsion de haute durée sur cette broche pour calculer la distance.
Le câblage peut être résumé comme suit :
				
					       HC - SR04         Raspberry Pi
         VCC ------------ 5V
         GND ------------ GND
         Trig ------------ GPIO 17
         Echo (through voltage divider) ------------ GPIO 27
				
			

Code Python

Voici un exemple de code Python utilisant la bibliothèque RPi.GPIO pour interfacer le HC-SR04 avec un Raspberry Pi :
				
					import RPi.GPIO as GPIO
import time

# Set the GPIO mode
GPIO.setmode(GPIO.BCM)

# Define the pins
TRIG = 17
ECHO = 27

# Set up the pins
GPIO.setup(TRIG, GPIO.OUT)
GPIO.setup(ECHO, GPIO.IN)

def measure_distance():
    # Send a 10μs high - level pulse to trigger the sensor
    GPIO.output(TRIG, True)
    time.sleep(0.00001)
    GPIO.output(TRIG, False)

    # Wait for the echo to start
    while GPIO.input(ECHO)==0:
        pulse_start = time.time()

    # Wait for the echo to end
    while GPIO.input(ECHO)==1:
        pulse_end = time.time()

    pulse_duration = pulse_end - pulse_start
    distance = pulse_duration * 17150  # Speed of sound in cm/s divided by 2
    distance = round(distance, 2)

    return distance

try:
    while True:
        dist = measure_distance()
        print(f"Distance: {dist} cm")
        time.sleep(1)

except KeyboardInterrupt:
    print("Measurement stopped by User")
    GPIO.cleanup()

				
			

In this code, we first import the necessary libraries, RPi.GPIO for controlling the GPIO pins on the Raspberry Pi and time for adding delays. We then set the GPIO mode to BCM (Broadcom SOC channel numbering). We define the TRIG and ECHO pins and set up the TRIG pin as an output and the ECHO pin as an input.

The measure_distance function is where the magic happens. It sends a 10μs high - level pulse to the TRIG pin to trigger the HC - SR04. Then, it waits for the ECHO pin to go high (indicating the start of the echo) and records the start time. It then waits for the ECHO pin to go low (indicating the end of the echo) and records the end time. The time difference between the start and end times is used to calculate the distance. The distance is calculated by multiplying the pulse duration by the speed of sound in cm/s (34300 cm/s) and dividing by 2 (since the sound travels to the obstacle and back).

In the try block, we continuously measure the distance and print it to the console every second. If the user presses Ctrl + C (KeyboardInterrupt), the program cleans up the GPIO pins and exits gracefully.

ESP32 Configuration

Affectation des broches

L'ESP32 est un microcontrôleur puissant doté de plusieurs broches GPIO (General Purpose Input/Output, entrée/sortie à usage général). Lorsque vous connectez le HC-SR04 à un ESP32, vous pouvez utiliser le 5 V de la broche VOUT de l'ESP32 pour alimenter le HC-SR04. Pour les broches Trig et Echo, vous pouvez les connecter à n'importe quelle broche GPIO disponible. Par exemple, vous pouvez connecter la broche Trig à la broche GPIO 14 et la broche Echo à la broche GPIO 15. Veillez toutefois à choisir des broches qui ne sont pas déjà utilisées par d'autres composants de votre projet.

Code Arduino IDE

Le code permettant d'utiliser le HC-SR04 avec un ESP32 dans l'IDE Arduino est assez similaire au code Arduino. Voici un exemple :
				
					const int trigPin = 14;
const int echoPin = 15;

void setup() {
  Serial.begin(115200);
  pinMode(trigPin, OUTPUT);
  pinMode(echoPin, INPUT);
}

void loop() {
  digitalWrite(trigPin, LOW);
  delayMicroseconds(2);
  digitalWrite(trigPin, HIGH);
  delayMicroseconds(10);
  digitalWrite(trigPin, LOW);

  long duration = pulseIn(echoPin, HIGH);
  float distance = duration * 0.0343 / 2;

  Serial.print("Distance: ");
  Serial.print(distance);
  Serial.println(" cm");

  delay(500);
}

				
			

In the setup function, we initialize the serial communication at a baud rate of 115200. We then set the trigPin as an output pin and the echoPin as an input pin.

In the loop function, the process of triggering the HC - SR04 and measuring the distance is the same as in the Arduino code. We send a 10μs high - level pulse to the trigPin to trigger the sensor, measure the duration of the high - level pulse on the echoPin using pulseIn , and calculate the distance.

Cependant, lorsque vous utilisez l'ESP32 dans l'IDE Arduino, veillez à sélectionner la carte ESP32 appropriée dans l'IDE. De plus, si vous prévoyez d'intégrer l'ESP32 à des fonctionnalités IoT (Internet des objets) telles que le WiFi ou le Bluetooth, vous devez gérer l'initialisation de ces fonctionnalités dans votre code. Par exemple, si vous souhaitez envoyer les données de distance via WiFi, vous devrez ajouter du code pour vous connecter à un réseau WiFi et configurer un serveur ou un client pour envoyer les données.

Idées de projets créatifs utilisant le HC-SR04

Robot évitant les obstacles

Le robot évitant les obstacles est une application fascinante et pratique du module capteur à ultrasons HC-SR04. Sa fonction principale est de se déplacer en toute sécurité dans son environnement en détectant les obstacles sur son chemin. Pour ce faire, plusieurs capteurs HC-SR04 sont placés stratégiquement sur le robot.

Les capteurs sont configurés pour détecter les obstacles provenant de différentes directions. Par exemple, un ensemble de capteurs est placé à l'avant du robot pour détecter tout obstacle se trouvant directement sur son chemin vers l'avant. De plus, des capteurs sont placés sur les côtés du robot pour détecter les obstacles qui pourraient s'approcher par les côtés. Lorsqu'un obstacle est détecté, le système de contrôle du robot, qui est souvent basé sur un microcontrôleur comme Arduino, calcule la distance jusqu'à l'obstacle à l'aide des données fournies par les capteurs HC-SR04.

Sur la base de ces informations de distance, le système de contrôle détermine ensuite l'action appropriée à entreprendre pour éviter l'obstacle. Cela implique généralement de diriger les moteurs de manière à modifier la direction du robot. Par exemple, si un obstacle est détecté sur le côté gauche du robot, le système de contrôle peut ordonner au moteur gauche de ralentir ou de faire marche arrière tandis que le moteur droit continue de fonctionner à une vitesse normale. Cela amène le robot à tourner vers la droite, s'éloignant ainsi de l'obstacle.

Pour réaliser ce projet, vous aurez besoin de plusieurs composants clés. Un Arduino sert de cerveau à l'opération. Il traite les données reçues des capteurs HC-SR04 et envoie des commandes aux moteurs. Les moteurs sont nécessaires pour entraîner les roues du robot, lui permettant ainsi de se déplacer. Un pilote de moteur, tel que le L298N, est essentiel pour contrôler les moteurs. Le L298N peut gérer les besoins en courant relativement élevés des moteurs et permet à l'Arduino de contrôler efficacement la vitesse et la direction des moteurs. Et bien sûr, plusieurs capteurs HC-SR04 sont nécessaires pour la détection avant et latérale. En combinant ces composants et en écrivant le code approprié pour les contrôler, vous pouvez créer un robot capable d'éviter les obstacles et pleinement fonctionnel.

Poubelle intelligente

La poubelle intelligente est un excellent exemple de la manière dont le module capteur à ultrasons HC-SR04 peut être utilisé pour améliorer la fonctionnalité d'objets du quotidien. Dans cette application, la poubelle intelligente est conçue pour disposer d'une fonction d'ouverture automatique du couvercle. Cette fonction est déclenchée par la présence d'une personne s'approchant de la poubelle.

Le capteur HC-SR04 est monté sur la poubelle de manière à pouvoir détecter la distance qui la sépare de tout objet situé devant elle. Lorsqu'une personne s'approche de la poubelle, le capteur mesure la distance entre la poubelle et la personne. Si la distance mesurée est inférieure à un seuil prédéfini (par exemple, 20 cm), cela indique qu'une personne est suffisamment proche de la poubelle pour pouvoir l'utiliser. À ce stade, le capteur envoie un signal à un servomoteur.

Le servomoteur est relié au couvercle de la poubelle et est chargé de l'ouvrir et de le fermer. Lorsqu'il reçoit le signal du capteur HC-SR04, le servomoteur tourne pour ouvrir le couvercle. Ce fonctionnement mains libres est non seulement pratique pour l'utilisateur, mais il permet également de garder la poubelle propre et hygiénique, car il n'est pas nécessaire de toucher directement le couvercle.

Lors de l'écriture du code pour ce projet, le réglage du seuil de distance est une étape cruciale. Vous devez calibrer soigneusement cette valeur en fonction des exigences spécifiques de votre poubelle intelligente. Si le seuil est trop élevé, le couvercle peut s'ouvrir inutilement lorsque quelqu'un se trouve encore à une certaine distance de la poubelle. À l'inverse, si le seuil est trop bas, le couvercle peut ne pas s'ouvrir à temps lorsque l'utilisateur s'approche. Un seuil de distance bien calibré garantit le fonctionnement optimal de la poubelle intelligente.

Moniteur de niveau d'eau

Le moniteur de niveau d'eau est une application pratique du module capteur à ultrasons HC – SR04, en particulier dans les situations où il est nécessaire de surveiller le niveau d'eau dans un réservoir. Il peut s'agir d'un réservoir de stockage d'eau domestique, d'un réservoir de stockage d'eau industriel ou même d'un aquarium.

Le capteur HC-SR04 est installé au-dessus du réservoir d'eau. Il émet des ondes ultrasoniques vers le bas, en direction de la surface de l'eau. Ces ondes se propagent dans l'air et rebondissent lorsqu'elles atteignent la surface de l'eau. Le capteur mesure alors le temps nécessaire aux ondes pour atteindre la surface de l'eau et revenir. En utilisant la vitesse connue du son dans l'air, il est possible de calculer la distance entre le capteur et la surface de l'eau.

Dans de nombreux cas, le moniteur de niveau d'eau est intégré à un système IoT (Internet des objets). Il peut par exemple être connecté à une application Blynk. Les données calculées sur le niveau d'eau sont envoyées à l'application, ce qui permet aux utilisateurs de surveiller le niveau d'eau à distance. Cela est particulièrement utile pour les applications industrielles où la surveillance en temps réel des niveaux d'eau est cruciale pour le bon fonctionnement des processus.

Un aspect important à prendre en compte lors de la mise en place d'un moniteur de niveau d'eau est l'étalonnage. Comme le capteur est installé à une certaine hauteur au-dessus de la base du réservoir, cette hauteur doit être prise en compte dans les calculs de distance. Par exemple, si le capteur est installé à 50 cm au-dessus de la base du réservoir et que la distance calculée entre le capteur et la surface de l'eau est de 30 cm, le niveau d'eau réel dans le réservoir est de 20 cm. En calibrant avec précision la hauteur du capteur et en effectuant les calculs nécessaires, vous pouvez vous assurer que le moniteur de niveau d'eau fournit des lectures précises et fiables.

Dépannage des problèmes courants

Lectures incohérentes

L'un des problèmes les plus courants rencontrés par les utilisateurs du module capteur à ultrasons HC-SR04 est l'incohérence des mesures. Cela peut être très frustrant, en particulier lorsque vous dépendez de mesures de distance précises pour votre projet.

Cause : réflexions multivoies ou alimentation instable

Les réflexions multivoies se produisent lorsque les ondes ultrasonores émises par le capteur rebondissent sur plusieurs surfaces avant d'atteindre le récepteur. Cela peut se produire dans des environnements complexes comportant de nombreux objets ou dans des zones présentant de grandes surfaces réfléchissantes. Par exemple, dans une pièce contenant de nombreux meubles et miroirs, les ondes ultrasonores peuvent rebondir sur les meubles, les murs et les miroirs avant d'être détectées par le récepteur. Il est alors difficile pour le capteur de calculer avec précision la distance par rapport à l'objet visé, ce qui entraîne des lectures incohérentes.

Une alimentation électrique instable est un autre facteur responsable. Si l'alimentation électrique du HC-SR04 n'est pas stable, cela peut entraîner un dysfonctionnement du capteur. Les fluctuations de tension peuvent affecter le bon fonctionnement de l'émetteur et du récepteur ultrasoniques, ce qui entraîne des mesures de distance erronées. Par exemple, si vous utilisez une batterie faible ou un adaptateur secteur avec une mauvaise régulation de tension, le capteur peut ne pas recevoir une alimentation électrique constante de 5 V, ce qui peut affecter ses performances.

Solution : ajoutez un boîtier de protection pour le capteur et utilisez une source d'alimentation régulée de 5 V.

L'ajout d'un boîtier de protection autour du capteur peut aider à réduire l'impact des réflexions multivoies. Le boîtier peut être conçu pour diriger les ondes ultrasonores de manière plus ciblée, réduisant ainsi les risques que les ondes rebondissent sur des surfaces indésirables. Un simple boîtier en carton ou en plastique avec une ouverture étroite à l'avant peut être efficace à cet égard.

L'utilisation d'une source d'alimentation régulée de 5 V est essentielle pour un fonctionnement stable. Une alimentation électrique avec régulation de tension intégrée, telle qu'un adaptateur mural de haute qualité ou un module d'alimentation à tension régulée, garantit que le HC-SR04 reçoit une tension constante de 5 V. Cela permet d'éliminer tout problème causé par les fluctuations de tension et d'améliorer la précision et la cohérence globales des lectures du capteur.

Aucun signal de sortie

Un autre problème courant survient lorsque le HC-SR04 ne parvient pas à produire un signal de sortie. Cela peut être le signe de plusieurs problèmes différents, et il est important de vérifier systématiquement chaque possibilité pour que le capteur fonctionne à nouveau.
Vérification : vérifier le câblage (en particulier VCC/GND), le diviseur de tension pour Raspberry Pi et la logique du code pour le timing du déclenchement/écho.
Tout d'abord, vérifiez soigneusement le câblage. Assurez-vous que les broches VCC et GND sont correctement connectées à la source d'alimentation et à la terre, respectivement. Une connexion desserrée ou incorrecte peut empêcher le capteur de s'allumer correctement ou provoquer des courts-circuits électriques qui perturbent le fonctionnement normal du module. Dans de nombreux cas, une simple inspection visuelle et une reconnexion des fils peuvent résoudre le problème.

Si vous utilisez le HC-SR04 avec un Raspberry Pi, n'oubliez pas de vérifier le circuit diviseur de tension. Comme mentionné précédemment, les broches GPIO du Raspberry Pi ne peuvent gérer que 3,3 V, et un diviseur de tension est souvent utilisé pour convertir la sortie 5 V de la broche Echo du HC-SR04 en un signal compatible 3,3 V. Si les composants du diviseur de tension (généralement des résistances) sont endommagés ou mal connectés, le Raspberry Pi peut ne recevoir aucun signal de sortie.

La logique du code pour le timing du déclenchement/écho est également un élément essentiel à vérifier. Assurez-vous que le code envoie le signal de déclenchement correct (une impulsion de niveau haut de 10 μs) à la broche Trig et qu'il mesure correctement la durée de l'impulsion de niveau haut sur la broche Echo. Un code incorrect peut empêcher le déclenchement du capteur ou entraîner une mauvaise interprétation du signal d'écho par le microcontrôleur, ce qui se traduit par une absence de sortie ou des calculs de distance incorrects. Par exemple, si les temps de retard dans le code sont mal réglés, cela peut perturber la séquence correcte de déclenchement du capteur et de lecture de l'écho.

Erreurs hors plage

Des erreurs de sortie de plage peuvent se produire lorsque l'objet détecté est trop proche ou trop éloigné du capteur HC-SR04. Cela peut causer des problèmes dans votre projet, en particulier si votre code n'est pas correctement équipé pour gérer de telles situations.
Solution : implémenter un délai d'attente (par exemple, 38 ms pour l'absence d'écho) et gérer correctement les valeurs 0 ou ∞ dans le code.
La mise en place d'un délai d'attente dans votre code est un moyen utile de gérer les cas où l'objet est trop éloigné pour que le capteur puisse détecter un écho dans un délai raisonnable. Par exemple, si aucun écho n'est reçu dans les 38 ms, cela indique clairement que l'objet se trouve hors de la portée du capteur. Dans votre code, vous pouvez configurer un minuteur qui démarre lorsque le signal de déclenchement est envoyé et s'arrête lorsqu'un écho est reçu. Si le minuteur atteint la valeur de délai d'attente sans recevoir d'écho, vous pouvez supposer que l'objet est hors de portée et prendre les mesures appropriées, telles que l'affichage d'un message d'erreur ou la définition d'une valeur de distance par défaut.

Il est également important de gérer correctement les valeurs 0 ou ∞ (infini) dans le code. Une valeur de distance de 0 peut indiquer que le capteur est trop proche d'un objet, plus proche que sa portée minimale détectable. Dans ce cas, vous pouvez définir un seuil de distance minimale dans votre code et ajuster la valeur de distance en conséquence. De même, si le code calcule une valeur de distance extrêmement grande (proche de l'infini), cela indique probablement une erreur, telle qu'un problème de détection d'écho ou des calculs incorrects. Votre code doit être capable de gérer ces cas de manière appropriée, par exemple en enregistrant un message d'erreur ou en essayant de mesurer à nouveau la distance.

HC-SR04 vs autres capteurs de distance

vs. Capteurs infrarouges

Table 1: HC-SR04 (Ultrasonic) vs Infrared Sensors

HC-SR04

Range: 2cm–400cm (Abstract 1, 6)

Accuracy: ±3mm (ideal conditions, Abstract 1)

Voltage: 5V (fixed, Abstract 1)

Pros: No light interference, longer range (Abstract 5)

Cons: Reduced near-range accuracy, ultrasonic noise sensitivity (Abstract 1)

Infrared

Range: Typically <100cm (Abstract 1, 5)

Accuracy: ±5mm–1cm (affected by color/material, Abstract 5)

Voltage: 3.3V–5V (flexible, Abstract 5)

Pros: Small size, low cost (Abstract 1)

Cons: Ambient light/color interference (Abstract 5)

Le tableau 1 met en évidence le compromis entre la détection longue portée robuste (2 cm à 400 cm) du HC-SR04 et la taille compacte/le faible coût des capteurs infrarouges, en soulignant l'immunité du HC-SR04 aux interférences lumineuses par rapport à la vulnérabilité des capteurs infrarouges à la lumière ambiante et à la couleur des matériaux.

vs. Capteurs laser

Table 2: HC-SR04 vs Laser/ToF (VL53L0X)

HC-SR04

Range: 2cm–400cm (Abstract 1, 4)

Accuracy: ±3mm (Abstract 4)

Update Rate: 60ms (Abstract 4)

Cost: ~$2–3 (Abstract 1)

Weakness: 15° cone angle, environmental noise (Abstract 1)

Laser/ToF (VL53L0X)

Range: 5cm–200cm (Abstract 1, 3)

Accuracy: ±1mm–3mm (Abstract 3)

Update Rate: 20ms (faster, Abstract 4)

Cost: ~$10–15 (Abstract 1)

Strength: 5° narrow beam, interference-resistant (Abstract 3)

Le tableau 2 compare le rapport coût-efficacité (2 à 3 dollars) et la large portée (400 cm) du HC-SR04 à la précision supérieure (±1 mm) et à la vitesse (taux de mise à jour de 20 ms) des capteurs laser/ToF, idéaux pour les applications nécessitant une grande précision dans des environnements contrôlés.

vs. États-Unis - Module 100

Table 3: HC-SR04 vs US-100 (Ultrasonic)

HC-SR04

Range: 2cm–400cm (Abstract 2, 6)

Accuracy: ±3mm (nominal, Abstract 2)

Voltage: 5V only (Abstract 6)

Feature: GPIO-only, no temperature compensation (Abstract 3)

Issue: Random values beyond 400cm (Abstract 6)

US-100

Range: 2cm–450cm (Abstract 2, 3)

Accuracy: ±2mm (better in tests, Abstract 3)

Voltage: 3.3V–5V (Abstract 3)

Feature: Temperature compensation (UART mode), error codes (Abstract 6)

Downside: Higher cost ($5–8), UART setup required (Abstract 3)

Le tableau 3 présente la portée améliorée (450 cm), la meilleure précision (±2 mm) et la compatibilité 3,3 V/5 V du US-100 par rapport à la simplicité du HC-SR04 (GPIO uniquement), soulignant la fonction de compensation de température du US-100 pour une utilisation industrielle à un coût plus élevé (5 à 8 dollars).

Techniques avancées et optimisations

Calibrage multicapteur

Pour les applications plus complexes, en particulier dans les scénarios où une vue à 360° est essentielle, l'utilisation de plusieurs capteurs HC-SR04 peut changer la donne. Dans une application robotique, par exemple, le fait de disposer de plusieurs capteurs HC-SR04 placés stratégiquement autour du corps du robot peut lui permettre de détecter les obstacles dans toutes les directions, offrant ainsi une vue complète de son environnement.

Cependant, lorsque plusieurs capteurs sont utilisés, les interférences peuvent devenir un problème important. Les interférences se produisent lorsque les ondes ultrasonores émises par un capteur interfèrent avec le fonctionnement d'un autre capteur. Cela peut entraîner des lectures inexactes, car les capteurs peuvent interpréter à tort les ondes interférentes comme des échos provenant d'obstacles réels.

Plusieurs techniques peuvent être utilisées pour atténuer les interférences de diaphonie. Une approche consiste à multiplexer les capteurs dans le temps. Cela implique d'activer les capteurs un par un, en laissant un intervalle de temps suffisant entre chaque activation. Par exemple, si vous disposez de quatre capteurs HC-SR04 sur un robot, vous pouvez activer le capteur 1, attendre qu'il termine son cycle de mesure, puis activer le capteur 2, et ainsi de suite. Vous vous assurez ainsi que les ondes ultrasonores d'un capteur ne se superposent pas à celles d'un autre capteur, ce qui réduit les risques de diaphonie.

Une autre technique consiste à utiliser des matériaux de blindage. Placer une barrière physique, telle qu'une fine feuille de métal ou un matériau absorbant le son, entre les capteurs peut aider à empêcher les ondes ultrasonores d'un capteur d'atteindre un autre. Cela peut être particulièrement utile dans les situations où les capteurs sont placés à proximité les uns des autres.

L'étalonnage est également crucial lorsque vous utilisez plusieurs capteurs. Chaque capteur peut avoir des caractéristiques légèrement différentes, telles que la sensibilité ou l'angle du faisceau. En étalonnant les capteurs, vous pouvez tenir compte de ces différences et vous assurer que les données de tous les capteurs sont cohérentes. Cela peut impliquer de mesurer la distance par rapport à un objet connu avec chaque capteur et d'ajuster les lectures en fonction des différences.

Filtrage du bruit

Dans certains environnements, les mesures du HC-SR04 peuvent être instables, avec de légères fluctuations de la distance mesurée pouvant être causées par divers facteurs tels que le bruit électrique, de légers courants d'air ou des interférences provenant d'autres appareils électroniques à proximité. Pour remédier à ce problème, des techniques de filtrage du bruit peuvent être appliquées.

Une méthode couramment utilisée est le filtre à moyenne mobile. Le filtre à moyenne mobile fonctionne en calculant la moyenne d'une série de lectures de distance consécutives. Par exemple, au lieu d'utiliser une seule lecture de distance, vous pouvez prendre les 5 dernières lectures et calculer leur moyenne. Cela permet de lisser les lectures instables, car les petites fluctuations ont tendance à s'annuler mutuellement lorsqu'elles sont moyennées. En Python, la mise en œuvre d'un filtre à moyenne mobile simple pour les lectures de distance HC-SR04 pourrait ressembler à ceci :
				
					distance_readings = []
num_readings = 5

def moving_average_filter(new_distance):
    distance_readings.append(new_distance)
    if len(distance_readings) > num_readings:
        distance_readings.pop(0)
    return sum(distance_readings) / len(distance_readings)

				
			

Une autre méthode de filtrage efficace est le filtre médian. Le filtre médian remplace chaque mesure de distance par la valeur médiane d'un ensemble de mesures consécutives. La médiane est moins sensible aux valeurs extrêmes ou aberrantes que la moyenne. Par exemple, si vous avez un ensemble de 5 mesures de distance [20, 22, 18, 50, 21], la valeur médiane est 21. En utilisant le filtre médian, la valeur aberrante de 50 n'affecterait pas de manière significative le résultat filtré. Dans Arduino, la mise en œuvre d'un filtre médian pourrait être la suivante :

				
					const int numReadings = 5;
int readings[numReadings];
int readIndex = 0;
int total = 0;
int averageDistance = 0;

void addReading(int newReading) {
  total = total - readings[readIndex];
  readings[readIndex] = newReading;
  total = total + readings[readIndex];
  readIndex = readIndex + 1;
  if (readIndex >= numReadings) {
    readIndex = 0;
  }
}

int getMedian() {
  int sortedReadings[numReadings];
  for (int i = 0; i < numReadings; i++) {
    sortedReadings[i] = readings[i];
  }
  for (int i = 0; i < numReadings - 1; i++) {
    for (int j = i + 1; j < numReadings; j++) {
      if (sortedReadings[i] > sortedReadings[j]) {
        int temp = sortedReadings[i];
        sortedReadings[i] = sortedReadings[j];
        sortedReadings[j] = temp;
      }
    }
  }
  return sortedReadings[numReadings / 2];
}

				
			

Modes de travail personnalisés

Certaines des versions les plus récentes du module capteur à ultrasons HC-SR04 offrent une flexibilité supplémentaire grâce à des modes de fonctionnement personnalisés. Ces modes peuvent être configurés via des réglages de résistance, ce qui permet d'utiliser différents protocoles de communication et caractéristiques opérationnelles.
L'un de ces modes est le mode GPIO (General Purpose Input/Output), qui est le mode standard pour la plupart des applications de base. Dans ce mode, le module fonctionne comme décrit dans les sections précédentes, les broches Trig et Echo étant utilisées respectivement pour déclencher la mesure de distance et recevoir le signal d'écho.

Cependant, certains modèles HC-SR04 proposent également les modes UART (Universal Asynchronous Receiver/Transmitter) et I2C (Inter-Integrated Circuit). En mode UART, le module peut communiquer avec un microcontrôleur à l'aide d'une communication série. Cela peut être utile dans les applications où un protocole de communication série plus standardisé est préférable, comme dans certains systèmes de contrôle industriels ou lors de l'intégration avec des appareils dotés d'interfaces UART intégrées.

Le mode I2C, quant à lui, permet la communication via un bus I2C. Cela est avantageux dans les configurations multi-appareils où plusieurs capteurs ou composants doivent communiquer avec un seul microcontrôleur. Le bus I2C permet une utilisation plus efficace des broches du microcontrôleur, car plusieurs appareils peuvent partager le même bus à deux fils (SDA – Serial Data Line et SCL – Serial Clock Line).

Pour configurer le module pour ces modes personnalisés, vous devez vous reporter à la documentation du module afin de déterminer les valeurs de résistance appropriées. Par exemple, pour activer le mode UART, vous devrez peut-être connecter une résistance spécifique entre deux broches du module. Une fois les résistances correctement configurées, le module peut être programmé pour communiquer dans le mode souhaité. Cela peut impliquer d'écrire un code différent dans votre microcontrôleur pour gérer les protocoles de communication UART ou I2C. Par exemple, dans un projet Raspberry Pi utilisant le HC-SR04 configuré en I2C, vous utiliseriez la bibliothèque smbus en Python pour communiquer avec le capteur via le bus I2C.

Conclusion

Le module capteur à ultrasons HC – SR04 reste un incontournable dans les projets électroniques en raison de son prix abordable, de sa facilité d'utilisation et de sa polyvalence. En maîtrisant son principe de fonctionnement, en l'interfaçant avec des microcontrôleurs courants et en explorant des applications créatives, vous pouvez exploiter tout son potentiel, de la mesure de distance de base aux systèmes IoT complexes. Vous avez des questions ou des idées de projets ? Partagez-les avec nous via le formulaire flottant ! 🛠️

Part à:

Retour en haut

Instant Quote