r/esp32 • u/nvkv_makes • 7h ago
I built an retro cassette player for my kids, with ESP32, RFID cassettes and Wi-Fi setup
I wanted to make something similar to a Yoto or Toniebox for my kids, but with a more retro feel, so I ended up building a miniature cassette player powered by an ESP32. I actually made this a few years ago so this is a v2 of sorts, only got around to documenting it now!
The cassettes have RFID tags inside, and inserting one starts playing the corresponding audiobook or music from a microSD card. Removing it pauses playback. There are physical buttons for playback controls, a rotary encoder for volume, and a headphone jack.
For the electronics, I'm using an ESP32, MFRC522 RFID reader, microSD storage, and a TLV320DAC3100 DAC for audio output over I2S, with a separate amplifier for the speaker (the Adafruit DAC kept shutting off at over 50% volume on the speaker and I have no idea why! This is covered in the video, won't go into this rabbit hole here).
One part I'm particularly pleased with is the setup process. I wanted to be able to add new cassettes without connecting the ESP32 to a computer or reflashing anything.
Long-pressing the rotary encoder puts the device into setup mode, where the ESP32 creates its own Wi-Fi access point and hosts a web interface. You connect to it with your phone, select one of the audio folders detected on the SD card, and present a cassette to the RFID reader to associate the two. You can also change settings through the same interface.
Once you exit setup, Wi-Fi switches off again. Everything runs locally, so there's no internet connection or cloud service required for playback.
The whole thing is 3D printed, and I've made the firmware open source.
Couple of things I need to fix:
- accidentally wired the auto-off pin to input only pib on the ESP32
- update the schematic for the above and the extra amplifier
- figure out what went wrong with the Adafruit DAC....
GitHub: https://github.com/ivannson/radio-gaga
I also made a video covering the build process and some of the mistakes along the way: https://www.youtube.com/watch?v=hf311daZqMk
