VL53L0X Лазерный датчик расстояния (ToF)

Узнайте всё о датчике расстояния VL53L0X: технические характеристики, распиновка, схемы подключения, datasheet и примеры кода для ESP32, Arduino, Raspberry

Расстояние I2C

Обзор

VL53L0X — это компактный лазерный датчик измерения расстояния (Time-of-Flight), способный измерять дистанцию до 2 метров. В отличие от инфракрасных датчиков интенсивности, ToF-датчики измеряют время полета фотонов, что обеспечивает высокую точность независимо от цвета или отражающей способности объекта.

VL53L0X — один из самых популярных и доступных ToF-датчиков. Он сочетает в себе компактность, низкое энергопотребление и достаточную для большинства DIY-проектов дальность измерения (до 2000 мм). Идеально подходит для систем обхода препятствий и простого распознавания жестов.

Датчик VL53L0X
Быстрая навигация
Основные разделы
Примеры кода
Платформы

О лазерном датчике VL53L0X

VL53L0X использует технологию ToF от компании STMicroelectronics. Он излучает невидимый лазерный импульс (Класс 1, безопасен для глаз) и замеряет время, за которое луч вернется обратно. Это позволяет получать точные данные в миллиметрах, в отличие от ультразвуковых датчиков, которые имеют широкое поле зрения и могут ошибаться из-за эха.

Ключевые особенности

  • Высокая точность ToF – измерение не зависит от цвета объекта.
  • ИК-лазер 940 нм – полная невидимость для человеческого глаза.
  • Дальность до 2 метров – оптимально для роботов-пылесосов и дверных сенсоров.
  • Интерфейс I2C – простая интеграция с большинством контроллеров.

🔗 Если вам нужна большая дальность (до 4 м), обратите внимание на VL53L1X.

Где купить

Приобретите VL53L0X

Технические характеристики

Характеристики VL53L0X

Основные технические параметры датчика.

Интерфейс
I2C
Диапазон
30 мм ... 2000 мм
Точность
±3% (в идеале)
Питание
2.6В ... 5.5В
Скачать даташит (PDF)
Конфигурация пинов

Распиновка VL53L0X

Модуль обычно имеет 6 выводов. Основные — это SDA/SCL для данных и питание.

Схема распиновки
Типовой модуль
Распиновка VL53L0X
Выводов
6
Тип
ToF лазер
Советы
  • XSHUT – активный низкий. Используется для программного сброса.
  • GPIO1 – прерывание (опционально).
  • Адрес по умолчанию – 0x29.
Таблица выводов
Название Тип Описание
1 VIN Power Вход питания (2.6В–5.5В).
2 GND Ground Общий минус.
3 SCL I2C Clock Тактовая линия шины I2C.
4 SDA I2C Data Линия данных шины I2C.
5 XSHUT Control Выключение (активный 0).
6 GPIO1 Interrupt Прерывание готовности данных.
Схема подключения

Подключение VL53L0X к ESP32

Подключите к I2C шине. Линии SDA и SCL требуют подтягивающих резисторов (обычно они есть на модуле). Напряжение питания 3.3В идеально подходит для работы с ESP32.

Монтажная схема
ESP32 + VL53L0X
Схема подключения VL53L0X к ESP32
Нужно проводов
4-6
Протокол
I2C
Адрес
0x29
Таблица соединений
Вывод VL53L0X Куда Вывод ESP32 Описание
VIN Обяз. 3V3 Питание модуля.
GND Обяз. GND Общий минус.
SDA Обяз. GPIO21 Данные I2C.
SCL Обяз. GPIO22 Такты I2C.
Устранение неполадок

Отладка VL53L0X

Если датчик не работает, проверьте следующее.

Ошибка инициализации или 0 mm
Датчик не отвечает
Проверьте подключение SDA/SCL. Если используется вывод XSHUT, он должен быть подтянут к высокому уровню для включения датчика.
Показания всегда 2000 мм (Max)
Объект не найден
Возможно, объект слишком далеко или не отражает ИК-луч (черные или прозрачные поверхности). Также убедитесь, что защитная пленка снята с линзы датчика.
Примеры программирования

Программирование VL53L0X

Готовые решения для различных сред.

Arduino IDE

С библиотекой Adafruit VL53L0X

C++
#include "Adafruit_VL53L0X.h"

Adafruit_VL53L0X lox = Adafruit_VL53L0X();

void setup() {
  Serial.begin(115200);
  while (!Serial);

  if (!lox.begin()) {
    Serial.println(F("Failed to boot VL53L0X"));
    while(1);
  }
}

void loop() {
  VL53L0X_RangingMeasurementData_t measure;
    
  lox.rangingTest(&measure, false); 

  if (measure.RangeStatus != 4) {  
    Serial.print("Distance (mm): "); 
    Serial.println(measure.RangeMilliMeter);
  } else {
    Serial.println(" out of range ");
  }
    
  delay(100);
}

ESPHome

Интеграция в Home Assistant

YAML
i2c:
  sda: 21
  scl: 22

sensor:
  - platform: vl53l0x
    name: "Расстояние"
    update_interval: 1s

MicroPython

Код на Python

Python
from machine import I2C, Pin
import vl53l0x

i2c = I2C(0, sda=Pin(21), scl=Pin(22))
sensor = vl53l0x.VL53L0X(i2c)

distance = sensor.read()
print("Расстояние: ", distance, "мм")

Готовы к созданию точных приборов?

Теперь у вас есть все необходимые знания для интеграции VL53L0X в ваши проекты. Создавайте умные системы измерения с легкостью!