Low-latency, router-free control stack for a micro-quadcopter and custom handheld transmitter, built with ESP-NOW, Arduino/C++, and Fusion 360.
12-06-2024
I built a micro-quadcopter and a matching handheld controller that communicate using ESP-NOW for ultra-low-latency, router-free control. I designed and printed the airframe, motor mounts, and controller enclosure in Fusion 360, then wrote Arduino/C++ firmware for both sides. The controller samples dual joysticks and failsafe switches, applies calibration, and transmits 14-byte control packets at 100 Hz. Onboard the drone, an IMU feeds a PID-based stabilizer and a motor mixer that drives four ESCs. Highlights: sub-10 ms input-to-motor latency, configurable rates/expo, soft-arm and link-loss failsafe, and modular code structure for easy tuning. This project combines embedded systems, real-time comms, and CAD into a compact, testable platform.
✨ Features
ESP-NOW link (100 Hz) with sequence numbers + CRC for integrity
PID stabilization (rate/angle modes) with per-axis tuning
IMU fusion (MPU-6050/ICM-20948) with calibration routine
Failsafe (soft-arm, link-loss motor cut, low-voltage alert)
Modular code: radio/, sensors/, control/, mixer/, ui/
Custom CAD airframe + controller shell (Fusion 360)
📦 Bill of Materials
1× ESP32 or ESP8266 dev board (drone)
1× ESP32 dev board (controller)
1× 6-axis or 9-axis IMU (MPU-6050, ICM-20948, etc.)
4× 110x/140x brushless motors + ESCs (or 4-in-1)
2× 2-axis joysticks + switches (controller)
1× LiPo 2S/3S + BEC (as required)
3D-printed frame & mounts