
RC5-Fernbedienung dekodieren
Geräte
der Unterhaltungselektronik kommen und gehn, aber ihre Fernbedienungen
bleiben bestehn. Beim Aufräumen findet man dann so etwas und kann
nicht mal mehr genau sagen, zu welchem Gerät es mal gehörte.
Aber eine genauere Untersuchung lohnt sich! Es könnte ja eine
RC5-Fernsteuerung sein, und damit ergeben sich dann ganz neue
Möglichkeiten. Ein Test mit dem Oszilloskop brachte in diesem Fall
durch Vergleich der Signale mit einer bekannten Fernbedienung das
vorläufige Ergebnis, dass es tatsächlich eine
RC5-Fenbedienung ist, anscheinend für einen vergangenen
Videorekorder
und sogar noch mit guten Batterien drin.
Bascom
hat Befehle für RC5-Signale. Und der passende Aufbau mit dem
ES-M32 war auch schon da, denn er diente mal zum Empfang von
IR-Fernsteuersignalen eines Spielzeug-Helikopters.
Also ein schneller Test! Man braucht außer dem Mega32 nur noch
den TSOP-Empfänger, der an Port
C.7 angeschlossen ist. Bei Reichelt gibt es übrigens den neuen Typ
TSOP31236 mit verbesserten Daten und einem erweiterten Spannungsbereich
zwischen 2,5 V und 5,5 V.
Das Programm empfängt die
Geräteadresse und das Kommando, stellt beide auf dem LCD dar und
sendet sie zugleich über die serielle Schnittstelle an den PC. Die
Geräteadresse lautet in diesem Fall 6 und steht für den
Videorekorder. Das Kommando entspricht den Tasten und enthält ein
zusätzliches Toggle-Bit 7. Die Taste 1 liefert also abwechselnd 1
und 129. So kann man das Ende eines Tastendrucks erkennen und lange und
mehrfache Betätigung unterscheiden. In diesem Fall sollen zum Test
zusätzlich zwei LEDs mit den Tasten 1 und 2 gesteuert werden. Mit
dem Toggle-Bit ist die Sache einfach. Die Taste 2 liefert abwechselnd
eine 2 (Ausgang 2 an) und eine 130 (Ausgang 2 aus). .
Das
Programm wertet die Geräteadresse mit Absicht nicht aus. So kann
man leicht erkennen, ob der RC5-Code verwendet wird, ganz
unabhängig vom ursprünglichen Zielgerät. Das Programm
erfüllt also zwei Aufgaben: 1. Test auf RC5-Signale und 2. eine
Steuerung für zwei Verbraucher.
Download: Esm32rc5.zip
'Bascom ATmega32, RC5
$regfile = "m32def.dat"
$crystal = 11059200
$hwstack = 16
$swstack = 32
$framesize = 32
Baud = 9600
Config Lcdpin = Pin , Db4 = Portb.4 , Db5 = Portb.5 , Db6 = Portb.6 , Db7 = Portb.7 , E = Portb.3 , Rs = Portb.2
Config Lcd = 16 * 2
Initlcd
Cls
S1 Alias Pind.2
S2 Alias Pind.3
S3 Alias Pind.6
S4 Alias Pind.7
Config Portd = &B00110000
Portd.2 = 1
Portd.3 = 1
Portd.6 = 1
Portd.7 = 1
Out1 Alias Portd.4
Out2 Alias Portd.5
Config Rc5 = Pinc.7
Enable Interrupts
Dim Address As Byte
Dim Command As Byte
Do
Getrc5(address , Command)
If Address < 255 Then
Locate 1 , 1
Lcd Str(address) + " "
Lcd Str(command) + " "
Print Address
Print Command
If Command = 1 Then Out1 = 1
If Command = 129 Then Out1 = 0
If Command = 2 Then Out2 = 1
If Command = 130 Then Out2 = 0
End If
Loop
End
Elektronik-Labor Projekte AVR