Login
Newsletter
Werbung

Do, 16. Mai 2013, 15:00

Raspberry Pi als Multimedia-Zentrale

Ferngesteuertes Multimedia-System auf Basis eines Raspberry Pi, Linux, XBMX mit einer LCD-Anzeige

Die Steuerung – Die Hardware

Die Bedienung eines Media-Centers über eine Tastatur und eine Maus ergibt nur bedingt Sinn. Eine durchaus übliche Alternative stellt deshalb die Anschaffung eines USB-Receivers samt einer passenden Fernbedienung dar. Besitzer von Android oder iOS-Geräten können alternativ auf eine Vielzahl an Apps setzen, die eine Steuerung (und Verwaltung) von XBMC ermöglichen.

Beide Lösungen haben allerdings diverse Nachteile. So ist die Anschaffung einer neuen Fernbedienung nicht unbedingt jedermanns Sache. Zudem kostet ein brauchbarer Controller teils mehr als das Gerät selbst. Einer Smartphone- oder Pad-Lösung fehlt es dagegen an Haptik und sie reagiert oftmals träge. Was liegt also näher als bereits auf dem Tisch liegende Fernbedienungen zu nutzen?

Möglich machen es GPIO und ein handelsüblicher IR-Receiver, wie er bei gut sortierten Elektronikhändlern für nicht einmal einen Euro erworben werden kann. Wichtig sind beim Kauf allerdings die Werte des Bauteils. Zwar verfügt der Raspberry Pi über eine 5 V-Schiene, die direkt von dem Netzteil abgegriffen wird, doch arbeiten die GPIO-Eingänge des Geräts lediglich mit 3,3V. Erwirbt man also einen für 5 V und nicht für 3,3 V spezifizierten Receiver und klemmt diesen an die 5 V-Spannungsversorgung, ohne den Ausgang danach zu teilen, droht eine permanente Zerstörung des Raspberry Pi.

Wichtiger Sicherheitshinweis!
Arbeiten Sie beim Löten und der Beschaltung präzise. Überprüfen Sie dazu alle Lötstellen und Kontakte auf mögliche Kurzschlüsse und falsche Belegung der Pins. Stellen Sie sicher, dass sie in einer Umgebung arbeiten, die zu keiner elektrostatischen Entladung führt und schalten Sie das Gerät stets aus, wenn sie daran arbeiten. Falsche Belegung, Kurzschlüsse oder aber auch elektrostatische Entladung können Ihr Gerät unwiderruflich beschädigen! Die Redaktion übernimmt keine Haftung für mögliche Schäden, die durch die Befolgung der Anleitung entstanden sind!

Beschaltung eines IR-Empfängers an einem Raspberry Pi

Mirko Lindner

Beschaltung eines IR-Empfängers an einem Raspberry Pi

Die Pins des IR-Empfängers werden ohne eine Zusatzschaltung direkt an die GPIO-Pins des Raspberry angeschlossen. Sie sollten nicht direkt auf dem Raspberry Pi löten, sondern geeignete Kabel und Stecker verwenden. Sofern Sie nicht willens sind, die passenden Verbinder zu kaufen, können Sie auch beispielsweise einen Stecker aus einem Ihrer alten Rechner verwenden.

Je nach Beschaltung des Empfängers muss Vs an Pin1 des RPi (Out 3,3 V), Masse an Pin6 (GRD) und der Ausgang (OUT) an ein GPIO-Pin legen (siehe Abbildung). Die Beschaltung der Pins stellt allerdings kein allgemeingültiges Szenario dar. Sie sollten deshalb auf jeden Fall das Datenblatt konsultieren und der Belegung entsprechend den Anschlüssen des Empfängers anpassen. Zudem sollten Sie, sofern Sie andere Hardware einsetzen wollen, den GPIO 22 nehmen. Der Grund dafür ist einfach: Die restlichen Pins an der rechten Seite werden später noch für eine andere Schaltung benötigt, weshalb wir sie nicht mit unserem Empfänger blockieren wollen.

Von der Softwareseite gesehen sind nun der LIRC-Daemon einzurichten und die Tasten der Fernbedienung zu konfigurieren. OpenELEC kommt bereits von Haus aus mit einem eingerichteten LIRC und einem speziellen Kernel-Modul, das für den Raspberry und dessen GPIOs angepasst wurde. Dazu reicht es, das Modul zu laden. Danach sollten Sie alle Anwendungen, die auf die Schnittstelle noch zugreifen, beenden:

# ssh -l root RPI_DEVICE
# modprobe lirc_rpi gpio_in_pin=22
# kill $(pidof lircd)
# mode2 -d /dev/lirc0

Das Kommando mode2 zeigt alle Signale an, die der Receiver erhalten hat. Drückt man eine Taste auf der Fernbedienung und sieht keine Ausgabe, während mode2 ausgeführt wird, ist die Einrichtung des Empfängers gescheitert. In diesem Fall empfiehlt sich ein Blick in /var/log/messages und die Überprüfung der Beschaltung des IR-Empfängers. Gibt mode2 dagegen die Pulsinformationen aus, hat man die Hardwareinstallation überstanden und kann mit der Konfiguration des Daemons beginnen.

Standardkomponente – IR-Empfänger

Mirko Lindner

Standardkomponente – IR-Empfänger

Eine Steckplatine hilft bei kleineren Tests

Mirko Lindner

Eine Steckplatine hilft bei kleineren Tests

Fertig gelöteter und gesteckter IR-Empfänger

Mirko Lindner

Fertig gelöteter und gesteckter IR-Empfänger

Die Steuerung – LIRC

Bei LIRC (Linux Infrared Remote Control) handelt es sich um einen Daemon, der Befehle von IR-Fernbedienungen in Programmbefehle umsetzen kann. Um die Signale von Fernbedienungen korrekt zu dekodieren, wird eine Konfigurationsdatei benötigt, die allerdings auf die jeweilige Fernbedienung abgestimmt sein muss. Man kann diese entweder selbst erzeugen oder aus dem Fundus auf der Seite des Projektes herunterladen. In Anbetracht der recht unkomplizierten Vorgehensweise kann man sich die Suche aber getrost sparen und diesen Schritt manuell durchführen.

Der erste Schritt der Konfiguration sollte die Ausgabe der verfügbaren Funktionen sein. Diese Aufgabe erledigen wir, indem die Kommandos in eine Datei umgeleitet werden:

# kill $(pidof lircd)
# irrecord --list-namespace | grep KEY &> lirc_strings.txt

Diese Datei dient uns nun als Referenz für alle verfügbaren Tasten. Nun geht es an die eigentliche Konfiguration. Wichtig ist dabei, dass als Namen immer die Strings benutzt werden, die auch in der generierten Datei lirc_strings.txt enthalten sind. Ferner sollten alle Schritte der Konfiguration von irrecord eingehalten werden, will man eine korrekte und saubere Konfiguration erhalten. Ein Beispiel einer solchen Konfigurationsdatei finden Sie im Anhang des Artikels.

# kill $(pidof lircd)
# irrecord -d /dev/lirc0 ~/lircd.conf

Sind alle Tasten der Fernbedienung in der Konfiguration erfasst, kann die neue Konfiguration mit dem Kommando irw getestet werden:

# kill $(pidof lircd)
# lircd ~/.config/lircd.conf
# irw

Wird nun, während »lircd« ausgeführt wird, eine zuvor bekannt gegebene Taste gedrückt, sollte der String eingeblendet werden, den wir ihr zugewiesen haben. Auch hier gilt: Funktioniert dieser Schritt nicht, sollte die Erstellung der Konfiguration überprüft werden. Eine Fortsetzung der Konfiguration ergibt keinen Sinn, denn sie wird nicht funktionieren.

Die Steuerung – XBMC

Nun ist es an der Zeit, die Tastenbelegung auch XBMC bekannt zu geben. Dazu muss die Konfigurationsdatei Lircmap.xml angepasst bzw. erstellt werden. Die Struktur der Einträge ist dabei recht einfach und sollte kaum Verständnisprobleme verursachen: Die zuvor konfigurierte Belegung einer Taste muss lediglich einer Funktion der Anwendung zugewiesen werden. Wie so etwas aussieht, illustriert das folgende Listing. Die komplette Datei finden Sie wieder im Anhang.

#vi ~/.xbmc/userdata/Lircmap.xml

<lircmap>
        <remote device="ir_receiver">
                <left>KEY_LEFT</left>
                <right>KEY_RIGHT</right>
                <up>KEY_UP</up>
                <down>KEY_DOWN</down>
                <select>KEY_OK</select>
                <enter>KEY_ENTER</enter>
                <menu>KEY_MENU</menu>
                <info>KEY_I</info>
                <title>KEY_C</title>
                <back>KEY_BACK</back>
                <play>KEY_PLAY</play>
[...]

Als Vorlage können Sie eine bereits unter /usr/share/xbmc liegende Lircmap.xml verwenden, die Sie dann an Ihre Bedürfnisse anpassen. Wichtig bei diesem Schritt ist neben der korrekten Zuweisung der Tasten aber auch die korrekte Benennung des Empfängers. In unserem Fall heißt das Device »ir_receiver«, dem entsprechend muss auch in der Datei lircd.conf als Name »ir_receiver« eingetragen werden. Stimmen die beiden Namen nicht überein, verwendet XBMC ein falsches Gerät und die Navigation funktioniert nicht.

Die Steuerung – Abschluss der Konfiguration

Der letzte Schritt der Konfiguration unserer Fernbedienung dient der Komplettierung und dem korrekten Start des LIRC-Daemons. Um das zu erreichen, erstellen wir eine autostart-Datei, die beim Booten des Systems ausgeführt und in der LIRC korrekt initialisiert wird:

# vi ~/.config/autostart.sh

#!/bin/sh
(modprobe lirc_rpi gpio_in_pin=22; \
while [ ! -e /var/run/lirc/lircd-lirc0 ]; do
         sleep 1; \
done
if [ -h /var/run/lirc/lircd ]; \
        then logger autostart: lircd socket already linked! ;\
else
        logger autostart: linking lircd socket ... ; \
        rm /var/run/lirc/lircd; \
        ln -s /var/run/lirc/lircd-lirc0 /var/run/lirc/lircd; \
fi)&

Ist dieser Schritt erledigt, kann das Gerät aus- und eingeschaltet werden. Sollten alle Schritte befolgt worden und keine Fehler aufgetreten sein, sollte sich nun XBMC mittels der Fernbedienung bedienen lassen. Im Falle eines Fehlers empfiehlt es sich, auf dem Gerät das Kommando irw auszuführen und zu überprüfen, ob die Eingaben der Fernbedienung korrekt von LIRC erkannt werden.

Kommentare (Insgesamt: 54 || Alle anzeigen )
Re: Fernsteuern (ProLinux78, So, 16. Februar 2014)
Re: Vieles läuft mittlerweile anders! (sktmp, Do, 23. Januar 2014)
Re[2]: IR-Empfänger (FreddieMc, Do, 3. Oktober 2013)
Re[2]: IR-Empfänger (FreddieMc, Do, 3. Oktober 2013)
Re[2]: IR-Empfänger (FreddieMc,, Do, 3. Oktober 2013)
Pro-Linux
Pro-Linux @Facebook
Neue Nachrichten
Werbung