Infrarot Empfänger und Sender am Pi

Infrarot Empfänger und Sender am Pi Titelbild

Also, mit den Grundlagen haben wir uns nun beschäftigt, jetzt geht's ans Eingemachte. Keine Sorge, so schlimm ist es gar nicht. Wir wollen unser Wissen ja nun aber auch praktisch am Raspberry Pi anwenden. Zu aller erst müssen wir dafür ein Programm installieren. Für das gesamte Arbeiten mit dem Raspberry Pi gibt es ein Programm mit dem wunderbaren Namen LIRC, dass es das für uns sehr einfach macht. LIRC steht für Linux Infrared Remote Control und heißt übersetzt: Linux Infrarot Bedienungs Kontrolle. Doch wie gesagt müssen wir dieses Programm erst einmal installieren:

sudo apt-get install lirc
sudo apt-get install python-lirc

Sobald wir damit fertig sind, müssen wir den Raspberry Pi noch richtig konfigurieren. Wenn du den IR Sensor an einem anderen GPIO Pin anschließen willst, musst du das in der folgenden Konfiguration natürlich auch ändern. Als erstes ändern wir die Konfiguration in /etc/modules.

sudo nano /etc/modules

Da musst du die beiden folgenden Zeilen hinzufügen:

lirc_dev
lirc_rpi gpio_in_pin=17 gpio_out_pin=27

Mit Strg+X kannst du das Programm beenden und mit y -> Enter speichern.

Als nächstes müssen wir noch die Konfiguration von LIRC anpassen. Diese befindet sich in /etc/lirc/hardware.conf

sudo nano /etc/lirc/hardware.conf

Veränder dabei die folgenden Zeilen:

DRIVER="default"
DEVICE="/dev/lirc0"
MODULES="lirc_rpi"

Als letztes müssen wir noch für die GPIO Pins folgende Zeile hinzufügen:

sudo nano /boot/config.txt
dtoverlay=lirc-rpi,gpio_in_pin=17
gpio_out_pin=27,gpio_in_pull=up

Im letzten Konfigurationsschritt muss der Pi neu gestartet werden, aber danach sind wir dann auch schon fertig! Also:

sudo reboot

Daten mit Raspberry Pi auslesen

Bevor wir anfangen können, müssen wir zuerst unseren Infrarot Empfänger an unseren Raspberry Pi anschließen.

Infrarot Empfänger am Raspberry Pi

GPIO Pins am Pi Anschlüsse IR Empfänger
GND GND oder auch -
VCC VCC
GPIO 17 Signal oder auch S

Dazu müssen wir natürlich auch noch die IR Fernbedienung zum Laufen bekommen. Wenn du die beigelegte Fernbedienung benutzen willst, musst du dafür einfach die Knopfzellenbatterie einlegen. Wenn du dann die Kamera App auf einem Smartphone öffnest, solltest du die IR LED erkennen, wenn Tasten gedrückt werden. Dazu kommt, dass der IR Empfänger auch eine eingebaute LED hat, die anfängt zu leuchten, wenn der Empfänger etwas empfängt.

Jetzt sollten wir natürlich noch kontrollieren, ob wir diese Daten auch auf dem Raspberry Pi empfangen. Das können wir mit einem Befehl im Terminal tun. Dafür müssen wir aber zuerst den LIRC Dämon beenden. Dämon steht dabei einfach nur für ein Programm, welches im Hintergrund läuft und Sachen ausführt, in diesem Fall alles, was mit Infrarot zu tun hat.

sudo /etc/init.d/lirc stop
mode2 -d /dev/lirc0

Nach dem Ausführen des Befehls und dem Bedienen der IR Fernbedienung solltest du das Drücken der einzelnen Tasten im Terminal sehen. Das sind dann die Werte der einzelnen Tasten. Du kannst das Programm jederzeit mit Strg+C beenden. Doch da das Arbeiten mit diesen kryptischen Werten natürlich etwas anstrengend wäre, gibt es die Möglichkeit mit LIRC, die einzelnen Tasten von IR Fernbedienungen zu hinterlegen. So können wir auch ältere Fernbedienungen benutzen und korrekt konfigurieren. Es gibt dabei eine Vorgabe für die Benennung der Tasten, alle Vorgaben findest du, wenn du diesen Befehl ausführst.

irrecord --list-namespace

Aber damit du nicht zu lange suchen musst, haben wir hier schon einmal ein paar für dich rausgesucht: KEY_UP.KEY_DOWN.KEY_RIGHT.KEY_LEFT.KEY_1,....

Mit dem folgenden Befehlt startest du das Programm zur Konfiguration und speicherst alle Angaben in der Datei: lircd.conf

irrecord -d /dev/lirc0 ~/lircd.conf

Dazu folgst du einfach nur der Anleitung im Terminal. Zuerst musst du einfach gesagt, wild auf den Tasten herumdrücken, damit das Programm ungefähr weiß, worum es sich handelt. Im nächsten Schritt benennst du dann die einzelnen Tasten und dann immer diese Taste drücken. Wenn du damit fertig bist, kommst du mit einem einfachen Enter-Befehl zum letzten Punkt, bei dem du noch einmal Tasten drücken musst und schon bist du fertig.

Du kannst dir die Datei jetzt ansehen und gegebenenfalls im Kommentarbereich noch einmal konkreter benennen, um was für eine Fernbedienung es sich dabei überhaupt gehandelt hat.

nano lircd.conf

Jetzt müssen wir diese Konfigurationsdatei noch in den richtigen Ordner kopieren und fertig ist die Tastenbelegung.

sudo cp lircd.conf /etc/lirc/lircd.conf

Um zu testen, ob die Tasten jetzt auch richtig hinterlegt wurden, müssen wir zuerst den LIRC Dämon starten und das Programm "irw" ausführen.

sudo /etc/init.d/lirc start
irw

Wenn du jetzt die Tasten betätigst, solltest du auch die Tasten sehen, die du gerade eben selbst konfigurierst hast. Falls es da zu Problemen kommst, ist am besten, die Konfiguration noch einmal zu wiederholen.


LIRC mit Python

Jetzt haben wir die einzelnen Tasten schon richtig konfiguriert und können anfangen zu programmieren. Die Einbindung in Python ist auch recht einfach. Doch dafür müssen wir noch eine weitere Konfigurationsdatei anlegen. Diesmal in /etc/lirc/lircrc

sudo nano /etc/lirc/lircrc

begin
  button = KEY_DOWN
  prog = slidepuzzle
  config = down
end
begin
  button = KEY_UP
  prog = slidepuzzle
  config = up
end
begin
  button = KEY_LEFT
  prog = slidepuzzle
  config = left
end
begin
  button = KEY_RIGHT
  prog = slidepuzzle
  config = right
end

Wenn bei dir später die Fehlermeldung lirc.IntiError: unable to load default conifg [...] auftritt, hast du vermutlich in dieser Datei ein Formatierungsfehler. Das kann vor allem beim reinen Kopieren der Datei passieren.

Warum die Datei genauso aufgebaut sein muss, erklärt sich am besten, wenn wir gleich auch das Python schreiben und ausführen.

test.py

import lirc
sockid = lirc.init("slidepuzzle")

while True:
  codeIR = lirc.nextcode()
  if "up" in codeIR: 
    print("UP")
  print codeIR
sudo python test.py

Wenn du das Programm jetzt ausführst und die Tasten auf der Fernbedienung drückst, sollten jetzt die Ausgaben zu sehen sein (vorausgesetzt du hast auch genau die Tasten konfiguriert). Bei der Konfiguration steht button für den Namen des hinterlegten Buttons, prog für den Namen des Programms. Dieser wird auch als Parameter bei lirc.init() übergeben. Mit confi wird der Befehl hinterlegt, welcher nachher im Programm ausgegeben wird.

Da das aber natürlich etwas langweilig ist, gibt es noch ein etwas größeres Python Programm, welches wir noch einmal vorstellen wollen. Da das Programm eine grafische Oberfläche hat, musst du dafür auch den Pi über ein Display erreichen. Das Programm kannst du dir einfach mit dem folgenden Befehl herunterladen und ausführen

wget cw42.de/p/slidepuzzle.py
sudo python slidepuzzle

Das Spiel ist recht simpel. Es geht darum, dass wir in einem Puzzle die Zahlen anzuordnen. Die Bewegung erfolgt über die Pfeiltasten. Wenn du dich an die obige Anleitung zur Einrichtung gehalten hast, sollte alles ohne Probleme funktionieren.

Noch Fragen oder Feedback?

Bevor du eine Frage stellen kannst musst du dich zuerst Anmelden oder Regestrieren!