A printable reimagining of the wooden Kidsbox: rectangular cabinet with two front speakers, removable top lid (NFC tag rests there, reader mounts beneath), and swappable speaker mounts. - kidsbox.scad: master model + part dispatcher (body/lid/speaker_adapter/grill) - params.scad: all tunable dimensions in one place - lib.scad: helper modules (rounded shell, bosses, bolt circles) - Fixed front-panel speaker interface + swappable adapter so any driver fits by printing a new adapter (edit spk_* params, re-export) - Internal mounts: 2x18650 cradle, ESP32-LyraT standoffs, RC522 under lid, 3 buttons on lid, USB/charge + power-switch side ports, back-wall vents - Snap-in speaker grills - Makefile to export STLs and render previews (headless via xvfb) - Exported STLs and preview renders included - Link enclosure from main README Dimensions are sensible defaults from the reference photos and common parts; README flags the fit-critical values to verify before mass-printing. https://claude.ai/code/session_01MhAnh68DPNnTjcKqjNYDmk
3.7 KiB
Kidsbox
A battery-powered, RFID/NFC-tag-controlled audio player for kids. Place an NFC tag on the box — the mapped audio file or stream plays automatically. Tags are programmed from a smartphone using any NFC writing app (e.g. NFC Tools). The box streams from the URL written to the tag, caches it locally for offline play, and exposes a web interface for playback control and storage management.
| Front | Side |
|---|---|
![]() |
![]() |
Quick Start
1. Install the development environment
./install.sh
This installs ESP-IDF v5.2 and ESP-ADF v2.7 into ~/esp/ and writes a .env file.
Existing installations are detected automatically (via $IDF_PATH / $ADF_PATH).
2. Configure and build
source .env && source $IDF_PATH/export.sh
./setup.sh
setup.sh will:
- Prompt for your WiFi SSID and password
- Build the firmware (
idf.py build) - Optionally flash to the device
- Optionally prepare an SD card (create directories, copy web UI)
How It Works
- Write an audio URL to an NFC tag with a smartphone app (e.g. NFC Tools).
- Place the tag on the box → the box reads the URL, streams the audio, and caches it.
- Subsequent plays of the same tag use the local cache (no internet needed).
- Removing the tag pauses playback; replacing it resumes.
Without an NDEF URL on a tag, the box falls back to a local mapping file at
/sdcard/internal/<tag-id> (plain text, one URL or file path per file).
Web Interface
Once connected to WiFi, open http://<device-ip> in a browser.
| Section | What it does |
|---|---|
| Now Playing | Track URI, play/pause/stop, volume slider |
| Device Info | IP address, playback status, cache size, free heap |
| Storage | List and delete cached files |
| Bluetooth | Toggle BT speaker mode (stub — in progress) |
Enclosure
A parametric, fully 3D-printable enclosure lives in enclosure/ —
a rectangular cabinet with two front speakers and a removable top where the NFC tag
rests, with swappable speaker mounts so you can print an adapter to fit your
drivers. See enclosure/README.md.
Hardware
Parts
| Part | Links |
|---|---|
| ESP32-LyraT 4.3 | Mouser |
| RC522 RFID/NFC module | — |
| SD card (FAT32, any size) | — |
DIP-Switch (LyraT 4.3)
| Switch | Position | Purpose |
|---|---|---|
| 1 | OFF | Disconnects GPIO 12 from SD-D2 |
| 2 | OFF | Disconnects GPIO 13 from SD-D3 |
| 3 | OFF | Connects GPIO 15 to SD CMD |
| 4 | ON | Connects GPIO 13 to JTAG header |
| 5 | ON | Connects GPIO 12 to JTAG header |
| 6 | OFF | Connects GPIO 13 to SD CLK |
| 7 | OFF | Disconnects GPIO 12 from AUX-in detection |
| 8 | OFF | — |
RC522 Wiring
MISO/MOSI pin names are not inverted between host and chip on this board.
| RC522 Pin | LyraT v4.3 Pin | GPIO |
|---|---|---|
| 3.3V | 3.3V | — |
| RST | 3.3V | — |
| GND | GND | — |
| SDA | I2C SDA | 18 |
| SCK | I2C SCL | 23 |
| MOSI | JTAG MTCK | 13 |
| MISO | JTAG MTDI | 12 |
SD Card Layout
/sdcard/
www/ ← web interface files (copied by setup.sh)
internal/ ← tag-id → URL/path mapping files (manual)
cache/ ← downloaded audio files (managed automatically)
Roadmap
- RFID/NFC tag detection
- NDEF URL reading from NFC tags
- HTTP audio streaming
- Local file cache
- WiFi (native ESP-IDF, no Arduino dependency)
- Web interface — playback controls, storage, device info
- Volume buttons (hardware)
- Playlists
- Bluetooth speaker mode (A2DP sink)


