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.

PIN-Belegung

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:

Raspberry PI Shield

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:

Kabelpeitsche ohne Schrumpfschlauch

Kabelpeitsche mit Schrumpfschlauch

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):

Touch-Buttons

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:

Touch-Buttons verkabelt

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).

OnOff Shim verlötet

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:

Ein-/Aus-Taster vorbereitet

EinAus Taster verlötet

EinAus Taster fertig

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:

HifiBerry MiniAMP

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).

1kOhm verlötet

1kOhm fertig

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

  1. Download des Raspberry Pi OS (32-bit) Lite Images
  2. Download und Installation von balenaEtcher
  3. 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.

Komplettes Setup

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.