I’ve build an ESPHome (version 2026.4.0 in my HA) node made of ESP32-C6-Zero (Waveshare Board) and and HLK LD2450. It is connected to +5V and GND and RX/TX to GPIOs on the ESP, so fairly simple.
I started with 5V only, connecting by Bluetooth and the Radar-App (iOS) to the device and saw it worked perfectly. I then noticed that there is an firmware-update and mine had an old one installed, so i upgraded using the app. That worked fine and now there is V2.14.25112412 on the LD2450. From the app, everything looks like before. I see myself moving and standing around in the radar app.
Then i’ve connected RX/TX and added this very simple configuration from the ESPHome example page:
# ! used 'devkitc-1' because i could not find a native zero/mini board !
esp32:
board: esp32-c6-devkitc-1
framework:
type: esp-idf
uart:
id: uart_ld2450
tx_pin: GPIO5 # geht zu "RX" (grün) des LD2450 - hier sendet der ESP32 Befehle an den LD
rx_pin: GPIO4 # geht zu "TX" (gelb) des LD2450 - hier empfängt der ESP32 Antworten und Statusdaten
baud_rate: 256000
parity: NONE
stop_bits: 1
rx_buffer_size: 2048
rx_timeout: 10
ld2450:
id: ld2450_radar
uart_id: uart_ld2450
binary_sensor:
- platform: ld2450
ld2450_id: ld2450_radar
has_target:
name: "Presence"
has_moving_target:
name: "Moving Target"
has_still_target:
name: "Still Target"
text_sensor:
- platform: ld2450
ld2450_id: ld2450_radar
version:
name: "LD2450 Firmware"
mac_address:
name: "LD2450 BT MAC"
At compile ESPHome warns about the choosen GPIOs but as i did not attach anything externally (hopefully there is nothing on the LD board as well?) i hope this makes no trouble:
INFO ESPHome 2026.4.0
INFO Reading configuration /config/esphome/esphome-rpd-sensor02.yaml...
WARNING GPIO5 is a strapping PIN and should only be used for I/O with care.
Attaching external pullup/down resistors to strapping pins can cause unexpected failures.
See https://esphome.io/guides/faq/#why-am-i-getting-a-warning-about-strapping-pins
WARNING GPIO4 is a strapping PIN and should only be used for I/O with care.
Attaching external pullup/down resistors to strapping pins can cause unexpected failures.
See https://esphome.io/guides/faq/#why-am-i-getting-a-warning-about-strapping-pins
After writing to ESP this brought me a new device in HA having the basic sensors for presence, moving and still target. BUT - only the “moving target” is working, the “presence” and “still target” do not change at all.
Then i looked at the logfile and see the same, only moving target logs shown there.
[09:37:43.581][C][logger:219]: Logger:
[09:37:43.581][C][logger:219]: Max Level: DEBUG
[09:37:43.581][C][logger:219]: Initial Level: DEBUG
[09:37:43.582][C][logger:226]: Log Baud Rate: 115200
[09:37:43.582][C][logger:226]: Hardware UART: USB_SERIAL_JTAG
[09:37:43.584][C][logger:235]: Task Log Buffer Size: 768 bytes
[09:37:43.602][C][uart.idf:254]: UART Bus 0:
[09:37:43.603][C][uart.idf:152]: TX Pin: GPIO5
[09:37:43.603][C][uart.idf:152]: RX Pin: GPIO4
[09:37:43.603][C][uart.idf:259]: RX Buffer Size: 2048
[09:37:43.603][C][uart.idf:259]: RX Full Threshold: 120
[09:37:43.603][C][uart.idf:259]: RX Timeout: 10
[09:37:43.605][C][uart.idf:268]: Baud Rate: 256000 baud
[09:37:43.605][C][uart.idf:268]: Data Bits: 8
[09:37:43.605][C][uart.idf:268]: Parity: NONE
[09:37:43.605][C][uart.idf:268]: Stop bits: 1
[09:37:43.605][C][uart.idf:268]: Wake on data RX: ENABLED
[09:37:43.629][C][ld2450:191]: LD2450:
[09:37:43.629][C][ld2450:191]: Firmware version: 0.00.00000000
[09:37:43.629][C][ld2450:191]: MAC address: 08:AA:**:**:**:6A
[09:37:43.630][C][ld2450:197]: Binary Sensors:
[09:37:43.631][C][ld2450:016]: MovingTarget 'Moving Target'
[09:37:43.631][C][ld2450:232]: Device Class: 'motion'
[09:37:43.635][C][ld2450:016]: StillTarget 'Still Target'
[09:37:43.635][C][ld2450:232]: Device Class: 'occupancy'
[09:37:43.636][C][ld2450:016]: Target 'Presence'
[09:37:43.636][C][ld2450:232]: Device Class: 'occupancy'
[09:37:43.638][C][ld2450:236]: Text Sensors:
[09:37:43.638][C][ld2450:016]: Version 'LD2450 Firmware'
[09:37:43.639][C][ld2450:223]: Icon: 'mdi:chip'
[09:37:43.639][C][ld2450:016]: MAC address 'LD2450 BT MAC'
[09:37:43.641][C][ld2450:223]: Icon: 'mdi:bluetooth'
...
[09:38:42.596][D][preferences:136]: Writing 1 items: 0 cached, 1 written, 0 failed
[09:42:42.587][D][wifi:2413]: Roam scan (-55 dBm, attempt 1/3)
[09:48:09.614][S][binary_sensor]: 'Moving Target' >> ON
[09:48:14.003][S][binary_sensor]: 'Moving Target' >> OFF
[09:48:15.257][S][binary_sensor]: 'Moving Target' >> ON
[09:48:16.418][S][binary_sensor]: 'Moving Target' >> OFF
[09:48:24.141][S][binary_sensor]: 'Moving Target' >> ON
[09:48:26.492][S][binary_sensor]: 'Moving Target' >> OFF
[09:48:28.739][S][binary_sensor]: 'Moving Target' >> ON
[09:48:29.577][S][binary_sensor]: 'Moving Target' >> OFF
[09:48:30.673][S][binary_sensor]: 'Moving Target' >> ON
[09:48:31.665][S][binary_sensor]: 'Moving Target' >> OFF
[09:48:33.667][S][binary_sensor]: 'Moving Target' >> ON
[09:48:33.860][S][binary_sensor]: 'Moving Target' >> OFF
[09:48:38.354][S][binary_sensor]: 'Moving Target' >> ON
[09:48:38.877][S][binary_sensor]: 'Moving Target' >> OFF
[09:48:48.073][S][binary_sensor]: 'Moving Target' >> ON
[09:48:51.521][S][binary_sensor]: 'Moving Target' >> OFF
[09:48:57.218][S][binary_sensor]: 'Moving Target' >> ON
[09:48:57.374][S][binary_sensor]: 'Moving Target' >> OFF
[09:48:59.204][S][binary_sensor]: 'Moving Target' >> ON
[09:49:01.136][S][binary_sensor]: 'Moving Target' >> OFF
[09:49:03.905][S][binary_sensor]: 'Moving Target' >> ON
[09:49:05.002][S][binary_sensor]: 'Moving Target' >> OFF
I also wonder why sometimes the Firmware-Version could be read but not the MAC of the LD2450, and sometimes the opposite, but never both?
Would could i have done wrong?