In a lab project at the department of human-centered ubiquitous media we were challenged to create a modern music player which references traditional radio design. The timeframe was one semester.
Step 1: First Experiments
In order to get familiar with the potentiometers, the Arduino platform as well as the displays, we built a small prototype.
We connected the potentiometer to the Arduino and wrote a sketch which sends the value of the potentiometer to the Raspberry. On the Raspberry's side, a small python script receives the data and sends it to the e-ink display.
As we were still using the red-black version of the e-ink display, updating the display took 15 seconds, which we deemed to slow for our interaction scenario.
Step 2: NFC Control & Audio
Next, we connected the RFID reader, initially to the Raspberry Pi, to use it as a control mechanism.
In this prototype, the NFC tag controls the audio which is played on our speakers.
Additionally, we experimented with data connections between the Raspberri Pis, making one the controlling instance, the master Raspberry, and one the data-feeding instance, the slave Raspberry.
Step 3: Motor-Fader
We initially planned on using a digital indicator for showing song selection. Unfortunately E-Paper screens in general have a very slow refresh time (1-15 sec depending on screen size and colors) which made it impossible to use for our scenario. In order to still have a fluid interaction and preserve the traditional design concepts, we decided on a motorized fader to have a physical red bar move in front of the screen.
Because of time constraints and simplicity we chose against building our own mechanical solution and instead went with a motorized fader which we can control from our Arduino.
An H-Bridge is required to move the motor in both directions.
Step 4: Final Hardware Build
In order to build the hardware of the NFC radio, you will need the following (or equivalent) parts:
- 2x Single-Turn Potentiometer, 10kΩ Resistance
- 4x Tiny Light Bulbs
- Generic USB + 3.5mm Speakers
- Generic USB Soundcard
- Arduino Uno
- USB Type-B to Type-A cable
- 2.13" E-Ink Display
- 7.5" E-Ink Display
- 2x Panel Driver for the Displays
- RFID Reader + Tags
- 2x Raspberry Pi 3B+
- 2x Generic 8GB (or higher) Micro-SD Card
- Generic 10kΩ Resistor
- H-Bridge L293D
- 10kΩ Motor-Fader
- 2x Small Breadboard
- Jumper Cables
To build the NFC radio, wire everything according to the fritzing diagram.
Because these two displays need unique pins on the Raspberry Pi, we used two Raspberries. To make the communication hierarchy more straightforward, one of the Raspberries is only responsible for outputting to the large display (the slave Raspberry), while the other is responsible for calculations, control and the smaller display (the master Raspberry).
For the screen wiring, we relied on the documentation of Waveshare (small display, large display). Simply connect the display to its panel driver via its connector and wire the panel driver according to the Waveshare documentation.
The speakers are powered over USB and get their input via the 3.5mm audio input of the USB soundcard. Plug both devices into the master Raspberry.
For a more stable, persistent connection we soldered the motor, potentiometers, light bulbs and button to their connecting cables. We abstained from soldering the remaining cables in order to stay more flexible with our cable management.
To establish a connection between the Raspberries, we used them as a UART and connected them via a serial connection, using their TX and RX pins.
Connect the master Raspberry with the Arduino over a serial connection, using USB.
Step 5: Software
To setup the software for the Raspberrys and the Arduino please follow the readme instructions on the github repository of our project.
Step 6: Building the Case
- 8x Sheet MDF Wood (300mm * 300mm * 3mm)
- 2 Component glue
- 3x Wooden bar (300mm * 20mm * 20mm)
- 1 Sheet Plexiglas (300mm * 300mm * 3mm)
- 6x Wood screw (20mm)
Cut the MDF sheets according to the Adobe Illustrator files. If you want to make your own box cutting plans go here and add the cutouts for the hardware components in Adobe Illustrator.
Join the the box faces and after test fitting glue them together for added stability. We left out the glue for the back side in order to put in the hardware later and debug the system.
Cut the wooden bars to flushly fit inside the case horizontally. Cut holes for the wood screws in the left and right part of the case. One bar should go behind the large display and the play/pause button, another one behind the small display plus sound and song potentiometers and the last one for holding the speakers inside the case.
Step 7: Combining Hardware and Case
- 2-sided tape
- Gaffa tape
- Hot glue
Use tape and glue to secure the parts on their respective wood bars. You may need to cut off parts of the potentiometer in order to fit the control knob. To route external cables like power cords we cut several holes into the back of the case.
Step 8: Finished Product
Once everything is assembled enjoy your cool new radio!