Mesure de distance précise par ultrasons avec Arduino – Guide étape par étape
Projet de mesure de distance par ultrasons utilisant Arduino
La mesure de distance par ultrasons est un outil utile dans diverses applications récemment. Elle peut être utilisée pour le positionnement, la localisation, le dimensionnement, la sélection, la mesure de niveau, le contrôle et le profilage. En faisant des calculs mathématiques avec les valeurs de sortie, on peut aussi mesurer la vitesse et diverses autres dimensions physiques. L'appareil a aussi des applications en robotique.
Gardant ces applications à l'esprit, le capteur à ultrasons est un excellent outil pour mesurer des distances sans contact physique pour de courtes distances. Ils utilisent le concept d'ÉCHO pour mesurer la distance. Dans ce projet, nous allons apprendre à mesurer la distance en interfaçant le module capteur HC-SR04 avec Arduino et afficher la distance sur un LCD 16×2.
- Article connexe : Alimentation variable utilisant Arduino UNO – Circuit et Code
Schéma de circuit du projet de mesure de distance

L'interfaçage est vraiment simple. Suivez juste le schéma. Premièrement, les broches Trig et Echo du capteur ultrasons sont connectées aux broches A4 et A5 d'Arduino UNO, VCC et GND au 5V et GND d'Arduino.
Maintenant, nous allons afficher la distance sur un LCD 16×2 connecté à Arduino. Connectez RS et EN aux broches numériques 12 et 11 d'Arduino. Connectez D4-D7 du LCD aux broches numériques 5-2 d'Arduino. Nous avons aussi connecté un potentiomètre 10K pour contrôler le contraste du LCD comme montré.
- Article connexe : Sonnette automatique avec détection d'objet par Arduino
Composants requis
- Module capteur ultrasonique HC-SR04
- Arduino UNO
- LCD 16×2
- Potentiomètre
- Câbles de liaison et fils de connexion
Module capteur ultrasonique
Le module utilisé ici est HC-SR04, un dispositif de mesure ultrasonique sans contact. Ce petit module mesure des distances de 2cm à 400cm. C'est un capteur précis, capable de mesurer jusqu'à 3mm.
Le capteur consiste en un émetteur et un récepteur ultrasoniques. Le principe est simple. D'abord, la broche d'entrée (trigger) envoie un signal haut niveau pendant 10μs. Ensuite, le module envoie huit cycles de 40 kHz d'ultrasons et détecte si le signal de retour est reçu. Si le signal est reçu, par niveau haut, la durée pendant laquelle la broche trigger reste haute est le temps d'envoi à réception.
Distance = (Temps niveau haut × Vitesse du son dans l'air (340 m/s)) / 2
- Article connexe : Lampe de nuit automatique utilisant Arduino
Diagramme de temporisation
Comme discuté, le module fonctionne sur l'ÉCHO du son. Pour déclencher le module, une impulsion est envoyée pendant ~10μs. Après, le module envoie huit cycles de 40 kHz et vérifie sa réflexion. S'il y a un obstacle, le signal frappe et revient au récepteur. La distance est calculée par la formule. On divise par 2 car ce temps est le temps total aller-retour, donc le temps pour atteindre l'obstacle est la moitié. Le diagramme de temporisation est ci-dessous :

Spécifications techniques
- Tension de fonctionnement : 5V
- Courant de fonctionnement : 15mA
- Fréquence de fonctionnement : 40kHz
- Angle de mesure : 15°
- Portée : 2cm à 400cm
Broches du capteur ultrasonique HC-SR04
- VCC : Alimentation du module (typiquement +5V)
- Trig : Utilisé pour déclencher le module
- Echo : Broche de sortie. Reste haute pendant le temps où le signal va de l'émetteur à l'obstacle et revient au récepteur
- GND : Connecté à la masse du circuit principal
Comme discuté, le module fonctionne sur le principe de l'ÉCHO. Quand on connecte le module à un microcontrôleur, on déclenche d'abord par la broche Trig en envoyant une impulsion haute de 10μs. Puis on attend l'ÉCHO. Le microcontrôleur calcule le temps. Puis la distance est calculée par la formule.
- Article connexe : Qu'est-ce qu'un circuit Crowbar ? Conception et Fonctionnement
Arduino UNO
Arduino est un microcontrôleur open source largement utilisé dans de nombreux projets embarqués petits et grands. Celui utilisé ici est Arduino UNO. La raison : il est moins cher et facile à interfacer. La carte fournit 14 broches E/S numériques et 6 broches analogiques. Le microcontrôleur est open source, tout dépend de l'utilisateur. Vous pouvez modifier la carte et le logiciel selon vos besoins.
- Article connexe : Circuit de protection contre les surtensions simple utilisant diode Zener
Module LCD 16×2
Ces modules sont couramment utilisés dans les projets embarqués, car ils sont peu chers et faciles à interfacer. Vous avez peut-être vu ce type d'affichage dans les calculatrices, multimètres, etc. Le module utilisé ici affiche 16 caractères par ligne sur 2 lignes. Chaque caractère est une matrice de 5×8 pixels. Total pixels : 5×8×16×2 = 1280 pixels. Pour afficher quelque chose, il faut spécifier la position. Pour gérer le fonctionnement, un CI nommé HD44780 est utilisé. Il récupère données et commandes du microcontrôleur et fait le traitement pour l'affichage. Cela rend l'interfaçage LCD très facile.
Voyons quelques spécifications techniques :
- Tension de fonctionnement : 4,7V à 5,3V
- Consommation : 1mA sans rétroéclairage
- 2 lignes avec 16 caractères chacune
- Chaque caractère : matrice 5×8 pixels
- Affichage alphanumérique (chiffres, lettres, caractères spéciaux)
- Variantes rétroéclairage vert/bleu
- Article connexe : Convertisseur 12V vers 5V
Voyons la configuration des broches du LCD.
Brochage et description du LCD 16×2
| Numéro de broche | Nom | Description |
|---|---|---|
| 1 | VSS | Masse, connectée à la masse du circuit |
| 2 | VDD | Alimentation LCD (4,7V-5,3V), typiquement 5V |
| 3 | VE | Contraste LCD. Connecter un potentiomètre pour ajuster |
| 4 | RS | Sélection registre. Basculer entre registre commande et données. Connecté au microcontrôleur |
| 5 | RW | Lecture/Écriture. Généralement mis à la masse pour écrire les données |
| 6 | EN | Enable. Connecté au microcontrôleur, reçoit 1 ou 0 pour acquitter les données |
| 7 | Broches données (0-7) | Envoient données 8-bit au LCD. Utilisable en mode 4-bit (4 broches seulement) |
| 8 | A | Anode. Broche positive pour rétroéclairage LCD. Optionnel. Courant moindre sans rétroéclairage |
| 9 | K | Cathode. Broche négative pour rétroéclairage LCD |
Voyons l'interfaçage basique LCD avec Arduino. Affichons du texte par un code simple. Connectez RS et EN aux broches 12 et 11 d'Arduino. D4-D7 aux broches 5-2. RW, VSS et K à la masse, VDD et A au 5V. Connectez un potentiomètre à VE pour contrôler le contraste.
- Article connexe : Projet feu tricolore électronique utilisant CI 4017 & Timer 555
Passons au code. Incluons la bibliothèque LiquidCrystal.h pour le LCD.
#include <LiquidCrystal.h>
Dans les deux lignes suivantes, nous définissons les variables pour les broches de données du LCD connectées à Arduino et les passons en argument à la fonction lcd.
const int rs = 12, en = 11, d4 = 5, d5 = 4, d6 = 3, d7 = 2;
LiquidCrystal lcd(rs, en, d4, d5, d6, d7);
Dans setup, nous initialisons le LCD par lcd.begin(). Nous passons 16 et 2 car le LCD a 16 colonnes et 2 lignes. Si vous ne voulez qu'une portion, ajustez les arguments.
Ensuite, nous affichons 'Hello, World!'. Vous pouvez personnaliser le message mais attention à la taille de l'affichage.
lcd.begin(16, 2);
lcd.print("Hello, World!");
Dans loop, nous positionnons le curseur à (0,1) par lcd.setCursor() et affichons le temps d'impression.
lcd.setCursor(0, 1);
lcd.print(millis() / 1000);
Après téléversement, vous verrez le message sur l'affichage. Changez le contraste en tournant le potentiomètre.
- Article connexe : Circuit interrupteur par applaudissement utilisant Timer 555 & Sans Timer
Programmation Arduino pour mesure de distance par capteur ultrasonique
Le codage est très facile. Commencez par inclure le fichier d'en-tête pour LCD.
#include <LiquidCrystal.h>
Dans les deux lignes suivantes, nous définissons des macros pour les broches A4 (broche 18) et A5 (broche 19) d'Arduino.
#define trig 18
#define echo 19
Dans les lignes suivantes, nous définissons les variables pour les broches LCD et les passons à la fonction lcd pour l'initialiser.
const int rs = 12, en = 11, d4 = 5, d5 = 4, d6 = 3, d7 = 2;
LiquidCrystal lcd(rs, en, d4, d5, d6, d7);
Nous définissons la variable distance 'd' et temps 't' initialisées à 0.
float t=0, d=0;
Passons à setup. Première ligne : initialisation LCD par lcd.begin(). Les deux lignes suivantes : modes des broches trigger et echo en sortie et entrée.
void setup() {
lcd.begin(16,2);
pinMode(trig, OUTPUT);
pinMode(echo, INPUT);
}
Passons à loop. Première ligne : lcd.clear() pour effacer la sortie précédente. Six lignes suivantes : initialisation du capteur par impulsion haute de 10μs. Le capteur envoie huit cycles 40kHz et vérifie la réflexion. Ligne suivante : récupération du temps du capteur. Calcul de la distance. Division par 10000 car la vitesse est en m/s, conversion en cm.
void loop() {
digitalWrite(trig, LOW);
delayMicroseconds(2);
digitalWrite(trig, HIGH);
delayMicroseconds(10);
digitalWrite(trig, LOW);
t = pulseIn(echo, HIGH);
d = t * 0.0340 / 2;
d = t * 0.01330 / 2;
lcd.setCursor(0, 0);
lcd.print("Distance: ");
lcd.print(d);
lcd.print(" cm");
delay(1000);
}
- Article connexe : Interrupteur lumière salle de bain automatique
Fonctionnement du circuit de mesure de distance
Après téléversement du code, c'est prêt. Placez un objet ou votre main devant le capteur. Vérifiez la distance sur le LCD. Changez la distance et vous obtiendrez une mesure précise.
Quand on initialise le capteur par impulsion haute de 10μs, il envoie huit cycles 40kHz et si ceux-ci sont réfléchis par un obstacle, ils reviennent au récepteur. Le capteur donne le temps de parcours du signal ultrasonique de l'émetteur à l'obstacle et retour. Nous utilisons ce temps pour calculer la distance.

Technologie industrielle
- Comment Fonctionnent les Capteurs de Distance et Leurs Applications Clés
- Capteurs Arduino : Types, Applications et Projets Réels
- Comment fonctionnent les circuits de capteur PIR : conception, fonctionnement et applications réelles
- Construire un capteur de température distant avec Raspberry Pi et Python – Guide étape par étape
- Construire un dispositif de lévitation ultrasonique avec Arduino – Guide étape par étape
- Construire un Voltmètre Intelligent avec Arduino et Smartphone – Projet DIY Facile
- Bocal Intelligent IoT avec ESP8266, Arduino et Capteur Ultrasonique – Surveillance Temps Réel
- Mesure Précise de Fréquence et Rapport Cyclique avec Arduino UNO
- Construire une Radio FM Compacte avec Arduino Nano et RDA5807M