Real-time radar tracking system using the HLK-LD2450 24GHz mmWave radar sensor with OLED display visualization. Features both Arduino and CircuitPython implementations for the ESP32-S3.
- Multi-Target Tracking: Simultaneously tracks up to 3 targets with X/Y coordinates
- Real-time Visualization: OLED display with animated radar sweep and target positions
- Dual Platform Support:
- Arduino C++ with optimized performance
- CircuitPython with multiple visualization modes
- Multiple Visualization Modes:
- Classic radar sweep display
- Alien-style animated tracking
- Diagnostic data output
- Raw protocol debugging
- ESP32-S3 (tested on ProS3 board)
- HLK-LD2450 24GHz mmWave Radar Sensor
- 0.96" OLED Display (128x64, I2C, SSD1306)
- USB-C cable for programming and power
Radar to ESP32:
- TX → RX (GPIO 44)
- RX → TX (GPIO 43)
- VCC → 5V
- GND → GND
OLED to ESP32:
- SDA → GPIO 8
- SCL → GPIO 9
- VCC → 3.3V
- GND → GND
- Install Arduino IDE with ESP32 support
- Install required libraries:
- Adafruit SSD1306
- Adafruit GFX Library
- Open
arduino/ESP32_Radar_Tracker.ino - Select board: ESP32-S3 Dev Module
- Upload to your ESP32
- Install CircuitPython 9.x on your ESP32-S3
- Install required libraries on device:
- adafruit_displayio_ssd1306
- adafruit_display_text
- Choose a visualization mode from
circuitpython/folder - Deploy using the utility tool:
python utils/deploy_circuitpython.pyAvailable CircuitPython modes:
code_correct_protocol.py- Standard radar sweep displaycode_alien_style.py- Sci-fi animated trackingcode_dual_both.py- Dual protocol supportcode_diagnostic.py- Debug outputcode_realtime_sweep.py- Fast refresh radar sweep
Monitor ESP32 serial output in real-time:
python utils/serial_monitor.pyDeploy CircuitPython code to ESP32:
python utils/deploy_circuitpython.pySee utils/README.md for detailed utility documentation.
- Detection Range: 0-6 meters
- Angle Coverage: ±60°
- Maximum Targets: 3 simultaneous
- Protocol: UART (115200 baud)
- Update Rate: ~10 Hz
- Technology: 24GHz FMCW radar
- Clean radar sweep with target markers
- Distance and position text overlay
- 128x64 optimized graphics
Standard Mode (code_correct_protocol.py)
- Classic radar sweep animation
- Target position markers
- Distance labels
Alien Style (code_alien_style.py)
- Animated target tracking
- Fade effects
- Sci-fi aesthetic
Diagnostic Mode (code_diagnostic.py)
- Raw data output
- Protocol debugging
- Sensor status monitoring
- Check UART wiring (TX/RX)
- Verify sensor power (5V)
- Run diagnostic mode to check protocol
- Verify I2C address (0x3C default)
- Check SDA/SCL wiring
- Run
i2c_scan.pyto detect display
- Windows: Check Device Manager for COM port
- Linux/Mac: Use
ls /dev/tty*to find port - Ensure no other program is using the port
esp32-radar-tracker/
├── arduino/ # Arduino C++ implementation
│ ├── ESP32_Radar_Tracker.ino
│ ├── HLK_LD2450.h # Radar protocol parser
│ └── RadarDisplay.h # OLED graphics
├── circuitpython/ # Multiple CircuitPython versions
│ ├── code_correct_protocol.py
│ ├── code_alien_style.py
│ ├── code_diagnostic.py
│ └── ... # Various visualization modes
├── utils/ # Deployment and monitoring tools
│ ├── deploy_circuitpython.py
│ ├── serial_monitor.py
│ └── README.md
├── docs/ # Additional documentation
├── requirements.txt # Python dependencies
└── README.md
Contributions welcome! Areas for improvement:
- Additional visualization modes
- Enhanced target tracking algorithms
- Multi-sensor support
- Data logging features
MIT License - see LICENSE file for details.
- Adafruit: Display libraries and CircuitPython support
- Hi-Link: HLK-LD2450 sensor and protocol documentation
- ESP32 Community: Hardware support and examples
- HLK-LD2450 Datasheet
- CircuitPython Documentation
- ESP32-S3 Technical Reference
- Adafruit SSD1306 Guide
Status: ✅ Fully functional - tested with ESP32-S3 ProS3 and HLK-LD2450