• Skip to primary navigation
  • Skip to main content
  • Skip to primary sidebar
  • Skip to secondary sidebar
  • Skip to footer

У Павла!

  • Контроллеры
    • Arduino
      • Приборы
      • Музыка
      • Проекты Arduino
      • Уроки Arduino
      • Игры на Arduino
      • Роботы на Ардуино
      • FLProg
    • Одноплатные ПК
      • Orange pi
      • Raspberry pi
        • Raspberry pi pico
        • Raspberry pi server
        • Проекты Raspberry pi
    • ESP
      • ESP8266
        • NodeMCU
      • ESP32
      • M5stack
    • Другие контроллеры
      • STM32
  • Умный дом
    • Home Assistant
      • Автоматизации
    • Tuya
    • Bluetooth
    • ESPHome
    • Frigate
    • Telegram
    • Яндекс
  • ЧПУ
  • 3d печать
  • Об авторе

Датчик расстояния VL53L0X (ToF) Работа с ним в ESPHome и в arduino ide

8 августа, 2024

 

Датчик расстояния: https://alii.pub/70is31?erid=2SDnjdNPP8N

ESP32: https://alii.pub/70f419?erid=2SDnje7AFhL

Прежде чем приступить к материалу, я Вас попрошу, если нравится то, что я делаю и хотите следить за моей деятельностью, то рекомендую подписаться на мой телеграмм канал: https://t.me/ypavla
Там я публикую новости о вышедших видео, статьях и разные устройства для умного дома и не только показываю.
Спасибо за внимание, теперь продолжим.

 

 

VL53L0X (ToF) это лазерный дальномер, который собственно измеряет расстояние своим лазером.

Характеристики устройства:

  1. Рабочее напряжение: 3,3 В или 5 В. Ток питания 10 мА. Пиковый ток может достигать 40 мА

  2. Расстояние: от 30 до 2000 мм.

  3. Точность определения дальности: ± 5 % (режим высокой скорости), ± 3 % (режим высокой точности).

  4. Время ранжирования (мин): 20 мс (режим высокой скорости), 200 мс (режим высокой точности).

  5. Угол обзора: 25 °.

  6. Длина волны лазера: 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подключается к GND
  • SCLподключает I2C SCL
  • SDAподключает I2C SDA
  • GPIO1не используется ESPHome
  • XSHUTподключается к свободному выводу 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

Primary Sidebar

Поиск

Новые записи

  • Автоматизация перезагрузки устройства по команде Ping.
  • Разблокирование и добавление шлюза Xiaomi gateway 3 в Home Assistant для управления Bluetooth устройствами из экосистемы Xiaomi Home (mihome)
  • Интеграция для локального управления (без интернета) ик пультом Tuya работающим по wifi из Home Assistant
  • Транслируем показания с Уличного Bluetooth Датчика температуры по BTHome на дисплей датчика температуры XIaomi LYWSD03MMC
  • Заставляем Bluetooth датчики температуры tuya и xiaomi отправлять данные по Zigbee в Home Assistant.

Официальный YouTube Канал M5Stack:

Подписывайтесь на Телеграм канал

https://t.me/ypavla

Подписаться на YouTube!

Secondary Sidebar




Подписывайтесь на Telegram Канал!

У Павла!

Footer

Copyright_У Павла! © 2025 ·