Датчик расстояния: https://alii.pub/70is31?erid=2SDnjdNPP8N
ESP32: https://alii.pub/70f419?erid=2SDnje7AFhL
Прежде чем приступить к материалу, я Вас попрошу, если нравится то, что я делаю и хотите следить за моей деятельностью, то рекомендую подписаться на мой телеграмм канал: https://t.me/ypavla
Там я публикую новости о вышедших видео, статьях и разные устройства для умного дома и не только показываю.
Спасибо за внимание, теперь продолжим.
VL53L0X (ToF) это лазерный дальномер, который собственно измеряет расстояние своим лазером.
Характеристики устройства:
-
Рабочее напряжение: 3,3 В или 5 В. Ток питания 10 мА. Пиковый ток может достигать 40 мА
-
Расстояние: от 30 до 2000 мм.
-
Точность определения дальности: ± 5 % (режим высокой скорости), ± 3 % (режим высокой точности).
-
Время ранжирования (мин): 20 мс (режим высокой скорости), 200 мс (режим высокой точности).
-
Угол обзора: 25 °.
-
Длина волны лазера: 940 нм.
Распиновка устройства:
PIN (пин, вывод) | Описание |
---|---|
VDD | Регулируемый выход 2,8 В. Почти 150 мА доступно для питания внешних компонентов. Если вы хотите обойти внутренний регулятор, вместо этого вы можете использовать этот вывод в качестве входа 2,8 В с отключенным VIN. |
VIN | Это основной источник питания от 2,6 до 5,5 В. Переключатели уровня SCL и SDA поднимают линии I²C высоко до этого уровня. |
GND | Заземление (0 В) для подключения вашего источника питания. |
SDA | Сдвинутая по уровню линия данных I²C: ВЫСОКИЙ (HIGH) это VIN, НИЗКИЙ (LOW) – это 0 В |
SCL | Линия синхронизации I²C со сдвигом уровня: ВЫСОКИЙ (HIGH) это VIN, НИЗКИЙ (LOW) – это 0 В |
XSHUT | Этот вывод является активным-низким входом отключения; плата тянет его до VDD, чтобы включить датчик по умолчанию. Низкий уровень этого вывода переводит датчик в аппаратный режим ожидания. Этот вход не смещен по уровню. |
GPIO1 | Программируемый выход прерывания (логический уровень VDD). Этот вывод не сдвинут по уровню. |
Где вообще можно использовать такое устройство? Ну например при пересечении такого лазера включать свет на лестнице. Еще как пример – включать дисплей планшета когда вы достигаете определенного расстояния.
Датчик очень дешевый, так что он заслуживает своей ценой то, чтоб его использовали.
Arduino IDE:
В Arduino ide работать с датчиком довольно просто. Для работы с датчиком нам понадобится библиотека Adafruit VL53L0X.
Для её подключения идём в Скетч-> подключить библиотеку -> Менеджер библиотек Далее находим эту библиотеку и устанавливаем её.
Ну и в этой библиотеке есть стандартные примеры которые работают с датчиком.
Идём в Файл-> примеры -> Adafruit VL53L0X
Данный пример по сути сразу выдаёт в монитор порта расстояние которое намерил датчик. Загружаем пример и смотрим на результат:
Ну а дальше с этими данными можно уже делать что угодно. Полёт фантазии огромный.
ESPHome:
Для ESPhome существует тоже пример работы с датчиком. А это в свою очередь сильно упрощает интеграцию датчика в умный дом, такой как Home Assistant.
Как подключать датчик к ESP32
VCC
подключается к 3V3 (3V3
будет выводить 3,3 В) или напрямую подключаетсяVCC
к 3,3 ВGND
подключается к GNDSCL
подключает I2C SCLSDA
подключает I2C SDAGPIO1
не используется ESPHomeXSHUT
подключается к свободному выводу GPIO. Включение/выключение устройства. Это необязательно, если на шине I²C есть только один датчик
У VL53L0X стандартный адрес i2c 0x29
используется по умолчанию.
Описание параметров которые могут быть использованы:
- update_interval (Необязательно) Интервал проверки датчика. По умолчанию
60s
. - signal_rate_limit (Необязательно) Установите предел скорости обратного сигнала в единицах MCPS (мегасчетов в секунду). Это минимальная амплитуда сигнала, обнаруженная датчиком, необходимая для того, чтобы он сообщил о допустимых показаниях. Установка более низкого значения может увеличить диапазон датчика, но также увеличивает вероятность получения неточных показаний. По умолчанию
0.25
. - long_range ( Необязательно , логическое значение): Установить датчик в режим большого диапазона. signal_rate_limit переопределяется на
0.1
. По умолчаниюfalse
. - address ( Необязательно , int): Вручную укажите адрес i2c датчика. По умолчанию
0x29
. Если указан адрес, отличный от0x29
, датчик будет динамически переадресован при запуске. Для динамической переадресации датчика требуетсяenable_pin
назначить переменную конфигурации. Если на одной шине i2c используется более одного датчика VL53L0X, для каждого датчика должен быть указан уникальный адрес. - enable_pin (Необязательно , Схема выводов ): вывод, подключенный к XSHUT на vl53l0x для включения/выключения датчика. Требуется, если не используется адрес
0x29
, что является причиной, если у вас есть несколько VL53L0X на одной шине i2c. В этом случае вам нужно назначить отдельный вывод для каждого VL53L0X. - timeout (Необязательно , Время ): Тайм-аут настройки датчика. По умолчанию
10ms
.
Ну и вот как выглядит в ESPHome пример подключения нескольких датчиков расстояния:
sensor:
- platform: vl53l0x
name: "distance1"
id: distance1
address: 0x41
enable_pin: GPIOXX
timeout: 200us
update_interval: 500ms
unit_of_measurement: "m"
- platform: vl53l0x
name: "distance2"
id: distance2
address: 0x42
enable_pin: GPIOXX
timeout: 200us
update_interval: 500ms
unit_of_measurement: "m"
И в Home Assistant параметр с датчика выглядят вот так:
P.S. Попрошу Вас подписаться на мой телеграм канал: https://t.me/ypavla
Реклама: ООО “АЛИБАБА.КОМ (РУ)” ИНН: 7703380158