Was ist die Phoniebox?
Die Phoniebox ist ein Quelloffener Musik- und Hörspielplayer für den Raspberry PI. Die Phoniebox kann Musik und Hörspiele mittels RFID Karten für Kinder einfach zugänglich machen. Jede RFID-Karte kann dabei mit einem Ordner verbunden werden, welcher MP3-Dateien enthält. Das abspielen von Musik via Spotify ist ebenfalls möglich. Außerdem können RFID-Karten für bestimmte Funktionen der Box verwendet werden, u.a.: WLAN an/aus, WLAN IP-Adresse vorlesen, Aufnahme starten, Aufnahme abspielen, etc.
Zur Konfiguration der Karten und einiger Einstellungen gibt es ein Webinterface, welches sowohl vom PC als auch vom Handy bedient werden kann. Es funktioniert, ist aber nicht perfekt und lässt noch ein paar Optionen vermissen (zum Beispiel das Verwalten und Löschen von RFID-Karten).
Ergebnis dieses Projekts
Das Ergebnis dieses Projekts ist ein Musikplayer mit Stereosound (2x 3W), 5 Touch-Buttons zur Steuerung der Wiedergabe, einem Lautstärkeregler, einem Display mit Informationen zur aktuellen Wiedergabe, einem RFID-Reader zum anstoßen der Funktionen und einem Ein-/Aus Taster, welcher die Phoniebox ein- bzw. ausschaltet. Das Gehäuse muss selbst entworfen werden. Im Prinzip eignet sich auch ein Pappkarton. Ich werde am Ende mein Gehäuse zeigen. Das Gehäuse ist aber nicht Teil dieser Dokumentation.
Einkaufen
Bevor es los geht, hier die Einkaufsliste. Achte vor allem beim OLED-Display, dem RFID-Reader, dem Drehschalter und den Touch-Buttons darauf, dass du exakt das von mir bezeichnete Modell bekommst. Einige Modelle haben eine leicht abweichende PIN-Belegung. Grundsätzlich ist der Betrieb auch damit möglich. Ich habe in den Verkabelungstabellen den PIN-Bezeichner an den jeweiligen Komponenten angegeben. Auch wenn bei deiner Komponente die Bezeichnung um einen Buchstaben abweicht, sollte später trotzdem eine Zuordnung möglich sein. Es könnte aber sein, dass optisch ähnliche Module einen anderen Chip verwenden und deswegen nicht mit der folgenden Dokumentation kompatibel sind. Alle folgenden Preise beziehen sich auf den Stand vom Oktober 2020.
Verwendete Komponenten
Ich habe für meine Box einen Raspberry PI 4 B mit 2GB Arbeitsspeicher verwendet. Grundsätzlich läuft die Installation aber auch auf einem Raspberry PI Zero. Eventuell ist dann das Webinterface etwas langsamer. Einen Kühlkörper braucht es nicht. Der Raspberry PI kann völlig ohne Kühlung verwendet werden.
Was: | Wo: | Preis: |
---|---|---|
Raspberry PI 4 B mit 2 GB Ram | Reichelt: RASP PI 4 B 2GB |
36,90 EUR |
Netzteil mit Mikro USB (bei Nutzung OnOff SHIM) | Amazon | 9,99 EUR |
16 GB Class 10 SD-Karte | Amazon | 4,99 EUR |
128 GB USB-Stick (für Medien) | Amazon | 18,29 EUR |
RFID-Modul MFRC-522 (Frequenz: 13,56 MHz) | Reichelt: DEBO RFID RC522 |
10,11 EUR |
OLED-Display 128x64 Zeilen 1,3 Zoll | Amazon | 7,99 EUR |
Raspberry Shield - spart einige Lötarbeiten | Reichelt: RPI SHD DOUBLER |
8,68 EUR |
HifiBerry MiniAMP - Soundkarte für passive Lautsprecher | Reichelt: RPI HB MINI AMP |
19,01 EUR |
OnOff SHIM (zur vollständigen Abschaltung) | Amazon | 10,63 EUR |
2x Breitbandlautsprecher FR 10HM, 20 W, 4 Ohm | Reichelt: VIS FR 10HM-4 |
10,92 EUR |
5x Touch-Button | Reichelt: DEBO TOUCH |
4,63 EUR |
1x Arcade-Taster Schwarz | Arcade4you | 1,69 EUR |
Drehschalter für die Lautstärke | Reichelt: DEBO ROT SWITCH |
2,59 EUR |
zzgl. Drehknopf | Reichelt: MEN 524.611 |
3,73 EUR |
Stiftleiste 36 pol | Reichelt: SL 1X36G 2,54 |
0,19 EUR |
1K Widerstand, Kohleschicht, 1 kOhm | Reichelt: 1/4W 1.0K |
0,10 EUR |
ca. 60cm Lautsprecherkabel (2-adrig), 1,5mm² | Baumarkt oder Reichelt | 0,60 EUR |
Gesamt: | 151,04 EUR |
Material, welches für weitere Projekte reicht
Das Material hier reicht für weitere Projekte oder vielleicht auch eine zweite/dritte oder gar vierte Phoniebox. Online gibt es die Teile leider nicht einzeln. Vielleicht hast du ja auch noch etwas Material herumliegen.
Was: | Wo: | Preis: |
---|---|---|
Kabelsatz für die Verbindung der Komponenten | Amazon | 12,99 EUR |
Distanzhülsen M2,5 für die Montage der Elektronik | Amazon | 11,09 EUR |
Schrumpfschlauch | Reichelt: DELOCK 86271 |
3,89 EUR |
Lötkolben 30W inkl. Ständer und Lötzinn | Reichelt: FIXPOINT FP 30 |
12,28 EUR |
RFID-Karten & Zubehör
Für jedes Album (genauer: jeden Ordner) und jede besondere Funktion benötigst du eine RFID-Karte. Achte vor allem auf die richtige Frequenz der Karten. Du benötigst 13,56 MHz als Frequenz. Denkbar sind auch RFID Aufkleber oder Chips. Ich habe auch Skylander Figuren getestet. Nintendo Amiibo Figuren funktionieren auch. Da alle Informationen auf der Phoniebox gespeichert werden, verlieren diese Figuren ihre ursprüngliche Funktion nicht und können so zusätzlich für die Phoniebox genutzt werden. Der Speicherplatz auf der Karte ist egal, da nur die eindeutige ID der Karte ausgelesen wird (die RFID-Karten werden nicht beschrieben).
Was: | Wo: | Preis: |
---|---|---|
50x RFID-Karten mit 13,56 MHz Frequenz | Amazon | 11,99 EUR |
100x Etiketten bedruckbar (optional) | Amazon | 8,47 EUR |
100x Laminiertasche (optional) | Amazon | 4,02 EUR |
Damit ergibt sich ein Preis je fertiger RFID-Karte von 0,36 EUR (zzgl. Druckkosten).
Anschließen der Komponenten
Dies ist die Übersicht der fertig verkabelten Komponenten und deren PIN-Belegung. Da ein Raspberry Shield verwendet wird und einige Komponenten mit einer Buchsenleiste nur aufgesteckt werden, ist die PIN-Belegung später nicht komplett zu sehen. Man kann nur sehen, was selbst über Kabel gesteckt wurde. Im folgenden werden nun nacheinander alle Komponenten verbunden. Diese Übersicht dient der Kontrolle. PIN 39/40 befinden sich dabei in Richtung der USB-Ports (und des Netzwerkanschlusses). Du kannst nun schon einmal den Lötkolben einschalten, damit dieser gleich heiß genug ist. Zunächst wird aber nur gesteckt.
Raspberry Shield
Das Raspberry Shield sollte mit 4 Distanzhülsen abgestützt werden (Länge 12mm). Diese werden auf die Löcher des Raspberry PI geschraubt. Anschließend wird das Shield oben aufgesteckt und ebenfalls verschraubt. Falls der Raspberry PI später in ein Gehäuse gebaut wird, muss das Shild ggf. später noch einmal kurz abgeschraubt werden, damit man mit der Verschraubung des Raspberry PI von unten beginnen kann. Für die ersten Vorbereitungen sollte das aber so erst einmal genügen. So bezeichne ich im folgenden die einzelnen Reihen:
RFID-Reader
Für den Anschluss verwende ich Buchse auf Buchse Verbinder. Im empfohlenen Set kommen diese als 20er Streifen, welche noch zusammenhängen. Trenne dir hier 8 Stück zusammenhängend ab. Bei korrektem Anschluss ergibt sich ein 2x4 Block von PIN 17-24. Der Anschluss erfolgt an Reihe #1 (also oberhalb der Raspberry PI PINs).
MFRC-522 | PIN Raspberry PI | Bezeichnung |
---|---|---|
VCC | 17 | 3,3V |
RST | 22 | GPIO 25 |
GND | 20 | GND |
MISO | 21 | MISO / GPIO 9 |
MOSI | 19 | MOSI / GPIO 10 |
SCK | 23 | SCLK / GPIO 11 |
NSS | 24 | CE0 / GPIO 8 |
IRQ | 18 | GPIO 24 |
OLED-Display
Für den Anschluss verwende ich auch hier Buchse auf Buchse Verbinder. Trenne dir hier 4 Stück zusammenhängend ab. Bei korrektem Anschluss ergibt sich ein 2x2 Block von PIN 3-6. Der Anschluss erfolgt an Reihe #1.
SBC-OLED01 | PIN Raspberry PI | Bezeichnung |
---|---|---|
GND | Pin 6 | Ground |
VCC | Pin 4 | 5V |
SCL | Pin 5 | BCM 3 / SCL |
SDA | Pin 3 | BCM 2 / SDA |
Lautstärkeregler
Der Lautstärkeregler hat 5 Stifte, kommt aber mit 4 Kabeln aus (das mittlere SW Signal wird nicht benötigt - mit diesem könnte man noch den Klick des Lautstärkereglers auswerten). Trenne dir hier also wieder 4 Kabel vom ehemaligen 20er Streifen ab. Der Anschluss erfolgt an Reihe #2.
Rotary Encoder | PIN Raspberry PI | Bezeichnung |
---|---|---|
GND | Pin 14 | Ground |
+ | Pin 17 | 3.3V |
SW | - | - |
DT | Pin 16 | GPIO 23 |
CLK | Pin 32 | GPIO 12 |
Touch-Buttons
Hier muss nun noch ein bisschen gelötet werden. Zum einen werden 2 Kabelpeitschen benötigt und die Stiftleisten müssen noch an die Touch-Buttons gelötet werden.
Kabelpeitschen
Für alle 5 Touch-Buttons werden insgesamt 6 Kabel benötigt, welche beidseitig eine Buchse haben (ich habe 3 schwarze und 3 rote verwendet). Die Kabel werden jeweils halbiert. An der abgeschnittenen Seite müssen nun etwa 5-6mm abisoliert werden. Die 6 Kabelhälften einer Farbe werden nun wie ein Y verlötet, wobei das Y oben 5, anstelle von 2 Abzweigen hat. Dazu bietet es sich an, die Kabelenden der 5 Kabel etwas zu verdrillen, damit diese einfacher verlötet werden können. Ich habe dann zwei Schrumpfschläuche darüber gezogen. Erst einen großen (der über die 5 Kabel passt) und dann einen kleinen, welche dann später über den geschrumpften Schlauch und das einzelne Kabel passt (oberes Foto). Die Kabelenden anschließend etwas vor verzinnen und dann aneinander löten. Jetzt zuerst den großen Schrumpfschlauch in die Mitte ziehen und heiß föhnen. Anschließend den kleinen darüber ziehen und ebenfalls heiß föhnen. Die ganze Aktion wird nun mit den anderen 6 Kabelhälften wiederholt. So sieht das Ganze später aus:
Stiftleisten anlöten
An die 5 Touch-Buttons müssen noch die Stiftleisten angelötet werden. Dazu müssen zunächst von der Stiftleiste fünf Mal 3er Stege abgebrochen werden. Ich habe diese mit einem Tropfen Sekundenkleber zunächst vor fixiert, damit sie perfekt Senkrecht sitzen und das verlöten einfacher ist. Anschließend werden sie von der anderen Seite verlötet (der Kreis mit der Bezeichnung TOUCH zeigt dabei nach oben, die PINs nach unten). Damit die Stiftleiste nicht schmilzt, sollte der Lötvorgang maximal 1-2 Sekunden dauern. Im Zweifelsfall kurz abkühlen lassen und dann erneut ansetzen. Dabei muss sowohl der PIN, als auch das kleine Kupferstück an der Platine erhitzt werden. Ein bisschen Lötzinn hilft hier, beide Teile gleichzeitig zu erhitzen. Ich habe anschließend noch ein Klebeetikett mit der Funktion aufgeklebt, damit man beim Testen nicht durcheinander kommt (die sieht man später im Gehäuse nicht mehr):
Kabel anschließen
Nun werden die Kabel an die Touch-Buttons angebracht. Von den beiden Kabelpeitschen wird jeweils die Seite mit den 5 Buchsen an jeweils einen Touch-Button angeschlossen. Von der roten Kabelpeitsche kommt eine Buchse an den PIN des Touch-Buttons mit der Bezeichnung VCC
. Von der schwarzen Kabelpeitsche kommt jeweils eine Buchse an den PIN mit der Bezeichnung GND
. Nun werden 5 weitere Kabel mit jeweils zwei Buchsen benötigt, damit der I/O
-PIN der Touch-Buttons noch angeschlossen werden kann. Stecke also jeweils ein Ende dieser Kabel auf je einen Touch-Button. Ist alles erledigt, sollte bei jedem Touch-Button jeder PIN belegt sein. Nun sollten alle PINs der Touch-Buttons belegt und auf der anderen Seite 7 Buchsen zum Anschluss an den Raspberry PI vorhanden sein. Das Ergebnis könnte so aussehen:
Diese werden nun nach folgender Tabelle an Reihe #1 angeschlossen:
Touch-Button | PIN Raspberry PI | Bezeichnung |
---|---|---|
Schwarzes Kabel GND |
Pin 30 | Ground |
Rotes Kabel VCC |
Pin 1 | 3.3V |
Nächster Titel I/O |
Pin 13 | GPIO 27 |
Vorspulen I/O |
Pin 15 | GPIO 22 |
Play/Pause I/O |
Pin 29 | GPIO 5 |
Zurückspulen I/O |
Pin 31 | GPIO 6 |
Vorheriger Titel I/O |
Pin 33 | GPIO 13 |
OnOff SHIM
Je nach Ausführung muss hier nun auch noch etwas gelötet werden. Es sollte eine 2x6 Buchenleiste beiliegen. Diese wird von unten angelötet, dass die Knopf und die SMD-Bausteine sich nicht auf der Seite der künftigen Buchsen liegen (hier hilft auch die Vorfixierung mit etwas Sekundenkleber). Außerdem wird eine Stiftleiste der Länge 2 benötigt. Diese kann von der 36pol Stiftleiste vorsichtig abgebrochen werden. Die beiden Stifte zeigen nach oben (entgegengesetzt zur Buchsenleiste). Ist alles verlötet, wird der OnOff SHIM an Reihe #4 (Abgewinkelt) am Shield so angebracht, dass er nach unten zeigt (der Text "OnOff SHIM" steht dann richtig herum).
Ein-/Aus-Taster
Ursprünglich wollte ich den Taster mit Flachsteckerhülsen verbinden. Die Kabel mit den Buchsen sind aber so dünn, dass es immer so wirkt, als wenn diese recht schnell wieder herausrutschen würden. Das Kabel ist dann auch nicht sonderlich Knickstabil. Ich habe mich deshalb für das Verlöten entschieden. Da die Verbinder am Mikroschalter versetzt sind, wird das eine Kabel etwas weiter abisoliert. Ich habe außerdem ein paar Schrumpfschläuche in verschiedenen Größen vorbereitet, damit es hinterher stabiler wird. Löte also erst die beiden Kabel am Mikroschalter an. Und stecke dann nacheinander die Schrumpfschläuche darüber und föhne sie dann heiß. So sieht das ungefähr aus:
Die beiden Buchsen kommen nun an die kleine 2 polige Stiftleiste des OnOff SHIM (siehe Bild oben vom OnOff SHIM). Es empfiehlt sich die die Mikroschalter noch nicht in das Gehäuse des Arcadetasters zu zwängen, weil man diese Verbindung sonst später nach dem Einbau in das Gehäuse wieder lösen muss. Selbstverständlich sind hier auch andere Taster möglich. Die Vorschaltung eines Widerstand ist nicht nötig. Der OnOff SHIM ist passend vorbereitet.
HifiBerry MiniAMP
Der MiniAMP wird auf Reihe #3 aufgesteckt, so dass die abgewinkelte Seite überdeckt wird. An diesen werden die Lautsprecher angeschlossen (Schraubanschluss). Hier schon einmal die Belegung für die Lautsprecher:
Lautsprecher
Für die Lautsprecher sollten 30cm als Verbindungskabel ausreichen. Bei einem großen Gehäuse die Kabel etwas länger wählen. Ich habe die Lautsprecherkabel an die Boxen angelötet und mit dem HifiBerry MiniAMP verschraubt. Achte dabei auf die richtige Polung (siehe Foto oben).
Letzte Tuning Vorbereitung
Der HifiBerry MiniAMP erzeugt im bisherigen Setup ein Knacken beim Ein- und Ausschalten des Raspberry PI. Außerdem hört man ein leichtes rauschen auf den Boxen, wenn nichts abgespielt wird. Deshalb bereite nun noch ein letztes Kabel vor. Hier wird ein 1kOhm Widerstand eingelötet und das Kabel dann als Drahtbrücke verwendet. Zerschneide ein Kabel mit zwei Buchsen in zwei Teile: Einmal etwa 2cm Kabel und einmal etwa 7cm Kabel. Die Enden werden abisoliert. Der Widerstand bis auf 1cm blanken Draht an beiden Seiten gekürzt. Schiebe über die Lange Seite des Kabels wieder einen Schrumpfschlauch. Nun wird Kabel an Widerstand und Widerstand an Kabel gelötet. Anschließend den Schrumpfschlauch über die Kontaktstellen heiß föhnen. Ich habe dann noch einen größeren Schrumpfschlauch über das ganze hälftig geknickte Kabel gezogen und dieses auch heiß geföhnt (nicht zu heiß, sonst schmilzt die Buchse, wie man sieht).
Die Drahtbrücke wird nun auf Reihe #1 gesteckt (was PIN 1 und was PIN 2 ist, spielt dabei keine Rolle):
Drahtbrücke | PIN Raspberry PI | Bezeichnung |
---|---|---|
PIN 1 | Pin 34 | Ground |
PIN 2 | Pin 36 | GPIO 16 |
Hinweis: Durch diese Maßnahme gibt es beim Einschalten gar keinen Plopp-Sound mehr. Beim Ausschalten ist der Sound oft weg, manchmal hört man noch ein ganz leises klacken. Ich vermute dies hängt damit zusammen, ob zwischenzeitlich etwas abgespielt wurde oder nicht. Das Ploppen beim ausschalten wird aber erst reduziert, wenn nachher die Software auch angepasst wurde.
Software für SD-Karte & USB-Stick
SD-Karte vorbereiten
- Download des Raspberry Pi OS (32-bit) Lite Images
- Download und Installation von balenaEtcher
- Mittels balenaEtcher wird nun das heruntergeladene Image auf eine SD-Karte mit mindestens 16GB aufgespielt. Es wird eine Class 10 Version empfohlen. Wähle dazu das heruntergeladene Image aus (Entpacken ist optional) und anschließend die SD-Karte. Klicke dann auf Flash!
SD-Karte tunen
Der USB-Stick muss einmal neu eingesteckt werden, weil balenaEtcher das Gerät nach dem Abschluss des Vorgangs automatisch auswirft.
SSH aktivieren
Auf der SD-Karte muss eine Datei mit dem Namen ssh
(ohne Dateiendung) angelegt werden. Stelle sicher, dass die Dateinamenerweiterungen angezeigt werden. Dies aktiviert standardmäßig SSH. So können alle folgenden Schritte bequem vom normalen PC aus erledigt werden. Für die SSH Verbindung verwende unter Windows das Programm Putty. Bei anderen Betriebssystemen kennst du sicherlich selbst das Programm deiner Wahl.
WLAN Konfiguration hinterlegen
Damit der Raspberry PI gleich im WLAN verfügbar ist, lege nun eine weitere Datei mit dem Namen wpa_supplicant.conf
an. Diese Datei bekommt folgenden Inhalt:
country=DE
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1
network={
ssid="<SSID>"
psk="<Passwort>"
key_mgmt=WPA-PSK
}
Der Wert <SSID>
wird durch die gewünschte WLAN SSID ersetzt (also dem Namen deines Netzwerks). Das <Passwort>
entsprechend durch das Passwort.
Start optimieren
Der Inhalt der config.txt
muss mit folgendem ersetzt werden:
# For more options and information see
# http://rpf.io/configtxt
# Some settings may impact device functionality. See link above for details
# Bluetooth abschalten
dtoverlay=disable-bt
# Keine Wartezeit beim booten
boot_delay=0
# Kein Splashscreen
disable_splash=1
# Turbo für 10 Sekunden aktivieren
initial_turbo=10
# I2C Interface aktivieren (OLED-Display)
dtparam=i2c_arm=on
dtparam=i2c1=on
dtparam=i2c_arm_baudrate=400000
# SPI aktivieren (RFID-Reader)
dtparam=spi=on
# Das eigene Soundmodul vom Raspberry PI ausschalten
dtparam=audio=off
# HifiBerry MiniAMP Modul laden
dtoverlay=hifiberry-dac
# Über die Drahtbrücke ist der HifiBerry MiniAMP standardmäßig stumm geschaltet (kein knacken mehr).
# Wir aktivieren nun beim Hochfahren den HifiBerry MiniAMP etwas zeitverzögert:
gpio=16=op,dh
# SD-Karte beschleunigen (Karte muss UHS-I U3 kompatibel sein!)
dtoverlay=sdtweak,overclock_50=100
SD-Karte einlegen
Die SD-Karte nun am Rechner "auswerfen" und in den Raspberry PI einlegen. Den Raspberry PI aber noch nicht starten.
USB-Stick vorbereiten
Der USB-Stick sollte am Rechner mit exFAT formatiert werden. Optional kann man natürlich auch schon einige Titel hinterlegen. Lege dazu Ordner an (jeder Ordner kann später mit einer RFID-Karte angesteuert werden). Ich habe je Ordner ein Hörspiel hinterlegt. Nimm aber für die ersten Tests nicht zu viele Titel, ansonsten dauert die Indizierung unnötig lange. 2-3 Hörspiele oder Musik-Alben genügen zunächst.
Wenn du fertig bist, den USB-Stick am Rechner "auswerfen" und in den oberen USB 3.0-Port des Raspberry PI einstecken.
Der erste Start
Der Lötkolben kann nun ausgesteckt werden und darf sich wieder abkühlen. Er wird im weiteren Verlauf nicht mehr benötigt. Der Raspberry PI kann nun an den Strom angeschlossen werden. Dazu das Netzteil mit dem Mikro USB Port des OnOff SHIM verbinden. Der Raspberry PI kann nun mit dem selbst verlöteten Ein-/Aus-Taster eingeschaltet werden. Hurra!
Softwareinstallation
Bitte beachte, dass du im folgenden bei der Ausführung mehrzeiliger Skripte auch die jeweils letzte Zeite ausführst, wenn du die Skripte mittels Rechtsklick auf dem Raspberry PI einfügst. Dazu musst zum Ausführen der jeweils letzten Zeile dann einmal <Enter>
drücken.
IP-Adresse ermitteln
Der Raspberry PI benötigt zum starten etwa 30-40 Sekunden. Sofern alle Angaben zum WLAN korrekt waren, sollte in deinem Router nun ein neues Gerät mit den Namen raspberrypi
auftauchen. Du brauchst die IP-Adresse des Raspberry PI gleich noch öfter, notiere sie dir also irgendwo.
Per SSH verbinden
Für die SSH Verbindung verwende unter Windows das Programm Putty. Bei anderen Betriebssystemen kennst du sicherlich selbst das Programm deiner Wahl. Der SSH Server läuft auf dem Raspberry PI auf dem Standard Port 22. Der Benutzername lautet pi
und das Kennwort raspberry
. Verbinde dich also nun mit dem Raspberry PI.
Raspberry PI Konfiguration anpassen
Als erstes werden ein paar Optionen in der Raspberry PI Konfiguration geändert. Starte die Konfiguration durch sudo raspi-config
gefolgt von einem <Enter>
.
1. Change User Password
Setze ein neues Kennwort für den Benutzer pi
- Merke es dir gut.
3. Boot Options
Wähle hier die Option B1 Desktop / CLI
und anschließend B2 Console Autologin
4. Localisation Options
Wähle hier die Option I1 Change Locale
und wähle dann aus der langen Liste den Wert de_DE.UTF8 UTF-8
mit <Leertaste>
aus und bestätige die Auswahl dann mit <Enter>
. Im folgenden Dialog wählst du für den Standardwert dann ebenfalls de_DE.UTF-8
und bestätigst die Auswahl wieder mit <Enter>
. Du kannst im Menü 4
auf Wunsch auch noch die Zeitzone anpassen.
Die Frage nach dem Neustart kann mit <No>
beantwortet werden.
USB-Stick mounten
Damit bei der gleich folgenden Installation der Pfad zum USB-Stick direkt richtig eingeben werden kann, richten wir diesen nun ein. Stelle sicher, dass der USB-Stick eingesteckt ist. Der Stick wird automatisch als /dev/sda1
gefunden, ist aber noch nicht gemounted. Wir richten nun einen Mountpunt ein:
sudo mkdir /media/usb
sudo chown pi:www-data /media/usb
sudo sh -c "echo '/dev/sda1 /media/usb exfat uid=pi,gid=www-data 0 1' >> /etc/fstab"
sudo apt -y install exfat-utils
Da dieses Kommando bei Kopieren und Einfügen sonst geschluckt wird, im Ende nun noch diese Zeile, damit das USB-Medium sofort eingebunden ist:
sudo mount /media/usb
Anschließend ist der USB-Stick im System gemounted und wird auch nach einem Neustart wieder zur Verfügung gestellt. Um Datenverlust zu vermeiden, sollte der USB-Stick nun nur noch entfernt werden, wenn der Raspberry PI ausgeschaltet ist.
Phoniebox installieren
Dazu ist im Prinzip nur die folgende Kommandofolge nötig. Wechsele in das Homeverzeichnis des Users pi
. Stelle sicher, dass du nicht als root
unterwegs bist, ansonsten passen hinterher die Berechtigungen nicht.
cd
rm buster-install-*
wget https://raw.githubusercontent.com/MiczFlor/RPi-Jukebox-RFID/master/scripts/installscripts/buster-install-default.sh
chmod +x buster-install-default.sh
./buster-install-default.sh
Das Installationsskript führt dich durch eine etwa 20 Minutige - aber größtenteils automatische - Installation.
Spotify: Du benötigst dazu Spotify Premium mit eigenem Login (kein Facebook-Login). Eine client_id
und ein client_secret
kann auf der Seite von Mopidy erzeugt werden. Du benötigst dafür ebenfalls deinen Spotify-Login. Der username
ist unter Umständen diese leicht kryptisch wirkende Zeichenkette. Gib in der Installation den Benutzernamen ein, welcher auch für die Mopidy-Authentifizierung funktioniert hat (führe diese also durch, bevor du den Spotify username
im Installationsskript eingibst und mit <Enter>
bestätigst).
Hier die passenden Antworten, für alle gestellten Fragen:
Frage: | Antwort: |
---|---|
Continue interactive installation? [Y/n] | y<Enter> |
Do you want to configure your WiFi? [Y/n] | n<Enter><Enter> |
Use Headphone as iFace? [Y/n] | n<Enter> |
Type the iFace name you want to use: | 0<Enter><Enter> |
Do you want to enable Spotify? [Y/n] | Hast du Spotify Premium? Dann y<Enter> sonst n<Enter> |
Type your Spotify username: | Beispiel: eu39ab47qykbo4hkx8jklc88t<Enter> |
Type your Spotify password: | Dein Kennwort<Enter> |
Type your client_id: | Die client_id (siehe oben)<Enter> |
Type your client_secret: | Das client_secret (siehe oben)<Enter><Enter> |
Do you want to configure MPD? [Y/n] | y<Enter><Enter> |
Do you want to use the default location? [Y/n] | n<Enter> |
Please type the absolute path here (no trailing slash). | /media/usb<Enter><Enter> |
Do you want to activate the GPIO-Control-Service? [Y/n] | y<Enter><Enter> |
Do you want to start the installation? [Y/n] | y<Enter> |
Hier laufen nun eine ganze Weile Skripte (~10 Minuten)... | |
Modify smb.conf to use WINS settings from DHCP? | <No><Enter> |
Hier laufen nun nochmal eine ganze Weile Skripte (wieder ~10 Minuten)... | |
Have you connected your RFID reader? [Y/n] | y<Enter> |
Please select the RFID reader you want to use | 2<Enter> (RC522) |
Continue (y/n)? | y<Enter> |
Would you like to reboot now? [Y/n] | y<Enter> |
Nach dem Neustart loggst du dich wieder per SSH auf deinem Raspberry PI ein. Denk daran, dass du nun das neue von dir festgelegte Kennwort für den Benutzer pi
benötigst.
GPIO Buttons anpassen
Die Buttons der Standardkonfiguration kollidieren leider mit einigen GPIOs, welche auch das HifiBerry MiniAMP oder unser OnOff SHIM belegen. Du hast ja ganz oben schon gesehen, das bis auf 3 GPIO alle PINs nun voll belegt sind. Leere (bzw. verschiebe) nun einmal die mitgelieferten GPIO Einstellungen und lege eine neue Datei an:
mv ~/RPi-Jukebox-RFID/settings/gpio_settings.ini ~/RPi-Jukebox-RFID/settings/gpio_settings.ini.bak
nano ~/RPi-Jukebox-RFID/settings/gpio_settings.ini
Füge nun folgenden Inhalt in die Datei ein. Du kannst den Text in die Zwischenablage kopieren und mittels Rechtsklick in die durch den Editor nano
geöffnete Datei einfügen. Drücke anschließend Strg+O
gefolgt von <Enter>
und dann Strg+X
.
[DEFAULT]
enabled: True
[VolumeControl]
enabled: True
Type: RotaryEncoder
PinUp: 12
PinDown: 23
pull_up: True
hold_time: 0.3
timeBase: 0.1
functionCallUp: functionCallVolU
functionCallDown: functionCallVolD
[PrevSong]
enabled: True
Type: Button
Pin: 13
pull_up: True
hold_time: 0.3
functionCall: functionCallPlayerPrev
[SeekBack]
enabled: True
Type: Button
Pin: 6
pull_up: True
hold_time: 0.3
functionCall: functionCallPlayerSeekBack
[PlayPause]
enabled: True
Type: Button
Pin: 5
pull_up: True
hold_time: 0.3
functionCall: functionCallPlayerPause
[SeekFwd]
enabled: True
Type: Button
Pin: 22
pull_up: True
hold_time: 0.3
functionCall: functionCallPlayerSeekFwd
[NextSong]
enabled: True
Type: Button
Pin: 27
pull_up: True
hold_time: 0.3
functionCall: functionCallPlayerNext
Nach der Anpassung der INI-Datei muss noch der Pfad zur INI-Datei im Skript angepasst werden. Anschließend wird der GPIO-Dienst neu gestartet:
cd ~/RPi-Jukebox-RFID/components/gpio_control/
sed -i -e 's=~/.config/phoniebox/gpio_settings=/home/pi/RPi-Jukebox-RFID/settings/gpio_settings=g' gpio_control.py
cd
sudo systemctl restart phoniebox-gpio-control
Die Konfiguration der Touch-Buttons und des Lautstärkereglers ist damit abgeschlossen.
Verzeichnis für Medien nachkorrigieren
Die Phoniebox verwendet den Mopidy Server, um Musik abzuspielen oder die Wiedergabe von Spotify zu starten. Leider passt das Installationsskript hier das Verzeichnis für Medien nicht automatisch an. Folgende Zeile korrigiert dies:
sudo sed -i -e 's=/home/pi/RPi-Jukebox-RFID/shared/audiofolders=/media/usb=g' /etc/mopidy/mopidy.conf
OLED einrichten
Das OLED-Display wird auch durch eine relativ einfache Folge von Kommandos eingerichtet:
cd
rm o4p_installer.sh
wget https://raw.githubusercontent.com/splitti/oled_phoniebox/master/scripts/install/o4p_installer.sh
chmod +x o4p_installer.sh
./o4p_installer.sh
Bei der Einrichtung werden auch ein paar Fragen gestellt, hier meine Antworten:
Frage: | Antwort: |
---|---|
Do you want to install this OLED-Display-Service? | 1<Enter> (Install) |
Which type of OLED-Controller should be installed (needed for the Service-Startup):? | 2<Enter> (sh1106) |
Choose your initial setting for brightness, you can change it later: | 2<Enter> (normal) |
Choose your Display mode: | 1<Enter> (Full) |
Do you want to start the installation of needed packages? | 1<Enter> (Install) |
Nun läuft das Installationsskript, bitte warten... | |
Press any key to continue | <Enter> |
Erneut kurz warten | |
Press any key to continue | <Leertaste> |
Edit gpio-buttons.py | 3<Enter> (Option 3: Skip) |
Press any key to continue | <Anykey-Taste> |
Do you want to reboot now? | 2<Enter> (Quit) |
OnOff SHIM einrichten
Der OnOff SHIM schaltet ohne Konfiguration den Raspberry PI zunächst nur ein. Schaltet man diesen mittels sudo shutdown now
oder über die Weboberfläche der Phoniebox aus, so lässt er sich beim nächsten Mal noch nicht wieder einschalten. Der OnOff SHIM benötigt dazu auch ein paar Skripte, welche die Kommunikation mit dem OnOff SHIM ermöglichen. Die Installation erfolgt mit dem Aufruf:
cd
curl https://get.pimoroni.com/onoffshim | bash
Auch gilt es wieder zwei Fragen zu beantworten:
Frage: | Antwort: |
---|---|
Do you wish to continue? [y/N] | y<Enter> |
Would you like to reboot now? [y/N] | y<Enter> |
Hinweis: Herunterfahren ist später durch längeres drücken des Tasters möglich. Standardmäßig muss dieser 1 Sekunde gehalten werden. Auf dem Display werden dann zunächst die Noten und anschließend ein Power-Icon angezeigt. Danach schaltet sich der Raspberry PI aus.
Vor dem Herunterfahren den MiniAMP wieder stumm schalten
Damit es beim herunterfahren kein knacken (oder nur ein reduziertes knacken) gibt, wird nun den HifiBerry MiniAMP beim Herunterfahren noch abgeschaltet. Dazu wird der GPIO 16 nun wieder als Input-PIN definiert und gleichzeitig ein LOW an GPIO 26 (Shutdown PIN) gesendet. Erledigt wird dies von einem entsprechenden Skript, welches wir wie folgt anlegen:
echo '#!/bin/bash' >> ~/mute-miniamp
echo 'raspi-gpio set 16 ip' >> ~/mute-miniamp
echo 'raspi-gpio set 26 op dl' >> ~/mute-miniamp
sudo mv ~/mute-miniamp /etc/init.d/mute-miniamp
sudo chown root:root /etc/init.d/mute-miniamp
sudo chmod o+x /etc/init.d/mute-miniamp
sudo ln -s /etc/init.d/mute-miniamp /etc/rc0.d/K01mute-miniamp
sudo ln -s /etc/init.d/mute-miniamp /etc/rc6.d/K01mute-miniamp
Einmal neu starten bitte
Dazu gibst du einmal folgendes ein:
sudo reboot
Du solltest beim hochfahren nach kurzer Zeit bereits ein paar Noten auf dem Display sehen. Kurze Zeit später taucht eine Hand mit einer RFID-Karte auf. Und zum Schluss, gibt es noch einen Startsound.
Hinweis: Eigentlich kann die Phoniebox beim Herunterfahren auch einen entsprechenden Sound abspielen. Durch das OnOff Shim funktioniert das aber nicht mehr sofort. Da ich beim Herunterfahren keinen Sound möchte, ändere ich hier nichts.
Weitere Optimierung: Ich habe hier eine ganz nette FAQ aus einem ähnlichen Projekt gefunden. Hier wird auch noch weiter darauf eingegangen, wie man den Start noch etwas beschleunigen kann. Erwarte keine Wunder, unter 30 Sekunden bin ich zumindest nicht gekommen. Hier wird auch der Herunterfahren Sound wieder gerade gerückt. Es gibt auch Anleitungen, welche den Start auf 4 Sekunden drücken können sollen. Ob das für die Phoniebox Installation auch funktioniert, habe ich aber nicht ausprobiert. Einige der dort deaktivierten Komponenten benötigt die Phoniebox Installation jedenfalls. Ich denke: Kinder haben Zeit und oft Langeweile, da sind 30 Sekunden Wartezeit durchaus vertretbar.
Das Webinterface
Erreichbarkeit
Du findest das Webinterface, indem du im Webbrowser deiner Wahl die IP-Adresse eingibst, welche du auch für die Verbindung via SSH verwendest. Ein Login ist hier nicht vorgesehen. Das Webinterface kann auch vom Handy aus aufgerufen werden.
Spotify, ein erster Test
Rufe im Webinterface oben im Menü den Link für Spotify auf. Suche hier über "Search" nach einem beliebigen Titel und spiele diesen ab. Du solltest etwas hören. Die Touch-Buttons sollten auch reagieren. Mit dem Lautstärkeregler kannst du etwas leiser stellen.
RFID-Karte mit Spotify verbinden
Für die Verknüpfung einer RFID-Karte mit Spotify benötigst du die Spotify URL. Dies ist aber nicht etwa die URL in der Adresszeile des Webbrowsers, sondern man kann diese über das ...-Menü erreichen. Hier findet sich immer der Knopf "Copy URI". Anschließend befindet sich das, was du brauchst, in der Zwischenablage. Such dir irgendetwas aus. Gerne ein Album (dann kann man die Touch-Buttons direkt ausprobieren).
Wechsle nun im Webinterface der Phoniebox auf den Reiter Card ID. Scanne eine RFID-Karte, indem du sie vor das Lesegerät hältst. Die ID sollte nun unter "Last used Chip ID" zu sehen sein. Gib im Feld "... or link a new folder" einen Ordnernamen ein. Passenderweise den vom ausgewähltem Album. In diesem Ordner werden zum Beispiel Informationen zu der Spotify Verknüpfung und der Wiedergabeposition gespeichert.
Im Feld "Stream URL (always requires new folder above)" fügst du die kopierte URI aus der Zwischenablage ein. Wähle dann noch "Spotify" bei "Select type" und drücke anschließend auf <Submit>
.
Wenn du die Karte nun erneut vor den RFID-Reader hältst, wird das soeben verknüpfte Album abgespielt.
Dateien Indizieren
Die Indizierung der Dateien auf dem USB-Stick nun erstmal angeraten. Ansonsten kann der Player nichts abspielen, auch wenn die Dateien auf der Startseite über die Ordner bereits aufgelistet werden. Die Indizierung dauert je nach Anzahl der Dateien schon seine Zeit. Wenn Titel über den USB-Stick hinzugefügt werden (kann entnommen werden, wenn der Raspberry PI heruntergefahren ist), muss danach eine erneute Indizierung durchgeführt werden. Beim Upload von Dateien über das Webinterface findet die Indizierung für die neuen Dateien automatisch statt.
Du findest die Option unter Files & Folders unter dem Button <Scan Music Library>
. Der Vorgang kann unter Info überwacht werden. Solange hier der Mopidy Server Status meldet, der Dienst sei nicht verfügbar, läuft die Indizierung noch. In dieser Zeit kann auch kein Titel abgespielt werden.
Erforsche nun selbst das Webinterface
Die Zeit der Reindizierung kannst du mit der Erforschung des Webinterfaces verbringen. Du kannst zum Beispiel die Sprache umstellen, die maximale Lautstärke einstellen und Ordner mit RFID-Karten verknüpfen. Lies die Beschreibungstexte im Webinterface genau, dann sollte der Rest ziemlich selbst erklärend sein.
Ergebnis
Dies ist nun mein Ergebnis. Es fehlt noch das passende Gehäuse. In dieser Version erfüllt der Aufbau alle oben in der Einleitung genannten Anforderungen.
Gehäuse
Nun ist es an der Zeit, die Komponenten in ein selbst entworfenes Gehäuse einzubauen. Dies sprengt aber den Rahmen dieser Dokumentation. Ich überlasse es dir, den Komponenten ein neues schönes Gehäuse zu basteln. Sobald mein Gehäuse vollständig ist, werde ich es hier ebenfalls vorstellen.