Build step 01 / 05 ~3 min read
at the endA sliced plate on your printer: three parts, one plate, 1 h 28 min, 15.4 g.
Print it¶
One plate, 1 h 28 min, 15.4 g.
Send hardware/cad/head_plate.gcode.3mf to a Bambu X2D. PLA, 0.20 mm Standard, tree supports from the build plate, max z 36.4 mm. Other printers: head_plate.3mf is the unsliced plate, or the STLs below with supports on.
| part | cm³ | on the plate |
|---|---|---|
| yoke | 8.89 | wall face down |
| body | 5.11 | flange down, open top up |
| lid | 1.23 | on its side |
STLs in hardware/cad/: yoke.stl, nicla_head_body.stl, nicla_head_lid.stl; the _oriented copies are already turned for the plate.

Orientation is measured, not guessed (fitcheck_print.py): any face over 30 mm² in the air, or a bridge past 10 mm, gets supports. The first plate went out without them and scrambled.
Every plate¶
The head is one plate; the body and the wrist cradle add four. The last card is the stock SO-101 follower for anyone starting without a kit. Every number comes from the sliced file itself, rebuilt on each docs build.
Printability, learned the hard way¶
The first plate shipped in whatever orientation the CAD exported and nobody measured it. It scrambled. fitcheck_print.py now measures every part in its plate orientation: overhang past 45°, flat ceiling hanging in air, longest bridge, and the area on the bed.
| part | as first exported | now | how |
|---|---|---|---|
| yoke | 1449 mm² overhang, 1403 mm² ceiling in air (the 26 mm flange as a mushroom), 46 mm bridge | 279 mm² overhang, 7.5 mm bridge, 1289 mm² on the bed | wall face down, rotated −90° about X. Six candidates measured; flipping was no better than as-is because the servo pocket became the ceiling. |
| body | 545 mm² overhang, worst 189 mm² at the cavity roof | 342 mm², cavity opens up so the fit surfaces print clean | flipped 180° about X, flange down |
| lid | 107 mm² overhang, 20.7 mm bridge | 13.4 mm², 10.0 mm bridge, support-free | on its side |
The rule that came out of it: any face over 30 mm² in the air or a bridge past 10 mm gets tree supports from the build plate, and the slicer is driven from the repo (slice_plate.py) so the supports are in the .3mf, not in someone's memory. The remaining 279 mm² on the yoke is the underside of the 24 mm boss, a horizontal cylinder; tree supports carry it.
A second lesson is in the numbers on The head: printed inner dimensions come back 0.1 to 0.2 mm undersize, so every fit in this design is 0.5 mm per side or wider.
After printing¶
- Board slides in through the lid face by hand, under the two lips.
- Servo 6 drops into the yoke, four tabs flat on the wall.
- Lid clicks on with thumb pressure.
- Screws at hand: 2 × M2.5 × 5, 4 × M2 × 4 self-tap, plus the four horn screws from the handle.
Regenerate from source: python hardware/cad/yoke.py && python hardware/cad/nicla_head.py && python hardware/cad/slice_plate.py. Then put it together.