Top modules

ESP32 LD2410 Wiring: ESP32-C3, D1 Mini, ESP8266 and Arduino

Four wires carry an LD2410: 5V, ground and a crossed serial pair. Which pins, which UART and which library depend on the board in your hand.

Revised September 2026
Quick answer

Power the sensor from the board's 5V pin, share ground, and cross the serial lines: sensor TX to the board's RX, sensor RX to its TX. Use a hardware UART at 256000 baud. On a classic ESP32 that means GPIO16 (RX2) and GPIO17 (TX2).

  • ESP32-C3: GPIO20 and GPIO21, logger on USB
  • D1 Mini and ESP8266: GPIO3 and GPIO1, logger off
  • 5V Arduino: divide the voltage on the sensor's RX line
Jumper-wire builds1 LD2410C 3-pack with cables
LD2410C 3-pack with cables
Three C modules with cables, so ESP32, C3 and D1 Mini builds all wire up without solder.
  • LD2410C · 3-pack
  • Bluetooth: tune it from your phone
  • Cable included
Get the module
XIAO C3 already fitted2 AKAMATIS Presence Sensor v2.2
AKAMATIS Presence Sensor v2.2
The LD2410B and a Seeed ESP32-C3 come assembled in a case with ESPHome loaded.
  • LD2410B · 1 module
  • Bluetooth: tune it from your phone
  • 24GHz radar: sees people sitting still
Get the module
Code on a PC first3 LD2410B Test Kit
LD2410B Test Kit
A B module on a test board, so you can watch the output before you wire a microcontroller.
  • LD2410B · 1 module
  • Bluetooth: tune it from your phone
  • 24GHz radar: sees people sitting still
Get the module

Wire an LD2410C to a classic ESP32

A classic ESP32 dev board has three hardware UARTs, and UART2 on GPIO16 and GPIO17 is free on most of them. That makes it the least fussy home for an LD2410.

  1. Sensor VCC to the ESP32's 5V or VIN pin.
  2. Sensor GND to any GND pin.
  3. Sensor TX to GPIO16, which is RX2.
  4. Sensor RX to GPIO17, which is TX2.
  5. Optional: sensor OUT to a spare GPIO such as GPIO18 for a hardware presence line.

The sensor's TX and OUT pins swing to 3.3V, which the ESP32 reads directly, and the ESP32's 3.3V TX is what the sensor's RX expects. No level shifter needed. On an LD2410C the pin order from pin 1 is TX, RX, OUT, GND, VCC; the original and B boards start with OUT instead, so read the pinout for your version.

Keep the jumpers short, especially the 5V pair. A USB port that sags under an ESP32's Wi-Fi bursts plus the radar shows up as brownout resets. A decent 1A USB supply fixes it.

For firmware, ESPHome's built-in component is the quickest route to Home Assistant. The ESPHome YAML walkthrough uses exactly these pins, so the config drops in unchanged.

Mount the sensor clear of the ESP32's antenna end and any metal. The radar faces away from the component side of its board.
Reference

Pin map for each microcontroller

BoardSensor TX goes toSensor RX goes toSensor VCC fromNotes
ESP32 dev boardGPIO16 (RX2)GPIO17 (TX2)5V / VINUART2, logger stays on UART0
ESP32-C3 dev boardGPIO20GPIO215VLogger on USB, so the UART pins are free
Seeed XIAO ESP32-C3D7 (GPIO20)D6 (GPIO21)5V padSame chip, XIAO labels
Wemos D1 Mini / ESP8266RX (GPIO3)TX (GPIO1)5VDisable the logger; unplug TX to flash over USB
ESP8266, swapped UARTGPIO13 (D7)GPIO15 (D8)5VKeeps USB logging usable
Arduino MegaRX1 (pin 19)TX1 (pin 18) via divider5VSerial1, 5V logic
Arduino UnoSoftwareSerial pinSoftwareSerial pin via divider5VLower the sensor's baud first

Pin names from each board's standard pinout. Sensor pin order differs between LD2410 versions; check your module's pinout before wiring.

Route the UART on an ESP32-C3 or XIAO

The ESP32-C3 has two hardware UARTs and a built-in USB serial port for logs. With the logger on USB, the regular UART pins are yours.

GPIO20 (RX) and GPIO21 (TX) are the usual choice. On a Seeed XIAO ESP32-C3 they are labelled D7 and D6, and the board's 5V pad carries USB power for the sensor. The C3 can route a UART to other free GPIOs too, but steer clear of its strapping pins, GPIO2, GPIO8 and GPIO9.

uart:
  id: ld2410_uart
  rx_pin: GPIO20
  tx_pin: GPIO21
  baud_rate: 256000
  parity: NONE
  stop_bits: 1
  • Sensor TX to GPIO20 (D7 on the XIAO).
  • Sensor RX to GPIO21 (D6 on the XIAO).
  • VCC to 5V, GND to GND.

Seeed also makes a 24GHz mmWave board sized for its XIAO line, built on an LD2410-family radar. If you would rather not assemble anything, the AKAMATIS v2.2 is a finished version of the same idea: an LD2410B wired to a Seeed ESP32-C3 with an external Wi-Fi antenna, in a case, running ESPHome.

A XIAO plus an LD2410C fits in a very small printed box. The enclosure guide covers the clearance the radar needs in front of it.

One C3 caveat: if you enable the logger on a hardware UART instead of USB, it can collide with the pins you picked for the sensor. Leave logging on USB and the conflict never appears.

Board comparison

Boards that wire up fastest

LD2410C single module LD2410C single module LD2410C 3-pack with cables LD2410C 3-pack with cables LD2410B-P module LD2410B-P module LD2410 original module LD2410 original module LD2410B Test Kit LD2410B Test Kit
TypeModuleModuleModuleModuleTest kit
VersionLD2410CLD2410CLD2410B-PLD2410LD2410B
Pack1 module3-pack1 module1 module1 module
BluetoothYesYesYes—Yes
Cable—Yes—Yes—
Get the module Get the module Get the module Get the module Get the module
Datasheet

Every spec of the top boards

LD2410C 3-pack with cables
LD2410C 3-pack with cables
Model
HLK-LD2410C
Frequency band
24GHz ISM (24.125GHz centre)
Radar type
FMCW (frequency-modulated continuous wave)
Detects
Moving, still, micro-motion, seated and lying people
Maximum sensing distance
5m (some packs quote up to 6m)
Distance resolution
0.75m per gate
Detection angle
±60°
Supply voltage
5V
Logic level
3.3V UART and OUT pin
Interfaces
GPIO (OUT pin) and UART
Default baud rate
256000, 8N1
Header
5 pins at 2.54mm pitch
Module notes →Get the module
AKAMATIS Presence Sensor v2.2
AKAMATIS Presence Sensor v2.2
Radar module
HLK-LD2410B (24GHz mmWave)
Controller
Seeed C3 (ESP32-C3)
Wi-Fi
2.4GHz, external antenna
Firmware
ESPHome, pre-flashed
Platform
Home Assistant required
Detects
Moving and stationary people
Maximum range
6m (20ft) indoors
Sensitivity
Adjustable
Setup
Device hotspot, then enter Wi-Fi credentials
Power
USB-C
Battery
None
Dimensions
0.55 × 1.6 × 1.05in (D × W × H)
Module notes →Get the module
LD2410B Test Kit
LD2410B Test Kit
Model
HLK-LD2410B
Kit type
Bluetooth test kit
Frequency band
24GHz ISM
Detects
Moving and stationary people, with target distance
Maximum sensing distance
5m
Distance resolution
0.75m per gate
Measurement accuracy
±0.375m
Coverage
±60°
Module size
7 × 35mm
Maximum supply voltage
5V DC
Outputs
Digital OUT pin and UART
Default baud rate
256000, 8N1
Module notes →Get the module

Free the only UART on a D1 Mini or ESP8266

A D1 Mini's ESP8266 has one full-duplex hardware UART, and by default it carries both USB flashing and log output. To read an LD2410 at 256000 baud, you hand that port to the sensor.

In ESPHome, set the logger's baud_rate to 0 so it stops writing to the serial port. Then put the UART on GPIO1 (TX) and GPIO3 (RX), the pins marked TX and RX on a Wemos D1 Mini. Logs still reach you over Wi-Fi.

  • Sensor TX to the D1 Mini's RX pin (GPIO3).
  • Sensor RX to its TX pin (GPIO1).
  • VCC to the D1 Mini's 5V pin, GND to G.
  • Unplug the sensor's TX wire before flashing over USB, or the upload fails.

There is a second option: the ESP8266 can swap UART0 onto GPIO15 (TX) and GPIO13 (RX), marked D8 and D7 on the D1 Mini. That keeps the USB pins clear for flashing. Software serial is the option to skip; bit-banged serial on an ESP8266 is unreliable at 256000 baud.

The ESP8266 has less memory and a single core, so leave engineering mode off in daily use. For a new build, an ESP32-C3 board costs about the same and removes the UART juggling entirely.

Recommended

Prove the radar works before you solder

LD2410B Test Kit
Best for checking a module before wiring LD2410B Test Kit

The LD2410B test kit puts the Bluetooth module on a carrier board with a cable, ready to plug into a PC or a phone app. Confirm the radar and its settings, then move on to your ESP32.

Get the module

Read presence in your own Arduino sketch

If you want your own firmware rather than ESPHome, open-source Arduino libraries parse the LD2410's frames for you. The ncmreynolds ld2410 library is a common starting point on ESP32 and other boards with a spare hardware serial port.

#include <ld2410.h>

ld2410 radar;

void setup() {
  Serial.begin(115200);
  Serial2.begin(256000, SERIAL_8N1, 16, 17);
  radar.begin(Serial2);
}

void loop() {
  radar.read();
  if (radar.presenceDetected()) {
    Serial.println(radar.stationaryTargetDistance());
  }
}

The pattern is the same in any library: open a hardware serial port at 256000, hand it to the parser, and call its read function often. Libraries differ in naming and in which configuration commands they support, so check the examples that ship with the version you install.

  • Call the read function every loop; frames arrive many times a second.
  • Use the moving and stationary flags separately if lights and heating need different logic.
  • Write settings once, then leave them; the module stores them.

Configuration commands let your sketch set the maximum gates, the timeout and per-gate sensitivity. Setting them in the phone app or PC tool first is often faster.

Print what the library reports to the serial monitor before you write any automation logic. Walk away from the sensor and back again, then sit still for a minute. If the stationary flag drops while you sit, raise the sensitivity of the gate you sit in or move the sensor closer; the numbers you see here are the same energy values the configuration tools show.

Visualised

Hardware serial ports per chip

Full-duplex hardware UARTs per chip, from the chip makers' datasheets. The ESP8266 also has a transmit-only UART1, which cannot read the sensor.

Protect the sensor's RX from a 5V Arduino Uno

An Uno runs 5V logic, and the LD2410's serial pins are 3.3V parts. Its TX output reads fine on the Uno, but the Uno's 5V TX should not go straight into the sensor's RX.

A two-resistor divider is enough: 1kΩ from the Uno's TX pin to the sensor RX, and 2kΩ from the sensor RX to ground. That brings 5V down to about 3.3V. A small bidirectional level-shifter board does the same job and tidies the wiring.

ArduinoSerial to usePlan
Uno, NanoSoftwareSerialLower the sensor's baud first
Mega 2560Serial1 (pins 18, 19)256000 on hardware serial
Leonardo, MicroSerial1Hardware port, USB stays free
  • The Uno's only hardware port also carries USB, so use it for the sensor only if you give up the serial monitor.
  • SoftwareSerial will not keep up at 256000; set the module to 57600 or lower with the configuration tool before connecting.
  • Or skip the serial side and read the OUT pin with digitalRead.

That last option is the simplest Arduino LD2410 project of all. Configure range and timeout once over Bluetooth, then treat OUT as a presence switch.

Whichever board you use, tie the grounds together first and connect the data lines second. That order spares the sensor's pins from stray current while you plug things in.

Troubleshooting

Common snags

Which ESP32 pins should I use for the LD2410?

GPIO16 (RX2) and GPIO17 (TX2) on a classic ESP32. Sensor TX goes to GPIO16 and sensor RX to GPIO17.

Does the LD2410 work with an ESP8266 or D1 Mini?

Yes, on the hardware UART. Turn off serial logging, use GPIO1 and GPIO3 or the swapped GPIO15 and GPIO13, and power it from the 5V pin.

Do I need a level shifter between the LD2410 and an ESP32?

No. Both sides use 3.3V logic. You only need one with a 5V board such as an Arduino Uno, on the line into the sensor's RX.

Can an Arduino Uno read the LD2410 at 256000 baud?

Not reliably with SoftwareSerial. Lower the module's baud rate first, use a board with a spare hardware port, or read the OUT pin instead.

Is there a ready-made XIAO kit with an LD2410?

Seeed sells an LD2410-family mmWave board sized for XIAO. The AKAMATIS v2.2 is a finished sensor built on a Seeed ESP32-C3 with an LD2410B.

Next build step

Continue the build

Parts bin

Other boards for the job

Best LD2410