RC-VOLT is a professional-grade telemetry and data logging system for Radio Control vehicles, running on the ESP32-S3 (M5Stack AtomS3) platform.
Unlike standard GPS loggers, RC-VOLT features a real-time physics engine that calculates drift angles, detects jumps, estimates tire traction, and simulates battery voltage sag using motor impedance modeling.
Host a racing dashboard directly from the RC car via WiFi.
- Live Gauges: Speed, G-Force, Throttle/Steering input, and Battery %.
- WebSocket Technology: Ultra-low latency updates (~10Hz).
- Universal: Works on any smartphone, tablet, or laptop browser.
- Drift Analysis: Uses IMU fusion to calculate slip angles and yaw rates.
- Jump Detection: Identifies airtime using accelerometer free-fall detection.
- Battery Simulator: Estimates voltage sag and remaining capacity based on motor current draw profiling (Brushed/Brushless) and calibration factors.
- Dual Formats: Records to optimized Binary (for speed) or standard CSV (for Excel/Overlay).
- GPS Validation: Automatically flags speed runs with "Valid" or "Invalid" based on satellite count and HDOP accuracy.
- Smart Storage: Auto-rotates logs and manages flash storage to prevent corruption.
The system uses two M5Atom communicating over I2C to distribute processing load.
| Unit | Device | Function |
|---|---|---|
| Primary | M5Stack AtomS3 Lite | WiFi Host, Physics Engine, Logger, RC PWM Input |
| Secondary | M5Stack AtomS3 | GPS NMEA Parsing, IMU Sensor Fusion (MPU6886) |
| Audio (Optional) | M5Stack Atom Echo | Engine Sound Synthesis (RPM/Turbo sounds) |
- I2C Bus: Pins
G2(SDA) /G1(SCL) - RC Throttle: Pin
G5(Connect to Receiver CH2) - RC Steering: Pin
G6(Connect to Receiver CH1) - Status LED: Pin
G35(Built-in WS2812)
This project is built using PlatformIO.
- Clone this repository.
- Open in VS Code with the PlatformIO extension.
- Important: Ensure your partition scheme is set to
Large APP (No OTA)to allow 2MB for the filesystem. - Flash
Masterfirmware to the Primary Unit andSecondaryfirmware to the Sensor Unit.
Dependencies: M5Unified, Adafruit NeoPixel, AsyncTCP, ESPAsyncWebServer, ArduinoJson (v7.x).
Connect to the WiFi Access Point:
- SSID:
RC-Telemetry-V0-19-Beta - Pass:
telemetry123 - Dashboard: Navigate to
http://192.168.4.1
- Steering: Use the web dashboard to map your RC transmitter's PWM endpoints.
- IMU: Ensure vehicle is level and hold Button A for 1 second to Zero the IMU.
- Battery: Use the "Battery Config" tab to set your LiPo cells (2S-6S) and capacity.
- Single Click: Start / Stop Logging.
- Hold (1s): Zero IMU (Level Calibration).
| Color | Pattern | Status | Meaning |
|---|---|---|---|
| 🟢 Green | Solid | Ready | On-Road Mode (Nominal). |
| 🟠 Orange | Solid | Ready | Off-Road Mode (Nominal). |
| 🔴 Red | Solid | Logging | Data recording is active. |
| 🟣 Purple | Blinking | RC Error | No Receiver Signal (Failsafe). |
| 🟠 Orange | Blinking | I2C Error | Secondary Unit disconnected. |
| 🟣 Magenta | Blinking | GPS Poor | High HDOP / Low Satellite count. |
For detailed technical guides, refer to the docs/ folder:
- Primary Unit Guide - Master controller architecture.
- Secondary Unit Guide - GPS & IMU fusion details.
- Troubleshooting - Full error code reference.
- Release Notes - Version history.
This project is "Vibe Coded" — we move fast and break things.
- Found a bug? Open an Issue with your log file.
- Want to add a physics profile? Submit a Pull Request.
Distributed under the MIT License. See LICENSE for more information.
Keywords: ESP32 RC Telemetry, M5Stack AtomS3, Arduino GPS Logger, RC Drift Gyro, Open Source RC, Data Logging, PlatformIO, ESP32-S3, Vehicle Dynamics