6 Minuten
Phoniebox - DIY NFC Audioplayer

Jüngst ereignete mich der schwesterliche Auftrag eine Art Tonie-Box für meinen kleinen Neffen zu bauen. Da ich lange kein Hardware-Projekt mehr vor der Brust hatte, stürzte ich mich umgehend in die Recherche und Planung. Tonie-Boxen sind derzeit die Thermomixe der Kinderzimmer. Das Konzept ist einfach und bestechend. Man kauft überteuerte Figuren, die einen NFC-Chip enthalten und auf die Boxen den relatierten Audio-Content laden. Die Figuren werden auf die Box gestellt, das NFC-Tag ausgelesen und die Wiedergabe erfolgt - Kinderleicht! Da sich die Firma Tonie darüberhinaus noch in ihren AGBs das Recht herausnimmt, das Hörverhalten der Kinder und SSIDs des Heimnetzwerks in Echtzeit auszuspionieren, musste zwangsweise etwas der Marke Eigenbau her.
Ich stieß auf das Phoniebox Projekt, das genau die Funktion der Tonie-Boxen sauber in Open Source umsetzte. Man brauchte lediglich NFC-Tags, einen RFID-Leser, ein paar Lautsprecher und einen kleinen Raspberry Pi und schon war der Weg zum Eigenbau geebnet.
Hardware
Diese Hardware wurde von mir verwendet. Preislich ist da definitiv Optimierungspotential vorhanden.
Bauteil | Preis |
---|---|
Raspberry Pi Zero WH | 14,99€ |
RC522 RFID Reader | 02,42€ |
100X NFC Sticker Tags | 12,00€ |
USB-Lautsprecher | 14,72€ |
USB-Hub | 17,99€ |
USB-Adapterkabel | 08,99€ |
3x Sanwa Arcade Buttons 24mm | 07,50€ |
Rugged Metal Push Button | 05,00€ |
Darüber hinaus werden Female-Female und Male-Female-Steckverbinderkabel benötigt.
Zusammenbau
Gehäuse
Grundlage zur Elektronikbehausung war eine Zigarrenbox, die ich von einem entfernten Verwandten erstanden habe. Sie hatte die ideale Größe, um alle nötigen Komponenten in sich unterbringen zu können. Wer es genau wissen will und zufällig 386€ auf der hohen Kante hat, kann sich exakt diese Box samt 24 Zigarren kaufen.
Bedienelemente + Lautsprecher
Im ersten Schritt wurde das Paar USB-Lautsprecher aus seinem Ursprunggehäuse befreit und dessen Lochbild und Passung links und rechts in die Seiten der Zigarrenbox übertragen und eingebracht. Das Loch unten links dient der späteren Stromversorgung des Gesamtsystems:

Auf der Oberseite mussten zwei weitere Bohrungen eingebracht werden. Das hintere Loch dienst der Lautstärkeregelung, für die das Steuerelement der USB-Lautsprecher übernommen wurde. Der Drehknopf ließ sich einfach abziehen und anschließend von außen wieder draufstecken. Das größere Loch ist für den Adafruit Rugged Metal Push Button mit dem eingebauten Status-LED-Ring:

Im letzten Schritt mussten die drei Arcadebuttons in die Front integriert werden. Ich habe dazu einen 25er Forstner-Bohrer verwendet:

Somit war alle äußerliche Steuerelektronik bereits verbaut. Das Ergebnis sah so aus:

Innenleben
Nun galt es die inneren Komponenten gezielt unterzubringen. Das USB-Hub nahm ich als Ausgangspunkt und positioniert es unten rechts im Kasten. Sie ließ sich das Stromversorgungskabel sauber zuführen und hinter der Bohrung noch einen Knoten vor dem Steckeranschluss platzieren, der ein Ruckartiges ziehen am Kabel dämpfen würde. Die Soundkarte wurde mit den Boxen verbunden und das Hub mittels Micro-USB-zu-USB-A-Adapter an den Pi angeschlossen. Der Pi selber bezieht seinen Versorgungsstrom direkt aus dem USB-Hub:

Da einige Kabel relativ biegesteif waren, musste eine zielführende Anordnung für das RFID-Lesegerät und den Pi selber gefunden werden. Ich habe den Pi daher schräg versetzt montiert, um das Schließverhalten der Kiste zu begünstigen. Die Zigarrenbox ließ sich anschließend einwandfrei schließen. Hardwareseitig war alles erledigt.
Verdrahtung

Nun folgte der akribische und spannende Teil der Verdrahtung. Den folgenden Verdrahtungplan habe ich dem Wiki der Phoniebox entnommen. Die Steckplatzanordnung funktioniert, ohne viel zusätzliche Frickelei in den Konfigurationseinstellungen, out-of-the-box. Lediglich der Rugged Metal Pushbutton, der zum herunterfahren des Pi dient, muss explizit aktiviert werden. Dazu später mehr.
Wichtig an dieser Stelle ist, dass das ewig verwirrende Thema der Pin-Nummern beim Raspberry Pi verstanden wird. Da es unterschiedliche Modelle des Raspberry Pis gibt und diese unterschiedlich viele Pins besitzen, wird in der Regel die exakte GPIO-Bezeichnung bei Kabelverbindungen angegeben. Dieses Schema ist über alle Raspberry Pi Modelle anwendbar. Die hier zusötzlich aufgeführten BCM-Nummern gelten explizit für den Pi Zero W(H), nicht aber zwangsweise für andere Raspberry Pi Modelle.
RFID Reader
RC522 | GPIO | BCM |
---|---|---|
SDA | GPIO 8 | 24 |
SCK | GPIO 11 | 23 |
MOSI | GPIO 10 | 19 |
MISO | GPIO 9 | 21 |
IRQ | GPIO 24 | 18 |
RST | GPIO 25 | 22 |
GND | GPIO 25 | 22 |
RST | 25 | |
3.3V | 17 |
Rugged Metal Push Button
Pin | GPIO | BCM | Funktion |
---|---|---|---|
+ | GPIO 12 | 32 | LED Ring für Status LED |
- | 39 | LED Ring für Status LED | |
NO | GPIO 3 | 5 | Shutdown Button |
C | 6 | Shutdown Button |
Die Bezeichnungen NC
und NO
auf den Button Pins stehen für Normally Open (schließender Taster) und Normally Closed (öffnender Taster).
Arcade Buttons
Die Arcade-Buttons teilen sich einen gemeinsamen Ground (GND
).
Button | GPIO | BCM | Funktion |
---|---|---|---|
Blau | GPIO 22 | 15 | Vorh. Titel |
Weiß | GPIO 27 | 13 | Play / Pause |
Rot | GPIO 23 | 16 | Nächst. Titel |
GND | 14 |
Raspberry Pi einrichten
Wichtig: Die Phoniebox läuft in Version 2 nur stabil und fehlerfrei unter Debian Buster (Legacy). Der einfachste Weg diese Version zu installieren ist der Raspberry Pi Image Flasher. Standardmäßig bietet dieser aber eine neuere Version als Buster an, bietet zugleich aber auch die Möglichkeit per Mausklick Debian Buster Lite
zu installieren.

Ein weiterer Klick auf das Zahnradsymbol unten rechts ermöglicht das Vorkonfigurieren diverser Einstellungen, wie W-Lan Zugangsdaten, Systemsprache und Zeitzonen. Dies sollte wahrgenommen werden, da hier Zeit gespart werden kann.
SPI-Schnittstelle aktivieren
Mittel sudo raspi-config
kann die Konfiguration des Rasperry Pi Zero aufgerufen werden. Dort befindet sich im Menüpunkt 5 Interface Options
. Anschließend den Eintrag SPI
selektieren und Enable
wählen.
Externe Soundkarte einrichten
Die externe Soundkarte wurde bei mir nicht als primäres Ausgabegerät erkannt. Dies lässt sich aber relativ leicht einstellen. Dazu muss eine ALSA-Konfiguration angelegt werden. Dieser Schritt sollte vor der Installation der Phoniebox-Software erfolgen, da der Installer nach dem primären Ausgabegerät fragt und die Soundkarte sonst nicht in der Auswahlliste erscheint. Zur Anlage der Konfiguration wird der Befehl sudo nano /etc/asound.conf
aufgerufen. Es öffnet sich der Nano Text Editor. In die Datei muss folgender Inhalt geschrieben werden:
pcm.!default {
type hw
card 1
}
ctl.!default {
type hw
card 1
}
Mit STRG+O
und einem anschließend ENTER
kann der neue Eintrag gespeichert und der Editor mit STRG+X
verlassen werden. Ein Neustart ist erforderlich.
Installation Phoniebox
Wenn alle Verkabelung angeschlossen ist, die Soundkarte konfiguriert ist und der Pi neugestartet wurde, kann mit der Installation der Phoniebox Software begonnen werden. Die Macher des Projekts stellen dafür einen Oneliner, eine einfach kopierbare Zeile für das Terminal. bereit.
Der Onliner lautet:
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
Diese Codezeile wird einfach ins Terminal kopiert und mit ENTER
ausgeführt. Es folgen einige Systemseitigen abfragen. Die erste wichtige Abfrage, unter der Verwendung einer externen Soundkarte, ist, dass nicht der Standardausgang Headphone
verwendet wird. Bei mir hieß die externe Soundkarte Speaker
und tauchte in der Auswahlliste auf. Die Bezeichnung muss manuell ins Terminal eingegeben werden. Die nächste wichtige Abfrage ist die Konfiguration des RFID-Lesers. Hier wird aus der Auswahlliste der angeschlossene RC522 ausgewählt, woraufhin explizit gerätespezifische Bibliotheken installiert werden.
Ingesamt dauert die Installation ca. 15 Minuten und erfodert anschließend einen letzten Neustart
Phoniebox Konfiguration
Mit der Beschriebenen Verdratung funktioniert die Phoniebox ohne weiteres Zutun. Einzig der Shutdown-Button muss noch konfiguriert werden. Wird dieser zwei Sekunden lang gedrückt gehalten, fährt der Raspberry Pi sauber herunter und kann anschließend vom Strom genommen werden. Die Einleitung des Shutdowns wird über die Lautsprecher mit einem Systemton quittiert.
Shutdown Button
Dazu nano ~/RPi-Jukebox-RFID/settings/gpio_settings.ini
ausführen und dort den Wert des Shutdown Buttons so abändern:
[Shutdown]
enabled : True
type : Button
pin : 3
hold_time : 2
functioncall : functionCallShutdown
pull_up_down : pull_up
Die neue Button-Konfiguration muss jetzt final neu mit dem Befehl sudo systemctl restart phoniebox-gpio-control.service
durchgeladen werden.
Das wars! Die Phoniebox ist einsatzbereit und möchte nun nur noch mit Abspielbaren Audiodateien bestückt werden. Wie dies erfolgen kann, steht im Phoniebox Wiki.
Demo
Viel Spaß beim Eigenbau! Als Quelle zur Inspiration sei abschließend diese wirklich tolle Sammlung an gebauten Phonieboxen zu empfehlen.