Das Ziel
Das Ziel ist eine Box zu haben, die gegenüber Kassette und CD einfacher in der Bedienung ist und dazu auch noch robuster. Sie soll auch in Version 2 weiterhin ohne Display auskommen und nur die notwendigsten Tasten und keine beweglichen Teile haben.
Version 1 vs Version 2
Während ich in Version 1 noch auf Teile gesetzt habe, die gerade vorhanden waren, verwende ich in Version 2 nur Teile die es so auch zu kaufen gibt. Außerdem werde ich diesmal etwas detaillierter auf die einzelnen Schritte eingehen, damit ein Nachbau einfacher möglich ist. Außerdem sind die Komponenten so verschraubt, dass auch ein Sturz oder ein Schütteln problemlos ist.
Die Hardware
Hier sind die verwendeten Komponenten:
- Raspberry Pi 3
- Ground Loop (zum verhindern einer Brummschleife)
- USB Soundkarte
- Klemme auf Klinke Adapter
- Beleuchteter Ein-/Ausschalter
- Powerbank 10.000mAh
- 2 kleine 3W Lautsprecher
- Platinenverstärker
- RFID USB Leser
- Knöpfe für Play/Pause, Vor/Zurück und Lauter/Leiser
Hinweis: Die Produktlinks sind Amazon Affiliate Links
Die meisten Teile sind von Drittanbietern bei Amazon und kosten sehr wenig. Man benötigt nur genug Zeit, weil teilweise 6 Wochen Lieferzeit normal sind. Die meisten Teile findet man so oder so ähnlich natürlich auch im örtlichen Elektronikfachgeschäft.
Zusammenbau
Als erstes habe ich eine Kiste aus Holz gebaut. Dazu im Baumarkt 6 Teile zusägen lassen. Die Maße in meinem Fall sind ca 25 x 15 x 15 cm. Das ganze sieht dann in verleimt, gebohrt und lackiert so aus:
Der Deckel ist verschraubt, um die ganzen Teile unterzubringen und um auch später noch leicht an alles zu kommen um ggf. Reperaturen vornehmen zu können.
Nun habe ich auf dem Boden die Powerbank mit Lochband fixiert und verschraubt. Genauso die beiden Lautsprecher. Den Raspberry habe ich an die Rückwand und den RFID Leser an die rechte Seite geschraubt.
Im Bild außerdem zu sehen ist unten in der Mitte der Daumengroße Verstärker. Dieser wird direkt aus dem Raspberry mit 5V versorgt.
Die PIN Belegung der GPIO Ports des Raspberry findet man über Google.
Auf der Powerbank liegend sieht man noch die USB Soundkarte mit der Ground Loop und dem Klinke-Adapter. An der linken Seite ist der Ein-/Ausschalter. Die LED des Schalters geht auf einen Port auf dem Raspberry, damit nach dem Hochfahren die LED blinkt um so den “gestartet” Zustand zu signalisieren.
Vollständig verkabelt inklusive der Taster sieht das ganze dann so aus:
Die Taster sind jeweils an GND und einen entsprechenden Pin verkabelt. Das wird dann in der Software definiert.
Aktuell sind folgende (physische, nicht GPIO) Pins definiert und belegt:
- Pin 11 (IN): Play/Pause
- Pin 12 (IN): Lauter
- Pin 13 (IN): Leiser
- Pin 15 (IN): Nächster Titel
- Pin 16 (IN): Vorheriger Titel
- Pin 3 (OUT): LED des Ein/Ausschalters. Signalisiert durch blinken, dass das Programm bereit ist
Software
Als erstes das Raspbian Image von der offiziellen Seite runterladen (die Version ohne den grafischen Desktop) und auf eine SD Karte schreiben. Ich verwende eine 32GB Karte, da darauf auch die Musik gespeichert wird.
Nach dem Hochfahren an einem Monitor als erstes sudo raspi-config
ausführen und dort folgende Punkte erledigen:
- Expand Filesystem
- Enable SSH
- Enable auto login
Nun mit sudo nano /etc/wpa_supplicant/wpa_supplicant.conf
die WLAN Konfiguration öffnen und dort folgenden Block hinzufügen/bearbeiten:
network={
ssid="wlan name hier eintragen"
proto=RSN
key_mgmt=WPA-PSK
pairwise=CCMP
group=CCMP
psk="wlan kennwort hier eintragen"
}
Nun sollte nach einem sudo reboot
der Raspi starten und sich ins WLAN verbinden. Man kann nun mit SSH (von Windows per Putty) darauf zugreifen und benötigt keinen Monitor mehr.
MPD als Musik Daemon einrichten
Dafür habe ich folgende Anleitung von Seite 1 verwendet. Dort kann man auch nachlesen, wie man PULSE anstatt ALSA als Audio Output verwendet. Bei mir funktioniert der Standard aber problemlos.
Die /etc/mpd.conf
sieht bei mir in der audio_output
Sektion folgendermaßen aus:
audio_output {
type "alsa"
name "My ALSA Device"
mixer_type "software" # optional
}
Mit mpc
sollte man nun lokal den MPD steuern können. mpc add "Ordner/Datei.mp3"
und anschließendem mpc play
sollte man ein Audiofile abspielen können.
Über add muss der Pfad relativ zum in der
mpd.conf
definiertem Musikverzeichnis sein.
Samba für den Netzlaufwerk Zugriff einrichten
Dazu mit dem Befehl sudo apt-get install samba samba-common
den Samba Dienst installieren.
Dann mit sudo nano /etc/samba/smb.conf
Einträge für die Freigaben hinzufügen. Ich habe 3 Freigaben angelegt. Eine für die Musikdateien, eine für die Playlists und eine für die Anwendung:
[music]
comment = Musik
browseable = yes
path = /var/lib/mpd/music
guest ok = yes
writeable = yes
create mask = 0644
public = yes
directory mask = 0755
force user = pi
[playlists]
comment = Playlists
browseable = yes
path = /var/lib/mpd/playlists
guest ok = yes
writeable = yes
create mask = 0644
public = yes
directory mask = 0755
force user = pi
[app]
comment = Home
browseable = yes
path = /home/pi/raspimusic
guest ok = yes
writeable = yes
create mask = 0644
public = yes
directory mask = 0755
force user = pi
Berechtigungen auf den jeweiligen Ordnern vergeben mitsudo chown -R pi:pi /var/lib/mpd/music/
Meine Applikation
Bei RaspiMusic handelt es sich um eine .NET Konsolenanwendung die mit Hilfe von mono auf Linux läuft. Durch die Einbindung von der GPIO Bibliothek kann man damit aus C# direkt auf die Input und Output Pins zugreifen um darüber die Buttons abzufragen und die LED zum blinken zu bewegen.
Voraussetzung:
- Mono (
sudo apt-get install mono-complete
) - RaspiMusic (Download als fertiges ZIP)
Nun einen Ordner im home Verzeichnis anlegen: mkdir raspimusic
In diesen die exe und dll Dateien von RaspiMusic kopieren.
Starten lässt sich das ganze dann mitsudo mono /home/pi/raspimusic/RaspiMusic.exe
Muss mit sudo ausgeführt werden, da sonst kein Zugriff auf die GPIO Ports möglich ist.
Um die Anwendung beim Starten automatisch zu laden fehlt noch, es über das Profil zu laden. Dazu das Profil bearbeiten mit sudo nano /home/pi/.profile
. Dort ganz am Ende dann folgende Zeile einfügen:sudo mono /home/pi/raspimusic/RaspiMusic.exe
Getestet werden kann nun mit sudo reboot
. Anschließend sollte die LED im Ein/Ausschalter nach ca. 30sek anfangen zu blinken. Die Anwendung wartet jetzt auf eine Eingabe. Diese erfolgt durch halten einer RFID Karte an den Kartenleser. Dieser “tippt” dann die Seriennummer ein und bestätigt mit ENTER. Um was zu hören muss natürlich eine Playlist mit der Seriennummer angelegt werden, z.B. 0005555555.m3u
Wenn ihr Fragen oder Anregungen habt, kontaktiert mich gerne per Mail oder Twitter.