Die Umsetzung

 Wen die technischen Details nicht interessieren: zum Ergebnis


Nach so einem ausgefeilten Plan, kann ja fast nichts mehr schief gehen - also ran an die Umsetzung ☺
Natürlich war die Umsetzung nicht so "stringent", wie in weiterer Folge beschrieben. V.a. die Software Entwicklung verlief parallel zum Aufbau der Hardware.

Raspberry Pi 3 aufsetzen

Ein fertiges Image mit der Version 2.0.0 könnt ihr hier herunterladen: Google Drive

Dieses Image kann einfach mit den üblichen Mitteln auf die SD Karte kopiert werden. Wer sich in sein WLAN verbinden will muss halt noch (wie weiter unten beschrieben) die SSID und sein WLAN Kennwort eintragen.

In den weiteren Abschnitten ist erklärt, wie das Image zustande kam. Für die "Faulen" geht's bei "IDE Kabel" weiter.
 

Hinweis:

Im Laufe der Zeit verändern sich die Gegebenheiten, sodass erfahrungsgemäß die beschriebenen Schritte unter Umständen nicht mehr so funktionieren. 


Als erstes braucht es ein lauffähiges Betriebssystem. Die "natürliche" Wahl fällt hier auf das offizielle System für den Raspberry Pi 3 - und zwar in der Lite Version ohne Desktop Oberfläche, weil wir ja kein Display anschließen: Zur Zeit ist das Raspberry Pi OS Lite

Einfach herunterladen und auf die SD Karte kopieren (wie auf der verlinkten Seite beschrieben).

Noch einfacher geht es mit dem Raspberry Pi Imager
 
Prinzipiell ist es möglich alles weitere zu konfigurieren, ohne dass am Raspberry Pi 3 ein Monitor oder eine Tastatur angeschlossen ist.
Eine Beschreibung dazu siehe
https://caffinc.github.io/2016/12/raspberry-pi-3-headless/

Etwas einfacher ist es aber, einen Monitor und eine Tastatur anzuschließen.

Egal wie, nun geht es an die Konfiguration:
Speicherkarte ins Gerät gegeben und das Netzteil anhängen, sodass der Rechner gestartet wird.

Grundkonfiguration

Als erstes ist das Login notwendig:
User: "pi"
Kennwort: "raspberry"


Starten wir erst mal das KOnfigurationsprogramm:  

sudo raspi-config

Nun benötigen wir folgende Einstellungen:

1 System Options 

  • S1 Wireless LAN
    <optional> Wenn man auf eine WLAN Verbindung verzichtet oder wenn man "headless" (siehe oben) unterwegs ist, kann dieser Schritt natürlich ausgelassen werden.
  • S2 Audio - Headphones
    Da wir den Analog Audio Ausgang (also die Kopfhörerbuchse) benötigen, muss dieser hier entsprechend konfiguriert sein
  • S3 Password
    Sicherheitshalber sollte das Standard Kennwort geändert werden
3 Interface Options 
  • P2 SSH
    <optional> Aktivieren wenn man sich per SSH/SFTP über das Netwerk (ob LAN oder WLAN) auf die Box verbinden will.
  •  P4 SPI
    müssen wir aktivieren, um mit dem RFID Reader zu kommunizieren

Mit <Finish> kann man nun die Konfiguration wieder beenden und am besten gleich die Frage nach dem "reboot" mit <yes> beantworten.

System aktualisieren

Nachdem nun die Konfiguration abgeschlossen ist, kann es nie schaden, das System auf den aktuellsten Stand zu bringen:
 
sudo apt-get update
sudo apt-get dist-upgrade

FrimpieBox spezifische Installationen

Bisher ging es um allgemeine Basis Konfigurationen. Nun zu den speziell für die FrimpieBox notwendigen Installationen.

MP3 Player installieren

Als MP3 Player habe ich MOC ausgewählt, der ganz einfach folgendermaßen installiert wird:
sudo apt-get install moc

Damit MOC beim Start keine Warnung bringt, muss eine config Datei angelegt  werden

sudo mkdir /root/.moc
sudo nano /root/.moc/config


welche folgende Zeilen enthält:
 
ALSAStutterDefeat=yes
ALSAMixer1=Headphone

Im root Verzeichnis darum, weil die Software später mir dem root User ausgeführt wird.
Testen kann man das mit
 
sudo mocp --server 
 
<Offen: warum kann mocp nicht ohne sudo gestartet werden?>

USB Automount konfigurieren 

Damit wir die Box über einen USB Stick mit Hörspielen "füttern" können, muss das Gerät im Stande sein, automatisch USB Datenträger zu mounten.
 
sudo apt-get install usbmount 

Nun muss noch eine Konfiguration gemacht werden (https://raspberrypi.stackexchange.com/questions/100312/raspberry-4-usbmount-not-working):

sudo nano /lib/systemd/system/systemd-udevd.service 

PrivateMounts=no  

SPI für RFID Reader 

Um auf den RFID Reader zu kommunizieren, benötigen wir die folgenden beiden Pakete installieren:

sudo apt-get install python3-rpi.gpi
sudo apt-get install python3-spidev 
 
SPI wurde ja schon im Abschnitt "Grundkonfiguration" aktiviert

Power Button einrichten

 
Mit
sudo nano /boot/config.txt

müssen wir nun folgende Zeilen hinzufügen: 
 
#FrimpieBox: activate shutdown pin 5
dtoverlay=gpio-shutdown 

Dann kann mittels Taster von Pin 5 auf Masse, ein Shutdown bzw. Wake Up durchgeführt werden.

LED Ausgänge Konfigurieren

Wenn wir scon dabei sind fügen wir nn der Datei  

/boot/config.txt

auch noch folgende Zeilen hinzu: 
 
# set pin 10 output high and 11,12 to low
gpio=15=op,dh
gpio=17,18=op,dl


Damit sorgen wir dafür, dass Pin 10 beim Hochstarten auf high geschalten wird, sodass die entsprechende LED aktiviert wird.
Die anderen beiden Pins werden auf low geschaltet, damit die anderen beiden LEDs sicher ausgeschaltet sind.

Autostart einrichten

In der Datei 
/etc/rc.local 

muss folgende Zeile vor exit 0 eingefügt werden: 
 
python3 /home/pi/musicbox/musicbox.py &

FrimpieBox Software installieren

Die notwendigen Dateien sind hier zu finden:
https://github.com/frimp73/FrimpieBox/releases/tag/v2.0.0

Am einfachsten ist es, den musicbox Ordner auf einen USB Stick zu kopieren, diesen in den Raspberry Pi 3 einzustecken (USB Automount haben wir ja vorher hoffentlich erfolgreich konfiguriert) und den musicbox Ordner in das /home/pi Verzeichnis zu kopieren.

cp -r /media/usb/musicbox /home/pi

So, nun sollte Software-seitig alles bereit sein - ab jetzt wird zum Lötkolben gegriffen :-)

Wichtig: Die Box darf nicht einfach ausgeschaltet werden, sondern muss immer Herunter gefahren werden!

sudo shutdown -h now

IDE Kabel

Ich hatte noch ein altes Festplattenkabel herum liegen - das eignet sich bestens, um die notwendige Hardware an den Raspberry Pi 3 anzuschließen. 
Quelle: www.pollin.de
Mit einem scharfen Messer kann das Kabel einfach in mehrere teile getrennt werden, sodass auf der einen Seite ein Stecker bleibt, während auf der anderen Seite die einzelnen Leitungen an die entsprechenden Teile gelötet werden können.

RFID Modul verdrahten

Eine sehr gute Beschreibung, zu der sonst nichts mehr erklärt werden muss, ist hier zu finden (Abschnitt "Aufbau"):

Bedienelemente

Die Pins der Box sind folgendermaßen definiert:
PIN 40 = MP3 Player lauter
PIN 35 = MP3 Player leiser
PIN 38 = MP3 Player nächster Track
PIN 37 = MP3 Player vorheriger Track
PIN 5   = Aus/Ein Shutdown / Restart

Für alle Taster außer dem Aus/Ein Schalter werden die internen PullUp Widerstände aktiviert und von der Software "entstört". darum können diese direkt über einen Taster auf Masse geschalten werden.

Für den Aus/Ein Taster an Pin 5 gilt dies aber nicht. Darum braucht es hier mindestens einen PullUp Widerstand.

Den Input dafür habe ich hier geholt:
https://www.elektronik-kompendium.de/sites/raspberry-pi/2110081.htm
https://www.xgadget.de/anleitung/raspberry-pi-taster-anschliessen/

Ich habe mich für 10kOhm PullUp Widerstände entschieden.
Quelle: www.elektronik-kompendium.de

Fehlschaltungen

Vereinzelt ist es trotz dem PullUp Widerstand vorgekommen, dass die Box "von selber" einschaltet (in der Regel stecke ich die Box aber aus). Da ich bisher keinen Weg gefunden habe, dieses Problem zu provozieren, ist eine Behebung etwas mühsam. Ich werde zunächst mal einen kleineren PullUp Widerstand (1k) ausprobieren...

LEDs Verdrahten

Um den Zustand der Box anzuzeigen, habe ich eine mehrfarbige LED verbaut.
Der Wert der Widerständeum den Strom zu begrenzen, hängt von der verwendeten LEDs ab.
Erstellt mit www.digikey.at/schemeit
Folgende Pins werden dazu verwendet:
PIN 10: blau - Box wird gerade hoch gefahren
PIN 11: grün - Box ist betriebsbereit
PIN 12: rot - Box wird herunter gefahren

Wurde die Box herunter gefahren, erlischt die LED.

Verstärker und Lautsprecher

Lautsprechersystem vs. Eigenbau

Wie schon erwähnt kann man sich einfach ein Lautsprechersystem kaufen und an den Kopfhörer Ausgang anschließen. Dann ist dieses Kapitel auch schon abgeschlossen.

Da ich aber noch alte Lautsprecher aus einem defekten Radio herum liegen hatte und nicht zwei Geräte (Raspberry Pi und Lautsprechersystem) mit Spannung versorgen wollte, habe ich mich dazu entschlossen einen kleinen Verstärker zu verwenden.

Als günstigen Verstärker habe ich eine XPT8871 5W Mono Platine gefunden.
Für ein Hörspiel ist Mono völlig ausreichend.

Störgeräusche vermeiden

Um Störgeräusche vom Raspberry Pi 3 zu minimieren waren folgende Maßnahmen notwendig:
  • Masse für den Verstärker direkt an die Masse des Netzteils anlöten
  • Spannungsversorgung direkt an die 5V des Netzteils anlöten
  • Für die Audio Leitungen ein abgeschirmtes Kabel verwenden
  • Audio Masse direkt an die Masse der Kopfhörerbuchse anlöten
  • Audio Eingang direkt an die Audio Ausgänge der Kopfhörerbuchse anlöten

Zusammengefasst also: löten statt stecken, und möglichst die direktesten Wege wählen.

Lautstärke anpassen

Als der Verstärker erfolgreich angeschlossen war, fiel sehr schnell auf, dass der Output viel zu laut war. Darum habe ich einen Spannungsteiler im Verhältnis 1:10 vorgeschalten, sodass nur ein geringer Teil der Spannung beim Verstärker ankommt.
Das hat zusätzlich den Effekt, dass die Störgeräusche noch einmal geringer werden, sodass sie schließlich im Rauschen des Verstärkers untergehen.

Verstärker ein/ausschalten

Da die Versorgungs-Spannung immer anliegt, fiel in einer ruhigen Umgebung sehr schnell das Grundrauschen des Verstärkers auf. Darum beschloss ich, den Verstärker nur bei Bedarf (also nur wenn wirklich ein Hörspiel abgespielt wird) über einen MOSFET Transistor einzuschalten. Sobald das Hörspiel gestoppt wird, wird der Verstärker abgeschalten.

Die Wahl fiel auf einen IRF9630PBF, wobei es eine Vielzahl ähnlicher Transistoren gibt, die den selben Zweck erfüllen.
Belegung des IRF9630

Wichtig ist nur, dass es sich um einen P-Channel Transistor handelt, da die RaspberryPi Ausgänge im Grundzustand 3.3V (und nicht 0V) führen.
https://www.electronics-tutorials.ws/de/transistoren/mosfet-als-schalter.html

Zum Schalten des Verstärkers wurde PIN 3 des Raspberry Pi 3 verwendet.

Schaltung

Erstellt mit www.digikey.at/schemeit

Software

Folgende Features habe ich umgesetzt:
  • Automatische Zuweisung der Hörspiele zu den RFID Tags
    D.h. man kann einfach mehrere Hörspiele (jeweils in einem eigenen Verzeichnis) auf die SD Karte kopieren. Jedesmal wenn eine neue Figur auf die Box gestellt wird, wird das nächste bisher nicht zugewiesene Hörspiel zugewiesen
  • Import über USB Stick
    Sind alle Hörspiele die sich auf der Box befinden, schon zugewiesen, kann ein neues Hörspiel über einen USB Stick importiert werden.
    Einfach einstecken, eine neue Figur auf die Box stellen und warten, bis das neue Hörspiel abgespielt wird (dann ist der Kopiervorgang abgeschlossen)
  • Abspielen
    Durch Platzieren einer Figur wird das zugewiesene Hörspiel abgespielt.
  • Pausieren
    Wird die Figur herunter genommen, wird das Hörspiel pausiert. Sobald die selbe Figur wieder auf die Box gestellt wird, setzt das Hörspiel dort fort, wo es zuvor pausiert wurde.
  • Auto Shutdown
    Nach einer halben Stunde Inaktivität, schaltet sich die Box selber aus.
  • Verstärker wird nur bei Bedarf aktiviert

Gehäuse

Das Gehäuse war bis zuletzt ein offener Punkt, bis meine Frau eines Tages eine Karton Box von Aldi/Hofer mit nach Hause gebracht hat.

Da nun die Ausmaße klar waren zimmerte ich schnell einen Rahmen aus verbilligtem "Abfall" Holz vom Baumarkt zusammen um darin die Lautsprecher und den Raspberry Pi 3 zu befestigen.



Dieser Rahmen konnte dann einfach in die Kartonbox gestellt werden und sorgt für die notwendige Stabilität und auch für etwas Gewicht.

Wichtig war natürlich, ein Loch für den Lautsprecher auszuschneiden, das dann um der Optik willen, mit einem runden Stück Filz abgedeckt wurde.

Einkaufsliste

1 Raspberry Pi 3 (ca. 32€)
1 für den Raspberry passende Ultra SD Karte 16GB (ca. 8€)
1 Netzteil für des Raspberry Pi 3 (oder ein vorhandenes Smartphone Ladegerät + USB Micro-Kabel) für ca. 9€
1 Mifare RC522 RFID Modul (ca.7€)
1 Verstärker Einheit 5V, 5W, Mono (ca. 5€)
1 Gehäuse (in meinem Fall eine Schachtel aus stärkerem Karton für ca. 4€
5 Taster (ca. 12€)
1 5W 8 Ohm Lautsprecher (ca. 5€)

Elektrische Kleinteile (ca. 5€)
5 100k Widerstände
4 1k Widerstand
1 10k Widerstand
1 MOSFET P Kanal Transistor (z.B. IRF9630PBF)
1 RGB LED

je nach Gehäuse etwas Holz und ein paar Schrauben (ca. 10€)

D.h. in Summe kostet die Box ca. 100€.

Und so sieht es aus, das Ergebnis

Kommentare

Beliebte Posts aus diesem Blog