Shell: EXO-140 … 144
The PETG shell carries the boards, the hub, the battery and the five cameras. It is five printed parts: the crown
(EXO-140), the front band (EXO-141), the back band with the hub pod (EXO-142), the splice tabs (EXO-143) and the
battery cover (EXO-144). The source is exo/shell_v1.py. Its outputs are out/step/EXO-14x.step (head frame),
out/stl/EXO-14x.stl (print orientation) and out/shell_v1_report.json (every check, the standoff table, the cable
list).
uv run python -m exo.shell_v1 --slice # ~15 min on 20 cores; --slice adds CuraEngine time and mass
It is built from the boards as made: out/pcb/poly/boards.json gives each board's frame, outline, M2 holes and FPC
connectors, and out/pcb/poly/placement.json gives every part. The hub comes from out/pcb/hub/hub_geom.json and the
cameras from out/pcb/camera/placement.json. Change a board and rebuild; never edit the outputs.
Wall
A main board's stack, out from the scalp:
- the spring pin;
- the contact board, 1.0 mm;
- the DF40 gap, 1.5 mm;
- the controller, 1.0 mm;
- the tallest part on the controller's outer face: the FPC connectors, taken as 1.9 mm with the flip actuator and the cable's first bend.
A filler has only the contact board, with its parts on the outer face. Part heights are datasheet maxima taken from the placement.
The wall is one ellipsoid layer, as close to the head as the stacks allow. At every outline corner of every board, the stack must clear the inner face by at least 0.5 mm, measured as a true 3D distance. That puts the inner face 16.5 mm and the outer face 18.9 mm off the scalp. The wall is 2.4 mm thick: six perimeters, solid.
Standoffs
There is a standoff on each of the 139 hole sites: three per board, two on the smallest fillers. Each one runs along the board's normal from the shell's inner face down to the board:
- on a main board it lands on the controller's outer face;
- on a filler it lands on the contact board's outer face.
The standoff has two parts:
- Neck. Ø4.4. It stands inside the 2.2 mm keep-out that the placer leaves round every hole, so it touches no part.
- Body. Ø7, past the parts. Where a neighbouring board comes close, the body is thinner (Ø6.2 on three of them).
Each board is fixed with an ISO 7380 M2 button-head screw, put in from the scalp side. The Ø3.5 head sits among the pins and clears every scalp-face pad by at least 0.25 mm. The screw cuts its own thread in a Ø1.7 pilot in the PETG. There is no heat-set insert: an M2 insert needs a Ø3.2 hole, which would leave 0.6 mm of wall in the Ø4.4 neck.
- Main boards. M2 × 8: through the contact board, a Ø4 × 1.5 nylon spacer and the controller, with 4.5 mm of thread in the standoff.
- Fillers. M2 × 6, with 5.0 mm of thread.
Every pilot keeps at least 0.6 mm of PETG under the outer face, or under the floor of a channel where one runs over it.
Cables
There is one 0.5 mm FFC per link:
- each filler to its controller (12-way, or 16-way for F01–F04);
- each controller to a hub port (12-way);
- each camera to a hub camera port (12-way).
Behind every FPC connector, a 4.5 mm slot through the wall starts at the connector mouth. The cable bends straight up through it. Where a standoff is in the way, the slot moves along the cable or to one side, or folds back over the connector.
On the outside the cables lie in channels cut 0.9 mm into the outer face, laid as a harness in two layers:
- Fillers go first, each on the shortest path over the face that keeps clear of the cables already laid. They cross no other filler, except where two converge on one controller, whose connectors sit closer than two channels.
- Controller and camera cables go next, longest first, to the hub ports the assignment gives them (least total length round the fillers). They don't cross each other. They either share a channel, stacked flat on an earlier hub cable's centre line (up to four), or stay clear of it. So they gather into trunks: a ring round the crown, and a run along the band into the pod. Where one has to pass over a filler, it crosses square. The deepest stack, fillers included, is six cables (0.9 mm).
- Every channel keeps 1 mm off the other boards' slots and the camera cradles, and its edge stays at least 1 mm inside the rim. Each path is pulled taut into straight legs: a flat cable turns by folding, not by bending in its plane.
Controller and camera cables enter the pod through a slot in its wall facing each of the hub's 21 ports, then drop to the edge connector. Four camera ports are on the pod's bottom wall, so the rim drops 21 mm below the pod's lowest corner. That leaves room for two cable lanes under the pod.
Every link has identical bottom-contact HCTL connectors at both ends, wired pin n to pin n. Between two identical
connectors that mapping needs an opposite-side-contact (Type B) jumper whatever the route; the cable takes its one
half turn as a fold at a slot. fpc in the report lists each link's path and order length (path, slot rises, 3.5 mm
in each connector, +10 %, rounded up to 10 mm; where that passes the longest in stock, 400 mm, but leaves at least
10 mm of slack, 400 mm), and fpc_order gives the totals:
| link | count | way | jumper lengths to order (mm) |
|---|---|---|---|
| filler → controller | 32 | 12 (28), 16 (4) | 70 – 180 |
| controller → hub | 16 | 12 | 70 – 400 |
| camera → hub | 5 | 12 | 170 – 400 |
Hub pod
The hub sits on the back midline at head z = −30.5 mm. That is the pose exo/quad_layout.py's hub_box reserves,
checked again here against the real boards. Its scalp face is 7.6 mm off the headform at the centre, so the REF and
BIAS spring pins see 8.0 mm to the scalp, the middle of Mill-Max's recommended travel.
The pod is a box over the hub, 3.5 mm bigger than the board on every side so the cables can turn down into the edge connectors. The hub hangs from its flat ceiling on four standoffs with M2 × 6 screws. Any board standoff whose wall the pod takes away stands on a pillar up to the ceiling.
On top of the ceiling sits the battery compartment, for a MaxAmps Lipo-2000-1S-Pack-10: 70 × 45 × 9 mm, 2000 mAh, 54 A continuous, enough for the hub's 3.33 A (3.79 A peak) with five cameras running. The cell lies with its long side across the head, inside a 72 × 47 × 10 mm pocket. It is moved as far up the pod as it fits, so the cell stays off the ESP32 antenna's keep-out at the hub's bottom edge. EXO-144 closes it, held by four M2 × 5 screws into M2 × 3 heat-set inserts.
USB-C. The receptacle is on the hub's bottom edge. A 14 × 8 mm tunnel runs straight down from it through the pod wall and opens on the outer face below the pod, at head z ≈ −83 mm, low on the back of the cuff (11 mm above the hem). The 3D view draws the port level and half-way up the cuff. Putting the real port there would need a panel-mount receptacle in the shell wall, wired to the hub.
Cameras
The five EXO-450 boards sit in cradles on the outer face, in the cuff zone. Each board rests on a 1 mm ledge round its edge, with its back parts in the recess over the shell. The walls round the board are:
- open on the right, for the ESP32 antenna that overhangs that edge;
- notched on the left for the camera tail, and at the bottom for the hub cable.
Two nubs on the top wall and one on the left wall hold the board in, and the cuff's knit holds it too. The board has no mounting holes.
Seams and printing
- Crown seam. The crown is cut on a plane near z = 92.5 mm. No plane misses every standoff, so each standoff the plane would cut stays whole on the crown, on a tongue of wall round it, and the band gets the matching notch.
- Band seams. The band splits front and back on two vertical half-planes that meet nothing.
- Splice tabs. Tabs, 1.2 mm thick, bridge all three seams on the inner face, clear of the boards. They are epoxied in.
Print orientation:
- The crown prints dome down, so its standoffs grow upward and its tongues are on top.
- The bands print upside down on the crown-seam plane.
Every shell part has more than 2 % of its area in downward faces steeper than 50°. They are printed with tree supports, and that is how they are sliced. The tabs and the cover print flat without supports.
The rim follows the head 10 mm under the beanie line, then drops over the back under the pod. Donning is checked as one puts on a helmet with a low back: back first, then the front rolled down. Along that path the rim, the board faces, the screw heads and the hub stay clear of the head, and the spring pins, at their hard stop, press at most 1 mm into the hair.
Print settings (Ender-3 V3 SE, PETG, 0.4 nozzle)
- 0.2 mm layers, 6 walls (the 2.4 mm wall prints solid), 5 top and bottom layers, 20 % infill.
- 240 °C nozzle, 80 °C bed, 60 mm/s, 40 % fan.
- Brim; tree supports on the crown and the two bands.
About 57 h and 567 g in all.