Files
kidsbox/README.md
T
Claude 75dd63b56f Add parametric 3D-printable enclosure (OpenSCAD)
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
2026-06-13 10:39:55 +00:00

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
Frontal View Side View

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

  1. Write an audio URL to an NFC tag with a smartphone app (e.g. NFC Tools).
  2. Place the tag on the box → the box reads the URL, streams the audio, and caches it.
  3. Subsequent plays of the same tag use the local cache (no internet needed).
  4. 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.

Enclosure


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)