What can you do with C#, a Raspberry Pi, a Pi-DAC, and a Matrix Orbital GLK Display?
Build a HiFi component that receives Internet streaming audio! But see for yourself:
Base plate with display unit mounted.
The wonderful GLK series HMI unit comes from Canadian display manufacturer Matrix Orbital in either USB, Serial or I2C flavour. I develop the Firmware on my Windows machine, and not on the Raspberry Pi itself, so the prototype uses the USB version. Easy for me, because I can connect the display straight to my workstation for development and debugging purposes.
Raspberry Pi, Pi-DAC, Power supply & distribution added.
Good single malt and good audio boards come from Scotland, it appears. IQaudIO’s Pi-DAC employs a Burr Brown (now TI) chip, the PCM5122. Not as audiophile as the legendary PCM1704 perhaps, but listening to it is certainly a pleasant experience. The engineers at IQaudIO designed the power conditioning with great care, and the output signal is very clean. This is indeed a high quality line output card for the Raspberry Pi!
A 15W Mean Well SMPS feeds its 5VDC supply to the distribution rails, where a 10k uF capacitor provides additional stability and reduces ripple. The display, the Raspberry/Pi-DAC-Combo, as well as the external USB port each have their individual power feeds from the power distribution rails. The USB port has an extra 3300uF capacitance added, to smooth out any load surges that might occur when operating power hungry USB devices.
Backplate with line out, Ethernet and USB.
I chose professional (read: expensive) Neutrik connectors for Ethernet and USB on the prototype, as they are particularly sturdy and durable. The line out has isolated, gold plated RCA receptacles. A 500 mA fuse protects against catastrophic SMPS failure while still allowing for (theoretical) 110VAC operation. I took utmost care not to produce any ground loops in the internal wiring harness: Power distribution and grounding follow a pure star topology while the analogue line output ground is isolated from the (earth ref’d) chassis.
Stream One assembled and working.
I wrote the SDD# open source firmware platform in C#. While the Stream One hardware runs SDD# on Raspbian ARMv6 Linux, SDD# executes on Windows, too. The software is a prototype framework design, composed of subsystems for audio streaming (built around the BASS audio library), LCD display abstraction, GUI and user interaction, general input/output and for application software management (Apps). With the project further serving as a technology demo, the Stream One Internet receiver is implemented as an actual App running on top of the SDD# core.
Instead of navigating through lists of tens of thousands of stations available on both Shout- and Icecast, I gave the Stream One a “TV-style” memory that holds up to 99 presets. Programming these presets is conveniently done through a web interface (yet to be developed as of today). The receiver also provides gap-less transitions between station presets and displays extended real-time information about the current station and the streaming conditions (buffer level).
Case illumination controlled by GPIO.
A special effect, the Raspberry Pi controls the blue enclosure lighting by GPIO pin. I plan to use the illumination for an alarm clock feature.
Build time for the hardware was 14 hours, for the software 200+ hours so far. And I spent close to $500 on materials – including shipping, handling and taxes.
Further information about the project can be found in this PDF: Building Stream One.2