Le télémètre laser VL53L1X Arduino est un capteur permettant de mesurer la distance d’un obstacle jusqu’à 4 mètres de distance avec une longueur d’onde de 940 nm (inoffensif pour les yeux). Les modules télémétriques VL53L0X, moins chers, ont une portée de seulement 2 mètres.
Les capteurs GY-53-L1X et VL53LOX possèdent 6 connecteurs, mais seules 4 broches sont nécessaires. Deux connecteurs sont utilisés pour l’alimentation et deux autres connecteurs sont utilisés pour la communication I2C. Par défaut, VL53L1X est configuré en mode « longue portée » jusqu’à 4m. En utilisant la bibliothèque SparkFun_VL53L1X.h, tu peux configurer un mode de mesure « courte portée » plus précis avec une portée d’environ 2 mètres.
L’angle de vue par défaut du capteur est de 27°. Dans certains cas, la précision du capteur peut être affectée par des obstacles situés à la périphérie. L’angle de vue peut être réduit en contrôlant la zone ROI (ROI: region of interest). Le capteur consiste en une matrice de 16 X 16 éléments, et le contrôle de la zone ROI consiste à activer une partie des éléments. Le faisceau le plus étroit est obtenu en activant la partie de la matrice constituée de 4 X 4 éléments.
VL53LOX / VL53L1X | Arduino Uno | Arduino Nano | Arduino Mega | ESP32 |
---|---|---|---|---|
GND | GND | GND | GND | GND |
VDD | 5V | 5V | 5V | 5V |
SDA | A4 | A4 | 20 | 21 |
SCL | A5 | A5 | 21 | 22 |
Cet exemple affiche régulièrement la distance mesurée (en millimètres) dans le moniteur série de l’IDE Arduino. Le programme s’exécute en arrière-plan en utilisant les bibliothèques Wire et VL53L1X, le programme initial est donc très court. Connectez le capteur de distance laser au microcontrôleur Arduino Uno comme indiqué dans le schéma ci-dessus et chargez le code pour distance sensor VL53L0X / GY-53-L1X.
#include "Adafruit_VL53L0X.h" Adafruit_VL53L0X lox = Adafruit_VL53L0X(); void setup() { Serial.begin(115200); // wait until serial port opens for native USB devices while (! Serial) { delay(1); } Serial.println("Adafruit VL53L0X test"); if (!lox.begin()) { Serial.println(F("Failed to boot VL53L0X")); while(1); } // power Serial.println(F("VL53L0X API Simple Ranging example\n\n")); } void loop() { VL53L0X_RangingMeasurementData_t measure; Serial.print("Reading a measurement... "); lox.rangingTest(&measure, false); // pass in 'true' to get debug data printout! if (measure.RangeStatus != 4) { // phase failures have incorrect data Serial.print("Distance (mm): "); Serial.println(measure.RangeMilliMeter); } else { Serial.println(" out of range "); } delay(100); }
#include "Adafruit_VL53L0X.h" Adafruit_VL53L0X lox = Adafruit_VL53L0X(); int distanceR = 0; void setup() { Serial.begin(115200); // wait until serial port opens for native USB devices while (! Serial) { delay(1); } Serial.println("Adafruit VL53L0X test"); if (!lox.begin()) { Serial.println(F("Failed to boot VL53L0X")); while(1); } // power Serial.println(F("VL53L0X API Simple Ranging example\n\n")); } void deplacementRobot()// exemple pour test //Serial.print("Distance (mm): "); Serial.println(measure.RangeMilliMeter); { if ( distanceR >= 200) { Serial.println("robotavance...>= 200");} if ( distanceR <=40) { Serial.println(" robotTourneDroite...<=40 ");} } void loop() { VL53L0X_RangingMeasurementData_t measure; //Serial.print("Reading a measurement... "); lox.rangingTest(&measure, false); // pass in 'true' to get debug data printout! if (measure.RangeStatus != 4) { // phase failures have incorrect data distanceR = measure.RangeMilliMeter; //Serial.print("Distance (mm): "); Serial.println(measure.RangeMilliMeter); deplacementRobot(); } else { //Serial.println(" out of range "); } delay(100); }