Die Umsetzung (V1)

Wen die technischen Details nicht interessieren: zum Ergebnis


ACHTUNG: diese Beschreibung ist veraltet!

Aktuelle Umsetzung siehe hier



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


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 Raspbian Stretch Lite

Einfach herunterladen und auf die SD Karte kopieren (wie auf der verlinkten Seite beschrieben).
 
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"


Mit
sudo raspi-config
Wird das Konfigurations Programm gestartet.

SD Speicher nutzen 

Zunächst sorgen wir dafür, dass der vollständige SD Speicher genutzt wird:
Advanced Options - Expand Filesystem

Netzwerkverbindung einrichten

Wenn man auf eine Netzwerkverbindung verzichtet oder wenn man "headless" (siehe oben) unterwegs ist, muss dieser Schritt natürlich ausgelassen werden.

Folgende Schritte sollten gemacht werden
  • Kennwort ändern mit dem Menü
    Change User Password
  • SSH aktivieren unter 
    Interfacing Options - SSH
  • wenn man sich über das WLAN  auf die Box verbinden will
Normalerweise wird die IP Adresse über DHCP vergeben, sodass keine weitere Konfiguration notwendig ist.

Kopfhöreranschluss aktivieren 

Da wir den Analog Audio Ausgang (also die Kopfhörerbuchse) benötigen, sollte dieser entsprechend konfiguriert sein:
Advanced Options - Audio - Force 3.5mm ('headphone') jack

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 spezifisches 

Bisher ging es um allgemeine Basis Konfigurationen. Nun zu den speziell für die FrimpieBox notwendigen Konfigurationen und Installationen.
Wie bisher schon, sind die Quellen an denen ich mich orientiert habe immer angegeben.

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 
sudo mkdir /root/.moc
sudo nano /root/.moc/config

und folgende Zeilen hinzugefügt werden:
ALSAStutterDefeat=yes

Im root Verzeichnis darum, weil die Software später mir dem root User ausgeführt wird.
Testen kann man das mit 
sudo mocp --server

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 

Leider hat das alleine nicht den gewünschten Erfolg gebracht, wobei Google schnell die Lösung liefert:

"Edit /lib/systemd/system/systemd-udevd.service
sudo nano /lib/systemd/system/systemd-udevd.service
and change the line MountFlags=slave to MountFlags=shared then reboot" 

SPI für RFID Reader aktivieren

Dazu bin ich folgendem Tutorial gefolgt:

Und zwar den Schritten
"SPI aktivieren und Software installieren"

Anmerkung: Die Anleitung ist etwas veraltet - die SPI Aktivierung findet man unter "Interface Options" und nicht in "Advanced Options"
und
"Raspberry Pi RFID Reader/Writer testen"

Wobei dmesg | grep spi kein Ergebnis liefert (wohl aber dmesg | grep 2708
-> einfach ignorieren

Power Button einrichten

In der Datei 
/boot/config.txt

folgende Zeile hinzufügen: 
dtoverlay=gpio-shutdown 

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

LED Ausgänge Konfigurieren

In der Datei 
/boot/config.txt

folgende Zeilen hinzufügen: 
# 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 geschalten, damit die anderen beiden LEDs sicher ausgeschalten sind.

Autostart einrichten

In der Datei 
/etc/rc.local 

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

FrimpieBox Software installieren

Die notwendigen Dateien sind hier zu finden:
https://github.com/frimp73/FrimpieBox/tree/v1.1.3

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