IR-Signale am UNO

Hallo zusammen,

Freitag Mittag, 12 Uhr, 2 Stunden vor meinem Wochenende:

Chef: "Hey Moritz, ich muss noch auf einen Termin und bin dann erst Montag wieder da, kannst du dich um das Beamer-Problem kümmern und ein Blogbeitrag fehlt auch noch für heute..."

Ich: "Welches Beamer-Problem?"

Chef: "Schau einfach, siehst dann schon, bis nächste Woche"

Nach kurzer Suche konnte ich "das Problem" identifizieren. Trotz dezenter Hinweisschilder scheint der letzte Benutzer wiedereinmal den Beamer nicht ausgeschaltet zu haben:

Wie stellt man also sicher, dass der Beamer nicht nur mit der Fernbedienung auf Standby geschaltet sonder sich dieser (wegen daran angeschlossener Peripherie) vom Netz getrennt wird?

Mit jeweils einem

ACHTUNG! Das Arbeiten mit Netzspannung ist in Deutschland ausgebildeten Elektrofachkräften vorbehalten! Es besteht Lebensgefahr!

Die Idee:

Um den Beamer einzuschalten wird der Wandschalter betätigt und das Gerät mit dem Stromnetz verbunden. Dieses befindet sich anschließend im Standby-Modus. Um eine Anzeige zu erhalten wählt der Benutzer über die Fernbedienung durch drücken der entsprechenden Taste die Quelle. Nach kurzer Start-Zeit haben wir ein Bild.

Schaltet der Benutzer wie gewohnt den Beamer über die Fernbedienung aus soll dieser im Anschluss vom Netz getrennt werden.

Die benötigte Library um komfortabel mit den IR-Dioden arbeiten zu können:

https://github.com/z3t0/Arduino-IRremote

Diese kann wie gewohnt aus Git als *.zip-Datei geladen, und über Sketch -> Bibliothek einbinden -> .ZIP Bibliothek installieren... eingebunden werden.

Die Verdrahtung:

UNO IR-Diode Relais-Modul
GND GND GND
5V +
3.3V VCC
D4 S
D11 Data

 

Da es etwas aufwendiger ist das komplette Signal aufzuzeichnen zu dekodieren und anschließend abzugleichen bedienen wir uns einfach an den der Bibliothek beiliegenden Beispielen. Dazu öffnen wir die Datei IRrecvDemo.ino und laden diese auf unseren Mikrocontroller:

 

/*
 * 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>

int RECV_PIN = 11;

IRrecv irrecv(RECV_PIN);

decode_results results;

void setup()
{
  Serial.begin(9600);
  // In case the interrupt driver crashes on setup, give a clue
  // to the user what's going on.
  Serial.println("Enabling IRin");
  irrecv.enableIRIn(); // Start the receiver
  Serial.println("Enabled IRin");
}

void loop() {
  if (irrecv.decode(&results)) {
    Serial.println(results.value, HEX);
    irrecv.resume(); // Receive the next value
  }
  delay(100);
}

 

Nach dem öffnen des seriellen Monitors sehen wir beim drücken der entsprechenden Taste auf der Fernbedienung:

Gibt uns der Sketch einen Hex-Code zurück: "CIAA09F6" Dieser erscheint bei jedem Tastendruck der "OFF" Taste der Fernbedienung.

Im Prinzip fehlt also nur eine if-Schleife im loop die bei Empfang des Hex-Codes einen Pin auf HIGH setzt.

Hier der geänderte Code:

 

#include <IRremote.h>
int RECV_PIN = 11;
IRrecv irrecv(RECV_PIN);
decode_results results;



void setup()

{
  Serial.begin(9600);
  pinMode(4, OUTPUT);
  Serial.println("Enabling IRin");
  irrecv.enableIRIn();
  digitalWrite(4, LOW);
  Serial.println("Enabled IRin");

}



void loop() {

  if (irrecv.decode(&results)) {

    Serial.println(results.value, HEX);
        if(results.value == 0xC1AA09F6){ //Hier 0x+Code eintragen!
        Serial.println("OFF detected");
        digitalWrite(4, HIGH);
        delay(100);
}
    irrecv.resume(); // Receive the next value

  }

  delay(100);

}

 

Wird das Gerät vom Netz getrennt fällt der Pin auf LOW zurück. Um den Beamer also wieder einzuschalten muss der Schalter an der Wand aus- und im Anschluss wieder eingeschaltet werden.

Allen Lesern wünsche ich ein schönes Wochenende und viel Spaß beim basteln.

 

5 Kommentare

Heiko

Heiko

Hallo,
tolle Idee.
Habe bei mir das ganze mit einem Taster in der Wand. Ca. 2sec drücken damit der Arduino startet und ein Relais einschaltet zur selbserhaltung der Spannung und ein Relais für den Baemer.
Wenn die AUS Taste der Fernbedienung erkannt wird, schaltet der Arduino nach einer wartezeit zum abkühlen des Baemers, beide Relais aus und die ganze Anlage ist somit wieder Spannungslos.
Gruß Heiko

Matthias

Matthias

Hallo,
interessante Idee.

Noch eine Ergänzung: packt den Arduino gleich noch an dieselbe Steckdose wie den Beamer…

joedro

joedro

Wichtig ist auch zu sagen das es zwei unterschiedliche Typen des IR gibt.
Dort ist die Beschaltung der 3 Pins unterschiedlich.

Stefan Jaroni

Stefan Jaroni

Hallo,
nette Lösung. Würde allerdings über eine Verzögerung nachdenken. Zumindest bei den meisten älteren Beamern wird nach dem Ausschalten ein Nachlauf zum Abkühlen empfohlen. Das Bild ist dann zwar aus, aber der Lüfter läuft noch nach. Geht aber nur wenn der Beamer nicht gleich vom Netz getrennt wird. Also: Nach Empfang des „OFF“ Signals erst verzögert das Relais abfallen lassen. Sonst könnte Hitzetot des Beamers/ der Lampe drohen.
Gruß
Stefan

joedro

joedro

Über IR habe ich Rollos gesteuert.
Für die Auswertung des IR-Code wird nicht
results.value == 0xC1AA09F6
die volle Länge benötigt.
Es genügt das letzte Byte.

Einen Kommentar hinterlassen

Alle Kommentare werden vor der Veröffentlichung moderiert