Weshalb kommt das Infrarot Repeat-Signal nicht an?

Hallo allerseits

Ich habe ein Arduino Mega 2560 mit einem Infrarot Empfängermodul gekoppelt. Mit diesem möchte ich die Signale von einem CD-TV Remote Controller empfangen und dann die digitalen Ausgänge entsprechend schalten. Ich benutze die IRremote Bibliothek (wie im Beispiel im Link oben).

Der Empfang funktioniert eigentlich reibungslos, jedoch erhalte ich die Repeat-Signale (#FFFFFFFF) nur sehr unregelmässig. D.h. wenn ich verschiedene Tasten auf meinem Controller drücke, erhalte ich die entsprechenden Signale im HEX Format. Wenn ich jedoch eine Taste gedrückt halte, müsste ich ja eigentlich in einem regelmässigen Intervall das Repeat-Signal erhalten. Das ist aber nur manchmal der Fall.

Die Batterien in der Fernbedienung sind ganz neu und haben 1.6V. Ich habe auch schon ein zweites Infrarot Empfängermodul ausprobiert, dasselbe Problem.

Die LED auf dem Infrarot Empfängermodul flackert anständig wenn ich einen Knopf gedrückt halte, jedoch wird das Signal nur ab und zu an das Arduino weitergeleitet (RX LED auf Arduino flackert dann auch).

Hat mir jemand einen Tipp wie ich das Repeat-Signal stabiler erhalten könnte?

Hallo Louis,

zum Glück wissen wir

  • welche Fernbdienung Du verwendest
  • wie Dein Sketch aussieht

Ich würde also mal als Tipp sagen: hilf uns, dann wird Dir geholen.

Und woher willst du wissen, das der Empfänger u deiner Fernbedienung passt.
Hast du darauf geachtet, dass beide die selbe Frequenz haben ?
Also wie schon geschrieben, ohne weitere Angaben müssen wir raten.
Da habe ich aber keine Lust drauf.

Klaus_ww:
zum Glück wissen wir

  • welche Fernbdienung Du verwendest
  • wie Dein Sketch aussieht

Okay meine Beschreibung war wohl nicht genügend. Ich benutze eine Amiga CD-TV Controller als Fernbedienung. Ich weiss, dass die Fernbedienung und das IR-Modul zusammen funktionieren, weil die Signale grundsätzlich auf dem Arduino ankommen. Diese geb ich via Serial.println() auf den Monitor aus. Jedoch fehlen meistens die Repeat-Signale (#FFFFFFFF) welche eigentlich ausgegeben werden müssten wenn ich eine Taste gedrückt halte.

Hier mein Sketch:

#include <IRremote.h>
 
int RECV_PIN = 11;
 
IRrecv irrecv(RECV_PIN);
 
decode_results results;
 
void setup()
{
  Serial.begin(9600);
  irrecv.enableIRIn(); // Start the receiver
}
void loop() {
  if (irrecv.decode(&results)) {
    Serial.println(results.value, HEX);
    irrecv.resume(); // Receive the next value
  }
}

Wie sieht denn das aus, was du auf dem Bildschirm siehst ?
Poste doch das mal.

Ich hab mal versucht einen Video zu machen, der das Problem schildert.

Im Video seht ihr, dass sobald ich eine Taste bei der Fernbedienung gedrückt halte, die rote LED auf dem IR-Receiver Modul sehr schnell blinkt. Deshalb gehe ich davon aus, dass das IR Modul die Repeat-Signale (FFFFFFFF) erhält, jedoch nicht an das Arduino weitersendet.

Das initiale Signal, also der Tastencode welche beim erstmaligen herunterdrücken einer Taste versendet wird, kommt immer sehr zuverlässig an (die gelbe TX LED auf dem Arduino leuchtet dann einmalig auf und auf dem Serial Monitor erhalte ich das dekodierte Signal im HEX Format; z.B. 451AF85A für die Taste "A"; vgl. anschliessendes Video).

Das Repeat-Signal kommt jedoch nur sehr sporadisch vom IR-Modul bis zum Arduino. Vergleicht dazu das Ende des Videos, in den ersten paar Zeilen des Serial Monitors findet ihr ein FFFFFFFF. Dieses müsste eigentlich andauernd erscheinen, falls die Repeat-Signale vom IR-Modul korrekt an das Arduino weitergeleitet würden.

Weshalb wird das Repeat-Signal nur sporadisch weitergeleitet ?

Hier der Video-Link zur Veranschaulichung des Problems.

.

salocinx:
Das initiale Signal, also der Tastencode welche beim erstmaligen herunterdrücken einer Taste versendet wird, kommt immer sehr zuverlässig an (z.B. 451AF85A für die Taste “A”). Das Repeat-Signal kommt jedoch nur ab&zu bis zum Arduino. Weshalb?

Woher soll das Repeat-Signal kommen? Aus Deiner Empfänger-Library?

Keine mir bekannte IR-Fernbedienung sendet ein Repeat-Signal.

Alle IR-Fernbedienungen, die ich kenne, senden genau so wie eine Computertastatur:

Jeder Taste ist ein bestimmter Code zigeordnet.

Wenn man die Taste drückt, wird der Code gesendet.

Und wenn man die Taste danach nicht losläßt, sondern gedrückt hält, setzt nach einer kleinen Weile eine Wiederholfunktion ein: Exakt derselbe Code wird in schneller Folge wieder und wieder und wieder gesendet.

Wie der Empfänger das dann verarbeitet, ist ihm überlassen.

Wenn ich bei meinem Windows-PC eine Ziffern- oder Buchstabentaste drücke und gedrückt lasse, kann ich in kurzer Zeit eine lange Zeile mit derselben Ziffer oder demselben Buchstaben eingeben.

Wenn ich bei meinem Fernseher oder Satellitenreceiver den Finger auf der “Kanal nach oben wechseln” Taste gedrückt lasse, dann führt der Fernseher erst einen Kanalwechsel aus (das dauert sowohl bei DVB-T als auch bei DVB-S eine kleine Weile, dann wird der nächste Kanalwechsel nach oben eingeleitet, sobald Bild und Ton des gewechselten Kanals kommen.

Ich weiß nur, dass IR Fernbedienungen bei gedrückt gehaltener Taste immer wieder und wieder und wieder denselben Code sendeen, immer genau den, der dieser Taste zugeordnet ist. Von einem speziellen Repeat-Code kenne ich nichts.

Vielleicht erzeugt Deine Empfänger-Library einen solchen speziellen Code, wenn sie mehrmals hintereinander denselben IR-Code empfangen hat? Oder soll das so handhaben, macht es aber nicht immer?

Ich weiß nur, dass IR Fernbedienungen bei gedrückt gehaltener Taste immer wieder und wieder und wieder denselben Code sendeen, immer genau den, der dieser Taste zugeordnet ist. Von einem speziellen Repeat-Code kenne ich nichts.

Doch doch, das machen viele Fernbedienungen. Erst den eigentlichen Funktionscode und beim Festhalten der Taste einen Repeat-Code.

jurs:
Woher soll das Repeat-Signal kommen? Aus Deiner Empfänger-Library?

jurs:
Vielleicht erzeugt Deine Empfänger-Library einen solchen speziellen Code, wenn sie mehrmals hintereinander denselben IR-Code empfangen hat? Oder soll das so handhaben, macht es aber nicht immer?

Entweder merkt die Empfänger Library das sehr schnell immer das gleiche Signal kommt und formt es nach der ersten Ausgabe in ein FFFFFFFF um oder die Fernbedienung sendet dieses Signal bei gedrückter Taste schon so ab. Ich weiss momentan nur, dass ich ab&zu mal ein solches FFFFFFFF Signal bekomme und dass das IR-Modul sehr schnell blinkt solange ich eine Taste gedrückt halte. Ich brauche dieses Signal, um festzustellen, wann der Benutzer die Taste wieder losgelassen hat.

Ich verwende diese IR Library.

.

salocinx:
Entweder merkt die Empfänger Library das sehr schnell immer das gleiche Signal kommt und formt es nach der ersten Ausgabe in ein FFFFFFFF um oder die Fernbedienung sendet dieses Signal bei gedrückter Taste schon so ab.

Ich habe nochmal nachgelesen, ja dieser Repeat-Code scheint typisch zu sein für Fernbedienungen, die ihre Codes in "NEC" Codierung senden.
Also ist es herstellerabhängig, ob oder ob nicht Fernbedienungen diesen Code senden.

jurs:
Ich habe nochmal nachgelesen, ja dieser Repeat-Code scheint typisch zu sein für Fernbedienungen, die ihre Codes in "NEC" Codierung senden.
Also ist es herstellerabhängig, ob oder ob nicht Fernbedienungen diesen Code senden.

Vielen Dank für's Nachschauen! Ich habe unterdessen auch mal eine normale TV Fernbedienung ausprobiert. Bei dieser kommt bei gedrückter Taste dasselbe Signal wiederholt an, sowie du das beschrieben hast. Das zeitliche Interval ist jedoch deutlich grösser, als das, welches ich bei der Commodore CD-TV Fernbedienung erhalte (also das Flackern der LED am IR-Modul -> ziemlich schnell).

Es gibt verschiedene Protokolle von IR-Fernbedienungen, die verbreitetsten sind:
– RC-5, RC-6 (Philips)
– NEC (viele Japanische Hersteller)
– SONY

RC-5 und RC-6
Zu jeder Taste gehören 2 Codes (z.B. 0x00C und 0x80C, sie unterscheiden sich in einem Bit: Bit-Toggling).
Wird eine Taste gedrückt und festgehalten, wird einer der beiden Codes immer wieder gesendet, solange die Taste gedrückt bleibt. Wird diese Taste losgelassen und nach kurzer Zeit noch einmal gedrück, wird der andere Code gesendet.
So kann unterschieden werden, ob eine Taste mehrmals hintereinander gedrückt wurde.
(Siehe Elektronik: IR-Fernbedienung, RC-5)

NEC
Jede Taste hat (nur) einen Code.
Wird eine Taste gedrück und dann festgehalten, sendet die Fernbedienung EIN MAL den jeweiligen Code (z.B. FF50AF) und danach einen einheitlichen Wiederholungscode (z.B. FFFFFFFF) solange eine Taste gedrückt bleibt.
Diese Fernbedienungen sind meiner Meinung nach am einfachsten fürs "Hacking" zu verwenden, also um damit eigene Geräte zu steuern. Es sollte aber ein sicherer Empfang gewährleistet sein (Fernbedienung ist nahe am Empfänger).

SONY
Jede Taste hat (nur) einen Code (z.B. A9E).
Wird eine Taste gedrückt und festgehalten, wird dieser Code solange wiederholt, bis die Taste wieder losgelassen wird.
Sony-Geräte erwarten auf der Empfangsseite mehrere Wiederholungen (mindestens 3) des jeweiligen Codes.

Bei manchen Geräten kommen auch Kombinationen der oben erwähnten Protokollvarianten zum Einsatz. So ist es oft üblich, dass derselbe Code mehrfacht wiederholt werden muss, damit eine Reaktion erfolgt (nicht nur bei Sony).

Hallo Louis,

ein ähnliches Infrarot Empfängermodul, wie Du es verlinkt hast, hatte ich aus einem Anfänger-Kit. Das hat, zusammenfassend gesagt, gesponnen. Dann habe ich einen anderen Empfänger erstanden und die Fernbedienung machte ihrem Namen wieder alle Ehre.

Gerade habe ich mit Deinem Sketch und einem optisch gleichen Empfänger alle im Haushalt auftreibbaren IR-Fernbedienungen getestet und sie verhalten sich alle - wie sehr schön in #11 beschrieben - wie NEC oder SONY.

Im Fußball tauscht man den Trainer, weil man nicht eine ganze Manschaft tauschen kann. Du kannst Deine Fernbedienung nicht tauschen, daher könntest Du mit anderen Empfängern probieren.

@uxomm: Vielen Dank für die super Zusammenfassung :slight_smile: !!!

agmue:
Im Fußball tauscht man den Trainer, weil man nicht eine ganze Manschaft tauschen kann. Du kannst Deine Fernbedienung nicht tauschen, daher könntest Du mit anderen Empfängern probieren.

Ich hab soeben bemerkt, dass wenn ich die Amiga CD-TV Fernbedienung zwischen 4.5-5.0 cm nah an den IR Empfänger halte, klappts...! Dann kommen auch die Repeat-Signale an. Obwohl, wie auf meinem Video zu sehen ist, flackert die LED auf dem IR Modul ganz schön fleissig -- nur komisch, dass diese nicht an das Arduino weitergeleitet werden ?!

Also, dann versuch ich es am besten mit einem anderen TSOP Modul. Bei Conrad Schweiz werden 33kHz, 38kHz und 40kHz Module angeboten. Leider kann ich bezüglich dem Amiga CD-TV Controller überhaupt keine Angaben finden, werde mir deshalb gleich mal alle Varianten bestellen; Versand+Verpackung+Kleinmengenzuschlag belaufen sich ja sowieso schon alleine auf 18€ - da spielt's auch keine Rolle mehr ;-/

salocinx:
Ich hab soeben bemerkt, dass wenn ich die Amiga CD-TV Fernbedienung zwischen 4.5-5.0 cm nah an den IR Empfänger halte, klappts...!

Das kann auf eine falsche Frequenz hindeuten. Die Frequenz wird in einem Bandpass herausgefiltert. Der Filter ist natürlich nicht perfekt, aber die Spannung fällt bei benachbarten Frequenzen sehr stark ab.

Siehe Diagram 5 auf Seite 3:

Bei der Wellenlänge gibt es einen ähnlichen Effekt der aber nicht so stark ist. Siehe Diagram 10

Serenifly:
Siehe Diagram 5 auf Seite 3

Also das bedeutet, dass z.B. bei einer Abweichung von 10% der Frequenz (bei 38kHz = +/-3.8kHz), die Empfindlichkeit des IR Empfängers bereits auf 40% runterfällt?

Hatte ich dich nicht schon im Post #2 darauf hingewiesen ?
Schade das viele Hinweise einfach ignoriert werden.

HotSystems:
Hatte ich dich nicht schon im Post #2 darauf hingewiesen ?
Schade das viele Hinweise einfach ignoriert werden.

Naja, ich bin grundsätzlich davon ausgegangen, dass die Frequenz stimmt, da ich ja die initialen Tasten-Codes richtig empfange.

Weitere mögliche Problemlösungen zu sammeln ist ja auch kein Verbrechen, oder? Ich versuche jetzt aber noch mehr Informationen über die genaue IR Spezifikation des CDTV's herauszubekommen. Nur sind die Infos leider nur sehr schwierig zu finden. Ich melde mich wieder wenn ich mehr weiss.

Herzlichen Dank für die vielen Infos und konstruktiven Lösungsvorschläge!

salocinx:
Naja, ich bin grundsätzlich davon ausgegangen, dass die Frequenz stimmt, da ich ja die initialen Tasten-Codes richtig empfange.

Ohne genaue Kenntnisse der Daten, ist das schonmal schlecht.

Und überhaupt, andere mögliche Problemlösungen zu sammeln ist ja auch kein Verbrechen, oder?

Davon ist auch nicht die Rede.
Das hast du ja auch gemacht.
Alles gut....

Okay alles klar. Ich geh mal auf Datensammlerei und melde mich wieder. Vielen Dank!