00 / Open source build

Build the JARY-Bot

Build Jary. Modify it. Make it yours. Everything you need to build the JARY-Bot educational humanoid from scratch: the full bill of materials, printing parameters for every part, the 15-DOF joint map, wiring, step-by-step assembly, firmware setup and calibration. Download the latest files, explore the source code, follow the documentation, or contribute to the project on GitHub.

01 / Overview

Overview

Degrees of freedom

15

Build time

20–30 h

Print time

90–130 h

Skill level

Intermediate

The JARY-Bot is an open source educational humanoid. The mechanical structure is 3D printed from files you can download, and the electronics, actuators and hardware come from the Bearbot component kit. Read this whole page before ordering filament — printing is the longest part of the project.

02 / Joint map (15 DOF)

Joint map (15 DOF)

GroupDOFJoints
Left leg6Hip Yaw · Hip Roll · Hip Pitch · Knee Pitch · Ankle Pitch · Ankle Roll
Right leg6Hip Yaw · Hip Roll · Hip Pitch · Knee Pitch · Ankle Pitch · Ankle Roll
Left arm3Shoulder Pitch · Shoulder Roll · Elbow Pitch
Right arm3Shoulder Pitch · Shoulder Roll · Elbow Pitch

Assign servo bus IDs in this order so the firmware defaults match your build: left leg 1–6, right leg 7–12, left arm 13–15, right arm 16–18 (only 15 actuators are used; unused IDs are skipped in the default configuration).

03 / Bill of materials

Bill of materials

Actuation & control

ItemQtyNotes
FEETECH ST3215 serial bus servo15Daisy-chained on a single serial bus
Serial bus servo driver board1Bridges ESP32-S3 UART to the servo bus
Servo bus cables15+Include spares of each length
ESP32-S3 controller1Main compute, Wi-Fi and USB
OV5640 camera module1Head / vision
MPU6050 IMU1Balance and orientation

Power & protection

ItemQtyNotes
LiPo 2S 7.4 V battery1Sized for servo peak current
5 V buck converter1Logic rail for controller and camera
2200 µF / 16 V capacitor1Absorbs servo current spikes
Power switch1Main cut-off
Fuse + holder1Inline on the battery positive lead
XT60 connector pair1Battery connection
Silicone power & ground wireBattery-to-bus distribution

Fasteners

ItemQtyNotes
M3 screws60–100Mixed lengths, socket head
M3 nuts30–50Plus a few nyloc
M3 washers40–60
M3 heat-set inserts20–30Installed with a soldering iron
Nylon / PTFE washers8–16Low-friction joint faces
Removable threadlocker1Medium strength only
Rubber feetoptionalExtra grip on smooth floors

Wiring supplies

ItemQtyNotes
Servo bus extensionsRoute across hips and shoulders
JST / Dupont cablesIMU, camera and sensors
Heat-shrink tubingAll power joints
Cable sleeveTidy limb routing

04 / 3D printing

3D printing

Nozzle

0.4 mm

Layer height

0.2 mm

Print temperature

PETG 235–245 °C · PLA+ 205–215 °C · TPU 225 °C

Bed temperature

PETG 80 °C · PLA+ 60 °C · TPU 45 °C

Filament needed

PETG or PLA+ 1.5–2.5 kg · TPU 100–200 g

Total print time

Approx. 90–130 h depending on printer

Orientation rule

Load paths across layers — never along a thin cross-section

PartMaterialWallsInfillSupportsNotes
PelvisPETG or PLA+440%YesHighest load — do not reduce infill
Thighs (L/R)PETG or PLA+430%MinimalPrint upright for layer strength
Knee cradlesPETG or PLA+440%YesCheck servo horn fit before assembly
Shins (L/R)PETG or PLA+430%Minimal
Ankles PART A / PART BPETG or PLA+440%YesTwo-piece joint, print both mirrored
FeetPETG or PLA+435%NoFlat face on the bed
TorsoPETG or PLA+325%YesLargest part — check bed size
Upper arm / forearmPETG or PLA+325%MinimalMirror for left and right
Shoulder mountsPETG or PLA+440%Yes
Head & camera housingPETG or PLA+320%YesCamera window printed without supports
Foot pads / gripsTPU 95A320%NoSlow down to 25 mm/s

05 / Tools you need

Tools you need

  • 2.0 / 2.5 mm hex drivers
  • Small Phillips screwdriver
  • Soldering iron with a heat-set insert tip
  • Flush cutters and needle-nose pliers
  • Digital multimeter
  • USB-C cable and a computer
  • Calipers (for checking printed tolerances)
  • Heat gun or lighter for heat-shrink

06 / Assembly, step by step

Assembly, step by step

  1. 01

    Prepare the printed parts

    Deburr every part, clear support material and test-fit each servo body before assembly. Install all M3 heat-set inserts with the soldering iron, keeping them perpendicular to the surface.

  2. 02

    ID and centre every servo

    Before mounting, connect each ST3215 to the driver board one at a time, assign its bus ID from the joint map and drive it to its centre position. A servo mounted off-centre cannot be corrected later without disassembly.

  3. 03

    Build the legs

    Assemble each leg from the hip outward: Hip Yaw, Hip Roll, Hip Pitch, Knee Pitch, Ankle Pitch, Ankle Roll. Fit nylon washers on rotating faces and use removable threadlocker on the horn screws only.

  4. 04

    Assemble the pelvis and torso

    Join both legs to the pelvis, then mount the torso. Route the leg servo bus cables up through the pelvis before closing the torso — leave slack for full hip travel.

  5. 05

    Build the arms

    Assemble Shoulder Pitch, Shoulder Roll and Elbow Pitch per side, mount the shoulder brackets to the torso and route each arm bus cable inside the shoulder.

  6. 06

    Head, camera and IMU

    Fit the OV5640 into the head housing and connect its ribbon to the ESP32-S3. Mount the MPU6050 rigidly near the centre of the torso with its axes aligned to the robot frame.

  7. 07

    Install electronics and power

    Mount the ESP32-S3, servo driver, buck converter and capacitor in the torso. Wire the battery through the XT60, fuse and switch before anything else.

  8. 08

    Bench test before standing

    With the robot supported off the floor, power up and sweep every joint through its range. Only stand the robot once every joint direction and limit is verified.

07 / Wiring & power

Wiring & power

  • Battery → XT60 → fuse → main switch → power distribution.
  • Servo bus power comes straight from the 7.4 V rail; place the 2200 µF capacitor at the distribution point.
  • Buck converter drops 7.4 V to a clean 5 V rail for the ESP32-S3 and camera. Never power 15 servos through the controller board.
  • All grounds must be common: battery, buck output, servo bus and controller.
  • Servo driver connects to the ESP32-S3 over UART (TX/RX crossed, shared ground).
  • MPU6050 uses I²C (SDA/SCL + 3.3 V + GND); keep the run short and away from power wires.
  • Check polarity with a multimeter before the first connection — a reversed battery will destroy the controller.

08 / Firmware & calibration

Firmware & calibration

Flash the controller

Connect the ESP32-S3 over USB-C and flash the JARY-Bot firmware. The board exposes a Wi-Fi access point on first boot for configuration.

Verify the servo bus

Run the bus scan: all 15 IDs must answer. A missing ID is almost always a cable or a duplicate ID, not a dead servo.

Set zero positions

Place the robot in the reference pose (legs straight, arms down) and store the offsets. Every motion depends on these zeros.

Set joint limits

Store the minimum and maximum angle per joint so no printed part can be driven into itself.

Calibrate the IMU

Leave the robot still and level while the gyro and accelerometer bias is captured.

First motions

Start with the seated and standing balance demos before attempting walking gaits.

09 / Safety

Safety

  • LiPo batteries can burn: charge in a fireproof bag, never leave charging unattended and never use a swollen pack.
  • Fifteen servos can move fast and pinch — keep fingers clear of joints when powered.
  • Always power down before connecting or disconnecting a servo on the bus.
  • Work over a soft surface and hold or suspend the robot during the first standing tests.
  • Adult supervision is required for soldering, heat-set inserts and battery handling.

10 / Files & license

Files & license

The JARY-Bot is open source: the printable STL files, firmware and build documentation are shared so you can print, build, modify and learn from the robot. Send us a message and we will point you to the current release of the files and the license terms.