Infrarot (IR) Fernbedienungen und IR Empfänger sind tief in unserer Welt verankert und dennoch immer noch sehr faszinierend. Stell dir vor du kannst mit einem Arduino deine gesamte Media Landschaft vom Fernseher bis zum Blueray Player steuern. Er bringt alles in den richtigen Modus bringen ohne das du von der Couch aufzustehen brauchst. Herrlich. In diesem Beitrag zeige ich dir, wie Infrarot Signale mit deinem Arduino empfängst und verarbeitest. Ob du im nächsten Schritt mit der Infrarot Fernbedienung Killerroboter steuerst oder einfach nur dein Leben in den eigenen vier Wänden angenehmer gestaltest … alles ist denkbar.

In diesem ersten Teil des Tutorials konzentrieren wir uns ganz auf die Grundlagen und lernen wie du mit einem IR Empfänger Daten mit einem Arduino empfangen, auswerten und nutzen kannst. Im zweiten Teil werden wir dem Arduino beibringen selber Signale zu senden. Das ist praktisch, wenn du diesen z.B. als Universal Fernbedienung einsetzen möchtest.

Infrarot Fernbedienung und Bauteile für den Arduino
Infrarot Fernbedienung und Bauteile für den Arduino

Wie funktioniert die Infrarot Fernbedienung?

Infrarot Fernbedienungen basieren auf optischen Signalen, welche vom Sender moduliert und vom Empfänger demoduliert und interpretiert werden. IR-Fernbedienungen sind auf optische Sicht zum Empfänger angewiesen und können somit nicht durch Wände und Decken fernsteuern.

Sei es ein TV, deine Playstation oder ein sonstiges Gerät, wenn du einen Knopf auf der Fernbedienung drückst wird der Mikrocontroller diesen registrieren und einen passenden Code über die Infrarot LED senden. Das Gerät mit dem passenden Empfänger erhält diesen Code über die Lichtimpulse und übersetzt diesen in eine durchzuführende Aktion wie z.B. Fernseher ausschalten usw.

IR Remote

Um nicht alle deine Geräte mit Infrarot Empfänger gleichzeitig zu bedienen, verwenden die Gerät verschiedene Protokolle. Dieses Verfahren schützt auch vor anderen Interferenzen wie zum Beispiel einer Glühlampen  – das Runde Ding aus Glas mit dem glühenden Faden – oder der Sonne.

Nehmen wir einmal an du hast einen Philipps TV, eine Sky Box und einen JVC DVD Player. Wenn du den Ausschaltknopf auf der Philips Fernbedienung drückst, erkennt der TV das Signal weil der das Protokoll versteht. Die Sky Box sowie der DVD Player werden dies jedoch als Grundrauschen interpretieren und keine Aktion ausführen. Die sprechen eine andere Sprachen und verstehen die Philipps Fernbedienung einfach nicht.

Wenn Du also in den Media Markt gehst und hier den Ausschaltknopf einer Philips Fernbedienung drückst, gehen alle Philipps-Geräte auf einmal aus. Alle anderen Geräte bleiben an. Das solltet Ihr nicht zu oft versuchen, dann vermutlich werdet Ihr kurz später aus dem Laden geworfen.

Ich denke, das Prinziep ist jedem klar geworden. Für weitere Informationen zu den Protokollen und der Theorie kannst Du hier mal schauen: IR Remote Control Theory

 

Universal Fernbedienungen

Wenn du mehrere Geräte (TV, DVD Player, Blu-ray, Sound System, CD Wechsler und ein Streaming Server) im Einsatz hast, dann sieht dein Wohnzimmertisch vielleicht aus wie nach einer Runde Mikado. Die kleinen Dinger häufen sich. Da kann eine Universalfernbedienung helfen. Diese vereint alle Protokolle in sich.

Nehmen wir unser erstes Beispiel, kannst du mit einer Universal Fernbedienung alle Geräte steuern. Das funktioniert, weil ein Chip kombiniert mit einem Funktionsknopf einfach die Belegung der Knöpfe mit Codes aus anderen Protokollen versehen werden kann. Somit senden die gleichen Tasten der Infrarot Fernbedienung für unterschiedliche Geräte unterschiedliche Codes.

In manche Fernbedienungen lassen sich sogar feste Abläufe programmieren. Also Beamer einschalten, Apple TV und Verstärker einschalten, Leinwand runter rollen. Das volle Programm. Manche haben sogar noch das Licht sowie die Rollos damit verlinkt. Sehr smart!

Universal Fernbedienungen sind somit wahnsinnig praktische, aber im Vergleich zu den Arduino Komponenten auch sehr teuer. Im nächsten Kapitel machen wir den ersten Schritt und du erfährst, welche Komponenten du einsetzen kannst um IR Signale mit dem Arduino zu empfangen.

IR Empfänger

Inzwischen gibt es eine Vielzahl von Empfängern auf dem Markt, welche für Arduino Projekte in Frage kommen. Die folgende Indografik gibt dir einen Überblick:

IR Empfänger im Überblick
IR Empfänger Infografik von http://www.pighixxx.com

 

In diesem Beispiel nutze ich einen TL1838  Infrarot Empfänger mit den folgenden Features:

  • kompaktes DesignTSOP1838-pins
  • eingebauter Schaltkreis (IC) speziell für Infrarot Signale
  • Kann verwendet werden um 38 kHz Infrarot Signale zu decodieren
  • Empfangswinkel: 90
  • Arbeitsspannung: 2.7~5.5 Volt
  • Frequenz: 37.9KHz
  • Empfangsreichweite bis zu 18 Meter

 

Experten-Tipp:

In den Schaltbildern wird oft empfohlen noch einen Kondensator. Auf diesen habe ich in unserem Beispiel verzichtet. Das ist auch OK, wenn Ihr einfach nur die Funktionalität test wollt. Fängt der IR Empfänger an Schwachsinn zu interpretieren, kann es sich jedoch schon bei einer einer RGB LED lohnen diesen hinzuzufügen. Solltet Ihr jedoch komplexere Schaltungen haben, empfiehlt sich der Einsatz unbedingt.

Weitere Informationen findet Ihr hier.

 

Ich sehe etwas das Du nicht siehst

Mit Hilfe eines Infrarotempfängers kann das Arduinoboard die Befehle einer Infrarotfernbedienung auswerten. Die Daten werden dabei in Form von Infrarotlicht von der Fernbedienung zum IR Empfänger gesendet.

Da nichts ärgerlicher ist als Minuten lang nach Fehlern zu suchen, fangen wir damit an die Funktion der Komponenten zu prüfen. Als erstes nehmen wir und die Fernbedienung vor. Also drauf geklickt und auf die LED geachtet. Und? Seht Ihr was?

Nein?! Das ist in diesem Fall auch OK. Denn das Infrarotlicht kann von dem Menschlichen Auge nicht wahrgenommen werden. Doch wie testen wir jetzt die Funktion? Ganz einfach mit einer Kamera oder ganz simpel mit dem Handy.

Da unser Auge dieses Licht nicht wahrnehmen kann, können wir dieses nicht sehen. Mit einem kleinen Trick kann man jedoch testen, ob bspw. eine Fernbedienung ein Infrarotsignal sendet. Dazu nimmt man eine Digitalkamera (zum Beispiel die vom Smartphone) und betrachtet über das Display die Infrarotdiode.

Wenn nun die Fernbedienung betätigt wird, kann man die Infrarotdiode leuchten sehen. Das liegt daran, dass die Sensoren von Digitalkameras das Infrarotlicht wahrnehmen und darstellen können. Das Licht flackert leicht, da die Infrarotdiode sehr schnell an- und aus geht. Dahinter verbirgt sich ein ganz bestimmter Rhythmus, anhand dessen der Infrarotempfänger später auswerten kann, welche Taste an der Fernbedienung gedrückt wurde.

Infrarot Fernbedienung testen

Schalte deine Kamera ein und drücke einen Knopf auf der Fernbedienung. Jetzt solltest du die LED blinken sehen. Du must dafür kein Bild oder Video aufnehmen. Es genügt, wenn du einfach durch das Display auf die LED schaust. Ist das der Fall, dann funktioniert die Infrarot Fernbedienung und du kannst mit ruhigen Gewissen weiter an dem Projekt arbeiten.

LED der infrarot Fernbedienung

Funktioniert die Fernbedienung nicht, kann es sein das z.B. die Batterien leer sind oder noch eine Schutzfolie zwischen den Batteriekontakten klemmt. Übrigens konnte ich mit meinem iPhone 5 das Inflatorisch nicht erkennen. Ich musste mir erstmal das Android Handy meiner Freundin mopsen um dieses Bild zu erstellen. Einige Kameras haben einen IR Blocker vor der Linse und das IR Licht dringt nicht bis zum Objektiv vor.

In einigen Fernbedienungen leuchten die LEDs rot und in andern lila. In einigen Fernbedienung sind teilweise sogar mehrere LEDs enthalten und du siehst ein weißes licht scheinen. Meine Fernbedienung ist eine „Mini“ Fernbedienung vom Chinamann und die IR LED kann klar auf der Front erkannt werden. In dem Bild drücke ich den Ein- / Ausschaltknopf und du kannst am lila Licht erkennen, das meine Fernbedienung funktioniert.

 

IR Empfänger testen

Nachdem wir nun wissen, dass die Fernbedienung funktioniert, kümmern wir uns um den Empfänger. Solltest du einen anderen Empfänger haben, müsstest du um herauszufinden wie dieser angeschlossen wird, das Datenblatt prüfen. Meistens jedoch haben die LEDs drei Beine und werden immer nach dem gleichen Schema angeschlossen. Oben findest Du eine Darstellung der gängigsten Empfängern.

Wenn die Birne – der geschwungene Part – dich anschaut, ist der ganz linke Pin beim  der Signal Ausgang. Die Mitte ist Null und der rechte Pin ist + 5 Volt (Vcc). Baue deine Schaltung wie unten im Bild auf. Der rechte Pin sollte auf + 5 Volt deines Arduino führen, der mittlere auf GND (Null). Der Linke Pin wird über einen Widerstand zur Kathode eine LED (kurzes Bein, flache LED Seite) während die Anode der LED (langes Bein) zum Plus Pol. Hier ein Bild mit dem Layout.

IR_Empfaenger0

Nun kommt der Moment der Wahrheit. Schalte die Stromversorgung ein und die LED sollte ausgeschaltet bleiben. Ziele mit der Fernbedienung auf den Empfänger und drücke eine Knopf. Solange du den Knopf gedrückt hältst, sollte die LED schnell blinken. Ist dies nicht der Fall, schalte die Stromversorgung aus und prüfe die Verbindungen. Im folgenden Bild siehst du die LED leuchten. Wie auch immer ich diese Aufnahme hinbekommen habe.

IR_Empfaenger

 

 

Das Sketch zum Auslesen

Um die digitalen Signale der Fernbedienung über den Empfänger zu lesen und zu decodieren sind viele Zeilen Code notwendig. Zum Glück gibt es auch für diese Problem wieder eine schöne, schnelle Lösung. Wir können eine bestehende Bibliothek nutzen und uns viel Arbeit sparen. Dazu benötigen zu allererst die passende Bibliothek für die Arduino IDE.

ACHTUNG: Es gibt aktuell Probleme beim Kompilieren von Sketches mit der „IR-Library“ Bibliothek und der Arduino IDE ab der Version 1.5.3. Es hat mich Ewigkeiten gekostet herauszufinden, wie das Sketch komplettiert werden kann. Ihr könnt die Dateien einfach löschen. Anschließend kann können die Sketches wieder mit eingebundener Library wieder einbinden kompiliert werden.

Update: Inzwischen scheint der Fehler behoben worden zu sein. Beim Kompelieren erscheint jetzt folgende Meldung:

Solltest du den Fehler weiterhin haben, installiere dir entweder die aktuellste IDE oder entferne den Ordner IRremote aus der Arduino.App (/Applications/Arduino.app/Contents/Java/libraries/RobotIRremote).

 

Installieren der IR Library

Um es für dich einfacher zu machen, habe ich die Bibliothek hier gespeichert. Lade diese herunter und speichere Sie in deinem lokalen Bibliothek Ordner. Du weist nicht, wo du diesen findest? Kein Problem. Hier eine kurze Tour:

  1. lade die Bibliothek herunter – Download Link: Bibliothek
  2. entpacke die Zip Datei in den folgenden Ordner: /Users/…/Documents/Arduino/libraries/IRremote
  3. öffne die Arduino IDE
  4. sieh nach, ob die Bibliothek bereits importiert ist, ansonsten führe Schritt fünf aus
  5. klicke dann im Menü auf Sketch>Include Library>Add .Zip Library und wähle den Ordner ‚IRremote‘

 

Unabhängig von der hier bereitgestellten Bibliothek könnt Ihr natürlich auch auf die Originalquellen zurückgreifen. Doch Vorsicht, mit dem aktuellen Master hatte ich Probleme. Hier geht es zu den Quellen auf Github:

https://github.com/shirriff/Arduino-IRremote

Jetzt, wo wir die Bibliothek importiert haben, können wir uns ans Werk machen und mit einem Sketch die Daten des IR Empfängers auslesen

 

Dekodieren und die Codes auslesen

Um die IR Codes deiner Fernbedienung herauszufinden, werden wir als erstes die Signale der Fernbedienung empfangen und auf dem Seriellen Monitor ausgeben. Lade dazu das folgende Sketch von Ken Shirriff auf deinen Arduino. Und …

 

… öffne anschließend den Seriellen Monitor. Es öffnet sich ein neues Fenster. Wenn Du jetzt mit deiner Fernbedienung auf den Empfänger zielst und einen Knopf drückst, wird das Signal vom Empfänger aufgenommen – die LED blinkt – und an den Arduino weiter gegeben. Die Bibliothek übersetzt das Signal in Hexadezimal Werte. Du siehst also einen fortlaufenden Zahlen Salat. Fällt dir bei den Daten vom IR Receiver etwas auf?

Bildschirmfoto 2015-06-05 um 14.53.40

Im Screanshot erkennst du die Hexadezimalen Werte. Immer wenn du eine Taste das erstmal drückst, wird der Wert der Taste angezeigt. Hälst Du die Taste gedrückt so werden nach dem eigentlichen Wert ein kontinuierlicher Code – wie ein Füllwert – gesendet. Dieser ist abhängig vom Protokoll der Fernbedienung. Im Sony Protokoll ist FFFFFFFF der Füllwert und 0 ein Fehlercode.

 

Code Für Fernbedienung

Meine Fernbedienung vom Chinamann hat 21 Knöpfe. Und für mein aktuelles Roboter Projekt benötige ich eigentlich nur die Knöpfe Ein- & Ausschalter, zwei, vier, sechs und acht. Wie auch immer . Solltest du die gleich Fernbedienung besitzen, habe ich hier mal alle Codes für dich aufgelistet. Leider gibt es auf der Fernbedienung keine Modellnummer. Naja, probier es einfach aus.

  • POWER – 16753245
  • MODE – 16736925
  • MUTE – 16769565
  • PAUSE – 16720605
  • PREV – 16712445
  • NEXT – 16761405
  • EQ – 16769055
  • VOL – – 16754775
  • VOL + – 16748655
  • Zahl 0 – 16738455
  • Gehe Zurück – 16750695
  • 100+ – 16756815
  • Zahl 1 – 16724175
  • Zahl 2 – 16718055
  • Zahl 3 – 16743045
  • Zahl 4 – 16716015
  • Zahl 5 – 16726215
  • Zahl 6 – 16734885
  • Zahl 7 – 16728765
  • Zahl 8 – 16730805
  • Zahl 9 – 16732845

Es können aber auch noch andere Zahlen auftauchen, falls eine Taste nur ganz kurz oder pulsierend gerückt wird. In dem Fall kann der Sensor keinen eindeutigen Wert auslesen.

 

IR Codes in deinen Arduino Sketche verwenden

Mit dem folgenden Sketch kannst du die Codes der Fernbedienung auf Tastendruck empfangen und abhängig davon, welche Taste gedrückt wurde einen beliebigen Programm Code ausführen.

 

Was, wenn es nicht funktioniert?

Wichtig ist der Abstand zwischen der Infrarot-LED und dem Empfänger. Um auf der sicheren Seite zu sein, sollten Sie die LED nah am Empfänger platzieren. Auch der Winkel spiel eine Rolle. Der Sender sollte sich vor dem Empfänger befinden. Sorge auch dafür, dass es nicht zu viel Umgebungslicht gibt, welches das Infrarotsignal stören könnte.

 

Fazit

Und wie geht es weiter? Im Tutorial hast du viel gelernt um mit deinem Arduino Infrarot Signale zu empfangen. Die IR Library kann nicht nur Signale empfangen sonder auch Signale senden. Ursprünglich wollte ich dir alle Informationen in einen Beitrag packen.

Ganz ehrlich, das Thema hat mich erschlagen. Bäng und Zack hatte ich einen super langen Beitrag den niemand hätte durchlesen könnte. Daher habe ich den Beitrag geteilt. Im zweiten Teil zeige ich dir, wie du deinen Arduino nutzen kannst, um zum Beispiel einen Fernseher oder andere Geräte zu steuern. Oder du baust dir doch noch einen Killer Roboter und eroberst die Welt.

Aber: Schon jetzt kannst du jede Fernbedienungen zum steuern deiner Arduino Projekte einsetzten. Dazu brauchst du dir noch nicht einmal eine neue zu kaufen. Du nimmst einfach eine deiner Fernbedienungen aus dem Wohnzimmer. Der Arduino funktioniert dann wie ein Infrarot Schalter mit dem du alles mögliche ein und ausschalten kannst. Super cool!

Es gibt viele Möglichkeiten coole Infrarot Projekte umzusetzen. Hast du eine Universal Fernbedienung, könntest du dir ein neues Gerät anlegen und so z.B. das Licht in deinem Raum mit den lauter und leiser Tasten kontrollieren. Wow, sicher hast du noch viel verrücktere Ideen im Kopf. Also leg los und baue abgefahrene Sachen.

Wenn dir der Beitrag gefallen hat, schreib mir gerne oder teile diese Seite mit deinen Freunden. Vergiss nicht in die Kommentare zu schreiben, welche Projekte du mit einem IR Empfänger sowie der Infrarot Fernbedienung umgesetzt hast oder möchtest!

Machtübernahme – Alles was du über Arduino und Infrarot Fernbedienungen wissen musst. | infrarot fernbedienung

8 Gedanken zu „Machtübernahme – Alles was du über Arduino und Infrarot Fernbedienungen wissen musst. | infrarot fernbedienung

  • 20. Oktober 2015 um 18:25
    Permalink

    Traurig, wenn man einen solch tollen Beitrag liest, seinen Kleinteilschrank durchwühlt, aber leider keinen IR-Empfänger mehr findet…
    Danke, der Beitrag hat mich ein Stück weitergebracht für mein Quadcopter-Projekt im Bereich der Steuerung! Thumbs up!

    Antworten
    • 20. Oktober 2015 um 18:28
      Permalink

      Oh nein. So ging es mir letztens noch mit einem LaserTag Projekt. Freut mich, dass dir das Tutorial geholfen hat. Hoffentlich hast du bald Nachschub organisiert.

      Herzliche Grüße,

      Robert

      Antworten
  • 20. Oktober 2015 um 19:29
    Permalink

    Hi!
    Echt hilfreiches Tutorial, danke dafür!
    Die LED blinkt, sobald ich einen Taster der Fernbedienung drücke, jedoch klappt das Auslesen der Hex-Codes leider nicht. Ich verwende den TSOP1736 (http://dalincom.ru/datasheet/TSOP1736.pdf) als IR-Empfänger mit einer Frequenz von 36kHz. Ich habe bereits verschiedene Fernbedienungen ausprobiert, jedoch werden bei keiner Hex-Codes ausgegeben.
    Hat jemand eine Lösung?
    Gruß
    Tom

    Antworten
  • 29. Oktober 2015 um 11:03
    Permalink

    Hallo!

    Vielen Lieben Dank für dieses Tutorial. In der Schule sind wir gerade mit der Umsetzung fertig geworden, alles klappt wie beschrieben. Jetzt bräuchten wir den Teil 2 um auch den TV einschalten zu können. Wo finden wir diesen Teil?

    Herzliche Grüße!

    PS: Mein Projektpartner und ich würden uns auch über Rückmeldung per e-mail freuen. 🙂

    Antworten
    • 30. Oktober 2015 um 1:31
      Permalink

      Hallo Anna,

      da ich gerade sehr viel an dem Arduino Online Kurs arbeite, ist der zweite Teil zum Thema Arduino Infrarot (IR) Fernbedienung leider noch nicht fertig. Ich hoffe, dass es vielleicht nächste Woche etwas wird. Dann werde ich dir den Link hier in die Kommentare schreiben und dir eine kleine Mail schicken.

      Klasse, dass Ihr unsere Tutorials sogar in der Schule verwendet. Ich wünsche dir weiterhin viel Spaß!

      Herzliche Grüße,

      Robert

      Antworten
  • Pingback: Machtübernahme Teil zwei – Dein Arduino wird zur Fernbedienung | deskfactory.de

Schreibe einen Kommentar

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