Five bench tests on one board, one part at a time, cheapest failure first. Each step shows only its own wires, the pads on the real board, and what my bench said when it passed.
| Part | Qty | Test | Paid | Where · when |
|---|---|---|---|---|
| Sonocotta Louder-ESP32-S3, rev K1 | 1 | A | €19.88 | [shop] · [date] · bought 3 |
| AIYIMA 2.5″ 4 Ω full-range speakers | 1 pair | B | €21.49 | [shop] · [date] |
| 5 V 3 A supply, USB-C pigtail | 1 | B | [price] | skip if one is lying around |
| SPI microSD module (XC6206) | 1 | C | [price] | [shop] · [date] |
| microSD card, FAT32, 32 GB or less | 1 | C | [price] | [shop] · [date] |
| PN532 v3 NFC reader | 1 | D | €3.90 | [shop] · [date] |
| NTAG tags | 1 per figure | D | €0.19 each | [shop] · [date] |
| KY-040 rotary encoder | 1 | E | [price] | [shop] · [date] |
| MX switches | 2 | E | [price] | [shop] · [date] |
| Total, before filament | about €60 | single unit, board at €19.88 | ||
Some links earn dadbuilt a commission. The price shown is what I paid.
pio run -e a_board -t upload -t monitor. A new S3 has no USB serial firmware, so the port appears and vanishes in a loop. This puts it in the bootloader. After that, every flash works over plain USB.
pio run -e <step env> -t upload -t monitor Pinned to espressif32@6.12.0: newer versions change the I2S API and test B stops compiling. pio run -e g_box_airplay -t ota Finds the box over Bonjour. A build that crashes or never reaches Wi-Fi rolls back. CaseThe Owlbox case by xtract, printed from MakerWorld. The reader goes under the lid, clear of the speaker magnets.
FiguresPrinted in colour on a Bambu H2S with the AMS, no paint, an NTAG tag in the base.
Main firmware0.2.7 runs on my box. It ships with the Plans on [Plans date].