2141357

Raspberry-Projekt: Xmas-TV mit Musik bauen

27.11.2015 | 09:05 Uhr |

Wie man aus einem Mini-Fernseher und dem Raspberry Pi einen dekorativen Musik-Player macht, erklärt dieser Beitrag.

Eigentlich ist Peter K. Boxler Mac-Nutzer, Elektro-Ingenieur und Software-Engineer in Rente – und er ist auch Raspberry-Projektentwickler. Als solcher hat er einige Projekte erfolgreich auf die Beine gestellt. Alle machten und machen ihm viel Spaß, wie er sagt, kosteten aber auch viel Schweiß und Tränen. Die Projektbeschreibungen sind eher für Pi-Hacker geeignet, da er die einfacheren Schritte nicht dokumentiert hat. Sie können aber generell als Anregung für Projektideen dienen.

Der Rasperry Pi hat mich von Anfang an fasziniert. Mein erstes Projekt war eine Lampensteuerung (das Switcher-Projekt). Danach habe ich mich an den Xmas TV gemacht, den ich hier vorstelle.

Der Xmas TV
Vergrößern Der Xmas TV
© Peter K. Boxler

In einem Geschäft in Zürich stieß ich auf den Christmas-TV, der mich sofort begeisterte - ich sah mein nächstes Raspi-Projekt unmittelbar vor mir stehen.

Der rund 35 Zentimeter große Original-TV (eigentlich ein Spielzeug) spielte etwa sechs Weihnachtslieder ab über einen kleinen Lautsprecher, der mit einem kleinen IC-Board verkabelt ist. Die Winter-Szene ist mit weißen LEDs beleuchtet, und der kleine Zug dreht seine Runden.

Eine perfekte Idee für einen Raspi-Musikplayer.

Der Hardware-Aufbau

Hardware-Setup Schema
Vergrößern Hardware-Setup Schema
© Peter K. Boxler
Hardware-Aufbau
Vergrößern Hardware-Aufbau
© Peter K. Boxler

Das System besteht aus einem Raspberry Pi Model B+, auf dessen 40-Pin-Connector ein Digital-Analog-Wandler HiFi Berry DAC+ aufgesteckt ist (stacked). Die ersten 26 Pins sind via Flachkabel mit einem Interface-Board verbunden, das an den entsprechenden Pins mit den Pull-up-Widerständen bestückt ist. Außerdem ist ein Analog-Digital-Wandler-Chip MCP3008 vorhanden, der die Stellung des Front-Potentiometers wandelt - für Lautstärke-Regelung. Zwei 8-Pin- und ein 5-Pin-Connector stellen die Verbindung zu Front- und Backpanel, zu den LEDs und zum Potentiometer her.

DAC+ ist via Cinch-Stecker mit dem Lautsprecher Mini Jambox verbunden.

Interface-Board Schema
Vergrößern Interface-Board Schema
© Peter K. Boxler
Interface-Board
Vergrößern Interface-Board
© Peter K. Boxler
Jambox
© Peter K. Boxler

Front- und Backpanel

Die 4 Push-Buttons am Frontpanel haben folgende Funktion (von links nach rechts):

Button 1: Nächster Song in der aktuellen Playlist

Button 2: Vorheriger Song in der aktuellen Playlist

Button 3: Erster Song in der aktuellen Playlist

Button 4: Toggle für Random Play

Frontpanel
Vergrößern Frontpanel
© Peter K. Boxler

Die 3 LEDs des Panels haben folgende Anzeigefunktion:

Grüne LED links: Blinkt, so lange Python Script läuft

Rote LED: Visuelles Feedback, wenn Button-Press erkannt

Grüne LED rechts: An bei Random Play, sonst off

Frontpanel und Backpanel
Vergrößern Frontpanel und Backpanel
© Peter K. Boxler

Das Backpanel hat 3 Kippschalter, einen Push-Button und eine rote LED. Diese Elemente haben folgende Funktion:

Erster Kippschalter: Hauptschalter, Power (5 Volt) on/off

Zweiter Kippschalter: Akku des Lautsprechers laden on/off

Dritter Kippschalter: Schaltet die Kleinbahn on/off

Push-Button: Drücken für > 2 Sekunden leitet Shutdown des Pi ein

Rote LED: Visuelles Feedback, blinkt drei Mal, wenn der Shutdown eingeleitet ist

Pin-Belegung des Raspberry Pi

Der verwendete Raspberry Pi Modell B+ hat 40 General-IO-Pins (GPIO). Zum Interface-Board werden die ersten 26 Pins weitergeleitet.

Pin-Belegung
Vergrößern Pin-Belegung
© Peter K. Boxler

Aufbau und Ansichten

Das bestehende Frontpanel hatte keine Funktion, es wurde durch ein neues Frontpanel ersetzt, in dem 4 Push-Buttons und 3 LEDs angeordnet sind.

Alte und neue Front
Vergrößern Alte und neue Front
© Peter K. Boxler

Die vorhandene, einfache Elektronik mit dem kleinen Lautsprecher wurde ausgebaut.

Ausgebaute Elektronikteile
Vergrößern Ausgebaute Elektronikteile
© Peter K. Boxler

Auf der Hinterseite des Fernsehers wurde ein Holzrahmen montiert, der den Pi und den Lautsprecher trägt. Das Interface-Board ist im freien Raum unter dem Diorama untergebracht.

Innenansicht
Vergrößern Innenansicht
© Peter K. Boxler

Die Software

Volumio Music-Player

Die in diesem Projekt verwendete Open Source Software Volumio wird als fertiges Demian-basiertes OS geliefert: SD-Card-Image herunterladen, auf Karte schreiben und den Raspi starten. So einfach geht das.
Der Build enthält viele Audio-Optimierungen und stellt ein einfaches Interface zur Verfügung.

Der vorinstallierte Webserver stellt eine Weboberfläche zur Verfügung, und so kann der Player vom Smartphone, Tablet oder Compi ferngesteuert werden. Dies ist ohne eigene Programmierung direkt nach erstem Start des Raspi möglich.

Das vom Volumio-Build zur Verfügung gestellte Webinterface des Volumio-Players sieht auf einem iPad so aus:

Volumio Web-Interface
Vergrößern Volumio Web-Interface
© Peter K. Boxler


Die Volumio-Software spielt Online-Radios und lokale Musikdateien (Flac, MP3s, Wavs, AAC, Alac, Musepac) ab und kann auf Spotify, Netzwerklaufwerke und die eigene USB-Bibliothek zugreifen. Zahlreiche Feintuning-Optionen unterstreichen den Anspruch des Volumio-Projektes, sich auch an audiophile Bastler richten zu wollen.
Da die Audio-Kapazitäten des Raspi mager sind, setzt Volumio auf die Schnittstelle I2s und eine qualitativ hochwertige 24-Bit-Digital-Analog-Wandlung. Verwendet wird deshalb das Produkt HiFiBerry DAC+ .
Im Xmas TV wurden auf der Frontseite diverse Push-Buttons angebracht; diese erlauben eine Steuerung auch am Gerät selbst: next song, previous song, shuffle play.
Nochmals anders gesagt: Das in diesem Projekt verwendete Raspi-OS kommt vollumfänglich von Volumio.
Die konkrete Steuerung des Music-Players übernimmt das im Folgenden beschriebene Python-Programm. Wie erwähnt, kann der Music-Player auch via Smartphone gesteuert werden.

Xmas-TV-Programm

Die verwendete Script-Sprache ist Python. Das Programm hat die Aufgabe, Kommandos an den im Volumio-Build integrierten Music-Player MPD abzusetzen. Es stellt das Interface her zwischen den Push-Buttons an der Frontseite des Xmas TV und dem
Music-Player: Python arbeitet als Client des MPD-Servers. MPD ist der Music-Player-Daemon, der die Musik spielt - er ist Teil des Volumio-OS.
Das Programm wird beim Booten des Pi via /etc/rc.local gestartet. Für Testzwecke kann das Programm in einem Terminal-Fenster auf der Kommandozeile gestartet werden. Dabei können folgende Kommandozeilen-Parameter spezifiziert werden:

 -d              debug, Statusmeldungen werden ausgegeben (stdout)

Das Programm setzt für jeden Push-Button des Frontpanels eine Callback-Routine auf (Interrupt). Diese Funktionen werden aktiv, wenn der entsprechende GPIO-Pin auf Potential Null geht. Dann wird die entsprechende Funktion des MPD aufgerufen.

Werbung

Beim Betrieb des Xmas TV wird in unregelmässigen Abständen ‚Werbung‘ eingespielt. Dazu wird die MP3-Datei werbung_1.mp3 temporär in die Playlist geladen und gespielt (6 Sekunden Dauer). Anschließend wird dieses Stück wieder aus der Playlist entfernt. Diese Aufgabe wird ebenfalls von Python erledigt.

Soft-Shutdown

Ein zweites Python Script ist für die Einleitung des Shutdown des Pi zuständig. Es wird ebenfalls beim Booten des Pi via /etc/rc.local gestartet. Seine Aufgabe ist (via Callback) die Einleitung des Shutdown ("system halt"), sobald der Push-Button des Backpanels für mehr als 2 Sekunden gedrückt wird. Die rote LED wird für ein visuelles Ack-Signal drei Mal kurz angesteuert.

Vor dem Absetzen des Shutdown wird eine vordefinierte MP3-Datei (Abschiedstext) der aktuellen Playlist zugefügt, die Lautstärke wird langsam vermindert, das gerade gespielte Stück wird ausgeblendet und der Abschiedstext wird gespielt. Danach wird "system halt" an den Pi abgesetzt.

Software-Komponenten

Das Projekt besteht aus folgenden Codeteilen/Scripten:

mpd-client.py : Hauptprogramm Xmas TV, setzt Funktion an den mpd ab je nach gedrücktem Push-Button

softshut-mytv.py: Soft-Shutdown Script, leitet Shutdown ein, wenn Push-Button Backpanel gedrückt wird

Der gesamte Code des Xmas TV kann hier heruntergeladen werden.

Und hier geht's zu Peter Boxlers anderen Raspberry-Pi-Projekten:

Funksteckdosen schalten mit dem Raspberry Pi

Light Painting mit dem Raspberry Pi

Hinweis für alle Bastler:

Wenn auch Sie ein kreatives Projekt entwickelt haben, schreiben Sie uns. Wir würden Ihre Konstruktionen, nützlich oder einfach nur schräg, gern auf www.pcwelt.de/hacks vorstellen. Schreiben Sie an Birgit Götz - hacks@pcwelt.de.

0 Kommentare zu diesem Artikel

PC-WELT Hacks - Technik zum Selbermachen?

Raspberry Pi erfreut sich gerade unter Bastlern einer großen Beliebtheit. Kein Wunder, denn mit der 35-Euro-Platine lassen sich viele spannende Projekte realisieren. Vom Mediacenter, Netzwerkspeicher, Fotomaschine bis hin zum Überwachungssystem ist alles möglich. Dieser Bereich ist aber nicht nur dem Raspberry Pi gewidmet, sondern bietet auch viele Tipps, Tricks und Anleitungen für andere spannende Bastelprojekte.

2141357