Für verschiedene Anwendungen, wie z.B. das Mediacenter für den Raspberry Pi OpenELEC / KODI ist eine Steuerung via Infrarot Raspberry Pi Fernbedienung sehr nützlich. Diese kann genutzt werden um mit Kombinationen der Fernbedienung oder Infrarot LED den Pi zu steuern oder um Skripte und Anwendungen zu starten.
Zubehör
Folgendes Zubehör benutze ich:
- Infrarot Empfänger (TSOP4838 oder ähnlich)
- Infrarot LED (aus einer alten Fernbedienung ausgebaut, oder z.B. diese)
- NPN Transistor (BC547)
- Widerstände (220Ω und 4.7Ω)
- Jumper Kabel
Aufbau
- GPIO 22 an den IR Empfänger (bitte Datenblatt beachten)
- GPIO 23 als Basis des Transistors
Software – Raspberry Pi Fernbedienung
Ich benutze das Programm lirc. Der Vorteil daran ist, dass es unter Linux läuft und einfach damit zu arbeiten ist.
Also installieren wir lirc.
sudo apt-get install lirc -y
Nun müssen wir die /etc/modules
Datei bearbeiten
sudo nano /etc/modules
und ans Ende der Datei folgendes hinzufügen:
lirc_rpi
lirc_dev
Mit STRG + O und STRG + X speichern und beenden.
Nun muss noch eine weitere Datei bearbeitet werden:
sudo nano /etc/lirc/hardware.conf
Diese bekommt folgenden Inhalt:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
# /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 # 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="" |
Infrarot Empfänger testen
Um erst einmal den Empfänger zu testen, kannst du eine normale Infrarot Fernbedienung nehmen und einige Tasten drücken. Aber erst einmal muss lirc gestoppt werden:
sudo /etc/init.d/lirc stop
und getestet.
sudo modprobe lirc_rpi
Anschließend kannst du lirc mittels
mode2 -d /dev/lirc0
starten und Tasten auf der Fernbedienung drücken. Eine Ausgabe auf der Konsole sieht etwa folgendermaßen aus:
space 16777215 pulse 9007 space 4440 pulse 620 space 504 pulse 660 space 470 pulse 630 space 494 pulse 613 ...
Wenn du so etwas angezeigt bekommst, hat alles geklappt und du kannst mit STRG + C abbrechen. Solltest du nichts angezeigt bekommen, überprüfe die Verkabelung.
Raspberry Pi Fernbedienung registrieren
Wie du gesehen hast, sind die Codes einer Taste sehr kryptisch und schwer zu unterscheiden. Dafür hat lirc eine Möglichkeit die Tastencodes zu registrieren. Dazu muss zuerst lirc wieder gestoppt werden.
sudo /etc/init.d/lirc stop
Im folgenden wirst du nach der Belegung gefragt. Dies erfordert die Eingabe eines Keys. Um alle gültigen Keys anzuzeigen (du wirst sie gleich brauchen), gibst du folgendes ein:
irrecord --list-namespace
Nun nehmen wir auf. Schnapp dir also die Fernbedienung. Mit diesem Befehl speichern wir unsere Eingaben in der Konfigurationsdatei lirc-fernbedienung.conf (im Homeverzeichnis):
irrecord -d /dev/lirc0 ~/lircd-fernbedienung.conf
Hier musst du zwei mal mit Enter bestätigen, ehe es los geht. Als erstes müssen die Tasten erkannt werden. Drücke unterschiedliche Tasten für jeweils eine Sekunde, bis solch eine Meldung kommt:
Please enter the name for the next button (press to finish recording)
An dieser Stelle brauchst du die Codes, die du gerade ausgegeben bekommen hast. Ich möchte z.B. nur die Zahlen registrieren, also gebe ich KEY_0 ein (+ Enter) und drücke anschließend die 0 auf der Fernbedienung. Das muss für jede Taste, die später erkannt werden soll, wiederholt werden.
Bist du fertig, beende mit Enter (ohne Eingabe). Falls noch eine Anweisung kommt, folge dieser.
Als nächstes möchten wir der Konfiguration einen eigenen Namen geben, z.B. toshiba_remote. Dazu bearbeiten wir die Konfigurationsdatei:
sudo nano ~/lircd-fernbedienung.conf
In Zeile 17 kannst du den Namen anpassen. Mit STRG + O und STRG + X speichern und beenden.
Bevor wir unsere Konfigurationsdatei verschieben, machen wir noch ein Backup der alten Datei:
sudo mv /etc/lirc/lircd.conf /etc/lirc/lircd_original.conf
Jetzt können wir die Datei beruhigt verschieben
sudo cp ~/lircd-
fernbedienung
.conf /etc/lirc/lircd.conf
und starten anschließend lirc:
sudo /etc/init.d/lirc start
Wie man seine eigenen Codes (z.B. einer unbekannten Universalfernbedienung) einspeichert, habe ich in diesem Video gezeigt:
Infrarot LED testen
Mittels des Namen, den du gerade angegeben hast, kannst du dir die verfügbaren Befehle ausgeben lassen. Ich hatte meine Fernbedienung ja toshiba_remote genannt.
irsend LIST toshiba_remote ""
Anschließend kann man einen der aufgelisteten Befehle senden:
irsend SEND_ONCE toshiba_remote KEY_0
Indem man ein paar Optionen setzt, kann man auch Befehle mehrmals hintereinander senden, z.B.
#Verringert die Lautstärke 3 Sekunden lang irsend SEND_START toshiba_remote KEY_VOLUMEDOWN; sleep 3;
irsend SEND_STOP toshiba_remote KEY_VOLUMEDOWN
Schaue dazu am besten in die Hilfe von irsend (irsend --help
)
Damit ist es nun möglich den TV anzuschalten, das Programm zu wechseln, etc.
Denkbar wäre sich so selbst eine All-in-One Raspberry Pi Fernbedienung zu bauen. Eine Fernbedienung sendet und die IR Diode sendet das entsprechende Signal an das jeweilige Gerät (z.B. Toshiba TV Fernbedienung an Sony Blueray Player).
80 Kommentare
HuHu,
im ersten Abschnitt steht „Diese kann genutzt werden um mit Kombinationen der Fernbedienung oder Infrarot LED den Pi zu steuern oder um Skripte und Anwendungen zu starten.“
Wie kann ich denn jetzt dem Pi sagen, dass er bei Tastendruck auf die Fernbedienung ein Script startet?
Hi,
dafür müsstest du z.B. ein Skript starten, welches dauerhaft auf IR Signale wartet und darauf reagiert (also eine Anwendung/Skript etc startet). Du kannst es etnweder mit
screen
im Hintergrund laufen lassen oder es im Autostart öffnen lassen.HuHu,
danke für die (unerwartet schnelle) Antwort.
Inzwischen habe ich eine andere Möglichkeit gefunden:
Eine lircrc-Datei erstellen,
sudo nano /etc/lirc/lircrc
Dort beispielsweise diesen Inhalt reinkopieren:
begin
button = Taste1
prog = irexec
config = sh /home/pi/aktion.sh
flags = quit
end
Taste1 muss eine vorhandene Taste in der Datei lircd.conf sein.
Mit
irexec /etc/lirc/lircrc
wird irexec gestartet. Wird jetzt die Taste1 auf der Fernbedienung gedrückt, startet das Script aktion.sh.
Mit der Option -d wird der Daemon im Hintergrund gestartet
irexec -d /etc/lirc/lircrc
Wenn in der Datei /etc/init.d/lirc
START_IREXEC=true
steht, startet das sogar automatisch beim nächsten Systemstart wieder mit. (Wenn die Option -d für den Daemon verwendet wurde.)
LG Simon
Hi Simon,
Danke, dass du deinen Code geshared hast. lirc hat was das angeht wirklich viele Optionen und ist für IR Anwendungen die wohl beste Lösung. Sobald ich Zeit finde werde ich deinen Code testen und ins Tutorial einfügen 🙂
LG Felix
Hallo, ich habe das Script ausprobiert klappt auch alles super, nur nach ein reboot muss ich den Daemon aber wieder manuell starten, weiß jemand eine Lösung?
Gruß Dominik
Hallo, Hallo,
brauche mal unbedingt Hilfe! Ich habe alles so aufgebaut und installiert wie oben beschrieben, mehrere Fernbedienungen ausprobiert und mit Kamera auf Signal überprüft. Keine Fehlermeldung bei Software.: Trotzdem keine Meldung auf der Konsole. Was ich nicht verstehe ist, woher weiß der RPI dass GPIO 22 als Input arbeiten soll?
Muss ich dazu noch ein Programm schreiben, um das zu definieren?
Liebe Grüße
Peter
Hi Peter,
Kann es evtl an deinem IR Empfänger liegen? Ich hatte in der Vergangenheit auch ein paar Modelle, die die Codes der normalen Fernbedienungen nicht erkannt haben.
GPIO 22/23 sind die vordefinierten GPIOs in lirc (zumindest gewesen, als ich das Tutorial geschrieben habe, sollte sich aber normalerweise nicht ändern).
LG Felix
Hallo Felix,
wahrscheinlich nicht, da ich zwei baugleiche Empfänger getestet haben. Bei beiden habe ich die Spannung während der Bedienung des IR Senders am Ausgang gemessen. Sie geht von 3,3 V auf ca. 2,4 V zurück. Da ein Multimeter nur den Mittelwert misst, kann das auf Grund der Pulsbreitenänderung durch die Modulation des 38 kHz Signals mit den Bitmustern (z.B. RC5) durchaus passen, d.h. es passiert etwas.
Welche anderen Möglichkeiten gibt es, die Funktion des TSSP4P38, der Infrarotempfänger, den ich verwende, mit dem RPI zu testen.
Karnevalistische Grüße aus Aachen
Peter
Es funktioniert!!! auf GPIO 18!
Jetzt aber ab in den Karneval
Gruß
Peter
Ja, bei mir geht es jetzt auch auf GPIO18 🙂
Ja, das liegt daran das wir den Raspberry Pi 2 benutzen und hier der Raspberry Pi 1 benutzt wurde. Um es zum laufen zu bekommen, musste ich auch GPIO 18 für den IR Empfänger nutzen und wie in einem anderen Kommentar schon erwähnt, das hier:
dtoverlay=lirc-rpi
in die /boot/config.txt am Ende einfügen.
Und außerdem GPIO 17 für den die Transmitter LED.
Also haben die Standard GPIOs sich beim raspberry pi 2 auf 17 für transmitter und 18 für Empfänger geändert.
Auch hier nachzulesen:
http://aron.ws/projects/lirc_rpi/
Hallo, noch mal eine Frage:
Ich habe jetzt durch die Probiererei alle config Dateien durcheinander gebracht und würde deshalb das LIRC noch mal neu installieren. Da ich aber blutiger Anfänger bin, weiß ich nicht, wie man LIRC wieder deinstalliert. Kann mir dabei jemand helfen?
Liebe Grüße
Peter
Hallo Peter,
versuch es mal mit
sudo apt-get remove lirc
(anstatt von remove kannst du auch purge nehmen, dadurch werden globale Konfigurationen auch entfernt).Du findest hier auch noch zusätzliche Optionen für apt-get: wiki.ubuntuusers.de/apt/apt-get
LG Felix
Hallo,
ich bekomme leider folgende Fehlermeldung:
root@raspberry:~# mode2 -d /dev/lirc0
mode2: could not open /dev/lirc0
mode2: default_init(): Device or resource busy
Hallo,
schau mal hier nach, dort wird das selbe Problem behandelt. Hilft dir das weiter?
LG Felix
Hallo,
ich habe in der /boot/config.txt folgendes hinzugefügt:
dtoverlay=lirc-rpi,gpio_in_pin=23,gpio_out_pin=22
Nun kommt die Fehlermeldung nichtmehr, aber beim Drücken von den Fernbedienungsknöpfen kommen keine Signale bei mode2 -d /dev/lirc0
Soll ich dir ein Bild von meinem Breadboard senden?
Hi ich habe alles so nach gebaut
Habe anfangs GPIO 18 als input genommen ging einwandfrei
GPIO 23 als Ausgang über einen Transistor incl Widerständen zu infrarot led
Habe eine einfache aus dem Elektronikladen gekauft
Das empfangen ging von anfang an aber das senden nicht
Habe dann dtoverlay=lirc-rpi,gpio_in_pin=23,gpio_out_pin=22 in die /boot/config.txt eingebaut.
den input auf 22 gelegt funktiniert auch nur das senden immer noch nicht
Die Sende diode leuchtet dauernd (Mit HandyCam getestet) Aber sie flackert nicht beim senden .
An GPIO 17 und 27 habe ich meine 433mhz sender & Empänger beide funktionieren einwandfrei
Nur lirc senden geht nicht.
Wie kann ich in der fehlersuche vorgehen
Danke im voraus
Also an GPIO 18 funktioniert das senden? Wenn ja ist evtl. der neue Pin (22) anders in Betrieb?
Falls es an keinem Pin funktioniert, solltest du eine andere Sende Diode versuchen und einen anderen Widerstand (schaue dazu am besten in das Datenblatt deiner IR Diode)
Du hast dich verlesen oben steht GPIO 18 als input
Output habe ich immer den GPIO 23
Hm aber wenn doch die Diode leuchtet und nur nicht flackert so wie sie soll ,dann sollte doch die hardware seite stimmen oder?
Drücke ich bei meiner normalen fb auf nen knopf dann flackert die ir diode
das sollte sie ja auch am rpi machen oder?
Oh, entschuldigung. Woher weißt du, dass der Empfänger richtig empängt? Hast du es mit einer Fernbedienung ausprobiert? Es kann ja auch sein, dass die Diode richtig sendet aber das Signal nicht richtig empfangen wird, wobei ich davon weniger ausgehe.
Hi
Ich habe nach dieser Anleitung hier alles aufgebaut.
Habe mit modprobe … die Raw daten gefunden.
Dann die Fernbedienung eingelesen .
Das hat alles super geklappt
starte ich irw und drücke eine Taste auf der Fernbedienung ,dann schreibt mir die Konsole welche Taste ich gedrückt habe.
So soll es ja auch sein.So das zum Thema Empfangen also da geht alles 100%
Richte ich jetzt die Sende LED auf die EmpfangsLED ,so zeigt irw nichts an.
Den Test hab ich mit der Handy Cam gemacht. Die IR Diode leuchtet andauernd aber es kommt nicht dieses Flackern.
MFG Kalle
Hi Felix
Ich habe alles nach dieser Anleitung aufgebaut
Hab die FB eingelesen und mit irw getestet das klappt 100%
Hab dann 3 sachen probiert
1) Diode zum TV =nix
2)Diode zum rpi Empfänger =(irw)nix
3)Diode zu Handy Cam =Lampe leuchtet permanent .
Aber kein Flackern .
Hast du schon eine andere IR Diode versucht? Es kann gut sein, dass sich dein Empfänger bzw. TV und die Sendediode nicht „vertragen“. Vielleicht ist die Diode auch defekt?
Hi ich erklär es mal anderst
Ich bin der Meinung das kein Signal an die Diode geht
Also wenn ich von der Diode sende dann muss die Empfangsdiode des RPI irgendwas empfangen
Ob die Signale die richtigen zumn Steuern meiner Geräte sind oder nicht istb erstmal egal.
Aber die Sende diode empfängt garnix
Mir kommt eine Idee gerade irw kann ja nur die signale empfangen die ich vorher angelernt habe
anderst würde irw nichts anzeigen.
Ich müsste also einmal im RAW empfangen und einmal mit dem PI senden.
Das geht aber nicht da zum Raw empfangen sudo service lirc stop und dann mod2 …..
Hm also müsste ich mir im Handy die haben ja alle IR drinn eine APP suchen die RAW signale empfängt
Richtig?
Hi,
ja das ist auch möglich. Du hast aber weiter oben geschrieben, dass du die Raw Daten der Fernbedienung bereits ausgelesen hast (was lirc ja kann). Du kannst doch auf dem selben Weg die Raw Daten der IR Diode auslesen. Falls du dort auch nichts empfängst liegt es mit Sicherheit an der Sendediode. Empfängst du etwas kannst du den Code ja mit dem Code deiner Fernbedienung vergleichen, eventuell wird der Code auch falsch gesendet.
LG Felix
Hi
Wie soll ich das anstellen mit einem Pi senden und raw daten empfangen
für das eine muss der dienst laufen und für das andere muss er beendet werden??
Wenn du den Pi über SSH steuerst kannst du z.B. zwei Sessions eröffnen und auf der einen senden, auf der anderen empfangen.
Guten Tag,
ich denke, die – im übrigen lobenswerte – Anleitung enthält einen irritierenden Fehler: im ersten Bild, dem gezeichneten Aufbau, ist offenbar kein „TSOP4838 oder ähnlich“ abgebildet, sondern ein TSOP1136 oder TSOP31236 oder SFH507 oder der von mir verwendete TSOP31238. Im nächsten Bild, dem realen Foto des Aufbaus sieht es durchaus nach einem TSOP4838 aus.
Das wäre nicht weiter schlimm, wenn nicht die Pin-Belegungen unterschiedlich wären. Beim TSOP4838 ist tatsächlich Pin1=Out, Pin2=Gnd, Pin3=VS , wie es das erste Bild zeigt – allerdings würden bei einem TSOP4838 die Pins in gleichem Abstand stehen.
Bei einem der anderen genannten Empfänger ist dagegen Pin1 (der im Bild linke) = Gnd, Pin2=VS und der abgesetzte Pin3=Out und müsste eigentlich am GPIO22 angeschlossen sein.
In dieser Weise funktioniert es bei mir auch einwandfrei. Ich habe NICHT ausprobiert, was passiert, wenn ich den TSOP31238 so anschließe, wie es das erste Bild zeigt.
Gleich noch eine Bemerkung, weil einige Antworten sich mit den vorgegebenen GPIOs 22 und 23 beschäftigen. Man kann die GPIOs frei wählen, wenn man in der Datei /etc/modules statt der Zeile lirc_rpi zum Beispiel die Zeile schreibt:
lirc_rpi gpio_in_pin=19 gpio_out_pin=21
– mit den gewünschten GPIO-Nummern statt 19 und 21
Bei neueren Systemen (ab Kernel 3.18.3) schreibt man stattdessen in die Datei /boot/config.txt die Zeile
dtoverlay=lirc-rpi,gpio_out_pin=21,gpio_in_pin=19
wieder mit den gewünschten Numern statt 21 und 19.
Hallo,
danke dafür, das Problem war, dass es kein TSOP4838 in fritzing vorhanden war, daher habe ich das ähnlichst aussehende Bauteil verwendet, da ich das Bild nur als zusätzliche Visualisierung zeigen wollte. Zugegebenermaßen habe ich nicht darauf geachtet, dass die Anschlüsse verschieden sind. Ich habe mal einen Hinweis beim Aufbau hinzugefügt, dass man das Datenblatt des jeweiligen IR Empgänger beachten soll.
LG Felix
Hallo, super Anleitung. Habe allerdings einen kleinen, aber wichtigen Fehler gefunden, an dem ich ewig gehängt bin. Im ersten Bild, ganz oben, ist der rote Draht, welcher die Strohmzufuhr zur LED gewährleistet, in der ersten Lochreihe, er muss aber, wie im unteren Bild richtig, in der 2 Reihe sein!!!
Ansonsten viiiiiiielen Dank für diese Anleitung 🙂
Hey,
du hast natürlich Recht: Ich hatte das eigentliche Bild schon vor längerem aktualisiert, nur vergessen, dass ich das Titelbild auch noch per Hand ändern muss. Hab das nun auch geändert, danke für den Hinweis 🙂
Hallo,
Ich hab alles so angeschlossen empfangen funktioniert einwandfrei. Fernbedienung einlesen hat auch gut funktioniert.
Aber am senden hapert es noch ziemlich. Irw erkennt ja die befehle die vorher eingelesen wurden und giebt dann die empfangen befehle mit namen der gedrückten taste und zugewiesenem gerätenamen aus. Wenn ich jetzt eine 2te console öffne und auf der einen irw laufen lasse und von der anderen den sende befehl gebe, müsste irw dann ja was ausgeben. tuht es aber ums verrecken nicht. Diode leuchtet unter der Handycamara wenn ich einen befehl absende aber nicht dauerhaft und sie tuht auch nur kurz leuchten aber nicht flackern wie es die von der fernbedienung macht.
Jemand eine idee?
schönen abend.
Ich habe die Vermutung, dass lirc nicht mit allen Sendedioden klar kommt. Hast du eine andere (anderes Modell) mal probiert?
Ne anderes modell hab ich noch nicht probiert. Ich verwende: http://www.conrad.de/ce/de/product/185809/IR-Emitter-875-nm-17-5-mm-radial-bedrahtet-HP-HDSL-4230-HP
hat jemand mit dieser erfahrung? Und übrigens der TV bleibt auch aus wenn ich den befehl fürs anschalten sende.
Falko
Also ich War heute mal im einschlägigen Elektronikladen in der stadt und hab mir noch eine andere Diode geholt . Das Ergebnis ist leider das gleiche. Es sollte also defenetiv eine Software frage sein. Ich bin dann langsam mit dem Latein am ende. Ich hab dann keine Idee mehr. Kann mir irgend jemand helfen?
Falko
Hi,
danke für die tolle Anleitung 🙂
Bei mir funktioniert jetzt alles soweit. Mit dem Senden hatte ich ursprünglich Probleme, nachdem ich den 4,7k Ohm Widerstand weggelassen habe und die Spannung direkt vor die LED gelegt habe, funktioniert nun alles.
Kann dabei jetzt irgendwas passieren? :/ Oder ist das kein Problem ohne den Widerstand?
Viele Grüße,
René
Mit 4,7 Kiloohm kann das auch nicht klappen. 4,7 Ohm wie oben angegeben ist richtig.
Aber auch ohne Vorwiderstand klappt es, die LED verkraftet einen sehr hohen Impulsstrom. Ob sie und der Transistor das aber lange mitmachen…?
Beste Grüße
Heinz
Hallo, Danke für die schöne Anleitung.
Funktioniert alles super. Jedoch komme ich an einem Punkt nicht mehr weiter.
Bei vergeben von einem Namen….
muss ich das wort „NAME“ in der Datei entfernen?
bekomme nur fehlermeldungen wie z.b. „unknown remote“.
Viele Grüße
Chris
Hallo,
erstmal vielen Dank für diese sehr schöne Anleitung. Sie hat mir schnell zu Erfolg verholfen.
Allerdings – auch auf die Gefahr hin mich zu blamieren – kann es sein, dass der BC547 in der Anleitung falsch herum eingebaut ist? Der (von der Beschriftungsfläche gesehen) linke PIN ist bei Dir an Masse, der rechte an VCC. Laut Datenblatt ist der Kollektor aber links, der Emitter rechts, somit sollte er denke ich andersherum eingebaut werden.
Bei mir funktionierte das Ganze zwar auch andersherum, allerdings leuchteten die LEDs nur sehr schwach. Fernsteuern war nur auf ca 1-2m möglich. Seitedem ich ihn umgedreht habe, funktioniert es viel besser und die LEDs leuchten auch viel heller (in meiner Handycam)
Viele Grüße
Tobi
Hallo,
erstmal vielen Dank für diese sehr schöne Anleitung. Sie hat mir schnell zu Erfolg verholfen.
Allerdings – auch auf die Gefahr hin mich zu blamieren – kann es sein, dass der BC547 in der Anleitung falsch herum eingebaut ist? Der (von der Beschriftungsfläche gesehen) linke PIN ist bei Dir an Masse, der rechte an VCC. Laut Datenblatt ist der Kollektor aber links, der Emitter rechts, somit sollte er denke ich andersherum eingebaut werden.
Bei mir funktionierte das Ganze zwar grundsätzlich auch wie in der Anleitung, allerdings leuchtet die LED dann nur sehr schwach. Fernsteuern war nur auf ca 1-2m möglich. Seitedem ich den BC547 umgedreht habe, funktioniert es viel besser und die LEDs leuchten auch viel heller (in meiner Handycam)
Viele Grüße
Tobi
Hallo Tobi,
vielen Dank für den Hinweis! In dem Schaltplan habe ich tatsächlich vergessen den Transistor zu drehen, tut mir leid. Ich habe es nun verbessert und aktualisiert 🙂
LG Felix
Hallo,
Ich bin noch ziemlicher Anfänger beim Raspberry Pi und habe ein Problem an dem ich hängen geblieben bin. Wenn ich den Empfänger mit „sudo modprobe lirc_rpi“ testen möchte, erhalte ich folgende Fehlermeldung: „ERROR: Could not Insert ‚lirc_rpi‘: no such device“. Was mache ich falsch?
Hallo Christoph,
hilt dir dieser Link weiter? https://github.com/OpenELEC/OpenELEC.tv/issues/3908
LG Felix
Wie kann ich mehrere Fernbedienungen einbinden?
Ich habe mir eine allgemeine RC5-Datei als lircd.conf eingebunden und der Raspi gibt auch Signale auf dem Pin (irsend)aus. Wie sähe eine lircd.conf für 2 oder mehr verschiedene Fernbedienungen aus?
Hallo,
ich habe dasselbe Problem. Weiß jemand eine Lösung hierfür? Ich möchte zwei verschiedene Fernbedienung (TV, Anlage) über LIRC/Raspi ansteuern.
Aktuell ist es mir nur möglich, mich für eine Fernbedienung zu entscheiden.
Weiß jemand eine Lösung hierfür?
VG Thomas
Hallo Felix,
ich bin eben über eine andere Internetseite auf diese hier gestoßen und finde das Thema „Pi fernsteuern“ ganz interessant, zumal ich das schon für den Windows-PC gemacht habe.
Nur bin ich etwas verwirrt. Für eine Fernsteuerung des Pis braucht man doch nur den IR-Empfänger, wozu dient also dann die IR-Diode?
Für eine Steuerung eines TVs mit einer fremden Fernbedienung bräuchte man die genauen FB-Codes des Fernsehers, oder? Einfacher wäre dann, sich eine Universal-FB zu holen.
Noch etwas: In den Kommentaren schreiben die Leute, dass die LED flackert. Das kann nicht sein, denn IR kann man nicht sehen.
Bitte kläre mich auf.
LG Holger
Hallo Holger,
der Aufbau war von mir so geplant, dass man erst seinen Fernbedienungscode ausließt und dann damit z.B. den TV steuert. Nun kann man die Sende Diode auch weg lassen und mittels der Fernbedienung den Pi steuern. Du hast hier also mehrere Möglichkeiten und kannst das für dein Projekt nutzen, was dir sinnvoll erscheint.
Es geht dabei auch nicht nur um den TV: Meine Idee war damals auch z.B. Deckenlichter (die via Infrarot schaltbar sind), Musikanlage, etc.
PS: Das mit dem Flackern konnte ich bisher nicht nachvollziehen. Bei dunklen IR Dioden kann man das Leuchten leicht sehen, ich bin bisher davon ausgegangen.
LG Felix
Guten Morgen Felix,
danke für deine schnelle Antwort. Du willst also damit automatisch über den Pi den TV oder auch andere IR-Geräte steuern.
Du schreibst im „Vorwort“: „Für verschiedene Anwendungen, wie z.B. das Mediacenter für den Raspberry Pi OpenELEC / KODI ist eine Steuerung via Infrarot Raspberry Pi Fernbedienung sehr nützlich. Diese kann genutzt werden um mit Kombinationen der Fernbedienung oder Infrarot LED den Pi zu steuern oder um Skripte und Anwendungen zu starten.“
Dafür braucht man ja die IR-Diode nicht. Deshalb auch meine Verwirrung. Ich las es so, als ob du mit der IR-LED den Pi steuern wolltest.
Für mich, der keinen TV hat und auch sonst nichts fernsteuert wäre die Anwendung „Kodi steuern“ interessant, wenn ich denn mal mein Medien-Center angehe…
Du hast in deinem Aufbaubild immer noch den Pin 15 = GPIO22 eingezeichnet. Für die neueren Lirc-Versionen ist es, wie schon in den Kommentaren beschrieben, der Pin 12 =GPIO18. Nun gibt es Anwendungen, die zwingend den GPIO18 brauchen (LCD-Anzeige). Ich habe unter „http://www.forum-raspberrypi.de/Thread-lirc-auf-anderen-gpio-port-legen“ eine Anleitung gefunden, wie man für Lirc den Pin ändern kann. Vielleicht ist das eine Anregung, die Anleitung anzupassen?
Zu den IR-LED: Ich habe, zumindest bei meinen Fernsteuerungen und IR-Dioden, noch nie ein Glimmen wahr genommen. Es kann sein, dass die LEDs ein wenig in der Wellenlänge streuen, aber das kommt mMn selten vor. Der Mensch kann Längen unter 780nm nicht mehr wahrnehmen, die IR-LEDs werden mit Wellenlängen von 840-950nm hergestellt.
LG Holger
Hallo Holger,
das Tutorial habe ich vor über zwei Jahren geschrieben, da war u.a. die Steuerung von KODI noch nicht so einfach (inzw. gibt es ja sogar eine App zum steuern etc.) und generell gab es nur wenig auf dem Gebiet. Ich werde die Infos mal updaten, danke für die Infos! An sich habe ich es zu der Zeit so umgesetzt, dass ich erst das Signal empfangen habe und dann, um zu testen ob es das richtige Signal ist, noch einmal abgesendet.
LG Felix
Kann der IR Sensor wirklich ohne weiteres an 5V angeschlossen werden? Ist das nicht gefährlich für die GPIOs? Man findet beide Varianten im Internet, 5V und 3,3V
Gruss, Lulu
Das kommt auf den IR Sensor an: Einige haben einen eingebauten Widerstand, weshalb man unbedingt das Datenblatt beachten sollte. Im Zweifel würde ich einen kleinen Vorwiderstand setzen.
Ich wollte gerne bestimmte ir Signale weiterleiten und andere dazu bringen am raspi bestimmte gpios mit relais schalten, hat da jemand eine gute Idee, dass wie man das realisieren kann? Ich finde deine Anleitung hier verdammt gut, wollte auch dafür kurz danke sagen.
Hey,
danke für das Lob 🙂
Im Grunde ist das recht einfach: Sobald du ein Signal empfängst prüfst du, ob es mit dem gewollten Signal übereinstimmt und falls ja startest du entweder ein anderes Skript/Befehl oder direkt den Code zum Ansteuerun eines Relais. Dazu habe ich auch ein kleines Tutorial gemacht, was du hier findest: Raspberry Pi: Relais-Schalter per GPIO steuern
Gibt es die Möglichkeit den Outport temporär zu ändern um 3 IR Dioden getrennt voneinander betreiben zu können?
Gruß
Holger
Willst du 3 IR Empfänger gleichzeitig betreiben? Das ist mit lirc meines Wissens nach nicht möglich 🙁
Ja, aber diese getrennt ansteuern. Aber Sender am Pi keine Empfänger am Pi
Hallo,
ich habe mir ein Linker Kit Baseboard sowie einige LinkerKit Sensoren, unter anderem ein IR Receiver gekauft. Nun ist es so das ich bisher entweder nur meine Beamer Fernbedienung auslesen lassen konnte wenn ich auf 3.3V Spannung gestellt habe (keine andere FB hat funktioniert). Stelle ich nun auf 5V und teste mittels „mode2 -d /dev/lirc0“ so laufen unaufhörlich Werte durch die Konsole obwohl ich keine Buttons drücke. So als ob mein gesamter Raum IR verstrahlt ist 😀
Was könnte den der Fehler sein?
Danke schonmal im Vorraus!
Hallo @all
ich habe ein vielleicht blos kleines Problem.
Ich wollte mit der lircd.conf einen Befehl in der .lircrc ausführen. Aber er macht nix. Er gibt mir auch kein fehler aus. Und ircat hab ich nicht ganz verstanden es zu benutzen. Wenn ich den Befehl „sudo ./send 11111 1 1“ einzeln in der Konsole ausführe funktioniert es. Und die anderen IR Befehle in der .conf funktionieren auch. irexec prozess läuft (htop).
Meine lircd.conf sieht so aus:
Meine .lircrc sieht so aus:
Seht ihr rein in den Dateien schon einen möglichen fehler. Irgendwie klappt die Verbindung zwischen lircd.conf und .lircrc Eintrag nicht.
Ich weiß einfach nicht mehr weiter.
Habe das Raspbian Jessie mit Pixel auf dem Raspi 2.
Danke schonmal.
LG QB
Hey, warum denn eigentlich der 330 Ohm Widerstand am Output? Laut Datenblatt beträgt die Spannung dort nur 100 mV, oder?
Hallo Leute,
ich habe folgendes Problem,
ich möchte meinen Receiver mit dem PI3B bedienen. Habe die FB eingelesen, alles o.K., mit ~ $ irsend list meineFB „“ zeigt er mir auch alle Key’s an. Jetzt zum Problem: mit ~ $ irsend send_start meineFB KEY_OK leuchtet keine Diode auf. Wo kann das Problem versteckt sein?
vielen Dank
Nachtrag:
habe natürlich GPIO Pin’s in der CONFIG eingetragen:
dtoverlay=lirc-rpi,gpio_out_pin=18,gpio_in_pin=22
Das Problem Hab ich auch hast du schon eine Lösung gefunden
Hallo,
vielen Dank für die sehr ausführliche Anleitung. Nutze bei mir auch den Empfänger TSOP4838 an dem Pi3 mit vollem Jessie Image. Habe das Ganze auch gut durcharbeiten können bis zum restart von Lirc (sudo /etc/init.d/lirc start) nachdem ich die Lircd.conf durch Zuweisen und Anlernen der Tasten mit Leben gefüllt habe. Also im Testmodus läuft alles wie beschrieben. Möchte ich jedoch Lirc starten bzw. restarten um anschließend irw auszuführen kommt der Fehler:
Starting lirc (via systemctl): lirc.serviceJob for lirc.service failed. See ’systemctl status lirc.service‘ and ‚journalctl -xn‘ for details.
gehe ich dem Tipp nach kommt:
root@raspberrypi:~# systemctl status lirc.service
● lirc.service – LSB: Starts LIRC daemon.
Loaded: loaded (/etc/init.d/lirc)
Active: failed (Result: exit-code) since Do 2017-05-18 23:21:34 CEST; 37s ago
Process: 868 ExecStart=/etc/init.d/lirc start (code=exited, status=2)
Mai 18 23:21:34 raspberrypi lirc[868]: /etc/init.d/lirc: 5: /etc/lirc/hardware.conf: Syntax error: newline unexpected
Mai 18 23:21:34 raspberrypi systemd[1]: lirc.service: control process exited, code=exited status=2
Mai 18 23:21:34 raspberrypi systemd[1]: Failed to start LSB: Starts LIRC daemon..
Mai 18 23:21:34 raspberrypi systemd[1]: Unit lirc.service entered failed state.
Hier die 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=““
Hat vielleicht einer eine Idee woran es liegen könnte. Bin langsam echt am verzweifeln.
Wäre super.
Vielen lieben Dank
Gruß
Arthur
Ein kleiner Nachtrag zu der Hardware.conf. vor dem uinput habe ich bei mir auf jeden Fall — und nach den Anführungsstrichen . Keine Ahnung warum das hier nicht angezeigt wird.
Gruß
Arthur
Hallo
man ne dumme Frage, Wieso benötige ich denn den Transistor und schalte nicht einfach die IR Diode an GPIO 22 als out oder so?
dann mit IRSEND Send_once ein signal senden.
Danke für die Hilfe
Thomas
Wenn du die Spannung reduzierst, geht das auch. Allerdings dürfen auf keinen Fall 5V an die GPIOs gelangen, da dies sie zerstören kann.
Hi Felix,
danke , ja habe einen Vorwiderstand an der LED.
Danke für die Antwort.
Hey,
Ich komme leider nur bis zum Testen. Mode2 funktioniert und ich bekomme Daten auf den Bildschirm.
Beim Einlernen kommt die fehler meldung: irrecord:no data for 10 secs; Bei Mode2 bekamm ich aber Daten. Vll kann mir da noch jemand weiterhelfen =)
Die Anleitung ist gut geschrieben und verständlich nur bei dem namen der Fernbedienung hackt es bei mir was ist damit gemeint du hast den namen toshiba_remote genommen das ist doch der teil in der config wo Name steht und dann /home/pi/usw kann ich da alles weg machen und da z.b. Fernbedinung 1 hinschreiben
Hallo. Ich komme hier einfach nicht weiter.
ich habe ein Script geschrieben welches das Licht anschalten soll und ein weiters zum ausschalten.
Das Script funktioniert auch . Wenn ich aber auf der FB die Taste 1 drücke kommt zwar das signal aber das Script wird nicht ausgeführt. Ich bin absoluter Anfänger.
begin
button = KEY_1
prog = irexec
config = py /home/pi/lichtan.py
flags = quit
end
begin
button = KEY_2
prog = irexec
config = py /home/pi/lichtaus.py
flags = quit
end
Hallo Markus,
diese Art von Tutorials sind leider nicht immer 1:1 anwendbar.
Man kann dennoch viel lernen und auf Basis solcher Tutorials Änderungen nach Bedarf durchführen.
Meiner Meinung nach ist die Bezeichnung der Buttons nicht glücklich gewählt. KEY_0 bis KEY_9 haben die Eigenschaft, dass beim Drücken die jeweilige Zahl übermittelt wird. Das kann man z.B. sehen, wenn man eine einfache Textdatei öffnet und die diese Taste auf der Fernbedienung drückt. Daraus folge ich, dass ein ASCI Code beim Drücken übermittelt wird. Des Weiteren ist anzunehmen, dass andere Bezeichnungen irgendwelche vordefinierten Funktionen haben. Einen Auszug, welche Namen man bei der Einrichtung benutzen darf bekommt man mit irrecord -l. Es ist aus meiner Sicht empfehlenswert nach der erfolgreichen Einrichtung, der Tastensignale sich zu überlegen ob man die Tasten umbenennt. Dazu öffnet man die Datei lirc.conf. Z.B mit dem Befehl sudo nano /etc/lirc/lircd.conf. Jetzt hat man die Möglichkeit die Namensbelegung beliebig zu ändern z.B. KEY_1 auf schalter1, schalterein, schalteraus oder sonst was. Bei vielen Tasten ist auch die Schachbretlogik eine gute Hilfe, A1 wäre die Taste links oben. Man beachte links ist der Stringname rechts der Sendecode, den man belässt. Das kann z.B. so aussehen.
begin codes
taste1 0x716
taste2 0x461
end codes
Nachdem der Name der Buttons in der Datei lirc.conf angepasst wurde sollte es in der Datei lircrc auch angepasst werden.
Nach der langen Einleitung komme ich zu den möglichen Problemen und wie man sie löst. Ein Fehler der oft übersehen wird ist, dass man das Script natürlich vorher ausprobieren sollte. Erst, wenn es am Rechner klappt, kann man schauen ob man es fernsteuern kann. Eine Kleinigkeit, aber man sollte das ausschliessen. Wenn das geklärt ist, dann sollte man schauen wie die Rechtevergabe ist. lirc.conf mit sudo bearbeiten setzt voraus, dass der Besitzer dieser Datei auch root ist. Da dein Skript zur Bedienung des Lichtes sich sich im py /home/pi/lichtaus.py befindet haben wir ein kleines Problem, sofern du das nicht beachtet hast. LÖSUNG: Du schaust dir die Rechte an und vergleichst. Dazu wählst du den Befehl ls /home/pi/lichtaus.py -lisa und bekommst z.B. sowas raus: 26214474 4 -rw-r–r– 1 pi pi 3523 Apr 18 02:16 /home/pi/lichtaus.py. Entweder du merkst dir das falls du die Rechte wieder ändern willst. Eine schnelle Methode zur vollen Rechtevergabe wäre sudo chmod 777 /home/pi/lichtaus.py. Eine weiter Möglichkeit ist noch den Besitzer zu ändern mit sudo chown /home/pi/lichtaus.py. Nach einem Neustart kann man testen ob es funktioniert. Nachtrag: Generell halte ich es nicht für klug die Datei .lircrc als root zu erstellen. Das sollte man als Benutzer machen und zwar als der Benutzer mit dem man sich anmeldet. Diese Datei sollte nicht im /etc Verzeichnis sein, sondern im Homeverzeichnis zB. /home/pi . Nachteil ist, dass, wenn mehrere Benutzer den Rechner teilen, man ein Problem hat. Hier wäre es sinnvoll, dass jeder User, sich seine .lircrc ins entsprechende Homeverzeichnis kopiert/neuerstellt und mit richtigen Rechten anpasst. Dazu wäre ein Autostart oder das Editieren der Datei .profile erforderlich. Mit dem Befehl nano ~/.profile kann man es öffnen, statt ~ kann man den exatkten Pfad angeben. Hier fügt man die Zeile /usr/bin/irexec -d hinzu und speichert es ab. Warum das Ganze? Stellt euch vor, ein User soll die Fernbedienung nutzen, andere User nicht. Stellt euch vor man definiert eine Taste, die z.B. den Browser öffnen soll. Mit dem Befehl chromium-browser geht das ohne Probleme.
begin
button = knopfinternet
prog = irexec
config = chromium-browser
end
Aber als Benutzer natürlich nicht als root! Ist die Datei .lircrc im /etc oder im /home noch dazu mit sudo erstellt, passiert erst einmal gar nichts und das ist auch gut so. Ich möchte jetzt nicht auf die Gefahren und Probleme wie Verlauf/Cookies usw. hinweisen, dass ist ein eigenes Kapitel. Es geht um das Kapitel Rechtevergabe, was sehr komplex ist und bei vielen Projekten einen Strich durch die Rechnung machen kann, obwohl alles „richtig“ erstellt wurde.
hallo,
muss die hardware.conf erst noch erstellt werden? nach der installation ist diese datei nicht vorhanden bei mir -_-
Schau dir das hier mal an: https://github.com/josemotta/IoT.Starter.Pi.Lirc
Das TuT ist für Debian Jessie geschrieben worden (Wenn ich mich nicht ganz irre)
Hat sich leider einiges geändert.
Musst selber etwas rum experimentieren oder du lädst dir die alte Jessie Version auf dein PI (was ich dir nicht empfehlen kann)
Hab jetzt ein ganzen tag gebraucht um den IR Sender zum laufen zu bekommen da ich es andauernd mit 2 Fernbedienungen versucht habe die beide leer waren 😀
Irgendwie macht das ganze TuT hier sowieso 0 sinn.
Auf dem ersten Bild ist zwischen IR Empfänger am Out kein Wiederstand
Auf dem 2. Bild wiederum schon.
Du schreibst man benötigt 220Ω und 4.7Ω Wiederstände.
Auf dem 2. Bild taucht aber auf einmal ein 330Ω Wiedersand auf?..
Also ich bin mir relativ sicher das der Empfänger ohne Wiederstand problemlos funktioniert.
Wieso hast du dort einen drauf?
Bin gerade dabei nen PCB dafür erstellen zu lassen.
Also wenn jemand Interesse hat, verkaufe welche für lau.
Da ich mindestens 10stk abnehmen muss.
Bin per Mail erreichbar: iprinz96@gmail.com
Das Problem ist, dass nicht alle Empfänger gleich sind. Manche benötigen einen Widerstand, manche nicht (steht dann im Datenblatt). Ich hatte keinen verwendet, aber nach Hinweisen in dem Schemabild einen hinzugefügt.
Hallo,
wie finde ich heraus, welche IR Empfänger überhaupt für meinen RaspberryPi 3 B geeignet sind?
Komme mit den ganzen Modell-Nr. Bezeichnungen schwer zu recht.
Vielen Dank!
Hallo, mit „mode2 -d /dev/lirc0“ wird alles angezeigt.
Mit „irrecord -d /dev/lirc0 ~/lircd-fernbedienung.conf“ werden die Punkte angezeigt und die KEY s
bestättigt.
Leider stehen in der Konfigurationsdatei nur 0er
zB. KEY_1 0x0
habe es mehrmals probiert – geht nicht.
Mit irw wir nur immer 000000000000KEY_1 angezeigt
Was mach ich falsch? Warum geht’s nicht?
MfG Helmut
Hi,
auf dem Zero hat alles geklappt, jetzt wollt ich es auf einem Pi 3 mit Buster installieren und hab bisher noch keine brauchbare Anleitung gefunden. Wer kann weiter helfen und schön mal Dank im voraus.
Moin, ich hab das Problem das er, wenn er lirc runterlädt, dass er lircd.socket nicht installiert also die Verarbeitungsebene:
raspitim@raspberrypi:~ $ sudo /etc/init.d/lircd status
* lircd.service – Flexible IR remote input/output application support
Loaded: loaded (/lib/systemd/system/lircd.service; enabled; vendor preset: enabled)
Active: failed (Result: signal) since Tue 2023-04-18 07:57:08 CEST; 29min ago
TriggeredBy: * lircd.socket
Docs: man:lircd(8)
http://lirc.org/html/configure.html
Process: 1654 ExecStart=/usr/sbin/lircd –nodaemon (code=killed, signal=SEGV)
Main PID: 1654 (code=killed, signal=SEGV)
CPU: 112ms