Praxisnahe Tutorials, auf die du zählen kannst.
Einsteiger Guide für Home Assistant

Raspberry Pi als Infrarot Sender + Empfänger nutzen

Raspberry Pi als Infrarot Sender und Empfänger nutzen, aber warum? Nun ja, mir fällt da sofort ein Beispiel ein: Wenn man sein Smart Home bereits mit einer Anwesenheitserkennung ausgestattet hat, ist es nur eine Frage der Zeit bis man (oder die Freundin) auf die Idee kommt, den Fernseher automatisch aus oder einschalten zu lassen.

Da man nicht jeden Fernseher, Receiver oder Stereoanlage über das Netzwerk an- oder ausschalten kann, ist IR die alternative um die vorhandenen Geräte ins Smart Home zu Integrieren. Wenn man diesem Tutorial folgt lässt sich fast jedes gerät das eine Fernbedienung hat über den Raspberry steuern, ob Klimaanlage, LED-Stripes oder wie bereits erwähnt Multimedia Systeme. Eurer Kreativität sind keine Grenzen gesetzt.

Benötigte Hardware für dieses Tutorial

Raspberry Pi

Optionale Raspberry Hardware

EDIMAX EW-7811UN Wireless USB Adapter, 150 Mbit/s (nicht mehr erforderlich ab Raspberry Pi 3)*Prototype Shield for Raspberry Pi B+ Controller*
ReicheltRaspberry Pi – USB-WiFi-Dongle, 150 MBit/s (nicht mehr erforderlich ab Raspberry Pi 3)*Raspberry Pi Shield – Prototyp*
ELVEDIMAX EW-7811Un Nano-USB-WLAN-Adapter, 150 Mbps (nicht mehr erforderlich ab Raspberry Pi 3)*JOY-iT ProtoShield+ für Raspberry Pi*

Werkzeuge und Zubehör

Es wird natürlich entweder ein Lötkolben oder eine Lötstation benötigt. Ob Steckbrückenkabel oder Drahtbrücken ist Geschmacksache, ich habe beides 😉

AmazonLötkolben Set, Vtin 60W 220V Lötkolben Kit Soldering Iron Set, Lötset mit Einstellbare Temperatur 200-450°C, 5 PCS Unterschiedliche Lötspitzen, Löten Ständer, Lötzinn für Verschiedentlich Repariert Nutzung*Transmedia Lötstation, elektronisch temperaturgesteuert, LCD-Anzeige, 5% Genauigkeit, Preis-Leistungssieger 2017*Goobay Lötzinn bleifrei; ø 0, 56 mm; 100 g*Aukru 40x 20cm female-female jumper wire Kabel Steckbrücken Drahtbrücken für Arduino Raspberry pi (weiblichen zu weiblichen)*Neuftech 140 teilig Set male-male Jumper Wire Kabel Steckbrücken für Breadboard Steckplatine*
ReicheltLötkolben mit Temperaturkontrolle ZD-708, 30W*ELV LS-80D-II Digitale Lötstation, 80 W*Lötdraht, 100g Rolle, Ø 0,5mm, Sn60*Entwicklerboards – Steckbrückenkabel, 20 Pole, m/m, f/f, f/m, 25*Steckbrücken-Drahtbrücken-Set*
ELVFixpoint Lötkolben-Set 30W 230V*WELLER-Lötstation, regelbar 200-450°C*ELV No-Clean Lötzinn bleifrei Sn99Cu1+ML, 0,5 mm, 100 g*Raspberry Pi Verbindungskabel-Set für Raspberry Pi, 20 Stück, je 25 cm*nicht verfügbar

Erforderliche Elektro-Bauteile

Amazonleider nicht verfügbarTSOP4838*Infrarotdiode leider nicht verfügbarKohleschichtwiderstand 1/4W, 5%, 220 Ohm*
ReicheltTransistor NPN TO-92 45V 0,1A 0,5W*IR-Empfänger-Module TSOP4838 38 kHz*Infrarotdiode, 950 nm, 10°, 5 mm, T1 3/4*Kohleschichtwiderstand 1/4W, 5%, 220 Ohm*

Anschließen der Bauteile

Sieht alles furchtbar kompliziert aus, ist es aber nicht 😉

Mehr von simon42  Alexa und Homematic via HConnect verbinden

Empfangseinheit

TSOP4838

TSOP4838 Beinchenbelegung

Sendeeinheit

BC 547B + Kohleschichtwiderstand 1/4W, 5%, 220 Ohm

BC-547-B-025W-220-Ohm-837x1024
Transistor und Widerstand müssen verbunden werden, egal ob durch Steckverbindungen oder durch löten

LD 274-3

Bei der LED ist darauf zu achten, dass die Stromzufuhr an den Pluspol angeschlossen wird. Der Pluspol ist meist das längere der beiden Beinchen der LED.

Gesamter Schaltplan

Nicht verwirren lassen, der Transistor ist hier spiegelverkehrt wie auf dem Foto zu sehen.

Anschlussplan der Bauteile an den Raspberry Pi als Infrarot Sender + Empfänger
Links ist der TSOP4838, also der Empfänger. In der Mitte ist der BC 547B (Transistor) und rechts die LED.

Raspberry Pi als Infrarot Sender – Installation

Die Grundinstallation eines Raspberry Pi habe ich bereits hier im Blog erklärt. Ich verwende hierfür den Raspberry Pi, den ich auch für die Homebridge verwende. Zum Senden und Empfangen der Signale verwende ich die Software lirc. Beginnen wird mit der Installation des Empfängers

Empfänger-Installation

sudo apt-get install lirc -y
sudo nano /boot/config.txt
# For more options and information see
# http://www.raspberrypi.org/documentation/configuration/config-txt.md
# Some settings may impact device functionality. See link above for details

# uncomment if you get no picture on HDMI for a default "safe" mode
#hdmi_safe=1

# uncomment this if your display has a black border of unused pixels visible
# and your display can output without overscan
#disable_overscan=1

# uncomment the following to adjust overscan. Use positive numbers if console
# goes off screen, and negative if there is too much border
#overscan_left=16
#overscan_right=16
#overscan_top=16
#overscan_bottom=16

# uncomment to force a console size. By default it will be display's size minus
# overscan.
#framebuffer_width=1280
#framebuffer_height=720

# uncomment if hdmi display is not detected and composite is being output
#hdmi_force_hotplug=1

# uncomment to force a specific HDMI mode (this will force VGA)
#hdmi_group=1
#hdmi_mode=1

# uncomment to force a HDMI mode rather than DVI. This can make audio work in
# DMT (computer monitor) modes
#hdmi_drive=2

# uncomment to increase signal to HDMI, if you have interference, blanking, or
# no display
#config_hdmi_boost=4

# uncomment for composite PAL
#sdtv_mode=2

#uncomment to overclock the arm. 700 MHz is the default.
#arm_freq=800

# Uncomment some or all of these to enable the optional hardware interfaces
#dtparam=i2c_arm=on
#dtparam=i2s=on
#dtparam=spi=on

# Uncomment this to enable the lirc-rpi module
dtoverlay=lirc-rpi,gpio_in_pin=23,gpio_out_pin=22

# Additional overlays and parameters are documented /boot/overlays/README

# Enable audio (loads snd_bcm2835)
dtparam=audio=on
sudo nano /etc/lirc/hardware.conf
# /etc/lirc/hardware.conf
#
# Arguments which will be used when launching lircd
LIRCD_ARGS="--uinput"

#Don't start lircmd even if there seems to be a good config file
#START_LIRCMD=false

#Don't start irexec, even if a good config file seems to exist.
#START_IREXEC=false

#Try to load appropriate kernel modules
LOAD_MODULES=true

# Run "lircd --driver=help" for a list of supported drivers.
DRIVER="default"
# usually /dev/lirc0 is the correct setting for systems using udev
DEVICE="/dev/lirc0"
MODULES="lirc_rpi"

# Default configuration files for your hardware if any
LIRCD_CONF=""
LIRCMD_CONF=""

sudo /etc/init.d/lirc restart
sudo reboot now

Testen von lirc

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

Die Ausgabe sollte wie folgt aussehen

Mehr von simon42  SML Stromzähler mit Home Assistant auslesen (lokal) - PowerFox Alternative
mode2 -d dev lirc0

Falls keine Codes zu sehen sind, bedeutet das, dass der Empfänger nicht richtig angeschlossen oder falsch gelötet wurde.
Hat allerdings alles bis hier funktioniert, können wir das Sniffen mit STRG+C abbrechen.

Erstellen der Fernbedienungskonfiguration

Nun müssen wird die Fernbedienung des Gerätes anlernen, das wir später steuern möchten. In meinem Fall die Fernbedienung meines Phillips Sound Systems.

Phillips Fernbedienung

Die interne Namensgebung der Tasten einer anzulernenden Fernbedienung ist durch lirc vorgegeben. Mit dem Kommando

irrecord –list-namespace kann man sich die aktuell verfügbaren Tastennamen anzeigen lassen. Die Einschalttaste der Fernbedienung sollte man also, damit die Namensgebung halbwegs sinnvoll ist, mit dem von lirc vorgegebenen Tastennamen KEY_POWER belegen. Man könnte der Einschalttaste aber theoretisch auch jeden anderen Namen zuweisen… Unten sieht man wie ich dein Einschaltknopf meine Fernbedienung angelernt habe. Dies funktioniert für jede Fernbedienung nach dem gleichen Schema.

sudo su -
/etc/init.d/lirc stop
irrecord -d /dev/lirc0 ~/NAMEDERFERNBEDIENUNG.conf
Lirc Continue
Die erste Meldung können wir mit Enter bestätigen
Sobald man dieses Fenster mit Enter bestätigt, zielt man anschließend mit der Fernbedienung auf den Infrarotempfänger und drückt möglichst willkürlich tasten, bis die nächste Eingabeaufforderung zu sehen ist.
Und nach einer Weile…
…kann man den Namen für die erste anzulernende Taste wählen. Ich wähle hier die Ein/Ausschalttaste der Fernbedienung.
Nachdem man die Taste gedrückt gehalten hatte und das Signal vom Raspberry empfangen wurde, kann man die nächste taste anlernen
Wenn alle Tasten die man über den Raspberry senden möchte angelernt wurden, kann man statt den Namen für die nächste Taste einzugeben, einfach Enter drücken.
Danach muss man eine Beliebige Taste der Fernbedienung so schnell wie möglich drücken…
..und die Konfigurationsdatei wird angelegt

Fernbedienungs-Konfiguration in lircd.conf einfügen

Nun muss die Standardkonfigurationsdatei lircd.conf durch eure eben erstellte ersetzt werden, da der dienst sonst nicht fehlerfrei startet. Dazu gebt ihr folgende Befehle ein

rm /etc/lirc/lircd.conf
cp NAMEDERFERNBEDIENUNG.conf /etc/lirc/lircd.conf
# Please make this file available to others
# by sending it to <lirc@bartelmus.de>
#
# this config file was automatically generated
# using lirc-0.9.0-pre1(default) on Tue Apr 18 21:32:58 2017
#
# contributed by 
#
# brand:                       /root/NAMEDERFERNBEDIENUNG.conf
# model no. of remote control: 
# devices being controlled by this remote:
#

begin remote

  name  Phillips
  bits           21
  flags RC6|CONST_LENGTH
  eps            30
  aeps          100

  header       2702   841
  one           484   409
  zero          484   409
  gap          107818
  toggle_bit_mask 0x10000
  rc6_mask    0x10000

      begin codes
          KEY_POWER                0x0EEFF3
      end codes

end remote

2Te Fernbedienungskonfiguration an lircd.conf anfügen

Falls ihr mehr als eine Konfigurationsdatei hab, könnt ihr diese mit folgendem Befehl an die bestehende Konfigurationsdatei lircd.conf anfügen

cat NAMEDERFERNBEDIENUNG2.conf >> /etc/lirc/lircd.conf

Testen der Infrarot Kommandos

Zuerst den anfänglich beendeten Dienst lirc wieder starten

/etc/init.d/lirc start

Nun können wir mit dem Kommando

irsend SEND_ONCE NAMEDERFERNBEDIENUNG KEY_POWER

einmalig den befehl zum An/Ausschalten des Gerätes schicken. In meinem Fall gebe ich also ein irsend SEND_ONCE Phillips KEY_POWER

Mehr von simon42  Wie du einen smarten Bewässerungscomputer selber bauen kannst

Hinweis: Zum Testen sollte man die Infrarot-LED des Raspberrys am besten direkt auf das Gerät richten.

Fehlerbehebung

Falls sich bei euch nach dem erfolgreichen ausführen des Kommandos irsend SEND_ONCE NAMEDERFERNBEDIENUNG KEY_POWER  nichts tut, hier eine kleine Guide zur Fehlerbehebung.

Sendet die Infrarot-LED Signale?

Dies testet ihr am besten, indem ihr den Raum abdunkelt euch eine Digitalkamera oder ein Smartphone nehmt, und die Diode der Fernbedienung durch die Kamera anguckt und auf der Fernbedienung tasten drückt. Wenn ihr auf dem Kameradisplay die Diode leuchten seht, wisst ihr sicher dass der Sensor eurer Kamera Infrarot sensibel ist.

Nun richtet ihr die Kamera auf die IR-Diode des Raspberry und führt das Kommando irsend SEND_START NAMEDERFERNBEDIENUNG KEY_POWER   aus. Dieses Kommando sendet über einen bestimmten Zeitraum dauerhaft das IR Signal, die LED sollte, durch eure Kamera betrachtet, schwach leuchten.

  • Falls die IR-LED nicht leuchtet, ist beim verlöten etwas schiefgegangen
  • Falls die IR-LED leuchtet, nimmt euer Gerät die Befehle nicht an (dann bitte die Fernbedienungskonfiguration neu erstellen) oder ist außer Reichweite.

Verpasse keine Tipps!

Ich senden keinen Spam! Erfahre mehr in der Datenschutzerklärung.

Transparenz: In diesem Artikel sind Partnerlinks enthalten. Durch einen Klick darauf ge­lan­gt ihr direkt zum Anbieter. Solltet ihr euch dort für einen Kauf entscheiden, erhalte ich ei­ne kleine Provision. Für euch ändert sich am Preis nichts & Partnerlinks haben keinerlei Einfluss auf meine Berichterstattung. Vielen Dank für deine Unterstützung!

Gründer von simon42. Schreibt hier ehrlich und leidenschaftlich über Smart Home und Technik Themen, denn das Zuhause wurde bereits von Sprachassistenten übernommen und die Kontrolle abgegeben 😁

7 Gedanken zu „Raspberry Pi als Infrarot Sender + Empfänger nutzen“

  1. Hallo Simon,

    Danke für die Anleitung. Ich habe vor den RB als Controller für einen AVR einen TV (via IR) und als WOL (Alexa gesteuert) aufzubauen. Wie ist die Sendeleistung bzw. der Winkel des IR-Senders, habe vor den RB3 unter den Fernseher zu stellen, der AVR steht im Lowboard 2. Etagen tiefer. Kann ich mit dem Sender beide Geräte ohne Probleme erreichen oder muss der Sender auf die Geräte ausgerichtet sein ?

    Danke und
    Gruß
    Nin-

    Antworten
    • Hi Nin,
      Infrarot-Dioden haben einen ziemlich engen Sende/Abstrahlwinkel. Ich denke, für dein Projekt wirst du mindestens eine zweite Diode an deinem Raspberry Pi brauche. Könnte auch mit einer funktionieren, ist aber meiner Einschätzung nach mehr als unwahrscheinlich. Bei mir klappt es am besten, wenn die Diode zumindest in die Richtung des Gerätes zeigt. Genau wie ein Laserpointer muss es zwar nicht sein, aber die Richtung muss schon in etwa stimmen.
      Ich hoffe das hilft dir weiter 🙂

    • Hallo Simon,

      schade eigentlich, da muss ich dann wohl den Sender irgendwo zwischen die Geräte verlängeren und montieren. Der RB soll später auch für ein DIY Ambilight benutzt werden und ist daher dann relativ dicht am Fernseher dran. Aber immerhin weiß ich dann schon einmal bescheid, hätte ja sein können das der Sender um sich herum in Kugelform strahlen kann. 🙂

      Danke

      Gruß Nin-

    • Hallo Simon,

      Zur Info!
      habe das ganze gerade mal einfach mit der Fernbedienung des AVR ausgetestet. Fernbedienung funktioniert auch im winkel von 110° von der Front nach hinten weg (Abstand 60cm) einwandfrei, denke damit hat sich die wichtigste Frage dann auch erübrigt. Vielleicht ist das für dich ja auch noch einmal interessant 🙂

      LG Nin-

  2. RPi 3 empfehlen und als optionale Hardware ein Wifi Dongle???
    Klar… ist ja nicht so als hätte der RPi 3 ein eingebautes Wifi Modul o_O

    Antworten

Schreibe einen Kommentar

Send this to a friend