Was brauche ich?
1. Meine Original Fernbedienung für mein TV-Gerät.
2. Je nach Variante einen z.B. Arduino Nano oder eine NodeMCU ESP8266.
3. Eine IR-LED mit Datenausgabe zum Empfang der Lichtwellen z.B. TSOP 31238.
4. Die Arduino Software.
5. Einen Sketch und die Libraries entsprechend der Variante.
Variante 1:
Variante 1 soll beschreiben wie mit minimalsten Mitteln der Hexa-Dezimalcode aus der Fernbedienung ausgelesen werden kann.
Dazu starte ich die Arduino Software und stelle sie für meinen Arduino Nano ein. Siehe dazu auch Arduino, Kapitel 3.
Ist dies geschehen benötige ich noch die Library “IRremote“, die ich über Werkzeuge – “Bibliotheken verwalten…“ lade.
Der Sketch:
Damit bin ich startklar den Sketch in meinen Arduino Editor zu erstellen. Der Sketch ist eher unspektakulär. Aber lasst euch nicht täuschen, das Hirnschmalz steckt in der Library. Hier müssen alle erdenklichen IR-Protokolle hinterlegt sein, sonst wäre der Sketch wertlos.
Ihr könnt der Sketch abschreiben oder hier öffnen und in den Arduino-Editor einkopieren.
Jetzt noch den Sketch auf den Nano aufspielen und die Schaltung wie auf dem Bild aufbauen.
Die Schaltung:
Die Ausgabe:
Um die Codes der Fernbedienung angezeigt zu bekommen, ist der Serielle Monitor in der Arduino-Software über dem aktiven Sketch zu starten. Ihr findet ihn unter Werkzeuge. Achtet auch ob die Baud-Rate mit der im Sketch übereinstimmt (9600 Baud). Der Com-Port muss ja passen, sonst wäre das Aufspielen nicht geglückt.
Jetzt nur noch die original TV-Fernbedienung vor die IR-Empfangs-LED halten und eine Taste kurz drücken. Im Seriellen-Monitor müsste nun der Hexadezimalcode der gedrückten Taste auszulesen sein. Achtung, wenn die Taste zu lange gedrückt wird erscheinen irgendwelche unbrauchbaren Codes. Aber das werdet Ihr selbst merken.
Im Bild habe ich von meinem Samsung TV die Tasten 1 bis 0 nacheinander kurz gedrückt und kann diese für meinen späteren Sender mir notieren.
Dies ist die einfachste Art um an den Code zu kommen. Ich bevorzuge aber die Variante 2, da hier zum Auslesen der Codes eine NodeMCU ESP8266 zum Einsatz kommt und hier nicht ständig zwischen den Boards beim Experimentieren gewechselt werden muss. Auch kann man wesentlich mehr Daten und Informationen auslesen.
Übrigens, wer den Dezimalen- oder Binären-Code benötigt muss im Sketch nur das “HEX“ gegen “DEC“ oder “BIN“ austauschen.
Variante 2:
Auch hier ist zunächst das Board in der Arduino-Software für die NodeMCU ESP8266 einzustellen. Außerdem ist die Boardverwalter-URL einzutragen. Siehe dazu Arduino, Kapitel 6.
Wie oben beschrieben ist die für den ESP8266 erforderliche Library zu laden. In diesem Fall die “IRremoteESP8266“. Bereits vorher installierte Libraries brauchen nicht entfernt werden.
Der Sketch:
Da ich selbst nur über mäßige Programmierkenntnisse verfüge muss ich auf bereits fertige Sketche aus dem Internet zurückgreifen. Ich habe etliche probiert und habe mich letztendlich für den Sketch IRrecvDumpV2 entschieden.
https://github.com/crankyoldgit/IRremoteESP8266/blob/master/examples/IRrecvDumpV2/IRrecvDumpV2.ino
Der Schaltplan:
Das Auslesen:
Nachdem der Sketch in den Arduino Editor kopiert und auf den NodeMCU geladen wurde, siehe auch Arduino Kapitel 3 kann auch schon mit dem Einlesen der Code begonnen werden.
Dazu öffne ich in der Arduino Software wie oben beschrieben den Seriellen Monitor. Auf meiner TV-Fernbedienung drücke ich hier einmal kurz die Taste 1 und siehe da, auf dem Seriellen Monitor tut sich was.
Wenn hier nur Hieroglyphen zu lesen sind, wurde die Baudrate nicht angepasst. Der Sketch verwendet 115200 Baud.
Dem Monitor kann ich zwei wichtige Daten entnehmen. Zum einen den Hexadezimalcode der Taste 1, zum anderen das IR-Protokoll “SAMSUNG“. Beides ist für meine spätere Fernsteuerung von Bedeutung.
Dem aufmerksamen Betrachter ist es vermutlich aufgefallen, gegenüber Variante 1 steht hier vor dem Code ein “0x“. Dazu später mehr.
Das war es auch schon. Jetzt noch als kleine Fleißaufgabe alle Codes der Fernbedienung nacheinander aufnehmen und ein kleines Protokoll erstellen.
Im nächsten Kapitel baue ich das Gegenstück, den IR-Sender, der mein TV-Gerät steuern soll. Also bleibt weiter dran.