Decoder für IR-Signale von Fernbedienungen
-
- Beiträge: 111
- Registriert: Sa 28. Mai 2016, 15:42
- Wohnort: LE
- Box: Zee², Trinity DUO , ZGEMMA H7C
- Been thanked: 1 time
Decoder für IR-Signale von Fernbedienungen
Hiermit möchte ich einen Weg vorstellen, um IR-Signale von Fernbedienungen zu decodieren.
Als Softwaregrundlage habe ich mich für das IRMP-Projekt entschieden:
https://www.mikrocontroller.net/articles/IRMP
Die dazugehörigen Quellcodes:
https://github.com/IRMP-org/IRMP/
Dort steckt Jahrelange Entwicklungsarbeit drin und es werden eine Menge von Hardware-Plattformen unterstützt.
Ich selber habe einen Arduino Nano V3 (mit altem Bootloader) verwendet und dazu passend den
IR-Empfänger KY-022 (Infrarot Receiver CHQ1838 Sensor Modul).
Die Beschaltung des IR-Empfänger ist folgende:
Der Pin 3 vom IR-Empfänger KY-022 wird dann mit Pin 2 vom Arduino Nano V3 verbunden.
Die Spannungsversorgung für Pin 1 und Pin 2 vom KY-022 muss dann noch passend vorgenommen werden (+5Volt, GND).
Zum Schluss noch ein passendes USB-Kabel für den Arduino Nano V3 und die Software ist dran.
Als Programmierumgebung verwende ich unter Linux (Debian) VSCodium / Platformio (Core 6.1.7·Home 3.4.4) / Arduino-Framework
IRMP wird in der Version 3.6.3 benutzt.
Meine Einträge in der platfomio.ini sind folgende:
Das Hauptprogramm ist dem Programmier-Beispiel von IRMP/examples/SimpleReceiver entsprechend von mir angepasst.
main.cpp
Im Projektordner in welchem sich die main.cpp befindet (... /src/) müssen nur noch 2 Dateien hinzugefügt werden.
PinDefinitionsAndMore.h und irmpArduinoExt.hpp
Diese befinden sich nach dem ersten Buildversuch im Projektordner (... /.pio/libdeps/nanoatmega328/IRMP/src/).
Das sieht dann im Ergebnis folgend aus:
ls -g -o
Das Programm ist damit fertig und kann auf den Arduino Nano V3 geflasht werden.
Bei Programmstart sollte am Seriellen-Monitor (115200 Baud) folgende Ausgaben erscheinen:
Das obige Datum entspricht dem Build-Date.
Jetzt kann das experimentieren mit den Fernbedienungen erfolgen:
Das obige Beispiel zeigt die Ausgabe für die Fernbedienung der
Coolstream HD2,
mit Protokoll=NEC, Geräteadresse=0xFF80 und Code= Zifferntasten für 1 bis 6
danach
Zgemma H7C,
mit Protokoll=NEC, Geräteadresse=0xCD27 und Code= Zifferntasten für 1 bis 6
Damit sollte dem eigenen Forscherdrang nichts mehr im Wege stehen.
Wie die gewonnen Erkenntnisse dann weiter genutzt werden können, zeige ich in einem weiteren Beitrag.
Als Softwaregrundlage habe ich mich für das IRMP-Projekt entschieden:
https://www.mikrocontroller.net/articles/IRMP
Die dazugehörigen Quellcodes:
https://github.com/IRMP-org/IRMP/
Dort steckt Jahrelange Entwicklungsarbeit drin und es werden eine Menge von Hardware-Plattformen unterstützt.
Ich selber habe einen Arduino Nano V3 (mit altem Bootloader) verwendet und dazu passend den
IR-Empfänger KY-022 (Infrarot Receiver CHQ1838 Sensor Modul).
Die Beschaltung des IR-Empfänger ist folgende:
Der Pin 3 vom IR-Empfänger KY-022 wird dann mit Pin 2 vom Arduino Nano V3 verbunden.
Die Spannungsversorgung für Pin 1 und Pin 2 vom KY-022 muss dann noch passend vorgenommen werden (+5Volt, GND).
Zum Schluss noch ein passendes USB-Kabel für den Arduino Nano V3 und die Software ist dran.
Als Programmierumgebung verwende ich unter Linux (Debian) VSCodium / Platformio (Core 6.1.7·Home 3.4.4) / Arduino-Framework
IRMP wird in der Version 3.6.3 benutzt.
Meine Einträge in der platfomio.ini sind folgende:
Das Hauptprogramm ist dem Programmier-Beispiel von IRMP/examples/SimpleReceiver entsprechend von mir angepasst.
main.cpp
Im Projektordner in welchem sich die main.cpp befindet (... /src/) müssen nur noch 2 Dateien hinzugefügt werden.
PinDefinitionsAndMore.h und irmpArduinoExt.hpp
Diese befinden sich nach dem ersten Buildversuch im Projektordner (... /.pio/libdeps/nanoatmega328/IRMP/src/).
Das sieht dann im Ergebnis folgend aus:
ls -g -o
Das Programm ist damit fertig und kann auf den Arduino Nano V3 geflasht werden.
Bei Programmstart sollte am Seriellen-Monitor (115200 Baud) folgende Ausgaben erscheinen:
Das obige Datum entspricht dem Build-Date.
Jetzt kann das experimentieren mit den Fernbedienungen erfolgen:
Das obige Beispiel zeigt die Ausgabe für die Fernbedienung der
Coolstream HD2,
mit Protokoll=NEC, Geräteadresse=0xFF80 und Code= Zifferntasten für 1 bis 6
danach
Zgemma H7C,
mit Protokoll=NEC, Geräteadresse=0xCD27 und Code= Zifferntasten für 1 bis 6
Damit sollte dem eigenen Forscherdrang nichts mehr im Wege stehen.
Wie die gewonnen Erkenntnisse dann weiter genutzt werden können, zeige ich in einem weiteren Beitrag.
- Gorcon
- NI - VIP
- Beiträge: 2838
- Registriert: Mi 13. Apr 2016, 10:55
- Box: E2HD, VU+ Uno4kSE, VU+ Ultimate4k
- Has thanked: 62 times
- Been thanked: 12 times
Re: Decoder für IR-Signale von Fernbedienungen
Lassen sich mit der Hardware auch Lirc conf Dateien erstellen (z.B. über Winlirc)?
Nachtrag: Habe hier etwas dazu gefunden:
https://github.com/AdvancedNewbie/IRNanoLIRC
Nachtrag: Habe hier etwas dazu gefunden:
https://github.com/AdvancedNewbie/IRNanoLIRC
-
- Beiträge: 111
- Registriert: Sa 28. Mai 2016, 15:42
- Wohnort: LE
- Box: Zee², Trinity DUO , ZGEMMA H7C
- Been thanked: 1 time
Re: Decoder für IR-Signale von Fernbedienungen
Da der Empfänger auch über Pin 2 das IR-Signal empfängt, sollte das klappen.Gorcon hat geschrieben: ↑So 2. Jul 2023, 09:20 Lassen sich mit der Hardware auch Lirc conf Dateien erstellen (z.B. über Winlirc)?
Nachtrag: Habe hier etwas dazu gefunden:
https://github.com/AdvancedNewbie/IRNanoLIRC
Der TSMP1138 ist nur EOlL, der im KY-022 verwendete IR-Sensor ( CHQ1838 ) tuts aber auch.
-
- Beiträge: 111
- Registriert: Sa 28. Mai 2016, 15:42
- Wohnort: LE
- Box: Zee², Trinity DUO , ZGEMMA H7C
- Been thanked: 1 time
Re: Decoder für IR-Signale von Fernbedienungen
Tippfehler meinerseits Sorry.
Gemeint ist EOL = End Of Live
Digikey -> TSMP1138 ist obsolet und wird nicht mehr hergestellt.
https://media.digikey.com/pdf/PCNs/Vish ... REV-0.pdf/
- Don de Deckelwech
- NI - Team
- Beiträge: 1619
- Registriert: Di 12. Apr 2016, 17:13
- Wohnort: Wuppertal
- Box: Tank / HD51 / Protek 4K für Kabel
- Has thanked: 5 times
- Been thanked: 21 times
- Kontaktdaten:
Re: Decoder für IR-Signale von Fernbedienungen
Hi,
ich habe von dem ganzen Microcontrollerzeugs keine Ahnung, aber am WE mal ein wenig dazu gegooglet.
Mir ist das hier aufgefallen:
der "grössere" Uno kostet scheinbar nur ein paar Euro mehr als der Nano.
Aber für den Uno gibt es ein fertiges IR-Shield: https://irdroid.eu/product/irdroino-inf ... d-arduino/
Da ich persönlich leider mit dem Lötkolben ne Niete bin, wäre das mit sowas auch umsetzbar???
Klar, muss da wohl ne Menge an der Software angepasst werden, aber schlussendlich wäre das dann ja fast Plug-and-Play.
Ciao,
DdD.
ich habe von dem ganzen Microcontrollerzeugs keine Ahnung, aber am WE mal ein wenig dazu gegooglet.
Mir ist das hier aufgefallen:
der "grössere" Uno kostet scheinbar nur ein paar Euro mehr als der Nano.
Aber für den Uno gibt es ein fertiges IR-Shield: https://irdroid.eu/product/irdroino-inf ... d-arduino/
Da ich persönlich leider mit dem Lötkolben ne Niete bin, wäre das mit sowas auch umsetzbar???
Klar, muss da wohl ne Menge an der Software angepasst werden, aber schlussendlich wäre das dann ja fast Plug-and-Play.
Ciao,
DdD.
"Ein Log, ist besser als kein Log!"
-
- Beiträge: 111
- Registriert: Sa 28. Mai 2016, 15:42
- Wohnort: LE
- Box: Zee², Trinity DUO , ZGEMMA H7C
- Been thanked: 1 time
Re: Decoder für IR-Signale von Fernbedienungen
Ich habe mal kurz geschaut.Don de Deckelwech hat geschrieben: ↑So 2. Jul 2023, 20:57 Hi,
ich habe von dem ganzen Microcontrollerzeugs keine Ahnung, aber am WE mal ein wenig dazu gegooglet.
Mir ist das hier aufgefallen:
der "grössere" Uno kostet scheinbar nur ein paar Euro mehr als der Nano.
Aber für den Uno gibt es ein fertiges IR-Shield: https://irdroid.eu/product/irdroino-inf ... d-arduino/
Da ich persönlich leider mit dem Lötkolben ne Niete bin, wäre das mit sowas auch umsetzbar???
Klar, muss da wohl ne Menge an der Software angepasst werden, aber schlussendlich wäre das dann ja fast Plug-and-Play.
Ciao,
DdD.
UNO R3 oder NANO R3 / V3 ist nach eigenem Geschmack zu wählen.
Bleibt beides AVR ATmega328P. Die Pinbelegung beim IR-Shield ist laut deren Git auch
Pin 2 für IR- Receiver und Pin 3 für IR-Send.
Damit ist an der Software nichts zu ändern (max. Benutzung der eigenen LED für den NANO V3 könnte
auskommentiert werden, wenn UNO R3 keine hat, stört aber nicht wirklich).
Re: Decoder für IR-Signale von Fernbedienungen
Das irdroino dings sieht gut aus, ich würde trotzdem gleich einen Leonardo klon holen, denn dann hält man sich die Option einer Tastaturemulation offen und vom Preis her macht es jetzt keinen echten Unterschied.
-
- Beiträge: 111
- Registriert: Sa 28. Mai 2016, 15:42
- Wohnort: LE
- Box: Zee², Trinity DUO , ZGEMMA H7C
- Been thanked: 1 time
Re: Decoder für IR-Signale von Fernbedienungen
Habe mal kurz die PINOUTS vom UNO REV3, UNO REV3 SMD und LEONARDO verglichen.
Die Pins D2 bis Pin D7 sind auf den Boards identisch.
Nur die tatsächlichen Hardwarepins der Mikrocontroller weichen halt ab.
Wegen ATmega328p <=> ATmega32u4.
Muss dann bei der Pindefinition im Source beachtet werden (ATmega328p D2=PD2 D3=PD3, ATmega32u4 D2=PD1 D3=PD0).
IRMP unterstützt glücklicherweise beide AVR.
- Gorcon
- NI - VIP
- Beiträge: 2838
- Registriert: Mi 13. Apr 2016, 10:55
- Box: E2HD, VU+ Uno4kSE, VU+ Ultimate4k
- Has thanked: 62 times
- Been thanked: 12 times
Re: Decoder für IR-Signale von Fernbedienungen
Ich habe hier noch ein Arudino Uno R3 Board und ein dazu passendes LCD KeyPad Shield Link
Ich gehe davon aus das ich da andere LCD Treiber/Einstellungen brauche. (SPI.h und LiquidCrystal.h ?)
Ich gehe davon aus das ich da andere LCD Treiber/Einstellungen brauche. (SPI.h und LiquidCrystal.h ?)
-
- Beiträge: 111
- Registriert: Sa 28. Mai 2016, 15:42
- Wohnort: LE
- Box: Zee², Trinity DUO , ZGEMMA H7C
- Been thanked: 1 time
Re: Decoder für IR-Signale von Fernbedienungen
Das LCD KeyPad Shield hat schon D2 und D3 in beschlag. Du müsstest also andere Pins für die
IR-Signale wählen.
- Gorcon
- NI - VIP
- Beiträge: 2838
- Registriert: Mi 13. Apr 2016, 10:55
- Box: E2HD, VU+ Uno4kSE, VU+ Ultimate4k
- Has thanked: 62 times
- Been thanked: 12 times
Re: Decoder für IR-Signale von Fernbedienungen
Ist zwar jetzt schon "verjährt" aber ich will das Projekt nochmal mit einem Arduino Nano V3 nachbauen. (ich hatte es damals schon probiert aber nicht zum laufen bekommen)
Ich bin gerade dabei einen Schaltplan zu zeichnen und habe mit der Pinbelegung ein "kleines" Problem.
Du schreibst oben
RX(0) Soweit OK.
Aber hier https://neutrino-images.de/board/viewtopic.php?t=7398 schreibst Du:
Wenn ich mir die Bilder im Git anschaue scheint der IR Empfänger an D3 angeschlossen zu sein.
Im Code muss doch (meines "Wissens") der Pin definiert werden aber da finde ich nichts (oder bin zu blöd dazu).
Wie ich das dann am Receiver eingebunden bekomme, werde ich dann u.U. noch nachfragen.
PS: irgendwie sind meine Gehirnwindungen etwas verknotet und im Alter bekomme ich die Knoten immer schlechter raus...
Ich bin gerade dabei einen Schaltplan zu zeichnen und habe mit der Pinbelegung ein "kleines" Problem.
Du schreibst oben
Pin 2 ist laut https://europe1.discourse-cdn.com/ardui ... ca513d.pngDer Pin 3 vom IR-Empfänger KY-022 wird dann mit Pin 2 vom Arduino Nano V3 verbunden.
RX(0) Soweit OK.
Aber hier https://neutrino-images.de/board/viewtopic.php?t=7398 schreibst Du:
Pin 3? Das ist Reset.Die SFH409-2 ist dabei nur durch die KY-005 zu ersetzen. IROUT wird mit Pin 3 vom Arduino Nano V3 verbunden.
Wenn ich mir die Bilder im Git anschaue scheint der IR Empfänger an D3 angeschlossen zu sein.
Im Code muss doch (meines "Wissens") der Pin definiert werden aber da finde ich nichts (oder bin zu blöd dazu).
Wie ich das dann am Receiver eingebunden bekomme, werde ich dann u.U. noch nachfragen.
PS: irgendwie sind meine Gehirnwindungen etwas verknotet und im Alter bekomme ich die Knoten immer schlechter raus...
-
- Beiträge: 111
- Registriert: Sa 28. Mai 2016, 15:42
- Wohnort: LE
- Box: Zee², Trinity DUO , ZGEMMA H7C
- Been thanked: 1 time
Re: Decoder für IR-Signale von Fernbedienungen
Sorry für die späte Antwort und ja, es war etwas unglücklich formuliert.
Gemeint waren für den Arduino Nano V3:
Pin 2 = D2 = PD2
Pin 3 = D3 = PD3
Die Bezeichnung der Pins findet sich in der Datei PinDefinitionsAndMore.h für __AVR__ wieder.
Dort steht dann eben nur 2 und 3 drin, auf die ich mich bezogen hatte.
Gemeint waren für den Arduino Nano V3:
Pin 2 = D2 = PD2
Pin 3 = D3 = PD3
Die Bezeichnung der Pins findet sich in der Datei PinDefinitionsAndMore.h für __AVR__ wieder.
Dort steht dann eben nur 2 und 3 drin, auf die ich mich bezogen hatte.
Code: Alles auswählen
#elif defined(__AVR__) // Standard AVR Boards like Uno, Nano
#define IRMP_INPUT_PIN 2 // To be compatible with interrupt example, pin 2 is chosen here.
#define IRSND_OUTPUT_PIN 3
#define TONE_PIN 4
#if !defined(ALTERNATIVE_IR_FEEDBACK_LED_PIN)
#define ALTERNATIVE_IR_FEEDBACK_LED_PIN 6 // E.g. used for examples which use LED_BUILDIN for example output.
#endif
- Gorcon
- NI - VIP
- Beiträge: 2838
- Registriert: Mi 13. Apr 2016, 10:55
- Box: E2HD, VU+ Uno4kSE, VU+ Ultimate4k
- Has thanked: 62 times
- Been thanked: 12 times
Re: Decoder für IR-Signale von Fernbedienungen
Aber Pin 3 ist doch Reset.
D3 ist nach dem Pinout Pin 6. Mit den unterschiedlichen Bezeichnungen der Belegungen habe ich immer ein Problem.
D3 ist nach dem Pinout Pin 6. Mit den unterschiedlichen Bezeichnungen der Belegungen habe ich immer ein Problem.
Re: Decoder für IR-Signale von Fernbedienungen
Ja, Pin3 == D3. Kann beim Programmieren doch keiner Wissen Wie dein Board die Pins nach außen gelegt hat und in welcher Richtung die gezählt werden
-
- Beiträge: 111
- Registriert: Sa 28. Mai 2016, 15:42
- Wohnort: LE
- Box: Zee², Trinity DUO , ZGEMMA H7C
- Been thanked: 1 time
Re: Decoder für IR-Signale von Fernbedienungen
Du hast ja Recht. Der "Fehler" kommt ja von mir. Ich hätte nur den Begriff Pin weglassen sollen.Wie soll man das anders zählen?!
Der Rest der Unklarheiten kommt durch die Verwendung von Arduino als Programmierumgebung.
@Gorcon: Für dich hätte ich schreiben müssen D2 = Pin 5 und D3 = Pin 6 (wenn du ab D1/TX PD1 = Pin 1 zählst).Board/chip numbers are not used as pin numbers by Arduino.
Beim programmieren wird aber dann wieder nur mit 2 und 3 gearbeitet, wegen D2 und D3 (und nicht Pin 2 und Pin 3 des Boards).
- Gorcon
- NI - VIP
- Beiträge: 2838
- Registriert: Mi 13. Apr 2016, 10:55
- Box: E2HD, VU+ Uno4kSE, VU+ Ultimate4k
- Has thanked: 62 times
- Been thanked: 12 times
Re: Decoder für IR-Signale von Fernbedienungen
D2 hätte mir schon gereicht. Nur die Angabe zum Pin hatte mich verwirrt da sie nicht zusammenpasste.
Aber Danke für die Aufklärung.
Wie verwirrend die Angaben der Anschlüsse sein können hatte ich erst letztens bei einem Board gesehen. Mein altes hatte u.a. die Bezeichnungen AD D3, D4,D8,D9,10 usw. Das neue AD, I00,I02,I015,RX,TX. Ich wollte das Board dann schon zurückschicken weil ich dachte das sind ganz andere Pins herausgeführt, aber nach dem durchklingeln waren es exakt die gleichen. Nur vollkommen falsch beschriftet, denn I015 hat nichts mit D8 zu tun.
Aber Danke für die Aufklärung.
Wie verwirrend die Angaben der Anschlüsse sein können hatte ich erst letztens bei einem Board gesehen. Mein altes hatte u.a. die Bezeichnungen AD D3, D4,D8,D9,10 usw. Das neue AD, I00,I02,I015,RX,TX. Ich wollte das Board dann schon zurückschicken weil ich dachte das sind ganz andere Pins herausgeführt, aber nach dem durchklingeln waren es exakt die gleichen. Nur vollkommen falsch beschriftet, denn I015 hat nichts mit D8 zu tun.