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.
| Folder | What'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.
| Part | Qty | Spec | Notes |
|---|---|---|---|
| ESP32-S3-N16R8 development board | 1 | 16 MB flash, 8 MB octal PSRAM (kept disabled), native USB-C | Runs the firmware. PSRAM must stay off because its pins (GPIO 35-37) drive motors 6 and 7. |
| 28BYJ-48 stepper motor, 5 V | 8 | Geared stepper, gear ratio about 63.7:1, about 4076 half-steps per output turn, up to about 15 rpm | One per joint. Open loop: no position feedback, so joints are straightened by hand before power-up. |
| ULN2003 driver board | 8 | 4 inputs per board, one board per stepper | Usually sold together with the 28BYJ-48. |
| 5 V power supply for the motors | 1 | 5 V, 2 A, separate from USB | Close to the limit for 8 motors, so the firmware switches idle motors off. |
| USB-C cable | 1 | Data-capable USB-C cable | Connects the ESP32-S3 to the computer. Power-only cables will not work. |
| Part | Qty | Spec | Notes |
|---|---|---|---|
| PLA or PETG filament | A few hundred grams per hand | 1.75 mm | For the rigid skeleton. The 3D model works out to about 131 g of solid plastic; printed parts are usually lighter. |
| Tendon line | A few metres per hand | 0.4 mm fishing line | One closed loop per joint, wound on a 2 cm spool on the motor. |
| TPU filament Planned | A few grams per fingertip pad | Flexible filament | For soft fingertip pads (planned). |
| Part | Qty | Spec | Notes |
|---|---|---|---|
| Feetech SCS0009 smart servo Planned | 16 | 5 V, serial bus (half-duplex), addressable IDs, position feedback | Replaces the steppers in Phase 2. Daisy-chained on one cable and no manual homing. |
| Feetech FE-URT-1 signal converter | 1 | Connects the ESP32-S3 serial port to the servo bus | Needed for the servo upgrade in Phase 2. |
| 5 V power supply for the servos Planned | 1 | 5 to 6 V, at least 15 A | Sized for 16 servos, split into 3 branches with capacitors. The 5 V / 2 A supply is only for the stepper prototype. |
Updated
Print settings#
The final settings haven't been written down yet. These are common starting points for small mechanical parts, not tested values for this hand.
| Setting | Starting point |
|---|---|
| Material | PLA or PETG |
| Nozzle | 0.4 mm |
| Layer height | 0.2 mm (0.12 to 0.16 mm for small finger parts) |
| Walls | 3 or more perimeters, so joint holes stay strong |
| Infill | 20 to 40 % |
| Supports | Only where needed; orient parts to avoid them in joint holes |
| Orientation | Lay 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#
| Part | Role |
|---|---|
| ESP32-S3-N16R8 | The microcontroller. Receives joint angles over USB-C and runs the motors |
| 8 × ULN2003 | Driver boards that switch the motor coils on and off |
| 5 V / 2 A supply | Powers 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).