A modular, 3D-printable, print-in-place EEG cap for non-invasive brain-computer interface research.
No gel. No wires. No TPU. Just PLA, conductive filament, and a baseball cap.
Ohrbit is an open-source wearable EEG (electroencephalography) cap built from interlocking 3D-printed hexagonal tiles connected by print-in-place toroidal joints. The assembled array conforms to any head shape through the articulation of its tile-to-tile links. A standard baseball cap or beanie worn over the array provides consistent scalp contact pressure, eliminating the need for conductive gel or elastic straps.
The project targets makers, researchers, and BCI hobbyists who want a real, hackable, open-hardware EEG platform — not a toy consumer headset with 2 channels and a closed SDK.
Name: Ohr (German: ear/head) + orbit (the path around something) = sensing what orbits inside your skull.
- Print-in-place — entire tile array prints as one piece, no assembly of individual links required
- No TPU needed — flexibility comes from toroidal joint geometry, not material elasticity
- Conductive filament traces — signal routing built into the tile body, no hand-wiring between tiles
- Modular & repairable — individual tiles can be replaced without rebuilding the full array
- Scalable electrode count — parametric grid: change
grid_colsandgrid_rowsto scale from 8 to 64+ channels - Baseball cap pressure fit — standard cap worn over array provides consistent scalp contact, no straps
- Open hardware & CC0 — no license restrictions, fork and publish freely
- MQTT + BrainFlow compatible — ESP32-S3 firmware streams data directly to Home Assistant, Node-RED, or any BrainFlow-compatible pipeline
- Future-ready — designed for robotic silver-coating of electrode tips in later revisions
| Hero Shot | Cross-Section | Tile Array | Single Tile |
|---|---|---|---|
![]() |
![]() |
![]() |
![]() |
┌─────────────────────────────────────────────────┐ │ Baseball Cap (Pressure) │ ├─────────────────────────────────────────────────┤ │ Ohrbit Tile Array (PLA + traces) │ │ [tile]─[torus]─[tile]─[torus]─[tile]─[torus] │ │ │ │ │ │ electrode pin electrode pin │ ├─────────────────────────────────────────────────┤ │ Scalp │ │ Skull │ │ Brain Cortex │ └─────────────────────────────────────────────────┘ ↓ conductive filament traces ↓ [ADS1299 AFE] × N (8 channels each) ↓ SPI daisy-chain ↓ [ESP32-S3] ↓ WiFi / MQTT ↓ [BrainFlow] → [Home Assistant / Node-RED]
Each hexagonal tile is printed in PLA or PETG with:
- A center electrode recess and through-hole for an Ag/AgCl snap electrode pin
- Six conductive trace channels routed from the center to each flat face edge, filled with conductive filament during a dual-material or filament-swap print
- Six spherical socket recesses on each face edge that capture the toroidal links
Inter-tile connections use upright toroidal rings — inspired by NASA's Z-2 spacesuit chainmail — captured in spherical socket recesses on each tile face. The torus:
- Rotates freely in all axes → full 3D conformability to skull curvature
- Is printed in conductive filament → carries EEG signal tile-to-tile
- Is printed in place with
pip_clearancegap → freed by gentle flexing after print
Scalp → Electrode pin → Tile trace → Torus link → Tile trace → ... → Collection ring → ADS1299 → ESP32-S3
| Component | Specification | Qty | Source |
|---|---|---|---|
| PLA filament | Any brand, 1.75mm | ~50g per cap | Any |
| Conductive filament | Multi3D Electrifi or Proto-Pasta Conductive PLA | ~5g per cap | Electrifi |
| Ag/AgCl snap electrodes | Dry, pin type, 2mm shaft | 32–64 | AliExpress / Mouser |
| ADS1299 breakout board | 8-channel biosignal AFE | 4–8 | AliExpress / eBay |
| ESP32-S3 dev board | Any variant with SPI + WiFi | 1 | AliExpress |
| Baseball cap | Any, fits over ~3mm liner | 1 | Anywhere |
| FFC connector + cable | 0.5mm pitch, 16–32 pin | 1 | Mouser |
| LiPo battery | 3.7V, 500mAh, slim | 1 | AliExpress |
Estimated cost (32-channel prototype): ~€40–60
- FDM printer with dual-material capability or filament swap at layer height (M600)
- Nozzle: 0.4mm (0.25mm recommended for trace channels)
- Layer height: 0.15mm
- Print speed: 30mm/s for conductive filament sections
- Open
ohrbit_tile_v0.0009.scadin OpenSCAD - Set grid size:
grid_colsandgrid_rows— start with3 × 2for first test - Export STL via Render (F6) → Export as STL
- Slice with PrusaSlicer or Bambu Studio:
- Main tile body: PLA/PETG
- Trace channels + torus links: pause at layer, swap to conductive filament (M600)
- Resume with standard filament for tile top surface
- Print with brim for adhesion — tile array is thin and wide
- Free joints after print: gently flex the array in all directions until each torus rotates freely
- Insert electrodes: press Ag/AgCl pins into center holes from the scalp-facing side
Print the debug_pair (RENDER_MODE = 2) first. The torus should:
- Not fuse to socket walls → increase
pip_clearanceif fused - Not rattle excessively → decrease
pip_clearanceif too loose - Start value:
0.35mm, typical range0.25–0.45mm
ESP32-S3 ADS1299 #1 ADS1299 #2 ... GPIO10 (MOSI) ──► SPI MOSI ──────► SPI MOSI (daisy) GPIO11 (MISO) ◄── SPI MISO GPIO12 (SCLK) ──► SPI CLK GPIO9 (CS1) ──► CS GPIO8 (CS2) ──────────────────► CS GPIO7 (DRDY) ◄── DRDY
Firmware is in /firmware/ohrbit_esp32/. It:
- Reads all ADS1299 channels via SPI daisy-chain
- Publishes raw EEG samples as JSON over MQTT
- Topic:
ohrbit/eeg/raw - Compatible with BrainFlow for signal processing
Add to configuration.yaml:
mqtt:
sensor:
- name: "Ohrbit EEG Channel 1"
state_topic: "ohrbit/eeg/raw"
value_template: "{{ value_json.ch1 }}"from brainflow.board_shim import BoardShim, BrainFlowInputParams
# Use MQTT board or custom board ID for Ohrbit| Parameter | Default | Description |
|---|---|---|
RENDER_MODE |
0 |
0=array, 1=single tile, 2=debug pair |
LINK_STYLE |
2 |
1=flat arm, 2=torus chainmail |
grid_cols |
5 |
Columns in tile grid |
grid_rows |
3 |
Rows in tile grid |
tile_size |
20mm |
Flat-to-flat hex width |
tile_thickness |
2.5mm |
Tile body height |
tile_gap |
5.0mm |
Face-to-face gap (controls flex) |
torus_r |
0.8mm |
Torus tube radius |
pip_clearance |
0.35mm |
Print-in-place joint clearance |
trace_width |
0.8mm |
Conductive channel width |
trace_depth |
0.8mm |
Conductive channel depth |
electrode_d |
2.0mm |
Electrode pin hole diameter |
- v0.0001 — Basic tile geometry, trace channels, electrode recess
- v0.0002 — Print-in-place snap connectors, hex grid array
- v0.0003 — Living hinge arms with conductive groove
- v0.0004 — Dual link style (flat arm + torus chainmail)
- v0.0005 — Torus upright orientation, per-link R calculation
- v0.0006 — Spherical sockets, debug pair render mode
- v0.0007 — Gap calculation fix, socket depth increase
- v0.0008 — Spacing formula restored, R guard
- v0.0009 — BOSL2 integration, flat-face-only links
- v0.001 — First physical prototype print
- v0.01 — Electrode pin insertion + conductive path validation
- v0.1 — ADS1299 wiring + BrainFlow signal test
- v1.0 — Full 32-channel working EEG cap
- v2.0 — Robotic Ag/AgCl coating of electrode tips
- v3.0 — Custom ADS1299 integration PCB
- Fully 3D-Printed Dry EEG Electrodes (PMC, 2023) — validates conductive filament for EEG contact
- Directly conductive flexible 3D printed EEG electrodes (IEEE) — dry electrode feasibility
- Low cost 3D printed dry EEG electrodes (Manchester) — silver paint vs conductive filament comparison
- Wireless modular EEG sensor network (KU Leuven, 2025) — modular wireless EEG architecture
- Sabi EEG Cap (2026) — commercial hat-form BCI with 70k sensors
ohrbit/ ├── scad/ │ └── ohrbit_tile_v0.x.scad ├── stl/ ├── firmware/ │ └── ohrbit_esp32/ ├── docs/ │ └── images/ │ ├── hero.jpeg │ ├── cross_section.jpeg │ ├── tile_array.jpeg │ └── single_tile.jpeg ├── research/ └── README.md
This is an early-stage open hardware project. All contributions welcome:
- OpenSCAD geometry improvements
- Electrode contact material experiments
- ESP32 firmware
- BrainFlow / signal processing pipelines
- Print settings for different printers
Please open an issue before major PRs.
CC0 1.0 Universal — Public Domain
The Ohrbit design is released into the public domain. No attribution required. Copy, modify, sell, do whatever you want with it.
The conductive filament trace concept is inspired by published open academic research (see Research Background). The toroidal joint concept is inspired by NASA spacesuit chainmail design, adapted for EEG applications.
OHRBIT SCIENTIFIC RESEARCH — Hagen, Germany
Maker · IoT Engineer · Hydroponic Systems · OpenSCAD · ESP32
Built at 3am with coffee and OpenSCAD.



