Forum: Mikrocontroller und Digitale Elektronik Universal-RC5-Fernbedienung


von Bastler (Gast)


Lesenswert?

Nach einiger Zeit "herumgegoogle" hätte ich eine Frage an Euch.

Wo kann ich eine günstige kleine RC5 Fernbedienung finden. Ich stelle 
mir eine vor mit 10 Zahlentasten, Taste + und - ganz simple soll es 
sein.

Möchte meine RGB Schaltung "nachrüsten"

Welchen Empfänger nimmt man am besten ( Bascom Auswertung )

von Moep (Gast)


Lesenswert?

Als Empfänger kannst du einen TSOP 1736, TSOP 1836 oder einen der 
Vergleichstypen nehmen. Einfach mal bei Google oder hier in der 
Artikelsammlung scheuen, da gibt es diverse.

Als Fernbedienung am besten eine einfache Universalfenbedienung, da 
kannst du mit großer Sicherheit ein Gerät mit RC5 Kodierung einstellen.

von tt4u (Gast)


Lesenswert?


von Bastler (Gast)


Lesenswert?

Danke erst mal, beim Reichelt habe ich sowas entdeckt. Aus dem 
Datenblatt geht nicht vor ob das Gerät auf RC5 Codierung einstellbar ist

http://www.reichelt.de/Fernbedienungen/URC-ZAPPER-3-SI/index.html?;ACTION=3;LA=2;ARTICLE=77491;GROUPID=4971;SID=12TeX9rn8AAAIAAHrYQ8Qd6460f9c91fef2b88fc57eefca92080b

von Bastler (Gast)


Lesenswert?

tt4u schrieb:
> http://www.mikrocontroller.net/articles/IRMP

Muss mal schauen ob ich unter Bascom was finde..Bestimmt..

von Moep (Gast)


Lesenswert?

RC5 Findet man eigentlich in jedem älteren Phillips Gerät, so lange man 
die Fernbedienung auf irgend ein älteres Phillips Gerät einstellen kann 
sollte man auch RC5 haben.

von Harald Wilhelms (Gast)


Lesenswert?

Moep schrieb:
> Als Empfänger kannst du einen TSOP 1736, TSOP 1836 oder einen der
> Vergleichstypen nehmen. Einfach mal bei Google oder hier in der
> Artikelsammlung scheuen, da gibt es diverse.

Leider hat man dann das ganze noch nicht dekodiert. Es gibt zwar
IRMP, aber zur Dekodierung von RC5 ist das oversized. Es wäre
schön, wenn man einen einfachen Empfänger nur für RC5 hätte.
Einen Sender dafür findet man dagegen wesentlich leichter.
Gruss
Harald

von Frank M. (ukw) (Moderator) Benutzerseite


Lesenswert?

Harald Wilhelms schrieb:

> Es gibt zwar IRMP, aber zur Dekodierung von RC5 ist das oversized.

Darüber lässt sich trefflich streiten, schließlich kann man im IRMP 
sämtliche anderen Protokolle deaktivieren, so dass sie nicht 
mitübersetzt werden. Das lässt das Compilat heftigst schrumpfen ;-)

> Es wäre schön, wenn man einen einfachen Empfänger nur für RC5 hätte.

Gibt es in der Codesammlung von Peter Dannegger:

Beitrag "Fernbedien RC5 Empfänger"

Gruß,

Frank

von moep (Gast)


Lesenswert?

> Leider hat man dann das ganze noch nicht dekodiert.

Das ist natürlich richtig.

Er hatte oben geschrieben, dass er Bascom benutzt - wenn mich nicht 
alles täuscht ist dort schon eine RC5-Routine schon eingebaut, man muss 
an sich nur noch den Empfänger anschließen.

Ansonsten gibt es für C ja wie gesagt auch noch die Routine von P. 
Dannegger, die auch wunderbar funktioniert :)

von JojoS (Gast)


Lesenswert?

Es gibt eine Technisat FB TS-35, die ist recht verbreitet (für TV-Tuner 
Karten für den PC) und als Ersatz bei eBay für knappe 10€ zu haben.
Für RGB gibt es auch 'spezielle' FB, such mal ebenfalls bei eBay nach 
'RGB Fernbedienung'. Da findest du Controller oder fertige RGB LED 
Strahler mit einer passendenden FB, die billigsten liegen auch unter 
10€. Diese FB nutzt allerdings einen NEC Code. Der P. Dannegger RC-5 
Code kann mit wenigen Anpassungen diese IR-FB auch lesen, ob Bascom die 
eingebaut hat weiss ich nicht. Diese FB gab es auch mal bei Reichelt für 
4,95 einzeln, ist aber leider aus dem Angebot verschwunden.

von Bastler (Gast)


Lesenswert?

Danke für die haufen Anregungen. Ich werde erst mal den Empfänger 
besorgen, habe noch einige FBs rumliegen, ein bisschen testen.

von Frank M. (ukw) (Moderator) Benutzerseite


Lesenswert?

JojoS schrieb:
> Da findest du Controller oder fertige RGB LED Strahler mit einer
> passendenden FB, die billigsten liegen auch unter 10€.

Ich hatte mir vor ein paar Wochen einige von denen

http://www.dealextreme.com/p/24-key-wireless-infrared-ir-remote-controller-for-rgb-led-light-bulb-1-cr2025-47019

für 0,99 $ geschossen, mittlerweile kosten sie aber 2,80 $ - ohne 
Versandkosten.

> Diese FB nutzt allerdings einen NEC Code.

Korrekt.

> Der P. Dannegger RC-5 Code kann mit wenigen Anpassungen diese IR-FB
> auch lesen, [...]

Der Dannegger-Code decodiert das Manchester-Protokoll RC5, Das 
NEC-Protokoll ist ein Pulse-Distance-Protokoll. Das will ich sehen, wie 
Du mit "wenigen Anpassungen" den Dani-Code auf NEC umschreiben willst. 
Da bleibt kein Stein mehr auf dem anderen.

Hier eine Detail-Übersicht der von IRMP unterstützten Protokolle:

  http://www.mikrocontroller.net/articles/IRMP#Die_IR-Protokolle_im_Detail

> [...] ob Bascom die eingebaut hat weiss ich nicht.

Bascom kann nur die fast ausgestorbene Variante RC5.

von Bernhard M. (boregard)


Lesenswert?

Frank M. schrieb:
> Der Dannegger-Code decodiert das Manchester-Protokoll RC5, Das
> NEC-Protokoll ist ein Pulse-Distance-Protokoll. Das will ich sehen, wie
> Du mit "wenigen Anpassungen" den Dani-Code auf NEC umschreiben willst.
> Da bleibt kein Stein mehr auf dem anderen.

Na, so schlimm ist das nicht, ich habe auch Peters code als Basis 
genommen:
1
/*************************************************************************
2
 * (C) Bernhard Michler 2009
3
 * Based on ideas and code of Peter Danneggers rc5 decoder
4
 *
5
 * File          :      ir_nec.c
6
 * Created       :      August 2009
7
 * Author(s)     :      Bernhard Michler
8
 *
9
 *
10
 * DESCRIPTION:
11
 * Routines for IR receivers, decoding the ancient the widely spread 
12
 * Japanese NEC code.
13
 *
14
 ************************************************************************/
15
#include <avr/io.h>
16
#include <avr/interrupt.h>
17
#include "config.h"
18
#include "ir-nec.h"
19
20
volatile uint32_t       nec_data;       // store result
21
volatile uint8_t        repeat;
22
23
void irnec_init (void)
24
{
25
  nec_data = IRNEC_NOREC;
26
  repeat = 0;
27
}
28
29
30
uint8_t is_nec_repeat (void)
31
{
32
    uint8_t tmp;
33
    tmp = repeat;
34
    repeat = 0;
35
    return (tmp);
36
}
37
38
uint32_t get_nec_data (void)
39
{
40
    uint32_t tmp;
41
    uint8_t  intStat = SREG;
42
    cli();
43
    tmp = nec_data;
44
    nec_data = IRNEC_NOREC;
45
    SREG = intStat;
46
    return (tmp);
47
}
48
49
50
/************************************************************************/
51
/*                                                                      */
52
/*                      NEC Remote Receiver                             */
53
/*                                                                      */
54
/*              Author: Bernhard Michler                                */
55
/*                                                                      */
56
/************************************************************************/
57
// NEC / Japanese...
58
// 13.500ms     - start
59
//  2.250ms     - "1"
60
//  1.125ms     - "0"
61
// 90.000ms     - key repeat
62
#define NECP_MIN       (uint8_t)(IRQS_PER_SECOND * 0.875e-3)
63
#define NECP_ZERO      (uint8_t)(IRQS_PER_SECOND * 1.750e-3)
64
#define NECP_ONE       (uint8_t)(IRQS_PER_SECOND * 3.000e-3)
65
#define NECP_REPEAT    (uint8_t)(IRQS_PER_SECOND * 12.00e-3)
66
#define NECP_MAX       (uint8_t)(IRQS_PER_SECOND * 15.00e-3)
67
68
69
void irnec_int (void)
70
{
71
    static uint8_t  irrc_bit;                   // bit value
72
    static uint8_t  irrc_time;                  // count bit time
73
    static uint32_t irrc_tmp;                   // shift bits in
74
    static int8_t   bit_cnt;                    // count bits
75
    uint32_t        tmp     = irrc_tmp;         // for faster access
76
    int8_t          tmp_cnt = bit_cnt;
77
78
    if (++irrc_time > NECP_MAX)
79
    {
80
        irrc_time = 0;
81
        tmp_cnt = 0;
82
        repeat = 0;
83
    }
84
85
    // signal change ??
86
    if ((irrc_bit ^ xIRRC_IN) & 1<<xIRRC )
87
    {
88
        irrc_bit = ~irrc_bit;                   // 0x00 -> 0xFF -> 0x00
89
  
90
        if ((irrc_bit & 1<<xIRRC) == 0)
91
        {
92
            // it was a change 0 -> 1, so check
93
            // pulse length now:
94
            if ((irrc_time < NECP_MIN   ) ||   // too short, error
95
                (irrc_time > NECP_REPEAT))     // start pulse
96
            {
97
                tmp_cnt = 0;
98
            }
99
            else if (irrc_time > NECP_ONE)
100
            {
101
                // repeat pulse
102
                nec_data = tmp;
103
                repeat = 1;
104
            }
105
            else
106
            {
107
                // bit received
108
                tmp_cnt++;
109
110
                tmp >>= 1;
111
112
                if (irrc_time > NECP_ZERO)
113
                    tmp |= 0x80000000;
114
115
                if (tmp_cnt == 32)
116
                {
117
                    nec_data = tmp;
118
                    tmp_cnt = 0;
119
                }
120
            }
121
            irrc_time = 0;
122
        }
123
    }
124
    bit_cnt  = tmp_cnt;
125
    irrc_tmp = tmp;
126
}

von Frank M. (ukw) (Moderator) Benutzerseite


Lesenswert?

Bernhard M. schrieb:
> Na, so schlimm ist das nicht, ich habe auch Peters code als Basis
> genommen:

Aber wenn man genau hinguckt, sind da höchstens noch 3-4 Zeilen aus 
Peters Code übriggeblieben. Und mit dem ursprünglichen RC5-Decoder von 
ihm hat das herzlich wenig zu tun ;-)

Übrigens: Schöner Code, gefällt mir.

Gruß,

Frank

von Bernhard M. (boregard)


Lesenswert?

Gut, mit den 3-4 Zeilen magst Du recht haben...aber ich habe versucht, 
die Konzepte beizubehalten und den Code Kompakt zu halten...

von JojoS (Gast)


Lesenswert?

Mein Dank geht natürlich auch an Bernhard M. Ich konnte mich halt noch 
an den Kommentar 'based on...' erinnern. Habe das auch ausprobiert und 
es hat gut funktioniert mit der hier genannten FB.
Bei eBay sieht man auch noch eine 44-key Variante, die sieht noch besser 
aus (RGB up-down und so).

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.