Mesure de distance et détection d’obstacles avec le capteur ultrason HC-SR04 et Arduino

 

Comment mesurer une distance avec l’Arduino ? Ou encore… Comment détecter un obstacle avec l’Arduino ?

Pour cet article j’ai choisi d’essayer un capteur a ultrason, le HC-SR04, un produit peu chère et que l’ont trouve facilement. Couplé à l’Arduino, il est utilisé dans la mesure de distance et détection d’obstacle.

Il permet d’estimer une distance allant de 2cm à 400cm (4m). Dans les meilleurs conditions sa précision sera de 3mm.

Où se acheter le hc-sr04 ?

Vous pouvez vous le procurer sur divers site chinois ou directement via Amazon au lien suivant.

 

Caractéristiques du capteur ultrason hc-sr04

  • Dimensions : 45 mm x 20 mm x 15 mm
  • Plage de mesure : 20 cm à 400 cm
  • Précision : 3mm
  • Angle de mesure : ~15 °

PinOut du capteur ultrason hc-sr04

  • Vcc = Alimentation: de 4.5 à 5.5V – 5V idéalement.
  • Trig = Entrée de déclenchement de la mesure
  • Echo = Sortie de mesure donnée en écho
  • GND = Masse



Branchement

Concernant sa connexion, il a 4 pin: VCC, GND, ECHO, TRIG.

Que seront branchée comme suit: 5V, GND, PIN 12, PIN 13.

pinout

Concernant le code, la source retenue proviens d’instructable.com et a été modifié a mes besoins et traduit en partie.

 

int trigPin = 13; // On défini la pin 13 pour le trig
int echoPin = 12; // On défini la pin 12 pour l'echo

void setup() {
  Serial.begin (9600);
  pinMode(trigPin, OUTPUT); // Le trig en sortie.
  pinMode(echoPin, INPUT); // L'echo en entrée.
}

void loop() {
  long duration;
  float distance; // Modification de distance en type float pour les décimales.
  digitalWrite(trigPin, LOW); 
  delayMicroseconds(2);
  digitalWrite(trigPin, HIGH);
  delayMicroseconds(10); 
  digitalWrite(trigPin, LOW);
  duration = pulseIn(echoPin, HIGH);
  distance = (duration/2) / 29.1;
  
  if (distance >= 200 || distance <= 0){
    Serial.println("Out of range");
  }
  else {
    Serial.print(distance);
    Serial.println(" cm");
  }
  delay(100);
}

 

 

Pour ce qui est de la fiabilité j’ai quelques doutes. il ne pourra pas effectuer de mesures précises quoi que peut être avec quelques paufinements. Il n’empêche qu’il serait parfait pour détecter un obstacle.

Lorsque le code est uploader sur l’Arduino, ouvrez le moniteur série vous devriez avoir quelque chose comme ceci:

hc-sr04

 

Si l’obstacle face au HC-SR04 est à plus de 2M (200cm) vous aurez comme indication: Out of Range.

A voir sur un futur robot.

Sa précision est d’environ 2cm



Article du 07.01.16
Revu le 08.03.19