> What is Cobalt?
Cobalt is a voice-first wearable built inside a real Casio F-91W shell with the custom PCB. Press the button on your wrist, speak, release.
Cobalt transcribes, understands, and acts.
- "Send a message to Thomas, I'll be there in 20 minutes" → WhatsApp sent
- "Create a meeting Friday at 2pm" → Calendar event created
- "Set an alarm for 7:30 tomorrow" → Done
No screen. No daily charging. No wake word. No subscription.
> The Hardware
Everything fits inside the original F-91W case:
- MCU: Seeed XIAO nRF52840 Sense (Cortex-M4F, 64MHz, 256KB RAM)
- Mic: MSM261D3526H1CPM, PDM protocol, 16kHz mono
- Flash: P25Q16H 2MB QSPI (LittleFS), up to 50 offline recordings
- Battery: CR2016 coin cell — ~116 days at 20 messages/day
- BLE: 2Mbps, MTU 247, wake-on-interrupt from System OFF (0.4µA)
- --
> The Power Architecture
The hardest constraint was energy. A CR2016 holds ~90mAh.
The nRF52840 draws 20-25mA during BLE+PDM operation.
Solution: strict wake-on-interrupt. The chip spends 99.9% of its time
in System OFF mode at 0.4µA, woken by a GPIO SENSE interrupt on the button pin.
Full pipeline per message:
- Boot + BLE advertising: 1.5s at 8mA
- PDM recording: ~5s at 20mA
- BLE ADPCM transfer: ~0.5s at 20mA
- Back to System OFF
- >Total per message: ~0.034mAh → 116 days at 20 msg/day on 80mAh CR2016.
- --
> The Audio Pipeline
Raw PCM at 16kHz = 32KB/s — too heavy for reliable BLE transfer.
IMA ADPCM 4:1 compression brings it to 8KB/s. A 5-second recording
becomes 40KB instead of 160KB. The nRF52840 M4F encodes in real-time
with negligible CPU overhead.
Custom CVOX container format (34-byte header) stores sample rate,
initial ADPCM state, and data size — enough for the Flutter decoder
to reconstruct WAV perfectly on the phone side.
Pipeline: PDM → IMA ADPCM → CVOX → BLE 2Mbps → Flutter → WAV
→ Groq Whisper STT → Llama 3.1 intent extraction → Native Android action
Transcription latency: ~1.5s. Indistinguishable from Gemini Assistant
on a full round-trip.
---
> The Software
Flutter app with 12+ native Android action types:
- Calendar events, reminders, alarms
- WhatsApp / Telegram / Signal messages
- SMS, calls, navigation
- Spotify device control
- App launching (120+ mappings)
- --
> The F91W Integration
The F91W PCB cavity is ~29.5×26.5mm. The XIAO is 21×17.5mm — it fits.
I had to unsolder the USB-C port from the XIAO with the hot plate.
Key challenges solved:
- Acoustic port: rear plate with PTFE waterproof membrane
- Battery contacts: direct interface with original F-91W spring
- Antenna: PCB trace only, TX power reduced to 0dBm (sufficient for wrist-to-pocket)
Result: looks 100% like a stock F-91W from the outside.
---
> Firmware
Framework: Arduino / Adafruit nRF52 BSP via PlatformIO
Button gestures: PRESS_DOWN (start recording), LONG_STOP (finalize + transfer)
Offline storage: LittleFS on 2MB QSPI flash, auto-sync on BLE reconnect
OTA updates: Nordic DFU over BLE (Adafruit bootloader)
---
> Where It Stands
- ✅ 3D printed prototype functional and on Tindie
- ✅ BLE + audio pipeline operational
- ✅ 12+ native Android actions working
- 🔄 Custom F-91W PCB in progress (JLCPCB)
- 🎯 Kickstarter — June 1, 2026
Follow the build logs for the full technical deep-dive.








Comments