Build it yourself

Hardware

Printed parts, small motors, one microcontroller and some cord. Here is what goes into the prototype and where to find the files.

What the prototype is made of#

The current prototype is a thumb and an index finger with 8 joints. It has three layers:

Mechanics

Printed skeleton

The bones of the fingers, printed in PLA or PETG. Soft TPU fingertip pads are planned for a better grip.

Motion

Tendons

Each joint has one closed loop of cord wound on a spool with a 1 cm radius. The motor turns the spool one way to bend the joint and the other way to straighten it.

Power

Motors and electronics

8 small stepper motors, one per joint, each with its own driver board, all controlled by one ESP32-S3.

Design files#

All hardware files live in the hardware/ folder on GitHub.

FolderWhat's inside
hardware/cad/The source design: Fusion 360 files, plus STEP files that open in any CAD program
hardware/print/Ready-to-print STL and 3MF files, with print settings
hardware/electronics/Wiring, pin map and power budget
hardware/robot_description/The robot model exported from Fusion 360, used by the simulation

Bill of materials#

Everything needed for the thumb and index prototype, plus the planned servo upgrade.

Electronics
PartQtySpecNotes
ESP32-S3-N16R8 development board116 MB flash, 8 MB octal PSRAM (kept disabled), native USB-CRuns the firmware. PSRAM must stay off because its pins (GPIO 35-37) drive motors 6 and 7.
28BYJ-48 stepper motor, 5 V8Geared stepper, gear ratio about 63.7:1, about 4076 half-steps per output turn, up to about 15 rpmOne per joint. Open loop: no position feedback, so joints are straightened by hand before power-up.
ULN2003 driver board84 inputs per board, one board per stepperUsually sold together with the 28BYJ-48.
5 V power supply for the motors15 V, 2 A, separate from USBClose to the limit for 8 motors, so the firmware switches idle motors off.
USB-C cable1Data-capable USB-C cableConnects the ESP32-S3 to the computer. Power-only cables will not work.
Mechanics
PartQtySpecNotes
PLA or PETG filamentA few hundred grams per hand1.75 mmFor the rigid skeleton. The 3D model works out to about 131 g of solid plastic; printed parts are usually lighter.
Tendon lineA few metres per hand0.4 mm fishing lineOne closed loop per joint, wound on a 2 cm spool on the motor.
TPU filament PlannedA few grams per fingertip padFlexible filamentFor soft fingertip pads (planned).
Planned upgrade: smart servos
PartQtySpecNotes
Feetech SCS0009 smart servo Planned165 V, serial bus (half-duplex), addressable IDs, position feedbackReplaces the steppers in Phase 2. Daisy-chained on one cable and no manual homing.
Feetech FE-URT-1 signal converter1Connects the ESP32-S3 serial port to the servo busNeeded for the servo upgrade in Phase 2.
5 V power supply for the servos Planned15 to 6 V, at least 15 ASized for 16 servos, split into 3 branches with capacitors. The 5 V / 2 A supply is only for the stepper prototype.

Updated

The final settings haven't been written down yet. These are common starting points for small mechanical parts, not tested values for this hand.

SettingStarting point
MaterialPLA or PETG
Nozzle0.4 mm
Layer height0.2 mm (0.12 to 0.16 mm for small finger parts)
Walls3 or more perimeters, so joint holes stay strong
Infill20 to 40 %
SupportsOnly where needed; orient parts to avoid them in joint holes
OrientationLay parts so layers don't split along the direction the tendon pulls

The simulation model assumes solid plastic and works out to about 131 g. Real printed parts are lighter because they aren't solid.

Motors#

Each joint is driven by a 28BYJ-48 stepper motor (5 V) through a ULN2003 driver board.

  • A stepper motor turns in small, exact steps. This one has a built-in gearbox (about 63.7:1), so it makes about 4076 half-steps per turn of its output shaft.
  • With the 1 cm spool, one turn pulls about 62.8 mm of cord. That is roughly 0.015 mm of cord per half-step.
  • Top speed is about 15 turns per minute. Slow, but smooth and strong for its size.
  • They are open loop: the motor doesn't report where it is. The firmware counts steps instead. So before power-up, every joint is straightened by hand, and that pose counts as zero.

How many steps it takes to bend each joint by a given angle depends on how the tendon wraps around that joint. That number is measured per joint during calibration.

Next: smart servos#

The plan is to replace the steppers with Feetech SCS0009 smart servos. They report their own position, so no more straightening by hand. They also share one data cable instead of four wires each, connected to the ESP32-S3 through an FE-URT-1 adapter.

Electronics#

PartRole
ESP32-S3-N16R8The microcontroller. Receives joint angles over USB-C and runs the motors
8 × ULN2003Driver boards that switch the motor coils on and off
5 V / 2 A supplyPowers the motors, separately from USB

Power budget. Each motor draws around 200 to 250 mA per coil when it's switched on, so 8 motors come close to the 2 A limit. The firmware switches a motor's coils off after 1 second without motion.

Pin notes for the ESP32-S3-N16R8. 8 motors × 4 wires need 32 pins, which pushes this board to its limits:

  • GPIO 35, 36 and 37 are normally used by the board's extra memory (PSRAM). They only work for motors because PSRAM is switched off in the firmware.
  • GPIO 0 decides the boot mode at reset. The driver board can pull it low, which may stop the board from starting normally while motor 7 is connected.
  • GPIO 43 is where the board prints startup messages, so motor 8 may twitch at reset. The firmware talks only over USB.
  • GPIO 19 and 20 are the USB connection and are never used for motors.

The full pin map is in firmware/include/config.h. The servo upgrade removes most of these problems, since all servos share one cable.

Wiring diagram#

Each motor connects to its own ULN2003 board, and each board to four pins on the ESP32-S3 (see the pin map in Electronics).