U23 2005/Infrarotdecoder

From C4 Wiki
< U23 2005
Revision as of 16:20, 9 October 2007 by Pylon (talk | contribs) (Reverted edits by 64.27.5.49 (Talk); changed back to last version by Pylon)
Jump to: navigation, search

Einleitung

Der gewöhnlich Nerd ist faul. Was liegt da näher als das Fnordlicht gemütlich vom Bett aus steuern zu können. Damit war die Idee zum Infrarot-Empfänger am Fnordlicht geboren.

Dazu ist in der Firmware ein RC5-Decoder integriert. RC5 ist ein von Phillips entwickeltes weit verbreitetes Infrarot-Datenübertragungs-Protokoll. Es ist besonders geeignet, weil es recht gut dokumentiert ist. Praktisch alle billigen Multi-Gerät-Fernbedienungen unterstützen dieses Protokoll.


Übersicht über RC5

Es gibt an vielen Stellen gute Dokumentation zu RC5. Deswegen wirds hier nur ne kurze Übersicht mit einigen Stichworten geben.

Ein RC5 Datenpaket besteht aus 14 Bit.

Diese Bits werden in der sog. Manchester-Codierung übertragen.

Was genau diese 14-Bits bedeuten ist hier recht gut dokumentiert: Knowledge-Base


Hardware am Fnordlicht

Am Fnordlicht kann man direkt einen TSOP1738 Infrarot-Empfangsbaustein anschließen. Der TSOP-Baustein hat drei Beine. Er kann direkt über den 78l05 der Powerplatine mit 5V Spannung versorgt werden. Die Datenleitung kann direkt an INT0 (PD2) des AtMega8 angeschlossen werden. Es werden keine weiteren Bauteile benötigt.

(Hier kommt noch ein Foto von der Beschaltung hin)


Decoder Software

Im SVN Repository gibt es ein Subdir "/ir". Da liegt der RC5-Decoder Code.

Die eigentlich Arbeit übernimmt der Code in der Datei "ir_decoder.inc". ir_test ist im selben Unterverzeichnis ein Programm, das mit

 make irtest install_irtest

auf das Fnordlicht übertragen werden kann. ir_test überträgt empfangene RC5-Signale per RS232 an den Rechner, und kann so mit screen (irgendwo anders im Wiki dokumentiert) angesehen werden.

So kann man beispielsweise sicherstellen, dass die verwendete Fernbedienung auch wirklich gültige RC5-Signale aussendet.


Decoder in der Firmware aktivieren

Standardmäßig ist in der Firmware der RC5-Decoder deaktiviert. IR_DECODER kann aktiviert werden. Dann reagiert die Firmware auch auf Infrarot-Befehle.

Ich bin gerade dabei das aktivieren anständig zu lösen. Danach gibts dann die Doku hier.

Die Ungeduldigen können einfach in

 fnordlicht.asm 
 IR_DECODER 1 

setzen.

bisher implementierter Befehlssatz

RC5 definiert einige Standard-Befehle. So sind bei einer RC5-Fernbedienung die Zifferntaste mit den Codes 0x1, 0x2, ... belegt. Die Firmware reagiert auf diese Codes, genau wie auf Ziffern, die über die serielle Schnittstelle gesendet werden.

Aktion mehr weniger
rot 1 4
grün 2 5
blau 3 6

Die Power-Taste beendet alle aktiven Skripte. Will heißen, das automatische Fading der Firmware wird beendet. Dann fuscht einem die Firmware in die individuelle Farbwahl nicht rein.

Mit der Enter-Taste wird die aktuelle Farbe gehalten.