Heyho
Als erstes werde ich heute erklären, wie genau man einen Infrarot-Empfänger mit dem Raspberry Pi ansteuert und danach auch, wie man die empfangenen Signale wieder senden kann. Somit könnte man beispielsweise Endgeräte (z.B. eine Musikanlage, Fernseher, LED-Leisten etc.) über einen Raspberry Pi steuern.
Die meisten Tutorials, die ich dazu im Internet finden konnte, waren entweder nicht mehr ganz up-to-date oder haben nicht wirklich so funktioniert, wie es beschrieben wurde. Deshalb mache ich ein eigenes, welches dann hoffentlich ein paar Leuten helfen wird.
Meine Quellen:
https://tutorials-raspberrypi.de/raspberry-pi-f…steuerung-lirc/
https://gist.github.com/prasanthj
Dann wollen wir mal anfangen.
Was brauchen wir? (Im Anhang findet ihr auch passende Bilder)
Infrarot-Empfänger:
- Infrarot Empfänger (Receiver) (z.B. TSOP38238)
Infrarot-Sender:
- Infrarot Senderdiode (Emitter) (z.B. TSAL6200, man könnte hier auch einfach eine alte aus einer Fernbedienung ausbauen)
- NPN-Transistor (z.B. BC547B)
- 220 Ohm Widerstand
- 22 Ohm Widerstand
ACHTUNG!
Wann immer ich zeige, wie etwas angeschlossen wird, beziehe ich mich auf die oben erwähnten Beispiel-Bauteile. Man sollte immer vor dem Anschließen das Datenblatt betrachten und sich vergewissern, dass alles richtig angeschlossen wird. Ansonsten besteht Gefahr, dass die Bauteile eventuell kaputt gehen.
Was wir immer zu erst tun sollten, ist den Raspberry Pi abzudaten.
So jetzt kümmern wir uns, so wie oben erwähnt, erstmal um den Receiver. Ich zeig euch, wie genau ihr ihn anschließen solltet und wie wir ihn konfigurieren.
Den von mir verwendeten Empfänger habe ich so angeschlossen (Die Wölbung zeigt nach oben): rot = 3,3V, schwarz = Masse, grün = BCM 23
Jetzt die nötigen Pakete installieren
Noch folgende Zeile in der /boot/config.txt editieren/hinzufügen.
Hier sollte man darauf achten, dass man auch die PINs (verlangt wird hier die BCM Belegung) angibt, die man selbst benutzt.
Hinweis: gpio_in_pin = Receiver, gpio_out_pin = Emitter
Zitatdtoverlay=lirc-rpi,gpio_in_pin=23,gpio_out_pin=24
Jetzt noch die /etc/lirc/lirc_options.conf anpassen mit diesen beiden Zeilen (Die zwei Zeilen, die wir anpassen würde ich auskommentieren und die angepasste Version einfach darunter schreiben)
Zitatdriver = default
device = /dev/lirc0
Es sollte dann wie folgt aussehen:
ZitatAlles anzeigen# These are the default options to lircd, if installed as
# /etc/lirc/lirc_options.conf. See the lircd(8) and lircmd(8)
# manpages for info on the different options.
#
# Some tools including mode2 and irw uses values such as
# driver, device, plugindir and loglevel as fallback values
# in not defined elsewhere.
[lircd]
nodaemon = False
#driver = devinput
driver = default
#device = auto
device = /dev/lirc0
output = /var/run/lirc/lircd
pidfile = /var/run/lirc/lircd.pid
plugindir = /usr/lib/arm-linux-gnueabihf/lirc/plugins
permission = 666
allow-simulate = No
repeat-max = 600
#effective-user =
#listen = [address:]port
#connect = host[:port]
#loglevel = 6
#uinput = ...
#release = ...
#logfile = ...
[lircmd]
uinput = False
nodaemon = False
# [modinit]
# code = /usr/sbin/modprobe lirc_serial
# code1 = /usr/bin/setfacl -m g:lirc:rw /dev/uinput
# code2 = ...
# [lircd-uinput]
# release-timeout = 200
Ich hab sie mal mit hochgeladen, falls es jemand gebrauchen kann: lirc_options.conf
Jetzt starten wir unseren Raspberry Pi nochmal neu
starten danach den Daemon neu
und testen ob Signale erkannt werden
Wenn wir jetzt eine Infrarot Fernbedienung in die Richtung des Receivers halten und ein paar Tasten drücken, sollte so ein ähnlicher Output folgen (beendet werden kann das Ganze mit STRG+C):
ZitatAlles anzeigenpi@raspberrypi:~ $ mode2 -d /dev/lirc0
Using driver default on device /dev/lirc0
Trying device: /dev/lirc0
Using device: /dev/lirc0
space 8514140
pulse 218
space 216
pulse 397
space 766
pulse 532
space 2385
pulse 228
space 3198
pulse 233
space 213
pulse 206
space 1179
pulse 332
space 5600
pulse 234
space 982
pulse 759
space 780
pulse 227
space 209
pulse 337
space 4758
pulse 236
Jetzt wissen wir immerhin, dass unser Receiver funktioniert und alles richtig angeschlossen wurde. Leider können wir mit diesem Output nicht wirklich viel anfangen, weshalb wir eine Konfigurationsdatei erstellen werden, die uns diese Signale übersetzt.
Alle erlauben KEY Namen
Ich würde euch raten schon mal vorher zu überlegen, welche KEYs ihr gleich zuweisen wollt und euch diese vielleicht in einer Textdatei rausschreiben. Das könnte hilfreich sein.
Die eigentliche Config-Datei erstellen
In diesem Beispiel speichern wir sie nach ~, also den Hauptordner des Users Pi. Ihr könnt aber jeden beliebigen anderen Ort wählen. Später wird die Datei sowieso verschoben.
Wichtig ist hier noch anzumerken, dass ihr einen Device-Namen eingeben müsst. Dieser wird später benötigt, um Signale zu schicken. Dann weiß der Pi auch, um welches Gerät es sich handelt.
Folgt einfach den Anweisungen auf eurem Display. Es wird eigentlich genau erklärt, was ihr machen müsst.
Wenn ihr fertig seid mit dem Erstellen der Config, müssen wir sie verschieben. Ich weiß nicht, ob der zweite Schritt wirklich notwendig ist, aber es schadet auch nicht und hat bei mir so bisher ganz gut funktioniert.
sudo mv ~/dein-name.conf /etc/lirc/lircd.conf
sudo cp /etc/lirc/lircd.conf /etc/lirc/lircd.conf.d/lircd.conf
Jetzt können wir die neue Config noch, nach einem Neustart, testen mit
Wenn ihr jetzt die eingestellten Tasten drückt, müsste eigentlich ungefähr so etwas erscheinen (hier kann wieder mit STRG+C beendet werden):
ZitatAlles anzeigen0000000000000a81 02 KEY_POWER meine_anlage
0000000000000a81 03 KEY_POWER meine_anlage
0000000000000a81 04 KEY_POWER meine_anlage
0000000000000a81 05 KEY_POWER meine_anlage
0000000000000a81 06 KEY_POWER meine_anlage
0000000000000a81 07 KEY_POWER meine_anlage
0000000000000481 00 KEY_VOLUMEUP meine_anlage
0000000000000481 01 KEY_VOLUMEUP meine_anlage
0000000000000481 02 KEY_VOLUMEUP meine_anlage
0000000000000481 03 KEY_VOLUMEUP meine_anlage
0000000000000481 04 KEY_VOLUMEUP meine_anlage
0000000000000481 05 KEY_VOLUMEUP meine_anlage
0000000000000c81 00 KEY_VOLUMEDOWN meine_anlage
0000000000000c81 01 KEY_VOLUMEDOWN meine_anlage
0000000000000c81 02 KEY_VOLUMEDOWN meine_anlage
Soweit sind wir dann fertig mit dem Receiver, jetzt kommt noch der Emitter.
Dieser wird so angeschlossen: grün = BCM 24
Und da wir soweit bereits alles eingestellt haben, müssen wir nur noch diese Befehle eingeben, um Infrarot-Signale zu senden
(in meinem Beispiel wäre der device-name: meine_anlage und der KEY-name: KEY_POWER)
Falls man das Singal nur ein einziges Mal senden möchte
Falls man es dauerhaften senden will (Der erste Befehl startet das Senden und der zweite beendet es wieder)
So und das ist auch schon alles.
Ich denke, ich hab euch soweit genug Informationen gegeben, um damit schöne Dinge anzustellen.
Sollte es Fragen geben, werde ich gerne versuchen zu helfen.
Ansonsten viel Spaß
Euer Potatochurchman