Scara arm + Custom controller
A raw, high-performance C++ firmware built for a 4-Axis layout SCARA robot, powered by an ESP32 on a Makerbase TinyBee v1.0 board. It features a custom inverse kinematics engine and a minimalist serial-terminal-like that bypasses all heavy G-code bloatware.
Watch it here: https://www.youtube.com/watch?v=ozRpFa_8epw
Every cycle, the ESP32 firmware coordinates tasks in the following sequential order:
[ Web Client Request ]
│
▼
1. WebServer Parser ──────► Tokenizes HTTP GET request strings (raw text)
│
▼
2. Command Router ──────► Matches actions (MOVE, IK, LOCK, SETHOME)
│
▼
3. Inverse Kinematics ────► Translates Cartesian space (X,Y,Z) to Joint Angles
│
▼
4. Bresenham Driver ──────► Computes multi-axis synchronized microstep pulses
│
▼
5. Virtual I2S Output ────► Shifts bits to hardware registers via high-speed I2S
│
└─────────┴───────── (Next Request / Loop Listen)
- 4-axis kinematics engine: 3 x Nema 17 motors with 13.7:1 planetary gearboxes. Keeps the end-effector perfectly parallel to the ground.
- Closed-Loop Precision: Integrated with MKS Servo42C drivers to guarantee zero missed steps, high-speed tracking, and real-time error correction.
- I2S hardware acceleration: Uses ESP32's native I2S DMA to clock a virtual 24-bit shift register network, saving physical GPIOs.
- Raw web interface: A zero-dependency, barebone web interface acting as a remote Wi-Fi shell.
- Configurable script: The script comes up out of the box with simple configurable variable.
Before flashing the project, make sure your hardware matches these specifications:
- Board: Makerbase TinyBee v1.0
- Drivers: Makerbase MKS Servo42C (Closed-loop Stepper Controllers)
- Actuators: 3 x Nema 17 (48mm body) + 13.7:1 Planetary Gearbox
- Power Adapter: 24V - 12A
- I2S Register Pins:
BCK(GPIO 25),WS(GPIO 26),DATA(GPIO 27) - Virtual Pins:
- Axis X (Shoulder): Enable (0), Step (1), Dir (2)
- Axis Y (Elbow): Enable (3), Step (4), Dir (5)
- Axis Z (Quill): Enable (6), Step (7), Dir (8)
You can compile this project using PlatformIO CLI or the Arduino IDE with the ESP32 core installed.
# Clone the repository
git clone <YOUR_REPOSITORY_URL>The compiled binary should be successfully flashed via the micro-USB port on your TinyBee board.
This project is licensed under the MIT License.
