Human Presence Radar Module Kit LD2410: различия между версиями
(не показано 27 промежуточных версий 2 участников) | |||
Строка 1: | Строка 1: | ||
= Подключение и настройка датчика присутствия людей LD2410C = | |||
Здесь будет рассмотрен весь процесс подключения, настройки и интеграции с Wiren Board / Home Assistant китайского датчика LD2410C от компании Hi-link, работающего по принципу радара. | |||
= Материалы для изучения = | |||
В процессе изучения темы я подглядывал в "чужие" посты, должен сослаться на них. | В процессе изучения темы я подглядывал в "чужие" посты, должен сослаться на них. | ||
* 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 нам понадобится конвертер USB-to-TTL | |||
[[Файл:619gfyV8V0L. AC UF894,1000 QL80 .jpg]] | |||
на датчике есть пять пинов: | |||
[[Файл:Screenshot from 2024-01-29 11-51-24.png]] | |||
# Подключаем TX датчика к RX конвертера | # Подключаем TX датчика к RX конвертера | ||
Строка 36: | Строка 20: | ||
# Подключаем GND и VCC соответственно | # Подключаем GND и VCC соответственно | ||
Далее нам нужна софтина LD2410 Tool на английском языке (к сожалению, есть версия только для Windows), качнуть можно тут - https://drive.google.com/drive/folders/1p4dhbEJA3YubyIjIIC7wwVsSo8x29Fq- | |||
После подключения в диспетчере устройств должен появиться новый COM-порт. | |||
Теперь открываем софтину, выбираем нужный COM-порт и жмём "Connect", если ошибок не вылезло - значит Serial-подключение установлено успешно. | |||
[[ | Если подключение установить не удалось - нужно разбираться с COM-портом, возможно поможет рестарт софтины, или возможно вы уже открыли этот COM-порт в другой софтине, ошибка подключения будет выглядеть примерно так: | ||
[[Файл:8c5607a51462e4b110f6527fb88de774b963a13d.png]] | |||
Теперь нам нужно отрегулировать расстояние, в пределах которого будет работать датчик. По умолчанию датчик работает диапазонами по | Теперь нам нужно отрегулировать расстояние, в пределах которого будет работать датчик. По умолчанию датчик работает диапазонами по 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 включительно, то есть отключить сканирование расстояния меньше 1.5m невозможно чисто технически, оно всегда сканируется. | Мы можем настраивать расстояние между 2 и 8 включительно, то есть отключить сканирование расстояния меньше 1.5m невозможно чисто технически, оно всегда сканируется. | ||
Например, если мы хотим "мониторить" расстояние не более 3м, тогда записываем значения: | Например, если мы хотим "мониторить" расстояние не более 3м, тогда записываем значения: | ||
* Moving Max - 4 | |||
* Motionless Max - 4 | |||
Теперь можем жать кнопку Start и сможем наблюдать за изменениями на графиках - по ним можно понять как датчик реагирует на ваше присутствие: | Теперь можем жать кнопку Start и сможем наблюдать за изменениями на графиках - по ним можно понять как датчик реагирует на ваше присутствие: | ||
* если круг зеленого цвета - значит датчик вас не видит ваше присутствие/движение, если красный/пурпурный - значит датчик видит ваше присутствие/движение | |||
если круг | |||
если | |||
* в верхней части есть также расстояние до вас, вы можете постепенно удаляться от датчика и в какой-то момент отсчёт расстояния прекратится, спустя несколько секунд круг станет зеленым, т.к. датчик больше вас не видит (ранее мы настроили датчик на максимальное расстояние 3м) | * в верхней части есть также расстояние до вас, вы можете постепенно удаляться от датчика и в какой-то момент отсчёт расстояния прекратится, спустя несколько секунд круг станет зеленым, т.к. датчик больше вас не видит (ранее мы настроили датчик на максимальное расстояние 3м) | ||
У датчика есть также тонкие настройки чувствительности во всех 8ми зонах, но я не вникал в это очень глубоко, настроек по умолчанию мне хватило чтобы решить свою задачу. | У датчика есть также тонкие настройки чувствительности во всех 8ми зонах, но я не вникал в это очень глубоко, настроек по умолчанию мне хватило чтобы решить свою задачу. | ||
= | = Пользователям Linux = | ||
Есть вот такая хорошая страничка - https://ld2410.albert.nz/ - вместо софта можно пользоваться этим сайтом для настройки датчика. | Есть вот такая хорошая страничка - https://ld2410.albert.nz/ - вместо софта можно пользоваться этим сайтом для настройки датчика. | ||
= Подключение к ESP32 = | |||
Далее будет рассмотрен процесс прошивки контроллера ESP32, для этих целей у меня всегда есть полноценная dev-плата ESP32 WROOM32 Devkit 38P. | Далее будет рассмотрен процесс прошивки контроллера ESP32, для этих целей у меня всегда есть полноценная dev-плата ESP32 WROOM32 Devkit 38P. | ||
Строка 121: | Строка 65: | ||
Далее подразумевается, что у вас уже есть система Home Assistant с подключенным ESPHOME. | Далее подразумевается, что у вас уже есть система Home Assistant с подключенным ESPHOME. | ||
Создаём новое устройство с базовым конфигом | Создаём новое устройство с базовым конфигом: | ||
<syntaxhighlight lang="yaml"> | <syntaxhighlight lang="yaml"> | ||
esphome: | esphome: | ||
Строка 182: | Строка 126: | ||
# на базе платформы ld2410 создаём бинарный сенсор с датчиком присутствия | # на базе платформы ld2410 создаём бинарный сенсор с датчиком присутствия | ||
после заливки прошивки появится новое устройство с соответствующим сенсором | после заливки прошивки появится новое устройство с соответствующим сенсором. | ||
= Интеграция с Wiren Board = | |||
Для трансляции значений в контроллер Wiren Board нам понадобится виртуальное устройство, чтобы мы могли в его топики передавать значения через MQTT. | Для трансляции значений в контроллер Wiren Board нам понадобится виртуальное устройство, чтобы мы могли в его топики передавать значения через MQTT. | ||
Строка 203: | Строка 145: | ||
</syntaxhighlight> | </syntaxhighlight> | ||
== Получаем имя топика == | |||
В веб-интерфейсе Wiren Board в разделе "Настройки -> MQTT топики" ищем наше виртуальное устройство и копируем значение топика (например, /devices/virtual-garderob/controls/presence_sensor) | В веб-интерфейсе Wiren Board в разделе "Настройки -> MQTT топики" ищем наше виртуальное устройство и копируем значение топика (например, /devices/virtual-garderob/controls/presence_sensor) | ||
== Добавляем в конфиг esphome == | |||
ранее мы описывали бинарный сенсор - его нужно дополнить полем id (это нужно чтобы в lambda-функции можно было получение значение сенсора): | ранее мы описывали бинарный сенсор - его нужно дополнить полем id (это нужно чтобы в lambda-функции можно было получение значение сенсора): | ||
<syntaxhighlight lang="yaml"> | <syntaxhighlight lang="yaml"> | ||
Строка 231: | Строка 173: | ||
Теперь можно пойти в раздел устройств в интерфейсе Wiren Board и увидеть такое: | Теперь можно пойти в раздел устройств в интерфейсе Wiren Board и увидеть такое: | ||
[[Файл:Screenshot from 2024-01-29 13-17-22.png]] | [[Файл:Screenshot from 2024-01-29 13-17-22.png]] | ||
Когда датчик сработает, то будет выглядеть так: | Когда датчик сработает, то будет выглядеть так: | ||
[[Файл:Screenshot from 2024-01-29 13-17-47.png]] | [[Файл:Screenshot from 2024-01-29 13-17-47.png]] | ||
Таким образом, можно использовать wb-rules для автоматизации, или какой-то другой софт. | Таким образом, можно использовать wb-rules для автоматизации, или какой-то другой софт. | ||
= Автоматизация освещения = | |||
Совсем коротко про автоматизацию (как это сделал я): | Совсем коротко про автоматизацию (как это сделал я): | ||
* всё освещение у меня уже прокинуто в Home Assistant при помощи wb-engine (https://github.com/4mr/wb-engine) | * всё освещение у меня уже прокинуто в Home Assistant при помощи wb-engine (https://github.com/4mr/wb-engine) | ||
* установлен node red с модулем node-red-contrib-home-assistant-websocket и node-red-contrib-wirenboard | * установлен node red с модулем node-red-contrib-home-assistant-websocket и node-red-contrib-wirenboard | ||
Добавляем компонент | Добавляем компонент "events: state" (отлавливает изменение состояния выбранного объекта) | ||
[[Файл:Screenshot from 2024-01-29 13-40-40.png]] | [[Файл:Screenshot from 2024-01-29 13-40-40.png]] | ||
если вы используете компонент первый раз - нужно добавить сервер home assistant (если NR крутится внутри HA, тогда, по идее, это можно пропустить) | если вы используете компонент первый раз - нужно добавить сервер home assistant (если NR крутится внутри HA, тогда, по идее, это можно пропустить) | ||
[[Файл:Screenshot from 2024-01-29 13-32-32.png]] | [[Файл:Screenshot from 2024-01-29 13-32-32.png]] | ||
указываем объект сенсора | указываем объект сенсора | ||
[[Файл:Screenshot from 2024-01-29 13-42-59.png]] | [[Файл:Screenshot from 2024-01-29 13-42-59.png]] | ||
добавляем второй компонент - [[ | добавляем второй компонент - "wb: out" | ||
[[https://wirenboard.com/wiki/%D0%A4%D0%B0%D0%B9%D0%BB:Screenshot_from_2024-01-29_13-40-02.png]] | |||
если вы используете компонент первый раз - нужно добавить сервер wiren board | если вы используете компонент первый раз - нужно добавить сервер wiren board | ||
[[Файл:Screenshot from 2024-01-29 13-38-30.png]] | |||
указываем "светильник" | указываем "светильник" | ||
[[Файл:Screenshot from 2024-01-29 13-44-41.png]] | |||
Далее жмём "Deploy". Теперь при обнаружении присутствия человека в гардеробе будет зажигаться соответствующая группа освещения. | |||
= Автономное подключение = | |||
У датчика есть OUT-пин, на котором появляется напряжение 3V в случае обнаружения объекта, таким образом, можно приколхозить какое-то реле и управлять освещением автономно, без контроллера УД, мне это было не нужно - поэтому особо не изучал, но эта задача кажется сильно проще чем подключение к HA/WB. | У датчика есть OUT-пин, на котором появляется напряжение 3V в случае обнаружения объекта, таким образом, можно приколхозить какое-то реле и управлять освещением автономно, без контроллера УД, мне это было не нужно - поэтому особо не изучал, но эта задача кажется сильно проще чем подключение к HA/WB. | ||
Например, может подойти один из модулей реле (тут надо смотреть, что в действительности выдаёт датчик на пине OUT): | Например, может подойти один из модулей реле (тут надо смотреть, что в действительности выдаёт датчик на пине OUT): | ||
[[Файл:Screenshot from 2024-01-29 11-41-12.png]] | |||
[[Файл:Odnokanalnoe-rele.jpg]] | |||
[[ | |||
= Печать корпуса = | |||
В конечном счёте я решил свою задачу - как датчик работает мне очень нравится, всё точно, никаких ложных срабатываний по сравнению с PIR датчиком, поэтому я решил финализировать решение, заказал себе ESP32C3 (на свой страх и риск, т.к. разработчики ESPHOME не гарантируют корректную работу на C3, но вроде пишут что всё норм встаёт) и нашёл на просторах сети пару халявных схем для 3D-принтера, отдал другу, и вот какой результат получился: | В конечном счёте я решил свою задачу - как датчик работает мне очень нравится, всё точно, никаких ложных срабатываний по сравнению с PIR датчиком, поэтому я решил финализировать решение, заказал себе ESP32C3 (на свой страх и риск, т.к. разработчики ESPHOME не гарантируют корректную работу на C3, но вроде пишут что всё норм встаёт) и нашёл на просторах сети пару халявных схем для 3D-принтера, отдал другу, и вот какой результат получился: | ||
[[Файл:Ld2410-case-1.jpeg]] | |||
[[Файл:Ld2410-case-2.jpeg]] | |||
ссылки на схемы: | ссылки на схемы: | ||
* 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 |
Версия 14:03, 29 января 2024
Подключение и настройка датчика присутствия людей LD2410C
Здесь будет рассмотрен весь процесс подключения, настройки и интеграции с Wiren Board / Home Assistant китайского датчика LD2410C от компании Hi-link, работающего по принципу радара.
Материалы для изучения
В процессе изучения темы я подглядывал в "чужие" посты, должен сослаться на них.
- https://mysku.club/blog/aliexpress/94494.html
- https://mysku.club/blog/aliexpress/98704.html
- 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 нам понадобится конвертер 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 включительно, то есть отключить сканирование расстояния меньше 1.5m невозможно чисто технически, оно всегда сканируется.
Например, если мы хотим "мониторить" расстояние не более 3м, тогда записываем значения:
- Moving Max - 4
- Motionless Max - 4
Теперь можем жать кнопку Start и сможем наблюдать за изменениями на графиках - по ним можно понять как датчик реагирует на ваше присутствие:
- если круг зеленого цвета - значит датчик вас не видит ваше присутствие/движение, если красный/пурпурный - значит датчик видит ваше присутствие/движение
- в верхней части есть также расстояние до вас, вы можете постепенно удаляться от датчика и в какой-то момент отсчёт расстояния прекратится, спустя несколько секунд круг станет зеленым, т.к. датчик больше вас не видит (ранее мы настроили датчик на максимальное расстояние 3м)
У датчика есть также тонкие настройки чувствительности во всех 8ми зонах, но я не вникал в это очень глубоко, настроек по умолчанию мне хватило чтобы решить свою задачу.
Пользователям Linux
Есть вот такая хорошая страничка - https://ld2410.albert.nz/ - вместо софта можно пользоваться этим сайтом для настройки датчика.
Подключение к ESP32
Далее будет рассмотрен процесс прошивки контроллера ESP32, для этих целей у меня всегда есть полноценная dev-плата ESP32 WROOM32 Devkit 38P.
Подключаем пины датчика к esp32 (да, я использовать не стандартные RX/TX пины, мне так надо было, вы можете использовать другие пины по своему усмотрению):
- 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
Для трансляции значений в контроллер Wiren Board нам понадобится виртуальное устройство, чтобы мы могли в его топики передавать значения через MQTT.
Создаём виртуальное устройство
defineVirtualDevice('virtual-garderob', {
title: 'virtual-garderob' ,
cells: {
presence_sensor: {
title: "датчик присутствия",
type: "alarm",
value: false,
},
}
})
Получаем имя топика
В веб-интерфейсе Wiren Board в разделе "Настройки -> MQTT топики" ищем наше виртуальное устройство и копируем значение топика (например, /devices/virtual-garderob/controls/presence_sensor)
Добавляем в конфиг esphome
ранее мы описывали бинарный сенсор - его нужно дополнить полем id (это нужно чтобы в lambda-функции можно было получение значение сенсора):
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
что мы сделали:
- добавили id к сенсору
- описали mqtt-брокера
- создали триггер on_state, срабатывающий при изменении значения сенсора, используем функцию mqtt.publish для отправки данных в Wiren Board
Теперь можно пойти в раздел устройств в интерфейсе Wiren Board и увидеть такое:
Когда датчик сработает, то будет выглядеть так:
Таким образом, можно использовать wb-rules для автоматизации, или какой-то другой софт.
Автоматизация освещения
Совсем коротко про автоматизацию (как это сделал я):
- всё освещение у меня уже прокинуто в Home Assistant при помощи wb-engine (https://github.com/4mr/wb-engine)
- установлен node red с модулем node-red-contrib-home-assistant-websocket и node-red-contrib-wirenboard
Добавляем компонент "events: state" (отлавливает изменение состояния выбранного объекта)
если вы используете компонент первый раз - нужно добавить сервер home assistant (если NR крутится внутри HA, тогда, по идее, это можно пропустить)
добавляем второй компонент - "wb: out" [[1]]
если вы используете компонент первый раз - нужно добавить сервер wiren board
Далее жмём "Deploy". Теперь при обнаружении присутствия человека в гардеробе будет зажигаться соответствующая группа освещения.
Автономное подключение
У датчика есть OUT-пин, на котором появляется напряжение 3V в случае обнаружения объекта, таким образом, можно приколхозить какое-то реле и управлять освещением автономно, без контроллера УД, мне это было не нужно - поэтому особо не изучал, но эта задача кажется сильно проще чем подключение к HA/WB.
Например, может подойти один из модулей реле (тут надо смотреть, что в действительности выдаёт датчик на пине OUT):
Печать корпуса
В конечном счёте я решил свою задачу - как датчик работает мне очень нравится, всё точно, никаких ложных срабатываний по сравнению с PIR датчиком, поэтому я решил финализировать решение, заказал себе ESP32C3 (на свой страх и риск, т.к. разработчики ESPHOME не гарантируют корректную работу на C3, но вроде пишут что всё норм встаёт) и нашёл на просторах сети пару халявных схем для 3D-принтера, отдал другу, и вот какой результат получился:
ссылки на схемы: