A hobby build · 2026
Set a card down. The Grimoire tells you who they are.
On the shelf Aug – Oct 2026 · Raspberry Pi · Zombicide: Green Horde
What it does
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.
A proximity sensor feels the card arrive and the ring fades up.
The card settles; the ring flashes white and the camera captures.
The art is matched against 165 reference cards. Unsure? It asks you to re-seat it rather than guess.
The pre-rendered reading plays; the ring pulses gold in time with the voice.
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
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.
The build
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.
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.




| Part | Job |
|---|---|
| Raspberry Pi 4 Model B | The brain. Runs recognition, playback and the light show. Pi OS Bookworm, starts on boot. |
| Inland 5MP camera | Photographs the card, from inside the LED ring. |
| NeoPixel ring, 16 LEDs | Capture flash, plus idle, thinking and speaking effects. |
| Adafruit Pixel Shifter | Converts the Pi's 3.3 V data signal to the 5 V the ring needs. |
| Adafruit APDS9960 | Proximity sensor: knows when a card arrives. |
| Adafruit UDA1334A | I2S stereo DAC: clean digital-to-analog audio. |
| Adafruit MAX98306 | Stereo amp driving the speakers. |
| 2× 44 mm 3 W speakers | Narration on one channel, soundscape on the other. |
| Anker PowerCore 20000 | Battery. One port for the Pi, one for the amp. |
| 3D-printed enclosure | Base, column, head, camera mount, Pi cover, panels and feet. Prusa MINI+, PLA, 0.2 mm. |
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
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.



| Service | Role |
|---|---|
| Cloudflare Workers | Hosted the Vault and the device's download route. Now serves this page. |
| Cloudflare R2 | Storage for the finished audio library, about 116 readings. |
| Supabase | Card database, review status and logins. |
| ElevenLabs | Voice generation for the narrator. |
| GitHub | Source; every push deployed the site. |