mardi 25 octobre 2011

Module à ultrasons HC-SR04 et Arduino

Les modules à ultrasons HC-SR04 sont facile à obtenir sur eBay, pour quelques dollars (ou euros) seulement.  Ils permettent de détecter la présence d'obstacles au  moyen d'ultrasons, et de mesurer la distance de ces obstacles.

Ils sont extrêmement faciles d'utilisation avec un Arduino, il n'y a que 4 connexions à faire:

VCC du HC-SR04 --> 5V de l'Arduino
Trig du HC-SR04 ---> digital 7 de l'Arduino
Echo du HC-SR04 ---> digital 6 de l'Arduino
GND du HC-SR04 --> Gnd de l'Arduino

Côté logiciel, rien de très compliqué non plus (aucune bibliothèque spécialisée n'est nécessaire):  il s'agit de mettre la pin "Trig" à 5 volts pendant quelques microsecondes, puis la remettre à 0.  Si le module reçoit un écho, la pin "Echo" devient haute (5 V) pendant une durée équivalente à l'allée retour de l'ultrasons.  Il ne reste plus qu'à calculer la distance qui correspond au délai mesuré.

Voici un sketch qui montre comment afficher sur le moniteur série la distance mesurée par le module HC-SR04 (en centimètres).

Il s'agit ensuite d'orienter le capteur vers un objet pour que la distance en centimètres s'affiche sur le moniteur série.


/*******************ULTRASONS HC-SR04*************************
*
* Démonstration de l'utilisation du module à ultrasons HC-SR04
* avec un Arduino. La distance mesurée par le module est affichée
* sur le moniteur série.
*
* Connexions:
*
* Le module HC-SR04 ne comporte que 4 pins:
*
* VCC du HC-SR04 ---> 5V de l'Arduino
* Trig du HC-SR04 ---> digital 7 de l'Arduino
* Echo du HC-SR04 ---> digital 6 de l'Arduino
* GND du HC-SR04 ---> Gnd de l'Arduino
*
* https://electroniqueamateur.blogspot.com/2011/10/module-ultrasons-hc-sr04.html
*
**************************************************************/
// définition des connexions
int trigPin = 7; // pin "trig" branchée dans le 7 de l'Arduino
int echoPin = 6; //pin "echo" branchée dans le 6 de l'Arduino
void setup() {
// prépration du moniteur série
Serial.begin(9600);
pinMode(echoPin, INPUT);
pinMode(trigPin, OUTPUT);
digitalWrite(trigPin, LOW);
}
void loop()
{
// les variables qui nous seront utiles
long temps, distance;
// Nous envoyons un signal haut d'une durée de 10 microsecondes, en sandwich
// entre deux signaux bas. Des ultrasons sont émis pendant que le signal est haut
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
// Lors de la réception de l'écho, le module HC-SR04 émet
// un signal logique haut (5 v) dont la durée est égale au
// temps écoulé entre l'émission et la réception de l'ultrason.
pinMode(echoPin, INPUT);
temps = pulseIn(echoPin, HIGH);
// Maintenant, nous convertissons la durée en distance
// puisque la vitesse du son est de 340 m/s , le temps est en microsecondes
// et les ultrasons parcourent le double de la distance par rapport à l'obstacle,
// la distance en cm sera:
distance = temps * 340/(2*10000);
// on affiche l'information sur le moniteur série:
Serial.print("Distance: ");
Serial.print(distance);
Serial.println(" cm");
delay(500);
}


À lire aussi:

Vous trouverez aussi sur ce blog des conseils pour utiliser le télémètre HC-SR04 avec un Raspberry Piavec un ATTiny85,  avec une carte STM32 Nucleo programmée avec mbedavec un microcontrôleur PIC et avec un micro:bit.

Yves Pelletier   (Twitter: @ElectroAmateur)

3 commentaires:

  1. Bonjour, félicitations pour ce blog très complet et très intéressant !
    Etant très mauvais en électronique mais désirant faire quelques projets, je me demandais si ce guide pour afficher la valeur de la distance pouvait s'appliquer à un afficheur à LED 4x7 segments ?
    Si oui, et si cela vous dit, pourriez-vous faire un petit tutorial ?
    Merci et encore bravo !

    RépondreSupprimer
  2. Bonne idée: je vais ajouter ça à ma liste de choses à essayer!

    RépondreSupprimer
  3. svp j'ai un projet qui fait le calcul de distance de deplacement de 4 verins de levage ,, comment je peux utiliser le capteur ultrason pour realiser ce projet

    RépondreSupprimer