Mesurer la distance avec un module laser VL53L0X à 6 broches pour Arduino
Dans ce tutoriel, nous allons apprendre à mesurer la distance en utilisant le capteur de distance laser VL53L0X avec un module à 6 broches. Ce petit mais puissant capteur utilise la technologie de temps de vol pour fournir des mesures de distance précises jusqu'à 200 cm. En suivant ce guide, vous serez en mesure de configurer le capteur avec un Arduino et de lire les valeurs de distance directement depuis votre moniteur série.

Pour ce projet, nous utiliserons le capteur VL53L0X, qui est compact et facile à intégrer dans diverses applications. Le capteur communique via I2C, ce qui le rend simple à connecter à une carte Arduino. Dans la vidéo, vous trouverez des explications supplémentaires et des démonstrations du processus de configuration (dans la vidéo à 04:00).
Le matériel expliqué
Le VL53L0X est un capteur de distance à temps de vol qui émet un faisceau laser et mesure le temps nécessaire au retour de la lumière après avoir été réfléchie par un objet. Cela lui permet de calculer avec précision la distance jusqu'à l'objet. Le capteur fonctionne à une tension comprise entre 2,6 V et 3,5 V, mais il peut être alimenté en 5 V grâce à un régulateur de tension interne.
Le module comporte six broches : VCC, GND, SDA (ligne de données), SCL (ligne d'horloge), GPIO1 (E/S à usage général) et XSHUT (broche de mise hors tension). La broche GPIO1 n'est pas utilisée dans cette configuration mais peut rester déconnectée. La broche XSHUT permet de mettre le capteur hors tension pour économiser de l'énergie lorsqu'il n'est pas utilisé.
Détails de la fiche technique
| Fabricant | STMicroelectronics |
|---|---|
| Numéro de pièce | VL53L0X |
| Tension logique/E/S | 2.6 V à 3.5 V (5 V avec régulateur) |
| Température de fonctionnement | de -20 °C à 70 °C |
| Plage de mesure | 30 mm à 2000 mm |
| Fréquence de communication I2C | 400 kHz |
| Taille | 4.4 mm x 2.4 mm x 1 mm |
- Assurez-vous d'une alimentation appropriée (5 V recommandés).
- Connectez SDA et SCL aux broches I2C appropriées de l'Arduino.
- Utilisez des résistances de pull-up sur les lignes I2C si nécessaire.
- Ne laissez pas GPIO1 déconnecté ; il peut rester flottant.
- Maintenez la broche XSHUT à l'état haut pendant le fonctionnement.
- Mesurez les distances dans un environnement bien éclairé pour une meilleure précision.
- Calibrez le capteur pour obtenir des mesures précises.
- Testez la portée du capteur en plaçant des objets à différentes distances.
- Surveillez la sortie série pour les mesures de distance et les messages de dépassement de délai.
Instructions de câblage

Pour câbler le capteur VL53L0X à votre Arduino, commencez par connecter la broche VCC du capteur à la broche 5V de l'Arduino. Ensuite, connectez la broche GND au GND de l'Arduino. La broche SDA du capteur doit être reliée à la broche A4 de l'Arduino (ou à la broche SDA si votre carte dispose de broches I2C dédiées). De même, connectez la broche SCL du capteur à la broche A5 (ou à la broche SCL). Laissez la broche GPIO1 non connectée car elle n'est pas nécessaire pour ce projet.
Enfin, connectez la broche XSHUT à la broche numérique 12 de l'Arduino. Cette broche servira à contrôler l'état de mise hors tension du capteur. Assurez-vous que toutes les connexions sont bien sécurisées pour éviter tout problème de communication.
Exemples de code et guide pas à pas
Dans le code, nous commençons par inclure les bibliothèques nécessaires et initialiser le capteur VL53L0X. La fonction setup configure le capteur et lance des mesures de distance en continu. Voici un extrait de la fonction setup :
void setup() {
pinMode(12, INPUT_PULLUP);
digitalWrite(12, HIGH);
Serial.begin(9600);
Wire.begin();
sensor.init();
sensor.setTimeout(500);
sensor.startContinuous();
}Dans cet extrait, nous configurons la broche 12 en entrée avec une résistance pull-up et initialisons la communication série à 9600 bauds. Nous initialisons également le capteur et définissons un délai d'attente pour les lectures, en veillant à ce que le capteur fonctionne en continu.
Ensuite, nous lisons la distance dans la fonction loop, où la valeur mesurée est affichée sur le moniteur série :
void loop() {
int distance = sensor.readRangeContinuousMillimeters();
Serial.print("Distance: ");
Serial.print(distance);
Serial.print("mm");
if (sensor.timeoutOccurred()) { Serial.print(" TIMEOUT"); }
Serial.println();
delay(100);
}Ce code lit la distance en millimètres et l'affiche sur le moniteur série. Si un dépassement de délai se produit, cela indique que le capteur n'a pas reçu de lecture valide.
Démonstration / À quoi s'attendre
Lorsque vous exécutez le programme, vous devriez commencer à voir les mesures de distance sur le moniteur série. La sortie variera lorsque vous rapprocherez ou éloignerez des objets du capteur. Vous pouvez remarquer des messages de dépassement de délai occasionnels si le capteur ne parvient pas à effectuer une lecture (dans la vidéo à 10:30). Pour améliorer la précision, envisagez de faire la moyenne de plusieurs relevés.
/* This example shows how to use continuous mode to take
range measurements with the 6-pin VL53L0X module. It is based on
vl53l0x_ContinuousRanging_Example.c from the VL53L0X API.
The range readings are in units of mm.
Original source: https://github.com/adafruit/Adafruit_VL53L0X
Modified by Ahmad Shamshiri for RoboJax.com/RJT83
Date modified: May 31, 2018 at 19:25 in Ajax, Ontario, Canada
Watch the instruction video for this code https://youtu.be/S2jaAQEv3Yo
Pin connection
VL53L0X Pin Arduino Pin
VCC 5V
GND GND
SDA A4 or SDA if available
SCL A5 or SCL if available
GPIO1 leave it unconnected
XSHUT D12 (digital 12 or pin 12)
*/
#include <Wire.h>
#include <VL53L0X.h>
VL53L0X sensor;
void setup()
{
pinMode(12,INPUT_PULLUP);
digitalWrite(12,HIGH);
Serial.begin(9600);
Wire.begin();
sensor.init();
sensor.setTimeout(500);
// Start continuous back-to-back mode (take readings as
// fast as possible). To use continuous timed mode
// instead, provide a desired inter-measurement period in
// ms (e.g. sensor.startContinuous(100)).
sensor.startContinuous();
}
void loop()
{
int distance =sensor.readRangeContinuousMillimeters();
//int distance =sensor.startContinuous(100);
//distance = distance;
Serial.print("Distance: ");
Serial.print(distance);
Serial.print("mm");
if (sensor.timeoutOccurred()) { Serial.print(" TIMEOUT"); }
Serial.println();
delay(100);
}
Ce dont vous pourriez avoir besoin
-
eBayAchetez le VL53l0x sur eBayebay.us
-
AliExpressAchetez 1 à 10 pièces de VL53L0X sur AliExpresss.click.aliexpress.com
-
BanggoodAchetez 1 à 10 pièces de VL53L0X sur Banggoodbanggood.com
Ressources et références
-
ExterneAchetez 1 à 10 pièces de VL53L0X sur AliExpresss.click.aliexpress.com
-
ExterneAchetez 1 à 10 pièces de VL53L0X sur Banggoodbanggood.com
-
ExterneAchetez le VL53L0X sur Amazonamzn.to
-
ExterneAchetez le VL53l0x sur eBayebay.us
Fichiers📁
Fichier Fritzing
-
VL53L0X_Sonde_de_distance_Carrés
VL53L0X_Distance_sensor_Squares.fzpz0.02 MB
Autres fichiers
-
VL53L0X_capteur_de_distance_pourpre
VL53L0X_Distance_sensor_purple.fzpz0.01 MB