Skip to Content

Wie man einen ESP32 mit einer IR-Fernbedienung steuert (3 Beispiele)

Wie man einen ESP32 mit einer IR-Fernbedienung steuert (3 Beispiele)

In diesem Tutorial lernst du, wie du eine IR-Fernbedienung mit einem ESP32 verwendest. IR (Infrarot) Fernbedienungen werden häufig zur Steuerung verschiedener elektronischer Geräte wie Fernseher, DVD-Player und Klimaanlagen eingesetzt. Durch die Integration einer IR-Fernbedienung mit einem ESP32 können wir ein Smart-Home-Automatisierungssystem erstellen, bunte Beleuchtung steuern oder einen ferngesteuerten Roboter bauen.

Der ESP32 ist ein leistungsstarker Mikrocontroller mit integrierten Wi-Fi- und Bluetooth-Funktionen, was ihn zur idealen Wahl für IoT-Projekte macht. Mit Hilfe eines IR-Empfängermoduls können wir Signale von einer IR-Fernbedienung empfangen und decodieren, um verschiedene Komponenten und Geräte zu steuern.

In diesem Blogbeitrag behandeln wir die notwendigen Bauteile für dieses Projekt, verstehen, wie eine IR-Fernbedienung funktioniert, und lernen, wie man den IR-Empfänger mit dem ESP32 verbindet. Außerdem zeigen wir, wie man IR-Signale liest, eine LED steuert, dimmt und einen Summer ertönen lässt.

Also, los geht’s!

Benötigte Teile

Unten findest du die für dieses Projekt benötigten Komponenten. Wenn du bereits eine IR-Fernbedienung hast, benötigst du nur das IR-Empfängermodul, nicht das IR Remote Receiver Kit. Allerdings sind nicht alle IR-Fernbedienungen geeignet. Wenn du hingegen das Kit kaufst oder besitzt, brauchst du das IR-Empfängermodul nicht separat, da es Teil des Kits ist.

Für dieses Projekt verwende ich außerdem ein älteres ESP32-Board, das zwar veraltet ist, aber noch zu einem günstigen Preis erhältlich ist. Das ist das unten aufgeführte Modell.

ESP32 lite Lolin32

ESP32 lite

USB data cable

USB-Datenkabel

Dupont wire set

Dupont-Kabelset

Half_breadboard56a

Breadboard

Widerstands- & LED-Kit

Infrared (IR) receiver module

IR-Empfängermodul

IR Remote Receiver Kit

Aktiver Summer

Makerguides is a participant in affiliate advertising programs designed to provide a means for sites to earn advertising fees by linking to Amazon, AliExpress, Elecrow, and other sites. As an Affiliate we may earn from qualifying purchases.

Wie funktioniert eine IR-Fernbedienung

Eine IR (Infrarot) Fernbedienung ist ein Gerät, das Infrarotlicht verwendet, um Signale zur Steuerung elektronischer Geräte zu übertragen. Sie nutzt einen IR-Sender und eine IR-LED, um IR-Signale an einen IR-Empfänger zu senden:

Function of an IR Remote
Funktion einer IR-Fernbedienung

Infrarotlicht

Infrared light (IR) ist Teil des elektromagnetischen Spektrums, genau wie sichtbares Licht, Radiowellen und Mikrowellen. Es hat jedoch eine längere Wellenlänge als sichtbares Licht, weshalb es für das menschliche Auge unsichtbar ist.

IR spectrum
IR-Spektrum

Infrarotlicht wird oft für Kommunikationszwecke verwendet, da es wenig Störungen mit anderen elektronischen Geräten verursacht.

IR vs. RF Radio vs. Bluetooth

Beachte, dass IR-Kommunikation sich von RF-Radio- und Bluetooth-Kommunikation unterscheidet. Obwohl alle drei für drahtlose Kommunikation genutzt werden können, haben sie unterschiedliche Eigenschaften.

IR-Kommunikation ist auf Sichtverbindung beschränkt, das heißt, der Empfänger muss sich in direkter Sichtlinie zum Sender befinden. Sie wird häufig für Kurzstreckenkommunikation verwendet, z. B. zur Steuerung von Geräten im selben Raum.

RF-Radiokommunikation nutzt Radiowellen zur Signalübertragung. Sie hat eine größere Reichweite als IR und benötigt keine Sichtverbindung. RF-Radio wird für drahtlose Kommunikation zwischen Geräten verwendet, z. B. Fernbedienungen für Garagentore oder kabellose Tastaturen.

Bluetooth ist eine drahtlose Technologie, die im 2,4-GHz-Frequenzbereich arbeitet. Sie bietet eine größere Reichweite als IR und unterstützt bidirektionale Kommunikation. Bluetooth wird typischerweise für die Verbindung von Geräten wie Smartphones, Kopfhörern und Lautsprechern verwendet.

IR-Sender

Der IR-Sender ist im Fernbedienungskörper verborgen. Er erzeugt Signale in einem bestimmten Muster, um mit dem IR-Empfänger zu kommunizieren. Die Signale werden mit einer IR-LED in IR-Licht umgewandelt. Wenn du genau hinsiehst, kannst du vorne an der Fernbedienung meist eine klare LED erkennen. Das ist die IR-LED, die das IR-Signal aussendet.

IR remote with IR LED at the front
IR-Sender

Das am häufigsten verwendete Protokoll für IR-Kommunikation ist das NEC (Nihon Electronics Corporation) Protokoll.

NEC-Protokoll für IR-Kommunikation

Das NEC protocol definiert eine standardisierte Methode zur Codierung und Decodierung von über Infrarotsignale übertragenen Daten. Dieses Protokoll wird häufig in Unterhaltungselektronik verwendet, und die meisten IR-Fernbedienungen in deinem Haushalt nutzen es wahrscheinlich (Ausnahme sind Klimaanlagen).

Das NEC-Protokoll verwendet eine Trägerfrequenz von 38 kHz, was bedeutet, dass das Infrarotsignal mit dieser Frequenz moduliert wird. Das modulierte Signal besteht aus Infrarotlicht-Impulsen, wobei jeder Impuls eine binäre Ziffer (0 oder 1) darstellt.

Zur Datenübertragung sendet die IR-Fernbedienung eine Serie von Impulsen, wobei jeder Impuls einen Datenblock mit einer Adresse, deren Invers (Komplement), einem Befehl und dessen Invers enthält. Im Grunde ist jede Taste deiner Fernbedienung einem 32-Bit-Datenblock zugeordnet, der wie folgt codiert ist.

NEC IR-Protokoll Frame-Format
AdresseInverse der AdresseBefehlInverse des Befehls
0-7 Bits8-15 Bits16-23 Bits24-31 Bits

Die Bits des Datenblocks werden in Impulse umgewandelt, wobei ein 0-Bit als 562,5 µs High-Zeit + 562,5 µs Low-Zeit gesendet wird, und ein 1-Bit als 562,5 µs High-Zeit + 1,6875 ms Low-Zeit. Auf einem Oszilloskop sieht das Signal etwa so aus:

IR Pulses
IR-Impulse

Auf der Empfängerseite erkennt ein IR-Empfängermodul die Impulse des Infrarotlichts und demoduliert sie, um die binären Daten zu extrahieren.

IR-Empfänger

Der IR-Empfänger ist die Komponente, die die Infrarotsignale von der Fernbedienung empfängt. Er besteht aus einer Photodiode, die das eingehende Infrarotlicht erkennt und in elektrische Signale umwandelt. Unten siehst du ein typisches IR-Empfängermodul.

IR receiver module
IR-Empfängermodul

Um das NEC-Protokoll empfangen und decodieren zu können, muss der IR-Empfänger mit einem Mikrocontroller verbunden sein, der die eingehenden Signale lesen und interpretieren kann. So kann der Mikrocontroller die Tastendrücke verstehen und die gewünschten Aktionen ausführen.

Im nächsten Abschnitt zeige ich dir, wie du einen IR-Empfänger an ein ESP32-Board anschließt, um IR-Signale zu empfangen und zu decodieren. Bleib dran!

Anschluss des IR-Empfängers

Den IR-Empfänger an den ESP32 anzuschließen ist einfach. Die unten gezeigte Fritzing-Schaltung zeigt, wie es gemacht wird. Ich verwende hier ein Lolin32 lite. Allerdings funktioniert fast jedes andere ESP32-Entwicklungsboard ebenfalls.

Connecting ESP32 Lolin32 to IR receiver module
Anschluss des IR-Moduls an den ESP32

Zuerst verbinden wir den Ground-Pin (GND) des ESP32 mit der negativen Stromschiene des Breadboards, mit einem blauen Kabel. Dann verbinden wir die positive Schiene des Breadboards (markiert durch eine rote Linie) mit einem roten Kabel mit dem Pin namens 3.3V am ESP32-Board.

Da nun Strom auf dem Breadboard ist, können wir das IR-Empfängermodul anschließen. Verbinde den mit (-) markierten Pin des IR-Empfängermoduls mit einem blauen Kabel zur negativen Stromschiene des Breadboards. Dann verbinde den mit (S) für Signal markierten Pin mit Pin 4 am ESP32 (gelbes Kabel). Schließlich verbinde den verbleibenden Pin des IR-Empfängers mit einem roten Kabel zur positiven Stromschiene. Fertig!

Decodierung von IR-Signalen

Um unsere IR-Fernbedienung zu verwenden, müssen wir wissen, welche Taste welchen Code sendet. Der folgende Code hilft dir dabei. Für mehr Details siehe unser Tutorial How to use an IR receiver and remote with Arduino.

#include "IRremote.hpp"

const int irReceiverPin = 4;

void setup() {
  Serial.begin(9600);
  IrReceiver.begin(irReceiverPin , ENABLE_LED_FEEDBACK);  
}

void loop() {
  if (IrReceiver.decode()) {
    IrReceiver.printIRResultShort(&Serial);
    IrReceiver.resume();
  }
}

Es funktioniert wie folgt: Zuerst binden wir die IRremote library ein. Dann definieren wir die Konstante irReceiverPin , um der Bibliothek mitzuteilen, an welchen Pin der IR-Empfänger angeschlossen ist.

Die setup-Funktion

In der setup() Funktion starten wir die serielle Kommunikation mit einer Baudrate von 9600, was dem Arduino ermöglicht, mit dem Computer zu kommunizieren. Dann rufen wir die begin() Funktion des IrReceiver-Objekts auf und übergeben irReceiverPin und ENABLE_LED_FEEDBACK als Argumente. Das initialisiert den IR-Empfänger und aktiviert die LED-Rückmeldung am IR-Empfängermodul. Das bedeutet, du siehst ein LED-Flackern, wann immer du eine Taste auf deiner Fernbedienung drückst und das Modul das Signal erkennt.

Die loop-Funktion

In der loop() Funktion prüfen wir, ob ein Signal vom IR-Empfänger empfangen wurde. Wenn ein Signal erkannt wird, gibt die IrReceiver.decode() Funktion true zurück. In diesem Fall rufen wir IrReceiver.printIRResultShort() auf, die eine kurze Zusammenfassung des empfangenen Infrarotsignals im Serial Monitor ausgibt. Danach wird die IrReceiver.resume() Funktion aufgerufen, um den IR-Empfänger für das nächste Signal vorzubereiten.

Wenn ich zum Beispiel einige Tasten auf meiner Fernbedienung drücke, erhalte ich folgende Ausgabe im Serial monitor. Du kannst sehen, dass das NEC-Protokoll erkannt wurde und welche Adress- und Befehlswerte gesendet wurden.

Serial output with decoded IR signal command values

Decodierung meiner IR-Fernbedienung

Wenn ich den obigen Code ausführe und die Codes für die einzelnen Befehle notiere, erhalte ich folgende Zuordnung von Tasten zu Befehlen für meine IR-Fernbedienung:

IR remote with command codes
TasteAdresseBefehlscode
Ein/Aus0x000x52
Modus0x000x4E
Set0x000x40
Hoch0x000x41
Runter0x000x44

Beachte, dass die Adresse (0x00) für alle Tasten gleich ist. Das ist meist der Fall, aber verschiedene IR-Fernbedienungen haben unterschiedliche Adressen. Für deine Fernbedienung wird diese Zuordnung von Tasten und Befehlen anders sein, und du musst den obigen Code verwenden, um das herauszufinden.

Sobald du die Codes für deine IR-Fernbedienung hast, kannst du sie verwenden, um alle möglichen Geräte zu steuern. In den folgenden Abschnitten gebe ich dir einige Beispiele.

Eine LED schalten

In diesem Abschnitt zeige ich dir, wie du eine LED mit der Ein/Aus-Taste der Fernbedienung an- und ausschaltest.

Schaltung zum Schalten einer LED

Zuerst müssen wir eine LED zu unserer Schaltung hinzufügen. Das ist einfach. Ich setze eine LED auf das Breadboard und verbinde ihre Anode (der längere Pin) über einen 68Ω Widerstand mit Pin 2 des ESP32. Dann verbinden wir die Kathode der LED (der kürzere Pin) mit Masse auf dem Breadboard.

Connecting ESP32 Lolin32 to IR receiver module and an LED
Anschluss des ESP32 an IR-Empfängermodul und eine LED

Beachte, dass das ESP32-Board mit 3,3 V läuft. Deshalb musst du einen relativ kleinen Widerstandswert verwenden im Vergleich zu einer Arduino-Schaltung, die mit 5 V läuft. Mit einem größeren Widerstandswert leuchtet die LED zwar, aber schwach.

Code zum Schalten einer LED

Jetzt können wir den folgenden Code verwenden, um die LED auf dem Board ein- oder auszuschalten.

#include "IRremote.hpp"

const int irReceiverPin = 4;
const int ledPin = 2;

void toggle(uint8_t pin) {
  auto state = digitalRead(pin);
  digitalWrite(pin, !state);
}

void setup() {
  pinMode(ledPin, OUTPUT);
  IrReceiver.begin(irReceiverPin, ENABLE_LED_FEEDBACK);
}

void loop() {
  if (IrReceiver.decode()) {
    uint16_t command = IrReceiver.decodedIRData.command;
    if (command == 0x52) {  // On/Off
      toggle(ledPin);
    }
    delay(100);
    IrReceiver.resume();
  }
}

Der Code ist weitgehend identisch mit dem vorherigen. Wir fügen nur eine neue Konstante (ledPin) für den Pin hinzu, an dem die LED angeschlossen ist.

const int ledPin = 2;

und eine Funktion, die den Ausgangszustand dieses Pins umschaltet:

void toggle(uint8_t pin) {
  auto state = digitalRead(pin);
  digitalWrite(pin, !state);
}

Jedes Mal, wenn wir diese Funktion aufrufen, wechselt der Ausgangszustand von an zu aus und umgekehrt. Dadurch leuchtet die LED auf oder geht aus. Du darfst aber nicht vergessen, den Pin in der setup() Funktion als Ausgang zu definieren!

void setup() {
  pinMode(ledPin, OUTPUT);
  IrReceiver.begin(irReceiverPin, ENABLE_LED_FEEDBACK);
}

In der Hauptschleife fügen wir eine if statementhinzu, die prüft, ob der empfangene Befehlscode 0x52 ist. Das ist der Befehlscode für die Ein/Aus-Taste, den wir vorher identifiziert haben.

void loop() {
  if (IrReceiver.decode()) {
    uint16_t command = IrReceiver.decodedIRData.command;
    if (command == 0x52) {  // On/Off
      toggle(ledPin);
    }
    delay(100);
    IrReceiver.resume();
  }
}

Wenn das der Fall ist, schalten wir die LED um. Beachte, dass wir die vom IrReceiver gesendete Adresse nicht prüfen müssen, da sie immer gleich ist. Wenn du jedoch auf Signale von verschiedenen Fernbedienungen mit demselben IR-Empfänger reagieren möchtest, musst du das eventuell tun.

Zum Schluss warten wir 100 ms, um zu vermeiden, dass die LED mehrfach umgeschaltet wird, wenn die Ein/Aus-Taste etwas länger gedrückt wird.

Und das war’s. Jetzt kannst du eine LED, ein Relais oder jedes andere Schaltgerät über deine IR-Fernbedienung steuern.

LED dimmen

Versuchen wir etwas Fortgeschritteneres. Statt die LED einfach nur ein- oder auszuschalten, steuern wir ihre Helligkeit. Wir verwenden dieselbe LED und Schaltung wie zuvor, ändern aber den Code wie folgt:

#include "IRremote.hpp"

const int irReceiverPin = 4;
const int ledPin = 2;
const int inc = 10;

int brightness = 100;

void init() {
  pinMode(ledPin, OUTPUT);
  analogWrite(ledPin, brightness);
}

void execute(uint16_t command) {
  if (command == 0x41) {  // UP
    brightness = min(brightness + inc, 255);
  }
  if (command == 0x44) {  // DOWN
    brightness = max(brightness - inc, 0);
  }
  analogWrite(ledPin, brightness);
  delay(100);
}

void setup() {
  IrReceiver.begin(irReceiverPin, ENABLE_LED_FEEDBACK);
  init();
}

void loop() {
  if (IrReceiver.decode()) {
    execute(IrReceiver.decodedIRData.command);
    IrReceiver.resume();
  }
}

Um diesen Code zu verstehen, schauen wir uns zuerst die setup und die loop Funktionen an. Sie sind für die meisten Anwendungen weitgehend identisch, daher habe ich sie so generisch wie möglich gestaltet. In der setup Funktion rufe ich eine init()Funktion auf, die Pins und andere Dinge initialisiert. Und in der loop Funktion rufe ich eine execute()Funktion auf, die einen vom IR-Fernbedienung empfangenen Befehl ausführt.

void setup() {
  IrReceiver.begin(irReceiverPin, ENABLE_LED_FEEDBACK);
  init();
}

void loop() {
  if (IrReceiver.decode()) {
    execute(IrReceiver.decodedIRData.command);
    IrReceiver.resume();
  }
}

Mit diesem Framework können wir die setup() und die loop()Funktion für verschiedene Anwendungen gleich lassen und nur die init() und die execute()Funktionen implementieren oder anpassen.

Die init-Funktion

Um zum Beispiel die Helligkeit der LED zu steuern, implementieren wir die init()Funktion wie folgt:

void init() {
  pinMode(ledPin, OUTPUT);
  analogWrite(ledPin, brightness);
}

Diese setzt den LED-Pin als Ausgang und wir setzen auch die Anfangshelligkeit der LED über analogWrite(), wobei brightness eine von uns definierte Variable ist.

Die execute-Funktion

Die execute()Funktion nimmt einen vom IR-Fernbedienung empfangenen Befehl und erhöht die Helligkeit, wenn der Befehl 0x41 (Hoch-Taste) ist. Wenn der Befehl 0x44 (Runter-Taste) ist, verringert sie die Helligkeit.

void execute(uint16_t command) {
  if (command == 0x41) {  // UP
    brightness = min(brightness + inc, 255);
  }
  if (command == 0x44) {  // DOWN
    brightness = max(brightness - inc, 0);
  }
  analogWrite(ledPin, brightness);
  delay(100);
}

Zur Änderung der Helligkeit addieren oder subtrahieren wir einen vordefinierten Inkrementwert (inc). Größere Inkremente ändern die Helligkeit schneller, kleinere sorgen für eine sanftere, aber langsamere Änderung.

Wir verwenden analogWrite(), um den Helligkeitswert an den ledPinauszugeben. Der Wertebereich für analoge Ausgänge ist jedoch auf 0 bis 255 begrenzt. Wir müssen vorsichtig sein und Werte außerhalb dieses Bereichs vermeiden. Deshalb verwenden wir hier die min() und max() Funktionen. Sie sorgen dafür, dass unsere Inkremente den gültigen Bereich nicht überschreiten.

Schließlich erfordert analogWrite(), dass der Ausgangspin PWM (Pulsweitenmodulation) unterstützt. Auf ESP32-Entwicklungsboards unterstützen die meisten Pins PWM, daher ist das normalerweise kein Problem. Im Zweifel schaue im Pinout nach einem wellenförmigen Symbol.

Im nächsten Abschnitt verwenden wir dasselbe Framework und Prinzip, um die Frequenz eines Summers zu steuern.

Einen Summer ertönen lassen

Ähnlich wie die Helligkeit von LEDs kann die Frequenz eines aktiven Summers über ein PWM-Signal gesteuert werden. Mit ein paar Anpassungen können wir also im Wesentlichen denselben Code wie oben verwenden. Aber zuerst bauen wir die Schaltung.

Schaltung zum Ertönen eines Summers

Wir entfernen die LED und ersetzen sie durch einen Summer. Wir brauchen keinen Widerstand und müssen nur sicherstellen, dass wir den Minuspol des Summers mit der negativen Stromschiene des Breadboards verbinden und den Pluspol mit Pin 2 des ESP32.

Connecting ESP32 Lolin32 to IR receiver module and a Buzzer
Anschluss des ESP32 an IR-Empfängermodul und einen Summer

Beachte, dass der Summer meist ein schwaches Pluszeichen oben hat, das den Pluspol anzeigt. Da es schwer zu sehen ist, stelle sicher, dass du die Plus-Seite an Pin 2 des ESP32 anschließt. Achte auch darauf, dass du einen active aktiven Summer und keinen passiven verwendest.

Code zum Ertönen eines Summers

Wie versprochen ist der Code zur Steuerung des Summers dem für die LED sehr ähnlich.

#include "IRremote.hpp"

const int irReceiverPin = 4;
const int buzzerPin = 2;
const int inc = 10;

int freq = 1000;
bool do_sound = false;

void init() {
  pinMode(buzzerPin, OUTPUT);
  noTone(buzzerPin);
}

void execute(uint16_t command) {
  switch (command) {
    case 0x41:  // Up
      freq = min(freq + inc, 65535);
      break;
    case 0x44:  // Down
      freq = max(freq - inc, 0);
      break;
    case 0x52:  // Stop
      do_sound = !do_sound;
      delay(100);
      break;
  }
  do_sound ? tone(buzzerPin, freq) : noTone(buzzerPin);
  delay(10);
}

void setup() {
  IrReceiver.begin(irReceiverPin, ENABLE_LED_FEEDBACK);
  init();
}

void loop() {
  if (IrReceiver.decode()) {
    execute(IrReceiver.decodedIRData.command);
    IrReceiver.resume();
  }
}

In der init()Funktion setzen wir den Pin, an dem der Summer angeschlossen ist, in den Ausgangsmodus. Dann stellen wir sicher, dass der Summer zu Beginn ausgeschaltet ist, indem wir noTone() aufrufen.

void init() {
  pinMode(buzzerPin, OUTPUT);
  noTone(buzzerPin);
}

Beachte, dass noTone() und tone() eingebaute Arduino-Funktionen sind. Du musst keine zusätzliche Bibliothek einbinden, um sie zu verwenden.

In der execute()Funktion hören wir wieder auf Befehle vom IR-Empfänger und reagieren darauf.

void execute(uint16_t command) {
  switch (command) {
    case 0x41:  // Up
      freq = min(freq + inc, 65535);
      break;
    case 0x44:  // Down
      freq = max(freq - inc, 0);
      break;
    case 0x52:  // Stop
      do_sound = !do_sound;
      delay(100);
      break;
  }
  do_sound ? tone(buzzerPin, freq) : noTone(buzzerPin);
  delay(10);
}

Wenn die Hoch-Taste (0x41) gedrückt wird, erhöhen wir die Frequenz, und wenn die Runter-Taste (0x44) gedrückt wird, verringern wir sie. Gültige Frequenzwerte liegen im Bereich von 0 bis 65535. Wie zuvor verwenden wir min() und max(), um den Wertebereich zu begrenzen.

Ich wollte auch die Möglichkeit haben, den Ton ein- oder auszuschalten. Deshalb überwacht der Code auch die Stop-Taste (0x52) und schaltet die boolesche Variable do_sound um. Danach fügen wir eine Verzögerung von 100 ms hinzu, damit das Umschalten nicht zu schnell erfolgt.

Das Letzte, was wir tun müssen, ist den Ton tatsächlich abzuspielen, was durch diese Codezeile erreicht wird:

do_sound ? tone(buzzerPin, freq) : noTone(buzzerPin);

Wenn do_sound wahr ist, spielen wir den Ton mit der eingestellten Frequenz, andernfalls schalten wir den Summer aus.

Die setup() und die loop() Funktion sind wie zuvor. Fertig! Jetzt hast du drei Beispiele, wie du mit einer IR-Fernbedienung verschiedene Geräte steuern kannst. Du hast auch ein schönes kleines Code-Framework, bei dem du nur die init() und execute()Funktionen implementieren musst, um andere Geräte zu steuern.

Wenn du zum Beispiel Motoren steuern möchtest, schau dir unsere Tutorials zu How to Control a Servo with an IR Remote und Control a Stepper Motor with an IR Remote an.

Schließlich erlaubt diese Schaltung und der Code nur das Empfangen von IR-Signalen. Wenn du Signale senden möchtest, lies How to build a universal, programmable IR remote.

Fazit

In diesem Tutorial haben wir gelernt, wie man eine IR-Fernbedienung mit einem ESP32 verwendet. Wir haben mit den benötigten Teilen für dieses Projekt begonnen, darunter ein ESP32-Board und ein IR-Empfänger.

Dann haben wir untersucht, wie eine IR-Fernbedienung funktioniert und wie sie Signale an den IR-Empfänger sendet. Anschließend haben wir den IR-Empfänger mit dem ESP32-Board verbunden und darauf geachtet, dass die notwendigen Pins korrekt angeschlossen sind.

Nachdem die Hardware eingerichtet war, haben wir uns den Code angesehen und gelernt, wie man IR-Signale mit der IRremote-Bibliothek liest. Wir haben verschiedene Funktionen implementiert, wie das Ein- und Ausschalten einer LED, das Dimmen einer LED und das Ertönen eines Summers, basierend auf den empfangenen IR-Signalen.

Wenn du diesem Tutorial gefolgt bist, solltest du nun ein gutes Verständnis dafür haben, wie man eine IR-Fernbedienung mit einem ESP32 integriert und verschiedene Komponenten mit den empfangenen Signalen steuert. Das eröffnet viele Möglichkeiten für deine Projekte, von der Erstellung eines ferngesteuerten Hausautomatisierungssystems bis hin zum Bau einer eigenen Fernbedienung für deine Anwendungen.

Wenn du weitere Fragen hast oder bei diesem Projekt auf Probleme stößt, schaue bitte in den untenstehenden Abschnitt mit häufig gestellten Fragen. Außerdem findest du nützliche Links zu relevanten Ressourcen und Dokumentationen, um dein Wissen und deine Fähigkeiten in diesem Bereich zu vertiefen.

Viel Spaß beim Basteln!

Häufig gestellte Fragen

Hier sind einige häufig gestellte Fragen zur Verwendung einer IR-Fernbedienung mit einem ESP32:

F: Kann ich jede IR-Fernbedienung verwenden?

A: Ja, die IRRemote library und die IRReceiver module, die wir hier verwendet haben, verstehen die meisten Standard-IR-Fernbedienungen. Eine weitere mögliche Wahl ist die IRremoteESP8266 Bibliothek. Es ist jedoch wichtig, die Frequenzkompatibilität der Fernbedienung mit dem von dir verwendeten IR-Empfängermodul zu prüfen.

F: Wie finde ich die IR-Codes für meine Fernbedienung?

A: Es gibt verschiedene Methoden, um die IR-Codes deiner Fernbedienung zu finden. Eine Möglichkeit ist, ein IR-Empfängermodul und einen Arduino oder ESP32 zu verwenden, um die Signale zu erfassen und zu decodieren, wie wir es oben gezeigt haben. Oder du kaufst einen einfachen Component tester, der IR-Signale decodieren kann. Die letzte Option ist, online nach dem spezifischen Fernbedienungsmodell zu suchen und zu prüfen, ob die Codes verfügbar sind.

F: Kann ich mit einer IR-Fernbedienung mehrere Geräte steuern?

A: Ja, du kannst mit einer einzigen IR-Fernbedienung mehrere Geräte steuern, indem du für jedes Gerät unterschiedliche IR-Codes verwendest. Durch das Decodieren der IR-Signale und die Zuordnung zu bestimmten Aktionen kannst du verschiedene Geräte wie LEDs, Motoren oder sogar Haushaltsgeräte steuern.

F: Wie weit reicht das Signal der IR-Fernbedienung?

A: Die Reichweite einer IR-Fernbedienung hängt von verschiedenen Faktoren ab, darunter die Leistung der Fernbedienung, die Empfindlichkeit des IR-Empfängers und eventuelle Hindernisse in der Sichtlinie. Im Allgemeinen kann die Reichweite von einigen Metern bis etwa 10 Meter variieren.

F: Kann ich eine IR-Fernbedienung mit anderen Mikrocontrollern oder Entwicklungsboards verwenden?

A: Ja, IR-Fernbedienungen können mit verschiedenen Mikrocontrollern und Entwicklungsboards verwendet werden. Siehe zum Beispiel unser Tutorial zu How to use an IR receiver and remote with Arduino.

Wenn du weitere Fragen hast oder Unterstützung benötigst, kannst du gerne im Kommentarbereich unten fragen.

Links

Unten findest du einige Links für weitere Informationen