Перейти к содержанию

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

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

Лазерный дальномер 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

Дополнительные материалы на эту тему:

  1. Подключение ультразвукового датчика к Ардуино
  2. Подключение датчика препятствия KY-032
  3. Подключение датчика освещенности к Ардуино

Датчики GY-53-L1X и VL53LOX имеют 6 разъемов, но требуется только 4 контакта. Два разъема используются для питания модуля и еще два разъема — для связи по протоколу 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 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 к Ардуино с дисплеем

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

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

newzaym
➜