Arduino – Infrarot Sende- und Empfangsmodul – Teil 1

In diesem Beitrag geht es um ein selbstgebautes Arduino Infrarot Sende- und Empfangsmodul für die Unterputzmontage das im Endausbau über das RS485 Protokoll mit der Loxone kommuniziert. Heute geht es aber erstmal nur um den Aufbau des Moduls, das Dekodieren bzw. das Einlesen von einer IR Fernbedienung und das Senden der eingelesenen IR Befehle per seriellen Befehl.

Wofür das ganze? Eigentlich will ich nur 2 Tasten einer Fernbedienung “Smart” machen, denn das wichtigste (Denon Receiver und VU+ Solo²) kann der Loxone Miniserver schon über Netzwerk steuern, nur den EPSON Beamer nicht. Das hat uns bisher nicht wirklich gestört. Man muss ihn ja auch nur per Fernbedienung einschalten, aber genau das ist ja nicht Smart und somit ein Grund zum basteln 🙂 .

Ich habe in dem Projekt folgende Teile verbaut:
– Arduino Uno in der Testphase später Arduino Pro Micro (ATmega32U4 @ 5V/16MHz)
– IR Sensor (38KHz – TSOP38238)
– IR LED (940NM)
– NPN Transistor (BC548)
– Widerstand 22 Ohm (Je nach LED)
– Widerstand 1k Ohm

Die Verkabelung der einzelnen Komponenten habe ich vorweg auf einem Steckbrett ausprobiert. Arduino IR Modul - Steckplatine

Der Aufbau sollte mit folgendem Bild etwas besser zu erkennen sein. Der genutzte Transistor (BC548) hat, wenn man wie auf dem Bild auf die Flache Seite schaut, links Collector, in der Mitte Base und rechts Emitter. Der 22 Ohm Widerstand geht von der IR LED zum Collector und der 1k Ohm Widerstand ist zwischen Arduino und der Base. Der IR Sensor kann direkt mit dem Arduino verbunden werden. Der PIN 2 für den IR Sensor ist nicht wie PIN 3 für die IR LED fest in der Library vorgegeben und kann daher angepasst werden.
Arduino IR Modul - Steckplatine

Die IR Library (IRremote) die ich genutzt habe, könnt ihr auf Github (externer Link: https://github.com/shirriff/Arduino-IRremote) oder im Download Bereich zusammen mit meinem Arduino Beispiel Skript runterladen.

Wenn die Library eingebunden ist, kann mit dem in der Library enthaltenen Beispiel Skript IRrecvDump der Code der Fernbedienung bzw. des IR Befehls ausgelesen werden. Je nachdem wo ihr den IR Sensor angeschlossen habt, muss die Variable RECV_PIN in Zeile 13 angepasst werden. Nach dem hochladen den Serial Monitor öffnen, auf eine Taste der Fernbedienung drücken und schauen was ausgegeben wird.

Beispiele (Ausgabe gekürzt):
Epson Beamer – Power On
Decoded NEC: C1AA09F6 (32 bits)

Epson Beamer – Power Off
Decoded NEC: C1AA8976 (32 bits)

Denon AVR – Power On
Decoded PANASONIC – Address: 2A4C Value: 2840086 (48 bits)

Denon AVR – Power Off
Decoded PANASONIC – Address: 2A4C Value: 28C008E (48 bits)

Die Daten müssen dann je nach Protokoll (SONY, NEC, PANASONIC, RC5, RC6, …) entsprechend aufbereitet werden. Leider sind die Protokolle sehr unterschiedlich und jedes hat scheinbar seine Eigenart aber immer noch besser als die Impulse per RAW Daten nachzubauen. Passend zu den Beispielen oben jeweils nur der Befehl für Power On:

...
irsend.sendNEC(0xC1AA09F6, 32);
irsend.sendPanasonic(0x2A4C,0x28C008E);
...

In dem Beispiel Skript aus dem Download Bereich können über den Serial Monitor die einzelnen IR Befehle abgerufen werden. Um zu prüfen ob die IR LED überhaupt angesteuert wird kann man mit einem Smartphone oder einer Kamera (ohne IR Filter) die LED leicht lila blinken sehen.

Im nächsten Teil wird dann alles mit dem RS485 Modul in eine Unterputzdose montiert und mit dem Loxone Miniserver bzw. der Loxone RS485 Extension verbunden.

6 Gedanken zu „Arduino – Infrarot Sende- und Empfangsmodul – Teil 1“

  1. Toller Beitrag danke dafür.
    Hat alles soweit funktioniert allerdings hab ich ein kleines Verständnis Problem 🙂

    Wollte einen ESP8266 fest in meinen Staubsaugroboter einbauen um diesen über Alexa anzusteuern. Auslesen der Codes etc. hat alles funktioniert. Wenn ich das Borad mit einer IR Diode neben den Roboter lege funktioniert auch alles.

    Nun wollte ich aber das Signal (bei mir über D2) direkt von dem Arduino an die Signalleitung legen wo vorher der IR Empfänger vom Roboter war anlegen. Das funktioniert leider nicht? Kann mir das jemand erklären so das ich es auch verstehe 🙂

    Der Plan war folgender:
    Der Roboter hat 5 IR Empfänger rundum.
    Einen davon raus.
    Arduino rein und über die Signalleitung den Empfangenen Code senden. Geht aber leider nicht.Macht der IR Empfänger noch was mit dem Singal ?

    Beste Grüße Ralph

    1. Hallo Ralph,

      ich bin kein Elektronik Experte, würde aber pauschal sagen das es nicht funktioniert. Vorausgesetzt ich habe dich richtig verstanden! Ich weiß nicht wie ein IR-Empfänger arbeitet, aber ich glaube nicht das du das Signal einfach mit einem Wemos / Arduino imitieren kannst?! Sorry, ich kann dir leider nicht helfen. Vielleicht aber ein anderer Leser? Wenn du es noch nicht getan hast, würde ich die Frage auch in einem Elektronik oder Mikrocontroller Forum stellen.

      Viele Grüße und viel Glück bei deinem Projekt
      Stefan

  2. Klappt so denke ich nicht. Die IR Diode sendet auf z.B. 38 kHz ihr Signal. Der IR-Empfänger macht daraus dann Signalpulse. Du müsstest gleich von vornherein die Pulse senden ohne das Signal mit 38 kHz zu modulieren.

  3. Danke für die Antworten !
    Denke inzwischen auch das es nicht so einfach klappt wie ich mir das gedacht hab.
    Ich habe nun einen Arduino mini mit einer IR Diode einfach in die Nähe der Empfänger Diode gebaut und es geht nicht schön aber funktioniert.
    Kann hier leider keine Bilder hochladen sonst würde ich es euch zeigen. Naja wie auch immer der Staubsaugroboter lässt sich nun über Alexa steuern.

    Vielen Dank nochmal
    Ralph

  4. Hallo,
    erst einmal sehr toller Beitrag und danke dafür.
    Jedoch habe ich eine Frage. Wie ist deine genaue Berechnung für die Widerstände?
    Wie kommst du auf 22 Ohm und 1k Ohm und warum nutzt du einen NPN Transistor (BC548), bzw warum genau diesen?
    Vielen dank schonmal im vorraus.
    Liebe Grüße
    Para

    1. Hallo Para,

      eine genaue Berechnung der Widerstände für die LED gab es nicht! Ich kann sagen das der 22 Ohm Widerstand kleiner war als berechnet, weil laut Aussage von einem Techniker die IR-LED eine kurzfristig erhöhte Leistung (Impulse) verträgt. Den 1k Ohm findest du in sehr vielen (Arduino) Schaltungen wieder.

      Ich habe einen BC548 Transistor verwendet, weil dieser oft in Schaltungen wie diesen verwendet wird und ich einen Zuhause hatte. Ein größerer Strom (Ic-Wert) könnte je nach Anwendung und IR-LED die Haltbarkeit verbessern.

      Viele Grüße
      Stefan

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert