Build one
Bill of materials
Start with a bench order of two tile pairs, not a whole helmet: two tiles prove the contacts, the noise and the board stack before you buy sixteen. Print the shell in parallel.
Prices are research figures from October 2026, not quotes. Nothing has been ordered yet. Check stock before you buy.

What it costs
| item | estimate | basis |
|---|---|---|
| Electronic parts, 2 tile pairs | ≈ $373 (MCP6V31) / ≈ $304 (OPA391) | ≈ $186.50 / $151.80 per tile pair at JLC library prices |
| JLC PCBA fees | ≈ $280 | setup, stencils, about 20 extended part types, joints, handling, consignment |
| Bare boards, 6-layer 1.0 mm ENIG | quote needed | EXO-420 standard; EXO-410 HDI has no published price |
| PAT9125EL optical sensors, MOQ 125 | ≈ $705 (8 used) | WPG Americas $5.64; the rest covers a helmet and spares |
| Ball-pins, ≈ 130 prototype | ≈ $130–390 + setup | $1–3 a pin for a prototype lot |
| Screws, spacers, FPCs, PETG, epoxy | ≈ $60–90 | retail packs |
| Total cash out, before board fabrication | ≈ $1,550–1,850 | the sensor MOQ is the largest single line |
In order
- Settle the open decisionsFPC pinout reversal safety, op-amp choice, the LDO's height in the board gap, panelization. Two of them change copper, so they come before the board order.
- Finish EXO-410 routing, then quote both boards6-layer 1.0 mm ENIG at JLCPCB. EXO-410 needs HDI (blind laser vias) and via-in-pad. Panelize 2 × 2: each board is 44.2 mm, under the 70 mm Standard PCBA minimum.
- Consign the optical sensorsPAT9125EL-TKMT isn't stocked at LCSC. Buy from WPG Americas (MOQ 125) and consign 8 to JLC.
- Source the op-ampsMCP6V31UT-E/LT through JLC Global Sourcing, or switch to OPA391DCKR (same pinout, stocked).
- Quote the ball-pinsA bench lot is about 130 pins. The six lengths differ only in the barrel.
- Buy the mechanical hardwareScrews, spacers, FPC jumpers and PETG (Order D below).
- Print and assemble the shell34.7 h of printing, 428 g PETG.
- Bring up two tiles on the benchWithout the hub a tile needs 3.6 V, a 2.048 MHz clock, SYNC and a 3 Mbaud UART on its FPC: a small breakout, a Pico or FTDI cable and a bench supply.
- Lay out the hubLand patterns, a 72 × 56 mm 4-layer outline, placement and routing. Then the 16-tile order.
Order A · Boards and assembly (JLCPCB)
Gerbers, BOM and pick-and-place files for each board are on the plans page.
| EXO-410 contact board | EXO-420 controller board | |
|---|---|---|
| size, layers | 44.2 mm chamfered square, 6 layers, 1.0 mm | same outline, 6 layers, 1.0 mm |
| finish | ENIG; nut pads Ø4.2 | ENIG |
| vias | 0.25/0.15 through (via-in-pad, filled); blind laser 0.225/0.075 bottom → In4 under the ADS131M08s | 0.3/0.2 through |
| trace / space | 0.09 / 0.09 mm | 0.1 / 0.1 mm |
| assembly | both sides, 0201 parts; panelize 2 × 2 with rails and fiducials | both sides |
| status | routing in progress: best run has 4 open nets, no shorts | ready |
EXO-410 contact board
| value | designators | footprint | LCSC | MPN | per tile | 2 tiles | 16 tiles |
|---|---|---|---|---|---|---|---|
| 100k 1% | RA1,RB1,RA2 … (120) | R 0201 0603Metric | C106224 | RC0201FR-07100KL | 120 | 240 | 1920 |
| MCP6V31UT-E/LT | U1,U2,U3 … (62) | SC70-5 | C623527 | MCP6V31UT-E/LT | 62 | 124 | 992 |
| M1.6 SMT nut | J1,J2,J3 … (60) | SMT Nut M1.6 Hex3.18 Pad4.2 | C2928168 | SMTSO1615MTJ | 60 | 120 | 960 |
| 1uF X5R 10V | CC1,CC2,CC3 … (60) | C 0201 0603Metric | C2846675 | FH 0201 1uF 10V X5R | 60 | 120 | 960 |
| 2.2M 1% | RH1,RH2,RH3 … (60) | R 0201 0603Metric | C474576 | RC0201FR-072M2L | 60 | 120 | 960 |
| 1uF X7R 10V | CR1,CA1,CD1 … (17) | C 0402 1005Metric | C52923 | CL05A105KA5NQNC | 17 | 34 | 272 |
| ADS131M08IRSNR | UA1,UA2,UA3 … (8) | TI RSN WQFN-32 4x4mm P0.4mm EP2.8mm | C5124126 | ADS131M08IRSNR | 8 | 16 | 128 |
| 220nF X7R | CP1,CP2,CP3 … (8) | C 0201 0603Metric | C18164549 | CCTC 0201 220nF 10V X5R | 8 | 16 | 128 |
| 100nF X7R | CF1,CF2,CF3 … (8) | C 0201 0603Metric | C22435929 | HRE 0201 100nF 16V X7R | 8 | 16 | 128 |
| 100nF | CUB1,CUB2,CSB1 … (6) | C 0201 0603Metric | C22435929 | HRE 0201 100nF 16V X7R | 6 | 12 | 96 |
| DF40C-10DS-0.4V(51) | J200,J201,J202 … (4) | Hirose DF40C-10DS-0.4V | C424636 | DF40C-10DS-0.4V(51) | 4 | 8 | 64 |
| PAT9125EL-TKMT | US1,US2,US3 … (4) | PixArt PAT9125EL LGA-8 | consigned | PAT9125EL-TKMT | 4 | 8 | 64 |
| 4.7uF X5R 6.3V | CSA1,CSA2,CSA3 … (4) | C 0402 1005Metric | C380302 | CCTC 0402 4.7uF 6.3V X5R | 4 | 8 | 64 |
| 100k 0.1% | RRA,RRB | R 0402 1005Metric | C852472 | RT0402BRD07100KL | 2 | 4 | 32 |
| SN74LVC1G17DCKR | UB1,UB2 | SC70-5 | C10425 | SN74LVC1G17DCKR | 2 | 4 | 32 |
| 4.7uF X5R 10V | CL1,CL2 | C 0603 1608Metric | C19666 | CL10A475KO8NNNC | 2 | 4 | 32 |
| 2.2M 1% | RR2 | R 0402 1005Metric | C11490 | 0402WGF2204TCE | 1 | 2 | 16 |
| TPS7A2033PDBVR | UL1 | SOT-23-5 | C2862740 | TPS7A2033PDBVR | 1 | 2 | 16 |
| 3.3k | RSDIO | R 0402 1005Metric | C25890 | 0402WGF3301TCE | 1 | 2 | 16 |
| 10uF X5R 10V | CBULK | C 0603 1608Metric | C19702 | CL10A106KP8NNNC | 1 | 2 | 16 |
| 10k | RMOT | R 0402 1005Metric | C25744 | 0402WGF1002TCE | 1 | 2 | 16 |
MCP6V31UT-E/LT has only a handful at LCSC: order through Global Sourcing or switch to OPA391DCKR (C2871876). For a full helmet, the DF40 receptacle and the M1.6 nuts need more stock than JLC holds today.
EXO-420 controller board
| value | designators | footprint | LCSC | MPN | per tile | 2 tiles | 16 tiles |
|---|---|---|---|---|---|---|---|
| 100nF | CF1,CM1,CM2 … (8) | C 0402 1005Metric | C1525 | CL05B104KO5NNNC | 8 | 16 | 128 |
| DF40C-10DP-0.4V(51) | J210,J211,J212 … (4) | Hirose DF40C-10DP-0.4V | C424635 | DF40C-10DP-0.4V(51) | 4 | 8 | 64 |
| 4.7uF X5R 10V | CL3,CL4 | C 0603 1608Metric | C19666 | CL10A475KO8NNNC | 2 | 4 | 32 |
| 15pF C0G | CX1,CX2 | C 0402 1005Metric | C1548 | 0402CG150J500NT | 2 | 4 | 32 |
| 1uF | CM7,CM9 | C 0402 1005Metric | C52923 | CL05A105KA5NQNC | 2 | 4 | 32 |
| TPS7A2033PDBVR | UL2 | SOT-23-5 | C2862740 | TPS7A2033PDBVR | 1 | 2 | 16 |
| RP2040 | UM1 | RP2040 QFN-56 7x7mm P0.4mm EP3.2mm | C2040 | RP2040 | 1 | 2 | 16 |
| W25Q16JVSNIQ | UF1 | SOIC-8 3.9x4.9mm P1.27mm | C2456211 | W25Q16JVSNIQ | 1 | 2 | 16 |
| X322512MSB4SI | Y1 | Crystal SMD 3225-4Pin 3.2x2.5mm | C9002 | X322512MSB4SI | 1 | 2 | 16 |
| 1k | RX1 | R 0402 1005Metric | C11702 | 0402WGF1001TCE | 1 | 2 | 16 |
| 10k | RRUN | R 0402 1005Metric | C25744 | 0402WGF1002TCE | 1 | 2 | 16 |
| HC-FPC-05-10-12RLTAG | J100 | HCTL FPC 12P P0.5mm | C5213732 | HC-FPC-05-10-12RLTAG | 1 | 2 | 16 |
Order B · Consigned and globally sourced
| part | 2 tiles / helmet | source | price | note |
|---|---|---|---|---|
| PAT9125EL-TKMT laser optical sensor | 8 / 64 | WPG Americas | ≈ $5.64, MOQ 125 | consign to JLC |
| MCP6V31UT-E/LT op-amp | 124 / 992 | JLC Global Sourcing | ≈ $1.20–1.45 | or OPA391DCKR at JLC, $0.89 |
Order C · Ball-pins (custom)
| part | length | per helmet | order qty | barrel | CAD |
|---|---|---|---|---|---|
| EXO-5075 | 7.5 mm | 190 | 207 | 2.35 mm | STEP |
| EXO-5085 | 8.5 mm | 334 | 362 | 3.35 mm | STEP |
| EXO-5095 | 9.5 mm | 284 | 308 | 4.35 mm | STEP |
| EXO-5105 | 10.5 mm | 113 | 124 | 5.35 mm | STEP |
| EXO-5115 | 11.5 mm | 35 | 39 | 6.35 mm | STEP |
| EXO-5125 | 12.5 mm | 4 | 6 | 7.35 mm | STEP |
M1.6x0.35, hex 2.5 A/F, Ø2.0 barrel, Ø1.3 plunger, Ø3.0 ball, 1.5 travel, brass, Au over Ni. The bench tiles can all use one length (EXO-5095), since they don't sit in the shell.
Order D · Hardware and cables
| item | per helmet | 2-tile bench | note |
|---|---|---|---|
| M1.6 × 8 ISO 1207 slotted cheese head, A2 | 48 | 6 | Ø3.0 head: an M2 head would short the nut pads |
| Nylon spacer Ø4 × 1.5 mm, 2.2 bore | 48 | 6 | between the boards at each screw |
| M2 × 6 ISO 7380 button head (hub) | 4 | — | |
| M2 × 3 heat-set insert + M2 × 5 button head | 4 + 4 | — | battery cover |
| 12-pin 0.5 mm FPC jumper | 16 (1 × 80 mm, 2 × 150 mm, 3 × 200 mm, 2 × 250 mm, 3 × 300 mm, 4 × 350 mm, 1 × 400 mm) | 2 | lengths include 40 mm slack |
| LiPo pouch ≈ 4000 mAh, ≈ 60 × 50 × 8 mm | 1 | — | hub battery |
| PETG 1.75 mm, 1 kg | 1 | — | 428 g used |
| Slow epoxy, Kapton tape, 1 mm foam pad | 1 each | — | seams, cables, battery |
| M1.6 tap + Ø1.3 drill, M2 tap, slotted driver | tools | tools |
The shell
Ender-3 V3 SE, PETG, 0.4 mm nozzle, 0.2 mm layers, 6 walls, 5 top and bottom layers, 20 % infill, 240/80 °C, brim. The STLs are already in print orientation.
| part | what | orientation | supports | time | PETG | files |
|---|---|---|---|---|---|---|
| EXO-140 | Crown | split plane on the bed | tree, roof + standoff tips | 12.3 h | 153 g | STL · STEP |
| EXO-141 | Band, front | upside down on the split plane | none | 4.5 h | 73 g | STL · STEP |
| EXO-142 | Band, back + hub pod | upside down on the split plane | tree, under the pod | 15.4 h | 183 g | STL · STEP |
| EXO-143 | Splice tabs (20) | flat | none | 2.0 h | 10 g | STL · STEP |
| EXO-144 | Battery cover | flat | none | 0.5 h | 9 g | STL · STEP |
| total | 34.7 h | 428 g |
Assembly
- Remove supports and check every standoff face is flat: it is the board datum.
- Tap the 48 tile pilots M1.6 and the 4 hub pilots M2, 5–6 mm deep. Heat-set the 4 battery-cover inserts.
- Glue the front band to the back band with the band tabs, then the crown with the ring tabs. Dry-fit first.
- On the bench: screw the ball-pins into each contact board's nuts, mate the two boards on their four DF40 pairs, plug the FPC in.
- Mount the hub first, from inside, on its four standoffs.
- Mount the tiles from the crown down: FPC out through the tile's slot, a spacer at each hole, M1.6 × 8 from the scalp side between the pins. Snug only.
- Lay each FPC in its channel, tape every 40 mm or so, over the pod wall and down into the hub.
- Battery lead into the hub, pouch on a foam pad, cover on. Liner, beanie and retention dial last.
The hub (EXO-430)
Circuit and BOM only so far: no land patterns, outline or routing. Parts come to about $33 a board at JLC library prices.
| value | designators | footprint | LCSC | qty | ext |
|---|---|---|---|---|---|
| FT2232HL-REEL | UU1 | LQFP-64 10x10mm P0.5mm | C27882 | 1 | $7.80 |
| LMK1C1108PWR | UC1,UC2 | TSSOP-16 4.4x5mm P0.65mm | C2868241 | 2 | $4.22 |
| TPS2553DBVR-1 | UP1,UP2,UP3,UP4,UP5,UP6,UP7,UP8,UP9,UP10… | SOT-23-6 | C111738 | 16 | $3.84 |
| ESP32-S3-MINI-1-N8 | UW1 | ESP32-S3-MINI-1 | C2913206 | 1 | $3.37 |
| RP2350B | UM1,UM2 | RP2350B QFN-80 10x10mm P0.4mm (to draw) | C42415655 | 2 | $2.28 |
| W25Q16JVSNIQ | UF1,UF2 | SOIC-8 3.9x4.9mm P1.27mm | C131025 | 2 | $1.68 |
| MAX17048G+T10 | UFG | DFN-8-1EP 2x2mm P0.5mm EP0.8x1.6mm | C2682616 | 1 | $1.50 |
| HC-FPC-05-10-12RLTAG | J1,J2,J3,J4,J5,J6,J7,J8,J9,J10,J11,J12,J… | HCTL FPC 12P P0.5mm | C5213732 | 16 | $1.42 |
| BQ25895RTWR | UCH | WQFN-24-1EP 4x4mm P0.5mm EP2.7x2.7mm (check RTW) | C80200 | 1 | $1.38 |
| TPS63020DSJR | UB1,UB2 | Texas DSJ VSON-14-1EP 3x4mm P0.5mm (check) | C15483 | 2 | $1.18 |
| TLV333IDCKR | UA1,UA2,UA3 | SC70-5 | C181502 | 3 | $0.72 |
| SN74LVC244APWR | US1,US2 | TSSOP-20 4.4x6.5mm P0.65mm | C7668 | 2 | $0.40 |
| 22uF X5R 10V | CSY1,CSY2,CBA,CBI1,CBO10,CBO11,CBO12,CBI… | C 0805 2012Metric | 12 | $0.36 | |
| 2.048MHz | UO1 | Oscillator SMD Abracon ASE-4Pin 3.2x2.5mm | C2831386 | 1 | $0.32 |
| 93LC56BT-I/OT | UE1 | SOT-23-6 | C190271 | 1 | $0.28 |
| S3B-PH-SM4-TB(LF)(SN) | J21 | JST PH S3B-PH-SM4-TB 1x03-1MP P2.00mm Horizontal | C265101 | 1 | $0.21 |
| X322512MSB4SI | Y1,Y2,Y3 | Crystal SMD 3225-4Pin 3.2x2.5mm | C9002 | 3 | $0.20 |
| WPN4020H1R5MT | LB1,LB2 | L Sunlord WPN4020H | C98360 | 2 | $0.19 |
| 100nF | CPI1,CPI2,CPI3,CPI4,CPI5,CPI6,CPI7,CPI8,… | C 0402 1005Metric | 58 | $0.17 | |
| SM04B-SRSS-TB(LF)(SN) | J22 | JST SH SM04B-SRSS-TB 1x04-1MP P1.00mm Horizontal | C160404 | 1 | $0.17 |
| TPS7A2033PDBVR | UL3 | SOT-23-5 | C2862740 | 1 | $0.14 |
| MPL2016S3R3MHT | LV1,LV2 | L 0806 2016Metric | C98336 | 2 | $0.13 |
| TYPE-C-31-M-12 | J20 | USB C Receptacle HRO TYPE-C-31-M-12 | C165948 | 1 | $0.13 |
| USBLC6-2SC6 | UD1 | SOT-23-6 | C7519 | 1 | $0.12 |
| FXL0530-2R2-M | LCH | L cjiang FXL0530 | C177247 | 1 | $0.12 |
| 4.7uF X5R 10V | CL5,CL6,CVI1,CVO1,CVI2,CVO2,CFB1,CFB2,CV… | C 0603 1608Metric | 10 | $0.10 | |
| M1.6 SMT nut (REF contact) | J30 | SMT Nut M1.6 Hex3.18 Pad4.2 | C2928168 | 1 | $0.07 |
| M1.6 SMT nut (BIAS contact) | J31 | SMT Nut M1.6 Hex3.18 Pad4.2 | C2928168 | 1 | $0.07 |
| 8205A | QPR | TSSOP-8 4.4x3mm P0.65mm | C5148694 | 1 | $0.07 |
| 33R | RCK1,RSY1,RCK2,RSY2,RCK3,RSY3,RCK4,RSY4,… | R 0402 1005Metric | 34 | $0.07 | |
| 10k | RRF1,RRF2,RRF3,RRF4,RRF5,RRF6,RRF7,RRF8,… | R 0402 1005Metric | 33 | $0.07 | |
| 100R | RRX1,RTX1,RRX2,RTX2,RRX3,RTX3,RRX4,RTX4,… | R 0402 1005Metric | 33 | $0.07 | |
| SN74LVC1G17DCKR | UC3 | SC70-5 | C10425 | 1 | $0.06 |
| DW01A | UPR | SOT-23-6 | C351410 | 1 | $0.05 |
| 100k | REN1,REN2,REN3,REN4,REN5,REN6,REN7,REN8,… | R 0402 1005Metric | 24 | $0.05 | |
| 1uF X7R 10V | CPO1,CPO2,CPO3,CPO4,CPO5,CPO6,CPO7,CPO8,… | C 0402 1005Metric | 16 | $0.05 | |
| KT-0603G | D1,D2,D3,D4 | LED 0603 1608Metric | C12624 | 4 | $0.04 |
| 180k 1% | RIL1,RIL2,RIL3,RIL4,RIL5,RIL6,RIL7,RIL8,… | R 0402 1005Metric | 16 | $0.03 | |
| 10uF X5R 25V | CPM | C 0805 2012Metric | 1 | $0.03 | |
| power | SW1 | SW SPST TS-1187A | C318884 | 1 | $0.02 |
| 600R@100MHz | FB1,FB2 | L 0402 1005Metric | C76891 | 2 | $0.02 |
| 15pF C0G | CX11,CX12,CX21,CX22,CX31,CX32 | C 0402 1005Metric | 6 | $0.02 | |
| 2N7002 | QIL | SOT-23 | C8545 | 1 | $0.02 |
| 1k | RSP1,RX1,RLD1,RX2,RLD2,RPR2,RLW | R 0402 1005Metric | 7 | $0.01 | |
| 10uF X5R 10V | CV1 | C 0603 1608Metric | 1 | $0.01 | |
| 1uF X7R 25V | CVB | C 0603 1608Metric | 1 | $0.01 | |
| 100k 0.1% | RRA,RRB,RBA,RBB | R 0402 1005Metric | 4 | $0.01 | |
| 22R | RSA,RSB,RSM | R 0402 1005Metric | 3 | $0.01 | |
| 4.7uF X5R | CVA1,CVA2 | C 0402 1005Metric | 2 | $0.01 | |
| 100k 1% | RV1,RV2 | R 0402 1005Metric | 2 | $0.00 | |
| 5.1k 1% | RCC1,RCC2 | R 0402 1005Metric | 2 | $0.00 | |
| 4.7k | RSCL,RSDA | R 0402 1005Metric | 2 | $0.00 | |
| 1uF X7R | CSP | C 0402 1005Metric | 1 | $0.00 | |
| 1nF C0G | CDI | C 0402 1005Metric | 1 | $0.00 | |
| 47nF | CBT | C 0402 1005Metric | 1 | $0.00 | |
| 1uF | CWE | C 0402 1005Metric | 1 | $0.00 | |
| 1M | RSP2 | R 0402 1005Metric | 1 | $0.00 | |
| 390k | RDI | R 0402 1005Metric | 1 | $0.00 | |
| 2.2k | REE1 | R 0402 1005Metric | 1 | $0.00 | |
| 12k 1% | RFR | R 0402 1005Metric | 1 | $0.00 | |
| 180R 1% | RILM | R 0402 1005Metric | 1 | $0.00 | |
| 5.23k 1% | RT1 | R 0402 1005Metric | 1 | $0.00 | |
| 30.1k 1% | RT2 | R 0402 1005Metric | 1 | $0.00 | |
| 2k | RST | R 0402 1005Metric | 1 | $0.00 | |
| 620k | RF11 | R 0402 1005Metric | 1 | $0.00 | |
| 560k | RF21 | R 0402 1005Metric | 1 | $0.00 | |
| 47k | RIL1 | R 0402 1005Metric | 1 | $0.00 | |
| 0R | RPGH | R 0402 1005Metric | 1 | $0.00 |
Open decisions
| decision | options | recommendation | changes copper? |
|---|---|---|---|
| FPC pinout isn't reversal-safe | Supply on pins 1–2 and ground on 11–12: a flipped cable shorts the hub supply | make the pinout symmetric | yes |
| Op-amp | MCP6V31U via Global Sourcing (lowest noise) or OPA391DCKR at JLC (stocked) | MCP6V31U for the bench order | no |
| LDO height in the 1.5 mm board gap | TPS7A2033PDBVR is 1.45 mm max: 0.05 mm margin | the 0.4 mm X2SON-4 package | yes |
| Panelization | boards are under the 70 mm Standard PCBA minimum | 2 × 2 panel with rails and fiducials | no |
| HDI for EXO-410 | blind vias are the only way out of the 0.4 mm QFN pins between the nut holes | accept HDI | already routed that way |
Still needs a bench: contact impedance and noise on a real head, motion artefacts, pin force and comfort, leakage and fault injection, clock skew over 16 cables, thermal, EMC, gold pin on a tin-plated nut, USB isolation while worn.