Forum: Mikrocontroller und Digitale Elektronik Signal mit uC vom IR-Empfänger abgreifen und simulieren


von Baslter (Gast)


Lesenswert?

Guten Morgen,

wenn man einen IR-Empfänger aus einem Gerät rauslötet, diesen an einen 
uC, Arduino, anschließt, kann man dann über einen Ausgangs-Pin des uC 
das Signal an das Gerät senden und diesem vortäuschen, es hätte noch den 
Empfänger?

von Frank L. (hermastersvoice)


Lesenswert?

Kann man. Aber wenn du so fragst kannst DU es NICHT.

von Stefan F. (Gast)


Lesenswert?

Ja kann man. Wobei der Empfänger bei Inaktivität einfach nur ständig 
High oder Low Pegel liefert. Das könnte als auch ein Stück Draht 
simulieren.

Oder willst du mit dem Mikrocontroller ein Fernsteuer-Signal simulieren? 
Das kann man mit kleinen Mikrocontrollern (also allen Arduino Modellen) 
durchaus machen.

von Rainer U. (r-u)


Lesenswert?

Ja, mit dem passenden Wissen. Du kannst den IR-Empfänger auch abkleben, 
einen separaten Empfänger an den Arduino bauen und nur mit Deinem 
Arduino-Sender "reinleuchten".

Besser wird Dir geholfen, wenn DU etwas detaillierter erklärst, was Du 
vorhast.

von Frank M. (ukw) (Moderator) Benutzerseite


Lesenswert?

Baslter schrieb:
> wenn man einen IR-Empfänger aus einem Gerät rauslötet, diesen an einen
> uC, Arduino, anschließt, kann man dann über einen Ausgangs-Pin des uC
> das Signal an das Gerät senden und diesem vortäuschen, es hätte noch den
> Empfänger?

Was willst Du denn erreichen? Alles 1:1 an das Gerät weiterleiten? Oder 
willst Du mit dem µC die IR-Befehle abfangen und lediglich bestimmte 
Frames an das Gerät weiterreichen?

Oder willst Du nur "mithorchen"? Dann würde ich den IR-Empfänger (meist 
ein TSOPxxxxx) im Gerät belassen und an den µC einen eigenen 
IR-Empfänger anschließen. Dann kannst Du ohne Eingriff in das Gerät die 
IR-Frames empfangen und auswerten. Schau Dir dazu mal IRMP an.

Ein paar Infos über den Sinn und Zweck wären hier durchaus hilfreich.

von Baslter (Gast)


Lesenswert?

Vielen Dank für eure Antworten.

Ja Frank, ich kanns, Arduino und IR sind auch für Noobs recht schnell 
und einfach zu verstehen, nur habe ich was bestimmtes vor und das Gerät, 
welches ich verwenden will, ist das einzige, dass ich für das Experiment 
nutzen würde, will aber nicht unnötig an der Platine rumbraten.

Sonst kriege ich immer Mecker, weil ich Romane schreiben ;P

Aber klar, ich teile sehr gerne mit euch, was ich vorhabe: Ich will 
eines dieser Bluetooth/SD-Karten/USB Mp3-Player Module in meine Anlage 
einbauen, da ich fast ausschließlich Musik über Handy höre, ist es schon 
echt lästig immer mit dem Aux-Kabel da rumzuhantieren, Bluetooth bietet 
sich da nun perfekt an. Gleichzeitig bietet sich mir die Möglichkeit den 
einen Aux-Anschluss zu vermehren, also das BT-Modul soll einer der 
Kanäle sein, da ich einen kaputten Audio-Receiver bekommen habe und 
dieser ein paar echt schöne Relais für genau diesen Zweck hat. Die 
Aux-Kanäle lassen sich per Schieberegister ganz einfach umschalten, der 
Teil ist fertig, aber das muss fernbedienbar sein und das BT-Dingens hat 
auch eine Fernbedienung, also dachte ich mir, ich fange das Signal der 
original FB der Anlage mit nem Attiny ab und schicke es anders codiert 
an das BT-Modul, die FB sendet auch im Aux-Modus Signale für Play, Pause 
etc., und mit der Aux-Taste schalte ich die Modi entsprechend um, auch 
mit der Anlage muss ich das machen, wobei da fast alle Signale 1:1 
weitergeleitet werden und nur die Aux-Taste schaltet dann die Modi um, 
denke der Arduino-Teil ist auch für mich Anfänger ziemlich einfach, 
dachte an eine Switch funktion und jedes Mal, wenn die Aux-Taste sendet, 
wird der Case ++ gemacht, sorry, die Wortwahl wäre so oder so übel, 
geworden, Anfänger halt, daher hab ichs mal gekürzt :)

von Baslter (Gast)


Lesenswert?

Glaub die letzten paar Worte könnten zur Verwirrung führen, die 
Switch-Funktion dient dazu die original Aux-Modi der Anlage nutzen zu 
können, also die ersten zwei Mal drücken wird jeweil das Signal der 
Anlage 1:1 an diese weitergegeben, Case 0 und 1, in Case 2 werden die 
Play, Pause etc. Signale an das BT-Modul gesendet und dann immer nur ein 
Impuls an das Schieberegister.

von Typ (Gast)


Lesenswert?

Baslter schrieb:
> Sonst kriege ich immer Mecker, weil ich Romane schreiben ;P

Alles in Maßen.
Sätze, die keine 10 Kommas enthalten und hier und da ein Absatz würden 
die Lesbarkeit aber deutlich verbessern.

Zum Thema:

Du willst also einige Knöpfe auf der FB deines Receivers zweckentfremden 
und damit deinen BT-Empfänger ansteuern?

Wie verhinderst du, dass auch der Receiver auf die Eingaben reagiert, 
die für das BT-Modul bestimmt sind?

von Stefan F. (Gast)


Lesenswert?

> Bluetooth bietet sich da nun perfekt an.

Dachte ich auch mal. Bis mir klar wurde, dass die Tonqualität mies ist, 
die Reichweite kaum länger ist als mein 2m Kabel und dass bei mir alles 
was Funk verwendet häufig ausfällt.

Aber mach nur. Prinzipiell funktioniert es ja. Was du da vorhast ist 
ganz sicher mit einem AVR machbar.

von Frank M. (ukw) (Moderator) Benutzerseite


Lesenswert?

Baslter schrieb:
> ich fange das Signal der original FB der Anlage mit nem Attiny ab und
> schicke es anders codiert an das BT-Modul,

Wenn ich es recht verstanden habe: Wenn Du die FB auf AUX umstellst, was 
passiert dann? Schaltet die FB dann intern selbst andere Codes für die 
entsprechenden Tasten oder schaltet Deine Anlage dann einfach auf taub, 
bis Du den Aux-Modus wieder abstellst?

Wenn ersteres der Fall ist, wovon ich stark ausgehe, brauchst Du den 
Empfänger der Anlage überhaupt nicht anzutasten, sondern kannst einen 
weiteren TSOP als IR-Empfänger anbringen.

Wenn Du dann auf dem AVR IRMP installierst, ist das Mapping der 
Codes auf andere sehr einfach und schon mehrfach erprobt. IRMP wurde 
zwar auch Arduino portiert, jedoch würde ich dazu raten, IRMP besser 
direkt ohne Arduino-Laufzeitumgebung auf dem AVR zu verwenden. Um IRMP 
und auch IRSND in der Arduino-Laufzeitumgebung einzusetzen, ist 
Insider-Wissen nötig, welches Du als Anfänger nicht unbedingt hast. Das 
liegt zum Beispiel daran, dass das Arduino-Laufzeitsystem bestimmte 
Timer selbst verwendet und diese deshalb für die eigentliche Anwendung 
nur noch mit bestimmten Tricks verwendbar sind - falls überhaupt.

Der Code der Hauptschleife könnte dann so aussehen:
1
   IRMP_DATA irmp_data;
2
3
   while (1)
4
   {
5
       if (irmp_get_data (&irmp_data) &&
6
           irmp_data.protocol == PROTOCOL_OF_ORIGINAL_REMOTE_CONTROL &&
7
           irmp_data.address == ADDRESS_OF_ORIGINAL_REMOTE_CONTROL)
8
       {
9
           switch (irmp_data.command)
10
           {
11
                case PLAY_OF_ORIGINAL_REMOTE_CONTROL:
12
                     irmp_data.protocol = PROTOCOL_OF_AUX_MODULE;
13
                     irmp_data.address  = ADDRESS_OF_AUX_MODULE;
14
                     irmp_data.command  = PLAY_OF_AUX_MODULE;
15
                     irmp_data.flags    = 0;
16
                     irsnd_data (&irmp_data, 0);
17
                     break;
18
                // more IR commands here
19
           }
20
       }
21
    }

Das ist natürlich nur eine Skizze. Die oben angegebenen 
großgeschriebenen Konstanten kann man mit IRMP alle empirsch ermitteln 
und dann per #define dann entsprechend definieren.

Wenn Du allerdings auf IRMP verzichten willst, weil Du unbedingt Arduino 
als Plattform einsetzen möchtest, könnte der Weg zum Ziel ziemlich 
steinig werden. Denn oft ist es mit dem simplen Recording von IR-Frames 
nicht getan und man muss den Kontext kennen, z.B. wenn die 
IR-Fernbedienung bestimmte Repeat-Frames sendet, z.B. für "Volume +".

Oft kann man diese Repeat-Frames nicht 1:1 in das andere Protokoll 
übersetzen, sondern muss den Kontext kennen: "Das letzte IR-Kommando vor 
dem Repeat-Frame war Volume +, deshalb muss ich jetzt im Zielprotokoll 
Volume + senden". Genau dieses nimmt Dir IRMP ab, da es die Codes 
inhaltlich auswertet und nicht stupide aufzeichnet.

: Bearbeitet durch Moderator
von Harald W. (wilhelms)


Lesenswert?

Typ schrieb:

> Du willst also einige Knöpfe auf der FB deines Receivers zweckentfremden
> und damit deinen BT-Empfänger ansteuern?
>
> Wie verhinderst du, dass auch der Receiver auf die Eingaben reagiert,
> die für das BT-Modul bestimmt sind?

Unabhängig von diesen Einschränkugen, die noch abgeklärt werden
müssten, wäre es da wirklich das Beste, einen zweiten IR-Empfänger
für die Receiver-Fernbedienung an den Ardinoeingang zu klemmen.

von Leroy M. (mayl)


Lesenswert?

Wenn du auf Nummer Sicher gehen willst, kannst du natürlich mit dem 
Arduino, einem Empfänger-IC und einer IR-Diode einen Infrarotrepeater 
basteln.

Wenn die IR-Diode auf das Empfänger-IC der Anlage gerichtet ist und du 
das optisch isolierst, hast du dir so quasi einen Optokoppler gebastelt 
und ersparst dir das Löten an der Platine komplett.

Und auch allerlei andere Effekte, die u.U. stören könnten.

Vom Code wird das, dank passender .h auch nicht komplizierter.

von Bastler (Gast)


Lesenswert?

@Frank M. Also ich dachte an die IRremote bibliothek, die Signale "raw" 
auslesen und diese dann an die Ausgangspins senden. Bin echt noch sehr 
weit am Anfang, sowas ist für mich zur Zeit noch pures Chaos von 
Zeichen, fast wie meine Texte ;P Link ist aber gespeichert und ich gucks 
mir nochmal genauer an.

Weiterhin ist der Plan nur einen Empfänger am Arduino zu verwenden und 
die beiden von der Anlage und dem Modul durch die Ausgangspins zu 
ersetzen.

Im Case 0 wird vom Empfängr-Pin gelesen, das Signal der Aux-Taste, und 
direkt an den Anlage-Pin weitergeleitet,
im Case 1 passiert dasselbe, weil nur der Anlagen -interne Aux-Modus 
umgeschaltet wird,
im Case 2 wird das Schieberegister ein Mal gepulst, das schaltet das 
BT-Modul ein und es werden Lautstärke-, Play-, Pause- etc. und 
Aux-Tasten gesendet und zu Codes des Moduls geändert, da die Anlage 
selbst auf Aux steht, wird der CD-Wechsler oder was anderes dadurch 
nicht bedient, erst, wenn man auf den entsprechenden Modus umschaltet.
In Cases 3-5 werden nur die Lautstärke- und die Aux-Taste an die Anlage 
weitergeleitet. Im letzten Fall wird das Schieberegister noch zurück 
gesetzt.

von Stefan F. (Gast)


Lesenswert?

Ich würde die Koppelung zwischen Arduino und Stereoanlage lieber optisch 
machen (mit den bereits vorhandenen IR Empfängern).

Denn wenn du die Masse vom Arduino mit der Masse der Anlage verbindest, 
stehen die Chancen sehr hoch, dass du Dir damit eine Brummschleife 
einhandelst.

von Harald W. (wilhelms)


Lesenswert?

Stefan U. schrieb:

> Denn wenn du die Masse vom Arduino mit der Masse der Anlage verbindest,

...kann es eine ganze Masse Probleme geben. :-)

von Bastler (Gast)


Lesenswert?

Ja, ihr habt alle recht, denke die "Optokoppler-Idee" ist doch die 
beste, ist ja im Grunde dasselbe, nur noch einfacher und sauberer und 
wenn ich dann auch feststelle, dass mit die Tonqualität über BT nicht 
gefällt, kann ich es einfach alles rausruppen und meine hässlich schöne 
Philips FW-C700 bleibt original. Und das geht definitiv mit der IRremote 
Library. Hat sich erst irgendwie nach Pfusch angefühlt, da LED vor die 
Empänger zu hängen, aber wenn ich mir das nochmal überlege ist es eher 
Pfusch an den Originalteilen zu löten, wenn es sich auch vermeiden 
lässt. Hab auch ein paar 3 mm IR-Led, ist alles ordentlich machbar. Aber 
dennoch gut zu wissen, dass die ursprüngliche Idee funktioniert.


Vielen Dank euch allen, wie immer die richtigen Denkanstöße und Infos :)

Und ein extra Vielen Dank an Stefan M., auch wenn ich im Moment kaum was 
davon checke, aber mit Sicherheit würde ich irgendwann nach so einer 
Lösung suchen und zich verschiedene Ansätze finden, aber nicht genau 
das, was sicher funktioniert.

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.