Für unsere kleinen Kinder (1-4 Jahre alt) sind CDs noch nicht wirklich geeignet, und ein herkömlicher MP3-Player überfordert ihre geistigen und motorischen Kapazitäten. Deshalb hab ich mir überlegt, wie man mit einer rein haptischen Benutzerschnittstelle möglichst einfach verschiedene Alben oder Hörbücher „einlegen“ kann.
Ich bin recht schnell zum Schluss gekommen, dass es schön wäre, wenn man etwas in der Hand hält, und dieses auch in einem Regal oder in einer Mappe sortiert ablegen kann. Ein Albumcover mit einem QR-Code scheint also schon sehr nahe zu liegen.
Beim Stöbern durch das Internet bin ich auf RuneAudio gestoßen. Es scheint eine gute Ausgangsbasis für mein Vorhaben zu sein. Besonders gut gefällt mir die simple Art. Es ist kaum mit unnötigem Schnickschnack überladen und wird üblicherweise nur über den Webbrowser bedient - egal ob von einem Smartphone oder von einem Desktop-PC. Es basiert auf Arch Linux, mit dem ich eigentlich nicht vertraut bin, aber ich bin zuversichtlich, damit zurecht zu kommen.
Per
sudo dd bs=10M if=RuneAudio_rpi2_rp3_0.4-beta_20160321_2GB.img | pv -s 2100M | sudo dd of=/dev/sdc
wird das heruntergeladene Image auf die SD-Karte geschrieben. pv dient dabei zur Statusanzeige.
Anschließend wird per GParted die erstellte FAT32-Partition von ca. 2GB auf das maximum vergrößert, in meinem Fall gut 12GB.
Dann wird die SD-Karte in den Raspi gesteckt, und das System bootet. Dann muss man die IP-Adresse des Rechners herausfinden, das mache ich mit dem Webinterface der A1-Hybridbox, meim Modem bzw. Router.
Nun können wir uns endlich per ssh verbinden:
ssh root@192.168.0.64 pw: rune
Dieses Standard-Passwort sollte aus Sicherheitsgründen sofort geändert werden mittels
passwd
cd git clone https://github.com/joan2937/pigpio.git cd pigpio make sudo make install
Später stellte sich heraus, dass die Laufzeitbibliothek libpigpio.so nicht an ihrem Platz unter /lib gefunden werden konnte. Scheinbar ging hierbei etwas schief. Ein manuelles Kopieren löste das Problem:
cd cd pigpio sudo cp libpigpio.so /lib
=== Schnittstelle zum Music Player Daemon === Auf RuneAudio läuft der Daemon namens Music Player Daemon, kurz mpd. Mit diesem kann die Wiedergabe gesteuert werden und Wiedergabelisten verwaltet werden. Man braucht dazu jedoch einen Client, der im einfachsten Fall der Music Player Client, kurz mpc ist. Der kann auch auf einem anderen Rechner ausgeführt werden und steuert so RuneAudio an:
mpc --host 192.168.0.64 <Befehl> <Optionen>
Lokal schreibt man z.B.
mpc play mpc pause mpc next mpc prev
, das sind genau die Befehle, die die 4 Tasten auslösen sollen. === push-button.service === Der Plan ist nun, einen Service am System einzurichten, der automatisch nach dem booten gestartet wird, und somit per mpc den mpd ansteuert. Der Quellcode des Programms liegt auf GitHub und kann folgendermaßen auf RuneAudio kompiliert werden:
cd git clone https://github.com/KarlZeilhofer/push-button-service.git cd push-button-service make
Zum testen kann man die Binärdatei einfach ausführen, Root-Rechte sind aber wegen der Bibliothek pigpio notwendig:
sudo ./push-button-service
Mit
cd /lib/systemd/system/ sudo nano push-button.service
legen wir eine neue Text-Datei an, die mit dem Texteditor nano nun mit folgendem befüllt wird:
[Unit] Description=Runs the user programm push-button-service controlling the playback of 'mpd'. After=multi-user.target [Service] Type=simple ExecStart=/root/push-button-service/push-button-service Restart=on-abort [Install] WantedBy=multi-user.target
. Nun können wir den Service einbinden und starten:
sudo chmod 644 /lib/systemd/system/push-button.service sudo systemctl daemon-reload sudo systemctl enable push-button.service sudo systemctl start push-button.service
Geschafft, nun sollte der Player bereits auf die Tasten reagieren, ohne dass man selbst das Programm gestartet hat. Auch nach einem reboot macht der Player das nun! ===== Ausblick und Stichworte ===== === 7-Segment Anzeige === * Im Idle kann die Uhrzeit angezeigt werden * Aktueller Titel: mpc current -f %position% \\liefert Titel Nr der aktuellen Playlist, beginnend bei 1. === 3D-Dateien === Gezeichnet in Sketchup, maßgeschneidert an die Taster, und die 7-Segment-Anzeige und das Raspi-Gehäuse. === QR-Code Steuerung === Ordner laden:
mpc add USB/Musik/koenig-der-loewen
ACHTUNG: hier muss auch der Name des USB-Sticks bekannt sein!
ACHTUNG: die Ordner dürfen keine Umlaute haben!
Playlist löschen:
mpc clear
QR-Code erstellen mit
qrencode
===== Sonstiges ===== === Gnome MPC === RuneAudio kann man auch sehr bequem mit einer nativen Anwendung fernsteuern. Der Gnome music player client ist sehr flott und angenehm zu benutzen. === Kindergerechter Audio-Player === Ein sehr ähnliches Projekt wurde vor Jahren schon einmal von Marcus Nasarek umgesetzt und auf Raspberry Pi Geek als Artikel veröffentlicht. ===== Notizen =====
Hardware: Raspberry Pi 3B (37€) https://thepihut.com/collections/raspberry-pi/products/raspberry-pi-3-model-b 16GB Mikro SD-Karte (10€) Netzteil: 2A Mikro-USB: https://thepihut.com/collections/raspberry-pi-power-supplies/products/eu-micro-usb-power-supply-for-the-raspberry-pi Adafruit 7-Segment, gelb, I2C (11€) https://eckstein-shop.de/Adafruit-056-4-Digit-7-Segment-Display-w-I2C-Backpack-Yellow oder Direkt: Knight Bright: CC04-41SYKWA 10mm-Schrift, 40x16x6.8mm, 20mA/Segment Kamera-Modul (28€): https://thepihut.com/collections/raspberry-pi-camera/products/raspberry-pi-camera-module Optional: HiFi Just Boom DAC (34€) https://www.justboom.co/product/justboom-dac-hat/ HiFi Just Boom DAC mit 2x30W Verstärker (69€) https://thepihut.com/products/justboom-amp-hat oder China DAC: https://www.ebay.at/sch/i.html?_odkw=raspberry+hifi+dac&_osacat=0&_from=R40&_trksid=p2045573.m570.l1313.TR2.TRC0.A0.H0.Xraspberry+hifi+dac.TRS0&_nkw=raspberry+hifi+dac&_sacat=0 Thermodrucker, 58mm ca. 35€
==== Volumio, DLNA, AirPlay ====
Volumio ist ein Pendant zu RuneAudio, läuft sehr geschmeidig und unterstütz angeblich DLNA. D.h. der Raspi kann als Audiosenke verwendet werden. Sollte mi dem Linux CLI Tool pulseaudio-dlna
funktionieren, scheiterte jedoch bei den ersten versuchen. Der Audiostream vom PC wird zwar unmittelbar umgeleitet, kommt aber bei den Boxen am Raspi nicht an.