Ai-Thinker RD-03D mmWave Radar Sensor

The RD-03D is a versatile 24GHz radar sensor for multi-person detection and tracking. It supports UART data output and is well-suited for automation, smart buildings, and robotics.

Ai-Thinker RD-03D mmWave Radar Sensor image
RD-03D · UART
UART
Interface
4pins
Connections
5V DC
Supply
0.5 to 8 meter s
Range
-20 to +70 °C
Operating temp
$15
Typical price
On this page

RD-03D pinout

4 pins · UART

The RD-03D has 4 pins: VCC (5V), GND, and UART TXD/RXD for multi-target tracking.

View:
Ai-Thinker RD-03D mmWave Radar Sensor pinout
PinTypeDescriptionNotes
VCCPowerPower supply input (5V). Requires stable regulated 5V supply.Use external 5V regulator or ESP32 5V pin.
GNDPowerGround connection. Connect to ESP32 ground.Common ground required for UART communication.
TXDUARTUART transmit pin. Outputs multi-target tracking data.Connect to ESP32 RX pin (GPIO 16). 3.3V tolerant.
RXDUARTUART receive pin. Accepts configuration commands.Connect to ESP32 TX pin (GPIO 17).
  • 24GHz mmWave radar for multi-target tracking

  • Detection range: 0.5 to 8 meters

  • Field of view: ±60° horizontal

  • Tracks up to 3 targets simultaneously

  • Provides distance, speed, and position data

  • Binary UART protocol at 256000 baud (default)

  • UART signals are 3.3V compatible

Wiring the RD-03D to ESP32

4 connections · all required

To interface the RD-03D with an ESP32, connect VCC to 5V, GND to ground, TXD to GPIO 16 (ESP32 RX), and RXD to GPIO 17 (ESP32 TX).

Ai-Thinker RD-03D mmWave Radar Sensor wiring with ESP32
RD-03D pinESP32 pinPurpose
VCC5VPower supply (5V). Use ESP32 5V pin or external regulated supply.
GNDGNDGround connection.
TXDGPIO 16 (RX2)Radar transmits tracking data to ESP32.
RXDGPIO 17 (TX2)ESP32 sends commands to configure radar.
  • UART baud rate: 256000 bps (8N1 format)

  • UART signals are 3.3V compatible - direct connection to ESP32 safe

  • Use UART2 (GPIO 16/17) to avoid USB serial conflicts

  • Tracks up to 3 human targets simultaneously with distance/speed data

  • Binary protocol - use RD-03D library or parse manually

  • Mount with clear line of sight to detection area

  • For testing: use USB-to-Serial adapter to view raw output

  • Firmware updates may be available - check manufacturer website

  • Detection range: 0.5-8m depending on target size and environment

RD-03D code examples

5 platforms
Platform:

RD-03D Arduino example

Copy
// Basic example for RD-03D UART output
#include <HardwareSerial.h>

HardwareSerial RadarSerial(2);

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

void loop() {
  while (RadarSerial.available()) {
    Serial.write(RadarSerial.read());
  }
}

This example connects the RD-03D to ESP32 via UART2 (GPIO16/17) and outputs all received bytes to the Serial Monitor. The data consists of binary frames which must be parsed according to the RD-03D protocol. For real-time tracking and distance/speed parsing, refer to decoding routines at Electronic Clinic.

RD-03D ESP-IDF example

Copy
#include <stdio.h>
#include "freertos/FreeRTOS.h"
#include "freertos/task.h"
#include "driver/uart.h"

// Rd-03 on UART2: module TX -> GPIO16 (RX2), RX -> GPIO17 (TX2), 115200 baud
#define RADAR_UART UART_NUM_2

void app_main(void)
{
    uart_config_t config = {
        .baud_rate = 115200,
        .data_bits = UART_DATA_8_BITS,
        .parity = UART_PARITY_DISABLE,
        .stop_bits = UART_STOP_BITS_1,
        .flow_ctrl = UART_HW_FLOWCTRL_DISABLE,
    };
    ESP_ERROR_CHECK(uart_param_config(RADAR_UART, &config));
    ESP_ERROR_CHECK(uart_set_pin(RADAR_UART, 17, 16, UART_PIN_NO_CHANGE, UART_PIN_NO_CHANGE));
    ESP_ERROR_CHECK(uart_driver_install(RADAR_UART, 1024, 0, 0, NULL, 0));

    uint8_t buf[64];
    while (1) {
        int len = uart_read_bytes(RADAR_UART, buf, sizeof(buf), pdMS_TO_TICKS(200));
        if (len > 0) {
            for (int i = 0; i < len; i++)
                printf("%02X ", buf[i]);
            printf("\n");
        }
    }
}

There is no established library for the Rd-03, so this example reads its UART stream (115200 baud on UART2) and prints each burst as hex - decode it with the frame tables in Ai-Thinker's Rd-03 serial protocol manual.

RD-03D ESPHome example

Copy
uart:
  id: uart_bus
  tx_pin: GPIO17
  rx_pin: GPIO16
  baud_rate: 256000

rd03d:
  uart_id: uart_bus

sensor:
  - platform: rd03d
    target_1:
      x:
        name: "Target 1 X"
      y:
        name: "Target 1 Y"
      speed:
        name: "Target 1 Speed"
      distance:
        name: "Target 1 Distance"

ESPHome has native Rd-03D support: the core rd03d component parses the radar's multi-target stream over UART2 at its fixed 256000 baud, tracking up to three targets - each target_N exposes X/Y position, speed and distance entities. Add target_2 and target_3 blocks for the other slots.

RD-03D PlatformIO example

Copy
[env:esp32dev]
platform = espressif32
board = esp32dev
framework = arduino
monitor_speed = 115200
src/main.cppCopy
#include <HardwareSerial.h>

HardwareSerial RadarSerial(2);

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

void loop() {
  while (RadarSerial.available()) {
    Serial.write(RadarSerial.read());
  }
}

This PlatformIO sketch reads raw binary output from the RD-03D sensor using UART2 and relays it to the Serial Monitor. Use a parser to decode target coordinates, speed, and distance.

RD-03D MicroPython example

Copy
from machine import UART
import time

# Rd-03: module TX -> GPIO16 (RX2), RX -> GPIO17 (TX2), 115200 baud
uart = UART(2, baudrate=115200, tx=17, rx=16)

while True:
    data = uart.read()
    if data:
        print(" ".join("{:02X}".format(b) for b in data))
    time.sleep(0.2)

There is no established library for the Rd-03, so this example reads its UART stream (115200 baud on UART2) and prints each burst as hex - decode it with the frame tables in Ai-Thinker's Rd-03 serial protocol manual.

RD-03D specifications

From the datasheet
Interface
UART (256000 baud)
Detection Range
0.5 to 8 meters
Detection Field
±60° horizontal
Power Supply
5V DC
Output
UART
Tracking Capacity
Up to 3 targets
Operating Temperature
-20°C to +70°C
Dimensions
42mm × 28mm
Pin Width
2.54mm

About the RD-03D

This page documents Ai-Thinker’s RD-03D, the multi-target tracking member of Ai-Thinker’s radar lineup - not to be confused with the simpler base RD-03 despite the near-identical name. The two share a product family but little else: RD-03D uses the S5KM312CL radar chip with a 1T2R antenna and needs a stable 5V supply, while the base RD-03 runs on 3.0-3.6V through a different S3KM1110 chip and reports only single-target presence, trading multi-target tracking for a longer 10-meter range on wall mounts. It streams a binary multi-target report over UART at a default 256000 baud, tracking up to 3 targets at once - both figures straight from Ai-Thinker’s specification and mirrored by ESPHome’s native rd03d component.

What the RD-03D does deliver, per Ai-Thinker’s own specification, is a radar that distinguishes movement, micro-motion and rest rather than needing constant motion - though ESPHome’s rd03d documentation notes that because its multi-target mode relies on Doppler shift, a target that stops moving entirely can drop out of the X/Y/speed stream it reports. Range runs to 8 meters across a ±60 degree horizontal by ±30 degree vertical field, slightly farther and wider than the LD2450, the only other UART radar in this list with native ESPHome multi-target tracking.

At a similar price to the RD-01, the RD-03D is the pick when a project needs per-person coordinates rather than a single presence flag; the RD-01’s built-in Wi-Fi/BLE and lower-voltage operation make more sense for a simple, standalone occupancy sensor instead.

RD-03D troubleshooting

2 common issues

No Serial Output

Issue: ESP32 doesn't receive any data.

Verify TXD/RXD wiring. Ensure the baud rate is set to 256000 (the RD-03D default). Use a USB-to-Serial adapter to confirm data output manually.

Inaccurate or Frozen Data

Issue: Detected target positions or speeds do not change.

Ensure there is line-of-sight movement in the detection area. Check for firmware version compatibility and reset the device if needed.

Where to buy the RD-03D

Ai-Thinker RD-03D mmWave Radar Sensor
Ai-Thinker RD-03D mmWave Radar Sensor
$15per unit, typical
Amazon and AliExpress links are affiliate links - buying through them supports the site at no extra cost to you.

Resources