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

[BK7231N / CBU] Projektor SK26 Galaxy Star

similicious 16 Gru 2023 11:48 1467 15
Treść została przetłumaczona angielski » polski Zobacz oryginalną wersję tematu
  • Przegląd

    [BK7231N / CBU] Projektor SK26 Galaxy Star

    Ten projektor ma 5 elementów
    - Dioda RGB , rzutowany przez soczewkę (mgławicę)
    - Laser , wyświetlany przez ekran (gwiazdy)
    - Silnik , obraca soczewkę i ekran, powodując ruch mgławicy i gwiazd
    - Mikrofon , aby zsynchronizować światło z muzyką
    - 3 przyciski z przodu, aby włączyć projektor, przełączać sceny, aktywować tryb muzyczny

    Informacje :
    - Żeton: BK7231N
    - Moduł: CBU

    [BK7231N / CBU] Projektor SK26 Galaxy Star

    Jest całkiem blisko prezentowane tutaj urządzenie , ale ma inny chip, moduł Tuya i konstrukcję, więc pomyślałem, że warto to udokumentować. Niemniej jednak większość pracy wykonano przy projektorze Genio, więc uruchomienie tego było łatwe. Dziękuję @joelstevens1101 i @p.kaczmarek2 za Twoją pracę!

    Zburzyć

    Wykręć 4 śruby znajdujące się na spodzie urządzenia. Dostęp do nich jest dość trudny, potrzebny jest bardzo krótki śrubokręt krzyżakowy.

    Zdejmij górną pokrywę w prawą stronę. Uwaga: Płytka przycisków jest połączona z płytą główną, dlatego przed całkowitym zdjęciem pokrywy należy odłączyć czerwony kabel.
    [BK7231N / CBU] Projektor SK26 Galaxy Star

    Wykręć jeszcze 6 śrub z czarnej ramy środkowej.
    [BK7231N / CBU] Projektor SK26 Galaxy Star
    Zdejmij soczewkę i ekran. Silnik jest przymocowany do ramy od dołu. Podczas przenoszenia ramy należy uważać, aby nie uszkodzić przewodów. Albo odłóż ramkę na bok, albo odepnij kabel szczypcami.

    Płyta główna jest przyklejona na miejscu. Musiałem nim chwilę potrząsać z umiarkowaną siłą, żeby go wyciągnąć. Wyciągając płytkę ponownie zwróć uwagę na kable.
    [BK7231N / CBU] Projektor SK26 Galaxy Star

    Odłącz pozostałe kable. Są one również przyklejone do złączy, więc pamiętaj, aby ciągnąć za wtyczkę, a nie za kable.

    Zrobiłeś to! Płytka wygląda tak:
    [BK7231N / CBU] Projektor SK26 Galaxy Star
    [BK7231N / CBU] Projektor SK26 Galaxy Star

    Błyskowy

    Do VCC i GND użyłem podkładek pod modułem, bo łatwiej się do nich lutuje. Są oznakowane. TX (pin 15) i RX (pin 16) znajdują się po prawej stronie chipa. Ocynuj przewody i podkładki, topnik ci pomoże. Aby lutować wystarczy połączyć przewód z podkładką i krótko dotknąć go żelazkiem.
    [BK7231N / CBU] Projektor SK26 Galaxy Star

    Podłącz lutowane przewody do programatora. Użyłem NodeMCU, który miałem pod ręką jak opisano tutaj . Dogodnie działa również przy napięciu 3,3 V, więc nie miałem problemu z konwersją napięcia.

    The Narzędzie Flash GUI BK7231 działa dobrze do flashowania. To całkiem proste: upewnij się, że wybrałeś właściwy port COM i BK7231N jako chip. Rozpocznij procedurę tworzenia kopii zapasowej i flashowania, a następnie wyłącz układ zasilania, gdy pojawi się monit. Uwaga: resetuj tylko chip, a nie programator. Kopię zapasową pamięci ROM moich urządzeń można znaleźć w załączniku do tego wątku.
    readResult...-23-05.bin Download (2 MB)

    Jeśli nie możesz uzyskać połączenia w narzędziu Flash, sprawdź dokładnie połączenia lutowane. Te na chipie na moim zdjęciu faktycznie mają krótkie TX i RX, więc musiałem je przerobić.

    Po zakończeniu flashowania wyłącz i ponownie włącz urządzenie. Powinna pojawić się nowa sieć Wi-Fi. Skonfiguruj urządzenie tak, aby przyłączyło się do sieci lokalnej. Upewnij się, że możesz połączyć się z nim za pomocą Wi-Fi.

    Gratulacje! To była najtrudniejsza część – wgrane zostało nowe oprogramowanie. Możesz teraz wylutować przewody użyte do flashowania i złożyć urządzenie z powrotem.

    Organizować coś

    Uruchom aplikację internetową i przejdź do Import . Wklej szablon w pierwszej kolumnie i kliknij Wyczyść OBK i zastosuj nowy skrypt z góry .

    
    {
      "vendor": "Generic",
      "bDetailed": "0",
      "name": "Smart LED Galaxy Projector",
      "model": "SK26",
      "chip": "BK7231N",
      "board": "CBU",
      "flags": "1446912",
      "keywords": [
        "led",
        "rgb",
        "star",
        "nebula",
        "projector",
        "laser",
        "motor"
      ],
      "pins": {
        "6": "PWM_n;3",
        "7": "PWM;5",
        "8": "PWM;4",
        "14": "Btn_SmartLED;0",
        "20": "Btn_ScriptOnly;0",
        "22": "Btn_ScriptOnly;0",
        "24": "PWM_n;2",
        "26": "PWM_n;1"
      },
      "command": "",
      "image": "https://obrazki.elektroda.pl/2917649700_1702586359.jpg",
      "wiki": "https://www.elektroda.com/rtvforum/viewtopic.php?p=20863828#20863828"
    }
    

    Po ponownym uruchomieniu na stronie głównej powinieneś już móc sterować diodą LED RGB. Ale jeszcze nie skończyliśmy.

    Aby uruchomić silnik i laser, skieruj się do System plików , Kliknij Utwórz plik , potwierdzać autoexec.bat jako nazwę i wklej do niej następującą treść. Połączy stan diody LED z silnikiem i laserem i ustawi dla nich wartości startowe.

    
    // PWM TOGGLER SETUP
    
    // enable toggler driver
    startDriver PWMToggler
    
    // toggler slot one is the laser, channel 4
    toggler_channel0 4
    toggler_name0 Laser
    
    // toggler slot two is the motor, channel 5
    toggler_channel1 5
    toggler_name1 Motor
    
    // set startup values for laser
    toggler_set0 100
    toggler_enable0 1
    
    // set startup values for motor
    toggler_set1 100
    toggler_enable1 1
    
    // LED, LASER, MOTOR COUPLING
    
    // when disabling the LED, also disable laser and motor
    addEventHandler LEDState 0 backlog toggler_enable0 0; toggler_enable1 0; 
    
    // when enabling the LED, also enable laser and motor
    addEventHandler LEDState 1 backlog toggler_enable0 1; toggler_enable1 1; 
    
    // BUTTONS
    
    // TOGGLE LASER
    alias enable_laser toggler_enable0 1
    alias disable_laser toggler_enable0 0
    
    addEventHandler OnClick 20 if $CH4==100 then disable_laser else enable_laser
    
    // TOGGLE MOTOR
    alias enable_motor toggler_enable1 1
    alias disable_motor toggler_enable1 0
    
    addEventHandler OnDblClick 20 if $CH5==100 then disable_motor else enable_motor
    
    // CYCLE FEATURE
    setChannelType 10 Toggle
    setChannelLabel 10 "color cycle" 0
    
    alias add_color_cycle_event addRepeatingEventID 10 -1 420 led_nextcolor
    alias remove_color_cycle_event cancelRepeatingEvent 420
    
    addChangeHandler Channel10 == 1 add_color_cycle_event
    addChangeHandler Channel10 == 0 remove_color_cycle_event
    
    alias enable_color_cycle SetChannel 10 1
    alias disable_color_cycle SetChannel 10 0
    
    addEventHandler OnClick 22 if $CH10==1 then disable_color_cycle else enable_color_cycle
    addEventHandler LEDState 0 disable_color_cycle
    
    // COLOR PALETTE
    SPC 0 FF00AE
    SPC 1 BB00FF
    SPC 2 5500FF
    SPC 3 0008FF
    SPC 4 0040FF
    SPC 5 0D6CD2
    SPC 6 17D1FF
    SPC 7 1EFF30
    SPC 8 FCD023
    SPC 9 FC8F00
    SPC 10 FF0000
    SPC 11 FF0088
    SPC 12 FF00DD
    

    Potwierdź za pomocą Zapisz, zresetuj SVM i uruchom plik jako wątek skryptu .

    Teraz menu główne powinno wyglądać tak:
    [BK7231N / CBU] Projektor SK26 Galaxy Star

    Możesz przełączać diodę LED, silnik i laser oraz kontrolować jasność i prędkość. Dostępny jest również przycisk automatycznego przełączania kolorów. Paletę kolorów można dostosować w dolnej części skryptu.

    guziki

    Przyciski są skonfigurowane w ten sposób
    - Muzyka : 1x kliknięcie: przełączenie lasera, 2x kliknięcie: przełączenie silnika
    - Przełącznik : 1x Kliknięcie: przełączenie LED + laser + silnik, 2x Kliknięcie: następny kolor, Przytrzymanie: zmiana jasności
    - Scena : Przełącz automatyczny cykl palety kolorów

    Asystentka domowa

    Ta konfiguracja dodaje światło, silnik, rgb i tryb cyklu kolorów do Homeassistant. Będziesz musiał dostosować tematy mqtt do swojej konfiguracji.

    [BK7231N / CBU] Projektor SK26 Galaxy Star

    
    mqtt:
      light:
    
        - unique_id: "star_projector_rgb"
          name: "RGB"
          availability_topic: "home/living-room/star-projector/connected"
    
          device:
            name: "Star Projector"
            model: "SK26"
            manufacturer: "Tuya"
            identifiers: "sk26affe"
    
          # on / off
          state_topic: "home/living-room/star-projector/led_enableAll/get"
          command_topic: "cmnd/home/living-room/star-projector/led_enableAll"
          payload_on: 1
          payload_off: 0
    
          # rgb
          rgb_state_topic: "home/living-room/star-projector/led_basecolor_rgb/get"
          rgb_value_template: "{{ value[0:2]|int(base=16) }},{{ value[2:4]|int(base=16) }},{{ value[4:6]|int(base=16) }}"
          rgb_command_topic: "cmnd/home/living-room/star-projector/led_basecolor_rgb"
          rgb_command_template: "{{ '#%02x%02x%02x0000' | format(red, green, blue)}}"
    
          # brightness
          brightness_command_topic: "cmnd/home/living-room/star-projector/led_dimmer"
          brightness_state_topic: "home/living-room/star-projector/led_dimmer/get"
          brightness_scale: 100
    
        - unique_id: "star_projector_laser"
          name: "Laser"
    
          state_topic: "home/living-room/star-projector/toggler_enable0/get"
          command_topic: "cmnd/home/living-room/star-projector/toggler_enable0"
          payload_on: 1
          payload_off: 0
    
          brightness_state_topic: "home/living-room/star-projector/toggler_set0/get"
          brightness_value_template: "{{value}}"
          brightness_command_topic: "cmnd/home/living-room/star-projector/toggler_set0"
          brightness_scale: 100
    
          device:
            identifiers: "sk26affe"
    
        - unique_id: "star_projector_motor"
          name: "Motor"
    
          state_topic: "home/living-room/star-projector/toggler_enable1/get"
          command_topic: "cmnd/home/living-room/star-projector/toggler_enable1"
          payload_on: 1
          payload_off: 0
    
          brightness_state_topic: "home/living-room/star-projector/toggler_set1/get"
          brightness_value_template: "{{value}}"
          brightness_command_topic: "cmnd/home/living-room/star-projector/toggler_set1"
          brightness_scale: 100
    
          device:
            identifiers: "sk26affe"
    
      switch:
    
        - unique_id: "star_projector_color_cycle"
          name: "Color cycle"
    
          state_topic: "home/living-room/star-projector/10/get"
          command_topic: "home/living-room/star-projector/10/set"
          payload_on: 1
          payload_off: 0
          
          device:
            identifiers: "sk26affe"
    


    Co nie działa

    Mikrofon
    Projektor ma wbudowany mikrofon piezoelektryczny, który synchronizuje światło z muzyką. Nie udało mi się tego uruchomić. Zakładam, że jest podłączony do PIN 5 (ADC), ale nie mogę stwierdzić, czy odczyty korelują z muzyką.
    [BK7231N / CBU] Projektor SK26 Galaxy Star

    Fajne? Ranking DIY
    O autorze
    similicious
    Poziom 3  
    Offline 
    similicious napisał 8 postów. Jest z nami od 2023 roku.
  • #2 20863864
    similicious
    Poziom 3  

    Nie wiem, jak mój post znalazł się na tym forum. A może został tu przeniesiony automatycznie? W każdym razie proszę o przeniesienie w odpowiednie miejsce.
  • #3 20863886
    p.kaczmarek2
    Moderator Smart Home
    Dziękuję za ten szczegółowy przewodnik, @similicious ! Z pewnością będzie to pomocne zarówno dla początkujących, jak i zaawansowanych majsterkowiczów IoT. Nie martw się, że w sekcji „Temp” będzie to tymczasowe, musimy tylko przejrzeć Twój tutorial i to za chwilę. Pomogę Ci także dokończyć integrację, a potem przeniesiemy ją na stronę główną.

    similicious napisał:

    guziki
    Poza tym fajnie byłoby zwiększyć użyteczność przycisków, ale nie mam pojęcia, jak to skonfigurować.

    Istnieją dwa sposoby konfigurowania przycisków w OpenBeken. Możesz albo użyć jednej z predefiniowanych ról, tak jak to zrobiłeś (Btn_SmartLED itp.), albo możesz napisać je bezpośrednio. Pamiętaj tylko, że w przypadku skryptów ustaw ich rolę na Btn_ScriptOnly. Następnie możesz spojrzeć na nasze przykłady tutaj:
    https://github.com/openshwprojects/OpenBK7231T_App/blob/main/docs/autoexecExamples.md
    Oto przykładowy skrypt z dokumentacji:
    
    // IR driver will start itself automatically after reboot
    
    // P21 role is Btn, a power button that works without scripting
    // set button hold/repeat/etc times
    SetButtonTimes 10 3 3
    // alias to turn off LED after 4 secs (repeating event with 1 repeat)
    alias add_turnoff_event addRepeatingEvent 4 1 led_enableAll 0
    // button events - 23, 22, etc are pin numbers
    addEventHandler OnHold 23 add_dimmer 10
    addEventHandler OnHold 22 add_dimmer -10
    addEventHandler OnDblClick 22 led_dimmer 5
    addEventHandler OnDblClick 23 led_dimmer 100
    addEventHandler OnClick 20 add_turnoff_event
    // IR events
    addEventHandler2 IR_Samsung 0x707 0x62 add_dimmer 10
    addEventHandler2 IR_Samsung 0x707 0x65 add_dimmer -10
    addEventHandler2 IR_Samsung 0x707 0x61 led_enableAll 0
    addEventHandler2 IR_Samsung 0x707 0x60 led_enableAll 1
    

    Dotyczy to również podczerwieni, ale na razie skupmy się na zdarzeniach przycisków. Możesz używać zdarzeń przycisków, takich jak OnHold, OnClick, OnDblClick, aby wykonywać niestandardowe polecenia skryptowe, a nawet uruchamiać nowy wątek skryptu.


    similicious napisał:

    Zabarwienie
    Kolory przełączane przez przycisk nie wyglądają najlepiej. Byłoby fajnie je dostosować.

    Używamy tej samej palety co Tasmota, czy chciałbyś móc ją modyfikować?
    A może chciałbyś zastosować podejście w pełni skryptowe?

    Tablicę kolorów można wykonać w całości w skrypcie. A Wybór można do tego użyć polecenia. Zobacz przykład poniżej:
    
    
    alias col1 led_basecolor_rgb 0xFF0000
    alias col2 led_basecolor_rgb 0x00FF00
    alias col3 led_basecolor_rgb 0x0000FF
    alias col4 led_basecolor_rgb 0xFFFF00
    alias col5 led_basecolor_rgb 0xFF00FF
    alias col6 led_basecolor_rgb 0x00FFFF
    
    // use choice to choose effect by index stored in $CH10
    alias do_chosen_effect Choice $CH10 col1 col2 col3 col4 col5 col6
    // when click on Btn_ScriptOnly on P24 happens, add 1 to $CH10 (wrap to 0-5) and do effect
    addEventHandler OnClick 24 backlog addChannel 10 1 0 5 1; do_chosen_effect
    
    Pomogłem? Kup mi kawę.
  • #4 20863956
    similicious
    Poziom 3  
    Niesamowite, dziękuję za pomoc!

    Wykorzystam to do przypisania elementów sterujących laserem i silnikiem do przycisków.

    Jeśli chodzi o paletę kolorów, fajnie byłoby móc ją skonfigurować, aby można było ponownie wykorzystać Btn_SmartLED.
  • #5 20863970
    p.kaczmarek2
    Moderator Smart Home
    Więc zasadniczo chcesz, aby polecenie ustawiło kolor palety według indeksu?
    Pomogłem? Kup mi kawę.
  • #6 20863981
    similicious
    Poziom 3  
    Byłoby wspaniale mieć polecenie przełączania przełącznika. A także coś, co można do tego dodać, na przykład

    
    addEventHandler OnClick 20 toggler_toggle0
    addEventHandler OnDblClick 20 toggler_add0 10
    
    addEventHandler OnClick 22 toggler_toggle1
    addEventHandler OnDblClick 22 toggler_add1 10
    


    p.kaczmarek2 napisał:
    Więc zasadniczo chcesz, aby polecenie ustawiło kolor palety według indeksu?

    To byłoby pomocne. Ale ponieważ można to obejść, nie jest to aż tak ważne.
  • Pomocny post
    #7 20864016
    p.kaczmarek2
    Moderator Smart Home
    Na razie dodałem możliwość ustawienia palety. Możesz sprawdzić?
    https://github.com/openshwprojects/OpenBK7231...mmit/2b43acdbb670a5a37cf7b37c6407950b2031ff87
    Kompilacja jest gotowa.
    Sposób użycia to:
    
    SPC 0 FF0000
    

    Spowoduje to ustawienie koloru palety 0 na czerwony. Domyślna paleta jest taka sama jak w Tasmocie.
    Pomogłem? Kup mi kawę.
  • #9 20864071
    p.kaczmarek2
    Moderator Smart Home
    similicious napisał:
    A także coś, co można do tego dodać, na przykład
    
    addEventHandler OnDblClick 20 toggler_add0 10
    addEventHandler OnDblClick 22 toggler_add1 10
    


    To dobry pomysł, ale muszę przestrzegać ograniczeń dotyczących rozmiaru pamięci flash. A co z obsługą następującej składni:

    
    // sets the toggler to 25
    toggler_set1 25
    // add 25 to the toggler (and clamp)
    toggler_set1 +25
    // sub 25 to the toggler (and clamp)
    toggler_set1 -25
    

    Pamiętaj, że nie obsługiwaliśmy przełączników ujemnych, więc użycie -25 jako „odejmij 25” niczego nie zepsuje. Przełączniki znajdują się w zakresie 0-100....

    Dodany:
    https://github.com/openshwprojects/OpenBK7231...mmit/5a4dc0241eb9aadcbe55f9bedb07fec1ea17a9e3
    Pomogłem? Kup mi kawę.
  • #10 20864426
    similicious
    Poziom 3  

    W porządku, musiałem trochę opanować język skryptowy, ale już sobie poradziłem.

    Przyciski przełączają teraz tryb cyklu lasera, silnika i automatycznego cyklu palety kolorów.
    Ostatecznie nie skorzystałem z nowej funkcji ustawiania przełączników, ponieważ zmiany w zakresie 0–100 i tak są ledwo zauważalne. Skonfigurowałem więc przyciski tak, aby zamiast tego tylko je przełączały.
    Odpowiednio zaktualizowałem poradnik.

    Pozostałby tylko mikrofon, choć nie jestem pewien, czy warto się w to angażować. Ta funkcja również nie działała poprawnie z oryginalnym oprogramowaniem sprzętowym.
  • #11 20864476
    p.kaczmarek2
    Moderator Smart Home
    Jak ma działać mikrofon?
    Pomogłem? Kup mi kawę.
  • #12 20864806
    similicious
    Poziom 3  

    Nie jestem pewny. Mikrofon podłączony jest dwoma przewodami. Jeśli prawidłowo podążę śladami, trafiają one do układu scalonego LM358, który jest pewnego rodzaju wzmacniaczem. Wtedy po prostu zakładam, że sygnał idzie na Pin 5 modułu, czyli ADC. Ustawiłem ten pin na ADC w OBK i wykreśliłem odczyty w MQTT-Explorer - możesz zobaczyć wykres w poście. Dane te można wykorzystać do znalezienia szczytów dźwięku, a następnie zsynchronizowania ich ze zmianami kolorów lub przełączenia lasera. Ale nie wiem jak się do tego zabrać.

    Może kiedyś zajrzę do tego. Na razie jestem więcej niż zadowolony z integracji. Dzięki jeszcze raz! :)
  • #13 21041909
    divadiow
    Poziom 29  
    similicious napisał:
    Kopię zapasową pamięci ROM moich urządzeń można znaleźć w załączniku do tego wątku.


    i z tego wynika

    Kod: JSON
    Zaloguj się, aby zobaczyć kod


    Kod: JSON
    Zaloguj się, aby zobaczyć kod
  • #15 21045634
    helge1
    Poziom 4  
    Cześć, dziękuję za tę wspaniałą pracę! Otrzymałem dzisiaj sk26, który zamówiłem po odkryciu tego wątku. Używam już dwóch projektorów gwiazdowych sk20 z ESPHome (dostępny jest dla nich programowy jailbreak, ale exploit bezpieczeństwa nie działa w przypadku sk26). Powodem, dla którego chciałem sk26 oprócz sk20, jest dostępność niebieskiego lasera, podczas gdy w przypadku sk20 można kupić tylko zielony laser (przynajmniej w Europie i na Aliexpress).

    Chciałem poinformować Cię o projekcie ESPHome dla sk20, który prawdopodobnie mógłby stanowić dobry punkt wyjścia do zbudowania konfiguracji ESPHome również dla sk26:

    https://github.com/M4GNV5/esphome-SK20-Nebula-Light/blob/master/nebula_light_device.yaml

    Z pewnością sam się tym później zajmę, obecnie mam kilka innych projektów ESPHome, które chcę najpierw dokończyć. Ale może ktoś inny ma czas i zainteresowanie sprawdzeniem konfiguracji ESPHome https://github.com/M4GNV5/esphome-SK20-Nebula-Light/blob/master/nebula_light_device.yaml już dla sk20.

    To jest zdjęcie sk20:

    [BK7231N / CBU] Projektor SK26 Galaxy Star
  • #16 21061833
    helge1
    Poziom 4  
    Szybka aktualizacja dla wszystkich, którzy mogą być również zainteresowani korzystaniem z ESPHome dla tego MCU Tuya: sflashowałem konfigurację z https://github.com/M4GNV5/esphome-SK20-Nebula-Light, która została opracowana dla projektora sk20 (https://www.elektroda.com/rtvforum/topic3939064.html) bez dokonywania jakichkolwiek zmian w konfiguracji. Na szczęście projektor nie wybuchł, a konfiguracja zapewnia już pewną funkcjonalność projektora, niemniej jednak będzie wymagać pewnych dostosowań konfiguracji, aby zapewnić w pełni działające wrażenia użytkownika. Popracuję nad tym później i udostępnię zaktualizowaną konfigurację.
REKLAMA