Przedstawiam moje doświadczenie ze zmianą firmware inteligentnej wtyczki Elivco 20A z funkcjami monitorowania zasilania opartej na mało znanym układzie LN882. Po raz pierwszy zobaczyłem ten wariant w tym wątku Tutaj kiedy Sithyoda napisał o nowym module Tuya, WL2S, który wykorzystuje chip Lightning Semiconductor LN882HKI. Kilka tygodni później OpenBeken został opracowany do działania na chipach LN882H dzięki ciężkiej pracy kilku osób piszących w tym wątku. @p.kaczmarek2 opublikował teraz poradnik flashowania LN882H Tutaj.
Pojawiają się inne moduły i urządzenia oparte na LN882H, w tym zwykłe miniprzełączniki DIY 16A firmy Smak Cozylife.
Ta inteligentna wtyczka nie jest oznaczona jako Elivco ani LSPA9, jak widać w oryginalnym poście @sithyoda, ale zamiast tego jest oznaczona jako BSD34, co również widać Tutaj wykorzystujący moduł CB2S i sygnowany marką Ledlux. Widziano to również z Moduł ESP w przeszłości.
Podobnie jak większość moich zabawek, ta została zakupiona od Ali Express, a konkretnie od Cyfrowy sklep .
Mieszkam w Wielkiej Brytanii, więc nie mam bezpośredniego zastosowania wtyczki UE, ale zaintrygowało mnie możliwość otwarcia własnego WL2S i flashowania za pomocą OpenBK.
Zdjęcia zewnętrzne urządzenia i opakowania otrzymane po 5 dniach od złożenia zamówienia:
Z rozbiórek innych słupków i oględzin jasno wynikało, gdzie moduł się otworzy, czyli gdzie został przyklejony/przypięty wzdłuż górnej krawędzi. Niezadowolony z tego, jak niektóre brytyjskie wtyczki, które musiałem otworzyć, okazały się sękate i zniszczone, szukałem lepszego, mniej destrukcyjnego sposobu. Może wtyczki EU i tak są ogólnie łatwiejsze, ale ta metoda była doskonała do otwierania
.
Obudowa jest trochę inna i nie mam zacisków F, ale użyłem zacisków G i odrobiny ukierunkowanej siły. Umieścić zaciski tuż poniżej linii łączenia i dokręcić aż do usłyszenia pękania kleju - następnie poluzować i przesunąć w nieco nowe miejsce i ponownie dokręcić. Dość szybko urządzenie rozbiło się bez uszkodzeń. Gdy górna część jest luźna, tylko przewód uziemiający utrzymuje obie sekcje połączone.
Całkowite odkręcenie pojedynczej śruby na płytce PCB pozwoliło mi wypchnąć dwa bolce zasilania do góry i na zewnątrz obudowy. Musiałem lekko poluzować śrubę uziemiającą, aby nieco przesunąć złącze i umożliwić wysunięcie płytki PCB.
Teraz, gdy jest za darmo, mogę sfotografować wnętrza:
sitodruk: BSD34-202110
Wiedząc, że to urządzenie ma monitorowanie zasilania za pomocą chipa BL0937 i nie chcę, aby to przeszkadzało w jakichkolwiek próbach flashowania (a także kąt i pozycja modułu utrudnia dostęp do niektórych padów podczas flashowania na miejscu), zdecydowałem się podjął się wylutowania całego modułu WL2S. Najpierw nałożyłem dużo topnika na obie strony płytki, całkowicie zakrywając lutowane styki. Następnie użyłem dodatkowego lutu pb, aby wykonać pojedynczą kropelkę lutowia po obu stronach, więc lut fabryczny został stopiony i zmieszany w jeden. Następnie wkleiłem miedziany oplot lutowniczy z topnikiem i za pomocą lutownicy wchłonąłem cały lut. Bardzo szybko moduł wypadł z płyty głównej. Technikę tę zademonstrował Elektroda:
Po wyczyszczeniu modułu alkoholem izopropylowym ustawiam piny pogo podłączone do przejściówki USB-TTL i oddzielam (czyli nie VCC od przejściówki USB) zasilacz 3,3V.
TX0 -> USB-TTL RX
RX0 -> USB-TTL-TX
GND -> USB-TTL GND
3V3 -> Zewnętrzny zasilacz 3,3 V
Zewnętrzna masa zasilacza 3,3 V -> USB-TTL GND (więc wszystkie 3 mają wspólną masę)
dzięki tej konfiguracji mógłbym zebrać dziennik rozruchowy uart po włączeniu zasilania, który wyświetla się jako:
Następnie, mając uziemiony pad A9/BOOT, mogłem kontynuować fabryczny zrzut pamięci flash i przesyłać trwające prace oprogramowania układowego LN882H OBK.
Odłącz USB-TTL, wyłącz zewnętrzne napięcie 3,3 V
Podłącz USB-TTL z uziemieniem A9/BOOT (i wszystkimi innymi połączeniami) na swoim miejscu
Włącz napięcie 3,3 V
LN882H zobaczy, że A9 jest w stanie niskim, przejdzie w tryb BOOT i czeka na miganie.
Używając lekko zmodyfikowanego pliku LN882H_Flash_Dumper.py (z rozmiarem pamięci flash ograniczonym do 0x00200000 po tym odkryciu ), wrzuciłem fabryczny firmware, który załączam w tym poście. Załączam także zmodyfikowany plik LN882H_Flash_Dumper.py, który zamiast wyświetlać komunikat o błędzie, wyświetli informację o ukończeniu, gdy osiągnie 2 MB.
Szybkość zrzutu jest stała i bardzo mała, więc trwało to około 30–40 minut.
Po odłączeniu i ponownym podłączeniu wszystkiego, aby zresetować i ponownie przejść do trybu BOOT, mogłem pobrać (to znaczy pobrać Do urządzenie z mojego komputera) najnowsze oprogramowanie sprzętowe flash OpenLN UART. Wszystko to zostało zrobione za pomocą LN882H_CMD_TOOL (patrz wątek przewodnika flashowania), z którego pobrano OpenLN882H_1.17.432.bin.
Wynikiem tego jest po prostu „OK!”. Na szczęście wykonanie tego kroku zajęło tylko kilka sekund.
Usunięcie masy A9/BOOT i zresetowanie zasilania zaowocowało nowym punktem dostępowym „LN882H_XXX”, z którym się połączyłem i otrzymałem adres IP 192.168.4.100.
przeglądanie adresu 192.168.4.1 powoduje wyświetlenie stron konfiguracji internetowej OBK
Pewną ręką, dużą ilością topnika, małym punktem na lutownicy i odrobiną cierpliwości przylutowałem moduł z powrotem na miejsce. Myślę, że poszło mi OK!
Dzięki @sithyoda wygląda na to, że mamy GPIO dla BL0937 ale nie sądzę, że możemy to jeszcze przetestować (stan na 29 stycznia 2024 r.), ponieważ sterownik nie działa.
Korzystając z wyszukiwarki GPIO w aplikacji internetowej, udało mi się ustalić następujące informacje dla pozostałych bitów
Dioda A0 (czerwona)
A3 Btn
A10 LED_n (niebieski)
A11 Względ
co tworzy szablon OBK dla tego urządzenia
Przetestowałem to, aby działać zgodnie z oczekiwaniami. Gdy jest wyłączony, świeci się czerwona dioda LED, a gdy jest włączona, świeci się niebieska dioda LED. Przekaźnik 20A włącza się i wyłącza zgodnie z oczekiwaniami.
Pojawiają się inne moduły i urządzenia oparte na LN882H, w tym zwykłe miniprzełączniki DIY 16A firmy Smak Cozylife.
Ta inteligentna wtyczka nie jest oznaczona jako Elivco ani LSPA9, jak widać w oryginalnym poście @sithyoda, ale zamiast tego jest oznaczona jako BSD34, co również widać Tutaj wykorzystujący moduł CB2S i sygnowany marką Ledlux. Widziano to również z Moduł ESP w przeszłości.
Podobnie jak większość moich zabawek, ta została zakupiona od Ali Express, a konkretnie od Cyfrowy sklep .
Mieszkam w Wielkiej Brytanii, więc nie mam bezpośredniego zastosowania wtyczki UE, ale zaintrygowało mnie możliwość otwarcia własnego WL2S i flashowania za pomocą OpenBK.
Zdjęcia zewnętrzne urządzenia i opakowania otrzymane po 5 dniach od złożenia zamówienia:
Z rozbiórek innych słupków i oględzin jasno wynikało, gdzie moduł się otworzy, czyli gdzie został przyklejony/przypięty wzdłuż górnej krawędzi. Niezadowolony z tego, jak niektóre brytyjskie wtyczki, które musiałem otworzyć, okazały się sękate i zniszczone, szukałem lepszego, mniej destrukcyjnego sposobu. Może wtyczki EU i tak są ogólnie łatwiejsze, ale ta metoda była doskonała do otwierania
Obudowa jest trochę inna i nie mam zacisków F, ale użyłem zacisków G i odrobiny ukierunkowanej siły. Umieścić zaciski tuż poniżej linii łączenia i dokręcić aż do usłyszenia pękania kleju - następnie poluzować i przesunąć w nieco nowe miejsce i ponownie dokręcić. Dość szybko urządzenie rozbiło się bez uszkodzeń. Gdy górna część jest luźna, tylko przewód uziemiający utrzymuje obie sekcje połączone.
Całkowite odkręcenie pojedynczej śruby na płytce PCB pozwoliło mi wypchnąć dwa bolce zasilania do góry i na zewnątrz obudowy. Musiałem lekko poluzować śrubę uziemiającą, aby nieco przesunąć złącze i umożliwić wysunięcie płytki PCB.
Teraz, gdy jest za darmo, mogę sfotografować wnętrza:
sitodruk: BSD34-202110
Wiedząc, że to urządzenie ma monitorowanie zasilania za pomocą chipa BL0937 i nie chcę, aby to przeszkadzało w jakichkolwiek próbach flashowania (a także kąt i pozycja modułu utrudnia dostęp do niektórych padów podczas flashowania na miejscu), zdecydowałem się podjął się wylutowania całego modułu WL2S. Najpierw nałożyłem dużo topnika na obie strony płytki, całkowicie zakrywając lutowane styki. Następnie użyłem dodatkowego lutu pb, aby wykonać pojedynczą kropelkę lutowia po obu stronach, więc lut fabryczny został stopiony i zmieszany w jeden. Następnie wkleiłem miedziany oplot lutowniczy z topnikiem i za pomocą lutownicy wchłonąłem cały lut. Bardzo szybko moduł wypadł z płyty głównej. Technikę tę zademonstrował Elektroda:
Po wyczyszczeniu modułu alkoholem izopropylowym ustawiam piny pogo podłączone do przejściówki USB-TTL i oddzielam (czyli nie VCC od przejściówki USB) zasilacz 3,3V.
TX0 -> USB-TTL RX
RX0 -> USB-TTL-TX
GND -> USB-TTL GND
3V3 -> Zewnętrzny zasilacz 3,3 V
Zewnętrzna masa zasilacza 3,3 V -> USB-TTL GND (więc wszystkie 3 mają wspólną masę)
dzięki tej konfiguracji mógłbym zebrać dziennik rozruchowy uart po włączeniu zasilania, który wyświetla się jako:
bootloader build time: 13:48:19
config item not found perip_param value
-- tuya project compile time: Jun 27 2023 16:30:24--
ble mac[e3:c7:f2:e1:82:c4]
[BLIB_I]BLIB Ver: 1.0.3 [build time:Jan 19 2023 12:14:45][0x010003ff]
xTaskCreate, name: rw_task, priority: 9, stack size: 2048
xTaskCreate, name: worker, priority: 2, stack size: 1536
xTaskCreate, name: ty_main, priority: 3, stack size: 4096
xTaskCreate, name: IDLE, priority: 0, stack size: 1024
xTaskCreate, name: Tmr Svc, priority: 10, stack size: 2048
Before enter tuya_main, Total:165888; Free:153552
GPIOA_9 high level, will enter Normal mode!
Failed to enter ate mode! Start tuya user main.
xTaskCreate, name: tuya_app_main, priority: 4, stack size: 4096
xTaskCreate, name: TUYA_TCPIP, priority: 9, stack size: 2048
tkl_ethernetif_init
tkl_ethernetif_init
[01-01 00:00:00 ty I][lr:0x100b662b] mqc app init ...
xTaskCreate, name: wq_system, priority: 3, stack size: 5120
[01-01 00:00:00 ty I][tal_thread.c:184] thread_create name:wq_system,stackDepth: 5120,totalstackDepth:7168,priority:3
xTaskCreate, name: wq_highpri, priority: 4, stack size: 4096
[01-01 00:00:00 ty I][tal_thread.c:184] thread_create name:wq_highpri,stackDepth :4096,totalstackDepth:11264,priority:4
xTaskCreate, name: sys_timer, priority: 5, stack size: 4096
[01-01 00:00:00 ty D][tal_thread.c:203] Thread:wq_highpri Exec Start. Set to Run ning Stat
[01-01 00:00:00 ty D][tal_thread.c:203] Thread:sys_timer Exec Start. Set to Runn ing Stat
[01-01 00:00:00 ty I][tal_thread.c:184] thread_create name:sys_timer,stackDepth: 4096,totalstackDepth:15360,priority:5
[01-01 00:00:00 ty D][lr:0x10078c65] init fs. Path: null
[01-01 00:00:00 ty D][lr:0x100aa331] *****************kvs_init.
[01-01 00:00:00 ty D][lr:0x100cdbe1] protected init. addr:0x001eb000
[01-01 00:00:00 ty D][lr:0x100cd9f1] init protected data length 495
[01-01 00:00:00 ty N][lr:0x100ac72b] key_addr: 0x1ec000 block_sz 4096
[01-01 00:00:00 ty N][lr:0x100aca05] get key:
0xaf 0x5 0x23 0x8e 0x2b 0xbe 0xbc 0x6f 0xda 0xc6 0x16 0x50 0x76 0x4d 0x78 0xbb
[01-01 00:00:00 ty D][lr:0x100cdbff] protected verify begin
[01-01 00:00:00 ty D][lr:0x100cdc61] check [gw_bi][282]
[01-01 00:00:00 ty D][lr:0x100cdc61] check [gw_wsm][141]
[01-01 00:00:00 ty D][lr:0x100cdc81] protected verify end
[01-01 00:00:00 ty D][lr:0x100ab97f] begin try update kv version
[01-01 00:00:00 ty D][lr:0x100ab99b] pre kv version is 2
[01-01 00:00:00 ty D][lr:0x100acea1] 111 k=3 i=18 0
[01-01 00:00:00 ty N][lr:0x100b2729] uni_random_init...
[01-01 00:00:00 ty N][lr:0x100b29cd] tuya_tls_rand_init ok!
[01-01 00:00:00 ty D][lr:0x10090ef9] init watchdog, interval: 60
----- tkl_watchdog_init
wdg shift_left_num:0x10, set num:65535, top:0x0d
[01-01 00:00:00 ty D][lr:0x10090e4b] add new node,type:0
[01-01 00:00:00 ty D][lr:0x10090e4b] add new node,type:1
[01-01 00:00:00 ty D][lr:0x10090e4b] add new node,type:2
[01-01 00:00:00 ty D][lr:0x10090e4b] add new node,type:3
[01-01 00:00:00 ty D][lr:0x10090e4b] add new node,type:4
[01-01 00:00:00 ty D][lr:0x10090e4b] add new node,type:5
[01-01 00:00:00 ty D][lr:0x10090e4b] add new node,type:6
[01-01 00:00:00 ty D][lr:0x10090e4b] add new node,type:7
[01-01 00:00:00 ty D][lr:0x10090e4b] add new node,type:8
[01-01 00:00:00 ty D][lr:0x10091009] watch_dog_interval:60, monitor_detect_inter val:600
xTaskCreate, name: health_monitor, priority: 5, stack size: 1536
[01-01 00:00:00 ty D][tal_thread.c:203] Thread:health_monitor Exec Start. Set to Running Stat
[01-01 00:00:00 ty I][tal_thread.c:184] thread_create name:health_monitor,stackD epth:1536,totalstackDepth:16896,priority:5
[01-01 00:00:00 ty D][lr:0x100b6531] mq_pro:5 cnt:1
[01-01 00:00:00 ty D][lr:0x100b6531] mq_pro:31 cnt:2
[01-01 00:00:00 ty D][lr:0x100b15b5] svc online log init success
[01-01 00:00:00 ty E][lr:0x100b5d3f] logseq empty
[01-01 00:00:00 ty N][lr:0x1006afcf] < TuyaOS V:3.5.4 BS:40.00_PT:2.3_LAN:3.5_CA D:1.0.5_CD:1.0.0 >
< BUILD AT:2023_01_09_16_12_01 BY ci_manage FOR tuyaos-iot AT ln882h >
IOT DEFS < WIFI_GW:1 DEBUG:1 KV_FILE:0 LITTLE_END:1 SL:0 OPERATING_SYSTEM:98 REL IABLE_TRANSFER:0 >
[01-01 00:00:00 ty N][lr:0x1006afd9] ln_elec_plug:1.0.4
[01-01 00:00:00 ty N][lr:0x1006afe3] firmware compiled at Jul 5 2023 15:01:06
[01-01 00:00:00 ty N][lr:0x1006affd] REST INFORMATION IS 0
[01-01 00:00:00 ty N][lr:0x1006b25f] ,over_vol: is 0
[01-01 00:00:00 ty N][lr:0x1006b25f] ,lose_vol: is 0
[01-01 00:00:00 ty N][lr:0x1006b25f] ,over_cur: is 20000
[01-01 00:00:00 ty N][lr:0x1006b28f] ,chip_type: is 0
[01-01 00:00:00 ty N][lr:0x1006b28f] ,ele_fun_en: is 1
[01-01 00:00:00 ty N][lr:0x1006b25f] ,ele_pin: is 26
[01-01 00:00:00 ty N][lr:0x1006b25f] ,vi_pin: is 8
[01-01 00:00:00 ty N][lr:0x1006b25f] ,sel_pin_lv: is 1
[01-01 00:00:00 ty N][lr:0x1006b25f] ,sel_pin_pin: is 24
[01-01 00:00:00 ty N][lr:0x1006b25f] ,resistor: is 1
[01-01 00:00:00 ty N][lr:0x1006b28f] ,vol_def: is 0
[01-01 00:00:00 ty D][lr:0x1006b1dd] ,zero_select: is not exsit 1
[01-01 00:00:00 ty D][lr:0x1006b1dd] ,zero_t: is not exsit 1
[01-01 00:00:00 ty D][lr:0x1006b1dd] ,zero_io_pin: is not exsit 1
[01-01 00:00:00 ty N][lr:0x1006b28f] ,ffc_select: is 0
[01-01 00:00:00 ty N][lr:0x1006b28f] ,rl1_type: is 0
[01-01 00:00:00 ty D][lr:0x1006b1dd] ,rl_type: is not exsit 1
[01-01 00:00:00 ty D][lr:0x1006b1dd] ,rl1_drvtime: is not exsit 1
[01-01 00:00:00 ty D][lr:0x1006b1dd] ,rl_drvtime: is not exsit 1
[01-01 00:00:00 ty N][lr:0x1006b28f] ,jv: is 1.0.4
[01-01 00:00:00 ty N][lr:0x1006b28f] ,module: is CB2S
[01-01 00:00:00 ty N][lr:0x1006b28f] ,net_trig: is 4
[01-01 00:00:00 ty D][lr:0x1006b1dd] ,total_led_lv: is not exsit 1
[01-01 00:00:00 ty D][lr:0x1006b1dd] ,total_led_pin: is not exsit 1
[01-01 00:00:00 ty D][lr:0x1006b1dd] ,total_bt_lv: is not exsit 1
[01-01 00:00:00 ty D][lr:0x1006b1dd] ,total_bt_pin: is not exsit 1
[01-01 00:00:00 ty D][lr:0x1006b1dd] ,bt_type: is not exsit 1
[01-01 00:00:00 ty N][lr:0x1006b28f] ,bt1_type: is 0
[01-01 00:00:00 ty N][lr:0x1006b25f] ,netled1_lv: is 0
[01-01 00:00:00 ty N][lr:0x1006b25f] ,netled1_pin: is 7
[01-01 00:00:00 ty N][lr:0x1006b28f] ,nety_led: is 0
[01-01 00:00:00 ty N][lr:0x1006b28f] ,netn_led: is 1
[01-01 00:00:00 ty N][lr:0x1006b28f] ,netled_reuse: is 0
[01-01 00:00:00 ty N][lr:0x1006b25f] ,reset_t: is 5
[01-01 00:00:00 ty N][lr:0x1006b28f] ,ch1_stat: is 2
[01-01 00:00:00 ty D][lr:0x1006b1dd] ,total_stat: is not exsit 1
[01-01 00:00:00 ty N][lr:0x1006b25f] ,ch_num: is 1
[01-01 00:00:00 ty N][lr:0x1006b131] channal num is 1
[01-01 00:00:00 ty N][lr:0x1006b38b] ,rl1_lv: is 1
[01-01 00:00:00 ty N][lr:0x1006b38b] ,rl1_pin: is 6
[01-01 00:00:00 ty D][lr:0x1006b31d] ,rl_on1_lv: is not exsit 5
[01-01 00:00:00 ty D][lr:0x1006b31d] ,rl_on1_pin: is not exsit 5
[01-01 00:00:00 ty D][lr:0x1006b31d] ,rl_off1_lv: is not exsit 5
[01-01 00:00:00 ty D][lr:0x1006b31d] ,rl_off1_pin: is not exsit 5
[01-01 00:00:00 ty N][lr:0x1006b38b] ,bt1_lv: is 0
[01-01 00:00:00 ty N][lr:0x1006b38b] ,bt1_pin: is 10
[01-01 00:00:00 ty N][lr:0x1006b38b] ,led1_lv: is 0
[01-01 00:00:00 ty N][lr:0x1006b38b] ,led1_pin: is 23
[01-01 00:00:00 ty N][lr:0x1006b38b] ,ch_dpid1: is 1
[01-01 00:00:00 ty N][lr:0x1006b38b] ,ch_cddpid1: is 9
[01-01 00:00:00 ty D][lr:0x1006b1dd] ,ble_pair_time: is not exsit 1
[01-01 00:00:00 ty D][lr:0x1006b6b3] get_measure_chip_type is 0
[01-01 00:00:00 ty D][lr:0x1006b727] get_standard_vol is 0
[01-01 00:00:00 ty D][lr:0x1006b6b3] get_measure_chip_type is 0
[01-01 00:00:00 ty N][lr:0x1006b929] product have measure , chip is 0 vol is 220 0 res is 1
[01-01 00:00:00 ty D][lr:0x10078c65] init fs. Path: null
[01-01 00:00:00 ty D][lr:0x100aa331] *****************kvs_init.
[01-01 00:00:00 ty N][lr:0x10097513] mf is open need stop fastconnect
[01-01 00:00:00 ty D][lr:0x1007b151] mf_core_init success
[01-01 00:00:00 ty D][lr:0x100cde05] protected read [gw_bi]
[01-01 00:00:00 ty D][lr:0x100cde93] protected read ret:0 length:282
[01-01 00:00:00 ty D][lr:0x1008e8eb] gw_bi read ret:0
set work mode 1, is open 0, current ln mode: 0
wifi not start, turn on first
adapt wifi start <m:1>, hw_ready:0
start rf preprocess and image cal
[WLIB_E]idx=00, iq_hex_cal=0x7B7F, i=123, q=127, iavg= 35, qavg= 37
[WLIB_E]idx=01, iq_hex_cal=0x797C, i=121, q=124, iavg= 69, qavg= 3
[WLIB_E]idx=02, iq_hex_cal=0x7679, i=118, q=121, iavg= 10, qavg= 4
[WLIB_E]idx=03, iq_hex_cal=0x7173, i=113, q=115, iavg= 25, qavg= 72
[WLIB_E]idx=04, iq_hex_cal=0x6870, i=104, q=112, iavg= 4, qavg= 47
[WLIB_E]idx=05, iq_hex_cal=0x7B7F, i=123, q=127, iavg= 52, qavg= 38
[WLIB_E]idx=06, iq_hex_cal=0x7A7D, i=122, q=125, iavg= 46, qavg= 7
[WLIB_E]idx=07, iq_hex_cal=0x7779, i=119, q=121, iavg= 57, qavg= 9
[WLIB_E]idx=08, iq_hex_cal=0x7273, i=114, q=115, iavg= 35, qavg= 89
[WLIB_E]idx=09, iq_hex_cal=0x6A70, i=106, q=112, iavg= 9, qavg= 44
[WLIB_E]idx=10, iq_hex_cal=0x7B7F, i=123, q=127, iavg= 55, qavg= 39
[WLIB_E]idx=11, iq_hex_cal=0x7A7D, i=122, q=125, iavg= 40, qavg= 3
[WLIB_E]idx=12, iq_hex_cal=0x7779, i=119, q=121, iavg= 51, qavg= 11
[WLIB_E]idx=13, iq_hex_cal=0x7273, i=114, q=115, iavg= 38, qavg= 77
[WLIB_E]idx=14, iq_hex_cal=0x6B70, i=107, q=112, iavg= 4, qavg= 58
[WLIB_E]idx=15, iq_hex_cal=0x7B7F, i=123, q=127, iavg= 54, qavg= 34
[WLIB_E]idx=16, iq_hex_cal=0x7A7C, i=122, q=124, iavg= 40, qavg= 3
[WLIB_E]idx=17, iq_hex_cal=0x7778, i=119, q=120, iavg= 50, qavg= 3
[WLIB_E]idx=18, iq_hex_cal=0x7274, i=114, q=116, iavg= 49, qavg= 72
[WLIB_E]idx=19, iq_hex_cal=0x6A70, i=106, q=112, iavg= 9, qavg= 79
[WLIB_E]idx=20, iq_hex_cal=0x7A7F, i=122, q=127, iavg= 29, qavg=100
[WLIB_E]idx=21, iq_hex_cal=0x787E, i=120, q=126, iavg= 38, qavg= 46
[WLIB_E]idx=22, iq_hex_cal=0x747B, i=116, q=123, iavg= 41, qavg= 51
[WLIB_E]idx=23, iq_hex_cal=0x6E78, i=110, q=120, iavg= 51, qavg= 78
[WLIB_E]idx=24, iq_hex_cal=0x6376, i= 99, q=118, iavg= 45, qavg= 52
Następnie, mając uziemiony pad A9/BOOT, mogłem kontynuować fabryczny zrzut pamięci flash i przesyłać trwające prace oprogramowania układowego LN882H OBK.
Odłącz USB-TTL, wyłącz zewnętrzne napięcie 3,3 V
Podłącz USB-TTL z uziemieniem A9/BOOT (i wszystkimi innymi połączeniami) na swoim miejscu
Włącz napięcie 3,3 V
LN882H zobaczy, że A9 jest w stanie niskim, przejdzie w tryb BOOT i czeka na miganie.
Używając lekko zmodyfikowanego pliku LN882H_Flash_Dumper.py (z rozmiarem pamięci flash ograniczonym do 0x00200000 po tym odkryciu ), wrzuciłem fabryczny firmware, który załączam w tym poście. Załączam także zmodyfikowany plik LN882H_Flash_Dumper.py, który zamiast wyświetlać komunikat o błędzie, wyświetli informację o ukończeniu, gdy osiągnie 2 MB.
python LN882H_Flash_Dumper.py COMx flashdumpSzybkość zrzutu jest stała i bardzo mała, więc trwało to około 30–40 minut.
Po odłączeniu i ponownym podłączeniu wszystkiego, aby zresetować i ponownie przejść do trybu BOOT, mogłem pobrać (to znaczy pobrać Do urządzenie z mojego komputera) najnowsze oprogramowanie sprzętowe flash OpenLN UART. Wszystko to zostało zrobione za pomocą LN882H_CMD_TOOL (patrz wątek przewodnika flashowania), z którego pobrano OpenLN882H_1.17.432.bin.
LN882H_CMD_Tool.exe COM9 download flash 2000000 0x0 OpenLN882H_1.17.432.binWynikiem tego jest po prostu „OK!”. Na szczęście wykonanie tego kroku zajęło tylko kilka sekund.
Usunięcie masy A9/BOOT i zresetowanie zasilania zaowocowało nowym punktem dostępowym „LN882H_XXX”, z którym się połączyłem i otrzymałem adres IP 192.168.4.100.
przeglądanie adresu 192.168.4.1 powoduje wyświetlenie stron konfiguracji internetowej OBK
Pewną ręką, dużą ilością topnika, małym punktem na lutownicy i odrobiną cierpliwości przylutowałem moduł z powrotem na miejsce. Myślę, że poszło mi OK!
Dzięki @sithyoda wygląda na to, że mamy GPIO dla BL0937 ale nie sądzę, że możemy to jeszcze przetestować (stan na 29 stycznia 2024 r.), ponieważ sterownik nie działa.
Korzystając z wyszukiwarki GPIO w aplikacji internetowej, udało mi się ustalić następujące informacje dla pozostałych bitów
Dioda A0 (czerwona)
A3 Btn
A10 LED_n (niebieski)
A11 Względ
co tworzy szablon OBK dla tego urządzenia
Kod: JSON
Przetestowałem to, aby działać zgodnie z oczekiwaniami. Gdy jest wyłączony, świeci się czerwona dioda LED, a gdy jest włączona, świeci się niebieska dioda LED. Przekaźnik 20A włącza się i wyłącza zgodnie z oczekiwaniami.
Fajne? Ranking DIY
