Dual-arm SCARA pen plotter
A desk-sized plotter that writes a QR code and message at the flip of a switch. Version 3 adds a planetary stage to remove the backlash of low-cost motors.
- For
- Personal project
- Context
- Self-directed build at home
- My role
- Designer and programmer
- Year
- 2025–2026
- Gear reduction
- 6:1, so 12,288 steps per arm revolution
- Arm length
- 80 mm per link
- Firmware
- Inverse kinematics, G-code G0/G1 parser, homing, servo pen lift
- Tools
- Fusion 360, Arduino and C++, AccelStepper, 28BYJ-48 steppers, ULN2003 drivers, Hobby servo

Problem
The aim was a device that catches attention: flip a switch and it writes out a QR code and a short message, linking to a résumé or acting as a business card. The build itself shows the engineering, and it was a chance to learn arm kinematics properly.
Requirements
- Material cost under about $20 per plotter.
- Legible writing at a small scale.
- Self-contained, with a single switch to start.
Design
Most small arms put a motor at the shoulder and another at the elbow, so the shoulder has to carry the elbow motor around. A dual-arm SCARA puts both motors at the base instead. Each motor swings one upper arm, and the two forearms meet at the pen, forming a five-bar linkage. The moving parts stay light, which suits small, cheap stepper motors.
The concept comes from lingib’s dual-arm plotter on Instructables, which drives its arms with belts. I took the linkage idea and designed my own hardware and firmware around it.
Version 3 packs both motors and their gearing into one rounded, printed housing. The 28BYJ-48 steppers drive the arms through spur and planetary gears, and the arm hubs were redesigned to fit three ball-bearing planet gears. The overall reduction is 6:1, which turns the motor’s 2,048 steps into 12,288 steps per arm revolution for finer pen control.
3D model loads when you scroll here.
Version 3 from the Fusion 360 assembly. Select a part to see what it does.


Firmware
The firmware runs on an Arduino with two ULN2003 driver boards and a servo for the pen. It:
- solves the inverse kinematics of the five-bar linkage, turning an X–Y point into two shoulder angles;
- parses G0 and G1 G-code moves, from a stored pattern or over serial;
- homes both arms to known angles at start-up;
- runs both steppers together with AccelStepper so the pen moves smoothly.
Testing and iteration
Versions 1 and 2 drove the arms directly from 28BYJ-48 geared steppers, chosen to hit the cost target. Their gearboxes have so much backlash that the writing was not legible, and the pivot joints bound up under load.
Version 3 adds a tight-tolerance planetary stage at each arm. Each motor step becomes a smaller fraction of arm rotation, which gives finer resolution. Backlash in the motor gearbox is divided down by the same ratio, so it shrinks at the pen. The arms also get more torque, enough to drive through the pivots without binding.