Human Presence Radar Module Kit LD2410: различия между версиями
м |
|||
Строка 126: | Строка 126: | ||
= Интеграция с Wiren Board = | = Интеграция с 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 | |||
Добавляем компонент "events: state" (отлавливает изменение состояния выбранного объекта) | |||
[[Файл: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]] | |||
добавляем второй компонент - "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 | |||
[[Файл:Screenshot from 2024-01-29 13-38-30.png]] | |||
указываем "светильник" | |||
[[Файл:Screenshot from 2024-01-29 13-44-41.png]] | |||
Далее жмём "Deploy". Теперь при обнаружении присутствия человека в гардеробе будет зажигаться соответствующая группа освещения. | |||
= Автономное подключение = | = Автономное подключение = | ||
У датчика есть OUT-пин, на котором появляется напряжение 3V в случае обнаружения объекта, таким образом, можно приколхозить какое-то реле и управлять освещением автономно, без контроллера УД, мне это было не нужно - поэтому особо не изучал, но эта задача кажется сильно проще чем подключение к HA/WB. | |||
Например, может подойти один из модулей реле (тут надо смотреть, что в действительности выдаёт датчик на пине OUT): | |||
[[Файл:Screenshot from 2024-01-29 11-41-12.png]] | [[Файл:Screenshot from 2024-01-29 11-41-12.png]] | ||
[[Файл:Odnokanalnoe-rele.jpg]] | |||
= Печать корпуса = | = Печать корпуса = | ||
В конечном счёте я решил свою задачу - как датчик работает мне очень нравится, всё точно, никаких ложных срабатываний по сравнению с 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 |
Версия 13:54, 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 включительно, то есть отключить сканирование расстояния меньше 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
Для трансляции значений в контроллер 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-принтера, отдал другу, и вот какой результат получился:
ссылки на схемы: