Обзор
VL53L0X — это компактный лазерный датчик измерения расстояния (Time-of-Flight), способный измерять дистанцию до 2 метров. В отличие от инфракрасных датчиков интенсивности, ToF-датчики измеряют время полета фотонов, что обеспечивает высокую точность независимо от цвета или отражающей способности объекта.
VL53L0X — один из самых популярных и доступных ToF-датчиков. Он сочетает в себе компактность, низкое энергопотребление и достаточную для большинства DIY-проектов дальность измерения (до 2000 мм). Идеально подходит для систем обхода препятствий и простого распознавания жестов.
О лазерном датчике VL53L0X
VL53L0X использует технологию ToF от компании STMicroelectronics. Он излучает невидимый лазерный импульс (Класс 1, безопасен для глаз) и замеряет время, за которое луч вернется обратно. Это позволяет получать точные данные в миллиметрах, в отличие от ультразвуковых датчиков, которые имеют широкое поле зрения и могут ошибаться из-за эха.
⚡ Ключевые особенности
- Высокая точность ToF – измерение не зависит от цвета объекта.
- ИК-лазер 940 нм – полная невидимость для человеческого глаза.
- Дальность до 2 метров – оптимально для роботов-пылесосов и дверных сенсоров.
- Интерфейс I2C – простая интеграция с большинством контроллеров.
🔗 Если вам нужна большая дальность (до 4 м), обратите внимание на VL53L1X.
Приобретите VL53L0X
Характеристики VL53L0X
Основные технические параметры датчика.
Распиновка VL53L0X
Модуль обычно имеет 6 выводов. Основные — это SDA/SCL для данных и питание.
- 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.
| Вывод VL53L0X | Куда | Вывод ESP32 | Описание |
|---|---|---|---|
| VIN Обяз. | → | 3V3 | Питание модуля. |
| GND Обяз. | → | GND | Общий минус. |
| SDA Обяз. | → | GPIO21 | Данные I2C. |
| SCL Обяз. | → | GPIO22 | Такты I2C. |
Отладка VL53L0X
Если датчик не работает, проверьте следующее.
Ошибка инициализации или 0 mm
Датчик не отвечает
Показания всегда 2000 мм (Max)
Объект не найден
Программирование VL53L0X
Готовые решения для различных сред.
Arduino IDE
С библиотекой Adafruit VL53L0X
C++
Arduino IDE
С библиотекой Adafruit VL53L0X
#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
ESPHome
Интеграция в Home Assistant
i2c:
sda: 21
scl: 22
sensor:
- platform: vl53l0x
name: "Расстояние"
update_interval: 1s
MicroPython
Код на Python
Python
MicroPython
Код на 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 в ваши проекты. Создавайте умные системы измерения с легкостью!