Posts by 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.

    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;

    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
    ,
    };

    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.

    Hi,

    senden per IR habe ich jetzt auch noch richtig mit IR_Dioden und einem LIRC-Empänger, LG-TV und Onkio-Verstärker getestet.

    Alle reagieren korrekt auf die Signale.


    Very good job!! und Danke für die schnelle Hilfe. :thumbup:


    PS: Wegen Statusausgabe per Neopixel eröffne ich einen neuen Thread.

    Signal nach Boot ist mit dieser Änderung ok.

    Code
    irsnd_init (void)
    ......
    #  elif defined (ARM_RP2040)                                                        // ARM_RP2040
            /* GPIO Configuration */
            gpio_set_function(IRSND_BIT, GPIO_FUNC_PWM);
            slice_num = pwm_gpio_to_slice_num(IRSND_BIT);
            pwm_set_output_polarity(slice_num, true, true);
     >>>>>  gpio_set_outover(IRSND_BIT, GPIO_OVERRIDE_LOW);    <<<<<<<<<<<<
    
            irsnd_set_freq (IRSND_FREQ_36_KHZ);                                         // set default frequency

    Good job!

    sowohl zwischen den Bits als auch zwischen den Paketen ist das Signal L.


    Nur nach dem Boot ist es noch H bis zum ersten Paket. Aber das dürfte trivial sein.

    Kann ich als Übung machen, nächstes Jahr.


    PS: I will später noch einen Neopixelstreifen ansteuern (mit PIO, gibt ja sogar ein Beispiel im SDK).

    Der soll den Status meines WAF-Daemon* anzeigen.


    * WAF-Daemon:

    Pythonprogram das die Geräte steuert (Ein/Aus, Eingänge, Lautstärke).

    Ursprünglich wollte ich das in den Pico rein nehmen, aber Micropython kann nur zwei Threads und ich brauche pro Gerät einen.

    Hi und Danke.

    Werde ich Testen, kann aber sein dass ich erst nächstes Jahr dazu komme.


    PS: Arbeite gerade das RP2040 Ref.-Manual durch. Die PIOs waren der Grund warum ich den überhaupt hier habe.

    PS2: IRMP ist schon klasse.

    ZU:

    Code
    gpio_put(IRSND_BIT, 0);

    Der Port gehört ja dem PWM. Geht da der gpio_xxx noch durch? Ich glaube eher nicht. Zumindest bei all den Armen die ich bisher auf dem Tisch hatte war das so (iMX1, 25,27,53,7, Allwinner, Omap3 und 4, Mediatec, ..)


    Vielleicht muss man die Zahl der Zyklen so anpassen dass es immer eine gerade Anzahl ist.


    Edit:

    Schaltet der

    Code
    pwm_set_enabled(slice_num, false); 

    zurück zum PIO?

    Hi, bist Du schnell, ich analysiere seit 30 Minuten den Code. RP2040 ist Neuland für mich (aber kenne viele andere Architekturen, auch ARM).

    2023-12-29_17-08_RP2040_hid_irmp.uf2 hat das Problem auch noch.

    Das muss ja auch zum richtigen Zeitpunk auf L (also 1/36khz später).

    Gleich nach dem Boot ist auch noch H.

    Passt (udev).

    Senden geht auch prinzipiell (Habe nur nen Osci dran).

    Aber der GP6 bleibt am Ende manchmal auf High. Auch zwischen den Bits steht das Signal manchmal auf H.


    Auch bevor ich etwas gesendet habe war der GP6 auf H.

    Wie soll das denn sein (low- oder Highactiv?)


    Daten:

    prot: 15 addr: f command: 0401 flag: 1


    2 IR Pakete (RC6):

    Teil eines Paketes:

    vdr-portal.de/index.php?attachment/48548/

    Man sieht dass die Pausenzeit einen zufälligen Pegel hat.

    Da stimmt noch was nicht beim PWM. Ich kann mir das anschauen, kann aber ein paar Tage dauern.

    Hi,

    Der IRMP mit RP2040 läuft in meinem Testaufbau gut als Empfänger.

    Aber wie kann ich IR senden?

    In der FW ist ja zumindest der USB-Teil implementiert. Beim GPIO habe ich gerade Zweifel.


    Aber wie kriege ich die HID-Reports vom PC in die FW?

    Das irsnd schreibt ja nur in einen Datei?