A hobby build · 2026

Ancient Grimoire

Set a card down. The Grimoire tells you who they are.

On the shelf Aug – Oct 2026 · Raspberry Pi · Zombicide: Green Horde
The Ancient Grimoire: a navy 3D-printed stand with an arched head over a card bed

What it does

A narrator for the table

The Grimoire is a tabletop oracle for Zombicide: Green Horde. Slide a survivor card into its bed and it recognises the card by its artwork, then reads it aloud in a custom narrator voice: who they are, and what their skills do, with a soundscape underneath. It runs fully offline. Its only input is the card slot, so even its controls are cards.

Present

A proximity sensor feels the card arrive and the ring fades up.

Flash

The card settles; the ring flashes white and the camera captures.

Recognise

The art is matched against 165 reference cards. Unsure? It asks you to re-seat it rather than guess.

Speak

The pre-rendered reading plays; the ring pulses gold in time with the voice.

Rest

Back to the slow red → purple → blue idle glow, waiting for the next card.

It works: it boots on battery, reads a hundred-odd survivors, and has never read the wrong card aloud. It went to a real game night, where it turned out less useful at the table than it was fun to build. So it lives here now.

The control cards

No buttons. Just cards.

The enclosure exposes only the card slot, so every control is a card with art I made for it. The Grimoire recognises them the same way it recognises a survivor.

Card: And So It Begins
And So It BeginsOpens the session. The Grimoire sets the scene before the first survivor.
Card: We're Here. Get On With It.
We're Here. Get On With It.The quest card: gear up, and go.
Card: Go And Seek Wisdom
Go And Seek WisdomShow it twice and the Grimoire downloads its whole library of readings from the web. If the download fails, the old library stays.
Card: Farewell And Safe Travels
Farewell And Safe TravelsThe off switch. It asks, plays a little farewell music, looks again — and powers down if the card's still there.
Card: Volume up
Volume UpFive steps, shown on the ring.
Card: Volume down
Volume DownWith a floor, so it never sounds broken.

The build

Inside the Grimoire

A Raspberry Pi 4 in a navy 3D-printed body: a base with the card bed, a column holding the Pi over a speaker chamber, and an arched head carrying the camera inside a ring of sixteen LEDs. Printed on a Prusa MINI+ in PLA.

All the parts laid out: shell pieces, Raspberry Pi, LED ring and boards

Everything on the bench

Shell pieces, the Pi, the LED ring and the little boards. The leads are tagged by pin number, so it can come apart and go back together.

LED ring seated in the head
LED ring in the head
Camera mount plate
Camera mount plate
Raspberry Pi in the column bay
Pi bay, top of the column
DAC and amplifier on their plate
DAC + amp plate
PartJob
Raspberry Pi 4 Model BThe brain. Runs recognition, playback and the light show. Pi OS Bookworm, starts on boot.
Inland 5MP cameraPhotographs the card, from inside the LED ring.
NeoPixel ring, 16 LEDsCapture flash, plus idle, thinking and speaking effects.
Adafruit Pixel ShifterConverts the Pi's 3.3 V data signal to the 5 V the ring needs.
Adafruit APDS9960Proximity sensor: knows when a card arrives.
Adafruit UDA1334AI2S stereo DAC: clean digital-to-analog audio.
Adafruit MAX98306Stereo amp driving the speakers.
2× 44 mm 3 W speakersNarration on one channel, soundscape on the other.
Anker PowerCore 20000Battery. One port for the Pi, one for the amp.
3D-printed enclosureBase, column, head, camera mount, Pi cover, panels and feet. Prusa MINI+, PLA, 0.2 mm.
Rear of the Grimoire showing the speaker grille

Sound, not just speech

Every reading is a small production. The narrator voice was designed in ElevenLabs. A browser-based mixer added reverb and a three-part soundscape (an intro sting, a bed under the voice, an outro), all locked per deck so every card sounds like it came from the same book. Each survivor's skills are spoken right after their own line.

The Vault

Where the readings were made

This address used to be a private workshop for writing and voicing every card: pick a deck, set its sound once in the Mixer, write and approve each card's words, then run the Assembly to render the audio. The Grimoire downloaded the finished library from here.

The Library page: six decks with progress bars
Library: six decks, each tracking text and audio progress.
The Master Mixer page
Mixer: voice, reverb, beds and timing, locked per deck.
The Assembly page
Assembly: sample one card, then batch-render the rest.
ServiceRole
Cloudflare WorkersHosted the Vault and the device's download route. Now serves this page.
Cloudflare R2Storage for the finished audio library, about 116 readings.
SupabaseCard database, review status and logins.
ElevenLabsVoice generation for the narrator.
GitHubSource; every push deployed the site.