The design: 1,273 dry contacts under a beanie
An EEG helmet you can build: 48 flat circuit boards cut to the shape of the head, carrying 1,273
gold-plated spring pins that press through the hair onto the scalp. A printed PETG shell holds the boards, a hub at the
back gathers the data, five cameras sit in the beanie's cuff, and a rib-knit beanie goes over all of it. Everything here
is generated from code in this repo (exo/); change an input and rebuild, don't edit the outputs.
What's in it
| part | what it is | numbers |
|---|---|---|
| contact boards | 16 main boards and 32 fillers, every one a different polygon, 6 layers | 1,273 contacts, 89.5% of the scalp |
| spring pins | one off-the-shelf part on every contact: Mill-Max 0919, SMT, rounded gold plunger, 3 mm stroke | 1,273 per helmet |
| converters | ADS131M08, 24-bit, one per eight contacts, on the contact boards | 179 |
| controllers | an RP2040 board cut to each main board's outline, stacked behind it on four DF40 pairs | 16 |
| hub | reference and bias, a shared 2.048 MHz clock, 16 controller and 5 camera ports, battery, USB-C, Wi-Fi | 1 (hub) |
| cameras | ESP32-S3 module and an OV2640 wide-angle camera on a 16 × 19 mm board, MJPEG over Wi-Fi, PDM mic | 5 (cameras) |
| shell | crown, front band, back band with the hub pod, splice tabs, battery cover; PETG | 5 parts (shell) |
| beanie | rib knit with a turned-up cuff; the cameras' lenses through grommets; USB-C eyelet | (beanie) |
To order one: ordering.
How a contact works
Each spring pin is reflowed onto a pad on the board's scalp face. Behind it sit a divider (two 100k), a 2.2M bias return, a 1 µF coupling capacitor and a TLV333 zero-drift buffer. Eight buffered contacts feed one ADS131M08. The converters on a main board, and on the fillers wired to it, are read over SPI by that board's RP2040, which streams to the hub over a 12-way 0.5 mm FPC. The hub drives the reference and bias electrodes, distributes the clock and a SYNC pulse so every converter samples together, and sends the data to a host over USB 2.0 or Wi-Fi.
Why the boards look like this
Every contact uses the same spring pin, so the gap from a board to the scalp has to stay within the pin's 2.6 mm working range across all of that board's contacts. A flat board over a curved head only manages that over a limited area, so the boards are small and cut to fit: each grows edge by edge until the next step would break the pin range or come too close to a neighbour, then fillers grow in the gaps. See contact boards and pins.
Where it stands
| layout | 48 boards, every contact inside the pin's range, clearances checked in 3D |
| contact boards, controllers | placed, routed and checked (connectivity, clearance, fault current), Gerbers, BOM and CPL per board and per JLC panel |
| hub | placed, routed and checked, Gerbers, BOM and CPL |
| cameras | placed, routed and checked, Gerbers, BOM and CPL |
| shell | regenerated around the real boards: standoffs at every board's holes, FPC slots and channels, STL and STEP |
| cost | every part an exact orderable line with its price; JLC fees from their published rules (ordering) |
Nothing has been built or measured on a head yet: contact impedance and noise on hair, motion artefacts, pin force and comfort, fault injection, clock skew over the cables and EMC all need a bench.