Eight independent barrel wine-mysteries. A player's key starts their barrel's false memory; bottles and a Drawing Room object are checked at stand-alone NFC stations; three correct bottles back at the barrel reveal the real memory. Running since opening night (2026-10-10).
→ Barrel ESP32 pinout (readers, BrightSign, staff button). → Bottle & object tag lookup — searchable reference for physically tagging bottles/objects. Full audit + audio cross-check is in content/.
Start at 1 of 8 barrels → the player's key plays a false memory that names Bottle 1 → check Bottle 1 at a wine bottle room station (gives a seller record and an investigation sheet) → the sheet leads to three objects in the Drawing Room; the right one, checked with Bottle 1, names Bottle 2 → Bottles 1 + 2 at a wine bottle room station name a Library book → an insert in the book identifies Bottle 3 → all 3 bottles back on the original barrel → the real memory.
| Barrel | Story |
|---|---|
| 1 | The Toast That Never Happened |
| 2 | The Guest Who Was Never There |
| 3 | The Warning That Came Too Late |
| 4 | The Last Bake |
| 5 | The Missing Painting |
| 6 | The Applause That Never Came |
| 7 | The Empty Chair |
| 8 | The Conservatory |
8 separate barrel games, intentionally NOT interconnected: no central computer decides anything during play, no station talks to another, and tags carry identity, never progress. Every station judges only the tags on its own readers against its own built-in answer table.
One full loop, from the patron's point of view, alongside what the hardware is actually checking at each stop. Useful for talking through the whole game with Brett in one pass.
This is the part that isn't obvious watching a patron play — every wine bottle room station and every
Drawing Room station runs the exact same firmware, for every story. No station is wired to
"Game 4" specifically. Every tag says which player it belongs to (Winebottle_1 Player_4), the
station holds the answers for all eight stories, and it plays that player's clip from that player's SD
folder. Only the barrels are numbered: each barrel's build knows its own story.
| Tags on the station | Station reads | Plays |
|---|---|---|
| key + bottle | Key_Player_1 + Winebottle_1 Player_1 | story 1, "Bottle 1 correct" (folder 21) |
| key + bottle | Key_Player_4 + Winebottle_1 Player_4 | story 4, "Bottle 1 correct" (folder 24) |
| two bottles | Winebottle_1 Player_4 + Winebottle_2 Player_4 | story 4, "Bottles 1+2 correct" (folder 24) |
| mismatch | Key_Player_4 + Winebottle_1 Player_2 | story 4, "not correct" + 10 s lockout |
Which physical bottle carries which tag is in the staff answer key, not on this page.
Interchangeable by design: any wine bottle room station ↔ any other, any Drawing Room station ↔ any other. Barrels share one firmware; only the barrel number differs per build.
| Field | Value |
|---|---|
| Station types | Barrel (×8, Wine Cellar) · Wine bottle room station (×3, identical, every story) · Drawing Room station · Library (printed inserts, no electronics) |
| Controller | Arduino Mega + PN532 NFC readers on SPI (3 per barrel, 2 per station). ESP32 port of the barrel firmware is built but not yet on hardware. |
| Media | Barrels: BrightSign HD223 + projector, one SD card per barrel. Stations: DFPlayer audio from SD cards. |
| Tags | Player keys, bottles (many copies each) and 24 Drawing Room objects (3 per story); NTAG stickers, objects also on blue MIFARE Classic fobs |
| Content | Brett's files; single source of truth content/RESERVE-GAME-MASTER.md |
| Status | In the show since 2026-10-10. Next: barrels to ESP32 + serial BrightSign link (see Open items) |
All builds are stored in Understudy's firmware registry and flashed from there. Each type holds the answers for all eight stories; barrel builds differ only in their barrel number.
| Station | Firmware | Board | Latest version |
|---|---|---|---|
| Barrel 1-8 | reserve_single_player_station (registered as reserve_station_p1 … p8) | Arduino Mega | 0.4.13 |
| Barrel 1-8 (next) | reserve_station_esp32 (registered as reserve_esp32_p1 … p8) | ESP32 | 0.5.0 registered, 0.5.1 in the repo. Not yet run on real hardware. |
| Wine bottle room station | reserve_validator_bench | Arduino Mega | 0.5.1 |
| Drawing Room station | reserve_drawing_room_bench | Arduino Mega | 0.8.2 |
| Tag writing (bench) | mega_nfc_tag_writer | Arduino Mega | 0.2.0 |
GAIN) and a read-rate meter (RANGE) over USB, because some readers fail with a tag too close.| Qty | Component | Role / notes |
|---|---|---|
| 1 | Arduino Mega (ESP32 DevKit after the port) | Key → clue video; 3 bottles → final video |
| 3 | PN532 V3 NFC reader (SPI) | Under the wooden bottle shelf, one per hole; a set gap above the reader reads better than touching it |
| 1 | BrightSign HD223 + projector + SD card | That barrel's clue / standby / incorrect / final clips |
| 1 | Staff FORCE FINAL button | Plays the final video when a reader or tag won't cooperate |
| — | PSU, wiring, enclosure | — |
| Qty | Component | Role / notes |
|---|---|---|
| 1 | Arduino Mega | Key + Bottle 1, then Bottles 1 + 2 (never Bottle 3) |
| 2 | PN532 NFC reader (SPI) | Either pad for either tag |
| 1 | DFPlayer + speaker + SD card | Folders 21-28, four clips per story |
| Qty | Component | Role / notes |
|---|---|---|
| 1 | Arduino Mega | Bottle 1 + object |
| 2 | PN532 NFC reader (SPI) | Either pad for either item; reads blue Classic fobs |
| 1 | DFPlayer + speaker + SD card | Folders 31-38, two clips per story |
Barrel: key → false memory (names Bottle 1) Wine bottle room: key + Bottle 1 → seller record → investigation sheet Drawing Room: Bottle 1 + chosen object → names Bottle 2 Wine bottle room: Bottle 1 + Bottle 2 → names a Library book Library: book insert (Bottle 3) — no electronics Barrel: Bottle 1 + 2 + 3 → real memory (or wrong-bottle video)
Each station has fixed reader positions (barrel 3, stations 2), all on one SPI bus with one chip-select
wire per reader, no multiplexer. Mega barrels pulse three BrightSign GPIO inputs (clue / incorrect / final).
The ESP32 port wires the BrightSign GPIO header as a serial port instead (pins 3 and 11, plus ground) and
needs a new autorun.brs on the barrel card. ESP32 barrel pinout with a board diagram: barrel-esp32-wiring.html. Full pin tables are in each firmware's folder under
platform/tools/.
On a wrong answer: the "not correct" clip, no next clue, the station ignores tags for 10 s, then it is ready again. A wrong label has to read several times in a row first, so one misread can't lock it.
| Tag / control | What it does |
|---|---|
Key_Master | Plays the clue video on any barrel (never counts as a bottle) |
Staff_Final (fob or sticker) | Plays the final video on any barrel |
Winebottle_1/2/3 Universal | Counts as that bottle for whichever player the other tag belongs to |
Winebottle_Master | Counts as the correct first bottle at the wine bottle room and Drawing Room stations |
| FORCE FINAL button (barrel) | Hold 0.5 s: plays the final video |
Key_Player_N player's key Winebottle_1 Player_N … _3 the three bottles (note the space before "Player") DroomObj_correct Player_N the right Drawing Room object DroomObj_incorrect Player_N both wrong objects
Barrel SD (one per barrel): 00_clue (false memory) · 01_standby ("BARREL N" loop)
02_incorrect (wrong bottle) · 03_final (real memory)
Station SD (same layout on every station card):
21-28/001-004.mp3 wine bottle room: phase 1 correct / not, phase 2 correct / not
31-38/001-002.mp3 Drawing Room: object correct / not
24 story videos (3 per barrel) are listed in content/barrel-video-manifest.md. The 48 station
clips are transcribed in content/station-audio-script-2026-10-09-coachman.md; the current set is
2026-10-09-coachman (stories 1 and 3 now say "the Coachman's Guide to Roads", matching
the printed book). Understudy writes both kinds of SD card.
Understudy doesn't run the game; it supports it:
content/blue-tags-sheet-draft.md).