IRMP mit RP2040 und Statusausgabe

  • Hi,

    hier möchte ich über einen Erweiterung zu IRMP_STM32 berichten und Diskutieren.

    Ich habe Jörgs Repo "geforked" damit ich hoffentlich PRs schicken kann.

    Mein Fork


    Die Idee:

    =======

    Jetzt-Zustand:

    --------------------

    Auf einem Banana PI läuft ein in Python geschriebener Daemon der die Geräte entsprechend der Aktivität umschaltet (Fernsehen, Musik hören, etc).

    Er greift auch per ETH auf manche Gerät zu um z.B. den Status von Mute zu steuern (Die FB macht ja nur Toggle), Eingänge zu setzten oder die Lautstärke je nach Eingang zu setzten.

    Die Tasten A,B,C der FB URC-7980 steuern die Aktivität. (Bei der URC-3661 will ich direkt die Aktivitytasten verwenden weil die auch schöne Icons drauf haben - aber ich schweife ab).

    Es gibt auch eine Android APP, die kann dann noch ein paar weitere Aktivities einschalten.

    Wenn der Daemon beschäftigt ist blinkt eine LED. Diese soll durch etwas schöneres ersetzt werden.


    Soll-Zustand:

    -------------------

    Der IRMP soll Neopixel (8 Stück auf PCB) ansteueren. Per Hidreport (neue ID) werden bis zu 63 Leds angesteuert. Lauflicht etc wird vom Host aus gesteuert.

    Man könnte auch noch normal LEDs einbauen die dann z.B. als "Recording-LED" dienen könnten.


    Warum?

    ------------

    Weils schön ist, mir langweilig ist (bin Rentner), ich es kann, weil ich dann doch vielleicht die Anzahl 50 bei meinen USB-Entwicklungen erreichen kann (bin bei +40 seit 1996) ;)


    Jörg: Bist du an PRs interessiert?


    Versuche die auf dem WS2812-Beispiel des Pico-SDK aufbauen waren erfolgreich, braucht kaum Resourcen. Das Bitbanging für die WS2812 macht ein PIO und langweilt sich dabei.

    Die LED-Daten aus dem Report herauszuholen und in die WS2812 zu schreiben braucht nur ein paar µS (den Teil muss ich noch implementieren)


    Ein Gehäuse habe ich auch schon entworfen (openscad). Deckel ist transparent (milchig), sieht man im Film. Musste ihn in .txt ändern da mp4 hier nicht zulässig sind. Sind nur ein paar Sekunden um eine Eindruck zu bekommen.

    Dateien

    Grüße, Dieter :)

  • Status:

    Github enthält Sources (keine binaries).

    Erster Test war erfolgreich.


    Werde jetzt ein Python-Programm schreiben das die HidReports senden kann.

    Grüße, Dieter :)

  • In Github hat es mehr Bilder.



    Github repo

    Grüße, Dieter :)

  • Grundsätzlich gefällt mir die Idee.

    Die Recording-LED läuft bei mir derzeit über die Tastatur, da blinkt dann eine LED (vdr-plugin-statusleds).

    Auf die Idee, das über den RP2040/STM32 zu machen, bin ich noch gar nicht gekommen.

    Wäre nützlich für jeden, der keine Tastatur am VDR hat.


    Ich habe für die STM32 ja schon die Möglichkeit ein Ziffern-Display anzusteuern drin, nur nicht vom Host aus. Das könnte man einbauen.


    Ich bin mir nicht sicher, was der beste Weg wäre, um solche Status Anzeigen darzustellen.

    Deine Neopixel sind sicher eine gute Möglichkeit.

    Im Prinzip könnte man auch ein kleines Display ansteuern.

    Oder ganz einfach normale LED's.


    Frage an Alle: Wer würde denn Neopixel zur Status-Anzeige am IRMP tatsächlich benutzen wollen?

  • Statt neue Report IDs einzuführen, ist es in diesem Projekt einfacher, neue Kommandos einzuführen: statusled

    Das könnte man aufbohren für mehrere LED Kommandos mit einem Funktionsarray. Durch den erster Parameter würde dann die soundsovielste Funktion ausgewählt.

  • hatte ich mir auch überlegt.

    Wenn du einverstanden bist ändere ich das.

    Grüße, Dieter :)

  • done

    Grüße, Dieter :)

  • Status update:

    Habe Jörg einen ersten PR geschickt.

    Grüße, Dieter :)

  • Wenn ich das richtig verstehe, besteht dein Anwendungsfall darin, durch ein Lauflicht zu signalisieren, wenn dein Daemon beschäftigt ist.


    Da sich niemand auf meine Frage in #4 gemeldet hat, nehme ich an, dass niemand daran Interesse hat.


    Solange das so bleibt, möchte ich deinen NeoPixel-Code nicht übernehmen.

    Ich würde auch nicht nochmal meine Ziffernanzeige einbauen.

    Das führt zu weit weg vom Eigentlichen.


    Mir gefällt dein Projekt als schöne Spielerei.


    Ein paar Kleinigkeiten wie in CmakeLists.txt werde ich, wenn ich mal wieder Zeit habe, übernehmen.


    Noch ein Tipp: Deine Änderungen in main() gehören nach set_handler().


    Du hast übrigens nicht mir einen PR geschickt, sondern dir selbst ;)

  • Hi Jörg,

    Parser ist in main weil da schon etwas war. Werde das anpassen, Callback gefällt mir besser.

    Bitte auch die CMD_NEOPIXEL,... rein nehmen sonst ist die Gefahr groß dass wir inkompatibel werden.


    enum command {
    CMD_EMIT,
    CMD_CAPS,
    CMD_HID_TEST,
    CMD_ALARM,
    CMD_MACRO,
    CMD_WAKE,
    CMD_REBOOT,
    CMD_EEPROM_RESET,
    CMD_EEPROM_COMMIT,
    CMD_EEPROM_GET_RAW,
    CMD_STATUSLED,
    CMD_NEOPIXEL,
    CMD_NEOPIXEL_INIT
    ,
    };

    Grüße, Dieter :)

  • Habs nach set_handler verschoben.

    Leider mussten dadurch auch die Offsets im Report angepasst werden.

    README.md muss ich noch anpassen, aber RunLight.py passt schon.


    Zu den CMD_NEOPIXEL:

    Falls du die nicht ins enum nehmem möchtest, lasse ich Platz. Schreib was dir lieber ist.

    Ich muss die README sowiso anpassen.

    Code
    CMD_NEOPIXEL=40;

    Grüße, Dieter :)

  • Ach, nochwas.

    Die StatusLed und der Neopixel verwenden den gleichen GPIO.

    Falls jemand (ich?) beide haben will gibt es ein Problem.

    Vermutlich verschiebe ich den Neopixel. Gibt es schon andere verplante GPIOs?


    Vielleicht emuliere ich die Statusled auch mit einem Neopixel. Mal sehen.

    Gehäuse muss ich vermutlich neu drucken weil die gewinkelten USB-Stecker mehr Platz brauchen als ich vorgesehen habe.

    Dann kann ich auch eine Statusled vorsehen.

    Grüße, Dieter :)

  • Habs nach set_handler verschoben.

    Sieht doch gleich viel besser aus ;)


    CMD_NEOPIXEL=40;

    Ist mir so lieber.


    Gibt es schon andere verplante GPIOs?

    Bis jetzt nicht.


    Die Statusled ist echt eine gute Idee von dir.

    Seit ich sie dran habe, will ich sie nicht mehr missen.

    Ich bastel viel am VDR, und so sehe ich gleich, was los ist.

    Und keine Gefahr mehr, dass ich eine Aufnahme vermassle, weil ich im Basteleifer ständig neu starte.


    Ich habe eine kleine normale rote LED vorne durch ein kleines Loch geschoben, die sehe ich viel besser als die LED von der Tastatur (die jetzt nicht mehr dran ist).

  • Code
    CMD_NEOPIXEL=40;

    Mache ich so.


    Statusled zeigt an das VDR an ist?

    Oder Aufnahme?


    Ich habe zweifarb Leds rumliegen.... what about: grün: VDR, rot Aufnahme


    Man könnte auch analoge RGB Leds nehmen, aber dann sind die Neopixel fast günstiger (1 Streifen mit 8 LED ~ 0,85€ beim Ali.

    Oder eine von meinen 8 ist für VDR/Aufnahme. Aber da gibt es ev. Probleme da von zwei Seiten zugegriffen wird (Plugin und mein WAF-Daemon).

    Die wissen ja nichts voneinander. Braucht ein "Store/Resume" Befehl...

    Grüße, Dieter :)

  • Bei mir ist es so: die LED leuchtet, wenn der VDR läuft (das Program, nicht der Rechner), ist aus, wenn er nicht läuft, und bei Aufnahmen blinkt sie entsprechend der Anzahl (Das macht das statusleds-Plugin).

    Außerdem blinkt sie beim Empfang der Powertaste beim Einschalten (das macht die Firmware).


    Für mich ist das perfekt, aber der Fantasie sind da keine Grenzen gesetzt ;)

  • Hi Dieter

    Habe hier einige Raspberry Pico,s

    Die neuste Firmware habe ich schon geflasht.

    Aus jrie,s Git . Die Version 2024-01-20_00-51RP2040_hid_irmp.uf2

    Frage von mir wo muss ich denn die Status LED anschliessen.

    An welchen Pin. Die Neopixel Led,s brauche ich nicht.

    Möchte ich nicht verwenden

    Gruß und Danke Helmut

    Bilder

    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.2 m. Confluence Skin
    Clients:Raspberry PI B+ mit OpenElec 5.08 Kodi Helix 14.2 und Tsop31238 Lirc mit Conrad Promo8 FB on Code VCR 0104 - Raspi3 m.OpenElec 6.03 und Kodi 15.2 Isengard

    Einmal editiert, zuletzt von Emma53 ()

  • Hi,

    habe ich gestern gemacht. Ist GPIO2 (Pin 4).


    Mein Repo:

    Die Neopixel sind jetzt auf GPIO7.

    Auf GPIO5 kann man eine zweite LED anschliesen. Ich habe da eine Zweifarbige LED dran (GPIO5==rot, GPIO2==grün).


    Es gibt ein Python-Beispiel Statusled.py.

    Grüße, Dieter :)

  • Hallo Dieter

    Neues Projekt !!

    Habe mir einen Raspberry RP2040 Zero ( Waveshare ) besorgt.

    Grund Anschlüsse wie der Raspbery Pico für den Tsop und Wakeup . Daten und Strom Versorgung über einen Internen Motherboard USB Anschluss

    Tsop an 5 oder 3,3 Volt je nach Tsop Modell , Masse des Tsops an GND und IR_In des Tsops an GPIO 28

    Wakeup Über GPIO 27 zum PWR Button des Motherboards und Gehäuse Einschalttasters

    Was muss ich noch installieren unter EasyVDR 5.x und was hat es auf sich mit der Statusled.py

    Wo bekomme ich die her. Läuft das Überhaupt unter EasyVDR 5

    Möchte auch eine Duo Led Blau / Rot anschließen doch der Zero hat nur einen Masse GND Anschluss.

    Nach dem Flashen mit der Firmware 2024-01-20_00-51RP2040_hid_irmp.uf2

    Funzt der Zero einwandfrei , auch der wakeup funzt zuverlässig . Wie beim Orginal Pico.

    Aber keine Onboard Led leuchtet , weder im Standby noch beim betätigen irgend einer FB Taste.

    Deshalb wäre eine Status Led ganz gut, besser noch mit einer Duo Led , wie bei Dir.

    Deshalb welche Voraussetzungen müssen erfüllt sein, was muss ich nachinstallieren und wo evtl. anschließen.

    Gruß und Danke 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.2 m. Confluence Skin
    Clients:Raspberry PI B+ mit OpenElec 5.08 Kodi Helix 14.2 und Tsop31238 Lirc mit Conrad Promo8 FB on Code VCR 0104 - Raspi3 m.OpenElec 6.03 und Kodi 15.2 Isengard

    Einmal editiert, zuletzt von Emma53 ()

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!