RC5-Fernbedienung dekodieren

Elektronik-Labor   Projekte   AVR 




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