Après avoir récupéré un module télémètre à ultrasons HC-SR04 sans réel besoin, je me suis dit que ça pouvait être sympa d'apprendre à m'en servir histoire de bricoler un peu ! Ce petit module a un fonctionnement tout bête : émission d'ultrasons par le capteur de sortie, rebond des ultrasons émis sur un objet, réception des ultrasons réfléchis par le capteur d'entrée, calcul de la distance à partir de la vitesse du son et du temps entre l'émission et la réception.
Le module HC-SR04 :
- Caractéristiques du module :
La fiche de référence de ce module nous indique qu'il fonctionne avec une tension d'entrée de 5 V, nécessite 15 mA, possède une portée minimale de 2 cm et maximale de 4 m, et que le calcul de distance se fait comme suit :
distance (cm) = temps de réponse (µs) / 58
ou pour les anglo-saxons :
distance (po) = temps de réponse (µs) / 148
Le module possède quatre broches : Vcc (alimentation 5 V), Trig (émetteur), Echo (récepteur), GND (terre).
- Mise en œuvre :
Le module nécessitant 5 V et 15 mA pour fonctionner, elle peut très bien être utilisée telle quelle sur la plupart des cartes Arduino, ici une Nano, grâce aux broches pouvant délivrer jusqu'à 40 mA et sa broche 5 V.
Schéma du montage :
Photo du montage en action :
- Code Arduino :
#define pinTrig 2 // Broche pour l'émission.
#define pinEcho 3 // Broche pour la réception.
unsigned short t; // Temps de réponse (µs).
unsigned short d; // Distance à mesurer (cm).
void setup()
{
pinMode(pinTrig, OUTPUT); // Broche pinTrig fixée en sortie.
pinMode(pinEcho, INPUT); // Broche pinEcho fixée en entrée.
digitalWrite(pinTrig, LOW); // On n'envoie rien pour l'instant.
Serial.begin(9600); // Débit en bauds pour le terminal.
}
void loop()
{
digitalWrite(pinTrig, HIGH); // Envoi d'un signal...
delayMicroseconds(10); // Pendant 10 µs.
digitalWrite(pinTrig, LOW); // Arrêt du signal.
t = pulseIn(pinEcho, HIGH); // Mesure du temps écoulé.
d = t / 58; // Calcul de la distance.
Serial.print("Distance : "); // Affichage dans la console.
Serial.print(d);
Serial.println(" cm.");
delay(1000); // Pause d'une seconde.
}
Ce type de télémètre est très facile à utiliser et peut servir pour construire un robot autonome, un détecteur d'ouverture/fermeture, etc. Ce petit module ne paye pas de mine, mais permet tout de même de mesurer des distances comprises entre 2 et 400 cm, avec pour ma part un décalage de -3 cm par rapport à la réalité, petit écart simple à corriger avec une soustraction.