Commit Graph
6 Commits
Author SHA1 Message Date
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
Claude 64475dbf5e Fix install.sh and setup.sh for macOS compatibility
install.sh:
- Add SCRIPT_DIR so .env is written to the repo root regardless of cwd
- Detect OS (macOS/Linux) and show platform-appropriate missing-tool hints
- Check for Xcode Command Line Tools on macOS (required by IDF install.sh)
- Handle pip3 absence by falling back to python3 -m pip
- Remove ninja from hard prerequisite list (IDF bundles its own)

setup.sh:
- Show macOS serial port hint (/dev/cu.usbserial-*) vs Linux (/dev/ttyUSB0)
- Show macOS SD card mount hint (/Volumes/) vs Linux (/media/$USER/)

https://claude.ai/code/session_01MhAnh68DPNnTjcKqjNYDmk
2026-06-13 07:34:36 +00:00
Claude 76b02b840c Add install.sh, setup.sh, and update README
install.sh: install ESP-IDF v5.2 + ESP-ADF v2.7, detect existing env,
  write .env file with IDF_PATH/ADF_PATH
setup.sh: prompt for WiFi creds, write sdkconfig.defaults, build,
  optionally flash and prepare SD card
README: rewrite to reflect current architecture (NFC URL streaming,
  web UI, no arduino-esp32), add roadmap and quick start

https://claude.ai/code/session_01MhAnh68DPNnTjcKqjNYDmk
2026-06-13 07:10:28 +00:00
Claude afbc0e5e23 Remove arduino-esp32 dependency, modernise WiFi and SPI compat
- Replace Arduino WiFi.h in Networking.cpp with native esp_wifi/esp_netif;
  uses event-driven connect with FreeRTOS EventGroup and 30 s timeout
- Remove initArduino() / Arduino.h from main.cpp
- Remove deprecated arduino-esp32 submodule (was uninitialized and marked
  deprecated since it was first added in Dec 2021)
- rc522.h: guard VSPI_HOST → SPI3_HOST for ESP-IDF 5.x compatibility
- WebInterface.cpp: drop redundant esp_wifi.h (esp_netif.h is sufficient)
- CMakeLists.txt: add esp_wifi + nvs_flash to REQUIRES

https://claude.ai/code/session_01MhAnh68DPNnTjcKqjNYDmk
2026-06-12 20:34:52 +00:00
Claude 4f9946bd17 Vendor esp-idf-rc522 as plain source instead of submodule
The library is modified (NDEF reading, cascade anticollision) so vendoring
it directly avoids needing push access to the upstream fork.

https://claude.ai/code/session_01MhAnh68DPNnTjcKqjNYDmk
2026-06-12 19:46:21 +00:00
Claude bf9852c345 Implement full NFC-URL streaming architecture
- rc522: add NDEF URL reading via WUPA+cascade anticoll+SELECT+TLV parse
- AudioPlayer: route http:// URIs to esp_player_http_music_play()
- CacheManager: download URLs async to /sdcard/cache/{hash}.{ext}
- TagPlayerControl: NDEF URL → cache-or-stream; fallback to UID local mapping
- RFIDInterface: wire ndef_callback, expose combined uid+url callback
- WebInterface: add /api/info, /api/storage, /api/playback, /api/bluetooth
- BluetoothInterface: stub for A2DP speaker mode
- Networking: WiFi connect with 30s timeout instead of blocking forever
- main.cpp: re-enable WiFi + web server, fix init order, add CacheManager
- www/: full SPA — playback controls, device info, storage, BT pairing
- .gitmodules: switch rc522 submodule URL to HTTPS

https://claude.ai/code/session_01MhAnh68DPNnTjcKqjNYDmk
2026-06-12 19:44:54 +00:00