Infrarot-Empfänger und -Sender mit dem Raspberry Pi ansteuern

  • 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://klenzel.de/3588


    https://tutorials-raspberrypi.…-infrarot-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.

    Code
    sudo apt update
    sudo apt upgrade
    sudo reboot


    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

    Code
    sudo apt install lirc


    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

    Quote

    dtoverlay=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)

    Quote

    driver = default

    device = /dev/lirc0


    Es sollte dann wie folgt aussehen:

    Ich hab sie mal mit hochgeladen, falls es jemand gebrauchen kann: lirc_options.conf



    Jetzt starten wir unseren Raspberry Pi nochmal neu

    Code
    sudo reboot


    starten danach den Daemon neu

    Code
    sudo /etc/init.d/lircd stop
    sudo /etc/init.d/lircd start


    und testen ob Signale erkannt werden

    Code
    mode2 -d /dev/lirc0


    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):


    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

    Code
    irrecord --list-namespace

    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.

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

    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.

    Code
    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

    Code
    sudo irw


    Wenn ihr jetzt die eingestellten Tasten drückt, müsste eigentlich ungefähr so etwas erscheinen (hier kann wieder mit STRG+C beendet werden):


    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

    Code
    irsend SEND_ONCE device-name KEY-name

    Falls man es dauerhaften senden will (Der erste Befehl startet das Senden und der zweite beendet es wieder)

    Code
    irsend SEND_START device-name KEY-name
    irsend SEND_STOP device-name KEY-name


    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

  • Hallo


    Wie ich gestern hier im Forum erfahren habe, lautet der dtoverlay-Eintrag in der /boot/config.txt neu

    dtoverlay=gpio-ir .


    Hier der erwähnte Beitrag


    Vielleicht kann Potatochurchman seine tolle und aktuelle Anleitung entsprechend anpassen.


    Grüsse Hans

  • Hi! Leider ist auch diese Anleitung nicht aktuell, hat einiges an Fehlern und nutzt alte Infos. Das ist sehr schade!


    z.B.: Soll die datei lircd.conf erstellt werden, zwei Zeilen später soll der Gerätename aber doch in der Datei stehen und dann soll diese kopiert werden. Zudem steht nix über Probleme bei irsend, denn das kann einfach echt schief gehen:


    - Solltet ihr am Ende ein "No Gap" oä sehen, funktioniert irw nicht!

    - Habt ihr zwischendurch einen Retry oä, macht das nix - es wird dennoch laufen.


    Zudem ist das Senden mit dieser Hardware super umständlich und ebenfalls keine solide Erläuterung. Versteht mich nicht falsch, aber solche Anleitungen bei dieser Lircd-Menge an alten und falschen Infos im Netz ist einfach super irreführend und am Ende klappt es nicht. Daher wäre es toll, wenn Potatochurchman seine Anleitung tatsächlich auf den neuesten Stand bringt, denn so ist das leider auch ein Weg ins Nichts :(.