Skip to content

SPArEPART: Auto-Off-Funktion bei Epson-Projektoren nachrüsten

UPDATE: Die PCBs sehen gut aus! :-)

tl;dr: siehe Titel; Technik hier

Lizenzhinweis: Alle Inhalte des SPArEPART-Projekts (Arduino-Quellcode und Fritzing-Sketch für die PCBs) stehen unter der GNU General Public License Version 3.

Anfang dieses Monats hat unsere Schule endlich neue Projektoren (vulgo: Beamer) bekommen. Es war auch höchste Zeit, da die alten Geräte, die die neuen nun ersetzen, bis dato 10 Jahre auf dem Buckel hatten. Während einige dieser Geräte noch annehmbare Bilder produzierten, waren die meisten inzwischen so lichtschwach, dass man die Bildinhalte nur noch unter besten Bedingungen (Raum abgedunkelt, kontrastreiches Motiv) ausmachen konnte. In vielen Räumen war multimedialer Unterricht somit nicht mehr möglich.

Neben dem Alter der Geräte war einer der Hauptgründe für die schlechte Bildqualität der alten Projektoren die falsche Bedienung: Da eine der Bildquellen des Projektors eine Dokumentenkamera ist, die permanent ein Bild liefert, schalten sich diese Geräte nicht aufgrund von Inaktivität ab—denn von einer Quelle ist ja immer ein Bild da. Dies bedeutet, dass ein Projektor, der angeschaltet und dann vergessen wurde, so lange weiter läuft, bis man ihn bemerkt und ausschaltet. Dieses Schuljahr dauern die Osterferien 3 Wochen; das sind also über 500 Stunden, die ein solcher Projektor sinnloserweise über die Ferien läuft, wenn er vergessen wird; die Lebensdauer des Leuchtmittels bewegt sich in der Größenordnung von 3.000 Stunden insgesamt. Tatsächlich ist es nicht (nur) die Lampe, die Schaden nimmt—diese wäre ja austauschbar. Der komplette Projektor nimmt solchen Schaden dadurch, dass auch ein Austausch der Lampen nichts mehr hilft.

Um dieses Problem—das auch bei Fernsehern, insbesondere OLED-Modellen, auftritt—zu lindern, verfügen die meisten dieser Geräte über eine automatische Abschaltfunktion ("Auto Off"), die den Nutzer nach einiger Zeit (normalerweise 1-4 Stunden) auffordert, eine Taste an der Fernbedienung zu drücken und ansonsten das Gerät ausschaltet. An unseren alten Projektoren war eine solche Funktion vorhanden ("Abschalt-Timer"), aber leider nicht aktiviert.

Unsere neuen Geräte vom Typ Epson EB-695Wi besitzen eine solche Funktion nicht.

Damit sollte die Sache eigentlich beendet sein: Solche Geräte sind zur Verwendung grundsätzlich ungeeignet, vor allem aber dort, wo die Anzahl der Benutzer sehr groß wird (also in Schulen) und gerne "Streiche" gespielt werden (also in Schulen). Ob ein Gerät für die Verwendung im Schulbetrieb geeignet ist, steht als Kriterium bei der Beschaffung leider weit hinten (gefolgt nur von: wird das Gerät nach der Anschaffung überhaupt genutzt und wie gerne).

Folglich haben wir nun einen Satz von über 70 Projektoren, die alle Gefahr laufen, nach den nächsten Ferien den Geist aufzugeben—eigentlich sollen sie mindestens 8 Jahre halten. Wie es aber—nicht nur im Schulsystem—häufig so läuft, muss man um die Mängel des Gerätes irgendwie herumarbeiten. Solche "Workarounds" fallen mal mehr, mal weniger elegant aus. Ich halte diesen für mittelelegant.

Serial Port Arduino Epson Projector Attitude Readjustment Tool (SPArEPART)

Die Projektoren besitzen zwar keine "Auto Off"-Funktion, dafür aber eine funktionsfähige und recht gut dokumentierte serielle Schnittstelle (RS-232). Über diese kann der Projektor teilweise gesteuert werden—es ist so auch möglich, den Projektor ein- und auszuschalten. Der Plan ist klar: Wir bauen ein Gerät, das dem Beamer alle drei Stunden das Signal zum Ausschalten sendet. Offensichtlich wird ein Arduino benötigt. Da keine absolute Zeit ("jeden Tag um 18 Uhr"), sondern nur eine relative Zeit ("alle 3 Stunden") verwendet wird, wird kein RTC-Modul benötigt. Serielle Verbindungen gehören für Arduinos zum Tagesgeschäft, aber leider verwendet RS-232 anscheinend 12-Volt-Pegel; der Arduino sendet und empfängt mit 3,3 oder 5 Volt. Es wird also ein Konverter wie der MAX3232 benötigt. Auf vielen Wandler-Modulen, auf denen der MAX3232 verbaut ist, ist auch direkt eine serielle Buchse (weiblich) aufgelötet. Schließlich soll der Projektor nicht ohne Vorwarnung ausgeschaltet werden: Über einen Piezo-Summer soll ein Ton ausgegeben werden, bevor der Projektor ausgeschaltet wird. Noch besser wäre es natürlich, den Projektor "stumm" zu schalten—es gibt eine Option, aus dem sogenannten "A/V Mute"-Modus den Projektor nach einer kurzen Zeit auszuschalten. Der "A/V Mute"-Modus hat aber den Vorteil, dass er durch Tastendruck sofort deaktiviert werden kann, während nach dem Ausschalten eine kurze Zeit gewartet werden muss, bis der Projektor wieder angeschaltet werden kann. In Version 2 soll noch ein Klatschsensor eingebaut werden: Kurz vor dem Ausschalten spielt das Gerät die Tonfolge Shave and a Haircut; antwortet der Benutzer durch zweifaches Klatschen ("Two Bits!"), wird der Timer zurückgesetzt.

Teileliste:

Bilder:

SPArEPART, Ansicht oben
SPArEPART, Ansicht oben
SPArEPART, Ansicht vorne
SPArEPART, Ansicht vorne

Code:

#include <SoftwareSerial.h>
#include "pitches.h"

const byte rxPin = 3;
const byte txPin = 2;
// there is almost a 50-50 chance the RX and TX pins are reversed
// you may have to try both configurations
const byte tonePin = 12;
unsigned long lastReset;
const int noLegato = 100;

SoftwareSerial ProjSer(rxPin, txPin);

void setup() {
  ProjSer.begin(9600);
  lastReset = millis();
  pinMode(tonePin, OUTPUT);
}

void loop() {
  if (lastReset + 1000UL * 60 * 60 * 3 < millis()) {
    play_shave_and_a_haircut(tonePin, 70);
    delay(30 * 1000);
    ProjSer.println("MUTE ON");
    delay(100);
    ProjSer.println("MUTE ON");
    delay(100);
    ProjSer.println("MUTE ON");
    lastReset = millis();
  }
  delay(1000);
}

void play_shave_and_a_haircut(const byte tonePin, const int toneLength) {
  tone(tonePin, NOTE_G5, toneLength * 2);
  delay(toneLength * 2);
  noTone(tonePin);
  delay(noLegato);
  tone(tonePin, NOTE_D5, toneLength);
  delay(toneLength);
  noTone(tonePin);
  delay(noLegato);
  tone(tonePin, NOTE_D5, toneLength);
  delay(toneLength);
  noTone(tonePin);
  delay(noLegato);
  tone(tonePin, NOTE_E5, toneLength * 2);
  delay(toneLength * 2);
  noTone(tonePin);
  delay(noLegato);
  tone(tonePin, NOTE_D5, toneLength * 2);
  delay(toneLength * 2);
  noTone(tonePin);
  delay(noLegato);
}

Skizze (Fritzing):

Fritzing-Skizze

Bilder von den PCBs:

SPArEPART-PCB
SPArEPART-PCB
fertig zusammengebauter SPArEPART mit PCB
fertig zusammengebaut

Den Fritzing-Sketch, mit dem die PCBs erstellt wurden, gibt es hier: SPArEPART_pcb.fzz

Vielen Dank an AISLER, die die PCBs sehr schnell hergestellt haben!

Und das funktioniert?

Erstaunlicherweise ja, und es passt auch gerade so in die Anschlussöffnung am Projektor! Jetzt gilt es nur noch, 70 davon herzustellen und an allen Projektoren der Schule zu installieren. Hm, vielleicht hat ja der Informatik-Kurs Zeit...

Trackbacks

Keine Trackbacks

Kommentare

Ansicht der Kommentare: Linear | Verschachtelt

Noch keine Kommentare

Kommentar schreiben

Standard-Text Smilies wie :-) und ;-) werden zu Bildern konvertiert.
Umschließende Sterne heben ein Wort hervor (*wort*), per _wort_ kann ein Wort unterstrichen werden.
Die angegebene E-Mail-Adresse wird nicht dargestellt, sondern nur für eventuelle Benachrichtigungen verwendet.

Um maschinelle und automatische Übertragung von Spamkommentaren zu verhindern, bitte die Zeichenfolge im dargestellten Bild in der Eingabemaske eintragen. Nur wenn die Zeichenfolge richtig eingegeben wurde, kann der Kommentar angenommen werden. Bitte beachten Sie, dass Ihr Browser Cookies unterstützen muss, um dieses Verfahren anzuwenden.
CAPTCHA

Formular-Optionen

Kommentare werden erst nach redaktioneller Prüfung freigeschaltet!