|
|
(не показаны 32 промежуточные версии 2 участников) |
Строка 1: |
Строка 1: |
| {{DISPLAYTITLE:Подключение и настройка датчика присутствия людей LD2410C}}
| | = Подключение и настройка датчика присутствия людей LD2410C = |
| | Здесь будет рассмотрен весь процесс подключения, настройки и интеграции с Wiren Board / Home Assistant китайского датчика LD2410C от компании Hi-link, работающего по принципу радара. |
|
| |
|
| == Описание ==
| | = Материалы для изучения = |
| {{Wbincludes:Community}}
| |
| | |
| Автор статьи: [https://t.me/Paulstrong Paul Strong]
| |
| | |
| Здесь будет рассмотрен весь процесс подключения, настройки и интеграции с Wiren Board / Home Assistant китайского датчика HLK-LD2410C от компании Hi-link, работающего по принципу радара.
| |
| | |
| == Что это за датчик ==
| |
| Цитирую из [https://mysku.club/blog/aliexpress/ блока aliexpress]:
| |
| <blockquote>
| |
| HLK-LD2410 – радарный датчик присутствия человека с возможностью измерения расстояния и детектирования как движущихся, так и неподвижных объектов.
| |
| | |
| HLK-LD2410 работает по принципу FMCW радара и способен обнаруживать движущиеся и неподвижные объекты. HLK-LD2410 способен рассчитывать расстояние до объекта, максимальное заявленное расстояние обнаружения составляет 5 метров. Он имеет интерфейс UART для конфигурации и вывод GPIO, состояние которого меняется при обнаружении цели в соответствии с настройками чувствительности. Логический уровень UART и GPIO 3.3 в.
| |
| | |
| Угол обнаружения объекта по горизонтали и вертикали составляет 120 градусов.
| |
| Размер модуля всего 35*7 мм. Интерфейс UART и пин GPIO выведен на 5 контактную колодку с шагом 1,27 мм, разъемы с таким шагом распространены не широко, поэтому для отладки имеет смысл сразу заказать интерфейсную плату. Она содержит USB-Uart конвертер CH340 и стабилизатор напряжения AMS1117. Для подключения к компьютеру предусмотрен разъем micro-usb. Интерфейсная плата универсальна и подходит для разных радарных модулей, выпускаемых Hi-Link.
| |
| </blockquote>
| |
| | |
| == Материалы для изучения ==
| |
| В процессе изучения темы я подглядывал в "чужие" посты, должен сослаться на них. | | В процессе изучения темы я подглядывал в "чужие" посты, должен сослаться на них. |
| * https://mysku.club/blog/aliexpress/94494.html | | * https://mysku.club/blog/aliexpress/94494.html |
Строка 25: |
Строка 8: |
| * http://psenyukov.ru/%D0%B4%D0%B0%D1%82%D1%87%D0%B8%D0%BA-%D0%B4%D0%B2%D0%B8%D0%B6%D0%B5%D0%BD%D0%B8%D1%8F-%D0%B8-%D0%BF%D1%80%D0%B8%D1%81%D1%83%D1%82%D1%81%D1%82%D0%B2%D0%B8%D1%8F-hi-link-ld2410b/ | | * http://psenyukov.ru/%D0%B4%D0%B0%D1%82%D1%87%D0%B8%D0%BA-%D0%B4%D0%B2%D0%B8%D0%B6%D0%B5%D0%BD%D0%B8%D1%8F-%D0%B8-%D0%BF%D1%80%D0%B8%D1%81%D1%83%D1%82%D1%81%D1%82%D0%B2%D0%B8%D1%8F-hi-link-ld2410b/ |
|
| |
|
| == Подключение к PC ==
| | = Подключение к PC = |
| | Для подключения к PC нам понадобится конвертер USB-to-TTL |
| | [[Файл:619gfyV8V0L. AC UF894,1000 QL80 .jpg]] |
| | |
| | на датчике есть пять пинов: |
| | [[Файл:Screenshot from 2024-01-29 11-51-24.png]] |
|
| |
|
| <gallery mode="traditional" widths ="260px" heights="200px">
| |
| Image: 619gfyV8V0L. AC UF894,1000 QL80 .jpg| Для подключения к PC нам понадобится '''конвертер USB-to-TTL'''
| |
| Image: Screenshot from 2024-01-29 11-51-24.png| на датчике есть пять пинов
| |
| </gallery>
| |
|
| |
|
| # Подключаем TX датчика к RX конвертера | | # Подключаем TX датчика к RX конвертера |
Строка 36: |
Строка 20: |
| # Подключаем GND и VCC соответственно | | # Подключаем GND и VCC соответственно |
|
| |
|
| === Windows ===
| | Далее нам нужна софтина LD2410 Tool на английском языке (к сожалению, есть версия только для Windows), качнуть можно тут - https://drive.google.com/drive/folders/1p4dhbEJA3YubyIjIIC7wwVsSo8x29Fq- |
| Нам нужна софтина '''LD2410 Tool''' на английском языке (к сожалению, есть версия '''только для Windows'''), '''качнуть можно тут - https://drive.google.com/drive/folders/1p4dhbEJA3YubyIjIIC7wwVsSo8x29Fq-'''
| |
|
| |
|
| После подключения в диспетчере устройств должен появиться '''новый COM-порт'''. | | После подключения в диспетчере устройств должен появиться новый COM-порт. |
|
| |
|
| Теперь открываем софтину, выбираем нужный COM-порт и жмём "Connect", '''если ошибок не вылезло''' - значит Serial-подключение установлено успешно. | | Теперь открываем софтину, выбираем нужный COM-порт и жмём "Connect", если ошибок не вылезло - значит Serial-подключение установлено успешно. |
|
| |
|
| Если подключение установить не удалось - '''нужно разбираться с COM-портом''', возможно поможет рестарт софтины, или возможно вы уже открыли этот COM-порт в другой софтине, ошибка подключения будет выглядеть примерно так: | | Если подключение установить не удалось - нужно разбираться с COM-портом, возможно поможет рестарт софтины, или возможно вы уже открыли этот COM-порт в другой софтине, ошибка подключения будет выглядеть примерно так: |
| | [[Файл:8c5607a51462e4b110f6527fb88de774b963a13d.png]] |
|
| |
|
| [[Image:8c5607a51462e4b110f6527fb88de774b963a13d.png|600px]]
| | Теперь нам нужно отрегулировать расстояние, в пределах которого будет работать датчик. По умолчанию датчик работает диапазонами по 0.75м, всего есть 8 диапазонов: |
| | # 0.0m-0m.75m |
| | # 0.75m-1.5m |
| | # 1.5m-2.25m |
| | # 2.25m-3.0m |
| | # 3.0m-3.75m |
| | # 3.75m - 4.5m |
| | # 4.5m-5.25m |
| | # 5.25m-6.0m |
|
| |
|
| Теперь нам нужно отрегулировать расстояние, в пределах которого будет работать датчик. По умолчанию датчик работает диапазонами по '''0.75м''', всего есть '''8 диапазонов''':
| | Мы можем настраивать расстояние между 2 и 8 включительно, то есть отключить сканирование расстояния меньше 0.7m невозможно чисто технически, оно всегда сканируется. |
| {| border="1" class="wikitable"
| |
| ! № || нижняя граница, м || верхняя граница, м
| |
| |-
| |
| | '''1''' || 0 || 0.75
| |
| |-
| |
| | '''2''' || 0.75 || 1.5
| |
| |-
| |
| | '''3''' || 1.5 || 2.25
| |
| |-
| |
| | '''4''' || 2.25 || 3
| |
| |-
| |
| | '''5''' || 3 || 3.75
| |
| |-
| |
| | '''6''' || 3.75 || 4.5
| |
| |-
| |
| | '''7''' || 4.5 || 5.25
| |
| |-
| |
| | '''8''' || 5.25 || 6
| |
| |-
| |
| |}
| |
| | |
| Мы можем настраивать расстояние между 2 и 8 включительно, то есть отключить сканирование расстояния меньше 1.5m невозможно чисто технически, оно всегда сканируется. | |
|
| |
|
| Например, если мы хотим "мониторить" расстояние не более 3м, тогда записываем значения: | | Например, если мы хотим "мониторить" расстояние не более 3м, тогда записываем значения: |
| {| border="1" class="wikitable"
| | * Moving Max - 4 |
| ! настройка || значение
| | * Motionless Max - 4 |
| |-
| |
| | '''Moving Max. RG''' || 4
| |
| |-
| |
| | '''Motionless Max. RG''' || 4
| |
| |-
| |
| |}
| |
|
| |
|
| Теперь можем жать кнопку Start и сможем наблюдать за изменениями на графиках - по ним можно понять как датчик реагирует на ваше присутствие: | | Теперь можем жать кнопку Start и сможем наблюдать за изменениями на графиках - по ним можно понять как датчик реагирует на ваше присутствие: |
| | | * если круг зеленого цвета - значит датчик вас не видит, если красный/пурпурный - значит датчик видит ваше присутствие/движение |
| если круг '''зеленого''' цвета - значит датчик '''вас не видит''' | |
| | |
| [[Image:Снимок экрана 2024-01-29 184202.jpg|600px]]
| |
| | |
| | |
| если '''пурпурный''' - значит датчик '''видит''' ваше '''присутствие''' | |
| | |
| [[Image:Снимок экрана 2024-01-29 184347.jpg|600px]]
| |
| | |
| если '''красный''' - значит датчик '''видит''' ваше '''движение'''
| |
| | |
| [[Image:Снимок экрана 2024-01-29 184518.jpg|600px]]
| |
| | |
| * в верхней части есть также расстояние до вас, вы можете постепенно удаляться от датчика и в какой-то момент отсчёт расстояния прекратится, спустя несколько секунд круг станет зеленым, т.к. датчик больше вас не видит (ранее мы настроили датчик на максимальное расстояние 3м) | | * в верхней части есть также расстояние до вас, вы можете постепенно удаляться от датчика и в какой-то момент отсчёт расстояния прекратится, спустя несколько секунд круг станет зеленым, т.к. датчик больше вас не видит (ранее мы настроили датчик на максимальное расстояние 3м) |
|
| |
|
| У датчика есть также тонкие настройки чувствительности во всех 8ми зонах, но я не вникал в это очень глубоко, настроек по умолчанию мне хватило чтобы решить свою задачу. | | У датчика есть также тонкие настройки чувствительности во всех 8ми зонах, но я не вникал в это очень глубоко, настроек по умолчанию мне хватило чтобы решить свою задачу. |
|
| |
|
| === Linux ===
| | = Подключение к ESP32 = |
| Есть вот такая хорошая страничка - https://ld2410.albert.nz/ - вместо софта можно пользоваться этим сайтом для настройки датчика.
| |
| | |
| == Настройка через bluetooth ==
| |
| Вобще-то я рассчитывал получить модуль с синим зубом, но не то заказал. Есть хочется без ноута на месте через мобилу расстояние поднастроить, то надо брать такое:
| |
| | |
| [[Image:Снимок экрана 2024-01-29 210801.jpg|300px]]
| |
| | |
| Далее нужно использовать мобильное приложение '''HLKRadarTool''' для подключения к датчику.
| |
| | |
| == Подключение к ESP32 ==
| |
| Далее будет рассмотрен процесс прошивки контроллера ESP32, для этих целей у меня всегда есть полноценная dev-плата ESP32 WROOM32 Devkit 38P. | | Далее будет рассмотрен процесс прошивки контроллера ESP32, для этих целей у меня всегда есть полноценная dev-плата ESP32 WROOM32 Devkit 38P. |
|
| |
|
| Подключаем пины датчика к esp32 (да, я использовать не стандартные RX/TX пины, мне так надо было, вы можете использовать другие пины по своему усмотрению): | | Подключаем пины датчика к esp32: |
| #5V контроллера к VCC датчика | | #5V контроллера к VCC датчика |
| #GND | | #GND |
Строка 121: |
Строка 62: |
| Далее подразумевается, что у вас уже есть система Home Assistant с подключенным ESPHOME. | | Далее подразумевается, что у вас уже есть система Home Assistant с подключенным ESPHOME. |
|
| |
|
| Создаём новое устройство с базовым конфигом (адрес 192.168.0.100 указан с учетом IP-адреса, закрепленного на роутере за MAC-адресом WiFi интерфейса платы с ESP32): | | Создаём новое устройство с базовым конфигом: |
| <syntaxhighlight lang="yaml"> | | <syntaxhighlight lang="yaml"> |
| esphome: | | esphome: |
Строка 182: |
Строка 123: |
| # на базе платформы ld2410 создаём бинарный сенсор с датчиком присутствия | | # на базе платформы ld2410 создаём бинарный сенсор с датчиком присутствия |
|
| |
|
| после заливки прошивки появится новое устройство с соответствующим сенсором, его можно найти тут "Настройки > Устройства и службы > Устройства" | | после заливки прошивки появится новое устройство с соответствующим сенсором. |
| | |
| [[Image:Снимок экрана 2024-01-29 210041.jpg]]
| |
| | |
| == Интеграция с Wiren Board ==
| |
| Для трансляции значений в контроллер Wiren Board нам понадобится виртуальное устройство, чтобы мы могли в его топики передавать значения через MQTT.
| |
| | |
| == Создаём виртуальное устройство ==
| |
| <syntaxhighlight lang="javascript">
| |
| defineVirtualDevice('virtual-garderob', {
| |
| title: 'virtual-garderob' ,
| |
| cells: {
| |
| presence_sensor: {
| |
| title: "датчик присутствия",
| |
| type: "alarm",
| |
| value: false,
| |
| },
| |
| }
| |
| })
| |
| </syntaxhighlight>
| |
| | |
| === Получаем имя топика ===
| |
| В веб-интерфейсе Wiren Board в разделе "Настройки -> MQTT топики" ищем наше виртуальное устройство и копируем значение топика (например, /devices/virtual-garderob/controls/presence_sensor)
| |
| | |
| === Добавляем в конфиг esphome ===
| |
| ранее мы описывали бинарный сенсор - его нужно дополнить полем id (это нужно чтобы в lambda-функции можно было получение значение сенсора):
| |
| <syntaxhighlight lang="yaml">
| |
| binary_sensor:
| |
| - platform: ld2410
| |
| has_target:
| |
| name: Presence
| |
| id: esp_garderob_presence
| |
| on_state:
| |
| then:
| |
| - mqtt.publish:
| |
| topic: /devices/virtual-garderob/controls/presence_sensor
| |
| payload: !lambda |-
| |
| return id(esp_garderob_presence).state ? "1" : "0";
| |
| | |
| mqtt:
| |
| broker: 10.50.0.253
| |
| </syntaxhighlight>
| |
| | |
| что мы сделали:
| |
| #добавили id к сенсору
| |
| #описали mqtt-брокера
| |
| #создали триггер on_state, срабатывающий при изменении значения сенсора, используем функцию mqtt.publish для отправки данных в Wiren Board
| |
| | |
| Теперь можно пойти в раздел устройств в интерфейсе Wiren Board и увидеть такое:
| |
| | |
| [[Файл:Screenshot from 2024-01-29 13-17-22.png]]
| |
| | |
| Когда датчик сработает, то будет выглядеть так:
| |
| | |
| [[Файл:Screenshot from 2024-01-29 13-17-47.png]]
| |
| | |
| Таким образом, можно использовать wb-rules для автоматизации, или какой-то другой софт.
| |
| | |
| == Автоматизация освещения ==
| |
| Совсем коротко про автоматизацию (как это сделал я):
| |
| * всё освещение у меня уже прокинуто в Home Assistant при помощи wb-engine (https://github.com/4mr/wb-engine)
| |
| * установлен node red с модулем node-red-contrib-home-assistant-websocket и node-red-contrib-wirenboard
| |
| | |
| Добавляем компонент [[Image:Снимок экрана 2024-01-29 194609.jpg]] (отлавливает изменение состояния выбранного объекта)
| |
| | |
| [[Файл:Screenshot from 2024-01-29 13-40-40.png]]
| |
| | |
| если вы используете компонент первый раз - нужно добавить сервер home assistant (если NR крутится внутри HA, тогда, по идее, это можно пропустить)
| |
| | |
| [[Файл:Screenshot from 2024-01-29 13-32-32.png]]
| |
| | |
| указываем объект сенсора
| |
| | |
| [[Файл:Screenshot from 2024-01-29 13-42-59.png]]
| |
| | |
| добавляем второй компонент - [[Image:Снимок экрана 2024-01-29 194624.jpg]]
| |
| | |
| [[Image:Screenshot_from_2024-01-29_13-40-02.png]]
| |
| | |
| если вы используете компонент первый раз - нужно добавить сервер wiren board
| |
| | |
| [[Image:Screenshot from 2024-01-29 13-38-30.png]]
| |
| | |
| указываем "светильник"
| |
| | |
| [[Image:Screenshot from 2024-01-29 13-44-41.png]]
| |
| | |
| соединяем компоненты:
| |
| | |
| [[Image:Screenshot from 2024-01-29 13-57-36.png]]
| |
| | |
| Далее жмём "Deploy". Теперь при обнаружении присутствия человека в гардеробе будет зажигаться соответствующая группа освещения.
| |
| | |
| == Автономное подключение ==
| |
| У датчика есть OUT-пин, на котором появляется напряжение 3V в случае обнаружения объекта, таким образом, можно приколхозить какое-то реле и управлять освещением автономно, без контроллера УД, мне это было не нужно - поэтому особо не изучал, но эта задача кажется сильно проще чем подключение к HA/WB.
| |
| | |
| Например, может подойти один из модулей реле (тут надо смотреть, что в действительности выдаёт датчик на пине OUT):
| |
| <gallery mode="traditional" widths ="260px" heights="200px">
| |
| Image: Screenshot from 2024-01-29 11-41-12.png | реле 3V
| |
| Image: Odnokanalnoe-rele.jpg | реле 5V
| |
| </gallery>
| |
| | |
| == Подключение по RS-485 / Modbus RTU ==
| |
| Для этого понадобится модуль MAX485
| |
| | |
| [[Image:Max485.jpg]]
| |
| | |
| Подключение делаем так:
| |
| | |
| {| border="1" class="wikitable"
| |
| ! '''ld2410''' || '''esp32''' || '''описание'''
| |
| |-
| |
| | VCC || 3V || max485 питается от 3V
| |
| |-
| |
| | GND || GND || земля
| |
| |-
| |
| | DI || IO32 || передача по uart от esp32 в сторону max485
| |
| |-
| |
| | RO || IO33 || передача по uart от max485 в сторону esp32
| |
| |-
| |
| | DE/RE || IO25 || пин контроля направления приёма/передачи
| |
| |-
| |
| |}
| |
| | |
| моя breadbort плата в момент разработки выглядела так:
| |
| | |
| [[Image:Ld2410c-modbus-rtu МП.png|600px]]
| |
| | |
| Прошивка в этом случае будет уже не от ESP32, будем делать свой скетч (весь код загружен сюда https://github.com/goosecrew/ld2410-modbus-slave.git)
| |
| | |
| Использовал три разных Serial:
| |
| * Serial - uart на microUSB (можно смотреть логи и посылать команды для просмотра показаний датчика в консоли, настраивать датчик, перезапускать, делать сброс и т.д.)
| |
| * Serial1 - uart max485
| |
| * Serial2 - uart ld2410
| |
| | |
| Описание input-регистров (показания датчика):
| |
| {| border="1" class="wikitable"
| |
| ! '''№ регистра''' || '''тип регистра''' || '''описание'''
| |
| |-
| |
| | 0 || input || метрика "присутствие"
| |
| |-
| |
| | 1 || input || метрика "неподвижность"
| |
| |-
| |
| | 2 || input || метрика "движение"
| |
| |-
| |
| | 3 || input || расстояние до неподвижного объекта
| |
| |-
| |
| | 4 || input || энергия неподвижного объекта
| |
| |-
| |
| | 5 || input || расстояние до движущегося объекта
| |
| |-
| |
| | 6 || input || энергия движущегося объекта
| |
| |-
| |
| |}
| |
| | |
| Описание holding-регистров (чтение и изменение настроек):
| |
| {| border="1" class="wikitable"
| |
| ! '''№ регистра''' || '''тип регистра''' || '''описание'''
| |
| |-
| |
| | 100 || holding || modbus serial slave id
| |
| |-
| |
| | 101 || holding || modbus serial stop bits
| |
| |-
| |
| | 102 || holding || modbus serial baudrate
| |
| |-
| |
| | 103 || holding || максимальное расстояние до движущегося объекта
| |
| |-
| |
| | 104 || holding || максимальное расстояние до неподвижного объекта
| |
| |-
| |
| | 105 || holding || idle time
| |
| |-
| |
| |}
| |
| | |
| '''ВАЖНО! После изменения настроек modbus необходимо перезапустить esp32!'''
| |
| | |
| == Шаблон для Wiren Board ==
| |
| | |
| Шаблон для контроллера Wiren Board лежит на гитхабе в папке wirenboard (https://github.com/goosecrew/ld2410-modbus-slave/blob/main/wirenboard/LD-2410.json).
| |
| | |
| Вот что получилось на выходе:
| |
| <gallery mode="traditional" widths ="260px" heights="200px">
| |
| Image: Снимок экрана 2024-02-01 003946.jpg|
| |
| Image: Снимок экрана 2024-02-01 004047.jpg|
| |
| </gallery>
| |
| | |
| <gallery mode="traditional" widths ="260px" heights="200px">
| |
| Image: Снимок экрана 2024-02-01 003507.jpg|
| |
| Image: Снимок экрана 2024-02-01 003637.jpg|
| |
| </gallery>
| |
| | |
| == Изменение параметров подключения к Modbus ==
| |
| Изменять параметры можно как с помощью веб-интерфейса Wiren Board (настройка Serial-устройств), так и с помощью modbus_client.
| |
| | |
| '''Изменение адреса - регистр 100, значение по умолчанию 1''' - https://wirenboard.com/wiki/Wiren_Board_Device_Modbus_Address#Изменение_адреса_устройству_с_известным_адресом.
| |
| | |
| '''Изменение количества стоповых бит - регистр 101, значение по умолчанию 2'''.
| |
| | |
| '''Изменение скорости - регистр 102, значение по умолчанию 96''' (значение скорости делим на 100 перед записью, то есть 9600 посылать как 96, а 115200 посылать как 1152 и т.д).
| |
| | |
| == Питание от 12/24V ==
| |
| С учётом того, что в Wiren Board обычно используется напряжение 12/24V, чтобы запитать ESP32 - нужно будет еще добавить модуль для понижения постоянного напряжения до 5V, здесь я это не рассматриваю, но нужно обязательно помнить:
| |
| | |
| '''!!! ESP32 работает от 5V, датчик работает от 5V, MAX485 работает от 3.3/5V !!! Не подавайте на ESP32 12/24V - сожжёте! :)'''
| |
| | |
| | |
|
| |
|
| == Печать корпуса для беспроводной версии == | | = Интеграция с Wiren Board = |
| В конечном счёте я решил свою задачу - как датчик работает мне очень нравится, всё точно, никаких ложных срабатываний по сравнению с PIR датчиком, поэтому я решил финализировать решение, заказал себе ESP32C3 (на свой страх и риск, т.к. разработчики ESPHOME не гарантируют корректную работу на C3, но вроде пишут что всё норм встаёт) и нашёл на просторах сети пару халявных схем для 3D-принтера, отдал другу, и вот какой результат получился:
| | # Создаём виртуальное устройство |
| | # Получаем имя топика |
| | # Добавляем в конфиг esphome |
|
| |
|
| <gallery mode="traditional" widths ="260px" heights="200px">
| | = Автономное подключение = |
| Image: Ld2410-case-1.jpeg|
| | Для подключения нам понадобится модуль реле, срабатывающий от 3V, например, что-то такое: |
| Image: Ld2410-case-2.jpeg|
| | [[Файл:Screenshot from 2024-01-29 11-41-12.png]] |
| </gallery>
| |
|
| |
|
| ссылки на схемы:
| | = Печать корпуса = |
| * https://www.printables.com/model/582630-case-for-esp32-c3-super-mini-and-ld2410c/files | | * https://www.printables.com/model/582630-case-for-esp32-c3-super-mini-and-ld2410c/files |
| * https://cults3d.com/en/3d-model/gadget/ld2410-box-proto-type | | * https://cults3d.com/en/3d-model/gadget/ld2410-box-proto-type |
Подключение и настройка датчика присутствия людей LD2410C
Здесь будет рассмотрен весь процесс подключения, настройки и интеграции с Wiren Board / Home Assistant китайского датчика LD2410C от компании Hi-link, работающего по принципу радара.
Материалы для изучения
В процессе изучения темы я подглядывал в "чужие" посты, должен сослаться на них.
Подключение к PC
Для подключения к PC нам понадобится конвертер USB-to-TTL
на датчике есть пять пинов:
- Подключаем TX датчика к RX конвертера
- Подключаем RX датчика к TX конвертера
- Подключаем GND и VCC соответственно
Далее нам нужна софтина LD2410 Tool на английском языке (к сожалению, есть версия только для Windows), качнуть можно тут - https://drive.google.com/drive/folders/1p4dhbEJA3YubyIjIIC7wwVsSo8x29Fq-
После подключения в диспетчере устройств должен появиться новый COM-порт.
Теперь открываем софтину, выбираем нужный COM-порт и жмём "Connect", если ошибок не вылезло - значит Serial-подключение установлено успешно.
Если подключение установить не удалось - нужно разбираться с COM-портом, возможно поможет рестарт софтины, или возможно вы уже открыли этот COM-порт в другой софтине, ошибка подключения будет выглядеть примерно так:
Теперь нам нужно отрегулировать расстояние, в пределах которого будет работать датчик. По умолчанию датчик работает диапазонами по 0.75м, всего есть 8 диапазонов:
- 0.0m-0m.75m
- 0.75m-1.5m
- 1.5m-2.25m
- 2.25m-3.0m
- 3.0m-3.75m
- 3.75m - 4.5m
- 4.5m-5.25m
- 5.25m-6.0m
Мы можем настраивать расстояние между 2 и 8 включительно, то есть отключить сканирование расстояния меньше 0.7m невозможно чисто технически, оно всегда сканируется.
Например, если мы хотим "мониторить" расстояние не более 3м, тогда записываем значения:
- Moving Max - 4
- Motionless Max - 4
Теперь можем жать кнопку Start и сможем наблюдать за изменениями на графиках - по ним можно понять как датчик реагирует на ваше присутствие:
- если круг зеленого цвета - значит датчик вас не видит, если красный/пурпурный - значит датчик видит ваше присутствие/движение
- в верхней части есть также расстояние до вас, вы можете постепенно удаляться от датчика и в какой-то момент отсчёт расстояния прекратится, спустя несколько секунд круг станет зеленым, т.к. датчик больше вас не видит (ранее мы настроили датчик на максимальное расстояние 3м)
У датчика есть также тонкие настройки чувствительности во всех 8ми зонах, но я не вникал в это очень глубоко, настроек по умолчанию мне хватило чтобы решить свою задачу.
Подключение к ESP32
Далее будет рассмотрен процесс прошивки контроллера ESP32, для этих целей у меня всегда есть полноценная dev-плата ESP32 WROOM32 Devkit 38P.
Подключаем пины датчика к esp32:
- 5V контроллера к VCC датчика
- GND
- GPIO27 - RX датчика
- GPIO26 - TX датчика
Далее подразумевается, что у вас уже есть система Home Assistant с подключенным ESPHOME.
Создаём новое устройство с базовым конфигом:
esphome:
name: esp-garderob
friendly_name: esp-garderob
esp32:
board: esp32dev
framework:
type: arduino
# Enable logging
logger:
# Enable Home Assistant API
api:
encryption:
key: "ylD7gSnCct8R2g+Ff2nlYZJCOesBngFNln0ulJGOnwM="
ota:
password: "2d292b8425334046760b741090ee1c3f"
wifi:
ssid: !secret wifi_ssid
password: !secret wifi_password
use_address: 192.168.0.100
# Enable fallback hotspot (captive portal) in case wifi connection fails
ap:
ssid: "Esp-Garderob Fallback Hotspot"
password: "FKaeqKHsRMdF"
captive_portal:
Далее открываем и изучаем документацию https://esphome.io/components/sensor/ld2410.html
Я перепробовал там все вариации конфигов, лично у меня так и не взлетело редактирование настроек из Home Assistant, а точней, там даже текущие значения не считываются после рестарта esp32, в итоге я выкинул всё лишнее - оставил только бинарный сенсор присутствия:
uart:
tx_pin: 27
rx_pin: 26
baud_rate: 256000
parity: NONE
stop_bits: 1
ld2410:
throttle: 300ms
binary_sensor:
- platform: ld2410
has_target:
name: Presence
что здесь можно увидеть:
- мы указали настройки UART, соответствующие тем пинам, на которые мы подключили наш датчик
- создаём платформу ld2410 и указываем таймаут для цикла, который опрашивает датчик
- на базе платформы ld2410 создаём бинарный сенсор с датчиком присутствия
после заливки прошивки появится новое устройство с соответствующим сенсором.
Интеграция с Wiren Board
- Создаём виртуальное устройство
- Получаем имя топика
- Добавляем в конфиг esphome
Автономное подключение
Для подключения нам понадобится модуль реле, срабатывающий от 3V, например, что-то такое:
Печать корпуса