IR-Empfänger und Fernbedienung: ferngesteuerte Projekte mit Arduino
Wie funktioniert ein Infrarot-Empfänger (IR)? Anschluss des VS1838B, Tastencodes mit der Bibliothek IRremote lesen, NEC-Protokoll, LED und Relais per Fernbedienung steuern, IR mit einer IR-LED senden, ESP32 und Pico.
Fernbedienungen von Fernseher, Klimaanlage und Stereoanlage arbeiten mit Infrarotlicht (IR). Gönnst du deinem Arduino einen IR-Empfänger für wenige Cent, kannst du die Tasten fast jeder Fernbedienung im Haus lesen und damit Lampen, LEDs, Motoren oder Musik steuern. Kein Koppeln, keine App, kein Internet – einfach die Fernbedienung auf das Board richten und eine Taste drücken. Der einfachste und günstigste Weg zu deinem ersten ferngesteuerten Projekt.

Wie funktioniert eine Infrarot-Fernbedienung?
Die IR-LED vorne an der Fernbedienung sendet Licht mit etwa 940 nm Wellenlänge, das das Auge nicht sieht. Das Licht leuchtet nicht dauerhaft, sondern wird auf ein Trägersignal moduliert, das 38.000-mal pro Sekunde blinkt. Die Schaltung im Empfänger beachtet nur Licht, das mit genau dieser Frequenz flackert, deshalb können Sonne und Lampen das Signal nicht stören. Der Empfänger macht daraus saubere digitale Pulse und zieht seinen Ausgang auf LOW, solange das Signal anliegt.
Welche Taste gedrückt wurde, steckt in der Länge der Pulse und der Pausen dazwischen. Dafür gibt es verschiedene "Sprachen", die Protokolle: Am verbreitetsten ist NEC (ein Adress- und ein Befehlsbyte), häufig sind auch Sony, RC5 (Philips) und Samsung. Zum Glück übernimmt die Bibliothek das Dekodieren; du liest einfach den Code der Taste.
Technische Daten (VS1838B)
| Merkmal | Wert |
|---|---|
| Trägerfrequenz | 38 kHz |
| Wellenlänge | Etwa 940 nm |
| Versorgung | 2,7–5,5 V |
| Reichweite | 8–10 m (je nach Batterie der Fernbedienung und Winkel) |
| Empfangswinkel | Etwa ±35° |
| Ausgang | LOW, solange ein Signal anliegt (Active LOW) |
| Pins | OUT, GND, VCC |
Anschluss des IR-Empfängers
| Empfänger-Pin | Arduino Uno | ESP32 | Raspberry Pi Pico |
|---|---|---|---|
| OUT (S) | D2 | GPIO 15 | GP16 |
| GND (–) | GND | GND | GND |
| VCC (+) | 5V | 3V3 | 3V3 |
Tastencodes mit der Bibliothek IRremote lesen
Suche im Bibliotheksverwalter nach IRremote und installiere die Bibliothek von Armin Joachimsmeyer. Der folgende Code funktioniert mit Version 4.x; bei jedem Tastendruck gibt er Protokoll, Adresse und Befehlscode im seriellen Monitor aus. Siehst du in älteren Beispielen im Netz Befehle wie IRrecv und decode(&results), gehören diese zu einer alten Version.
1#include <IRremote.hpp>
2
3const int IR_PIN = 2;
4
5void setup() {
6 Serial.begin(9600);
7 IrReceiver.begin(IR_PIN, ENABLE_LED_FEEDBACK); // sinyal gelince dahili LED yanar / onboard LED blinks on signal
8}
9
10void loop() {
11 if (IrReceiver.decode()) {
12 Serial.print("Komut / command: 0x");
13 Serial.println(IrReceiver.decodedIRData.command, HEX);
14 IrReceiver.printIRResultShort(&Serial); // protokol ve adres / protocol and address
15 IrReceiver.resume(); // sonraki tuşa hazırlan / ready for the next key
16 }
17}Drück die Tasten deiner Fernbedienung nacheinander und notiere die Codes. Die kleinen Fernbedienungen mit 21 Tasten aus Bausätzen nutzen meist das NEC-Protokoll, ihre Codes sehen meist wie unten aus; prüfe sie trotzdem mit deiner eigenen Fernbedienung:
| Taste | Befehl (NEC) |
|---|---|
| CH- | 0x45 |
| CH | 0x46 |
| CH+ | 0x47 |
| PREV | 0x44 |
| NEXT | 0x40 |
| PLAY/PAUSE | 0x43 |
| VOL- | 0x07 |
| VOL+ | 0x15 |
| 0 | 0x16 |
| 1 | 0x0C |
| 2 | 0x18 |
| 3 | 0x5E |
LED und Relais per Fernbedienung steuern
Kennst du die Codes, kannst du jeder Taste eine Aufgabe geben. Im Beispiel unten schaltet die Taste "1" ein Relais um, VOL+ und VOL- stellen die Helligkeit einer LED per PWM ein. Hältst du eine Taste gedrückt, sendet die Fernbedienung Wiederholsignale; bei Ein-Aus-Funktionen musst du diese ignorieren, sonst schaltet das Relais ständig hin und her. Zum Relais siehe Was ist ein Relaismodul?
1#include <IRremote.hpp>
2
3const int IR_PIN = 2;
4const int LED_PIN = 9; // PWM pini / PWM pin
5const int RELAY_PIN = 7; // aktif LOW röle / active-LOW relay
6
7bool relayOn = false;
8int brightness = 128;
9
10void setup() {
11 pinMode(LED_PIN, OUTPUT);
12 pinMode(RELAY_PIN, OUTPUT);
13 digitalWrite(RELAY_PIN, HIGH);
14 IrReceiver.begin(IR_PIN);
15}
16
17void loop() {
18 if (!IrReceiver.decode()) return;
19 bool repeat = IrReceiver.decodedIRData.flags & IRDATA_FLAGS_IS_REPEAT; // tuş basılı tutuluyor / key held down
20 switch (IrReceiver.decodedIRData.command) {
21 case 0x0C: // "1": röleyi aç-kapa / toggle the relay
22 if (!repeat) {
23 relayOn = !relayOn;
24 digitalWrite(RELAY_PIN, relayOn ? LOW : HIGH);
25 }
26 break;
27 case 0x15: // VOL+: daha parlak / brighter
28 brightness = min(brightness + 15, 255);
29 break;
30 case 0x07: // VOL-: daha sönük / dimmer
31 brightness = max(brightness - 15, 0);
32 break;
33 }
34 analogWrite(LED_PIN, brightness);
35 IrReceiver.resume(); // sonraki tuşa hazırlan / ready for the next key
36}IR-Signale mit dem Arduino senden
Der Arduino kann nicht nur Fernbedienungen zuhören, sondern selbst eine sein. Schließ eine IR-LED (940 nm) über einen 100-Ω-Widerstand an Pin 3 des Uno an; für mehr Reichweite steuerst du die LED über einen Transistor. Lies zuerst mit dem Code oben die Fernbedienung des Geräts aus, das du steuern willst, um Adresse und Befehl zu kennen, und sende dann denselben Code vom Arduino:
1#include <IRremote.hpp>
2
3const int IR_SEND_PIN = 3; // IR LED, 100 Ω direnç ile / IR LED with a 100 Ω resistor
4
5void setup() {
6 IrSender.begin(IR_SEND_PIN);
7}
8
9void loop() {
10 IrSender.sendNEC(0x00, 0x46, 0); // adres, komut, tekrar sayısı / address, command, repeats
11 delay(5000);
12}IR mit ESP32 und Raspberry Pi Pico
Der VS1838B arbeitet problemlos mit 3,3 V und kann direkt an ESP32 und Pico. Die Bibliothek IRremote unterstützt den ESP32; den Empfänger schließt du an einen beliebigen Eingangspin wie GPIO 15 an. Mit einem ESP32 kannst du Tastendrücke per WLAN an andere Geräte weiterleiten oder eine "smarte Fernbedienung" bauen, die Befehle vom Handy per IR-LED an den Fernseher schickt. Für MicroPython auf dem Pico nutzt man die Bibliothek micropython_ir von Peter Hinch:
1from machine import Pin
2from ir_rx.nec import NEC_8 # micropython_ir kütüphanesi / library (Peter Hinch)
3import time
4
5def on_key(command, address, ctrl):
6 if command >= 0: # negatif değerler tekrar ya da hata / negatives mean repeat or error
7 print("Komut / command: 0x{:02X}".format(command))
8
9ir = NEC_8(Pin(16, Pin.IN), on_key) # GP16 → OUT
10
11while True:
12 time.sleep(1)Projektideen mit IR-Empfänger und Fernbedienung
- Lampe mit Fernbedienung: mit einer freien Taste der TV-Fernbedienung eine Netzlampe über ein Relais einschalten.
- Farbfernbedienung: mit den Zifferntasten die Farbe einer RGB-LED ändern.
- Ferngesteuertes Roboterauto: ein Auto, dessen zwei Motoren du mit den Pfeiltasten lenkst.
- Melodiebox: jeder Zifferntaste eine andere Melodie zuordnen; für den Ton siehe Was ist ein Buzzer?
- Lernende Fernbedienung: die Codes anderer Fernbedienungen aufzeichnen und von einem einzigen Arduino senden.
- Codeschloss: bei der richtigen Tastenfolge ein Schloss mit einem Servo öffnen.
Typische Fehler und ihre Lösungen
- Es kommen gar keine Codes: Das OUT-Kabel steckt an einem anderen Pin als im Code, die Beinchen des Empfängers sind vertauscht oder die Batterie der Fernbedienung ist leer; prüfe die Fernbedienung mit der Handykamera.
- Der Beispielcode kompiliert nicht: Alte Beispiele im Netz sind für IRremote 2.x; Version 4.x nutzt IrReceiver.begin() und IrReceiver.decode().
- Zufällige Codes erscheinen: Der Empfänger zeigt vielleicht in die direkte Sonne oder auf eine Leuchtstofflampe; stell ihn in den Schatten.
- Die Ein-Aus-Taste schaltet doppelt: Wiederholsignale werden nicht ignoriert; prüfe das Flag IRDATA_FLAGS_IS_REPEAT.
- tone() oder PWM an Pin 3 und 11 spinnen: Beim Uno teilen sie sich mit IRremote denselben Timer (Timer2).
- Sehr geringe Reichweite beim Senden mit IR-LED: Steuere die LED über einen Transistor mit höherem Strom und richte sie auf das Gerät aus.
Ein IR-Empfänger ist der einfachste und günstigste Weg zu drahtloser Steuerung – selbst alte Fernbedienungen aus der Schublade bekommen in deinen neuen Projekten ein zweites Leben. In der BlueGrays-App findest du Projekte zum Auslesen von Fernbedienungscodes, zum Schalten von LEDs, zum Abspielen von Melodien, zur Steuerung einer Netzlampe und eine ESP32-Universalfernbedienung mit Schaltplänen und Code.
Häufige Fragen
Aus wie vielen Metern empfängt ein IR-Empfänger?
Empfänger wie der VS1838B empfangen mit einer guten Fernbedienung bei freier Sicht bis zu 8–10 Meter. Mit schwächerer Batterie, größerem Winkel und hellerer Umgebung sinkt die Reichweite.
Funktioniert jede Fernbedienung mit dem Arduino?
Fast alle Infrarot-Fernbedienungen mit 38 kHz funktionieren, und IRremote dekodiert die meisten gängigen Protokolle. Bei Fernbedienungen mit 36, 40 oder 56 kHz kann die Reichweite kürzer sein. Funkfernbedienungen (etwa 433 MHz) lassen sich mit einem IR-Empfänger nicht lesen.
Funktioniert ein IR-Empfänger im Sonnenlicht?
Der Filter im Empfänger blockiert gleichmäßiges Licht weitgehend, aber direkte Sonne kann den Empfänger übersteuern und die Reichweite stark verringern. Draußen gehört der Empfänger in den Schatten oder in ein kleines Schutzröhrchen.
Funktioniert eine IR-Fernbedienung durch die Wand?
Nein. Infrarotlicht geht nicht durch Wände; zwischen Fernbedienung und Empfänger muss Sichtverbindung oder eine Fläche bestehen, an der das Licht reflektiert. Um ein Gerät in einem anderen Raum zu steuern, nutzt man Funkmodule oder WLAN.
Welche Version von IRremote soll ich verwenden?
Nimm die aktuelle Version 4.x mit IrReceiver.begin(), IrReceiver.decode() und decodedIRData.command. Die in älteren Beispielen gezeigten Befehle IRrecv irrecv(pin) und decode(&results) gehören zu Version 2.x und sind mit der neuen Version nicht kompatibel.
Kann ich mein Handy als Fernbedienung nutzen?
Manche Android-Handys haben einen eingebauten IR-Sender und funktionieren mit der passenden App als Fernbedienung. Hat dein Handy kein IR, richtest du auf einem ESP32 eine Webseite ein und schickst die Befehle vom Handy über eine IR-LED an das Gerät.
Projekte, die du danach bauen kannst
Alle Projekte ansehen
IR-Fernbedienungscodes auslesen
Das Projekt, das die HEX-Werte der Infrarotsignale von der Fernbedienung mit dem IR-Empfänger-Modul im Serial Monitor liest. Lehrt die Verwendung der IRremote-Bibliothek.

Led ein- und ausschalten mit IR-Empfänger und Fernbedienung
IR-Steuerungsprojekt, das 3 LEDs unabhängig voneinander mit verschiedenen Tasten der Fernbedienung ein- und ausschalten kann. Lehrt passende Fernbedienungscodes und die Steuerung mehrerer Ausgänge.

Melodien abspielen mit IR-Fernbedienung und Summer
Projekt, das Mario-, Muttertags- und Neujahrsmelodien mit Summer abspielt, wenn verschiedene Tasten der IR-Fernbedienung gedrückt werden. Es kombiniert Funktionsauslösung und Melodieprogrammierung mit

220-V-Glühbirne mit Fernbedienung schalten
Projekt zum Ein- und Ausschalten einer 220-V-Glühbirne über ein Relais mit den Tasten Power und Mute der IR-Fernbedienung. Es kombiniert Infrarotsteuerung mit Hochspannungsschaltung.

Laser-Sicherheitssystem
Fortschrittliches Sicherheitssystem, das bei Unterbrechung des Laserstrahls einen Alarm auslöst und per Drucktaste oder IR-Steuerung zurückgesetzt werden kann. Lehrt mehrere Eingangsquellen und Status

Fernbedienung mit ESP32-IR-Empfänger (mit LCD-Display)
In diesem Projekt erfassen wir mithilfe des TSOP4838-IR-Empfängermoduls Signale von Fernsehern, Klimaanlagen oder beliebigen Infrarot-Fernbedienungen mit dem ESP32. Mit der IRremote v4-Bibliothek zeigen wir den eindeutigen Code jeder Taste auf dem I2C-LCD-Display an. Anschließend nutzen wir diese Codes, um eine LED per Fernbedienung ein- und auszuschalten und ihre Helligkeit einzustellen. Ein guter Einstieg, um alte Fernbedienungen in Smart-Home-Steuerungen zu verwandeln.

ESP32 IR-Universalfernbedienung (IR-Empfänger + Fernbedienung + 3 LEDs + Summer + OLED)
Mit dem ESP32 kannst du eine fertige IR-Fernbedienung auslesen und dein eigenes Gerät steuern! In diesem Projekt erfassen wir mit einem Infrarotempfänger (NEC-Protokoll, 38 kHz) die Signale einer IR-Fernbedienung mit 20 Tasten. Für jede Taste haben wir eine andere Aktion definiert: Die Tasten 1/2/3 schalten drei separate LEDs ein und aus, die PWR-Taste schaltet alle aus, die Ziffern 4–9 sorgen für eine spezielle Anzeige auf dem OLED-Display. Auf dem SSD1306-OLED-Display werden die zuletzt gedrüc

Laser-Warnsystem
Sicherheitsprojekt, das erkennt, wenn der Laserstrahl über LDR unterbrochen wird und mit Summer und LED warnt. Es lehrt die Logik der Lichtunterbrechungserkennung mit einem Laser-LDR-Paar.
Weitere Artikel
Lerne, wie eine TV-Fernbedienung funktioniert, wie du einen IR-Empfänger an den Arduino anschließt, Tastencodes liest, Lampen und LEDs per Fernbedienung steuerst und vom Arduino aus IR-Signale sendest.

