fbpixel
Étiquettes : , , ,

Le capteur HC-SR04 est un capteur à ultrasons permettant de mesurer une distance par ultrason. Il utilise le même principe que le sonar, c’est à dire qu’il envoie un signal sonore et calcul le temps entre l’émission et la réception de l’écho.

Matériel

  • Ordinateur
  • Arduino UNO
  • câble USB pour connecter l’Arduino à l’ordinateur
  • Capteur de distance à ultrasons HC-SR04

Principe de fonctionnement

Le module HC-SR04 se compose d’un émetteur et d’un récepteur à ultrasons. L’émetteur envoie des ondes sonores à la réception d’un signal sur la commande trigger. Ces ondes sont réfléchies lorsqu’elle rencontre un obstacle. L’émetteur détecte ces ondes réfléchies et renvoies un signal sur la broche Echo.

N.B.: Certaines surfaces ont une meilleure capacité de réflexion des ondes sonores. Choisissez bien votre capteur en fonction de votre application.

Câblage du capteur HC-SR04

hcsr04-schematics_bb-640x658 Mesure de distance avec un capteur HC-SR04

Code

D’après les spécifications du capteur, HC-SR04 peut mesurer une distance de 2 à 400 cm. Pour mesurer cette distance, une impulsion de 10µs doit être envoyée sur la pin Trigger et la durée de l’impulsion de sortie par la pin écho doit être mesurée (utilisez pulseIn()). Cette durée divisée par 58 doit donner la distance mesurée en centimètres.

#define trigPin 3 
#define echoPin 2

long distance;
long duration; 

void setup() { 
  Serial.begin(9600); 
  pinMode(trigPin, OUTPUT); 
  pinMode(echoPin, INPUT); 
  } 
  
  void loop() { 
    distance=readUltrasonicSensor();
    if (distance >= 400 || distance <= 0){ 
      Serial.println("Unknown value"); } 
    else { 
      Serial.print(distance); 
      Serial.println(" cm"); 
      } 
      delay(500);// delay in milliseconds 
 } 

long readUltrasonicSensor(){ 
  // Send 10µs pulse 
  digitalWrite(trigPin, HIGH); 
  delayMicroseconds(10); 
  digitalWrite(trigPin, LOW); 
  // Read pulse duration 
  duration = pulseIn(echoPin, HIGH); 
  Serial.println(duration); //Convert and return value 
  return duration/ 58; 
}

N.B. Selon l’endroit où vous avez acheté le capteur et sa version, les paramètres de mesures (portée, conversion) peuvent différer. Vérifiez la datasheet de votre capteur.

Bibliothèque

Pour simplifier le code, vous pouvez créer ou télécharger et installer la librairie SR04.h (by mrRobot62). Le code peut alors être simplifié comme suivant:

#include "SR04.h"
#define TRIG_PIN 3
#define ECHO_PIN 2
#define LOOPDELAY 1000

SR04 hcsr04 = SR04(ECHO_PIN,TRIG_PIN);
long distance;

void setup() {
   Serial.begin(9600);
   delay(LOOPDELAY);
}

void loop() {
   distance=hcsr04.Distance();
   Serial.print(distance);
   Serial.println("cm");
   delay(LOOPDELAY);
}

Application

Sources

Retrouvez nos tutoriels et d’autres exemples dans notre générateur automatique de code
La Programmerie