IR Fernbedienung mit Arduino auslesen: Eigene Fernsteuerung für LEDs & Relais bauen

Statt Taster und Schalter zu verdrahten, kannst du Projekte auch ganz einfach per Infrarot-Fernbedienung steuern – die gleiche Technik, die in jedem Fernseher steckt. Mit dem IR-Fernbedienungs-Kit (Empfänger + Fernbedienung) liest du in diesem Tutorial Tastencodes aus und steuerst damit LEDs sowie ein Relais drahtlos.

Wie funktioniert Infrarot-Fernsteuerung?

Eine IR-Fernbedienung sendet beim Tastendruck eine kurze Folge von Infrarot-Lichtimpulsen, die mit ca. 38 kHz moduliert sind – das unterscheidet das Nutzsignal von Störlicht wie Sonnenlicht oder Glühbirnen. Der passende IR-Empfänger (im Kit meist ein TSOP- oder VS1838B-kompatibler Baustein) demoduliert dieses Signal automatisch und gibt es als einfaches digitales An/Aus-Muster an den Mikrocontroller weiter.

Jede Taste sendet dabei einen eigenen, festen Hexadezimal-Code (z. B. 0xFF6897 für die "0"-Taste bei vielen gängigen Fernbedienungen im NEC-Protokoll). Mit der Arduino-Bibliothek IRremote musst du dich um das Timing und die Protokoll-Dekodierung nicht selbst kümmern – sie liefert dir direkt den erkannten Code, den du dann in deinem Sketch auswertest.

Was du brauchst

Bauteil Menge ca. Preis Link
IR Fernbedienung Modul Kit (Empfänger + Fernbedienung) 1 Set ab 2,49 € Zum Produkt
UNO R3 Board 1x ab 4,99 € Zum Produkt
1-Kanal Relais KY-019 1x (für Projekt 3) ab 1,09 € Zum Produkt
3mm LED Sortiment 1 Box ab 4,49 € Zum Produkt
600x Widerstände-Sortiment 1 Set ab 5,99 € Zum Produkt
Breadboard 400 Kontakte 1x ab 3,49 € Zum Produkt

Schaltungsaufbau

IR-Empfänger Pin UNO R3 Pin Funktion
S / OUT Pin 11 Digitales IR-Signal
+ (VCC) 5V Spannungsversorgung
- (GND) GND Masse

Für Projekt 2 hängst du eine LED mit passendem Vorwiderstand (aus dem Widerstände-Set, ca. 220Ω) an einen PWM-fähigen Pin (z. B. Pin 9). Für Projekt 3 kommt das Relais an IN = Pin 7 hinzu.

Installiere zunächst die Bibliothek IRremote (Version 3 oder 4) über den Bibliotheksverwalter der Arduino IDE, bevor du die folgenden Sketche hochlädst.

Code 1: Tastencodes der Fernbedienung auslesen

Bevor du irgendetwas steuerst, musst du wissen, welchen Code jede Taste deiner Fernbedienung sendet. Dieser Sketch gibt jeden empfangenen Code auf der seriellen Konsole aus.

#include <IRremote.hpp>

const int PIN_IR_EMPFAENGER = 11;

void setup() {
  Serial.begin(9600);
  IrReceiver.begin(PIN_IR_EMPFAENGER, ENABLE_LED_FEEDBACK);
  Serial.println("Bereit - druecke eine Taste auf der Fernbedienung");
}

void loop() {
  if (IrReceiver.decode()) {
    Serial.print("Code: 0x");
    Serial.println(IrReceiver.decodedIRData.decodedRawData, HEX);
    IrReceiver.resume();
  }
}

So funktioniert's

Öffne den seriellen Monitor mit 9600 Baud, drehe die Fernbedienung Richtung Empfänger und drücke nacheinander alle Tasten, die du später nutzen willst. Notiere dir die ausgegebenen Hex-Codes – sie sind je nach Fernbedienungsmodell unterschiedlich, deshalb funktioniert dieser erste Schritt nicht übersprungen werden.

Code 2: LED per Fernbedienung dimmen

Mit den notierten Codes aus Code 1 steuerst du jetzt die Helligkeit einer LED über die Pfeiltasten (oder zwei beliebige Tasten deiner Wahl – ersetze die Hex-Werte durch deine eigenen).

#include <IRremote.hpp>

const int PIN_IR_EMPFAENGER = 11;
const int LED_PIN = 9;

// Ersetze diese Codes durch die deiner eigenen Fernbedienung (siehe Code 1)!
const unsigned long CODE_HELLER = 0xFF906F;
const unsigned long CODE_DUNKLER = 0xFFE01F;

int helligkeit = 128;

void setup() {
  Serial.begin(9600);
  pinMode(LED_PIN, OUTPUT);
  IrReceiver.begin(PIN_IR_EMPFAENGER, ENABLE_LED_FEEDBACK);
}

void loop() {
  if (IrReceiver.decode()) {
    unsigned long code = IrReceiver.decodedIRData.decodedRawData;

    if (code == CODE_HELLER) {
      helligkeit = min(255, helligkeit + 20);
    } else if (code == CODE_DUNKLER) {
      helligkeit = max(0, helligkeit - 20);
    }

    analogWrite(LED_PIN, helligkeit);
    Serial.print("Helligkeit: ");
    Serial.println(helligkeit);

    IrReceiver.resume();
  }
}

Wiederholtes Halten einer Taste sendet bei den meisten Fernbedienungen einen speziellen "Repeat"-Code statt des Original-Codes erneut – für ein einfaches Dimmen reicht der hier gezeigte Ansatz mit Einzeldruck aber völlig aus.

Code 3: Relais per Fernbedienung ein-/ausschalten

Als drittes Beispiel schaltest du ein Gerät über das Relais per Tastendruck komplett ein oder aus – mit einer einzigen Taste als Toggle-Schalter.

#include <IRremote.hpp>

const int PIN_IR_EMPFAENGER = 11;
const int PIN_RELAIS = 7;

// Ersetze diesen Code durch den deiner Power-Taste (siehe Code 1)!
const unsigned long CODE_POWER = 0xFFA25D;

bool relaisIstAn = false;

void setup() {
  Serial.begin(9600);
  pinMode(PIN_RELAIS, OUTPUT);
  digitalWrite(PIN_RELAIS, LOW);
  IrReceiver.begin(PIN_IR_EMPFAENGER, ENABLE_LED_FEEDBACK);
}

void loop() {
  if (IrReceiver.decode()) {
    unsigned long code = IrReceiver.decodedIRData.decodedRawData;

    if (code == CODE_POWER) {
      relaisIstAn = !relaisIstAn;
      digitalWrite(PIN_RELAIS, relaisIstAn ? HIGH : LOW);
      Serial.println(relaisIstAn ? "Relais AN" : "Relais AUS");
    }

    IrReceiver.resume();
  }
}

Der Toggle-Mechanismus merkt sich den letzten Zustand in relaisIstAn und kehrt ihn bei jedem Druck auf die Power-Taste um – genau wie beim Ein-/Ausschalter eines Fernsehers.

Praxisprojekte

📺 Universalfernbedienung: Da du beliebige Codes zuordnen kannst, funktioniert auch eine alte TV- oder HiFi-Fernbedienung aus der Schublade als Steuerung für deine Projekte.

💡 Lichtsteuerung kombinieren: Verbinde dieses Tutorial mit unserem Relais-Tutorial, um Lampen oder Pumpen komplett kabellos zu schalten.

🎵 Sound per Knopfdruck: Kombiniere die IR-Fernbedienung mit einem MP3-Modul, um bestimmte Sounds oder Ansagen per Tastendruck abzuspielen.

Häufige Fehler

⚠️ Kein Code wird erkannt: Prüfe, ob der Empfänger richtig gepolt ist (VCC/GND vertauscht liefert nie ein Signal) und ob die Fernbedienung wirklich mit sichtbarem Licht "blinkt", wenn du sie z. B. mit einer Handykamera anvisierst (IR ist für Kamerasensoren oft sichtbar).

⚠️ Codes ändern sich bei jedem Druck leicht: Manche Fernbedienungen nutzen ein Toggle-Bit im Protokoll. Vergleiche in diesem Fall nur die unteren Bytes des Codes statt des kompletten Werts.

⚠️ Reichweite zu gering: IR benötigt direkte Sichtlinie zum Empfänger. Reflektionen an hellen Wänden können die Reichweite sogar verbessern, direktes Sonnenlicht auf den Empfänger dagegen stört den Empfang erheblich.

📶 Baue deine eigene IR-Steuerung

Alle Bauteile für dieses Projekt findest du bei makeroo.

Kombiniere die Fernbedienung mit unserem Relais-Tutorial für eine drahtlose Lichtsteuerung.

Fazit

Mit einem günstigen IR-Empfänger und der IRremote-Bibliothek liest du Fernbedienungscodes zuverlässig aus und nutzt sie als drahtlose Steuerung für eigene Projekte. Vom reinen Code-Auslesen über das Dimmen einer LED bis zum Toggle-Schalten eines Relais zeigen die drei Codebeispiele den kompletten Einstieg.

Zurück zum Blog