IR Fernbedienung

ARDUINO IR Fernbedienung
 
 

Abb.1
Auf dieser Seite beschreibe ich,
wie Infrarot-Fernbedienungen mit einem ARDUINO realisiert werden können.


Egal ob eine defekte IR-Fernbedienung eines Geräts neu aufgebaut werden soll, oder eine IR-Fernbedienung für Steuerungsaufgaben einer Modellbahnanlage kreiert werden soll, wird nachfolgend ausführlich beschrieben.

Die linke Abbildung 1 zeigt ein Infrarot-Fernbedienungs-Kit, welches mit einem ARDUINO kommunizieren kann und enthält Fernbedienteil, Infrarotdiode, Infrarotempfänger und Kabel. Es ist äußerst preiswert im Internet bereits ab 2,62 € erhältlich (Stand Januar 2026). Als Suchbegriff kann zum Beispiel "Arduino Infrarot Fernbedienung" eingegeben werden.


Abb.2
Um eine Infrarotfernbedienung realisieren zu können, müssen natürlich die Sende- und Empfangs-Codes bekannt sein, welche vom IR-Sender bei jeweils betätigter Taste zum IR-Empfänger übermittelt werden.
Um dieser erforderlichen Sende-Codes zu ermitteln, bietet sich das kleine preiswerte Gerät Multifunktionstester von jOY-it an (Abbildung 2); siehe dazu auch den Beitrag unter "Messtechnik".
Mit diesem kleinen Messgerät können Infrarot-Sendecodes der gängigsten Infrarotfernbedienungen angezeigt werden, so auch vom obigen HX1838 Infrarot-Fernbedienungs-Kit.

Die Übermittlung der IR-Tastencodes der IR-Fernbedienung


Abb.3
Wir schalten den Multifunktionstester jOY-it ein, richten unsere IR-Fernbedienung auf den Multifunktionstester und betätigen auf der Fernbedienung nacheinander gewünschte Tasten, wobei wir uns jeweils die angezeigten Abfrage-Codes mit den dabei gedrückten Tasten aufschreiben. Beispielhaft zeige ich dies in der linken Abbildung 3:
Taste 1 => liefert IR-Code 26775
Taste 2 => liefert IR-Code 26521
Taste 3 => liefert IR-Code 20401
Taste 4 => liefert IR-Code   8925
Taste 5 => liefert IR-Code 15811
Taste 6 => liefert IR-Code 17985
Taste 7 => liefert IR-Code 21165

Anmerkung: die Farbhinterlegungen resultieren lediglich von meiner IR-Fernbedienung eines Lüfters; Stärke, Schwenken, Ein/Aus.

Ein Test-Aufbau


Abb.4
Die obige Abbildung 4 zeigt links den Schaltplan (hier beispielhaft für eine Lüftersteuerung):
IR-Fernbedienung auf das IR-Empfangsmodul gerichtet, einen ARDUIONO-NANO, die Tasten Ta1 bis Ta7 mit Widerständen, und 5 LEDs mit Vorwiderständen. Die rechte Hälfte der Abbildung 4 zeigt den zugehörigen Aufbau auf Test-Bords.
Mit den nach Abbildung 3 ermittelten Tasten-Codes, dem Testaufbau der Abbildung 4, und dem zugehörigen ARDUINO-Programm der nachfolgen Abbildungen kann die Funktion dieser selbst gebauten Infrarotfernbedienung überprüft werden. Durch die im Listing angegebenen Kommentaren ist es dem Anwender leicht möglich das Programm individuell nach seinen Bedürfnissen zu ändern (anzupassen). Der Programmteil für den seriellen Monitor dient dem Anwender dabei zur Kontrolle und eventueller Programmkorrektur bezüglich seiner Änderungen. Wenn dann alles wunschgemäß funktioniert, kann bei einem endgültigen IR-Programm der Programmteil des seriellen Monitors natürlich entfallen.

Das Test-Programm, ausführlich kommentiert


Abbildungen 5
1.] Die Bibliothek "IRremote.h" ist erforderlich und unter "Deklarationen" einzubinden.
2.] Die zuvor ermittelten IR-Codes der verwendeten Tasten der zum Einsatz kommenden Infrarotfernbedienung werden unter "Definitionen" eingetragen.
3.] Die LEDs auf den Testbords zeigen zur Kontrolle die Tastenbetätigungen an.
Download enthält das Infrarot-Testprogramm für den ARDUINO
und die erforderliche Bibliothek "IRremote.h".
Alles in einem Ordner "IR_TestPGM".
     IR_TestPGM.rar

Erweiterungen für externe Geräte

Oben wurde beschrieben, wie mit einem ARDUINO eine Infrarot-Fernbedienung realisiert werden kann. Dabei wurde beispielhaft eine Ansteuerung eines Lüfters verwendet. Für eine andere Anwendung kann der Schaltplan und das Programm leicht geändert werden. So können auf Grund der ausführlichen Kommentare im angegebenen Programm-Listing dortige Namen leicht für andere Anwendungen geändert werden. Im Folgenden bleibe ich aber bei dem "Lüfterbeispiel", damit sich der Leser nicht unnötig auf ein anderes Beispiel einstellen muss.

Abb. 6
Natürlich möchte man mit einer Fernbedienung nicht nur LEDs zu Anzeigen steuern, sondern auch Geräte. So zeigt die obige Abbildung 6 eine Erweiterung mit der durch 5 Relais galvanisch getrennt 5 beliebige Verbraucher (Geräte) ein- und ausgeschaltet werden können. Das hier verwendete Relais vom Typ SRD-05VDC-SL-C kann nicht direkt von den Ausgängen des ARDUINO angesteuert werden.  Es sind also Treiber (z.B. npn-Transistoren vom Typ BC107B, BC337, oder ähnliche) erforderlich. Die im Schaltplan eingezeichneten 5 Dioden 1N4000 dienen dem Schutz vor Abschaltspitzen beim Schalten von Relais. Die hier genannten Relais können über ihre Schaltkontakte maximal 250 Volt Wechselspannung mit maximal 10 Amper schalten, dann aber VORSICHT bei so hohen Spannungen!!! Natürlich können mit diesen Relais auch Verbraucher mit ungefährlichen Niederspannung geschaltet werden. Hier soll lediglich gezeigt werden, wie die IR-Fernbedienung zum Schalten von Verbrauchern erweiterbar ist.

Abb.7
Besonders zu Experimentierzwecken eignet sich ein Relaismodul, wie es die Abbildung 7 zeigt. Es besitzt 4 Relais vom gleichen Typ, wie in Abbildung 6.
Die Besonderheit:
Auf dem Modul befinden sich Treiber (Transistoren) zur Ansteuerung der Relais, Pins GND (Minus) und VCC (+5V=) und Schalteingänge IN1, IN2, IN3, IN4 für die 4 Relais, sowie 4 LED-Anzeigen In1, In2, In3, In4; ebenso die Schutzdioden für die Relais. Über jeweils 3 (K1 bis K4)  Schraubklemmen (Relais-Mittelanschluss, Ruhekontakt, Umschaltkontakt) können Verbraucher angeschlossen werden (Maximalwerte wie oben bei Abbildung 6 angegeben).

Bezugsquelle z. B. bei amazon für 6,99 € , Suchbegriff "ARDUINO Relaismodul" eingeben. Für 11,99 € ist auch ein Relaismodul mit 8 Relais erhältlich. (Stand März 2026)

IR-Fernbedienung mit TRIAC-Ansteuerung
Verbraucher ohne Relais schalten

Eine kurze Einführung zum TRIAC


Abb.8
Der TRIAC ist ein Bauteil mit dem über die Anschlüsse T1 und T2  Wechselstromverbraucher geschaltet werden können. Das Ein- und Ausschalten erfolgt über den Anschluss G. Der TRIAC ist über T1-T2 in beiden Richtungen nahezu verlustfrei schaltbar. In Abbildung 8 ist dies für eine Sinus-Wechselspannung dargestellt: die positive Halbwelle in Rot und die negative Halbwelle Blau.

Abb.9
Die Abbildung 9 zeigt eine prinzipielle Ansteuerung eines TRIACs. Die hellblaue Kurve zeigt eine anliegende 230V~ Wechselspannung. Je nach TRIAC-Typ wird an G eine "Zündspannung" zum Einschalten des TRIACs benötigt; hier beispielhaft 35V~. Sowie am Eingang G mehr als +35V oder -35V anliegt, schaltet der TRIAC durch (also EIN). In der Abbildung 9  die braun punktierte Linie.

Da ein TRIAC so gut wie verlustfrei schaltet, erzeugt er kein Verlustwärme und so können mit kleinsten Bauteilen Verbraucher mit Hohen Spannungen und hohen Leistungen geschaltet werden.

Abb.10
Damit eine am TRIAC anliegende hohe Spannung nicht auch an einer ansteuernden Schaltung ansteht, ist es sinnvoll die Ansteuerschaltung von dem TRIAC-Hochvoltteil galvanisch zu trennen. Dies erfolgt mittels eines Optokopplers.
Die Abbildung 10 zeigt einen OptoTriac MOC3020 im 6-poligen IC Gehäuse. eine LED an den Anschlüssen 1 und 2 kann mit niedriger Spannung (z.B. 5V=) den Triac per Licht an den Anschlüssen 4 und 6 durchschalten. Man kann auch sagen, an 4 und 6 ist ein DIAC angeschlossen, welcher durch Licht (an Stelle eines Anschluss G) zum Durchschalten angesteuert wird.

Abb.11
Die obige Abbildung 11 zeigt die mittels Optokoppler  (Optotriac MOC3020) galvanisch getrennte Ansteuerung an einen Triac (TRIAC MAC97A8) und kann vorab auch als Testschaltung benutzt werden. Aber VORSICHT bei 230V~ Experimenten!
Mit einer niedrigen Spannung von 5V= kann ein Verbraucher von 230V~ mit dem Schalter S1 ein- und ausgeschaltet werden.
Die Schaltung wird nachfolgend bei unserer IR-Fernbedienung verwendet werden.
IR-Fernbedienung Schaltplan mit TRIAC-Ansteuerung

Abb.12
Alle 5 230V~ Verbraucher können direkt mittels 5V= per Taster und per IR-Fernbedienung geschaltet werden.

ATtiny84-Poblem

1.] Unser jetziges Programm benötigt 13 Anschlüsse an den ARDUINO NANO; ein ATtiny84 verfügt aber nur über 11 Ein- Ausgänge. Daher muss das Programm angepasst werden (ist von mir bereits umgesetzt).
2.] Aber unser Programm benötigt auch eine Bibliothek "IRremote.h". Und hier beginnt das Problem!
Was macht eine Bibliothek? Sie soll den Programmierer entlasten indem sie wesentliche erforderliche Funktionen für das Programm bereitstellt und übernimmt. In unserem Fall verarbeitet die Bibliothek "IRremote.h" die vom IR-Empfänger "CHQ1838" übermittelten Infrarotdaten zum Eingang des ARDUINO NANO funktionsgerecht zur Weiterverarbeitung in unsrem Programm.
3.] Aber nicht zwingend passen Bibliotheken für alle ARDUINO-Bausteine! Nicht alleine die Anzahl von Ein- Ausgängen der Bausteine ist ausschlagend, sondern die Bausteine unterscheiden sich auch in den Interraps ihrer Ein- Ausgänge. So funktioniert die IR-Bibliothek "IRremote.h" leider nicht für einen ATtiny84, denn diese Bibliothek wurde offensichtlich nicht für ihn geschrieben.
4.] Ebenso wichtig ist es welche Bordverwalter in der IDE zum Hochladen des Programms verwendet werden! Sind "Zusätzliche Bordverwalter-URLs" in die IDE einzubinden, damit dann die verwendete Bibliothek auch funktioniert?

All dies ist zu berücksichtigen. Sucht man im Internet danach (Bibliotheken, Bordverwalter, Informationen, etc.), so findet man zwar eine enorme Menge an Beiträgen: Foren, in denen Probleme geschildert werden, mit Lösungsvorschlägen, welche dann doch nicht funktionieren und nur diskutiert werden; Bibliotheken und Bordverwalter, diese aber zumeist ohne Angaben wann erstellt, Version für welchen ARDUINO (UNO, NANO, ATtiny84, ATtiny85), für welche Anwendungen, wie einzubinden. Also keine vollständigen und unmissverständliche Erklärungen; also keine "Schritt für Schritt" Beschreibungen!

 

Leider ist es mir bis jetzt nicht gelungen eine passende IRremote-Bibliothek und eventuell einen zusätzlichen Bordverwalter zu finden. Dennoch werde ich im Folgenden ein Programm beschreiben, welches die bisherige IR-Fernbedienungs-Schaltung für einen ATtiny84 anpasst. Zwar wird damit die IR-Fernbedienungsfunktion nicht möglich sein, jedoch die Tastenfunktionen. So kann dieses ATtiny84-Programm jedenfalls auch zum Schalten für andere Anwendungen ohne IR-Fernbedienung verwendet werden. Um den Bezug zu den bisherigen Beschreibungen bestehen zu lassen, bleibe ich bei der Bezeichnung "IR-Fernbedienung. Denn eventuell findest ein Leser dieser Seite eine Lösung für eine passende ATtiny-IR-Bibliothek, oder mir fällt eine Lösung ein.

Programmumsetzung für einen ATtiny84

Die bisherige Schaltung für einen ARDUINO-Nano verfügte über 7 Taster, 5 LEDs, und 1 IR-Anschluss; insgesamt also 13 Anschlüsse. Ein ATtiny84 verfügt aber nur über 11 Anschlüsse (A0 bis A7 und D8, D9, D10). Ein Vergleich zeigt die Abbildung:

Abb.13
Wir müssen folglich 2 Anschlüsse einsparen. Dies realisieren wir, indem wir auf die Tasten 5 und 7 verzichten (die Tasten 1, 2, und 3 verbleiben unverändert). Mit den Tasten 4 und 6 muss nun EIN und AUS geschaltet werden! Wir benötigen dazu also "Wechseltaster" (englisch "toggle"). Nach jeder Tastenbetätigung wird dann der Zustand zwischen EIN und AUS gewechselt.
Die rechte Abbildung 14 zeigt die Schaltung mit einem Nano und IR-Funktion, sowie die Schaltung mit einem ATtiny84 ohne IR-Funktion.
Die Verbindung des IR-Empfängers ist hier nur punktiert angegeben, da das Programm mit der IR-Bibliothek leider nicht funktioniert.
Bei einer eventuell späteren Lösung des Problems steht dann noch 1 Eingang am ATtiny84 für den IR-Empfänger zur Verfügung.

Im Schaltplan, wie auch im Programm, sind die Taster nun mit Ta1 bis Ta5 bezeichnet!

Abb.14

Testaufbau und Schaltung für ARDUINO-NANO mit IR sowie für einen ATtiny84 ohne IR


Abb.15
Die linke Abbildung 15 zeigt den Testaufbau mit einem ARDUINO-NANO sowie mit einem ATtiny84.

Das nachfolgend beschriebene Programm für einen ARDUINO-NANO funktioniert sowohl per Tasten, als auch mit IR-Fernbedienung.

Das Programm funktioniert nicht für einen ATtiny84 !
Werden hier die Programmzeilen  für die IR-Fernbedienung entfernt, funktionieren die Tasteneingaben (dann natürlich keine IR-Fernbedienung). Einzelheiten hierzu folgen weiter unten auf dieser Seite.

Bevor wir uns mit der Programmierung eines ATtiny84 befassen, ist es sinnvoll das Programm vorab mit einem NANO zu testen. Stellt man eventuell Fehler fest, so können diese bereinigt werden, das Programm sofort wieder im NANO geladen werden und getestet werden. Bei einem ATtiny84 müsste erst wieder der Bootloader installiert werden, was für erste Tests nur zusätzlichen Aufwand bedeuten würde.

Das Test-Programm für einen ADRDUINO-NANO ( funktioniert nicht mit einem ATtiny84 ! )
Die wesentlichsten Änderungen sind in der Abbildung 16 ganz rechts vermerkt.


Abb.16

Download:    IR_Fernbedienung_Toggle_NANO 15.06.2026 Download enthält:
Testaufbau und Schaltung für ARDUINO-NANO aus Abb. 15
Test-Programm für einen ADRDUINO-NANO aus Abb. 16

 

Fortsetzung folgt

 

zurück zu ARDUINO