TSOP 1738 IR Empfänger am Raspberry Pi GPIO

Die Tage fiel mir beim Aufräumen eine alte Apple Remote in die Hände, die seit Jahren in einer dunklen Kiste ihr Dasein fristete. Dabei fiel mir ein, dass auch noch irgendwo ein IR-Empfänger sein musste, den ich mir vor vielen vielen Jahren mal für den Betrieb am seriellen Anschluss zusammengelötet hatte. Das wäre doch ideal, um damit den MPD auf meinem Raspberry Pi B+ zu steuern, dann müsste ich nicht immer umständlich über die Handy-App den Radio-Stream ein- und ausschalten. Also, den IR Empfänger rausgesucht, mit einem USB-Seriell-Adapter, den ich auch noch da hatte, angeschlossen und ausprobiert. Leider habe ich das ganze darüber nicht zum laufen bekommen. Ein Freund, der bei solchen Sachen etwas mehr Erfahrung hat, meinte dazu, dass über diese USB-Seriell-Adapter so einiges nicht funktioniert, aber ich habe doch ein wenig meine jugendlichen Lötkünste in Verdacht, die eventuell zu einem Kurzschluss geführt haben.

Das Ding passte auf diese Art immerhin genau in das Gehäuse eines RS-232-Steckers. Da es so aber nicht funktionierte, beschloss ich den IR-Empfänger herauszulöten und direkt mit den GPIO-Pins des Raspberry Pi zu verbinden.

Empfänger anschließen

Die Belegung der Pins des TSOP 1738 Empfängers war leicht herauszufinden und Berichte wie man solche Empfänger mit dem Pi verbindet gibt es im Netz zu hauf. Allerdings musste ich mir die Informationen an so vielen Stellen zusammensuchen und noch mehr herumprobieren, dass ich mir das ganze fürs nächste Mal zusammenstelle.

Der Anschluss an den Pi ist sehr simpel. VCC an Pin 2, GND an Pin 6 und Data an Pin 12 (Das ist GPIO 18, den brauchen wir später noch).

Pi Konfigurieren

Als nächstes die Software installieren:

sudo apt install lirc mpc

lirc ist der Linux Infrared Remote Control Daemon, der im Hintergrund läuft und auf Signale einer Fernbedienung wartet. Diese Signale kann er dann interpretieren und auf verschiedenste Art und Weise weitergeben. mpc ist ein Kommandozeilentool zum Steuern des Music Player Daemons mpd.

Um die GPIO-Pins nutzen zu können musste ich noch einen Eintrag in der boot.txt ändern.:

dtoverlay=lirc-rpi

Die Zeile war bereits vorhanden, sie war aber auskommentiert. Die # am Anfang entfernen, SD-Karte wieder in den Pi und wieder starten.

Als nächstes das lirc_rpi Kernel-Modul konfigurieren. Dazu die Datei /etc/modules in einem Editor öffnen und diese Zeile einfügen:

lirc_rpi gpio_in_pin=18

Hier den Pin angeben an dem die Data-Leitung des Empfängers angeschlossen ist.

Konfiguration von lirc

/etc/lirc/hardware.conf

LIRCD_ARGS="--uinput"
LOAD_MODULES=false
DRIVER="default"
DEVICE="/dev/lirc0"
MODULES="lirc_rpi"
LIRCD_CONF=""
LIRCMD_CONF=""

Danach kann man prüfen ob der Empfänger funktioniert.

sudo service lirc restart
mode2

Das Tool mode2 gibt, wenn alles korrekt konfiguriert ist, Meldungen aus sobald Signale von einer Fernbedienung ankommen. Mit Hilfe von irrecord kann man diese Signale aufzeichnen, es gibt aber auch bereits für viele Fernbedienungen vorhandene Konfigurationen zum Herunterladen. Für meine Apple Remote A1156 habe ich so eine Konfiguration heruntergeladen und nur die Button-Namen etwas angepasst. Die Namen der Buttons müssen später mit den Bezeichnungen in der Konfiguration von irexec übereinstimmen.

/etc/lirc/lircd.conf

begin remote
 name Apple_A1156
 bits 8
 flags SPACE_ENC
 eps 30
 aeps 100

header 9065 4484
 one 574 1668
 zero 574 547
 ptrail 567
 repeat 9031 2242
 pre_data_bits 16
 pre_data 0x77E1
 post_data_bits 8
 post_data 0xC5
 gap 37600
 toggle_bit 0
 ignore_mask 0x80ff

begin codes
 KEY_PLAYPAUSE 0x20 # Was: play
 KEY_VOLUMEUP 0xD0
 KEY_NEXT 0xE0 # Was: ffwd
 KEY_PREVIOUS 0x10
 KEY_VOLUMEDOWN 0xB0 # Was: minus
 KEY_MENU 0x40 # Was: menu
 end codes

end remote

/etc/lirc/lircrc

begin
 prog = irexec
 button = KEY_PLAYPAUSE
 config = mpc toggle
 repeat = 0
end

begin
 prog = irexec
 button = KEY_PREVIOUS
 config = mpc prev
 repeat = 0
end
begin
 prog = irexec
 button = KEY_NEXT
 config = mpc next
 repeat = 0
end
begin
 prog = irexec
 button = KEY_VOLUMEUP
 config = mpc volume +2
 repeat = 1
end
begin
 prog = irexec
 button = KEY_VOLUMEDOWN
 config = mpc volume -2
 repeat = 1
end

Zu guter letzt:

sudo service lirc restart

Jetzt lässt sich der MPD mit der Fernbedienung steuern.

Veröffentlicht von

Gerald

Diplom-Informatiker (DH) in Darmstadt. Ich blogge über Entwicklung, Internet, mobile Geräte und Virtualisierung. Meine Beiträge gibt es auch bei Google+ und Facebook.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.