Лазерный дальномер VL53L1X Arduino — это датчик, измеряющий расстояние до препятствия на расстоянии до 4 метров с длиной волны 940 нм (безвредной для глаз). Более дешевые модули дальномера VL53L0X имеют дальность действия всего 2 метра. В этом обзоре мы рассмотрим, как подключить VL53LOX (GY-53-L1X) к Ардуино и использовать лазерный сенсор для измерения расстояния до препятствия.
СОДЕРЖАНИЕ
Необходимые компоненты:
- Arduino Uno / Arduino Nano / Arduino Mega
- лазерный дальномер VL53L0X / VL53L1X
- дисплей OLED 128×64
- коннекторы
- библиотека SparkFun_VL53L1X.h и OLED_I2C.h
Дополнительные материалы на эту тему:
Датчики GY-53-L1X и VL53LOX имеют 6 разъемов, но требуется только 4 контакта. Два разъема используются для питания модуля и еще два разъема — для связи по протоколу I2C. По умолчанию VL53L1X настроен в режиме «дальнего радиуса действия» до 4 метров. Используя библиотеку SparkFun_VL53L1X, можно настроить более точный режим измерения «малой дальности» с диапазоном около 2 метров.
VL53L1X и VL53L0X Arduino характеристики, распиновка

Arduino VL53L1X datasheet, характеристики
- Напряжение питания: 3,3 или 5 В
- Адрес I2C: 0x29
- Угол обзора: 27°
- Диапазон измерения: от 4 до 400 см
- Точность: ± 25 мм (± 20 мм в темноте)
Угол обзора датчика по умолчанию составляет 27°. В некоторых случаях на точность датчика могут влиять препятствия на периферии. Угол обзора можно уменьшить, контролируя ROI (область интереса). Датчик состоит из массива элементов 16 X 16, а управление областью ROI заключается в активации части элементов. Самый узкий луч получается при активации части массива, состоящей из 4 X 4 элементов.
Как подключить дальномер VL53L1X к Ардуино

| VL53LOX / VL53L1X | Arduino Uno | Arduino Nano | Arduino Mega |
| GND | GND | GND | GND |
| VDD | 5V | 5V | 5V |
| SDA | A4 | A4 | 20 |
| SCL | A5 | A5 | 21 |
В первом примере сенсор регулярно отображает расстояние до препятствия в миллиметрах на мониторе порта Arduino IDE. Программа работает в фоновом режиме, используя библиотеки Wire и VL53L1X, поэтому представленная программа очень короткая. Подключите лазерный датчик расстояния vl53l1x к микроконтроллеру Arduino Uno, как показано на схеме, и загрузите скетч для лазерного дальномера.
Скетч для измерения расстояния с помощью VL53L1X
#include "Wire.h"
#include "SparkFun_VL53L1X.h"
SFEVL53L1X vl;
void setup () {
Serial.begin(9600);
vl.setOffset(0); // калибровка сенсора
// vl.setDistanceModeShort(); // активация режима "короткой дистанции"
// vl.setROI(4,4,199); // уменьшение поля зрения до минимума
}
void loop() {
vl.startRanging();
while (!vl.checkForDataReady()) { delay(1); }
int dist = vl.getDistance();
vl.stopRanging();
Serial.print("Distance: ");
Serial.print(dist);
Serial.println(" mm");
delay(1000);
}
Как подключить VL53L0X к Ардуино с дисплеем

| OLED i2c 0,96 | Arduino Uno | Arduino Nano | Arduino Mega |
| GND | GND | GND | GND |
| VDD | 5V | 5V | 5V |
| SDA | A4 | A4 | 20 |
| SCL | A5 | A5 | 21 |
В следующем примере результат измерения расстояния до препятствия отображается на OLED экране. Если расстояние до объекта, измеренное датчиком GY-53-L1X, не является точным, вы можете скорректировать данные с помощью функции setOffset. Например, если измеренное расстояние на 10 миллиметров меньше фактического, необходимо указать setOffset(10), чтобы добавить 10 мм к конечному результату.
Скетч для лазерного датчика расстояния Ардуино
#include "Wire.h"
#include "OLED_I2C.h"
OLED myOLED(SDA, SCL, 8);
extern uint8_t BigNumbers[];
extern uint8_t SmallFont[];
#include "SparkFun_VL53L1X.h"
SFEVL53L1X vl;
void setup () {
Serial.begin(9600);
myOLED.begin();
vl.setOffset(0); // калибровка сенсора
// vl.setDistanceModeShort(); // активация режима "короткой дистанции"
// vl.setROI(4,4,199); // уменьшение поля зрения до минимума
}
void loop() {
vl.startRanging();
while (!vl.checkForDataReady()) { delay(1); }
int dist = vl.getDistance();
vl.stopRanging();
Serial.print("Distance: ");
Serial.print(dist);
Serial.println(" mm");
myOLED.setFont(BigNumbers);
myOLED.print(String(dist), CENTER, 20);
myOLED.setFont(SmallFont);
myOLED.print("MILLIMETRES", CENTER, 50);
myOLED.update();
delay(1000);
}
Заключение. Датчик VL53L0X-v2 (GY-53-L1X) способен обеспечить максимально точное измерение расстояния, независимо от отражающей способности объекта. Точность сенсора меньше зависит от температуры окружающей среды, в отличии от ультразвукового датчика HC-SR04. Еще одним положительным моментом является возможность регулировки угла поля зрения для уменьшения погрешности измерения.
