Débuter avec le HC-SR04, mesure de distance par ultrason. Exemple de code Arduino • Domotique et objets connectés à faire soi-même

Le capteur HC-SR04 permet de réaliser des mesures de distance assez précises à l’aide d’un Arduino ou d’un Raspberry Pi. Dans ce tutoriel nous allons apprendre comment utiliser le capteur et réaliser des mesures de distance en quelques lignes de code à l’aide de l’IDE Arduino.

Le HC-SR04 est un capteur économique disponible pour moins de 2€. Le JSN SR04T est une version étanche qui pourra convenir à la mesure de niveau dans un réservoir d’eau par exemple.

Introduction au module HC-SR04

Le HC-SR04 est un capteur qui utilise deux signaux numériques. Le premier signal appelé Trig – Trigger – génère un faisceau d’ultrasons. Les ultrasons sont réfléchis par la surface de l’objet (ou la personne) dont on souhaite connaitre la distance. C’est le signal Echo que l’on récupère sur la seconde broche du capteur.

Connaissant le temps entre l’émission du signal Trig et la réception Echo ainsi que la vitesse de propagation du son dans l’air on peut en déduire la distance à l’aide d’une petite formule mathématique.

Distance = temps / 2 * vitesse du son dans l’air

Inutile de chercher à re-développer la roue, il existe plusieurs librairies Arduino et Python pour intégrer le HC-SR04 dans vos projets. La plus simple d’utilisation reste la librairie HCSR04 développée par Martin Sosic.

Caractéristiques techniques du HC-SR04

  • Plage de mesure de distance : 2cm à 450cm (4,5m)
  • Précision de mesure : 0,3cm
  • Tension d’alimentation : 5V
  • Sortie numérique : PWM
  • Poids : 9g
  • Dimensions : 45mm x 20mm x 18mm

Matériel nécessaire

Pour ce tutoriel vous aurez besoin du matériel suivant

Version étanche JSN SR04T qui pourra convenir à la mesure de niveau dans un réservoir d’eau par exemple.

Circuit

Connectez les quatre broches du HC-SR04 à l’Arduino en suivant le schéma de câblage suivant

HC-SR04 Arduino
VCC 5V
GND GND
Trig  2 
Echo  3 

Installation de la libraire HCSR04

Il y a au moins 7 librairies disponibles directement depuis le gestionnaire de bibliothèque de l’IDE Arduino. Ici nous utiliserons la librairie HCSR04 développée par Martin Sosic.

Voici les différentes étapes à suivre pour installer la librairie HCSR04

1Démarrez l’IDE Arduino

2Ouvrez le gestionnaire de librairies en suivant le chemin  Croquis > Inclure une bibliothèque > Gérer les bibliothèques

3Entrez dans la barre de recherche “HCSR04”

4Sélectionnez la librairie HCSR04 by Martin Sosic et appuyez sur le bouton Installer

5 Fermez le gestionnaire de librairies

Pour vérifier que votre librairie et bien installée, aller dans Fichier > Examples. Si la librairie est correctement installée, vous devriez voir HCSR04 dans la liste dans la liste des exemples.

Cette librairie contient deux examples.

Simple, permet de mesurer la distance en cm mesurée à l’aide du capteur et de l’afficher sur le moniteur série.

Temperature, offre une précision de mesure supérieure. La vitesse du son variant en fonction de la température du milieu, le calcul de la distance est compensé en tenant compte celle-ci. On pourra récupérer la température à l’aide de n’importe quel capteur. DS18B20, DHT22, LM35

Quelques tutoriels pour débuter avec la mesure de température sur Arduino

Code du programme

Après l’installation de la librairie, créez un nouveau fichier dans Fichier > Nouveau  puis collez le code suivant dans le nouveau croquis.

/*
Mesure de distance à l'aide d'un capteur HC-SR04 et d'un Arduino

Domotique et Objets Connectés • Projets DIY


Circuit - repérage des broches
- VCC avec la broche 5V de l'Arduino
- GND avec la broche GND de l'Arduino
- Trig avec la broche 2 de l'Arduino
- Echo avec la broche 3 de l'Arduino

Librairie: HCSR04 by Martin Sosic

*/
#include 

// defines pins numbers / definition des broches du capteur
const int trigPin = 2;
const int echoPin = 3;
 
// Initialize sensor that uses digital pins trigPin and echoPin / initialisation du capteur avec les broches utilisees.
UltraSonicDistanceSensor distanceSensor(trigPin, echoPin);
void setup() {
  // We initialize serial connection so that we could print values from sensor./ initialisation du port serie a 9600 band pour afficher les valeurs mesurees par le capteur.
  Serial.begin(9600); 
}
void loop() {
  // Every 500 miliseconds, do a measurement using the sensor and print the distance in centimeters./ toutes les 500 millisecondes nous faisons une mesure et nous affichons la distance en centimetre sur le port serie.
  Serial.println(distanceSensor.measureDistanceCm());
  delay(500);
}

Comment fonctionne le code

Continuez à lire cette section pour apprendre comment fonctionne le code, ou passez à la section «Téléverser le programme sur l’Arduino».

Librairie

On débute le programme en déclarant la bibliothèque HCSR04 à l’aide de la commande include.

#include 

Pin du capteur

Les deux variables trigPin et echoPin permettent de définir les broches numériques utilisées par le capteur. Vous pouvez attribuer n’importe quelle broche numérique en fonction de vos besoins pour d’autres projets.

const int trigPin = 2;
const int echoPin = 3;

Initialisation du capteur

L’initialisation du capteur se fait est déclarant un objet C++. On indique les broches utilisées par le capteur.

UltraSonicDistanceSensor distanceSensor(trigPin, echoPin);

Setup()

La fonction setup() est exécutée une seule fois à la mise sous tension de la carte Arduino. Ici, on aura juste besoin de démarrer la liaison série qui nous permettra de récupérer les mesures du capteur depuis le Moniteur Série de l’IDE Arduino.

Serial.begin(9600);

Loop()

La fonction loop() s’exécute à l’infini. Elle ne contient que deux lignes de 2 codes.

La fonction distanceSensor qui permet de récupérer directement la distance en cm à l’aide la méthode measureDistanceCm() 

Serial.println(distanceSensor.measureDistanceCm());

On ralenti l’exécution de la boucle loop en attendant un certain delay (délai). Ici 500 millisecondes pour renvoyer 2 mesures par seconde, ce qui est déjà très rapide.

delay(500);

Téléverser le programme sur l’Arduino

Après avoir créé le programme, sélectionnez la carte Arduino que vous utilisez. Ici un Arduino Uno en suivant le chemin Outils > Type de carte > Arduino Uno.

Puis sélectionnez le port USB sur lequel est branché la carte en suivant le chemin Outils > Port.

Enfin téléversez le programme sur votre Arduino.

Ouvrez le moniteur série en choisissant à une vitesse de transmission de 9600 bauds.

Démonstration

Vous devriez voir les lectures affichées sur le moniteur série.

Ou sous la forme d’un graphique à l’aide du Traceur

Pour aller plus loin

Avez-vous aimé cet article ?