logo elektroda
logo elektroda
X
logo elektroda
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

[CBU/BK7231N] Lampy na WS2811C z mikrofonem z Obi - zmiana firmware

jwp_nz 25 Kwi 2024 05:57 4851 2
Treść została przetłumaczona angielski » polski Zobacz oryginalną wersję tematu
  • [CBU/BK7231N] Lampy na WS2811C z mikrofonem z Obi - zmiana firmware
    Kupiłem kilka lamp z adresowalnymi LEDami PROGLO Obi Smart Light Bars
    [CBU/BK7231N] Lampy na WS2811C z mikrofonem z Obi - zmiana firmware
    Link
    W końcu udało mi się zflashować czymś użytecznym - OBK.

    Zbudowane są w oparciu o CBU BK7231N z wejściem 12V i drabinką step-up/down wraz z wejściem mikrofonowym (przeze ,moe nieużywanym/nietestowanym, ponieważ nigdy nie sparowałem ich z tuyacloud) i dziwnym złączem USB-C dla 12V VCC i danych do pasków, które używają sterownika SM16703P w openbk z kolejnością kolorów GRB.

    Wszystko wydaje się działać dobrze, z wyjątkiem tego, że otrzymuję ciągłe naciśnięcie SPAM z Pin14, który jest SW1 w konsoli - zastanawiam się, czy to może mieć coś wspólnego ze sposobem podłączenia mikrofonu na płycie? Odwrócenie pinu nie rozwiązuje problemu. Wydaje się, że nie ma to wpływu na funkcjonalność i możesz po prostu pozostawić pin14 niezdefiniowany, jeśli chcesz go wyciszyć.

    Płytka kontrolera jest bardzo łatwa do otwarcia, po prostu wyskakuje z łatwo dostępnej szczeliny wzdłuż złącza USB-C, bez kleju na gorąco itp. Na odwrocie płytki znajdują się wygodne pady lutownicze do wstępnego flashowania.

    Szkic mapy pinów z PCB

    [CBU/BK7231N] Lampy na WS2811C z mikrofonem z Obi - zmiana firmware
    Odwrotna strona
    [CBU/BK7231N] Lampy na WS2811C z mikrofonem z Obi - zmiana firmware
    Pasek LED wewnątrz obudowy/dyfuzora:
    [CBU/BK7231N] Lampy na WS2811C z mikrofonem z Obi - zmiana firmware
    Z jakiegoś głupiego powodu wyjście jest złączem USB-C, a wejście mini-12V DC, jest to w rzeczywistości stosunkowo niebezpieczne, ponieważ port wyjściowy USB-C nie ma żadnego rodzaju wyzwalacza PD, więc po prostu wypluwa 12V przez cały czas po podłączeniu; nie używaj portu USB-C do niczego innego niż dostarczone światła. To powinien być Feeder w oryginalnym projekcie, ale zgaduję, że porzucili kontroler PD, aby zaoszczędzić trochę pieniędzy i zamiast tego użyli złącza po stronie wyjściowej.

    Zatwierdzony wynik:
    [CBU/BK7231N] Lampy na WS2811C z mikrofonem z Obi - zmiana firmware

    Używają kontrolerów WS2811C 12V w grupach po 3 diody LED (w sumie 6 adresowalnych segmentów na światło). Z jakiegoś powodu (prawdopodobnie spadek napięcia) każda z par jest podłączona równolegle, więc drugie światło w łańcuchu naśladuje pierwsze. Prawdopodobnie można by przeciąć drugi przewód światła, wywiercić otwór i przylutować drugie światło do górnej części pierwszego i uzyskać pojedynczy pasek z 12 adresowalnymi, ale nie próbowałem, ponieważ współczynnik kształtu i dyfuzja tych jednostek jest całkiem niezła.

    Mam je dołączone jako segmenty DDP do istniejących świateł sterowanych WLED. W przykładzie zapewniam podstawowy samodzielny ściemniacz i sterowanie kolorami (pobrane bezpośrednio z https://www.elektroda.com/rtvforum/topic4036716.html ) jako zakomentowana sekcja w załączonym skrypcie autoexec.bat. Chciałbym użyć 4 przełączników i mieć lokalną kontrolę koloru/jasności obok odbiornika DDP. Obecnie wydaje się jednak, że wszelkie lokalne elementy sterujące ściemniaczem itp. zastępują DDP. Więc zostawiam je skonfigurowane jako podstawowe cele DDP OOTB. WLED radzi sobie z tym, wyskakując nadpisanie, gdy pakiet DDP jest odbierany, pytając użytkownika, czy chce zignorować DDP w interfejsie WebUI raz lub do ponownego uruchomienia.. Coś takiego prawdopodobnie można by oskryptować tak, aby naciśnięcie przycisku w celu wyłączenia zasilania zastępowało DDP do czasu kolejnego naciśnięcia. Ale nie sprawdzałem, jak openbk radzi sobie z przyciskami.

    Ponieważ na jednostce sterującej dostępne są 4 przełączniki chwilowe, chciałbym zmapować każdy z nich do sterowania w zakresie 0-255 na kanał koloru, a czwarty jako ściemniacz On - Off + długie naciśnięcie. Jeśli ktoś ma przykład na wykonanie któregokolwiek z powyższych - chętnie zobaczę, jak to zrobić.

    Więcej zdjęć i filmów oraz komentarzy znajduje się w moim wątku na fediverse tutaj:
    https://cloudisland.nz/@jwp/112317522315834359
    Jedyną flagą, jaką ustawiłem, jest flaga MQTT, jeśli chcesz używać tylko lokalnie, musisz ustawić flagę 4.

    W załączeniu oryginalny zrzut firmware (bez przydatnej konfiguracji dla cloudcuttera). Nie mogłem również użyć narzędzia gui i użyłem hid_downloader do flashowania wraz z narzędziami openbk do zrzucenia pełnego oryginalnego bin z Fedory40.

    Pozdrowienia

    -Joel

    przykład autoexec.bat
    
    ///By default we just run the driver for the LED and setup NTP and DDP(poorman's e1.31) which can be added to an existing WLED controller triple commented blocks can only be run individually
    
    startDriver SM16703P
    startDriver NTP
    startDriver DDP
    
    SM16703P_Init 6 GRB
    
    /// This will allow for basic WebUI control - currently will overide DDP so we disable it by default
    ///Also need to set flag Flag 4 - [LED] Force show RGBCW controller (for example, for SM2135 LEDs, or for DGR sender)
    //Dimmer
    //again:
    //SM16703P_SetPixel all $led_enableAll*$led_red*$led_dimmer/255 $led_enableAll*$led_green*$led_dimmer/255
    //$led_enableAll*$led_blue*$led_dimmer/255
    //SM16703P_Start
    
    //delay_s 1
    //goto again
    
    /// Dimmer only follows choose this or the above - can't use both
    // number of LEDs
    //setChannel 5 18
    
    // init
    //SM16703P_Init $CH5
    
    // on channel 1 dimmer change, refresh
    //addEventHandler OnChannelChange 1 startScript autoexec.bat refresh
    
    // refresh function
    //refresh:
    
    // iteration variable
    //setChannel 6 0
    
    // loop for each LEd
    //again:
    
    
    

    template.json

    
    {
      "vendor": "Proglo/OBI",
      "bDetailed": "0",
      "name": "PROGLO Obi Smart Light Bars, 2 Pack H: 285mm Incl Base",
      "model": "PGLSB100-2PK",
      "chip": "BK7231N",
      "board": "CBU",
      "flags": "1024",
      "keywords": [
        "WS2811C",
        "4 Buttons",
        "Microphone"
      ],
      "pins": {
        "14": "Btn_Tgl_All;0",
        "15": "Btn;0",
        "20": "Btn;0",
        "22": "Btn;0"
      },
      "command": "",
      "image": "https://obrazki.elektroda.pl/6705621000_1714016724_thumb.jpg",
      "wiki": "https://www.elektroda.com/rtvforum/topic4050771.html"
    }
    
    

    Fajne? Ranking DIY
    O autorze
    jwp_nz
    Poziom 2  
    Offline 
    Specjalizuje się w: linux, networks, red hat, fedora
    jwp_nz napisał 2 postów. Mieszka w mieście Wellington. Jest z nami od 2024 roku.
  • #2 21059308
    p.kaczmarek2
    Moderator Smart Home
    Dzięki za udostępnienie. Naprawdę nie jest dobrze widzieć, jak używają złącza USB-C do 12V. Używanie go do innych urządzeń z pewnością źle by się skończyło.

    Jeśli chodzi o przyciski na urządzeniu, planuję zrobić rozszerzoną wersję sterownika świateł na piksel, ale obecnie, jeśli używasz metody RGBW:
    
    SM16703P_SetPixel all $led_enableAll*$led_red*$led_dimmer/255 $led_enableAll*$led_green*$led_dimmer/255
    

    to można użyć obu ról przycisków jak SmartButtonForLEDs , Button_NextColor można również użyć zdarzeń kliknięcia z poleceniami takimi jak led_basecolor_rgb itp. Musiałbym pomyśleć o tym opakowaniu.

    Dodano po 8 [godzinach] 51 [minutach]:
    jwp_nz napisał:

    Wszystko wydaje się działać dobrze, z wyjątkiem tego, że dostaję ciągły SPAM z pinu 14, który jest SW1 w konsoli - zastanawiam się, czy to może mieć coś wspólnego ze sposobem podłączenia mikrofonu na płycie? Odwrócenie pinu nie rozwiązuje problemu.

    Czyli zarówno Btn jak i Btn_b spamują? Ale czekaj, czy P14 naprawdę jest przyciskiem? Dlaczego myślisz, że to mikrofon? Czy mikrofon nie jest na ADC, P23?
    Pomogłem? Kup mi kawę.
  • #3 21060564
    jwp_nz
    Poziom 2  
    Dzięki, wciąż jestem trochę zagubiony w kwestii działania przycisków i mapowania, może spróbujmy osiągnąć najbardziej podstawowy przypadek użycia, jaki chcę. Chodzi o wyłączenie świateł po naciśnięciu przycisku, gdy są one podłączone tylko do DDP, a następnie ponowne ich włączenie po drugim naciśnięciu.

    Używając Switch4 (p22), aby na razie uniknąć spamerskiego pinu p14.

    Pseudokod wyglądałby mniej więcej tak:

    ///
    on P22 press trigger statechange
    
    //statechange
    check current state of pixels ;
     if  ( current state is anything other than off )
      then
        save current state to variable;
        disable DDP listener;
        turn off all pixels;
    else 
     read state from variable;
     set pixels to variable state;
     re-enable DDP listener;
    //
    ///

    Teraz jak to zaimplementować używając skryptów i bindowania openbk - jestem trochę zagubiony, nawet po przeczytaniu przykładów i dokumentacji. Zasadniczo chcę rozszerzyć mój istniejący autoexec.bat o powyższą logikę.
REKLAMA