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
}
}
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
}
}
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.
Karl (Dienstag, 21 September 2021 21:36)
Ich würde gerne wissen wie diese Zahlen zu bewerten sind. Sind das Frequenzen, Anzahl von Pulsen o.ä.?
Jochen (Samstag, 02 Mai 2020 20:47)
Hi, danke für das Beispiel!
Ich denke aber es fehlen die nötigen Vorwiderstände. Siehe Datasheet VS1838b. An Vcc 100 Ohm. Und einen 20k pull up zwischen Out und Vcc. Weiterhin werden da auch Kondesatoren empfohlen.... Geht bei mir auch ohne.
Horstine Wolter (Dienstag, 03 März 2020 10:54)
Guten Tag,
ich fände es toll dieses Programm, für mein Projekt "Erstelle einen Roboter" in meiner Schule, zu verwenden. Ich habe eine Frage zu dem Sensor: ich habe meinen Lehrer gebeten mir einen Infrarotsensor zu bestellen, ich weiß aber nicht er genau diesen Sensor bestellet hat, ist das Schlimm?
Liebe Grüße
Daniel (Samstag, 26 Oktober 2019 20:48)
Dankee, hat sehr geholfen!
Karl (Mittwoch, 26 Juni 2019 11:09)
Hallo
Joop (Samstag, 08 Juni 2019 11:31)
Ik heb alle waarden van de afstand bediening maar het lukt me niet meer leds te schakelen.
Mvg van Joop.
David (Dienstag, 05 März 2019 15:21)
Kann mir jemand helfen?
Bei mir wird der Infrarotempfänger ziemlich warm und emfängt immer dann ein Signal wenn ich ihr rausziehe aus dem Steckbrett. Besitze jedoch den gleichen wie hier.
Was kann ich tun?
Annie (Dienstag, 05 Februar 2019 12:55)
Hallo,
kann man diesen Sketch auch für eine Lichtschranke verwenden?
Thomas (Sonntag, 14 Oktober 2018 13:51)
Hallo,
du kannst unter den Bauteilen nach dem TSOP312 bei Fritzing suchen. Dieser ist Baugleich mit dem hier verwendeten IR- Empfänger.
Gruß,
Thomas
EB (Sonntag, 14 Oktober 2018 12:42)
Hallo,
kann mir jemand sagen wo ich den Infrarotempfänger für fritzing bekomme?
Vielen Dank!
Christopher (Donnerstag, 28 Juni 2018 22:44)
Super Anleitung, danke!