Обзор лазерного дальномера VL53L0X
Сегодня расскажу о лазерном дальномере, основанным на чипе VL53L0X от ST, который способен измерить расстояние до 2 метров. В отличие от обычных датчиков дальности, таких как HC-SR04, VL53L0X способен обеспечить точное измерение расстояния независимо от цвета и отражательной способности объекта, обеспечивая лучшую защиту от помех.
Технические параметры
► Рабочее напряжение: 3,3 В / 5 В
► Расстояние: от 30 до 2000 мм
► Точность определения дальности: ± 5% (режим высокой скорости), ± 3% (режим высокой точности)
► Время ранжирования (мин): 20 мс (режим высокой скорости), 200 мс (режим высокой точности)
► Угол обзора: 25 °
► Длина волны лазера: 940 нм
Общие сведения
Давайте рассмотрим дальномер поближе, габаритные размеры данного модуля, всего 13 мм × 18 мм × 2 мм. С одной стороны платы расположен сам датчик VL53L0X, который закрыт защитной пленкой (при изготовлении). На другой стороне платы, установлены радио компоненты для удобного подключения VL53L0, такие как стабилизатор напряжения на 2.8 В и схема сдвига уровня, которая обеспечивает связь по I²C.
Датчик VL53L0X используется для обнаружения пользователя при включении и выключении блокировки на сотовых телефонах, компьютеров, ноутбуков или планшетах. В целом данный датчик можно использовать при проектировании роботов и других устройств. Более подробную информацию можно почитать в документации.
Назначение контактов:
► VСС и GND — питание модуля от 2,6 до 5,5 В.
► SDA — линия данных (Serial Data)
► SCL — линия тактирования (Serial CLock)
► GPIO1 — программируемый выход прерывания (логический уровень питания).
► XSHUT — вывод является активным-низким входом отключения, модуль подтягивает его до VDD, чтобы включить датчик по умолчанию. Низкий уровень этого вывода переводит датчик в аппаратный режим ожидания. Этот вход не смещен по уровню.
Подключение лазерного дальномера VL53L0X к Arduino
Необходимые детали:
► Лазерный дальномер VL53L0X x 1 шт.
► Arduino UNO R3 (DCCduino, CH340G)x 1 шт.
► Провод DuPont 10x, 2,54 мм, 20 см, F-F (Female — Female) x 1 шт.
Подключение:
В этом примере расскажу как подключить датчик VL53L0X с Arduino UNO по интерфейсу I2C, показания будем передавать в «Мониторинг порта«. Для интерфейса I2C на плате arduino предусмотрено только два вывода A4 и A5, другие вывода не поддерживают I2C, собираем схему согласно рисунку ниже.
Установка библиотеки:
После сборки схемы, необходимо установить дополнительную библиотеку Adafruit_VL53L0X. Самый простой способ, это воспользоваться «Управление библиотеками…» в среде разработке Arduino IDE
Затем в поле поиска набираем «Adafruit VL53L0X» и устанавливаем библиотеку.
Так же, можно скачать библиотеку в конце статьи.
Программа:
Теперь запускаем среду разработки Arduino IDE и загружаем данный скетч в контроллер
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 |
/* Тестировалось на Arduino IDE 1.8.5 Дата тестирования 31.10.2019г. */ #include "Adafruit_VL53L0X.h" Adafruit_VL53L0X lox = Adafruit_VL53L0X(); void setup() { Serial.begin(115200); while (! Serial) { delay(1); } Serial.println("Adafruit VL53L0X test"); if (!lox.begin()) { Serial.println(F("Failed to boot VL53L0X")); while(1); } 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); if (measure.RangeStatus != 4) { Serial.print("Distance (mm): "); Serial.println(measure.RangeMilliMeter); } else { Serial.println(" out of range "); } delay(100); } |
После загрузки скетча, открываем «Мониторинг порта» со скоростью «115200«, теперь наводим датчик на любой предмет и смотрим расстояние.
Описание скетча:
Первым делом подключаем библиотеку «Adafruit_VL53L0X.h»
1 2 |
#include "Adafruit_VL53L0X.h" Adafruit_VL53L0X lox = Adafruit_VL53L0X(); |
В «void setup()«, первым делом запускаем последовательную связь со скоростью 115200 бод
1 2 3 4 5 |
void setup() { Serial.begin(115200); while (! Serial) { delay(1); } |
В следующий строках, мы проверяет, инициализацию модуля VL53L0X
1 2 3 4 5 6 7 |
Serial.println("Adafruit VL53L0X test"); if (!lox.begin()) { Serial.println(F("Failed to boot VL53L0X")); while(1); } Serial.println(F("VL53L0X API Simple Ranging example\n\n")); } |
В цикле «void loop()» мы считываем показания
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
void loop() { VL53L0X_RangingMeasurementData_t measure; Serial.print("Reading a measurement... "); lox.rangingTest(&measure, false); if (measure.RangeStatus != 4) { Serial.print("Distance (mm): "); Serial.println(measure.RangeMilliMeter); } else { Serial.println(" out of range "); } delay(100); } |
Если есть вопросы пишите.
Ссылки
Документация на VL53L0X
Библиотека Adafruit VL53L0X v.1.0.5
Купить на Aliexpress
Контроллер Arduino UNO R3 на CH340G
Контроллер Arduino UNO R3 на Atmega16U2
Лазерный дальномер VL53L0X
Провода DuPont, 2,54 мм, 20 см
Купить в Самаре и области
Контроллер Arduino UNO R3 на CH340G
Контроллер Arduino UNO R3 на Atmega16U2
Лазерный дальномер VL53L0X
Провода DuPont, 2,54 мм, 20 см
Подскажите, а где взять библиотеку для vl53lxx-v2