IRMP auf STM32 - ein USB-HID-Keyboard IR Empfänger/Sender/Einschalter mit Wakeup-Timer

  • HI vdr-rossi

    Habe schon zwei Raspberry Pi Pico

    Mit Jrie,s Hilfe fertig gestellt , laufen bei mir ootb mit einer RC6 Fernbedienung

    sehr flüssig , genau so gut wie von den STM32 Empfängern her bekannt.

    Nur das flashen funzt bei den Picos einfacher.

    Der erste Start des VDR,s sollte noch mit dem Powerknopf / Taste am Gehäuse erfolgen.

    Erst der zweite Start wenn der Vdr im Standby ( Netzteil eingeschaltet ) ist , funzt der wakeup über den Pico.

    Hat sich erledigt

    Jrie hat ein Firmware Update bereit gestellt.

    So meine Erfahrungen mit dem Pico.

    Danke an Jrie

    Gruß Helmut

    Test_VDR: Lintec Senior - MSI G41M P25 MS7592 Board - Intel P4 E8500 / 775 CPU - MSI GT710 PCI-e passiv - DVBSky S2 952 Dual SAT - 120GB Intenso SSD + Big HDD - 2x2GB DDR3 RAM - LG GH24NSD1 S-ATA DVD - SMK RC6 MCE 50GB FB. an STM32 USB-Arduino - EasyVDR 5 - Softhddevice mit Pulseaudio - Kodi 20.5 m. Confluence Skin
    Clients:Div. Raspberry PI

    Fernbedienungsempfänger: Siehe hier:RP 2040 Zero I.R. Empfänger kompl.

    Edited 3 times, last by Emma53 ().

  • HI vdr-rossi

    Habe schon zwei Raspberry Pi Pico

    Ich auch.


    Wollte hier nur einen Zwischenstand abfragen. Die nächsten Wochen komme ich eh nicht zum basteln.


    Verkabelt ihr den TSOP direkt an die Pico Pins? Oder mit Widestand und Diode (Optokoppler)?

  • Yes

    Der Tsop direkt an die seitlichen Gpio,s

    Das Kabel zum Pwr Board Anschluss mit 220 Ohm Widerstand davor

    Eigentlich so wie vom Stm32 her bekannt

    MfG Helmut

    Images

    Test_VDR: Lintec Senior - MSI G41M P25 MS7592 Board - Intel P4 E8500 / 775 CPU - MSI GT710 PCI-e passiv - DVBSky S2 952 Dual SAT - 120GB Intenso SSD + Big HDD - 2x2GB DDR3 RAM - LG GH24NSD1 S-ATA DVD - SMK RC6 MCE 50GB FB. an STM32 USB-Arduino - EasyVDR 5 - Softhddevice mit Pulseaudio - Kodi 20.5 m. Confluence Skin
    Clients:Div. Raspberry PI

    Fernbedienungsempfänger: Siehe hier:RP 2040 Zero I.R. Empfänger kompl.

    Edited once, last by Emma53 ().

  • Die Firmware für den Raspberry Pi Pico ist fertig.

    Einfach die *.uf2 aus build im Dateimanager auf den Pico im Massenspeicher-Modus (dazu beim Anstecken an USB BOOTSEL gedrückt halten) ziehen und der Pico ist einsatzbereit :)

    Pinbelegung in config.h, Pinlayout in Pico-R3-A4-Pinout.pdf.

  • Ich habe mal eine Frage zum Timeout beim Anlernen der Fernbedienungstasten:

    Derzeit blockiert dieser Modus alle anderen Befehle und der Modus lässt sich auch nicht abbrechen. Wäre es möglich eine Funktion hinzuzufügen das diesen Modus beendet? Oder gibt es das bereits und ich habe das nur übersehen? In dem Fall wäre es auch interessant, wenn sich die Maximale Wartezeit einstellen ließe. Das wäre z.B. interessant, wenn man die Einstellungen an der Map speichern möchte. Derzeit geht das erst wenn die Wartezeit abgelaufen ist.

    Ich bräuchte das für mein stm32kbdIRconfig_cmd Tool https://gitlab.com/MLD-6/meta-…iles/stm32kbdIRconfig_cmd, dass endlos auf Tastendrücke warten soll, jedoch beim beenden des Tools den IRMP Stick wieder in den normalen Modus zurück versetzen soll. Schön wäre eine Monitor Funktion wie bei der nicht KBD Version, die einfach nur die Codes der gedrückten Tasten zurück liefert, also auch von unbekannten Tasten.

    MLD 5.5 mit vdr 2.6 - lirc yaUSBir - Octopus NET S2 - SCR - XFX GeForce 9300 mit Intel E3200 - 2GB RAM - WD Green 12TB HDD - SanDisk 64GB SSD - Lian Li PC-C37B - Samsung LE40A559
    MLD 5.5 mit vdr 2.4 - Raspberry Pi 3 - rpihddevice
    MLD 5.5 mit Squeeze Play - Raspberry Pi 2 - 32GB SD - 7" Touch TFT

  • Die Erkennung passiert im Empfänger in der Firmware: https://github.com/j1rie/IRMP_…er/RP2040/src/main.c#L416

    Der Benutzer muss ja Zeit haben, um die Taste zu drücken, das sind momentan 5 Sekunden Timeout bzw. sobald eine Taste empfangen wird.

    In der App kann man das Warten der Firmware nicht abbrechen, sondern muss den Timeout abwarten.

    Du kannst ja in der Benutzerführung darauf hinweisen, dass man den Timeout abwarten muss.

    Oder du brichst beim erneuten Senden des ersten empfangenen Codes ab (so wie der VDR das beim Anlernen macht). Das würde deine Anforderung erfüllen.

    Eine Monitor Funktion könnte man bauen, indem man den Code empfängt mit set - IR Data und mit get - IR Data ausliest.

  • Ich habe für das Webif ein weiteres stm32kbdIRconfig_cmd Kommandozeilen Tool erstellt, dass die Skriptgesteuerte Kommunikation ermöglicht: https://gitlab.com/MLD-6/meta-…iles/stm32kbdIRconfig_cmd

    Vielleicht möchtest Du das ja mit aufnehmen?

    Wenn du damit fertig bist, schaue ich mir das mal an.

    Ich habe zum Skripten bisher immer https://github.com/olebowle/irctl benutzt, das ist aber für die irmplircd Version. Könnte man für die Keyboard Version anpassen.

  • Eine Monitor Funktion könnte man bauen, indem man den Code empfängt mit set - IR Data und mit get - IR Data ausliest.

    Ja, genau so mache ich das im Moment. Da in meinem Fall die keymap jedoch auch manuell bearbeitet werden kann, muss der User zum Schluss die Änderungen noch abspeichern. Da wäre es praktisch, wenn dann nicht die 5 Sekunden abgewertet werden müsste, sondern der Anlernmodus beendet werden könnte. Das ist zwar nicht wichtig, wäre aber ein kleiner Komfortgewinn.

    MLD 5.5 mit vdr 2.6 - lirc yaUSBir - Octopus NET S2 - SCR - XFX GeForce 9300 mit Intel E3200 - 2GB RAM - WD Green 12TB HDD - SanDisk 64GB SSD - Lian Li PC-C37B - Samsung LE40A559
    MLD 5.5 mit vdr 2.4 - Raspberry Pi 3 - rpihddevice
    MLD 5.5 mit Squeeze Play - Raspberry Pi 2 - 32GB SD - 7" Touch TFT

  • Ich habe zum Skripten bisher immer https://github.com/olebowle/irctl benutzt, das ist aber für die irmplircd Version.

    Das Tool hatte ich bisher noch gar nicht gefunden. Im Prinzip macht das tatsächlich das gleiche wie mein Tool, nur halt für die nicht KBD Version ;)

    MLD 5.5 mit vdr 2.6 - lirc yaUSBir - Octopus NET S2 - SCR - XFX GeForce 9300 mit Intel E3200 - 2GB RAM - WD Green 12TB HDD - SanDisk 64GB SSD - Lian Li PC-C37B - Samsung LE40A559
    MLD 5.5 mit vdr 2.4 - Raspberry Pi 3 - rpihddevice
    MLD 5.5 mit Squeeze Play - Raspberry Pi 2 - 32GB SD - 7" Touch TFT

  • Da in meinem Fall die keymap jedoch auch manuell bearbeitet werden kann, muss der User zum Schluss die Änderungen noch abspeichern. Da wäre es praktisch, wenn dann nicht die 5 Sekunden abgewertet werden müsste, sondern der Anlernmodus beendet werden könnte. Das ist zwar nicht wichtig, wäre aber ein kleiner Komfortgewinn.

    Da müsste ich mal dein Skript sehen.

  • dass endlos auf Tastendrücke warten soll

    Da wäre es praktisch, wenn dann nicht die 5 Sekunden abgewertet werden müsste, sondern der Anlernmodus beendet werden könnte. Das ist zwar nicht wichtig, wäre aber ein kleiner Komfortgewinn.

    Wenn du eine Idee hast, wie das in der Firmware realisiert werden kann, bin ich für Vorschläge offen.

    Da müsste ja über USB der Befehl rein kommen und die IR-Empfangs-Schleife unterbrechen.


    Wesentlich einfacher wäre es, einen bereits konfigurierten Code nochmal zu senden, und dadurch zu stoppen.


    Du solltest sowieso auf mehrfache Codes prüfen, und die nicht erlauben.

    Das macht das "kleine" Konfigurationsprogramm nicht, weil das hauptsächlich für mich zum schnellen Testen gedacht war.

    Im "grossen" Konfigurationsprogramm mit GUI wird das so gemacht, schau da mal rein, wenn du magst.

  • Du solltest sowieso auf mehrfache Codes prüfen, und die nicht erlauben.

    Ja, genau das mache ich bereits.

    MLD 5.5 mit vdr 2.6 - lirc yaUSBir - Octopus NET S2 - SCR - XFX GeForce 9300 mit Intel E3200 - 2GB RAM - WD Green 12TB HDD - SanDisk 64GB SSD - Lian Li PC-C37B - Samsung LE40A559
    MLD 5.5 mit vdr 2.4 - Raspberry Pi 3 - rpihddevice
    MLD 5.5 mit Squeeze Play - Raspberry Pi 2 - 32GB SD - 7" Touch TFT

  • Wenn du eine Idee hast, wie das in der Firmware realisiert werden kann, bin ich für Vorschläge offen.

    Damit wolle ich mich eher nicht befassen. Die Zeit in der ich aktiv in C programmiert habe ist schon mehr als 20 Jahre her ;)

    Obendrein komme ich mit der aktuellen Funktion ja auch recht gut zurecht. Es besteht also kein akuter Handlungsbedarf :)

    MLD 5.5 mit vdr 2.6 - lirc yaUSBir - Octopus NET S2 - SCR - XFX GeForce 9300 mit Intel E3200 - 2GB RAM - WD Green 12TB HDD - SanDisk 64GB SSD - Lian Li PC-C37B - Samsung LE40A559
    MLD 5.5 mit vdr 2.4 - Raspberry Pi 3 - rpihddevice
    MLD 5.5 mit Squeeze Play - Raspberry Pi 2 - 32GB SD - 7" Touch TFT

  • Moin,

    letzt Woche habe ich die RP2040 Keyboard Firmware getestet. Mit einem Raspberry Pico.


    Hat alles auf Anhieb funktioniert!


    IR Sensor wurde mit Molex Stecker verdrahtet. Pinbelegung wie am Atric.


    Bild:


    Ist allerdings noch nicht im Produktivsystem verbaut. Warte auf Lieferung der kleinen USB RP2040 Dinger…


    Danke für das Projekt und die Mühe!

  • Hi vdr_rossi

    Sieht gut aus.

    Fehlt nur noch das 4. Kabel zum Einschalten/ Wakeup

    des Vdr,s zum PWR Anschluss des Motherboards per Fernbedienung

    PS: Was für einen Tsop /Empfangsdiode hast Du verbaut ?

    MfG Helmut

    Test_VDR: Lintec Senior - MSI G41M P25 MS7592 Board - Intel P4 E8500 / 775 CPU - MSI GT710 PCI-e passiv - DVBSky S2 952 Dual SAT - 120GB Intenso SSD + Big HDD - 2x2GB DDR3 RAM - LG GH24NSD1 S-ATA DVD - SMK RC6 MCE 50GB FB. an STM32 USB-Arduino - EasyVDR 5 - Softhddevice mit Pulseaudio - Kodi 20.5 m. Confluence Skin
    Clients:Div. Raspberry PI

    Fernbedienungsempfänger: Siehe hier:RP 2040 Zero I.R. Empfänger kompl.

    Edited once, last by Emma53 ().

  • Danke.


    Verbaue das 4. Kabel erst bei der Waveshare RP2040-One USB Stick Variante. Und das auch gleich im Produktivsystem.

    Der TSOP31236 stammt noch aus Atric Comport Zeiten.

  • Interessant wäre jetzt noch ein Pfostenstecker/buchse, um das direkt auf das Mainbord stecken zu können, damit die Platine nicht im PC herumfliegt. Wisst Ihr ob die Pfostenstecker Pinbelegung genormt ist, oder gibt's da unterschiedliche?

    MLD 5.5 mit vdr 2.6 - lirc yaUSBir - Octopus NET S2 - SCR - XFX GeForce 9300 mit Intel E3200 - 2GB RAM - WD Green 12TB HDD - SanDisk 64GB SSD - Lian Li PC-C37B - Samsung LE40A559
    MLD 5.5 mit vdr 2.4 - Raspberry Pi 3 - rpihddevice
    MLD 5.5 mit Squeeze Play - Raspberry Pi 2 - 32GB SD - 7" Touch TFT

  • Habe meine interne Verkabelung mit Inline 33440B Adapterkabel auf USB Buchse realisiert. Das nutze ich für das RP2040-One Ding einfach weiter und deswegen auch die Raspberry Pico Hardware (microUSB) verworfen.

    Für IR Sensor eine Molex Buchse/Stecker Verbindung.


    Wikipedia sagt zu der Pfostenstecker Pinbelegung Frage:

    Code
    Verbreitet haben sich darüber hinaus diverse Varianten von Stiftleisten im Rastermaß von 2,54 Millimeter (= 100 mil) auf PC-Mainboards, vorwiegend mit 1×4, 1×5 und 2×2 Stiften bzw. für Doppel-USB-Verbinder mit 2×4 oder 2×5 Stiften. Gab es zunächst mehrere zueinander inkompatible Belegungsvarianten, hat sich im Zuge neuerer Mainboard-Spezifikationen von Intel inzwischen eine bestimmte 2×5-polige Belegung etabliert, die auch mit USB-Flash-Modulen kompatibel ist.

    Also im Zweifel bzw. bei älteren Mainboards besser im Handbuch nachschauen.

    Edited 3 times, last by vdr_rossi ().

  • Wisst Ihr ob die Pfostenstecker Pinbelegung genormt ist, oder gibt's da unterschiedliche?

    Unterschiedliche. Schau lieber ins Handbuch vom Board, bevor du was aufsteckst.


    Mit sowas ganz ohne Kabel: https://www.aliexpress.com/item/1005005426984866.html?

Participate now!

Don’t have an account yet? Register yourself now and be a part of our community!