Arduino Tutorial: Der Infrarotsensor

 

 

Den Infrarotsensor kann man sehr gut für das Empfangen von Signalen verwenden. Jede normale Fernbedienung ist mit einer Infrarot LED ausgestattet, welches Signale an den Fernseher oder an andere Geräte senden kann. Der Fernseher besitzt ein Infrarotsensor um die von der LED empfangenen Signale aufzunehmen und zu verarbeiten.

In diesem Tutorial wirst du lernen, wie man die Signalfrequenz jeder beliebigen Fernbedienung auslesen kann. Diese Informationen benötigst du, um nachher auf die verschiedenen Signale reagieren zu können.

Hier benutzen wir den Infrarotsensor VS1838B. Dieser Sensor hat folgende Pinbelegung:

 

 

 

 

Ob deine Fernbedienung funktioniert, kannst du erkennen indem du eine Digitalkamera, z.B. ein Smartphone, auf die LED deiner Fernbedienung richtest und auf eine Taste der Fernbedienung drückst. Unser Auge kann nicht die Wellenlänge der Infrarot- LED sehen. Eine Digitalkamera kann dieses Licht aber darstellen.

 

 

Was benötigst du?

  • 1 x Arduino Uno

 

  • 1 x USB Kabel

 

  • 1 x Steckbrett

 

  • 1 x  LED

 

  • 1 x Fernbedienung

 

  • 1 x Infrarotsensor VS1838B (oder Infrarotempfänger)

 

  • 1 x Ohmscher Widerstand (220 Ohm)

 

  •  Jump Wire (Männlich)

 

 

 

Wie sieht der Schaltplan aus?

 

 

 

Der Code

Um den Code anwenden zu können, musst du unter Sketch -> Bibliothek einbinden -> Bibliothek verwalten in der Suchleiste die Library "IRRemote" von Ken Shirriff suchen und installieren. Damit es keine Probleme gibt musst du die Library "Robot IRRemote" löschen, da es hier auch eine IRRemote.h- Headerdatei gibt.

 

 

Der erste Sketch ist dazu da um die Tasten deiner Fernbedienung zu decodieren.

 

 

/*

* IRremote: IRrecvDemo - demonstrates

receiving IR codes with IRrecv

* An IR detector/demodulator must be

connected to the input RECV_PIN.

* Version 0.1 July, 2009

* Copyright 2009 Ken Shirriff

* http://arcfn.com

*/   

 

#include <IRremote.h>               // Die IRRemote- Library wird hier inkludiert

 

int RECV_PIN = 11;                  // An Pin 11 werden die Empfangenen Daten vom

                                    // Infrarotsensor gesammelt

 

IRrecv irrecv(RECV_PIN);            // Ein IRrecv- Objekt wird definiert,

                                    // welch die Datenauswertung an Pin 11 möglich macht

 

decode_results results;             // Die dekodierten Daten, werden in Results        

                                    // gespeichert

 

void setup()

{

 

Serial.begin(9600);                 // Die Verbindung mit dem seriellen Monitor wird

                                    // möglich gemacht

 

irrecv.enableIRIn();                // Der Infrarotsensor wird hier initialisiert

 

}

 

void loop()

 

{   

 

if (irrecv.decode(&results)) {      // Wenn Daten empfangen wurde,

 

Serial.println(results.value, DEC); // gebe den Code in Dezimalzahlen aus

 

irrecv.resume();                    // Warte auf nähsten Wert

}

}

 

 

 

 

Du kannst den Sketch auch hier herunterladen.

 

 

Nachdem du den Sketch auf deinen Arduino hochgeladen hast, kannst du den seriellen Monitor öffnen und ein paar Tasten auf deiner Fernbedienung drücken. Die Empfangenen Daten werden dann auf den seriellen Monitor sichtbar.

 

 

 

 

Für meine Fernbedienung kann man die Codes der jeweiligen Tasten folgendermaßen zuordnen:

 

 

 

 

Mit den folgenden Sketch kann man nun die LED an Pin 13 anschalten sobald man die Taste "Pfeil hoch" drückt. Wenn man die Taste "Pfeil herunter" drückt, geht die LED aus.

 

 

#include <IRremote.h>

 

int RECV_PIN = 11;

 

IRrecv irrecv(RECV_PIN);

 

decode_results results;

 

void setup()

 

{

 

pinMode (13, OUTPUT);           //Pin 13 als Ausgang definieren

 

irrecv.enableIRIn();

 

}

 

void loop() {

 

if (irrecv.decode(&results)) {

 

if (results.value == 16736925)  // Wenn der Sensor die Zahl "16736925" empfängt,

                                // Hier kannst du deinen Tastencode einsetzen

 

 

{digitalWrite (13, HIGH);}      // mache LED an

 

if (results.value == 16754775)  // Wenn der Sensor die Zahl "16736925" empfängt,

 

{digitalWrite (13, LOW);}       // mache LED aus

 

irrecv.resume();                // Warte auf nächsten Wert

 

}

 

}

 

 

Du kannst den Sketch auch hier herunterladen.

 

 

Glückwunsch! Du weißt nun, wie man deinen Arduino mit einen Infrarotsensor steuern kann.

 

 

 

 

 

Wenn du hier irgendetwas vermisst, bessere Ansätze hast oder dir etwas nicht klar ist, zögere nicht einen Kommentar zu hinterlassen.

Kommentar schreiben

Kommentare: 0