Débuter avec le HC-SR04, mesure de distance par ultrason. Exemple de code Arduino

Partager sur facebook
Partager sur twitter
Partager sur linkedin
Partager sur pinterest
Partager sur email
Partager sur telegram

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* x vitesse du son dans l’air

Le temps de mesure est divisé par 2 car le signal fait un aller-retour entre le détecteur et la surface de l’objet.

Principe du HC-SR04, mesure de distance par ultrasons

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 

Circuit de montage du HC-SR04 sur un Arduino UNO

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

overtire gestionnaire de librairies Arduino

3Entrez dans la barre de recherche “HCSR04”

HCSR04 installation de la librairie sur le gestionnaire de librairie Arduino

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

installation librairie HCSR04 by Martin Sosic IDE Arduino

5 Fermez le gestionnaire de librairiesfermeture gestionnaire de librairies IDE Arduino

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.

liste déroulante example IDE Arduino librairie HCSR04

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

A LIRE AUSSI :
Mesure de température DS18B20, code Arduino compatible ESP8266 et ESP32, publication sur Domoticz en HTTP
A LIRE AUSSI :
Mesure d'humidité et de température sur Arduino avec un capteur DHT11 ou DHT22

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
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 <HCSR04.h> // 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 <HCSR04.h>

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.

Selection carte Arduino UNO IDE Arduino

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.

bouton de téléversement sur l'idée Arduino

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

 

sélection 9600 baud moniteur série

Démonstration

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

résultats des mesure du capteur HC-SR04 avec un Arduino UNO

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

Pour aller plus loin

A LIRE AUSSI :
Comparaison HC-SR04 (ultrasons), Sharp GP2Y0A02YK0F (IR), VL53L0X (Laser), quelle solution choisir pour la mesure de distance avec Arduino ou Raspberry Pi
Avez-vous aimé cet article ?
[Total: Moyenne: ]
Partager sur facebook
Partager sur twitter
Partager sur linkedin
Partager sur pinterest
Partager sur email
Partager sur telegram

Vous avez aimé ce projet ? Ne manquez plus aucun projet en vous abonnant à notre lettre d’information hebdomadaire!

Ressources utiles
quel modèle esp8266 choisir
Quel modèle d'ESP8266EX choisir en 2020 ?
guide choix esp32 development board
Quel ESP32 choisir en 2020 ?
A lire aussi
Nous serions ravis de connaître votre avis

Laisser un commentaire

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.

Sondage
Aimez-vous le nouveau design du blog ?

Chercher

Partager
Partager sur facebook
Partager sur twitter
Partager sur linkedin
Partager sur pinterest
Partager sur email
Partager sur telegram

Table des matières

À lire aussi
Domotique et objets connectés à faire soi-même