• 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
      • Автоматизации
      • Lovelace
    • Tuya
    • Bluetooth
    • ESPHome
    • Frigate
    • Telegram
    • Яндекс
  • ЧПУ
  • 3d печать
  • Об авторе

Работа с датчиком HiLink LD2450 в ESPHome и Home Assistant

28 августа, 2024

 

LD2450: https://alii.pub/71148t?erid=2SDnjcNNUSN

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

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

 

LD2450 это микроволновой датчик который может измерять присутствие человека, скорость перемещения его и так-же может определять в каком именно месте находится человек и такое местоположение может определять до 3х тел одновременно.

Определяет человека он на расстоянии до 6 метров.

Так-же можно ему задать до 3х зон и на основе этих зон можно делать разные автоматизации. К примеру, нарисовали мы зону возле кресла и как только тело зашло в эту зону (село на кресло), то например включается торшер.

И так можно до 3х зон нарисовать.

Приложения для работы с датчиком:

Датчик LD2450 от компании HiLink общается по UART интерфейсу, но так-же у него есть и Bluetooth на “борту”. И вот если скачать приложение с Google play или AppStore HLKRadarTool то с помощью него по блютузу можно подключиться к датчику и посмотреть как он работает. Помимо этого еще можно обновлять через это приложение прошивки по воздуху.

 

 

 

Но смартфоном приложения не заканчиваются. Еще есть приложение и на компьютер. Которое можно скачать отсюда: https://h.hlktech.com/Mobile/download/fdetail/239.html

А именно HLK-LD2450_TOOL_English.zip ну там и документация имеется.

И выглядит все примерно вот так:

Тут можно наблюдать за точкой (которой является человек) и как она перемещается в поле зрения датчика. Выглядит магически конечно.

Основываясь на документацию датчика и собственно возможности программы для LD2450, получилось создать весьма себе хорошую программу в ESPHome, для ESP32.

Программа для датчика LD2450 в ESPHome:

Это дополнение к уже вышедшей статье. Когда я писал эту статью, то не знал, что оказывается есть готовый конфигуратор прошивки под ESPHome и Plotly Graph. Но так как этот материал который уже написан, мне ценен. То я его оставлю, может кому-то пригодится. А конфигуратор прошивки я описал ниже.

Программа получилась очень большая. На более чем 1200 строчек кода и описывать все конечно же нет никакого смысла. Я и сам то не очень понимаю там как все работает, очень много всяких формул и функций.

Программу для ESPHome я закинул себе на яндекс диск и её можно скачать тут: https://disk.yandex.ru/d/bDp2LTcMPvXD9w

Распиновка тут указывается в блоке UART и она выставлена как TX – 17 пин, а RX – 16 пин. Собственно подключение выглядит так:

LD2450 ESP32
5V 5V
GND GND
RX 17 pin
TX 16 pin

Блоки в коде такие как esp32, api, ota, wifi, ap вы естественно не копируете с моего файла, а оставляете те, которые у Вас создались с Вашим устройством.

 

После загрузки скетча, у Вас появится очень много всяких объектов и параметров в Home Assistant:

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Например эти сенсоры будут Вам показывать в каких координатах обнаружен объект.

Так-же тут присутствует возможность рисовать зоны:

Но это все сейчас у нас получается на глаз, ведь мы не видим зон которые можем выставлять в Home Assistant

 

Карточка Plotly Graph для отображения визуализации зон и объектов датчика LD2450:

Существует такая карточка под названием Plotly Graph. Её установить можно с помощью HACS.

Находите, устанавливаете, обновляете страничку. Далее идёте в Dashboard и добавляете карточку Plotly Graph.

В этой карточке в текстовый редактор вставляете следующее:



type: custom:plotly-graph
title: mmWave Radar Sensor
refresh_interval: 1
hours_to_show: current_day
layout:
  height: 230
  margin:
    l: 50
    r: 20
    t: 20
    b: 40
  showlegend: true
  xaxis:
    dtick: 100
    gridcolor: RGBA(200,200,200,0.15)
    zerolinecolor: RGBA(200,200,200,0.15)
    type: number
    fixedrange: true
    range:
      - 400
      - -400
  yaxis:
    dtick: 100
    gridcolor: RGBA(200,200,200,0.15)
    zerolinecolor: RGBA(200,200,200,0.15)
    scaleanchor: x
    scaleratio: 1
    fixedrange: true
    range:
      - 600
      - 0
entities:
  - entity: ''
    name: Target1
    marker:
      size: 12
    line:
      shape: spline
      width: 5
    x:
      - $ex hass.states["sensor.mmwave_sensor_2fa25c_target_1_x"].state /-10
    'y':
      - $ex hass.states["sensor.mmwave_sensor_2fa25c_target_1_y"].state /10
  - entity: ''
    name: Target2
    marker:
      size: 12
    line:
      shape: spline
      width: 5
    x:
      - $ex hass.states["sensor.mmwave_sensor_2fa25c_target_2_x"].state /-10
    'y':
      - $ex hass.states["sensor.mmwave_sensor_2fa25c_target_2_y"].state /10
  - entity: ''
    name: Target3
    marker:
      size: 12
    line:
      shape: spline
      width: 5
    x:
      - $ex hass.states["sensor.mmwave_sensor_2fa25c_target_3_x"].state /-10
    'y':
      - $ex hass.states["sensor.mmwave_sensor_2fa25c_target_3_y"].state /10
  - entity: ''
    name: Zone1
    mode: lines
    fill: toself
    fillcolor: RGBA(20,200,0,0.1)
    line:
      color: RGBA(20,200,0,0.2)
      shape: line
      width: 2
    x:
      - $ex hass.states["number.mmwave_sensor_2fa25c_zone_1_x1"].state /-10
      - $ex hass.states["number.mmwave_sensor_2fa25c_zone_1_x1"].state /-10
      - $ex hass.states["number.mmwave_sensor_2fa25c_zone_1_x2"].state /-10
      - $ex hass.states["number.mmwave_sensor_2fa25c_zone_1_x2"].state /-10
      - $ex hass.states["number.mmwave_sensor_2fa25c_zone_1_x1"].state /-10
    'y':
      - $ex hass.states["number.mmwave_sensor_2fa25c_zone_1_y1"].state /10
      - $ex hass.states["number.mmwave_sensor_2fa25c_zone_1_y2"].state /10
      - $ex hass.states["number.mmwave_sensor_2fa25c_zone_1_y2"].state /10
      - $ex hass.states["number.mmwave_sensor_2fa25c_zone_1_y1"].state /10
      - $ex hass.states["number.mmwave_sensor_2fa25c_zone_1_y1"].state /10
  - entity: ''
    name: Zone2
    mode: lines
    fill: toself
    fillcolor: RGBA(200,0,255,0.1)
    line:
      color: RGBA(200,0,255,0.2)
      shape: line
      width: 2
    x:
      - $ex hass.states["number.mmwave_sensor_2fa25c_zone_2_x1"].state /-10
      - $ex hass.states["number.mmwave_sensor_2fa25c_zone_2_x1"].state /-10
      - $ex hass.states["number.mmwave_sensor_2fa25c_zone_2_x2"].state /-10
      - $ex hass.states["number.mmwave_sensor_2fa25c_zone_2_x2"].state /-10
      - $ex hass.states["number.mmwave_sensor_2fa25c_zone_2_x1"].state /-10
    'y':
      - $ex hass.states["number.mmwave_sensor_2fa25c_zone_2_y1"].state /10
      - $ex hass.states["number.mmwave_sensor_2fa25c_zone_2_y2"].state /10
      - $ex hass.states["number.mmwave_sensor_2fa25c_zone_2_y2"].state /10
      - $ex hass.states["number.mmwave_sensor_2fa25c_zone_2_y1"].state /10
      - $ex hass.states["number.mmwave_sensor_2fa25c_zone_2_y1"].state /10
  - entity: ''
    name: Zone3
    mode: lines
    fill: toself
    fillcolor: RGBA(200,120,55,0.1)
    line:
      color: RGBA(200,120,55,0.2)
      shape: line
      width: 2
    x:
      - $ex hass.states["number.mmwave_sensor_2fa25c_zone_3_x1"].state /-10
      - $ex hass.states["number.mmwave_sensor_2fa25c_zone_3_x1"].state /-10
      - $ex hass.states["number.mmwave_sensor_2fa25c_zone_3_x2"].state /-10
      - $ex hass.states["number.mmwave_sensor_2fa25c_zone_3_x2"].state /-10
      - $ex hass.states["number.mmwave_sensor_2fa25c_zone_3_x1"].state /-10
    'y':
      - $ex hass.states["number.mmwave_sensor_2fa25c_zone_3_y1"].state /10
      - $ex hass.states["number.mmwave_sensor_2fa25c_zone_3_y2"].state /10
      - $ex hass.states["number.mmwave_sensor_2fa25c_zone_3_y2"].state /10
      - $ex hass.states["number.mmwave_sensor_2fa25c_zone_3_y1"].state /10
      - $ex hass.states["number.mmwave_sensor_2fa25c_zone_3_y1"].state /10
  - entity: ''
    name: Coverage
    mode: lines
    fill: tonexty
    fillcolor: rgba(168, 216, 234, 0.15)
    line:
      shape: line
      width: 1
      dash: dot
    x:
      - 0
      - $ex 600 * Math.sin((2 * Math.PI)/360 * 60)
      - 450
      - 400
      - 300
      - 200
      - 100
      - 0
      - -100
      - -200
      - -300
      - -400
      - -450
      - $ex -600 * Math.sin((2 * Math.PI)/360 * 60)
      - 0
    'y':
      - 0
      - $ex 600 * Math.cos((2 * Math.PI)/360 * 60)
      - $ex Math.sqrt( 600**2 - 450**2 )
      - $ex Math.sqrt( 600**2 - 400**2 )
      - $ex Math.sqrt( 600**2 - 300**2 )
      - $ex Math.sqrt( 600**2 - 200**2 )
      - $ex Math.sqrt( 600**2 - 100**2 )
      - 600
      - $ex Math.sqrt( 600**2 - 100**2 )
      - $ex Math.sqrt( 600**2 - 200**2 )
      - $ex Math.sqrt( 600**2 - 300**2 )
      - $ex Math.sqrt( 600**2 - 400**2 )
      - $ex Math.sqrt( 600**2 - 450**2 )
      - $ex 600 * Math.cos((2 * Math.PI)/360 * 60)
      - 0
raw_plotly_config: true
       

Где название датчика sensor.mmwave_sensor_2fa25c меняете на своё которое получило Ваше esp32 устройство.

По итогу должно получиться вот так:

 

 

 

 

 

 

 

 

 

 

 

 

 

Собственно кружки это объект который двигается по карте. А квадратики это зоны.

 

Конфигуратор готовых прошивок под ESPHome для датчика HiLink LD2450:

 

Это дополнение к статье и этот же Вариант попал в видео, так как я решил, что с таким вариантом точка входа будет гораздо выше для работы с этим датчиком и каждый сможет себе его настроить.

Существует проект на github https://github.com/53l3cu5/ESP32_LD2450, в котором представлен пример работы с датчиком LD2450 и пример для карты plotly graph. И казалось бы все как и описано выше, но тут во первых ошибка чуть другая (больше возможностей), карта чуть другая. Но самое интересное тут в том, что данный создатель прошивки сделал автоматический конфигуратор: https://53l3cu5.github.io/ В нем просто в двух местах указываем имя которое хотим присвоить новому устройству в ESPHome и нажмем кнопку “ganerate” Для создания прошивки:

Вводим тут в Device Name и в Entity Name что-то свое. я например написал LD2450 в двух местах.

Encryprion key генерируется каждый раз.

Можем выбрать сколько мы хотим зон и нажимаем кнопку Generate:

После чего у нас сгенерируется три прошивки:

Первое это YAML Text – это прошивка для ESPHome. Создав новое устройство в ESPHome, удаляем оттуда все содержимое и вставляем код полностью который сконфигурировался в YAML Text. Ну только что wifi настройки поменять на свои.

Но при сохранении у Вас будет ругаться что нет файла Zone.h. Это мы исправим следующим шагом:

 

Zone.h – это библиотека нужная нам для работы с нашим датчиком LD2450. Собственно код для этого файла у нас создался во второй колонке Zone.h Text. Нажимаем кнопку Download Zone.h – что даст возможность нам скачать этот файл.

А в ESPHome библиотеки добавляются просто закидыванием файлов в папку ESPHome:

 

После этого проект в ESPHome скомпилируется без ошибок у нас и можно его залить в ESP32.

После заливки скетчка и добавления устройства в ESPHome у нас появится устройство с очень большим количеством разных объектов и параметров:

 

 

Но что с этими параметрами делать без карты? правильно, надо нарисовать карту отображения позиционирования человека. Для этого нужна карточка Plotly Graph, которую я показывал как скачать выше в статье.

Только в код карточки нужно вставить сгенерированный код из Plotl Graph Text, который сгенерировал генератор выше. И по итогу получится вот такая карточка, где видно голубой кружок, который двигается по плоскости – это как раз ваше позиционирование.

 

Теперь вернемся к устройству с множеством непонятных параметров. По сути нам нужно нам только несколько.

Первые – это те которые отрисовывают зоны.

 

Значит Zone1 Hight – это зона по вертикали задается на скрине указано 2 метра.

Zone1 Width – это зона по горизонтали задается на скрине указано 2метра.

Zone1 X  – это размещение зоны относительно датчика по горизонтали на скрене это смещение на 1 метр.

Zone1 Y – это размещение зоны относительно датчика по вертикали на скрине это смещение на 1 метр.

 

Zone1 Timeout – это задержка присутствия. Тоесть когда датчик поймал ваше присутствие в зоне, он срабатывает и 5 секунд вас держит в пойманом состоянии.  Если оставить 0 секунд, то датчик “дергается” постоянно, то находит цель, то теряет. С задержкой в 5 секунд – работает идеально.

 

Так-же интересны еще бинарные сенсоры, которые срабатывают как датчик движения (обнаружено движение или нет). СРабатывают они когда человек заходит в зону. Всего 3 зоны можно сделать ну и 3 бинарных сенсора который каждый относится к своей зоне, эти датчики называются:

Zone1 Presence, Zone2 Presence, Zone3 Presence.

 

По окончанию отрисовки зон выглядеть это будет примерно так:

 

Как видно из скрина, сработал датчик Zone1 Presence, а сработал он как можно видеть на карте, из-за того, что я вошел в зону 1.

Собственно так это все и работает.

 

Теперь можно отрисовать зоны как Вам удобно, а бинарными датчиками Zone1 Presence, Zone2 Presence, Zone3 Presence отслеживать присутствие в той или иной зоне и опираясь на эти бинарные датчики строить автоматизации.

 

 

Реклама: ООО “АЛИБАБА.КОМ (РУ)” ИНН: 7703380158

Primary Sidebar

Поиск

Новые записи

  • Умные шторы – как правильно их выбрать?
  • Автоматизация открытия и закрытия штор в Home Assistant.
  • Лучшая карточка Lovelace управления шторами в Home Assistant.
  • Интеграция ИИ Deepseek в Home Assistant
  • Выводим уведомления из умного дома Home Assistant на Android TV с помощью программы TvOverlay.

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

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

https://t.me/ypavla

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

Secondary Sidebar




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

У Павла!

Footer

Copyright_У Павла! © 2025 ·