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

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

Расстояние I2C

Обзор

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

VL53L1X — это самый быстрый миниатюрный ToF-датчик на рынке с диапазоном до 4 метров и частотой измерений до 50 Гц. Он идеально подходит для обнаружения препятствий в робототехнике, управления жестами и систем мониторинга присутствия.

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

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

VL53L1X является представителем третьего поколения датчиков FlightSense™ от компании STMicroelectronics. В отличие от предыдущей модели VL53L0X, этот датчик имеет значительно увеличенную дальность (до 4 метров) и возможность настройки поля зрения (FoV).

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

  • Технология ToF (Time-of-Flight) — точное измерение расстояния не зависит от цвета и материала объекта.
  • Регулируемый диапазон — три режима (Short, Medium, Long) для оптимизации точности и скорости.
  • Настройка FoV — программное сужение поля зрения для исключения отражений от боковых препятствий.
  • Миниатюрный размер — компактный модуль, легко встраиваемый в любые устройства.

🔗 Посмотрите похожий датчик TOF400C для сравнения характеристик.

Где купить

Приобретите VL53L1X

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

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

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

Интерфейс
I2C (до 400 кГц)
Диапазон
4 см ... 400 см
Точность
±1 мм (разрешение)
Питание
2.6В ... 3.5В (3.3В тип.)
Скачать даташит (PDF)
Конфигурация пинов

Распиновка VL53L1X

Распиновка модуля обычно включает 6 выводов. Основные из них — это питание и I2C, а также дополнительные выводы для управления сбросом и прерываниями.

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

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

Подключите датчик по шине I2C. ESP32 обычно использует контакты GPIO21 (SDA) и GPIO22 (SCL). Убедитесь, что питание подается от 3.3В, так как датчик чувствителен к перенапряжению.

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

Отладка VL53L1X

Типичные проблемы и способы их решения.

Датчик не виден по I2C
Ошибка инициализации
Проверьте, не подтянут ли вывод XSHUT к земле. Для работы датчика он должен быть подключен к 3.3В (или GPIO в состоянии HIGH). Также убедитесь в наличии подтягивающих резисторов на линиях SDA/SCL.
Показания скачут или всегда 4000 мм
Проблемы с точностью
Убедитесь, что перед сенсором нет препятствий и прозрачных пленок. При ярком солнечном свете точность падает — попробуйте переключить датчик в режим Short Distance.
Примеры программирования

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

Готовые скетчи и модули для популярных платформ.

Arduino IDE

С использованием библиотеки SparkFun VL53L1X

C++
#include <Wire.h>
#include "SparkFun_VL53L1X.h" // Установите библиотеку SparkFun VL53L1X

SFEVL53L1X distanceSensor;

void setup() {
  Wire.begin();
  Serial.begin(115200);

  if (distanceSensor.begin() != 0) { // Инициализация
    Serial.println("Ошибка датчика. Проверьте подключение!");
    while (1);
  }
  Serial.println("Датчик VL53L1X готов.");
}

void loop() {
  distanceSensor.startRanging(); // Начать измерение
  while (!distanceSensor.checkForDataReady()) {
    delay(1);
  }

  int distance = distanceSensor.getDistance(); // Расстояние в мм
  distanceSensor.clearInterrupt();
  distanceSensor.stopRanging();

  Serial.print("Расстояние: ");
  Serial.print(distance);
  Serial.println(" мм");

  delay(100);
}

Этот базовый пример показывает, как получить данные в миллиметрах. Библиотека SparkFun предоставляет простой интерфейс для управления датчиком.

ESPHome

Конфигурация для Home Assistant

YAML
i2c:
  sda: 21
  scl: 22

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

ESP-IDF

Официальный SDK от Espressif

C++

Пример для ESP-IDF требует использования специализированных библиотек или ручной реализации I2C команд согласно datasheet. Рекомендуется использовать компонент vl53l1x из ESP-IDF Component Registry.

PlatformIO

Профессиональная среда разработки

C++

Добавьте зависимость в platformio.ini:

lib_deps =
    sparkfun/SparkFun VL53L1X 4m Laser Distance Sensor@^1.2.12

И используйте код из примера для Arduino.

MicroPython

Python для микроконтроллеров

Python
from machine import I2C, Pin
import vl53l1x # Требуется библиотека vl53l1x.py

i2c = I2C(0, sda=Pin(21), scl=Pin(22))
sensor = vl53l1x.VL53L1X(i2c)

while True:
    print("Расстояние: {} мм".format(sensor.read()))

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

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