Kids RFID MP3 Player
An Arduino-based MP3 player where kids select audio content by holding RFID cards against the device. No screen, no menus, no WiFi — just tap a card and music plays. Built together with my son in 2018 as a cheaper, more flexible alternative to commercial products like the Hoerbert or Tonuino.
Why this exists
Commercial kids' audio players have trade-offs. The Hoerbert only offers 9 direct-select buttons with color-coded cards that aren't very intuitive for very young children. The Tonuino uses expensive RFID figures and relies on WiFi streaming, which introduces latency and dependency on network availability. This project aimed for the best of both worlds: RFID-based content selection with local-only playback, analog volume control, and minimal buttons.
Hardware
- Arduino — the microcontroller running the custom firmware.
- RFID module — reads MIFARE cards to trigger audio playback.
- DFPlayer Mini — compact MP3 player module with built-in amplifier, handling audio decoding and playback directly from an SD card.
- Pololu power switch — handles auto-shutdown to prevent battery drain, replacing a manual toggle switch that a child would forget to turn off.
- Analog volume knob — a rotary potentiometer for tactile volume control, deliberately chosen over digital buttons.
- 3 LEDs — green (playing), yellow (paused), red (stopped/at end).
How it works
Each RFID card is mapped to a specific audio file on the SD card. Hold a card against the reader and the corresponding story or song starts playing. Hold the RFID keychain against the reader to pause; hold it again to resume. No other buttons exist on the device — the design intentionally minimizes interaction points so even a toddler can use it independently.
Auto-shutdown behavior
The power management distinguishes between two states to avoid unnecessary battery drain:
- Stopped (playback reached the end) — the device shuts down after 5 minutes.
- Paused (user paused via RFID) — the device stays on for 1 hour before shutting down, allowing easy resumption.
The case
The enclosure is a custom-built retro-style wooden box, painted by hand. The name "Rocky Box" came from my son, who painted a Paw Patrol character on the front. The design is deliberately quirky and homemade rather than polished — it has character.
What's missing (by design)
- No resume after power-off — turning the device off mid-playback means starting the story over from the beginning.
- No skip forward/backward within a track — stories play start to finish.
Both omissions are intentional. Young children don't need seeking functionality, and keeping the interface to just "tap card, listen" reduces confusion.
Setup
All 100 RFID cards were pre-programmed once and labeled with numbers. No card learning or reprogramming is needed after initial setup — just hand a child a numbered card and they know which story it triggers.
Code
The Arduino firmware is not yet published on GitHub. It's a custom implementation (not Tonuino), written in C++ for the Arduino platform. The code may be uploaded in the future.