Capteur à ultrasons Arduino
Guide complet du capteur à ultrasons HC-SR04 avec Arduino
Cet article est un guide sur le capteur à ultrasons HC-SR04. Nous vous expliquerons son fonctionnement, vous montrerons certaines de ses fonctionnalités et partagerons un exemple de projet Arduino que vous pourrez suivre pour l’intégrer à vos projets. Nous fournissons un schéma de principe sur la façon de câbler le capteur à ultrasons et un exemple de croquis avec l’Arduino.

La description
Le capteur à ultrasons HC-SR04 utilise un sonar pour déterminer la distance à un objet. Ce capteur lit de 2 cm à 400 cm (0,8 pouce à 157 pouces) avec une précision de 0,3 cm (0,1 pouce), ce qui convient à la plupart des projets amateurs. De plus, ce module particulier est livré avec des modules émetteurs et récepteurs à ultrasons.
L’image suivante montre le capteur à ultrasons HC-SR04.

L’image suivante montre l’autre côté du capteur.

Caractéristiques
Voici une liste de certaines des caractéristiques et spécifications du capteur à ultrasons HC-SR04. Pour plus d’informations, vous devriez consulter la fiche technique du capteur :
- Alimentation : +5V CC
- Courant de repos : <2mA
- Courant de travail : 15 mA
- Angle effectif : <15°
- Distance de portée : 2cm – 400 cm/1″ – 13ft
- Résolution : 0.3cm
- Angle de mesure : 30 degrés
- Largeur d’impulsion d’entrée de déclenchement : impulsion TTL de 10 uS
- Signal de sortie d’écho : impulsion TTL proportionnelle à la plage de distance
- Dimensions : 45 mm x 20 mm x 15 mm
Comment ça marche?
Le capteur à ultrasons utilise un sonar pour déterminer la distance à un objet. Voici ce qui se passe :
- L’émetteur d’ultrasons (trig pin) émet un son à haute fréquence (40 kHz).
- Le son voyage dans l’air. S’il trouve un objet, il rebondit vers le module.
- Le récepteur d’ultrasons (broche d’écho) reçoit le son réfléchi (écho).

Le temps entre l’émission et la réception du signal permet de calculer la distance à un objet. C’est possible parce que nous connaissons la vitesse du son dans l’air. Voici la formule :
distance to an object = ((speed of sound in the air)*time)/2
vitesse du son dans l’air à 20ºC (68ºF) = 343m/s
Brochage du capteur à ultrasons HC-SR04

Voici le brochage du capteur à ultrasons HC-SR04.
VCC | Alimente le capteur (5V) |
Trigger | Broche d’entrée de déclenchement |
Écho | Broche de sortie d’écho |
GND | GND commun |
Où acheter?
Vous pouvez consulter le capteur Ultrasonic Sensor HC-SR04 sur ocraelec pour trouver le meilleur prix :
Arduino avec capteur HC-SR04

Ce capteur est très populaire parmi les bricoleurs Arduino. Nous fournissons donc ici un exemple d’utilisation du capteur à ultrasons HC-SR04 avec l’Arduino. Dans ce projet, le capteur à ultrasons lit et écrit la distance à un objet dans le moniteur série.
Le but de ce projet est de vous aider à comprendre le fonctionnement de ce capteur. Ensuite, vous devriez pouvoir utiliser cet exemple dans vos propres projets.
Pièces requises
Voici une liste des pièces nécessaires pour suivre le prochain tutoriel :
Vous pouvez utiliser les liens précédents ou aller directement sur ocraelec pour trouver toutes les pièces pour vos projets au meilleur prix !
Arduino avec câblage du capteur HC-SR04
Suivez le schéma suivant pour câbler le capteur à ultrasons HC-SR04 à l’Arduino.

Le tableau suivant indique les connexions que vous devez effectuer :
Capteur à ultrasons HC-SR04 | Arduino |
VCC | 5V |
Trigger | Broche 11 |
Écho | Broche 12 |
GND | GND |
Code
Téléchargez le code suivant sur votre IDE Arduino.
* Complete Guide for Ultrasonic Sensor HC-SR04
*
Ultrasonic sensor Pins:
VCC: +5VDC
Trig : Trigger (INPUT) - Pin11
Echo: Echo (OUTPUT) - Pin 12
GND: GND
*/
int trigPin = 11; // Trigger
int echoPin = 12; // Echo
long duration, cm, inches;
void setup() {
//Serial Port begin
Serial.begin (9600);
//Define inputs and outputs
pinMode(trigPin, OUTPUT);
pinMode(echoPin, INPUT);
}
void loop() {
// The sensor is triggered by a HIGH pulse of 10 or more microseconds.
// Give a short LOW pulse beforehand to ensure a clean HIGH pulse:
digitalWrite(trigPin, LOW);
delayMicroseconds(5);
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
// Read the signal from the sensor: a HIGH pulse whose
// duration is the time (in microseconds) from the sending
// of the ping to the reception of its echo off of an object.
pinMode(echoPin, INPUT);
duration = pulseIn(echoPin, HIGH);
// Convert the time into a distance
cm = (duration/2) / 29.1; // Divide by 29.1 or multiply by 0.0343
inches = (duration/2) / 74; // Divide by 74 or multiply by 0.0135
Serial.print(inches);
Serial.print("in, ");
Serial.print(cm);
Serial.print("cm");
Serial.println();
delay(250);
}
Comment fonctionne le code
Tout d’abord, vous créez des variables pour le déclencheur et la broche d’écho appelées trigPin et echoPin, respectivement. La goupille de déclenchement est connectée au numérique Broche 11, et la broche d’écho est connectée à Broche 12:
int trigPin = 11;
int echoPin = 12;
Vous créez également trois variables de type long : duration et inches. La variable duration permet de gagner du temps entre l’émission et la réception du signal. La variable cm enregistrera la distance en centimètres, et la variable inches enregistrera la distance en pouces.
long duration, cm, inches;
Dans le setup()), initialisez le port série à un débit en bauds de 9600 et définissez la broche de déclenchement comme OUTPUT et la broche d’écho comme un INPUT.
//Serial Port begin
Serial.begin (9600);
//Define inputs and outputs
pinMode(trigPin, OUTPUT);
pinMode(echoPin, INPUT);
Dans loop(), déclencher le capteur en envoyant un HIGH de 10 microsecondes. Mais, avant cela, donnez un bref LOW pour vous assurer d’obtenir un raffraichissement à l’état haut.:
digitalWrite(trigPin, LOW);
delayMicroseconds(5);
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
Nous utilisons la fonction pulseIn() pour obtenir le temps de trajet de l’onde sonore :
duration = pulseIn(echoPin, HIGH);
Le pulseIn() La fonction lit une impulsion HAUT ou BAS sur une broche. Il accepte comme arguments la broche et l’état de l’impulsion (soit HAUT, soit BAS). Il renvoie la durée de l’impulsion en microsecondes. La durée d’impulsion correspond au temps qu’il a fallu pour se rendre à l’objet plus le temps qu’il a fallu pour revenir.
Ensuite, nous calculons la distance à un objet, en tenant compte de la vitesse du son.
distance = (temps de trajet/2) x vitesse du son
La vitesse du son est : 343m/s = 0,0343 cm/uS = 1/29.1 cm/uS
Ou en pouces : 13503,9 pouces/s = 0,0135 pouces/uS = 1/74 pouces/uS
Nous devons diviser le temps de trajet par 2 car nous devons considérer que l’onde a été envoyée, a heurté l’objet, puis est retournée au capteur.
cm = (duration/2) / 29.1;
inches = (duration/2) / 74;
Enfin, nous afficherons les résultats dans le Serial Monitor :
Serial.print(inches);
Serial.print("in, ");
Serial.print(cm);
Serial.print("cm");
Serial.println();
Code source avec la bibliothèque NewPing
Vous pouvez également utiliser la bibliothèque NewPing. Téléchargez la bibliothèque ici .
Après avoir installé la bibliothèque NewPing, vous pouvez télécharger le code fourni ci-dessous.
* created by http://playground.arduino.cc/Code/NewPing
*/
#include <NewPing.h>
#define TRIGGER_PIN 11
#define ECHO_PIN 12
#define MAX_DISTANCE 200
// NewPing setup of pins and maximum distance
NewPing sonar(TRIGGER_PIN, ECHO_PIN, MAX_DISTANCE);
void setup() {
Serial.begin(9600);
}
void loop() {
delay(50);
unsigned int distance = sonar.ping_cm();
Serial.print(distance);
Serial.println("cm");
}
Comment fonctionne le code
Obtenir la distance à un objet à l’aide de la bibliothèque NewPing est beaucoup plus simple.
Vous commencez par inclure la bibliothèque NewPing :
#include <NewPing.h>
Ensuite, définissez le déclencheur et la broche d’écho. La broche de déclenchement est connectée à l’Arduino numériqueBroche 11 et l’écho à Broche 12. Vous devez également définir la variable MAX_DISTANCE pour pouvoir utiliser la bibliothèque.
#define TRIGGER_PIN 11
#define ECHO_PIN 12
#define MAX_DISTANCE 200
Ensuite, vous créez une nouvelle instance NewPing appelée sonar:
NewPing sonar(TRIGGER_PIN, ECHO_PIN, MAX_DISTANCE);
Dans le setup(), vous initialisez la communication série à un débit en bauds de 9600.
Serial.begin(9600);
Enfin, dans le loop(), il vous suffit d’utiliser la méthode ping_cm() sur l’objet sonar pour obtenir la distance en centimètres.
unsigned int distance = sonar.ping_cm();
Si vous voulez obtenir la distance en pouces, vous pouvez utiliser sonar.ping_in().
Demonstration

Téléchargez le code sur votre carte Arduino. Ensuite, ouvrez le moniteur série à un débit en bauds de 115 200.

La distance jusqu’à l’objet le plus proche est imprimée dans la fenêtre Serial Monitor.
