Update: Ursprünglich lautete der Titel des Beitrags „Raspberry Pi (mit openELEC) per IR Fernbedienung EINschalten“. Es geht natürlich mit jedem Raspi, egal was drauf läuft 😉

Wer einen Raspberry Pi 2 mit openELEC sein eigen nennt, der kennt dieses kleine Problemchen:
Fährt man openELEC runter, dann macht der Pi einen Shutdown und schlummert dann vor sich hin. Für gewöhnlich kann man ihn dann nur mit Stecker raus/rein oder mit einem Reset (Taster anlöten) wieder wecken.
Es gibt durchaus Bastellösungen, wie zB über einen USB Stecker am TV und Bauteilen für 50 Pfennig den Pi einen Reset machen lassen, wenn der USB Port am TV wieder Strom bekommt. Nun hat aber meine Glotze keinen USB Port und außerdem finde ich das einfach Kacke.

Ich will meine IR Fernbedienung dafür nutzen! Und zwar die Uralte, die ich noch von meinem Asus HDP-R1 übrig habe. Punkt.

Idee:
Kleine Schaltung bauen, die eine Taste meiner Fernbedienung lernt und mir nach drücken auf diese Taste, den Raspi wieder aus dem Shutdown weckt.

Zeit für Inventur in der Bastelkiste:
– ein alter µC (ATmega 328p, in diesem Fall)
– ein TSOP 31238 (38kHz IR Empfänger)
– 4N33 Optokoppler
– paar Widerstände, ein Folienkondensator und Pinheader

Damit lässt sich doch was anfangen 😉

Wie bekommt man den Raspi generell aus dem Schlafmodus/nach dem Shutdown wieder erweckt? Da gibt es diese Möglichkeiten:
1. Stecker rein/raus
2. Reset Taster drücken
3. Pin 5 der Pinleiste kurz auf GND ziehen

Variante 1 fliegt raus. Varianten 2+3 sind umsetzbar.
Am besten wäre Punkt 2, dann sind die GPIOs für I²C (Pin 3+5) nicht belegt.
Allerdings muss man „der Schaltung“ dann noch irgendwie mitteilen, wann sie arbeiten soll. Nämlich nur, wenn der Pi im Shutdown ist. Sonst gibt es einen Reset mitten drin 😉 Ich denke da könnte man einen beliebigen, freien GPIO Pin LOW schalten. D.h. im Normalbetrieb ist dieser Pin auf LOW geschaltet und dann arbeitet die Schaltung nicht. Wenn der Pi dann runterfährt, ist der Pin HIGH und dann reagiert sie.

Für die schnelle reicht erst mal Variante 3, Pin 5 auf GND ziehen.

Hier der Schaltplan für Eagle:
Download irturnon.sch.zip

Links oben eine Stiftreihe um die Platine an den Pi anzuschließen. Pin 1 geht an 3V3 oder 5V (geht beides und über den Optokoppler ist der GPIO des Pi von Vcc entkoppelt), Pin 3 geht an Pin 5 des Pinheader auf dem Pi, Pin 5 geht an GND (am Pi zB Pin 6).

Und hier das eilig zusammen gehackte Progrämmchen für die Arduino IDE.

Download IRturnon.ino.zip

Was macht das Programm? Nach dem Einschalten liest es Adresse 0-3 im Eeprom aus. Findet es dort etwas (was auch immer) dann geht es gleich auf Empfang. Meine neuen m328p hatten da nichts drin, Ergebnis war -1. Dann geht es zuerst in den Lernmodus. Im Lernmodus ist die rote LED an. Eine beliebige Taste auf der Fernbedienung drücken und die Taste wird gelernt und im Eeprom gespeichert. Wer die Taste ändern will, der muss den PROG Taster drücken. Danach geht es wieder in den Lernmodus.

Wird dann die gelernte Taste gedrückt, leuchtet zur Anzeige die LED kurz auf und der Optokoppler schaltet durch und verbindet Pin 5 kurz  (100ms) mit GND. Der Raspi geht wieder an.

Tadaaa!
Tips zum Nachbau: Alle ICs sockeln. Dito für den TSOP, dann kann man ihn leicht gegen andere Typen (kein 38kHz) wechseln.