Gartenmusik

Musik im Garten zu hören, ohne Lautsprecherkabel zu verlegen führt praktisch automatisch zu einer WLAN-basierten Lösung. Der dennoch benötigte Stromanschluss war in diesem Fall vorhanden.
Da der Lautsprecher recht wettergeschützt angebracht werden konnte, musste hier eine alte Lautsprecherbox aus dem Wohnzimmer herhalten.
Bild "Gartenmusik-Box_fertig.jpg"

Die Hardware

Um auf das ganze Musikarchiv auf dem heimischen NAS zugreifen zu können, bietet sich an, mittels MPD auf einem RaspberryPi die Musik vom NAS zu streamen. Da alles kompakt bleiben sollte, musste in der Box Platz für den Raspberry und den Verstärker geschaffen werden.
Ich habe mich dazu entschlossen,die Rückwand einfach ein wenig nach innen zu setzen, um so einen Hohlraum für die Elektronik zu schaffen.
Die Einbuße an Klangqualität habe ich in Kauf genommen. Allerdings hat sich subjektiv am Klang nixhts geändert.
Dem HiFi-Enthusiasten wird eine solche Musikanlage sowieso das kalte Grausen bereiten.

Bild "Gartenmusik-Saegen.JPG"
Mit einer kleinen Kreissäge lässt sich die Rückwand heraussägen.












Bild "Gartenmusik-Offen.JPG"
Hier sieht man die offene Box mit dem Dämm-Material. Der Trafo wurde in die Box eingebaut, während RaspberryPi und Verstärker auf die zurückgesetzte Rückwand geschraubt werden sollten.







Bild "Gartenmusik-Leimen.JPG"
Auf die Innenseite der Box habe ich eine Vierkantleiste geschraubt, auf der die Rückwand aufliegt und verschraubt ist. So wird das Ganze luftdicht und lässt sich später auch mal wieder öffnen. Dier sehr dünne Originalrückwand habe ich durch eine deutlich dickere ersetzt.







Bild "Gartenmusik-Technik.JPG"
Für ca. 15 Euro kann man beim Versteigerungsportal der Wahl einen Autoverstärker erstehen.
Der RaspberryPi verschwindet in einer ehemaligen Schraubenverpackung.
Das die Box vor eine Wand gehängt werden sollte, habe ich eine stabile Aluminiumleiste angebracht, die dann Wandhaken greift.















Bild "Gartenmusik-Technik1.JPG"
Hier sieht man die Verkabelung mit einem Stereo-zu-Mono Kabel.
Wie das genau aussieht ist unten beschrieben.










Die Elektronik


Stromversorgung

Da der Autoverstärker eine Spannung von 12 bis 18V benötigt, habe ich hier auf eine linear geregelte Spannung aus einem herkömmlichen Transformator gesetzt. Versuche mit einem Laptop-Netzteil haben hochfrequentes Brummen erzeugt.
Hier die Schaltung:

Bild "GartenMusik-Strom.png"

Trafo und Leistungstransistor stammem aus einem alten Viedorekorder. Natürlich könnte man auch einen Ringkerntrafo bestellen und als Leistungstransistor eigent sich z.B. ein BD203.
Der RaspberryPi wird einfach mit einem Handy-Netzteil betrieben, das auch in der Box verschwindet.

Stereo zu Mono

Die ich mich nur für eine Lautsprecherbox entschieden habe, müssen beide Sterokanäle addiert werden. Sonst hört sich die Musik irgendwie unvollständig an.
Das geschieht durch eine passive Widerstandsschaltung, die ins Kabel integriert wird:

Bild "GartenMusik-Stereo-Schaltung.png"

Die Software

Wie man einen RaspberryPi mit Betriebssystem und WLAN ausrüstet ist hinreichend woanders beschrieben, drum lasse ich das hier weg.
Ich gehe von einem installierten Rasperrian aus und funktionierendem WLAN.
Hier findet man zur Rasperry-Installation die nötigen Details: http://www.raspberrypi.org

Um vom zentralen Laufwerk (NAS) die Musik streamen zu können btraucht man auf dem Raspberry einen Streaming-Client. Hier bietet sich MPD an. Der lässt sich dann von einem Handy oder Tablet steuern. Hierzu installiert man dann z.B.:
Android: MPDroid  (https://play.google.com/store/apps/details?id=com.namelessdev.mpdroid&hl=de)
iOS: MoPD  (https://itunes.apple.com/de/app/mpod/id285063020?mt=8)

Installation von MPD auf dem RaspberryPi

Nach Installation von Rasperian sollte der Audio Player bereits installiert sein.
Alle folgenden Schritte kann man entweder machen, in dem man eine Tastatur und einen Bildschirm an den Raspberry anschließt oder man loggt sich per SSH ein. Von einem Linux rechner geht das sehr einfach. Hier öffnet man ein Terminal und ruft dort auf:

ssh pi@192.168.178.54  

Das default password ist raspberry. Kann man natürlich ändern.
In meinem Beispiel ist das oben die lokale Adresse im Netz. Die ist natürlich jeweils anzupassen.
Welche Adresse der Rasperry hat, findet man in der Konfiguration des WLAN Routers (z.b. Fritz Box) oder unter Linux mit
nmap -sP 192.168.178.*

Als erstes installiert man den MPD Client:

sudo apt-get update
sudo apt-get install mpd mpc


Damit der MPD-Client die Musik aus dem Netzwerklaufwerk findet, muss dieses Laufwerk "gemountet" werden.
Hierzu legt man zunächst mal ein Ziellaufwerk an:

mkdir /home/pi/NASMusic
chmod 777 /home/pi/NASMusic


Das Laufwerk trägt man in die fstab ein. Hierzu kann man z.B. den Editor nano benutzen. In meinem Fall habe ich die Musik ohne Password-Schutz versehen:

sudo nano /etc/fstab
proc            /proc           proc    defaults          0       0
/dev/mmcblk0p1  /boot           vfat    defaults          0       2
/dev/mmcblk0p2  /               ext4    defaults,noatime  0       1
//192.168.178.36/Music /home/pi/NASMusic cifs rw,users,nofail,guest,file_mode=0666,dir_mode=0777 0 0


Die letzte Zeile fügt man der fstab hinzu. In meinem Beispiel liegt die Musik auf dem share "Music" und das NAS auf der lokalen Adresse 192.168.178.36. Falls ein password gebraucht wird, so trägt man das ein in die Datei:

sudo nano /etc/samba/mpd.credentials
username = xxxx
password = yyyy


Damit das Laufwerk auch sofort (und nicht erst beim Neustart) zur Verfügung steht, führt man den mount direkt aus:

sudo mount -a

Nun braucht MPD noch die Information, wo er die Musikdateien findet. Das trägt man in die mpd.conf datei ein. Auch hier bietet sich der Editor nano an. Hier die beiden Stellen, an denen die Datei editiert werden muss:

sudo nano /etc/mpd.conf
# Files and directories #######################################################
#
# This setting controls the top directory which MPD will search to discover the
# available audio files and add them to the daemon's online database. This
# setting defaults to the XDG directory, otherwise the music directory will be
# be disabled and audio files will only be accepted over ipc socket (using
# file:// protocol) or streaming files over an accepted protocol.
#
music_directory         "/home/pi/NASMusic"

# This setting sets the address for the daemon to listen on. Careful attention
# should be paid if this is assigned to anything other then the default, any.
# This setting can deny access to control of the daemon. Choose any if you want
# to have mpd listen on every address
#
# For network
bind_to_address         "any"


Der Eintrag "any" ermöglicht, dass der MPD-Client über das Netzwerk gesteuert werden kann.
Nun fehlt nur noch das Starten des MPD Clients und der Update der Musikdatenbank. Das erreicht man mit:
ienst installieren
sudo /etc/init.d/mpd restart
mpc update


Mit

mpc listall

kann man sich die Musikstücke anzeigen lassen. Natürlich wird es einige Zeit brauchen, bis der Raspberry die gesammte Musiksammlung durchgeforstet hat.
Im MPD-Controller auf dem Handy muss jetzt noch die IP Adresse des RaspberryPis eingestellt werden (siehe oben) und dann kann es losgehen.

Bild "Gartenmusik-MPDroid.jpg"

Apple Airplay

Nachdem die Box an ihrem Platz im Garten ist und ihren Dienst verrichtet, kann man immer noch per SSH darauf zugreifen und neue Dienste installieren. Praktisch ist zum Beispiel Airplay, mit dem man die komplette Ausgabe von iPads, iPods und iPhones auf die Box umleiten kann. Das ist z.B. auch der einfachste Weg Spotify dort zu hören.

Da der Airplay Client nicht in den standard Repositories vom Raspbian ist, muss man sich diese aus dem Git-Hub holen. Dazu braucht man aber erst mal git, dass man im repository findet und mit apt-get installieren kann:

sudo apt-get install git libao-dev libssl-dev libcrypt-openssl-rsa-perl libio-socket-inet6-perl libwww-perl avahi-utils libmodule-build-perl

Zunächst installiert man das Perl Net-SDP. Das ist das Protokoll, das iOS verwendet für Airplay. Hierzu kopiert man die sources vom github und compiliert sie auf dem Raspberry:

git clone https://github.com/njh/perl-net-sdp.git perl-net-sdp
cd perl-net-sdp
perl Build.PL
sudo ./Build
sudo ./Build test
sudo ./Build install
cd ..


Shairport ist der airport-Client für den Raspberry, den es jetzt zu installieren gilt. Wieder kommen die sources vom github:

git clone https://github.com/hendrikw82/shairport.git
cd shairport
make


Nun startet man den Shairport mit:

./shairport.pl -a RayPi

Jetzt kann man am iOS-Gerät die Ausgabe umlenken. Es sollte dort jetzt ein Gerät auftauchen mit dem Namen RayPi.
Damit man den Client nicht jedes mal per SSH Session starten muss, sondern sofort nach dem Booten des RaspPis zur Verfügung hat, sind folgende Schritte notwendig:

cd shairport
sudo make install
sudo cp shairport.init.sample /etc/init.d/shairport

cd /etc/init.d
sudo chmod a+x shairport
sudo update-rc.d shairport defaults


Dann muss noch das sharepoint config file verändert werden. Das geht wieder am einfachsten mit nano:

sudo nano shairport
DAEMON_ARGS="-w $PIDFILE -a RayPi"


Das wars...