Arduino - read and decode infrared signals from a remote controller

Für dieses Projekt gibt es auch ein Video auf Youtube: Infrarot Signale einer Fernbedienung decodieren mit dem Arduino und einem IR-Receiver

Infrarot ist eine optische Übertragung, die heute noch vielfach in Fernsteuerungen und Fernbedienungen verwendet wird. Bevor Bluetooth auf den Markt kam, war ein Infrarot Modul in vielen Smartphones, PDAs und Notebooks verbaut. Eine Infrarot Datenübertragung (IRDA) wird heutzutage im privaten Bereich kaum noch verwendet.

IR Frequenzbereich

Am Spektrum befindet sich Infrarot zwischen Mikrowellen (über 100 THz) und den sichtbaren licht (unter 790 Thz). Grundsätzlich ist Infrarot für das menschliche Auge nicht sichtbar. Da sich das exakte IR-Licht, was für Datenübertragungen verwendet wird, im Bereich des "nahen Infrarots" befindet, ist es für eine Kamera oft sichtbar. Sehr starke Infrarot-LEDs, wie sie z.B. in Überwachungskameras vorkommen, können vom menschlichen Auge oft als ein schwaches rotes licht wahrgenommen werden.

Decodieren mittels Arduino

Der Sensor benötigt neben der Stromversorgung nur eine Leitung für die Datenübertragung. Diese Leitung muss am Arduino auf einen digitalen I/O Pin angeschlossen werden. In unserem Beispielcode wird der PIN 7 verwendet. Der Empfänger gibt standardmäßig ein HIGH aus und wechselt dann beim Empfang von Infrarotsignalen zwischen HIGH und LOW. Der Empfänger demodulieret das Lichtsignal und gibt es dann, so wie es eigentlich vom Sender ausgesendet wird, 1:1 in binär an den Mikrocontroller weiter.

VS-1838B Infrared Receiver Arduino Wiring

Die Software

Grundsätzlich würde man für den Sensor keine Bibliothek benötigen, wenn man z.B. die empfangen Zustände (HIGH und LOW) in ein Array speichert. Dies könnte man dann in hexadezimal ausgeben. Allerdings muss man dann im Code auch eine Funktion schreiben, die den Anfang und das Ende vom Signal erkennt und richtig abspeichert. Da gerade das nicht so einfach, vor allem für Anfänger ist, haben wir uns dann doch für eine Library entschieden, die uns das erspart. Der Beispielcode in Verbindung mit der Library ist nun in der Lage, das Signal zu decodieren und als hexadezimal und binär im Serial Monitor auszugeben. Das nachfolgende Bild zeigt ein Rohsignal, wie es vom IR-Receiver an das Arduino Board weitergegeben wird.

Decoded Infrared Signal from RC
Arduino Code
//More information at: https://www.aeq-web.com
#include <IRremote.h>

const int RECV_PIN = 7;
IRrecv irrecv(RECV_PIN);
decode_results results;

void setup(){
  Serial.begin(9600);
  irrecv.enableIRIn();
}

void loop(){
  if (irrecv.decode(&results)){
        Serial.print(" HEX: ");
        Serial.print(results.value, HEX);
        Serial.print(" BIN: ");
        Serial.println(results.value, BIN);
        irrecv.resume();
  }
}

Oft gelesen

Anzeige:

Social Media

Newsletter