Wraz z kolegą @DeDaMrAz kupiliśmy kilka kontrolerów paska LED Tuya aby przerobić je do działania z Home Assistant. Pokażę tu jak zmienić im wsad, skonfigurować ich GPIO oraz również jak obsłużyć zdarzenia IR (pilot) w OpenBeken. Dodatkowo zajrzymy też do środka zasilacza - jak bardzo oszczędził na nim chińczyk?
Zacznijmy od prezentacji zestawu. Tyle otrzymujemy za 18€:
Oznaczenie:
W środku jest też pasek LED i pilot, a nawet zasilacz:
Pilot w zestawie ma bateryjkę.
Wnętrze, wgrywanie OpenBeken, GPIO
Obudowa jest na zatrzask. Zaglądamy do środka:
W środku jest moduł CBU, czyli BK7231N. Oto CBU pinout:
Jego wyprowadzenia (z dokumentacji Tuya; nietłumaczone):
| Pin number | Symbol | I/O type | Function | 1 | P14 | I/O | Common GPIO, which can be reused as SPI_SCK (Correspond to Pin 11 of the IC) | 2 | P16 | I/O | Common GPIO, which can be reused as SPI_MOSI (Correspond to Pin 12 of the IC) | 3 | P20 | I/O | Common GPIO (Correspond to Pin 20 of the IC) | 4 | P22 | I/O | Common GPIO (Correspond to Pin 18 of the IC) | 5 | ADC | I/O | ADC, which corresponds to P23 on the internal IC (Correspond to Pin 17 of the IC) | 6 | RX2 | I/O | UART_RX2, which corresponds to P1 on the internal IC. (Correspond to Pin 28 of the IC) | 7 | TX2 | I/O | UART_TX2, which is used for outputting logs and corresponds to P0 of the internal IC (Correspond to Pin 29 of the IC) | 8 | P8 | I/O | Support hardware PWM (Correspond to Pin 24 of the IC) | 9 | P7 | I/O | Support hardware PWM (Correspond to Pin 23 of the IC) | 10 | P6 | I/O | Support hardware PWM (Correspond to Pin 22 of the IC) | 11 | P26 | I/O | Support hardware PWM (Correspond to Pin 15 of the IC) | 12 | P24 | I/O | Support hardware PWM (Correspond to Pin 16 of the IC) | 13 | GND | P | Power supply reference ground | 14 | 3V3 | P | Power supply 3V3 | 15 | TX1 | I/O | UART_TX1, which is used for transmitting user data and corresponds to Pin 27 of the IC. For the MCU solution, please refer to CBx Module. | 16 | RX1 | I/O | UART_RX1, which is used for receiving user data and corresponds to Pin 26 of the IC. For the MCU solution, please refer to CBx Module. | 17 | P28 | I/O | Common GPIO (Correspond to Pin 10 of the IC) | 18 | CEN | I/O | Reset pin, low active (internally pulled high), compatible with other modules (Correspond to Pin 21 of the IC) | 19 | P9 | I/O | Common GPIO (Correspond to Pin 25 of the IC) | 20 | P17 | I/O | Common GPIO, which can be reused as SPI_MISO (Correspond to Pin 14 of the IC) | 21 | P15 | I/O | Common GPIO, which can be reused as SPI_CS (Correspond to Pin 13 of the IC) | Test point | CSN | I/O | Mode selection pin. If it is connected to the ground before being powered on, enter the firmware test mode. If it is not connected or connected to VCC before being powered on, enter the firmware application mode. Correspond to Pin 19 on the internal IC. |
Wgrywamy na niego OpenBeken:
https://github.com/openshwprojects/OpenBK7231T_App
Zgodnie z instrukcją Flashera:
https://github.com/openshwprojects/BK7231GUIFlashTool
Można też obejrzeć nasze filmiki instruktarzowe, zwłaszcza te pod BK7231N:
https://www.youtube.com/watch?v=L6d42IMGhHw&l...CZDbczAXT94BuSGrd_GoM&ab_channel=Elektrodacom
W ten sposób wykonaliśmy najpierw kopie wsadu wszystkich czterech urządzeń, dostępną tutaj:
https://github.com/openshwprojects/FlashDumps/commit/dd22f9c6b013a32e96f7e23ccbd2e5c719571104
a potem wgraliśmy OBK.
Szablon OpenBeken:
Kod: JSON
Tutorial wgrywania szablonu:
Wszystko działa, również z Home Assistant, patrz instrukcja parowania OBK:
Testy pilota
Zaczęliśmy od testów z Flipperem Zero, chociaż OBK by też dało radę. Pilot korzysta z NEC. Oto podgląd kilku podstawowych klawiszy:
Czerwony:
Zielony:
Niebieski:
Biały:
W OBK z kolei wystarczy ustawić rolę IRRecv dla odpowiedniego pinu oraz wykonać startDriver IR:
Info:MAIN:Time 771, idle 121038/s, free 75448, MQTT 0(48), bWifi 1, secondsWithNoPing 1, socks 2/38
Info:IR:IR MQTT publish IR_NEC 0xFBE2 0x1C 0 (32 bits) took 0ms
Info:IR:IR MQTT publish IR_NEC 0xFBE2 0x1C 1 (0 bits) took 0ms
Info:IR:IR MQTT publish IR_NEC 0xFBE2 0x1C 1 (0 bits) took 0ms
Info:MAIN:Time 772, idle 131402/s, free 75448, MQTT 0(48), bWifi 1, secondsWithNoPing 1, socks 2/38
Info:MAIN:Time 773, idle 133434/s, free 75232, MQTT 0(48), bWifi 1, secondsWithNoPing 1, socks 3/38
Info:MAIN:Time 774, idle 150269/s, free 75448, MQTT 0(48), bWifi 1, secondsWithNoPing 1, socks 2/38
Info:IR:IR MQTT publish IR_NEC 0xFBE2 0x1C 0 (32 bits) took 0ms
Info:IR:IR MQTT publish IR_NEC 0xFBE2 0x1C 1 (0 bits) took 0ms
Info:MAIN:Time 775, idle 137090/s, free 75448, MQTT 0(48), bWifi 1, secondsWithNoPing 1, socks 2/38
Info:MAIN:Time 776, idle 127325/s, free 75448, MQTT 0(48), bWifi 1, secondsWithNoPing 1, socks 2/38
Info:IR:IR MQTT publish IR_NEC 0xFBE2 0x1C 0 (32 bits) took 0ms
Info:IR:IR MQTT publish IR_NEC 0xFBE2 0x1C 1 (0 bits) took 0ms
Info:MAIN:Time 777, idle 127220/s, free 75232, MQTT 0(48), bWifi 1, secondsWithNoPing 1, socks 3/38
Info:IR:IR MQTT publish IR_NEC 0xFBE2 0x1C 0 (32 bits) took 0ms
Info:IR:IR MQTT publish IR_NEC 0xFBE2 0x1C 1 (0 bits) took 0ms
Info:MAIN:Time 778, idle 125833/s, free 75448, MQTT 0(48), bWifi 1, secondsWithNoPing 1, socks 2/38
Info:MAIN:Time 779, idle 123395/s, free 75448, MQTT 0(48), bWifi 1, secondsWithNoPing 1, socks 2/38
Info:IR:IR MQTT publish IR_NEC 0xFBE2 0x1C 0 (32 bits) took 0ms
Info:IR:IR MQTT publish IR_NEC 0xFBE2 0x1C 1 (0 bits) took 0ms
Info:MAIN:Time 780, idle 133632/s, free 75448, MQTT 0(48), bWifi 1, secondsWithNoPing 1, socks 2/38
Info:IR:IR MQTT publish IR_NEC 0xFBE2 0x1C 0 (32 bits) took 0ms
Info:IR:IR MQTT publish IR_NEC 0xFBE2 0x1C 1 (0 bits) took 0ms
Info:MQTT:mqtt_host empty, not starting mqtt
Też działa! Kody IR są poprawnie widziane.
Tak można zebrać kody IR, potem trzeba przypisać im działania.
Zgodnie z dokumentacją:
https://github.com/openshwprojects/OpenBK7231T_App/blob/main/docs/commands.md
oraz z naszym filmikiem:
utworzyliśmy autoexec.bat:
startDriver IR
//all LED's ON
addEventHandler2 IR_NEC 0xFBE2 0x26 led_enableAll 1
//all LED's OFF
addEventHandler2 IR_NEC 0xFBE2 0x25 led_enableAll 0
//setting RGB
//RED
addEventHandler2 IR_NEC 0xFBE2 0x1C led_basecolor_rgb FF0000
//GREEN
addEventHandler2 IR_NEC 0xFBE2 0x52 led_basecolor_rgb 00FF00
//BLUE
addEventHandler2 IR_NEC 0xFBE2 0x53 led_basecolor_rgb 0000FF
//WHITE
addEventHandler2 IR_NEC 0xFBE2 0x2 led_basecolor_rgb FFFFFF
//setting brightness
addEventHandler2 IR_NEC 0xFBE2 0x5A add_dimmer 5
addEventHandler2 IR_NEC 0xFBE2 0x10 add_dimmer -5
Skrypt steruje sterownik IR a potem dodaje obsługę zdarzeń IR_NEC gdzie wpisane są przechwycone informacje o wysyłanych komendach. Odpowiednie komendy są mapowane na polecenia dla OBK, by np. ustawić dany kolor albo włączyć/wyłączyć pasek.
Wnętrze zasilacza
Znów klejona obudowa. Patrzymy:
Kompletna klasyka. Tak jak zwykle. Prosty rezystor bezpiecznikowy na wejściu i zintegrowany kontroler flyback PSR (Primary Side Regulation). Tylko uzwojenie pomocnicze do zasilania z diodą prostowniczą oraz gasik (na drugiej diodzie i z tym zielonym kondensatorem). Po stronie wtórnej dioda Schottkiego i jeden kondensator (mam nadzieję, że low ESR):
Po prostu to samo co zwykle.
Podsumowanie
Całkiem niezły zestaw, ale zasilacz jak zwykle budżetowy.
Wsad jest łatwo zmienić, a OpenBeken po wgraniu ogarnie nawet pilota.
Jest tam jeszcze mikrofon, ale nie mieliśmy potrzeby uruchamiać go z kolegą.
Wszystkie paski przekonwertowaliśmy do Home Assistant i jesteśmy z nich zadowoleni.
Swoją drogą, nie było jeszcze kontrolera paska LED na module CBU na naszym forum. To otwiera nowe możliwości modyfikacji. Można by np. podłączyć WS2812B do P16 dostępnego właśnie na CBU, a problematycznego przy CB2S/CB3S (nie jest tam wyprowadzony).
Niestety tutaj też muszę troszkę ponarzekać - to kolejny produkt bez fizycznego przycisku. I co, jak zgubimy telefon (i pilot) to nie wyłączymy światła? Na szczęście po zmianie firmware można to łatwo naprawić:
https://www.youtube.com/watch?v=vDh8Y_NDrb4&ab_channel=Elektrodacom
No i też można po prostu skonfigurować np. włącznik światła (też z OBK) tak by sterował tym paskiem, ale o tym innym razem.
Podsumowując - można zastanowić się nad takim zestawem, z Home Assistant na pewno da się go uruchomić 100% lokalnie.
Fajne? Ranking DIY Pomogłem? Kup mi kawę.
