• Hallo Zusammen, Aufgrund der aktuellen Situation setzten wir die Möglichkeit aus, sich mit Gmail zu registrieren. Wir bitten um Verständnis Das RCMP Team

Projekt Bau eines IR-Code Lesers mit Arduino

BAXL

Admin
Mitarbeiter
Der im Sensorthema vorgestellte IR Empfänger CHQ 1838 soll einem praktischen Zweck/Projekt zugeführt werden.

Für viele Selbstbauprojekte könnte man gut die IR-Codes einer Fernbedienung gebrauchen. Eine Möglichkeit wäre z.B., der reihe nach alle IR-Codes auszusenden, damit sich der Fernseher einschaltet und automatisch im Netflixmenü landet. Oder man möchte mit einem Knopfdruck den Fernseher, DVD-Player und den Audioverstärker aktivieren. Die Möglichkeiten sind beliebig. Allerdings benötigt man immer die erforderlichen IR-Codes der einzuschaltenden Geräte. Klar gibt es solche programmierbaren Fernbedinungen, oder Internetseiten mit Listen der IR-Codes, aber eben nicht immer und vielleicht möchte man einfach mal so ein Gerät selbst bauen.

Doch vorher brauchen wir ein kleines Projekt, um die Codes einer beliebigen Fernbedienung "abgreifen" zu können. Als Basis dient das Simpelprogramm aus dem Link oben und, damit es etwas netter und portabler wird, ein LCD-Display, auf dem der jeweilige Code angezeigt wird. Als Hardware benötigt man also einen Arduino (oder Clone), einen IR Empfänger CHQ 1838 und ein 1602 LCD-Display mit I2C Adapter nebst ein paar Patchkabel für das Steckbrett. Für mein beispiel wird der IR-Empfänger an +5V, GND und der Signalpin an Pin D10 vom Nano angeschlossen. Das I2C Displayinterface bekommt ebenfalls +5V, GND und SDA an A4 und SCL an A5 vom Nano.

Wenn der Nano (oder auch Uno) startet, hält man die Fernbedienung vor den IR-Empfänger und drückt die gewünschte Taste. Auf dem Display wird dann der ausgelesene Code angezeigt.
Wer kein LCD Display hat, kann sich die Codes auch auf dem seriellen Monitor in der Arduino IDE ansehen. Die nötigen Programmzeilen sind vorhanden.

Die Testschaltung ist schnell zusammengestöpselt und könnte etwa so aussehen:
Kleiner Hinweis, die LED auf dem Steckbrett hat im angehängten Programm keine Funktion, man könnte aber damit anzeigen lassen, ob überhaupt ein Code empfangen wird... oder so.



Das war es eigentlich schon. Das nötige Programm ist hier:

C++:
// Einfaches Testprogramm zum Auslesen empfangener Codes vom IR Empfänger
// und Anzeige auf einem 1602 LCD Display mit I2C Interface
// Das LCD I2C Interface wird an +5V, GND und A4 an SDA, A5 an SCL angeschlossen
// Der CHQ 1838 kommt an +5V, GND und Signalpin an A10 vom Nano

#include <IRremote.h>
#include <Wire.h>
#include <LiquidCrystal_I2C.h> // LiquidCrystal_I2C Bibliothek einbinden


int IRPin = 10; // Eingangspin für IR Signal
IRrecv irrecv(IRPin); // Objekt für IR Empfänger deklarieren
decode_results EingelesenerWert;
LiquidCrystal_I2C lcd(0x27, 16, 2);

void setup() {

pinMode(IRPin, INPUT); // Den IR Pin als Eingang initialisieren
irrecv.enableIRIn(); //  Den IR Pin dem Objekt mitteilen
Serial.begin(9600); //serielle Schnittstelle mit 9600 Baud starten
  Wire.begin();
  lcd.init();               // Im Setup wird die LCD gestartet
  lcd.backlight();          // Hintergrundbeleuchtung einschalten (lcd.noBacklight(); schaltet die Beleuchtung aus).
  lcd.setCursor(0, 0);      // Cursor in Spalte 1, Zeile 1 setzen
  lcd.print("IRCodes auslesen"); // Text ausgeben
  lcd.setCursor(0, 1);      // Cursor in Spalte 1, Zeile 2 setzen
  lcd.print("");
  delay(1000);
  lcd.clear(); // Display löschen
  lcd.setCursor(0, 0);      // Cursor in Spalte 1, Zeile 1 setzen

}

void loop() {

  if (irrecv.decode(&EingelesenerWert)){
   lcd.clear(); // Display löschen
   int gelesenerCode =  EingelesenerWert.value;
   Serial.println(gelesenerCode, DEC);
   lcd.setCursor(0, 1);      // Cursor in Spalte 1, Zeile 2 setzen
   lcd.print("Code:");
   lcd.print(gelesenerCode);
   irrecv.resume(); // auf den Einlesewert warten
  }
delay(250); // kurze Verschnaufpause
}
 
Zuletzt bearbeitet:

BAXL

Admin
Mitarbeiter
Ist aus der AZ-Deliverey Wundertüte. Da wollte ich das Teil einfach mal ausprobieren und bin eben auf diese Ideen gekommen. Eigentlich müsste ich noch nachsehen, ob ich irgendwo eine IR-Senderdiode rumfliegen habe. Damit kann man auch lustige Sachen bauen, z.B. einen Sender, der nur einfach für alle möglichen (TV) Geräte den OFF-Code sendet und damit mal zu Saturn oder Media Markt gehen ;) :D.
 
Top Bottom