Programm zum Auslesen der IR-Fernbedienung schreiben
Bibliotheken installieren
Vor dem Start der Programmierung müssen wir noch zwei Bibliotheken über die Bibliotheksverwaltung installieren.
Abbildung 1: IRremoteESP8266 Bibliothek
Quelle: BBS2 Wolfsburg
Dazu muss die Bibliotheksverwaltung über "Werkzeuge" -> "Bibliotheken verwalten..." (Ctrl+Shift+I) geöffnet werden. Folgende Bibliotheken müssen installiert werden:
- "IRremoteESP8266"
- "IRremote"
Die Bibliotheken sind erst installiert, wenn der grüne Schriftzug "INSTALLED" neben der Versionsnummer erscheint.
Abbildung 2: IRremote Bibliothek
Quelle: BBS2 Wolfsburg
Erstes Programm mit dem IR-Empfänger schreiben
(Hinweis: Sollte der ESP 32 noch nicht über den Boardverwalter installiert worden sein, so ist im Anhang eine PDF mit Erklärung dazu.)
Der Quellcode des Programms ist in der Datei "T1_IR_read" angeheftet.
Mit Hilfe dieses ersten Programms können nun die übermittelten Codes bei Betätigung der verschiedenen Tasten im Seriellen Monitor (SM) festgestellt werden.
Im SM können nach einander alle Tasten betätigt werden und dann die jeweiligen Tastencodes angesehen werden. Diese werden mit diesem Programm sowohl Binär als auch Hexadezimal dargestellt.
Hinweis: Sollte der Serial Monitor nicht funktionieren, überprüfe ,ob unten dieselbe Baudrate wie im Programm eingestellt ist.
Außerdem stelle den SM auf "kein Zeilenende".
Ein IR-Signal einer Fernbedienung besteht immer aus zwei teilen. Zum einen der Geräte Code und unmittelbar danach der Tastencode.
Hier sind zwei Dinge erkennbar:
- Der Gerätecode ist "FF" das heißt ein Byte voller Einsen.
- Die Fernbedienung sendet konstant Einsen, wenn eine Taste gedrückt gehalten wird.
Abbildung 3: Serial Monitor 1
Quelle: BBS2 Wolfsburg
Abbildung 4: Serial Monitor 2
Quelle: BBS2 Wolfsburg
Mit Hilfe des SM wurden alle Tastencodes ausgelesen und sind hier Dargestellt:
CH- | FFA25D | CH | FF629D | CH+ | FFE21D |
---|---|---|---|---|---|
PREV | FF22DD | NEXT | FF02FD | PL/PA | FFC23D |
VOL- | FFE01F | VOL+ | FFA857 | EQ | FF906F |
0 | FF6897 | 100+ | FF9867 | 200+ | FFB04F |
1 | FF30CF | 2 | FF18E7 | 3 | FF7A85 |
4 | FF10EF | 5 | FF38C7 | 6 | FF5AA5 |
7 | FF42BD | 8 | FF4AB5 | 9 | FF52AD |
Erläuterung zum Arduino Programm
#include <Arduino.h>
#include <IRremoteESP8266.h>
#include <IRrecv.h>
#include <IRutils.h>
|
Einbinden der Bibliotheken |
---|---|
#define RECV_PIN 34
|
Eine Textersetzung für den Empfangspin festlegen. Erleichtert die Lesbarkeit des Codes. |
IRrecv irrecv(RECV_PIN);
decode_results results;
|
Es muss ein Objekt der Klasse IRrecv erstellt werden. Dies erstellt aus allen Möglichen IR Sensoren einen bestimmten, mit dem kommuniziert wird, das ist besonders wichtig, wenn es mehrere Sensoren gibt. Des Weiteren muss die Variable "results" zum Speichern des Ergebnisses nach der Übertragung angelegt werden. |
int IRcode = 0;
|
Diese Variable bekommt das Ergebnis von "results" und speicher es als Integer ab. |
void setup()
{
irrecv.enableIRIn();
Serial.begin(115200);
}
|
Hier muss das Lesen des IR Sensors aktiviert werden und die Serielle Übertragung wird gestartet. |
void loop()
{
if(irrecv.decode(&results))
{
IRcode = (results.value);
|
Hier wird abgefragt, ob ein Code empfangen wurde. Wenn dies der Fall ist, wird die Variable als Integer gespeichert. |
Serial.print(IRcode, BIN);
Serial.println("");
Serial.print(IRcode,HEX);
Serial.println("");
|
Hier wird das Ergebnis einmal Binär und einmal Hexadezimal in den Serial Monitor (SM) geschrieben. |
irrecv.resume();
delay(100);
}
}
|
Der Sensor wird wieder zum Empfangen vorbereitet und es wird 100ms gewartet, damit der Code nicht zu schnell durchläuft. |