Cerebro
A face for a voice recorder.
The firmware for Cerebro, a hand-held voice-capture device on an ESP32-S3 with a round AMOLED screen. It draws a live face, records from two mics, pairs over Bluetooth and talks to the phone over Wi-Fi. The device does the input; the phone does the thinking.
What it does
Apr 2026- 01A face on the screenSeven expressions, from neutral to thinking, drawn fresh at about 30 frames a second on a 466×466 round AMOLED.
- 02Eyes that follow youThe pupils follow your finger, glance at the button when you press it, wander when you don't, and blink on their own.
- 03Always uprightThe accelerometer works out which way is down and turns the face to match, so there's no wrong way to hold it.
- 04Pairs from the phoneNo Wi-Fi details baked in. It shows up over Bluetooth as CEREBRO, the app sends the network, and it remembers it.
- 05Records and plays backTwo mics in and a small speaker out, through one full-duplex I²S line.
- 06A small HTTP APIFound on the network as cerebro.local. The phone asks for status, sets the face, sends audio and fetches the last recording.
Signature
Eyes that look back
The device isn't watching your eyes; its eyes are watching you. Touch the screen and the pupils snap to your finger, press the button and they glance down at it, leave it alone and they drift and blink. It's three small rules, and it's what makes it feel like something's there.
How it works
- Drawn from shapesEach frame is built from arcs, circles and thick lines into a framebuffer in PSRAM (about 434 KB), then sent to the screen in one go over QSPI.
- Expressions as numbersAn expression is a set of numbers: brow angles, eye size, pupil size, mouth shape. Switching eases every number towards the new set, so a change takes about a second and never snaps.
- Pairing, then Wi-FiA Bluetooth LE service takes the network name and password from the app and saves them. After that the device joins Wi-Fi and runs a plain HTTP server on port 80.
- Turning with gravityThe accelerometer's X and Y give the angle of down, smoothed so it doesn't jitter, and the whole frame is rotated pixel by pixel before it's sent to the screen.
Design
DM SansAa
#0D0D0D#E8000A#6B6A68#F8F6F1
- Shares the landing page's look: warm off-white, near-black, one red.
- On the device itself it's a black screen and a white face, nothing else.
- Every doc gets its own banner in Instrument Serif with a red full stop, so the README reads like the product site.