Capteur ultrason HC-SR04 :
HC-SR04 est un capteur ultrason communément utilisé pour mesurer les distances. Il est relativement peu coûteux et facile à utiliser avec un microcontrôleur tel qu’un Arduino. Ce capteur émet un signal sonore à une fréquence élevée et mesure le temps qu’il prend pour que l’écho de ce signal revienne. En utilisant la vitesse du son dans l’air, il est possible de calculer la distance jusqu’à l’objet.
Principe du fonctionnement :
Le fonctionnement de l’HC-SR04 est assez simple. Il comporte deux éléments principaux : un émetteur ultrasonique et un récepteur ultrasonique. Voici les étapes clés du fonctionnement du capteur :
- Lorsque le capteur est alimenté, l’émetteur envoie une impulsion ultrasonique à une fréquence spécifique (généralement de 40 kHz).
- Lorsque cette impulsion sonore atteint un objet, elle rebondit et est renvoyée vers le récepteur ultrasonique comme un écho.
- Le récepteur mesure le temps entre le moment où l’impulsion a été émise et celui où l’écho a été reçu.
- En utilisant la vitesse connue du son dans l’air (environ 343 m/s ou 34,3 cm/µs) et la durée de l’écho mesurée, le capteur calcule la distance jusqu’à l’objet en utilisant la formule : distance = (durée de l’écho / 2) * vitesse du son.
- Le résultat est ensuite converti en une distance numérique et envoyé au Arduino via une sortie numérique.
Le montage:
Pour utiliser l’HC-SR04 avec un Arduino, vous aurez besoin d’un Arduino Uno, du capteur HC-SR04, de quelques fils pour relier les composants, et d’un afficheur ou d’un moniteur série pour afficher les résultats (facultatif).
Commençons par brancher le capteur:
- Branchez l’alimentation 5V d’ Arduino à la broche VCC du capteur pour le mettre sous tension.
- Connectez la broche GND de la carte Arduino à la broche GND du capteur pour assurer une liaison à la masse.
- Raccordez la broche D12 d’ Arduino à la broche TRIGGER du capteur pour déclencher l’émission de l’impulsion ultrasonique.
- Reliez la broche D11 de la carte Arduino à la broche ECHO du capteur pour recevoir l’écho de l’impulsion ultrasonique.
Le code :
const int trigPin = 12;
const int echoPin = 11;
void setup() {
//configurer les broches trigPin et echoPin en entrée/sortie
pinMode(trigPin, OUTPUT);
pinMode(echoPin, INPUT);
Serial.begin(9600); //initialiser le moniteur série
}
void loop() {
long duration, distance;
// envoyer une impulsion de 10 microsecondes
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
// mesurer la durée de l'impulsion écho en microsecondes
duration = pulseIn(echoPin, HIGH);
// calculer la distance en utilisant la vitesse du son (34300 cm/s)
distance = (duration/2) / 29.1;
if (distance >= 200 || distance <= 0){
Serial.println("Distance non valide");
}
else {
Serial.print(distance);
Serial.println(" cm");
}
delay(500); // attendre un peu avant de répéter la mesure
}
Explication du code :
Le code ci-dessus est un exemple de programme Arduino qui utilise le capteur HC-SR04 pour mesurer les distances. Il utilise des fonctions intégrées d’Arduino pour envoyer et recevoir des signaux, ainsi que pour effectuer des calculs simples.
- Tout d’abord, les lignes
const int trigPin = 12;
etconst int echoPin = 11;
déclarent des constantes pour les broches trigPin et echoPin, respectivement. Ces broches sont utilisées pour envoyer un signal de déclenchement à l’émetteur ultrasonique et pour recevoir l’écho du signal reçu par le récepteur ultrasonique. - La fonction
setup()
est exécutée une seule fois lorsque le programme démarre. Elle utilise la fonctionpinMode()
pour configurer les broches trigPin et echoPin en tant qu’entrées et sorties, respectivement. La fonctionSerial.begin(9600);
permet d’initialiser la communication série avec un moniteur série ou un afficheur. - La fonction
loop()
est exécutée en boucle à chaque fois que le programme est en cours d’exécution. Il utilise d’aborddigitalWrite(trigPin, LOW); delayMicroseconds(2); digitalWrite(trigPin, HIGH); delayMicroseconds(10); digitalWrite(trigPin, LOW);
pour envoyer un signal de déclenchement à l’émetteur ultrasonique. Le signal de déclenchement est maintenu à l’état haut pendant 10 microsecondes. - Ensuite, la fonction
pulseIn(echoPin, HIGH);
est utilisée pour mesurer la durée de l’écho reçu sur la broche echoPin. Cette durée est enregistrée dans la variableduration
. - Ensuite, le code calcule la distance en utilisant la formule distance = (durée de l’écho / 2) / 29.1 (cm/us). Cette valeur est enregistrée dans la variable
distance
. - Le résultat est ensuite testé pour vérifier si il est valide ( inférieur à 200cm et supérieur à 0cm)
- Si il est valide, le résultat est affiché en utilisant la fonction
Serial.print()
et le cm est affiché pour indiquer l’unité de mesure. - Sinon un message d’erreur « Distance non valide » est affiché.
- Enfin, la fonction
delay(500);
est utilisée pour attendre 500 millisecondes avant de répéter la mesure. Cela permet au capteur de se reposer entre les mesures et empêche la surcharge de données.