Tutorial: Raspberry Pi, Infrarot-Fernbedienung und LIRC Mit dem Raspberry Pi ist es einfach möglich, beliebige Funktionen mittels einer herkömmlichen Infrarot-Fernbedienung anzusteuern. Im Netz gibt es dazu viele Anleitungen, die aber oft schon (sehr) veraltet sind und nicht mehr funktionieren. Deshalb hier eine aktuelle Beschreibung (April 2022). Voraussetzungen ein Raspberry Pi eine IR-Fernbedienung eine Infrarot-Empfänger-Diode etwas Software (LIRC) und ein bisschen Konfiguration 1.) Der Raspberry Ich habe es aktuell (04/2022) mit einem Raspberry Pi 2B in Betrieb und zusätzlich mit einem Zero2W getestet. Betriebssysteme: Der 2B hat ein aktuelles Buster und der Zero2W ein aktuelles Bullseye installiert. 2.) Die Fernbedienung(en) LIRC unterstützt sehr viele Fernbedienungen, siehe https://www.lirc.org/ http://lirc-remotes.sourceforge.net/remotes-table.html Falls aber die eigene nicht dabei sein sollte: Auch kein Problem, siehe weiter unten. Hier im Tutorial habe ich eine Pinnacle_RC1144201 verwendet. 3.) Die IR-Empfänger-Diode z.B. eine Vishay TSOP31238 Diese wird mit ihren drei Anschlüssen an die GPIO-Kontakte angeschlossen, bei mir: Pin 1 (3,3V) Pin 6 (Ground) Pin 11 (GPIO 17) Bei anderen Empfängern oder Implementierungen mag das abweichen. Bitte das Datenblatt lesen! Hier einfach einmal die Ausgabe von pinout bzgl. der GPIO-Pins: (Code, 20 lines) Um den verwendeten Pin bzw. den Anschluss dem Raspi bekannt zu geben, ist folgender Eintrag in der /boot/config.txt erforderlich: (einfach das '#' am Zeilenanfang entfernen) (Code, 1 line) (Code, 2 lines) 4.) Die Software und die Konfiguration a) LIRC Installation des lirc Paketes: (Code, 2 lines) Es werden damit u.a. einige Konfigurationsdateien angelegt in /etc/lirc/. Diese werden nun angepasst an den Raspberry Pi: (Code, 1 line) (Code, 8 lines) Da der devinput Treiber nicht verwendet wird, sollte er auch komplett deaktiviert werden: (Code, 2 lines) b) Die Konfiguration der Fernbedienung für LIRC Auf http://lirc.sourceforge.net/remotes gibt es eine lange Liste von fertigen Konfigurationsdateien für unterstützte Fernbedienungen. Davon bitte die Passende herunterladen und sinnvoll benannt (muss mit .conf enden!) ablegen: (Code, 1 line) Falls tatsächlich keine passende Datei zu finden ist, kann man sie sich auch selbst erzeugen durch "Aufnehmen" von Tastendrücken: (Code, 3 lines) irrecord führt im Dialog durch den Aufnahmeprozess. (Eventuell muss diese generierte Datei noch manuell nachgearbeitet werden. Siehe man irrecord.) Ein einfaches Beispiel (gekürzt): (Code, 15 lines) Wenn nun eine passende .conf Datei vorliegt, muss LIRC neu gestartet werden, um die Änderungen einzulesen: (Code, 1 line) Testen lässt sich die Fernbedienung dann im Terminal/Shell mit: (Code, 1 line) ==> einfach ein paar Tasten drücken und schauen, ob etwas von irw angezeigt wird. irw dann mit Strg-C stoppen. Beispielausgabe: (Code, 14 lines) Bei technischen Problemen könnte noch dieses Testkommando helfen: (Code, 1 line) c) irexec LIRC liefert unter anderem das Programm irexec mit. irexec kommuniziert mit dem im Hintergrund laufenden LIRC-Dämon und erhält Informationen über die gedrückte Taste. Um die jeweilge Taste mit einer Aktion zu verknüpfen, wird eine Konfigurationsdatei gefüllt: ~/.config/lircrc. (Code, 3 lines) Dort eintragen (gekürztes Beispiel): (Code, 16 lines) Die im Beispiel konfigurierten Kommandos ("config") sind natürlich hier nur Testeinträge! Sowohl die Bezeichnung der Fernbedienung ("remote") als auch die der Knöpfe ("button") müssen mit denen aus der Konfiguration der Fernbedienung wie weiter oben beschrieben übereinstimmen! Damit irexec seine Arbeit aufnehmen kann, muss es auch laufen... Testweise reicht ein (Code, 1 line) Beenden mit Strg-C Natürlich ist es sinnvoller, irexec immer automatisch im Hintergrund laufen zu haben. Das geht so: (Code, 1 line) Dort eintragen: (Code, 15 lines) Jetzt noch aktivieren und starten: (Code, 2 lines) Das ergibt eine Ausgabe ähnlich wie (sollte es...): (Code, 10 lines) Viel Spaß mit LIRC und der Fernbedienung. Der Fantasie sind keine Grenzen gesetzt!