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
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
- WLAN aktivieren
Network Options - Wi-fi
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:
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.
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:
sudo nano /lib/systemd/system/systemd-udevd.service"Edit /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"und
Anmerkung: Die Anleitung ist etwas veraltet - die SPI Aktivierung findet man unter "Interface Options" und nicht in "Advanced Options"
"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.
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.
LED Ausgänge Konfigurieren
In der Datei
/boot/config.txt
folgende Zeilen hinzufügen:
# set pin 10 output high and 11,12 to lowgpio=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 |
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 |
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€.
Kommentare
Kommentar veröffentlichen