Skip to content

ohrbit/eeg_bci_cap

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

4 Commits
 
 
 
 
 
 

Repository files navigation

🧠 Ohrbit — Open Source 3D Printed EEG BCI Cap

License: CC0-1.0 OpenSCAD Status: Prototype Version

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 Hero


🌍 What is Ohrbit?

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.


✨ Key Features

  • 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_cols and grid_rows to 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

🖼️ Gallery

Hero Shot Cross-Section Tile Array Single Tile
hero cross array tile

🏗️ System Architecture

┌─────────────────────────────────────────────────┐ │ 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]


🧩 How It Works

Tile Design

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

Toroidal Joints (NASA-inspired)

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_clearance gap → freed by gentle flexing after print

Signal Chain

Scalp → Electrode pin → Tile trace → Torus link → Tile trace → ... → Collection ring → ADS1299 → ESP32-S3


🛒 Bill of Materials

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


🖨️ Printing Instructions

Requirements

  • 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

Step-by-Step

  1. Open ohrbit_tile_v0.0009.scad in OpenSCAD
  2. Set grid size: grid_cols and grid_rows — start with 3 × 2 for first test
  3. Export STL via Render (F6) → Export as STL
  4. 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
  5. Print with brim for adhesion — tile array is thin and wide
  6. Free joints after print: gently flex the array in all directions until each torus rotates freely
  7. Insert electrodes: press Ag/AgCl pins into center holes from the scalp-facing side

Tuning pip_clearance

Print the debug_pair (RENDER_MODE = 2) first. The torus should:

  • Not fuse to socket walls → increase pip_clearance if fused
  • Not rattle excessively → decrease pip_clearance if too loose
  • Start value: 0.35mm, typical range 0.25–0.45mm

⚡ Electronics & Firmware

Wiring

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

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

Home Assistant Integration

Add to configuration.yaml:

mqtt:
  sensor:
    - name: "Ohrbit EEG Channel 1"
      state_topic: "ohrbit/eeg/raw"
      value_template: "{{ value_json.ch1 }}"

BrainFlow

from brainflow.board_shim import BoardShim, BrainFlowInputParams
# Use MQTT board or custom board ID for Ohrbit

📐 OpenSCAD Parameters Reference

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

🗺️ Roadmap

  • 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

🔬 Research Background


📁 Repository Structure

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

🤝 Contributing

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.


📄 License

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.


👤 Author

OHRBIT SCIENTIFIC RESEARCH — Hagen, Germany
Maker · IoT Engineer · Hydroponic Systems · OpenSCAD · ESP32

Built at 3am with coffee and OpenSCAD.

About

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

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors