Microcontroller-Tutorial - RC5 LCD Tester

  • Hallo zusammen,


    anbei habe ich mal zusammengetragen, was man für einen RC5 Code Tester mittels µC benötigt, um mal die Reihe der µC Tutorials weiterzuführen. Ich weiß das es viele Anleitungen auch im Internet gibt, aber ich habe es mal für "unsere" µC Tutorials aufgearbeitet.


    Aufgabe:
    Testen, ob eine Fernbedienung oder Universalfernbedienung einen RC5 Code aussendet und wenn ja, welchen. Dies kann hilfreich für weitere Projekte mittels IR Diode, RC5 Fernbedienung und LED's sämtlicher Konfigurationen sein.


    Benötigte Teile:


    - Atmel Attiny 2313 (Pollin)
    - Festspannungswandler - 5V - z.B. 7805 (Pollin)
    - IR Empfänger Diode TSOP 1136 (Pollin)
    - LCD 16*2 Goldentek GC-1602G0 (Pollin)
    - Kondensator 4,7µF (lt. Datenblatt IR Diode)
    - Widerstand 100 Ohm (lt. Datenblatt IR Diode)
    - Grundverständnis für RC5 Code (Internet - z.B. ..:: hier ::.. oder ..:: hier ::..)


    Aufbau:


    Da ich noch kein Atmel Eval. Board besitze (ist aber in Arbeit) habe ich den Aufbau auf einer Experimentie Platine vorgenommen.
    Die folgende Eagle Skizze soll den Aufbau mal verdeutlichen.
    Ich habe mal keinen Programmer eingezeichnet, auch ein Reset Taster habe ich mal weggelassen. Dies ist alles ausführlich von Member Stefan_Z aufgearbeitet worden.


    [Blockierte Grafik: http://img518.imageshack.us/img518/3364/rc5irlcdtesterap6.th.jpg]


    Bascom Quell Code:


    [code:1]
    $regfile = "attiny2313.dat"
    $crystal = 4000000


    $lib "mcsbyte.lbx"


    Config Lcdpin = Pin , Db4 = Portd.0 , Db5 = Portd.1 , Db6 = Portd.2 , Db7 = Portd.3 , E = Portd.5 , Rs = Portd.4
    Config Lcd = 16 * 2


    Config Pinb.4 = Output 'Pinb.4 = Ausgang (evtl. Kontroll LED)


    Initlcd
    Cursor Off
    Cls


    Config Rc5 = Pinb.0
    Enable Interrupts
    Dim Address As Byte , Command As Byte


    Cursor Off
    Cls
    Locate 1 , 1
    Lcd "Waiting for RC5."


    Do
    Getrc5(address , Command)


    If Address < 255 Then
    'clear the toggle bit
    'the toggle bit toggles on each new received command
    'toggle bit is bit 7. Extended RC5 bit is in bit 6
    Command = Command And &B01111111
    'Toggle Portb.4 'schalte Kontroll LED (an oder aus)
    Locate 2 , 1
    Lcd "Adr:" ; Address ; " Cmd:" ; Command ; " "
    End If


    Loop
    End
    [/code:1]


    Bemerkung:
    Ich habe mal alles an Fernbedienungen durchgetestet was ich so hier habe (ca. 10 Stück). Das Ergebnis ist, das sowohl "Wald-und-Wiesen" Fernbedienungen als auch Fernbedienungen von Markengeräten, irgendwas aussenden, nur keinen RC5 Code.
    Meine letzte Hoffnung war eine Medion Universal Fernbedienung (MD 41160) - an dieser habe ich den automatischen Suchlauf gestartet und nach ein paar Sekunden reagierte das Display. Ich habe mal bei Adresse "0" (für Fernseher) halt gemacht und diesen gespeichert.
    Danach konnte ich mir alle "Commands" anschauen, die die einzelnen Funktionen aussenden (z.B. Command für Vol + "16" oder Vol - "17" )


    [Blockierte Grafik: http://img518.imageshack.us/img518/2914/lcdrc5codeoe2.th.jpg]


    Diese Codes kann man sich nun aufschreiben und darauf aufbauend für verschiedene Aufgaben verwenden - Ein- / Ausschalten, Dimmen, RGB Farben mischen usw.

  • Es sei hier noch angemerkt, dass der Bascom RC5-Code recht viel Flash-Speicher verbraucht. Dazu noch die Display-Routine und schon sind die 2kB fast voll! Da bleibt leider für mehr kaum Platz für nen RGB-Fader o.Ä.


    Der Mega8 ist da schon cooler - die 8kB Flash kriegt man mit der Demo von Bascom eh nicht voll und 2kB EEPROM reichen auch für ne Menge Presets.

  • da hast Du natürlich recht, es soll ja auch nur zum Test sein.
    Ist schnell aufgebaut und reingeflasht.
    RGB Fader mit RC5 in ATTiny2313 war ja eh mein Problem 8-[ , von daher...


    Hat der Mega8 nicht nur 512 byte EEPROM?

  • Zitat von "amron"

    da hast Du natürlich recht, es soll ja auch nur zum Test sein.
    Ist schnell aufgebaut und reingeflasht.
    RGB Fader mit RC5 in ATTiny2313 war ja eh mein Problem 8-[ , von daher...
    Hat der Mega8 nicht nur 512 byte EEPROM?


    Jau, ich sags nur noch, nicht dass jemand denkt, er könnte auch noch ne Menge zusätzlichen Code im 2313 parken - das Ding ist echt klein...
    Woops - ja, has recht! Der M8 hat wirklich nur 512Byte - aua. Aber dafür hat er ja I2C und kann damit einfach externen EEPROM ansprechen.

  • Hallo,
    irgendwie schein ich da etwas nicht ganz zu verstehen. Ich habe diese Schaltung aufgebaut. Funktioniert super. Nur was mich wundert ist das ich drei Fernbedienungen von Philips habe (Fernseher, DVD-Player und WLAN-Audioplayer) es funktionieren auch alle, das steht fest, habe vorher alle ausprobiert. Jedoch ist die für den Fernseher die einzige die auf dem Display ein Ergebnis zeigt. Und auch nur die Hälfte der Tasten. Kann mir einer erklären woran das liegt.
    Gruß sunny

  • Hallo,
    irgendwie schein ich da etwas nicht ganz zu verstehen. Ich habe diese Schaltung aufgebaut. Funktioniert super. Nur was mich wundert ist das ich drei Fernbedienungen von Philips habe (Fernseher, DVD-Player und WLAN-Audioplayer) es funktionieren auch alle, das steht fest, habe vorher alle ausprobiert. Jedoch ist die für den Fernseher die einzige die auf dem Display ein Ergebnis zeigt. Und auch nur die Hälfte der Tasten. Kann mir einer erklären woran das liegt.
    Gruß sunny

    Es kann sein, dass die RC6 sendet... kann Bascom auch - versuchs mal... Oder schau in nem IR Forum nach Infos...

  • Das heißt man kann bei nem kauf nur erahnen ob ne Fernbedienung RC5 benutzt? Oder kann man das (ungekauft) festellen welche auf jeden Fall tut?
    Könnt ihr mir FB nennen die auf jeden Fall mit RC5 senden?


    Gruß
    matze

  • Command = Command And &B01111111



    Hab zu dem code teil mal ne frage. Mir kommt der Code bischen bekannt vor und damals hatte ich das auch schon nicht gewusst.


    Was macht dieser Code schnipsel? Was macht AND???????? Ist ja die logische und verknüpfung, doch ich kann mir da nicht vorstellen wie da ergent was passiert kann mir das mal bitte einer kurz erläutern?


    Mir ist schon klar das da steht das das togbit damit getoggelt wird, doch nur wie?


    ?( ?( ?( #


    MfG

  • Wie Du schon schreibst, das ist ein logisches UND. Die Zeichenfolge &B bedeutet, dass eine Binärzahl folgt. Command ist auch 8 Bit lang und wird damit an jeder Stelle verknüpft. D.h. 1+1 = 1; 1+0=0; 0+1=0; 0+0=0;


    Die fest vorgegebene Zeichenkette bewirkt, dass das erste Bit ausgeblendet wird (da ja Null fest vorgegeben). Umgerechnet bedeutet dies, dass statt 256 verschiedenen Werten (0-255) nur 128 übrig bleiben. Ich gehe davon aus, dass das die Spezifikation von RC5 vorschreibt. Um also nicht falsche Werte zu erhalten, wird einfach das erste Bit ausgeblendet.


    Nino

  • Abend!


    Ja der Mega8 hat nur 512 Byte EEPROM, aber ihr ladet das Programm ja in den Flshspeicher und davon hat der Mega8 8k. Der Tinny2313 hat im Gegensatz nur 2k Flash und 128 Byte EEPROM.
    Das Program für den RGB-Fader sollte eigentlich komplett im Flashspeicher landen, daher sollte kein Speichermangel herschen!

  • So... hab mal alles aufgebaut.. Allerdings mit nem ATmega88...


    Hab ne Universalfernbedienung von Vivanco ausprobiert. Hab dort einen Senderdurchlauf gemacht...
    Das Display reagiert auch. und zwar erscheint bei Tastendruck dort immer (also egal welche Taste ich drücke): Adr:10 Command:106


    Wisst ihr woran das liegen könnte?
    Danke

  • naeschd
    Wenn du den Code so übernommen hast wie er ist, könnte es daran liegen, dass es der falsche Prozessor ist.
    Du musst natürlich den Code für den MEGA88 kompilieren - sollte $regfile="m88def.dat" sein.
    Falls du das geändert hast; stimmen die Fusebits?


    Buttamilch
    Ein Blick ins Datenblatt könnte da weiterhelfen :rolleyes:
    Übrigens gibt es kein 10-SU Gehäuse - das ist ein SO20IC Gehäuse. Normalerweise lötet man da keine Pins dran ;( sondern integriert die ISP Schnittstelle in der Leiterplatte. Kauf dir besser einen im DIP-Gehäuse :whistling:

  • Hab ne Universalfernbedienung von Vivanco ausprobiert. Hab dort einen Senderdurchlauf gemacht...
    Das Display reagiert auch. und zwar erscheint bei Tastendruck dort immer (also egal welche Taste ich drücke): Adr:10 Command:106

    Könnte auch sein, dass die Universal-FB auf ein bestimmtes Gerät eingestellt ist, das die Adresse 10 braucht. Vielleicht die FB noch umprogrammieren. Bei mir hat es wie gesagt mit dem ersten Philips-Code funktioniert.

  • sry das ich den alter thread hier raus krame, aber ich wollte das nachbauen und hab da ein paar probleme :)


    angefangen damit, was soll das poti in dem schaltplan ?? brauch ich das zwingen oder kann ich es auch einfach weglassen ??
    dann hab ich mir als diesplay dieses hier geholt. das hat einmal die 16 anschluss pins und zusätzlich an der rechten außenseite nochmal 2 pins für plus und minus.


    das komische ist, laut schaltplan ist pin1 = Vss (= - ? ) und pin2 = Vdd (= + ?).


    wenn ich aber mit meinem multimeter nachmesse, sind die beiden pins nicht mit den beiden anschlüssen rechts am display verbunden.
    allerdings sind pin 15 und pin 16 mit denen verbunden, die aber laut datenblatt aber BLA und BLK sein sollen.


    oder kann es sein, das ich von der falschen seite aus lese? wo pin 1 und pin 16 ist, steht aber auf der rückseite der platine drauf. da kann ich doch eigentlich nicht von der falschen seite lesen oder ??


    hm das sind erstmal meine hauptprobleme. vlt kann mir ja einer helfen.


    bisher zeigte das display nämlich garnichts an. und ich hab beide anschlussvarianten probiert.
    kann dabei was kaputt gehen ?


    mfg Flipp

  • Ich verstehe dein Problem nicht so ganz. In dem Datenblatt Seite 8 ist doch die Belegung genau angegeben ?(
    BLA und BLK ist die Hintergrundbeleuchtung. Natürlich ist die nicht mit der Versorgungsspannung verbunden. Die wird über Vorwiderstand bei Bedarf beigeschaltet.
    Das Poti ist für die Kontrasteinstellung. Weglassen geht nur, wenn du es durch entsprechende Widerstände ersetzt. Die musst du aber erst mal ermitteln um bei deinem Betrachtungswinkel was lesen zu können.

  • mein problem ist, das so wie die bedruckung auf der platine ist, BLA und BLK aber mit + und - verbunden wären.


    auf der platine steht am einen ende der pins eine 16 und am anderen eine 1.
    und wenn ich nach diesen zahlen zähle, ist pin15 = Vdd und Pin16 = Vss
    was genau spiegelverkehrt zum datenblatt ist.


    naja ich werds nachher nochmal testen. gegebenenfalls mach ich noch mal n foto davon.


    aber danke für die info mit dem poti. das könnte meine probleme schon beheben



    mfg Philipp

  • und zusätzlich an der rechten außenseite nochmal 2 pins für plus und minus.

    Das sind idR keine Pins für Plus und Minus sondern die Anschlüsse vom Backlight. Deshalb sind sie auch mit 15 und 16 verbunden.
    Das ist eigentlich immer so - nur steht sonst A und K dran was ja richtiger wäre.