Bridging the Gap Between Toy and Research Grade
I noticed the DIY robotics community is stuck between two extremes:
- Build a cheap quadruped with "blind" PWM servos that walks like a drunken sailor;
- Or spend thousands on high-end smart actuators (Dynamixel, BLDC).
I wanted a third option. So, I built the TNY-360: a fully open-source, 12-DOF robotic platform powered by an ESP32-S3 that brings closed-loop control, dual-core real-time kinematics, and a modular hardware ecosystem to the budget DIY space.
The Secret Sauce: The Op-Amp Servo Mod
I refused to use expensive smart servos. Instead, I decided to hack $5 digital MG996R servos to read their internal potentiometers. But anyone who has tried this knows the pain: reading the pot directly draws current, destabilizing the servo's internal PID, and the brushed motor EMI turns your wire into an antenna.
My solution
I designed a custom micro-PCB that fits inside the servo case. It uses an Operational Amplifier (Op-Amp) configured as a voltage buffer. This provides near-infinite input impedance (the servo doesn't even know I'm looking at its voltage) and a low-impedance output signal. Coupled with a software low-pass filter I wrote for the ESP32, I can now achieve clean, 200Hz polling across all 12 legs.
Zero Cable Spaghetti & 200Hz Dual-Core Architecture
A common point of failure in DIY robots I wanted to eliminate is wiring. I designed a custom modular PCB architecture (Brain, Sensor, Motor, Power) connected via standardized JST-PH cables. I even put the physical dimensions of the robot directly on the silkscreens!
The Firmware:
- Core 1 (Brain): Handles WebSockets, UI (OLED face animations), and the network stack.
- Core 1 (Reflex): I dedicated this core to a strict 200Hz loop for kinematics, sensing, planning, and actuating.
- Smart Calibration: I added physical mechanical endstops. My firmware auto-detects assembly errors and also calculates runtime compensation for backlash and actuator latency.
The Power:
I built a custom 3S 18650 battery pack (handling 15A continuous) with an integrated BMS, physical switch, and INA219 monitoring on the Power PCB.
Build it, Code it, Expand it
I also added a dorsal I2C/Power expansion port for custom hardware and created TNY-Coder, a block-based web app (similar to Scratch) so anyone can program the robot and their custom modules visually.
Paul LOISIL
Yuchong Li
J