Component selection

The tl;dr; is this:

The total sum of should be at around $70-$90 without the PI and the screen (Aliexpress prices).


Screen: I certainly hope that based on the previous post you had made your choice.

Speakers: There are a lot of great DIY kits available on Amazon and E-Bay. On the other hand building, a decent speaker is hard and honestly based on the size of the project I decided to take another route.
If you want to have a 10-12 inch display then it is easier to cannibalize on something prebuilt. Given that Logitech provides some quite well built entry-level speakers I decided on the Logitech Z200.

You can get these at around $20 and they sound quite decent if put into a wooden box. The drivers are 60 mm in size, the input voltage for the speaker is 5V.
This is the time you want to start thinking about your color scheme: only the drivers will be exposed, the white comes with a white center with a grey rubber at the edge, while the black one boasts a black center with a black rubber edge.

Radio module: I used the TEA5767 FM Stereo Radio Module. This is a nice I2C module. The only problem I had encountered is that the volume levels are no match for the RPI’s volume levels.
This is the reason why I recommend that you are adding a USB soundcard to the mix.

Sound card: The RPi’s analog audio output is quite noisy. Also, the radio module’s output will need some amplification and the videos you want to put on the box might not have their audio tracks normalized. So you will need a USB sound card to make sure the sound quality of the box is acceptable.

It should have a microphone input that can be used to feed the radio signal to it. I decided to use a Creative Sound Blaster Play! 3 ($17):

As a plus, its cabled design will allow you to move it around inside the build to save some space.

Raspberry PI: I have used a 3 B+ as I did not want to be limited by the Pi itself. My current experience is that what you want to have is:

  • WiFi: for development, the machine should not require network access.
  • 2 USB ports: one for the sound card, one for the USB update port (to load new media to the machine)
  • HDMI port: to drive the LCD screen
  • GPIO headers: to drive the electronics (I2C, SPI, GPIO, UART is needed)

Now based on this (and the 10-15% CPU and 512MB of memory usage during playback) even a Raspberry PI Zero W should suffice.

The build is geared towards being used offline: this means that you should buy a big enough SD card to hold your data. I used 128GB cards as they are relatively cheap.

Power supply: Now depending on the LCD screen’s capability to drive the RPI you will need to have some kind of power delivery to the speakers and the RPI.

I used 2 LM2596 step-down converters for the task. If your panel does not come with a power supply you should also buy one external power supply and compatible DC jacks.

Joystick and A/D converter: To make navigation easy a simple joystick will be used (this is more natural than having a lot of buttons).
Also given that this is an analog stick I decided to go with the MCP3008 (or MCP3004) A/D converter, that can connect to the SPI bus of the Pi. The MCP3008 can also be used to drive the light sensor for the card detector.

The RFID reader and cards: To have the RFID functionality I decided to use 125 kHz cards and an EM4100 reader. I will have another post dedicated to this reader as there are some non-trivial quirks and tricks that you should be aware of before wiring the module in or creating the case.

Light gate (optional): EM4100 has a way to tell if the card is near the detector. Unfortunately, this capability depends on the placement of the RFID antenna.
So if you want to be able to detect if the RFID card is present in the slot you will need to implement a light gate. For that, you need a photodiode a matching led and two trimmers. Generally speaking, I would recommend that you order a trimmer kit as they are quite inexpensive.

LCD screen: Feels redundant right?

So I am talking about this puppy. Having this allows us to always show what content is being played without having to implement any funky OSD logic. Also, grandparents are not exactly fast at processing data: an OSD that is showing for 5 seconds is too fast for them.

To drive this you will need a 10 kΩ resistor and a 10 kΩ trimmer for brightness control.

HDMI cable: If your build is big enough to house a “normal” HDMI cable, then that’s what you should do. If not there is a nice space-saving option in the face of this cable:

Note: Please make sure that you are using HDMI cable wired as monitor cable as some compact dongles are just pass-thru cables.