The jukebox allows you to use RFID tags to control Mopidy and play songs from Spotify (through the Mopidy-Spotify plugin). It runs on the Raspberry Pi.
- RFID based playback
- Playing music from Spotify, internet radio (m3u streams) and local files
- Synchronized, multi-room audio
- Modern, mobile-friendly web UI
- Smartphone based volume control
- Support for Spotify Connect
In case you want to build your own, here are the components that I used. Since I built two different configurations, I am listing both here:
- Living room jukebox (connected with 3,5 mm jack plug):
- Raspberry Pi 3 B or newer + microSD card
- USB sound card (example)
- Normal 2.5A power supply (example)
- Kitchen jukebox (connected with speaker cables):
- Raspberry Pi Zero W (example) + microSD card
- JustBoom Amp Zero pHAT
- A stacking header to mount both the amplifier and connect the RFID reader (example)
- 9V 24W power supply (example)
- An MFRC522 SPI RFID reader (example)
- Jumper cables to connect the RFID reader to the Pi (example)
- RFID tags (example)
There are a number of alternative HATs available that provide different types of audio output (analog, digital, amplified, 3,5 mm jack, etc.), and may be suited to your needs:
Be sure to check if the HAT you choose can provide and handle the power you need for your speakers.
The jukebox consists of the following software components:
- Mopidy with the following extensions:
- Mopidy-Spotify
- Mopidy-Scrobbler, to scrobble to Last.fm
- Mopidy-Iris, mobile-friendly UI
- RFID Jukebox (this repository), which reads RFID tags and controls Mopidy
- Snapcast for synchronized, multi-room audio
- Snapcast Android client to control the volume
- (Experimental) Raspotify as an alternative to stream music from the Spotify client directly. Currently, I am experiencing issues because the music is played back too fast.
I use Ansible to install and configure my Raspberry Pi's.
You can adapt the playbook to your purposes: you need to change the host names and provide/change the variables.
The playbook uses several roles I wrote:
- Ansible role for Mopidy
- Ansible role for Snapcast
- Ansible role for the RFID Jukebox
- Ansible role for Raspotify
- Ansible role for Raspberry Pi
- Diskplayer: Using 3.5" floppy disks to play albums on Spotify
- Pi MusicBox
- Phoniebox
- TonUINO (German language only)