
How it works
This is very much up to you and your creativity, but out of the box, Rotato creates its own WiFi network so you can open a browser and a virtual joystick drives the wheels while a weapon button spins the weapon motor. A physical safety switch kills the weapon instantly if triggered. Battery voltage, weapon state, and firmware version all broadcast live to the UI.

Hardware
The core is a custom PCB designed around a ESP32-C3 Super Mini loaded with with WiFi, Bluetooth, and enough GPIO to drive three ESCs, read a battery, and chirp a buzzer.
All three motors (left wheel, right wheel, weapon) use the standard RC ESC signal: 50 Hz, 1000–2000 µs pulse width. A resistor divider on GPIO0 monitors the 2S LiPo in real time. A physical safety switch on GPIO5 provides a hardware weapon interlock that the software cannot override.
A few highlights:
- 2S LiPo (6.0V–8.4V), battery % shown in the UI at all times
- Safety switch — weapon is physically blocked until it's safe
- Passive buzzer — startup beep, weapon-on/off tones, error sounds
- Expansion pin (GPIO6/J9) — free for whatever you want to add

Firmware
The firmware is written in C++ and built with PlatformIO. It uses ESPAsyncWebServer for the browser controller (WebSocket + JSON), NimBLE-Arduino for Bluetooth, and ArduinoJson v7 for message parsing. All hardware settings — every GPIO number, timing value, and feature flag — live in one file: src/config.h.
The architecture is intentionally modular. Hardware drivers (MotorController, BuzzerController, BatteryMonitor, SafetySwitch) never import the connectivity layer (WiFiManager, WebServerManager, BLEManager). Everything talks through registered callbacks, wired together in main.cpp. Swapping hardware or adding a new control channel is a contained change.
Check out the GitHub repo
Web Controller
The entire UI is a single HTML file served directly from the robot's filesystem over WiFi. This may not sound elegant, but we are working with a fairly limited amount of memory here. It runs in any modern browser and includes:
- Virtual joystick for real-time arcade drive control
- Weapon button with armed/disarmed status indicator
- Live battery gauge — percentage and voltage
- Settings panel — rename the robot, join your WiFi, calibrate battery, tune drive range, adjust weapon ramp speed
The robot can also join an existing WiFi network; useful in a workshop where everyone wants to connect at once. If the connection fails, it automatically falls back to its own hotspot so you're never stuck without control.
Build your own
Rotato was designed to be a starting point into your robot fighting experience. The firmware is open source and built to be hacked; swap motors, change the weapon, add sensors, change the control scheme... Make it Democratic or make it move based on the current price of Bitcoin if you like
Want to join a Workshop? Check out the dates


