Display für Fernbedienung mit RC5-Codierung

Foto der fertigen Platine (Thumbnail)

Das RC5-Protokoll und die dazugehörige Codierung wurde von Philips Ende der 1980er Jahre entwickelt. Es dient zur Übertragung von Befehlen an Geräte, vor allem im Bereich Unterhaltungselektronik. Ganz grob zusammengefasst werden Telegramme mit 14 Bit Länge auf ein rechteckiges Trägersignal aufmoduliert. Die Frequenz dieses Trägersignals ist üblicherweise 36 kHz, wobei gelegentlich auch 38 oder 40 kHz genutzt werden. Die Telegramme selbst werden über eine zeitliche Länge von 24,9 ms gesendet (eine Bitzeit umfasst 1,778 ms) und wird etwa alle 114 ms wiederholt. Eine recht genaue Beschreibung der Modulation und des Protokolls inklusive Berechnung der Timings findet man im Artikel zu RC-5 der englischen Wikipedia.

Für den Bastler viel interessanter ist, daß es fertige Bauteile gibt, die das Nutzsignal von der Trägerfrequenz trennen und als TTL-Pegel ausgeben: TSOP 31236 (Nachfolger des TSOP 1736). Der TSOP 31236 kostet weniger als 1 Euro und kommt in einem dreibeinigen Gehäuse, das gleichzeitig als IR-Linse und IR-Filter fungiert. Zur Auswertung benutzt man sinnvollerweise einen Mikrocontroller, wobei es mich schon fast in den Fingern juckt das mal mit einem TTL-Massengrab zu implementieren. :-)

Die hier gezeigte Schaltung setzt einen ATmega8 ein. Die reine RC5-Dekodierung ist allerdings mit einem viel kleineren Controller realisierbar. Auf den ATmega8 fiel die Wahl, weil ich zur Ausgabe eine gemultiplexte 7-Segment-Anzeige verwenden wollte, wofür schonmal 11 Portpins notwendig waren (zumindest wenn man keine Shift-Register oder ähnliche Extender einsetzen will). Hat übrigens auf eine einseitige Platine gepasst (mit einer Drahtbrücke), aber ich glaube bei vier 7-Segment-Modulen ist dann auch Schluß.

rc5disp

Dieses Paket enthält die Hardware (Schaltplan und Layout im Eagle-Format) sowie die grundlegende Firmware zur Anzeige der Geräteadresse und des Befehls-Codes. Diese eignet sich prima um herauszufinden, ob eine bestimmte Fernbedienung unterstützt wird und welche Codes die einzelnen Tasten erzeugen.

Positiv gestestete Fernbedienungen:

Negativ gestestete Fernbedienungen:

rc5clock

Dieses Software-Projekt implementiert eine einfache Uhr (die allerdings etwas ungenau läuft, weil das Board keinen Quarz benutzt). Diese kann über die TIME-Taste in den Setup-Modus versetzt werden, bei der über die Tasten 0 bis 9 die Uhrzeit eingestellt wird. Das jeweils einzustellende Segment blinkt dabei. Mit der OK-Taste wird der Setup-Modus verlassen und die Uhr läuft weiter.

Das Interessante an dieser Software ist, daß das Toggle-Bit genutzt wird um Mehrfachauswertung der Tasten zu vermeiden. Beim Start ist nicht bekannt, was als nächstes folgen muß, daher wird das erste Telegramm ungeachtet des Toggle-Bits verwertet und die "Erwartung" darauf aufgebaut. Wenn man allerdings nach einem erkannten Tastendruck den nächsten "versteckt" (Hand vor die Fernbedienung halten), wird der nächste darauf folgende (reguläre) Tastendruck ignoriert (weil er für eine Wiederholung der ursprünglichen Aktion gehalten wird). Hier wäre eine sinnvolle Verbesserung einen Timeout einzubauen, der das erwartete Toggle-Bit nach Ablauf von z.B. einer Sekunde wieder auf "unknown" zurücksetzt.

Downloads

Projekt Version Datum Änderungen Datei Beschreibung
rc5disp 1.0 2012-07-07 Erstes Release rc5disp-1.0.zip Schaltplan und Layout im Eagle-Format (Version 6),
einfache Firmware zur Anzeige von Codes
rc5clock 1.0 2012-07-08 Erstes Release rc5clock-1.0.zip Software: einfache Uhr mit Einstellmöglichkeit via Fernbedienung