Open Source Hardware Project

Build Your Own AI Wearable

A coin-sized device that captures conversations, extracts commitments, and helps you remember everything. Designed for neurodivergent minds. Built from research into the best open-source projects.

~$50
Total Build Cost
24h+
Battery Life
1.5μA
Deep Sleep Current
100%
Open Source
The Vision

What is BrainGoblin?

An ADHD sidekick that captures what matters and reminds you when it counts

🎧

Passive Capture

Continuously records conversations with voice activity detection. Only processes when people are actually talking - no wasted battery on silence.

🧠

Commitment Extraction

AI identifies when someone tells you to do something vs. when you say you'll do something. Tracks the difference between "TO_USER" and "BY_USER" commitments.

👥

Speaker Identification

Knows who's talking. Links commitments to the right person. "Mom said to call her" vs "Bob wants that report" - context that matters.

📚

Life Logging

Captures jokes, ideas, memories, and bucket list items. That brilliant thought you had at 2am? Saved. That funny thing your kid said? Preserved.

🔒

Privacy First

All data stored locally with SQLCipher encryption. No corporate cloud required. Run your own backend or use the app offline.

Ultra Low Power

nRF52840 draws 1.5μA in deep sleep. All-day battery life on a tiny coin cell. Charges via USB-C.

💡 The Key Insight

Commercial devices like Limitless ($300), Humane AI Pin ($699), and Rabbit R1 ($199) all follow the same pattern: the device is basically a fancy microphone. All the real AI processing happens in the cloud. By understanding this, we can build something better for a fraction of the cost.

System Design

Technical Architecture

Best-of-breed components from research into Limitless, Omi, ADeus, and more

┌─────────────────────────────────────────────────────────────────────────────────────┐
                            BRAINGOBLIN WEARABLE DEVICE                             
  ┌────────────────┐    ┌────────────────┐    ┌────────────────┐    ┌─────────────┐ 
Dual ICS-43434 │───▶│ Beamforming    │───▶│ Silero VAD    │───▶│ Opus/LC3
  │ MEMS Mics      │    │ GSC Algorithm  │    │ On-device     │    │ Compress    │ 
  └────────────────┘    └────────────────┘    └────────────────┘    └──────┬──────┘ 

  ┌────────────────┐    ┌────────────────┐                    ┌───────────▼──────┐ 
  │ LIR2450 Coin   │    │ nRF52840       │                    │ BLE Stream       │ 
  │ Cell (120mAh)  │───▶│ + Zephyr RTOS  │                    │ to Phone         │ 
  └────────────────┘    └────────────────┘                    └────────┬─────────┘ 
└────────────────────────────────────────────────────────────────────────┼──────────┘
                                                                         │
                                                                         ▼
┌─────────────────────────────────────────────────────────────────────────────────────┐
                          PHONE APP / HOME SERVER                                   
  ┌────────────────┐    ┌────────────────┐    ┌────────────────┐    ┌─────────────┐ 
Deepgram       │───▶│ Gemma 3 4B-IT  │───▶│ Commitment    │───▶│ SQLCipher
  │ Transcription  │    │ AI Extraction  │    │ + Life Log    │    │ Encrypted   │ 
  │ (sub-300ms)    │    │ (14.4k/day)    │    │ + People      │    │ Storage     │ 
  └────────────────┘    └────────────────┘    └────────────────┘    └─────────────┘ 
└─────────────────────────────────────────────────────────────────────────────────────┘
                

📡 Why This Architecture?

  • Device stays tiny - Only microphones, MCU, and battery. No power-hungry compute.
  • 24+ hour battery - nRF52840 is designed for exactly this use case.
  • Real-time feels instant - Deepgram returns results in <300ms.
  • Free AI processing - Gemma 3 4B-IT offers 14,400 requests/day free.
  • Your data, your control - Run Whisper locally if you want zero cloud.

🎯 Design Decisions

  • nRF52840 over ESP32 - 10x lower power for BLE, dedicated radio stack.
  • Dual mics over single - Beamforming gives 6-10dB SNR improvement.
  • Silero over WebRTC VAD - 87.7% vs 50% accuracy at 5% false positive.
  • LC3 codec over raw PCM - Designed for BLE audio, 5ms latency.
  • Deepgram over Whisper - Streaming, faster, lower hallucination rate.
Component Selection

Hardware Deep Dive

Why each component was chosen and how they work together

Seeed XIAO nRF52840 Sense

The brain of the operation. Nordic's nRF52840 is the industry standard for BLE wearables - it powers everything from AirPods to fitness trackers. The Seeed XIAO version gives us a tiny, pre-built module with USB-C and battery charging built in.

Key Specifications

  • ARM Cortex-M4F @ 64MHz with FPU
  • 256KB RAM, 1MB Flash
  • Bluetooth 5.0 with Long Range support
  • Built-in PDM microphone (backup option)
  • Built-in 6-axis IMU (LSM6DS3TR-C)
  • USB-C with native USB support
  • Battery charging circuit built-in
  • Dimensions: 21mm × 17.5mm
💡 Why Not ESP32?

ESP32-S3 draws ~80-160mA when WiFi is active. The nRF52840 draws ~5mA during BLE transmission and just 1.5μA in deep sleep. For all-day wearables, this difference is everything.

Power Consumption Comparison

MCU Deep Sleep BLE Active Verdict
nRF52840 1.5μA ~5mA Best
ESP32-S3 14μA ~100mA Too High
ESP32-C3 5μA ~80mA Okay
RPi Zero W N/A ~150mA No Sleep

Pinout for External Mics

# I2S Connections for ICS-43434
BCLK (Bit Clock)  → D1 (P0.05)
LRCK (Word Select)→ D2 (P0.04)
DOUT (Data)       → D3 (P0.29)
VDD               → 3.3V
GND               → GND
L/R (Left mic)    → GND
L/R (Right mic)   → 3.3V

Dual ICS-43434 MEMS Microphones

The latest generation I2S MEMS microphone from TDK InvenSense. Unlike the older (now discontinued) INMP441, the ICS-43434 has native I2S output with standard timing - no hacks needed.

Why Dual Mics?

  • Beamforming - Focus on voice in front, reject background noise
  • 6-10dB SNR improvement - Voice stands out even in noisy environments
  • Coherence-based noise reduction - Research-proven algorithm
  • Redundancy - If one mic fails, you still have audio

Key Specifications

  • Signal-to-Noise Ratio: 65 dB(A)
  • Acoustic Overload Point: 120 dB SPL
  • Frequency Response: 60Hz - 20kHz
  • Current Consumption: 490μA typical
  • Interface: Native I2S (24-bit, up to 51.2kHz)
  • Package: 3.5mm × 2.65mm × 0.98mm
🔔 Bottom Port Design

The ICS-43434 is a bottom-port microphone. The sound hole faces DOWN toward the PCB. Your enclosure needs an acoustic port aligned with this hole!

Microphone Comparison

Mic Interface SNR Status
ICS-43434 Native I2S 65dB Current
INMP441 PDM→I2S 61dB EOL
SPH0645 Weird I2S 65dB Problematic
Built-in PDM PDM ~60dB Backup

Stereo Configuration

# Both mics share same I2S bus
# L/R pin determines which clock edge

Mic 1 (Left):   L/R → GND
Mic 2 (Right):  L/R → 3.3V

# Same BCLK, LRCK, DOUT lines
# MCU receives stereo interleaved data

Where to Buy

On-Device Audio Processing

The secret sauce: intelligent audio processing on the device itself. We don't just stream raw audio - we process it to save bandwidth, battery, and cloud costs.

Voice Activity Detection (VAD)

Silero VAD is a neural network that determines if someone is speaking. At just 1.8MB, it runs on the nRF52840 using ONNX runtime. Why bother?

  • Don't stream silence to phone (saves BLE bandwidth)
  • Don't transcribe silence (saves Deepgram costs)
  • Don't store useless audio (saves storage)
  • 87.7% accuracy vs WebRTC VAD's 50%

Audio Codec: LC3

LC3 (Low Complexity Communication Codec) is the official Bluetooth LE Audio codec. It's specifically designed for exactly what we're doing.

  • 32 kbps mono @ 16kHz = excellent voice quality
  • 5-20ms latency (feels instant)
  • Lower encode complexity than Opus
  • Built into Zephyr RTOS

VAD Comparison

VAD Accuracy Speed Size
Silero VAD 87.7% TPR ~1ms 1.8MB
WebRTC VAD 50% TPR <1ms Tiny

Beamforming Algorithm

We use a Generalized Sidelobe Canceller (GSC) - the same algorithm used in hearing aids.

# GSC Components:
1. Fixed Beamformer (FBF)
   - Points at expected voice direction
   - Sum-and-delay across mics

2. Blocking Matrix (BM)
   - Creates noise-only reference
   - Subtracts aligned signals

3. Adaptive Noise Canceller (ANC)
   - Learns noise characteristics
   - Subtracts from output

# Result: 6-10dB SNR improvement

Codec Comparison

Codec Latency Bitrate For BLE?
LC3 5-20ms 16-345 kbps Native
Opus 2.5-60ms 6-510 kbps Works
Raw PCM 0ms 256 kbps Too Big

Power System Design

The make-or-break of any wearable. We need all-day battery life from something that fits in a pendant. Here's how we get there.

Battery: LIR2450 Rechargeable Coin Cell

  • Capacity: 120mAh @ 3.7V
  • Voltage: 3.6V nominal (vs 3.0V primary CR2450)
  • Cycle life: 500+ cycles to 80% capacity
  • Charge time: ~3 hours
  • Weight: ~5.3g
  • Dimensions: 24.5mm × 5.0mm

Battery Life Calculation

# Average current draw estimate
Idle (VAD listening):     ~2mA
BLE streaming:            ~5mA
Deep sleep:               ~1.5μA

# Duty cycle assumption:
80% idle, 15% streaming, 5% sleep

Average = 0.80×2 + 0.15×5 + 0.05×0.0015
        = 1.6 + 0.75 + ~0
        = 2.35mA average

# Battery life:
120mAh / 2.35mA = ~51 hours
⚠️ Charging Considerations

Standard TP4056 modules charge at 1A - way too fast for a 120mAh coin cell! Replace R4 with a 5.1kΩ resistor to limit charging to ~240mA (1C rate).

Power Optimization Checklist

  • ☑ Disable UART when not debugging
  • ☑ Put QSPI flash to deep sleep
  • ☑ Disconnect unused GPIO (leave floating = current leak)
  • ☑ Use BLE advertising intervals >100ms
  • ☑ Disable IMU when not needed
  • ☑ Use LC3 codec (lower CPU than Opus)
  • ☑ Power off unused RAM banks

Alternative: Small LiPo Pouch

For longer runtime, use a small pouch cell instead:

Battery Capacity Est. Runtime Size
LIR2450 120mAh ~50 hours 24.5×5mm
301020 LiPo 60mAh ~25 hours 20×10×3mm
401230 LiPo 130mAh ~55 hours 30×12×4mm
502030 LiPo 250mAh ~100 hours 30×20×5mm

Charging Circuit

The XIAO nRF52840 has a built-in BQ25101 charger. For coin cells, you may need to:

  • Use the built-in charger (designed for small cells)
  • Or build a custom circuit with MCP73831
  • Add protection circuit for over-discharge

Enclosure Design

The device needs to be wearable, look decent, and have proper acoustic ports for the microphones. Here are your options.

Form Factor Options

Pendant/Necklace

Hangs from chain or cord. Best for general wear. Like Limitless Pendant.

Clip-on Badge

Spring clip for collar, pocket, or lanyard. Best for work.

Magnetic Brooch

Decorative front, magnetic back. Best for social settings.

Wristband

Watch-style form factor. Always visible but less discreet.

3D Printing Recommendations

  • Material: PETG for durability, PLA for prototypes
  • Layer height: 0.12-0.16mm for smooth finish
  • Infill: 100% around mic ports for acoustics
  • Supports: Minimize - design for supportless printing

Acoustic Port Design

🔔 Critical: Microphone Holes

ICS-43434 is bottom-ported. The case needs a 1.5-2mm hole directly under each microphone's sound port. Too small = muffled audio. Too large = dust entry.

Existing Designs to Remix

Approximate Dimensions

# Minimum internal space needed:
XIAO nRF52840:    21 × 17.5 × 3.5mm
LIR2450 cell:     24.5 × 5mm (diameter × height)
2x ICS-43434:     7 × 5.3 × 2mm (with breakout)

# Suggested enclosure:
~30mm diameter × ~12mm thick (coin-style)
~35 × 25 × 12mm (rectangular style)

# Add 1-2mm wall thickness all around

Magnetic Clasp

Use 3×3mm neodymium magnets. Two on each half, alternating polarity. This prevents the device from attaching the wrong way.

Bill of Materials

Complete Parts List

Everything you need to build your own BrainGoblin device

🧮 Core Electronics

The essential components that make up the brain of the device

XIAO nRF52840 Sense
Main MCU with built-in BLE, USB-C, battery charging, PDM mic, IMU
× 1
$15-24
ICS-43434 Breakout (×2)
I2S MEMS microphone, latest generation, stereo pair for beamforming
× 2
$6-16

🔋 Power System

Battery and charging components

LIR2450 Rechargeable Coin Cell
3.7V 120mAh lithium-ion coin cell (NOT CR2450 primary cell!)
× 2-3
$8-13
CR2450 Coin Cell Holder
Through-hole or SMD mount battery holder (fits LIR2450)
× 1
$1-3

🔩 Mechanical & Wiring

Physical components and connections

SPDT Slide Switch
Tiny on/off switch, through-hole or SMD
× 1
$1
30AWG Silicone Wire
Flexible wire for internal connections (various colors)
1 set
$8
Neodymium Magnets 3×3mm
For magnetic clasp design (need 4 per clasp)
× 8-12
$5
3D Printed Enclosure
Custom case - print yourself or order from JLCPCB/PCBWay
× 1
$0-10
Necklace Chain/Cord
For pendant-style wear - ball chain or leather cord
× 1
$3-8

🔧 Tools Required

What you'll need to build it (you may already have these)

Soldering Iron + Solder
Fine tip recommended for small components
$15-50
Wire Strippers
For 30AWG wire
$8
Multimeter
For testing connections and voltages
$15-30

💰 Total Estimated Cost

~$45-65
Core components only
~$80-120
With tools & extras
$300+
Commercial alternatives
Assembly Instructions

Build Guide

Step-by-step instructions to build your BrainGoblin device

⚠️ Before You Start

This guide assumes basic soldering skills. If you've never soldered before, practice on some spare components first. Also make sure to work in a well-ventilated area and wear safety glasses.

1

Prepare Your Workspace

Gather all components and tools. Use an anti-static mat if available.

  • Verify you have all parts from the parts list
  • Heat up your soldering iron (350-400°C for lead-free solder)
  • Organize components in small containers to avoid losing them
  • Have a multimeter ready for testing
2

Test the XIAO nRF52840

Before wiring anything, make sure the MCU works out of the box.

  • Connect XIAO to your computer via USB-C
  • It should appear as a USB device (and possibly a COM port)
  • The built-in LED should light up
  • If using Arduino IDE, install the Seeed nRF52 board package
  • Upload a simple blink sketch to verify programming works
// Quick test sketch
void setup() {
  pinMode(LED_BUILTIN, OUTPUT);
}

void loop() {
  digitalWrite(LED_BUILTIN, HIGH);
  delay(500);
  digitalWrite(LED_BUILTIN, LOW);
  delay(500);
}
3

Wire the Microphones

Connect the ICS-43434 breakouts to the XIAO. This is the most delicate step.

Wiring Diagram:

ICS-43434 #1 (Left)     XIAO nRF52840
─────────────────────────────────────
VDD  ──────────────────▶ 3.3V
GND  ──────────────────▶ GND
BCLK ──────────────────▶ D1 (P0.05)
LRCK ──────────────────▶ D2 (P0.04)
DOUT ──────────────────▶ D3 (P0.29)
L/R  ──────────────────▶ GND (Left channel)

ICS-43434 #2 (Right)
─────────────────────────────────────
VDD  ──────────────────▶ 3.3V (shared)
GND  ──────────────────▶ GND (shared)
BCLK ──────────────────▶ D1 (shared)
LRCK ──────────────────▶ D2 (shared)
DOUT ──────────────────▶ D3 (shared)
L/R  ──────────────────▶ 3.3V (Right channel)
  • Cut 30AWG wire to appropriate lengths (keep short for less noise)
  • Tin both the wire ends and the pads before joining
  • Both mics share BCLK, LRCK, and DOUT lines
  • Use different L/R connections to get stereo channels
4

Add the Power Switch

Wire a slide switch between the battery and VIN to control power.

  • Cut the positive battery wire
  • Connect one end to the center pin of the switch
  • Connect the other end to one of the outer pins
  • Verify with multimeter that sliding the switch makes/breaks the circuit
💡 Alternative: Software Power Control

Instead of a physical switch, you can use deep sleep mode. A button press or BLE connection wakes the device. More elegant but requires firmware support.

5

Connect the Battery

Wire the LIR2450 coin cell holder to the XIAO's battery pads.

  • The XIAO has battery pads on the bottom (+ and -)
  • Connect holder positive (through switch) to + pad
  • Connect holder negative to - pad
  • Insert a charged LIR2450 cell
  • Device should power on when switch is in ON position
⚠️ Polarity Warning

Double-check polarity before inserting the battery! Reverse polarity can instantly destroy the MCU. Use a multimeter to verify.

6

Test the Assembly

Before enclosing, verify everything works.

  • Power on with battery - LED should blink
  • Connect via USB - should still work (battery will charge)
  • Upload microphone test firmware
  • Verify both mic channels produce audio data
  • Test BLE connection to phone
  • Measure current draw with multimeter (should be 2-5mA active)
7

Prepare the Enclosure

3D print or order the case, then prepare for assembly.

  • Print the case (PETG recommended, 100% infill around mic ports)
  • Clean up any support material
  • Verify the XIAO fits snugly
  • Check that USB-C port is accessible
  • Confirm mic holes align with the microphone ports
  • Glue magnets into place (alternating polarity)
8

Final Assembly

Put it all together.

  • Position microphones with ports aligned to case holes
  • Use a small amount of hot glue to secure components (removable later)
  • Route wires carefully to avoid pinching when closing
  • Insert battery
  • Close case and verify magnetic clasp works
  • Power on and do final testing
9

Flash the Firmware

Install the BrainGoblin firmware for full functionality.

  • See the Firmware section for detailed instructions
  • Choose between Arduino or Zephyr RTOS
  • Configure BLE services for audio streaming
  • Pair with the BrainGoblin Android app

🎉 Congratulations!

You've built your own AI wearable! The device will now capture conversations and stream them to the BrainGoblin app for transcription and AI processing. Check the firmware section for software setup instructions.

Software

Firmware & Software

The code that brings your hardware to life

💻 Firmware Options

Two main paths depending on your comfort level:

Option 1: Arduino (Easier)

  • Install Arduino IDE
  • Add Seeed nRF52 board package
  • Use existing BLE audio libraries
  • Good for prototyping and learning

Option 2: Zephyr RTOS (Better)

  • Install nRF Connect SDK
  • Native I2S and BLE audio support
  • LC3 codec built-in
  • Better power management
  • Production-ready

📱 Phone App Integration

The BrainGoblin Android app handles everything after audio leaves the device:

  • BLE audio reception and decoding
  • Deepgram API for transcription
  • Gemma 3 for commitment extraction
  • Speaker diarization
  • Local SQLCipher database
  • Reminders and notifications
🔗 Source Code

The BrainGoblin app source code is available for modification. It currently uses the phone's microphone - modifications are needed to receive BLE audio from the wearable instead.

Key Firmware Components

I2S Audio Capture

Configure I2S peripheral to receive 16kHz 16-bit stereo audio from the dual ICS-43434 microphones. Use DMA for efficient buffer handling.

Voice Activity Detection

Run Silero VAD (ONNX) or simpler energy-based detection. Only process and transmit when speech is detected.

Audio Encoding

Encode audio with LC3 or Opus codec. Target 32kbps mono for voice. Balance quality vs. BLE bandwidth.

BLE Audio Service

Custom GATT service for audio streaming. Use notifications for real-time data transfer to connected phone.

Power Management

Enter System ON sleep between audio processing. Disable unused peripherals. Manage BLE advertising intervals.

LED Status

Show recording status, BLE connection state, and battery level through LED patterns. Privacy indicator for consent.

Reference Projects

Project Platform What to Learn Link
Omi Firmware Zephyr/nRF Complete wearable audio implementation GitHub
BLE Audio Stream Arduino Basic BLE audio on nRF52840 GitHub
nrf52 Opus Audio Nordic SDK Opus encoding on nRF52840 GitHub
Zephyr I2S Sample Zephyr I2S driver usage Docs
ADeus Various Self-hosted backend architecture GitHub
Market Analysis

How We Compare

BrainGoblin vs. commercial AI wearables

Limitless Pendant
$300 retail
  • 100h battery life
  • Multiple mics for noise
  • Confidential Cloud
  • Polished hardware
  • Closed source
  • No local processing option
  • Subscription for features
  • Acquired by Meta
Humane AI Pin
$699 + $24/mo
  • Laser projector display
  • Cellular connectivity
  • Camera for context
  • Only 4h battery life
  • $24/month subscription
  • Closed ecosystem
  • Poor reviews
  • Company struggling
Omi DevKit
$70 assembled
  • Open source hardware
  • 24h+ battery
  • Active community
  • Pre-assembled option
  • Single mic only
  • Cloud-dependent
  • General purpose (not ADHD)
  • No commitment tracking

🎯 The BrainGoblin Difference

BrainGoblin isn't just another AI wearable - it's designed specifically for neurodivergent minds. The commitment tracking feature (knowing the difference between "Mom said call her" and "I said I'd call") is something no commercial product offers. Combined with life logging, speaker identification, and fully open-source everything, you get a device that actually understands how ADHD brains work.