Tag 17: IR-Modul

Das Projekt des heutigen Tages ermöglicht die Steuerung des Controllers per Fernbedienung. Mit selbst wählbaren Tasten auf einer Infrarot-Fernbedienung Ihrer Wahl können Sie die Farbe der RGB-LED verändern und die Hintergrundfarbe der Webseite gleich mit.

Hinter dem heutigen Türchen befindet sich das für das heutige Projekt bedeutende Bauteil, nämlich das Infrarot-Empfangsmodul. Sie können das Modul wie auf dem unteren Bild ganz ohne Kabel anschließen. Das Programm setzt die entsprechenden Pins so, dass das Modul mit Strom versorgt wird.

Das IR-Modul an Pins D7-D5

Das IR-Modul an Pins D7-D9

Das Programm: Day17_IRmodul

Das Programm des heutigen Tags benutzt wieder eine externe Library, und zwar die IRremote-Library von Ken Shiriff. Eine Kopie der von mir verwendeten Version liegt wieder in dem Sketchorder und muss nur in den library-Ordner ihres Sketchbooks kopiert werden.

Nach dem Upload des Programms sollten Sie den Serial Monitor starten. Suchen Sie eine Fernbedienung und richten Sie sie auf das Modul. Wenn Sie eine Taste drücken sollten Sie im Monitor den Wert des Signals als HEX-Code und den Typ des Protokolls als Zahl ausgegeben bekommen. Wenn als Typ -1  erscheint, wurde das Protokoll nicht erkannt. Es kann auch zu mehreren Fehlversuchen kommen bis ein Kommando richtig decodiert wird. Also probieren Sie einfach ein bisschen herum oder versuchen Sie eine andere Fernbedienung. Haben Sie ein passende gefunden dann wählen Sie sechs Tasten aus (am besten Sie nehmen Power, Lauter, Leiser, Kanal hoch, Kanal runter und Mute). Die Codes der sechs Kommandos müssen Sie nun im Programm hinter die sechs #define irComX kopieren (das 0x vor dem Hex Code nicht vergessen). Vordefiniert sind dort die Kommandos einer LG-TV-Fernbedienung. Wenn Sie die Codes richtig eingetragen haben, können Sie nun das Programm erneut hochladen. Mit den von Ihnen definierten Tasten können Sie nun die Farbe der RGB-LED verändern. Wenn Sie die Boardseite aktualisieren, werden Sie außerdem sehen, dass sich die Farbe verändert hat.

 

52 Kommentare

  1. IoT_rules

    Der IR Empfänger und die IR Diode, weiß jemand welche man einzeln kaufen kann damit man das Projekt nachbauen kann? Es gibt die ja in verschiedenen Wellenlängen. Worauf muss ich achten wenn ich sie nachkaufen will?

    1. Klaus
    2. generalovernight

      Die Empfänger sollten eine Frequenz im Bereich 36-40 kHz haben, das wird von der IRremote-Library uterstützt, die der Adventskalender benutzt und das deckt sich auch mit den Angaben, die du im Internet zum Thema IR-Fernbedienungen finden kannst. Optimal sind 38 kHz.

      Für meinen Geschmack sind sie bei Conrad etwas zu teuer. Beim Pollin gibt es z.B. Sharp GP1UM261XK (Achtung: etwas anderes Pinout, VCC in der Mitte und GND aussen, Pin3) mit 38 kHz im Zehnerpack für 1,95, wobei das nichtmal das günstigste Angebot ist. Dafür bekommst Du beim Conrad keine zwei.

      Die Sharp GP1UM261XK habe ich heute getestet, funktionieren einwandfrei, man muß halt nur daran denken, die Pin-Definitionen im Sketch zu ändern, sonst hat man nur noch neun ;-) Die sind auch mit etwas Blech umwickelt, wenn’s einen stört, kann man ds aber leicht entfernen, dann sehen die genau so aus wie die im Kalender.

      Die Liste auf der von Klaus verlinkten Seite ist leider nicht ganz korrekt. Die Piezo-Summer Conrad 690635 sind viel kleiner als die im Kalender, richtig wären wohl die 710397 mit 27 mm Durchmesser.

      Die Heißleiter sind bei C zwar auch nicht die billigsten, aber der Unterschied nicht so dramatisch. Die RGB-LEDs habe ich aber – ganz gegen meine Gewohnheit – doch mal per China Export bezogen. Mehr als ein Euro pro Stück ist mir echt zu happig und bei Amazon gibts die Tüte mit 100 Stück für weniger als 9 € – mit Versand durch Amazon, also sofort geliefert und keine 3 Wochen warten, wie bei CE sonst üblich, und auch kein Versandrisiko.

  2. Aironout

    Hi, also mir gefällt das heute nach einigen „Problemchen“ (hatte das IR-Modul falsch rum drin, das ist auch nicht optimal dargestellt, finde ich) wieder mal sehr gut.
    Meine Fernbedienung sendet interessanterweise jede Taste mit „ein“ und „aus“ – Flag, dass heißt zum Beispiel der erste Druck auf die Taste Rot erzeugt eine „77“, drücke ich zum zweiten mal Rot sendet sie den Code „877“.
    Das hat mich auf die Idee gebracht, zum Einen die Tasten Rot, Grün und Blau zum Schalten zu verwenden und zum Anderen mit derselben Taste die Farben ein- und auszuschalten. D.h. ich schalte zum Beispiel Rot und Grün ein, und die LED leuchtet als Resultat dann Gelb. Und mit der Aus-Taste kann ich die LED ein- bzw. ausschalten.
    Was jetzt interessanterweise nicht mehr funktioniert, ist die Webseite, die lief beim ursprünglichen Programm noch tadellos, aber jetzt kommt nur noch „Nicht verfügbar“, sogar, wenn „nur“ eine Standardfarbe leuchtet, die das ursprüngliche Programm auch erzeugt hätte.
    Vielleicht lade ich nochmal das Originalprogramm hoch und gucke mir die Website im Quelltext an, mal sehen, ob ich das Ganze debuggt bekomme…;)
    Grüße,
    Aironout

    1. Klaus

      Dann hast Du bestimmt eine Fernbedienung mit RC5-Code (wahrscheinlich Philips).
      Was ich schade an der Bibliothek finde, dass nicht die tatsächlichen RC5-Codes raus gebracht werden. Die bestehen nämlich aus einem Geräte- und einem Tastencode. Die meisten Tastencodes sind standardisiert. Wenn man nun den Gerätecode ausliest, hätte man theoretisch alle Codes für die Fernbedienung. Ich habe z.B. eine Fernbedienung mit einem Taster an der Seite, um den Gerätecode zu ändern. Die Tastencodes bleiben damit alle gleich.

  3. Julia

    Bisher war alles super, nur heute war es echt unerfolgreich und schlecht programmiert!

  4. Steffen

    Tag 17 hat mich begeistert! Vielen Dank. Bisher alle Tage gut geklappt.

  5. bernd

    Fantastisch!

    1. Raimund

      Ich habe eine Fehlermeldung – Compiler. Wieso ? was habe ich vergessen ?

      D:\Eigene\Arduino\Day17_IRmodul\Day17_IRmodul.ino: In function ‚void loop()‘:

      D:\Eigene\Arduino\Day17_IRmodul\Day17_IRmodul.ino:72:29: warning: deprecated conversion from string constant to ‚char*‘ [-Wwrite-strings]

      if (esp8266.find(„+IPD,“))

      ^

  6. chris

    Bei mir geht es nicht mir wird immer angezeigt:

    C:\Program Files (x86)\Arduino\libraries\RobotIRremote\src\IRremoteTools.cpp:5:16: error: ‚TKD2‘ was not declared in this scope
    int RECV_PIN = TKD2; // the pin the IR receiver is connected to
    ^
    Fehler beim Kompilieren.

    ich frage mich, was da los ist.

    1. Max

      du hast die library vergessen. die musst du im Ordner C:\Users\***\Documents\Arduino\libraries abspeichern. hatte die selbe Fehlermeldung am Anfang.

  7. Michael

    Bei Mir funktioniert die letzten Tage alles
    Wenn man die RGB LED richtig rum reinsteckt und die richtige FB verwendet

  8. Kacki

    …wie ich ja schon am Vortag erwähnte, bin ich „not amused“ darüber, die RGB-LED ohne Vorwiderstände an den Nano anzuschließen. Deshalb habe ich den Versuchsaufbau ein bisschen verändert. Mit den Vorwiderständen (wie bei Tag 10: 3 x 1 KOhm) sind die Farben der LED auch besser. Allerdings – VORSICHT – besteht nun akute Kurzschlussgefahr mit den Bauteildrähten! Man könnte die Anschlüsse an die Ports umstrukturieren – müsste man im Programm entsprechend ändern.
    So wie ich es auf diesem Foto aufgebaut habe, geht es ohne Anpassung des Programms – Nachbau aber auf eigene Gefahr (wegen Kurzschlussgefahr)

    1. Dirk

      Hi, wenn du für den Aufbau den NanoESP einen Steckplatz nach unten rutscht. ( E und I ) gewinnt man Platz.

  9. sepp27

    Hallo, ich bin erst jetzt nach zufälligen Pretzelboardkauf in diesen -für mich wirklich guten- „Kurs“ eingestiegen. Hab im Bereich Netzwerk wenig fundiertes Wissen die Serie hilft mir da was zu lernen ..über die Praxis . Das Thema verlangt Auseinandersetzung und Zeit -für Neueinsteiger- wenn man nicht nur irgendwie nachvollziehen sondern verstehen will..ich kämpf ziemlich was die Netzwerkgschicht betrifft..Meine Frage:
    Kurstag3 war UDP-Send mit (Zeile 55)
    succes &= sendCom(„AT+CIPSTART=\“UDP\“,\“192.168.4.2\“,90″, „OK“); //UDP-Server

    heißt mit eigenen Worten:
    ESP8266Modul hat zuvor über AT+CWSAP einen AcessPoint aufgebaut namens NanoESP..
    Das Modul hat die IP: 192.168.4.1 (lt AT+CIFSR).. (Zwischenfrage)ist das Modul Sever oder Client?? ..der PC hat Adresse 192.168.4.2 Port90
    An diesem Tag wird mittels UDP Protokoll unidirektional vom WLAN Modul nach PC, Port90 gesendet, angezeigt im PC-Progamm PacketSender.. nachvollziehbar!

    !Was ich jetzt nicht versteh ist am Tag 4 bidirektionaler UDP Austausch:
    succes &= sendCom(„AT+CIPSTART=\“UDP\“,\“192.168.4.255\“,90,91″, „OK“); //UDP Bidirectional and Broadcast
    warum …”192.168.4.255”,90,91
    warum 255 der PC hat 192.168.4.2 das Wlan-Modul hat 192.168.4.1
    (AT+CIPMUX =0 !)
    es wird neben PC-Port90 am Wlan Modul Port 91 aufgemacht!??
    Ich hab alle AT-Dokus durchgeschaut (ESP8266 AT Instruction Set Version 1.4) nirgends fand ich 1) heißt 255 sowas wie Rundruf?? Warum 255..warum nicht
    wie zuvor 192.168.4.2?…was bring 255???und 2) dass man auf diese Art Ports definiert aufmachen kann. Nix großes meine Frage aber für mich essentiell.. auch.. und etwas irritierend wenns dazu keinen Erklärung gibt.. und dass dan Standard für die nächsten Folgen wird.
    Lg.sepp27

  10. Ralph

    Da ich echt total fasziniert von dem Ganzen bin und endlich mal mehr Zeit hab als nur durchlesen, runterladen, anstecken, ausprobieren habe ich mich mit dem programmieren beschäftigt. Macht echt Spass eigene Projekte auszuprobieren und Erfolgserlebnisse zu haben :)

    Mir ist dabei was aufgefallen: Die Masse einer Diode ist ja der kurze Draht. Warum ist es bei einer RGB Diode der lange?! Macht das Sinn :)

    1. Kacki

      Bei Elkos ist auch der lange Draht „Plus“ – so war es halt immer… früher… als Bauteile noch nur eine einzige Funktion hatten. Jetzt kommt da so eine Multicolor-LED daher und hat 4 Anschlüsse. Drei für die drei Farben und eine CommonCathode. Die Hersteller könnten jetzt konsequenterweise die drei Anoden mit Überlänge machen und die gemeinsame Kathode kürzer, aber diese mindestens auf die spezifizierte Mindestlänge. Also 3 Überlängen… Das kostet pro LED dreimal zusätzlichen Draht – Kupfer ist *TEUER*! Vielleicht nicht bei Deiner einen LED, aber für den Hersteller in der Masse… Ich glaube, man hat sich aus Kostengründen darauf geeinigt, nur den EINEN „speziellen“ Anschluss (gemeinsame Kathode) länger zu machen.

  11. Max

    Tolles Projekt!
    Ich habe als Fernbedienung eine von einem RGB LED Streifen genommen (Ergab für mich mehr Sinn).
    Außerdem habe ich das Projekt noch um die Farbcodes für Cyan und Magenta erweitert.

    Man hätte jedoch in der Projektbeschreibung erwähnen können, dass die RGB LED um 180 Grad gedreht (im Vergleich zum gestrigen Versuch) im Board steckt, da das meiner Meinung nach nicht unbedingt aus der Zeichnung hervorgeht.

    1. Marco

      Danke, der Tipp mit der Led drehen war Gold wert.
      Das Projekt macht richtig Spaß allerdings sind die Aufbauanleitungen mehr als dürftig.

  12. Markus

    Change SSID and PASSWORD and irCom1-irCom6

    Was heißt irCom1-irCom6 was soll ich tun???????????

    1. Max

      Die HEX Codes der Fernbedienung ersetzten?!
      Lies dir doch bitte die Beschreibung dieses Projekts durch…
      Ich zitiere:
      „Nach dem Upload des Programms sollten Sie den Serial Monitor starten. Suchen Sie eine Fernbedienung und richten Sie sie auf das Modul. Wenn Sie eine Taste drücken sollten Sie im Monitor den Wert des Signals als HEX-Code und den Typ des Protokolls als Zahl ausgegeben bekommen. Wenn als Typ -1 erscheint, wurde das Protokoll nicht erkannt. Es kann auch zu mehreren Fehlversuchen kommen bis ein Kommando richtig decodiert wird. Also probieren Sie einfach ein bisschen herum oder versuchen Sie eine andere Fernbedienung. Haben Sie ein passende gefunden dann wählen Sie sechs Tasten aus (am besten Sie nehmen Power, Lauter, Leiser, Kanal hoch, Kanal runter und Mute). Die Codes der sechs Kommandos müssen Sie nun im Programm hinter die sechs #define irComX kopieren (das 0x vor dem Hex Code nicht vergessen). Vordefiniert sind dort die Kommandos einer LG-TV-Fernbedienung. Wenn Sie die Codes richtig eingetragen haben, können Sie nun das Programm erneut hochladen. Mit den von Ihnen definierten Tasten können Sie nun die Farbe der RGB-LED verändern. Wenn Sie die Boardseite aktualisieren, werden Sie außerdem sehen, dass sich die Farbe verändert hat.“

    2. Markus

      Wie soll ich die Codes herausfinden?

      1. Markus

        Im serialen Monitor ist das Programm von gestern, denn ich kann das Programm nicht hochladen.

    3. Juergen

      Wie beschrieben erst mit einer FB testen ob und welche Codes erkannt werden (Serial Monitor) und dann im Program unter „define irComX“ anpassen

  13. Eric

    Kann es sein, dass der Server komplett unnötig ist?

    1. Klaus

      Vom Prinzip ja. Der ist nur dafür, damit man die aktuelle Farbe im Browser sehen kann.

  14. Zacke

    Heute das erste Problem, wer kann helfen?

    Arduino: 1.6.6 (Windows 7), Board: „Arduino Nano, ATmega328“

    C:\Program Files\Arduino\libraries\RobotIRremote\src\IRremoteTools.cpp:5:16: error: ‚TKD2‘ was not declared in this scope

    int RECV_PIN = TKD2; // the pin the IR receiver is connected to

    ^

    exit status 1
    Fehler beim Kompilieren.

    1. jz

      Dieser Fehler entsteht, wenn man die IRemote Library nicht in den Sketch Ordner kopiert. Dann findet der Compiler RobotIRemote.

      1. Zacke

        OK, Library ist im Ordner:

        #include
        #include
        #include

        Trotzdem: „Fehler beim Kompilieren“

        oder ist der Fehler mal wieder vor dem Monitor ;-) und ich mache irgendwas falsch beim kopieren?

        1. jz

          Ich habe mich falsch ausgedrückt. Gemeint ist, in den sogenannten „Sketchbook“ Ordner unter libraries kopieren:
          C:\Users\..\Documents\Arduino\libraries
          siehe auch „Preferences“ in Arduino IDE.

        2. Juergen

          Hatte einen vergleichbaren Fehler, musste erst alle kopien der Library die z.B. noch vom auspacken auf dem Rechner waren löschen

    2. KlausiMausi

      Den gleichen Fehler hatte ich auch. Mit Neustart von dem Arduino Eingabeprogramm hat es funktioniert.
      Wenn die library eingebunden ist, ist diese auch unter Sketch->Include Library zu sehen.

  15. Roman_2

    Bei mir steht auch „Type:-1“ im seriellen Monitor.
    Die Werte ändern sich trotzdem. versuchsweise eingetragen -> hochgeladen
    Funktioniert einwandfrei!!! (Samsung TV Fernbedienung)

    Danke für dieses schöne Projekt!!!

    1. Maxi

      Habe gleiche Fernbedienung!

      Funktioniert nicht!

  16. jz

    IRemote library:

    Auf meiner zweiten Arduino Installation wurde eben ein Update dieser Library installiert. Diese scheint mehr Fernbedienungen zu unterstützen, u.A. auch Samsung.
    Auf meiner Erstinstallation ist das Update nicht erfolgt, warum weiss ich nicht, aber via Sketch->IncludeLibraries->Library Manager finde ich mindestens den Link für den Dowload.
    Werde den heutigen und morgigen Versuch damit wiederholen.

    1. jz

      IRemote library update:
      Update sollte funktionieren, falls in den „Sketch Ordner“
      C:\Users\..\Documents\Arduino\libraries
      kopiert,
      ich hatte sie in
      C:\Program Files (x86)\Arduino\hardware\arduino\avr\libraries
      kopiert.

      1. Tommy

        Famos!

        Nach dem library update gehts auch mit Samsung FB.

        Danke für den Tip :D

  17. nerd

    Leider fällt bei dieser Webseite (die von fkainka, nicht die vom Beispiel) der Schnee neben den Bildschirm, und lässt damit die horizontal scrollbar flackern. Schade, stört das lesen.

  18. Marcus

    Ich bekomme mit einer UPC Fernbedienung nur -1 Fehler

  19. Michi

    Hey,
    Mich würden die spezifikationen des IR-Moduls interessieren.
    (Bandpass-Filter, Vin, Vout usw. )
    Daher meine Frage: Was für ein Typ von IR-Modul ist im Kalender?

    Ich würde vermuten ein TSOP 4836.

    (Im Studium bauen wir derzeit etwas ähnliches als Projekt, aber nur mit dem ESP8266-Modul ohne vorgeschaltenen Arduino Nano.)

    Lg

    1. Hartmut

      Hier auf der Seite gibt es unter Tag 0 eine Einkaufsliste bei Conrad, für die, die keinen Klaender mehr bekommen haben. Dort kannst Du die Conrad Bestellnummer finden (184302) und damit bei Conrad Typ und Datenblatt einsehen.

      1. Michi

        Danke! Die Liste hab ich gar nicht gesehen ;).

    2. Klaus

      Weiß jemand, wo man eine Liste der verschiedenen erkannten Fernbedienungstypen findet? Im Datenblatt steht da leider gar nix.

      1. jz

        In IRemote.h

        1. Klaus

          Danke, auf die Idee bin ich gar nicht gekommen.

  20. Toni Taste

    Hi,

    die Fernbedienungen der Hersteller sind sehr unterschiedlich codiert. Bei mir brachte keine die LED zum Leuchten.

    Lösung: Nutzt zunächst den seriellen Monitor und notiert euch die empfangenen Codes für die verschiedenen Tasten der FB. Ändert dann im Quelltext die irCom-Definitionen auf eure Werte ab. Beachtet dabei, dass nach dem 0x immer eine 8-stellige Zeichenfolge stehen muss. Gegebenenfalls muss also der ermittelte Code vorn mit Nullen aufgefüllt werden.
    Anschließend den Quelltext neu hochladen und ;)

    1. Rudi

      Nach 0x muss keine 8-stellige Zeichenfolge stehen. Meine Unitymedia FB für DigitalTV schickt nur 3-stellige Codes und funktioniert. Die Powertaste versendet allerdings 2 Codes: einen für EIN und einen für AUS !!

  21. RGH

    Ein kleiner Tipp: Wer in den Libraries bereits ein Verzeichnis „SoftwareSerial“ vorfindet, sollte dieses vorläufig verschieben, da dieses auch eine Datei „SoftwareSerials.h“ enthält. (Es reicht auch, diese Datei umzubenennen.) Diese wurde bei mir zuerst gefunden und verursachte eine Fehlermeldung.
    Anschließend funktionierte es perfekt: POWER schaltet die LED an, CH- schaltet sie auf grün, CH+ auf rot und VOL- auf gelb. VOL+ hat bei mir keine Wirkung und MUTE schaltet sie aus. Wenn ich nach dem umschalten die Webseite neu lade, erscheint sie jeweils in der entsprechenden Farbe.

    1. RGH

      Ooops, da war ein Zahlendreher drin: VOL+ schaltet auf blau.

  22. Tommy

    Funktioniert cool…

    …aber erst mit der 4. Fernbedienung.

    Das IR-Modul wollte weder die FB vom Samsung-TV, noch vom Panasonic BD-Player, noch die vom Denon-Receiver. Immer Type=-1, trotz vieler Versuche…

    Mit der vom Pioneer-Receiver gings dann. ;-)

    1. Nikdro

      Gleiches Verhalten bei mir. Samsung scheint ein komisches Protokoll zu verwenden ;-)

  23. Jonathan

    OK funktioniert (soweit). Unbedingt alles von der aktuellen Internetseite lesen und laden. Im Heft/PDF fehlt so manches. Ich wollte etwas „vorausschauen“ aber besser ist es eben zu warten. (IR Codes dürfen auch nicht doppelt vorkommen!)

Schreiben Sie einen Kommentar

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