Лазерный дальномер Ардуино VL53L1X, VL53L0X

Датчики GY-53-L1X и VL53LOX используют лазерный дальномер для определения расстояния до объекта на расстоянии до 4 метров, при этом длина волны составляет 940 Нм, что безопасно для глаз. Более доступные модели VL53L0X измеряют расстояние только до 2 метров. Этот текст описывает, как подключать эти датчики к Arduino и применять лазерный датчик для измерения расстояния.

Эти датчики имеют шесть разъемов, однако для подключения требуется только четыре контакта. Два из них используются для подачи питания на модуль, а еще два – для связи через протокол I2C. Изначально VL53L1X работает в режиме “дальнего действия” с максимальным расстоянием измерения до 4 метров. С использованием библиотеки SparkFun_VL53L1X можно переключиться в режим “малой дальности” с максимальной дистанцией измерения около 2 метров.

VL53L1X и VL53L0X Arduino характеристики, распиновка

VL53L1X и VL53L0X Arduino характеристики, распиновка

Arduino VL53L1X datasheet, характеристики

  • Напряжение питания: 3,3 или 5 В
  • Адрес I2C: 0x29
  • Угол обзора: 27°
  • Диапазон измерения: от 4 до 400 см
  • Точность: ± 25 мм (± 20 мм в темноте)

По умолчанию, датчик видит область под углом 27 градусов. Иногда препятствия, находящиеся на краю области, могут влиять на точность датчика. Чтобы уменьшить угол обзора, можно настроить датчик на просмотр определенной области (ROI). Датчик имеет массив элементов размером 16 на 16 штук, и чтобы настроить ROI, нужно просто активировать некоторые из этих элементов. Если активировать только часть массива размером 4 на 4 элемента, то луч будет наиболее узким.

Как подключить дальномер VL53L1X к Ардуино

Как подключить лазерный дальномер к Ардуино
VL53LOX / VL53L1XArduino UnoArduino NanoArduino Mega
GNDGNDGNDGND
VDD5V5V5V
SDAA4A420
SCLA5A521

В первом примере сенсор регулярно отображает расстояние до препятствия в миллиметрах на мониторе порта 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 к Ардуино с дисплеем

Как подключить VL53L0X к Ардуино с дисплеем
OLED i2c 0,96Arduino UnoArduino NanoArduino Mega
GNDGNDGNDGND
VDD5V5V5V
SDAA4A420
SCLA5A521

В следующем примере результат измерения расстояния до препятствия отображается на 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. Кроме того, можно настраивать угол поля зрения для минимизации ошибок в измерениях.