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

Pierwsze starcie z modułem SiPEED M1S DOCK - AI+IoT RTOS_Linux All-Round Module

p.kaczmarek2 06 Lis 2023 20:01 2607 14
  • Pierwsze starcie z modułem SiPEED M1S DOCK - AI+IoT RTOS_Linux All-Round Module
    Zapraszam na praktyczną prezentację i uruchomienie modułu Sipeed M1s Dock z kamerą 2MP o interfejsie MIPI CSI i 1.69-calowym wyświetlaczem 280x240 z pojemnościowym ekranem dotykowym, przeznaczonego do zastosowań AIoT. Moduł był już pokrótce prezentowany w temacie: Sipeed M1s i M0sense - niedrogie moduły AI oparte na BL808 i BL702
    więc tu skupię się na pokazaniu jak wygląda on w praktyce.
    Płytkę można kupić za nieco ponad 100 zł:
    Pierwsze starcie z modułem SiPEED M1S DOCK - AI+IoT RTOS_Linux All-Round Module
    Ważne jest, abyśmy wybrali zestaw z kamerką i ekranikiem. Łatwo jest się nabrać na niższą cenę, gdzie w rzeczywistości kupujemy np. sam moduł lub obudowę. Trzeba dobrze sprawdzać co zamawiamy.
    Co oferuje M1S?
    Oddajmy głos specyfikacji od sprzedawcy:
    Pierwsze starcie z modułem SiPEED M1S DOCK - AI+IoT RTOS_Linux All-Round Module Pierwsze starcie z modułem SiPEED M1S DOCK - AI+IoT RTOS_Linux All-Round Module Pierwsze starcie z modułem SiPEED M1S DOCK - AI+IoT RTOS_Linux All-Round Module Pierwsze starcie z modułem SiPEED M1S DOCK - AI+IoT RTOS_Linux All-Round Module
    Wyprowadzenia:
    Pierwsze starcie z modułem SiPEED M1S DOCK - AI+IoT RTOS_Linux All-Round Module
    Można dokupić też obudowę, choć jej zamontowanie wymaga przełożenia kamerki na drugą stronę modułu:
    Pierwsze starcie z modułem SiPEED M1S DOCK - AI+IoT RTOS_Linux All-Round Module
    Podstawą naszej pracy z tym modułem pewnie będzie dokumentacja z sipeed com:
    https://wiki.sipeed.com/hardware/en/maix/m1s/m1s_dock.html
    Sam też na tych materiałach bazowałem. Poniżej opis moich kroków, wraz z moimi uwagami i doświadczeniami.

    Pierwsze uruchomienie
    Podłączamy zasilanie do portu OTG i wciskamy przycisk RESET. Płytka powinna się wybudzić, uruchomi się ekran i kamera.
    Opóźnienie z kamery nie jest odczuwalne, wszystko działa bardzo płynnie:



    Na ekranie pojawia się również stan przycisków, w ramach demonstracji mogą one zmienić wartość liczby w prawym górnym rogu:



    Dodatkowo nasz komputer rozpozna nowe urządzenie USB. To może posłużyć nam do wgrywania firmware.
    Pierwsze starcie z modułem SiPEED M1S DOCK - AI+IoT RTOS_Linux All-Round Module
    W dokumentacji producenta pokazany jest tu dysk USB 3.73MB, u mnie rozmiar jest nieco większy. Czyżbym miał nowszą wersję z większą pamięcią?
    Pierwsze starcie z modułem SiPEED M1S DOCK - AI+IoT RTOS_Linux All-Round Module

    Drugi slot USB C oferuje dostęp do portu szeregowego. Należy wybrać baud 2000000:
    Pierwsze starcie z modułem SiPEED M1S DOCK - AI+IoT RTOS_Linux All-Round Module
    A właściwie - do portów szeregowych, bo są dwa:
    Pierwsze starcie z modułem SiPEED M1S DOCK - AI+IoT RTOS_Linux All-Round Module
    Pierwszy to już pokazany log, drugi to linia komend.
    Można wysyłać tam komendy, przykładowo help:
    Pierwsze starcie z modułem SiPEED M1S DOCK - AI+IoT RTOS_Linux All-Round Module


    Demko lvgl_demo
    Zapoznajmy się teraz z kilkoma przykładami z M1s_BL808_example. Na początek demo graficzne.
    LVGL (Light and Versatile Graphics Library) to darmowa biblioteka open source przeznaczona do rysowania grafiki.
    Skomplilowany przykład dostępny jest tutaj:
    https://dl.sipeed.com/shareURL/MAIX/M1s/M1s_Dock/7_Firmware/demo_bin/lvgl_demo
    Aby wgrać wsad, trzeba najpierw wprowadzić płytkę w stan wgrywania.
    Naprawdę - to, że w trakcie działania demka płytka jest widoczna też jako urządzenie/pamięć flash, nie znaczy, że uda się coś wgrać.
    Należy trzymać oba boczne przyciski a potem wcisnąć RESET, następnie zwolnić RESET i dopiero po nim zwolnić boczne przyciski.
    Wtedy przeciągamy pobrany (bądź skompilowany przez nas) wsad na urządzenie przenośne:
    Pierwsze starcie z modułem SiPEED M1S DOCK - AI+IoT RTOS_Linux All-Round Module
    Po chwili płytka powinna uruchomić się sama. Oto demko LVGL w akcji:



    Pod koniec zostanie wyświetlone menu, na którym można też przetestować ekran dotykowy:




    Przełożenie kamery na przód
    Po zakupie otrzymamy moduł otrzymany w ten sposób, że kamera "patrzy" się w tę samą stronę co wyświetlacz. W pewnym stopniu utrudnia to testowanie.
    Kamerę można przełączyć na drugą stronę, gdyż jej tasiemka przechodzi przez szczelinę w PCB:
    Pierwsze starcie z modułem SiPEED M1S DOCK - AI+IoT RTOS_Linux All-Round Module Pierwsze starcie z modułem SiPEED M1S DOCK - AI+IoT RTOS_Linux All-Round Module Pierwsze starcie z modułem SiPEED M1S DOCK - AI+IoT RTOS_Linux All-Round Module
    Najpierw trzeba odpiąć tasiemkę (po drugiej stronie złącza ją odpinamy):
    Pierwsze starcie z modułem SiPEED M1S DOCK - AI+IoT RTOS_Linux All-Round Module Pierwsze starcie z modułem SiPEED M1S DOCK - AI+IoT RTOS_Linux All-Round Module
    Wypięta kamerka:
    Pierwsze starcie z modułem SiPEED M1S DOCK - AI+IoT RTOS_Linux All-Round Module
    Kamerkę możemy wpiąć tak, że będzie po drugiej stronie modułu, ale nie możemy odwrócić tasiemki, piny pierwszy (oznaczony 1) tasiemki musi być zgodny z pinem 1 na złączu:
    Pierwsze starcie z modułem SiPEED M1S DOCK - AI+IoT RTOS_Linux All-Round Module


    Demo przetwarzania obrazów
    Kolejne demko, image_processing_demo, przedstawia możliwość przetwarzania obrazów. Samo przetwarzanie jest dość proste, za pomocą przycisków wybieramy jedną z predefiniowanych masek i tak możemy obserwować efekty:
    Pierwsze starcie z modułem SiPEED M1S DOCK - AI+IoT RTOS_Linux All-Round Module Pierwsze starcie z modułem SiPEED M1S DOCK - AI+IoT RTOS_Linux All-Round Module Pierwsze starcie z modułem SiPEED M1S DOCK - AI+IoT RTOS_Linux All-Round Module


    Demo rozpoznawania znaków?
    Teraz uruchomimy demo tinymaix_mnist_demo.
    TinyMaix to mała biblioteka sieci neuronowej do wnioskowania, stworzona specjalnie dla mikrokontrolerów (TinyML), umożliwiająca uruchamianie lekkich modeli uczenia maszynowego na dowolnym mikrokomputerze jednoukładowym.
    Z tym demkiem nie miałem zbyt wiele szczęścia. W teorii ma to rozpoznawać liczby, ale u mnie często utykało na 8 lub rozpoznawało źle. Mogę tu dla porównania pokazać zrzut ekranu z dokumentacji producenta:
    Pierwsze starcie z modułem SiPEED M1S DOCK - AI+IoT RTOS_Linux All-Round Module
    U mnie z kolei było... ciężko, tylko idealne cyfry przy idealnym oświetleniu są rozpoznawane:
    Pierwsze starcie z modułem SiPEED M1S DOCK - AI+IoT RTOS_Linux All-Round Module
    Przy moim piśmie z painta program myli 1 z 7 a przy 5 nie radzi sobie wcale:




    Język skryptowy PikaScript
    Wśród gotowych przykładów jest też demo PikaScript. PikaScript to wieloplatformowy, wydajny język skryptowy oparty o Python.
    Po wgraniu demka PikaScript, możemy wysyłać ten skrypt na płytkę przez UART, linia po linii. Oto przykład:
    arc = lv.arc(lv.scr_act())
    arc.set_end_angle(200)
    arc.set_size(150, 150)
    arc.center()
    

    Przenalizujmy działanie tego skryptu krok po kroku. Pierwsza linia tworzy łuk/suwak, oto efekt po wykonaniu:
    
    arc = lv.arc(lv.scr_act())
    

    Pierwsze starcie z modułem SiPEED M1S DOCK - AI+IoT RTOS_Linux All-Round Module
    Pierwsze starcie z modułem SiPEED M1S DOCK - AI+IoT RTOS_Linux All-Round Module
    Linia z set_end_angle ustawia pozycję gałki:
    
    arc.set_end_angle(200)
    

    Pierwsze starcie z modułem SiPEED M1S DOCK - AI+IoT RTOS_Linux All-Round Module
    Można zmienić wartość jej argumentu, wtedy efekt będzie inny:
    
    arc.set_end_angle(380)
    

    Pierwsze starcie z modułem SiPEED M1S DOCK - AI+IoT RTOS_Linux All-Round Module
    Z kolei funkcja center centruje obiekt na ekranie:

    Pierwsze starcie z modułem SiPEED M1S DOCK - AI+IoT RTOS_Linux All-Round Module
    Spróbujmy zrobić nieco więcej. Może taki skrypt:
    
    # Create a screen
    scr = lv.scr_act()
    
    # Create a label widget
    label = lv.label(scr)
    label.set_text("Hello, PicaScript!")
    label.align(lv.ALIGN.CENTER, 0, 0)
    

    Rezultat:
    Pierwsze starcie z modułem SiPEED M1S DOCK - AI+IoT RTOS_Linux All-Round Module
    Można też utworzyć przycisk:
    
    # Create a button widget
    btn = lv.btn(scr)
    btn.align(lv.ALIGN.CENTER, 0, -20)
    label = lv.label(btn)
    label.set_text("Click Me!")
    

    Rezultat:
    Pierwsze starcie z modułem SiPEED M1S DOCK - AI+IoT RTOS_Linux All-Round Module
    Próbowałem też w tym języku napisać obsługę zdarzenia click dla przycisku, ale jeszcze nie udało mi się tego uruchomić.

    Kompilacja źródeł przykładów
    Na głównej stronie dokumentacji płytki jest też instrukcja kompilowania źródeł przykładów oraz pełne linki do SDK. Udało mi się je skompilować na wirtualnej maszynie z Ubuntu, nie było żadnych problemów, w związku z tym tego nie opisuję.
    Pierwsze starcie z modułem SiPEED M1S DOCK - AI+IoT RTOS_Linux All-Round Module
    Podjąłem też próbę skompilowania ich na WSL, czyli na "Linuxowym środowisku na Windowsa", ale jeszcze nie udało mi się tego uruchomić.


    Podsumowanie
    To był tylko pierwszy rzut oka na tę płytkę. Jak na razie mi się spodobała.
    Wgrywanie programów jest łatwe, a wyświetlacz i kamera mają dla mnie zadowalające parametry. Nie odczułem też opóźnień w obrazie, a to też dobrze wróży pod kątem przyszłych projektów.
    W kolejnym temacie spróbuję skompilować, potestować i omówić inne jej przykłady z SDK, może też uda się je nieco zmodyfikować, np. zrobić prosty zegarek na wyświetlaczu dotykowym.
    Oprócz tego w planach jest uruchomienie przykładu streamowania obrazu z kamerki na PC (jest praktycznie gotowy w SDK) oraz eksperymenty z TinyML.
    Tymczasem zapytam - czy macie jakieś doświadczenia z tą płytką, widzicie dla niej potencjalne zastosowanie? A może uważacie, że to zbędny gadżet i lepiej po prostu sięgnąć po Raspberry? Zapraszam do dyskusji.

    Fajne? Ranking DIY
    Pomogłem? Kup mi kawę.
    O autorze
    p.kaczmarek2
    Moderator Smart Home
    Offline 
  • #2 20803152
    chemik_16
    Poziom 26  
    Zastosowanie - do odczytu liczników energii :) ESP i podobne nie dają sobie rady z OCR, to może mieć jakieś szanse. Trzeba wyłapać zmianę sekwencji ekranu a potem każdy z kolei parsować. Tylko ofc za drogo to wychodzi, za 100zł to już można mieć rpi0 2w i kamerke. jakby było bez wyświetlacza ...
  • #3 20803391
    p.kaczmarek2
    Moderator Smart Home
    OCR licznika może być tutaj dobrym pomysłem. Mój test ich demka wykrywania tekstu był dość surowy. W sytuacji gdy mamy jedną ustaloną czcionkę, pewnie to może działać lepiej. Muszę spróbować, na ile można przerobić ich demko by móc kolejno odczytywać poszczególne cyfry, tym bardziej, że ich pozycja na ekranie się wtedy nie zmienia.
    Pomogłem? Kup mi kawę.
  • #4 20803415
    PiotrekD
    Poziom 13  
    Witajcie moi mili :)
    zastosowanie - może biżuteria noszona i moduł wczesnego ostrzegania przed wdepnięciem w psie łajno którego teraz wszędzie pełno albo alternatywnie jako moduł uruchamiający spłuczkę w kiblu zaraz po tym jak upadanie... Pytanie tylko co z wzorcem, jak do tego usiąść z TinyML. Czy aby ten moduł na pewno sobie z tym problemem poradzi? Oto jest pytanie.
  • #5 20803484
    p.kaczmarek2
    Moderator Smart Home
    Omówienie tematymi TinyML jest planowane, nie wiem jeszcze w jak dużym stopniu, ale zamierzam też się tym zająć. Na ten moment zapoznaję się z tą płytką.
    Pomogłem? Kup mi kawę.
  • #6 20804081
    maestro16s
    Poziom 10  
    Spróbuj z ciekawości narysować cyfry bardziej po "amerykańsku" czyli jeden to prosta kreska, 6 i 9 tak jak to wyświatlała mn.in Brda
  • #7 20806420
    p.kaczmarek2
    Moderator Smart Home
    Będzie moment to sprawdzę.

    Tymczasem dalej walczę z płytką - chcę już flashować oba rdzenie, a do tego potrzeba BLDevCube.

    Na razie mam następujące obserwacje:
    - kabel USB bądź jego długość ma znaczenie, na jednym dłuższym u mnie nie działa... przycisk RESET - po prostu nie rebootuje się płytka. Naprawdę. Wgrałem Hello World i widzę, że nie ma reboot.
    - sam laptop (sterowniki???) też ma znaczenie, na moim z W10 flashowanie przerywało na Shakehand bądź nieco dalej, a na drugim poszło 100% sprawnie...
    Oto logi:
    
    [09:23:23.716] - serial type is bouffalo
    [09:23:23.766] - Open COM27 Success
    [09:23:26.795] - Close COM27 Success
    [09:23:26.798] - ========= Interface is Uart =========
    [09:23:26.804] - eflash loader bin is eflash_loader_auto.bin
    [09:23:26.806] - ========= chip flash id: ef4016 =========
    [09:23:26.815] - create partition.bin, pt_new is True
    [09:23:26.853] - Create bootheader using chips\bl808\img_create_iot\efuse_bootheader_cfg.ini
    [09:23:26.855] - Updating data according to <chips\bl808\img_create_iot\efuse_bootheader_cfg.ini[BOOTHEADER_GROUP0_CFG]>
    [09:23:26.862] - Created file len:352
    [09:23:26.867] - Create bootheader using chips\bl808\img_create_iot\efuse_bootheader_cfg.ini
    [09:23:26.867] - Updating data according to <chips\bl808\img_create_iot\efuse_bootheader_cfg.ini[BOOTHEADER_GROUP1_CFG]>
    [09:23:26.873] - Created file len:352
    [09:23:26.877] - Create efuse using chips\bl808\img_create_iot\efuse_bootheader_cfg.ini
    [09:23:26.879] - Updating data according to <chips\bl808\img_create_iot\efuse_bootheader_cfg.ini[EFUSE_CFG]>
    [09:23:26.885] - Created file len:256
    [09:23:26.894] - ========= sp image create =========
    [09:23:26.900] - Image hash is b'4eb457bd0c25aa8b122384056d8bc80391228247cfe67ef6123ba1af3048ecb3'
    [09:23:26.901] - Hash ignored
    [09:23:26.901] - Header crc ignored
    [09:23:26.901] - Write flash img
    [09:23:26.908] - Encrypt efuse data
    [09:23:26.923] - Warning: factory file is not programed to flash
    [09:23:26.924] - ========= eflash loader config =========
    [09:23:26.924] - Image offset = 8192
    [09:23:26.989] - Version: eflash_loader_v2.4.7
    [09:23:26.989] - Program Start
    [09:23:26.990] - ========= eflash loader cmd arguments =========
    [09:23:26.991] - Config file: C:\Users\Admin\Downloads\BouffaloLabDevCube-v1.8.6\chips\bl808\eflash_loader/eflash_loader_cfg.ini
    [09:23:26.993] - serial port is COM27 (PROG)
    [09:23:26.993] - cpu_reset=False
    [09:23:26.993] - chiptype: bl808
    [09:23:26.993] - ========= Interface is uart =========
    [09:23:26.994] - com speed: 2000000
    [09:23:26.994] - Bootrom load
    [09:23:26.994] - ========= get_boot_info =========
    [09:23:26.994] - ========= image get bootinfo =========
    [09:23:27.103] - ack is
    [09:23:27.104] - Not ack OK
    [09:23:27.104] - result:
    [09:23:27.117] - default set DTR high
    [09:23:27.221] - usb serial port
    [09:23:27.273] - clean buf
    [09:23:27.285] - send sync
    [09:23:27.792] - ack is 6b5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5aeb7baecb7b5eff6b5a5a5a5a5a5a5a5a5a5a595a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a7a5a565a584a527a1a725a535b5a4bb794ea3ff06b5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5ada5a7a5a4a5212ad6b6af5721a7a7b5ac66b5a5a5a5a5a5a5a5a5a5a5a5a5a5a5afac3
    [09:23:27.826] - shake hand success
    [09:23:30.329] - ack is
    [09:23:30.329] - Not ack OK
    [09:23:30.331] - result:
    [09:23:30.331] - get_boot_info no ok
    [09:23:30.331] - clock para file: C:\Users\Admin\Downloads\BouffaloLabDevCube-v1.8.6\chips/bl808/efuse_bootheader/clock_para.bin
    [09:23:30.332] - change bdrate: 2000000
    [09:23:30.332] - Clock PLL set
    [09:23:30.332] - clock para:
    [09:23:30.332] - 5043464707040000030103000102000201010001010101010a894b86
    [09:23:30.336] - FL5a6b unknown
    [09:23:30.336] - Retry
    [09:23:30.336] - FL5a1a unknown
    [09:23:30.336] - Retry
    [09:23:30.338] - FL6b62 unknown
    [09:23:30.338] - Retry
    [09:23:30.338] - FL1b56 unknown
    [09:23:30.338] - ErrorCode: 000C, ErrorMsg: BFLB SET CLOCK PLL FAIL
    [09:23:30.342] - pll set fail!!
    [09:23:30.342] - Burn Retry
    [09:23:30.342] - 0
    [09:23:30.342] - Burn return with retry fail
    

    
    [09:23:23.716] - serial type is bouffalo
    [09:23:23.766] - Open COM27 Success
    [09:23:26.795] - Close COM27 Success
    [09:23:26.798] - ========= Interface is Uart =========
    [09:23:26.804] - eflash loader bin is eflash_loader_auto.bin
    [09:23:26.806] - ========= chip flash id: ef4016 =========
    [09:23:26.815] - create partition.bin, pt_new is True
    [09:23:26.853] - Create bootheader using chips\bl808\img_create_iot\efuse_bootheader_cfg.ini
    [09:23:26.855] - Updating data according to <chips\bl808\img_create_iot\efuse_bootheader_cfg.ini[BOOTHEADER_GROUP0_CFG]>
    [09:23:26.862] - Created file len:352
    [09:23:26.867] - Create bootheader using chips\bl808\img_create_iot\efuse_bootheader_cfg.ini
    [09:23:26.867] - Updating data according to <chips\bl808\img_create_iot\efuse_bootheader_cfg.ini[BOOTHEADER_GROUP1_CFG]>
    [09:23:26.873] - Created file len:352
    [09:23:26.877] - Create efuse using chips\bl808\img_create_iot\efuse_bootheader_cfg.ini
    [09:23:26.879] - Updating data according to <chips\bl808\img_create_iot\efuse_bootheader_cfg.ini[EFUSE_CFG]>
    [09:23:26.885] - Created file len:256
    [09:23:26.894] - ========= sp image create =========
    [09:23:26.900] - Image hash is b'4eb457bd0c25aa8b122384056d8bc80391228247cfe67ef6123ba1af3048ecb3'
    [09:23:26.901] - Hash ignored
    [09:23:26.901] - Header crc ignored
    [09:23:26.901] - Write flash img
    [09:23:26.908] - Encrypt efuse data
    [09:23:26.923] - Warning: factory file is not programed to flash
    [09:23:26.924] - ========= eflash loader config =========
    [09:23:26.924] - Image offset = 8192
    [09:23:26.989] - Version: eflash_loader_v2.4.7
    [09:23:26.989] - Program Start
    [09:23:26.990] - ========= eflash loader cmd arguments =========
    [09:23:26.991] - Config file: C:\Users\Admin\Downloads\BouffaloLabDevCube-v1.8.6\chips\bl808\eflash_loader/eflash_loader_cfg.ini
    [09:23:26.993] - serial port is COM27 (PROG)
    [09:23:26.993] - cpu_reset=False
    [09:23:26.993] - chiptype: bl808
    [09:23:26.993] - ========= Interface is uart =========
    [09:23:26.994] - com speed: 2000000
    [09:23:26.994] - Bootrom load
    [09:23:26.994] - ========= get_boot_info =========
    [09:23:26.994] - ========= image get bootinfo =========
    [09:23:27.103] - ack is
    [09:23:27.104] - Not ack OK
    [09:23:27.104] - result:
    [09:23:27.117] - default set DTR high
    [09:23:27.221] - usb serial port
    [09:23:27.273] - clean buf
    [09:23:27.285] - send sync
    [09:23:27.792] - ack is 6b5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5aeb7baecb7b5eff6b5a5a5a5a5a5a5a5a5a5a595a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a7a5a565a584a527a1a725a535b5a4bb794ea3ff06b5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5ada5a7a5a4a5212ad6b6af5721a7a7b5ac66b5a5a5a5a5a5a5a5a5a5a5a5a5a5a5afac3
    [09:23:27.826] - shake hand success
    [09:23:30.329] - ack is
    [09:23:30.329] - Not ack OK
    [09:23:30.331] - result:
    [09:23:30.331] - get_boot_info no ok
    [09:23:30.331] - clock para file: C:\Users\Admin\Downloads\BouffaloLabDevCube-v1.8.6\chips/bl808/efuse_bootheader/clock_para.bin
    [09:23:30.332] - change bdrate: 2000000
    [09:23:30.332] - Clock PLL set
    [09:23:30.332] - clock para:
    [09:23:30.332] - 5043464707040000030103000102000201010001010101010a894b86
    [09:23:30.336] - FL5a6b unknown
    [09:23:30.336] - Retry
    [09:23:30.336] - FL5a1a unknown
    [09:23:30.336] - Retry
    [09:23:30.338] - FL6b62 unknown
    [09:23:30.338] - Retry
    [09:23:30.338] - FL1b56 unknown
    [09:23:30.338] - ErrorCode: 000C, ErrorMsg: BFLB SET CLOCK PLL FAIL
    [09:23:30.342] - pll set fail!!
    [09:23:30.342] - Burn Retry
    [09:23:30.342] - 0
    [09:23:30.342] - Burn return with retry fail
    [09:25:10.042] - ========= Interface is Uart =========
    [09:25:10.058] - eflash loader bin is eflash_loader_auto.bin
    [09:25:10.061] - ========= chip flash id: ef4016 =========
    [09:25:10.068] - create partition.bin, pt_new is True
    [09:25:10.103] - Create bootheader using chips\bl808\img_create_iot\efuse_bootheader_cfg.ini
    [09:25:10.105] - Updating data according to <chips\bl808\img_create_iot\efuse_bootheader_cfg.ini[BOOTHEADER_GROUP0_CFG]>
    [09:25:10.111] - Created file len:352
    [09:25:10.118] - Create bootheader using chips\bl808\img_create_iot\efuse_bootheader_cfg.ini
    [09:25:10.119] - Updating data according to <chips\bl808\img_create_iot\efuse_bootheader_cfg.ini[BOOTHEADER_GROUP1_CFG]>
    [09:25:10.125] - Created file len:352
    [09:25:10.129] - Create efuse using chips\bl808\img_create_iot\efuse_bootheader_cfg.ini
    [09:25:10.132] - Updating data according to <chips\bl808\img_create_iot\efuse_bootheader_cfg.ini[EFUSE_CFG]>
    [09:25:10.138] - Created file len:256
    [09:25:10.147] - ========= sp image create =========
    [09:25:10.154] - Image hash is b'4eb457bd0c25aa8b122384056d8bc80391228247cfe67ef6123ba1af3048ecb3'
    [09:25:10.154] - Hash ignored
    [09:25:10.154] - Header crc ignored
    [09:25:10.155] - Write flash img
    [09:25:10.159] - Encrypt efuse data
    [09:25:10.213] - Create bootheader using chips\bl808\img_create_iot\efuse_bootheader_cfg.ini
    [09:25:10.214] - Updating data according to <chips\bl808\img_create_iot\efuse_bootheader_cfg.ini[BOOTHEADER_GROUP0_CFG]>
    [09:25:10.219] - Created file len:352
    [09:25:10.226] - Create bootheader using chips\bl808\img_create_iot\efuse_bootheader_cfg.ini
    [09:25:10.226] - Updating data according to <chips\bl808\img_create_iot\efuse_bootheader_cfg.ini[BOOTHEADER_GROUP1_CFG]>
    [09:25:10.232] - Created file len:352
    [09:25:10.236] - Create efuse using chips\bl808\img_create_iot\efuse_bootheader_cfg.ini
    [09:25:10.238] - Updating data according to <chips\bl808\img_create_iot\efuse_bootheader_cfg.ini[EFUSE_CFG]>
    [09:25:10.243] - Created file len:256
    [09:25:10.255] - ========= sp image create =========
    [09:25:10.282] - Image hash is b'911b855d888c83ba53c63571beea888f19835c98fb861701102aceb126089227'
    [09:25:10.283] - Hash ignored
    [09:25:10.283] - Header crc ignored
    [09:25:10.283] - Write flash img
    [09:25:10.288] - Encrypt efuse data
    [09:25:10.292] - FW Header is 352, 3744 still needed
    [09:25:10.295] - FW OTA bin header is Done. Len is 4096
    [09:25:10.327] - BL60X_OTA_Ver1.0
    [09:25:10.362] - FW OTA bin is Done. Len is 193792
    [09:25:10.499] - OTA XZ file len = 71288
    [09:25:10.500] - Partiton len = 0
    [09:25:10.502] - Warn: fw1 xz bin size is overflow with partition table, don't create ota bin
    [09:25:10.502] - Warning: remove OTA files
    [09:25:10.503] - FW OTA xz is Done
    [09:25:10.540] - Create bootheader using chips\bl808\img_create_iot\efuse_bootheader_cfg.ini
    [09:25:10.541] - Updating data according to <chips\bl808\img_create_iot\efuse_bootheader_cfg.ini[BOOTHEADER_GROUP0_CFG]>
    [09:25:10.546] - Created file len:352
    [09:25:10.554] - Create bootheader using chips\bl808\img_create_iot\efuse_bootheader_cfg.ini
    [09:25:10.556] - Updating data according to <chips\bl808\img_create_iot\efuse_bootheader_cfg.ini[BOOTHEADER_GROUP1_CFG]>
    [09:25:10.563] - Created file len:352
    [09:25:10.566] - Create efuse using chips\bl808\img_create_iot\efuse_bootheader_cfg.ini
    [09:25:10.567] - Updating data according to <chips\bl808\img_create_iot\efuse_bootheader_cfg.ini[EFUSE_CFG]>
    [09:25:10.572] - Created file len:256
    [09:25:10.581] - ========= sp image create =========
    [09:25:10.631] - Image hash is b'4a08929a7e7bbd559c1d4e81cb0537f12475ec43c8fabcb118c0e0aaab105352'
    [09:25:10.632] - Hash ignored
    [09:25:10.632] - Header crc ignored
    [09:25:10.632] - Write flash img
    [09:25:10.639] - Encrypt efuse data
    [09:25:10.641] - Warning: factory file is not programed to flash
    [09:25:10.643] - ========= eflash loader config =========
    [09:25:10.644] - Image offset = 8192
    [09:25:10.877] - Version: eflash_loader_v2.4.7
    [09:25:10.879] - Program Start
    [09:25:10.879] - ========= eflash loader cmd arguments =========
    [09:25:10.879] - Config file: C:\Users\Admin\Downloads\BouffaloLabDevCube-v1.8.6\chips\bl808\eflash_loader/eflash_loader_cfg.ini
    [09:25:10.881] - serial port is COM27 (PROG)
    [09:25:10.881] - cpu_reset=False
    [09:25:10.881] - chiptype: bl808
    [09:25:10.881] - ========= Interface is uart =========
    [09:25:10.881] - com speed: 2000000
    [09:25:10.882] - Bootrom load
    [09:25:10.882] - ========= get_boot_info =========
    [09:25:10.882] - ========= image get bootinfo =========
    [09:25:10.994] - ack is
    [09:25:10.995] - Not ack OK
    [09:25:10.995] - result:
    [09:25:11.006] - default set DTR high
    [09:25:11.119] - usb serial port
    [09:25:11.183] - clean buf
    [09:25:11.187] - send sync
    [09:25:11.709] - ack is 6b5a5a5a5a5a5a5a5a5a5a5a5a5a5a5adadecb7b5ed77b5ed77b5ed77b5ed77bded77bdecbfb5b5010633710af5a5a5a5a7a16165a5a5a5a5a5a5ada7bdecb7b5ed77bdecb7bde7b5ed77b5ad77b5ecb7b5ed77b5ed77b5ecb7b5ecb7b5ecb7b5ed77f5ed77b5ecb7bdecb7bde577b5ed77bded77bdad77b5ecb7b5fd77bdacb7bde7b5ecb7bdeea9a12e1af43535a5a5ada122c5b4a5a5a5a5a5a5aaed77bded67bdeeb7b5e577b5ed77b5ed77b5acb7b2fd77b5ed77b5ed77b5ecb7b5ed77bdecb7bdecb7bdedb7bded77bdecb7bde4bf6deeb7b5ed77b5e577b5e7fded6f27b5ed77f5ed77b5eb66d437be1af43535a5a5a7a3e12525a5a5a5a5a5ada7b5ed77b5ed77bded77bdecb7bdedb7b5ecb7bded77b5efdc3
    [09:25:11.756] - shake hand success
    [09:25:14.262] - ack is
    [09:25:14.263] - Not ack OK
    [09:25:14.263] - result:
    [09:25:14.263] - get_boot_info no ok
    [09:25:14.263] - clock para file: C:\Users\Admin\Downloads\BouffaloLabDevCube-v1.8.6\chips/bl808/efuse_bootheader/clock_para.bin
    [09:25:14.267] - change bdrate: 2000000
    [09:25:14.267] - Clock PLL set
    [09:25:14.267] - clock para:
    [09:25:14.268] - 5043464707040000030103000102000201010001010101010a894b86
    [09:25:16.271] - ack is
    [09:25:16.271] - Retry
    [09:25:18.274] - ack is
    [09:25:18.274] - Retry
    [09:25:20.277] - ack is
    [09:25:20.277] - Retry
    [09:25:22.279] - ack is
    [09:25:22.279] - ErrorCode: 000C, ErrorMsg: BFLB SET CLOCK PLL FAIL
    [09:25:22.280] - pll set fail!!
    [09:25:22.280] - Burn Retry
    [09:25:22.280] - 0
    [09:25:22.280] - Burn return with retry fail
    

    Nie wiem jeszcze czemu tak jest, ale będę aktualizować temat.
    Pomogłem? Kup mi kawę.
  • #8 20809413
    p.kaczmarek2
    Moderator Smart Home
    Problemu wcześniej opisanego nie rozwiązałem, dalej nie wiem, czemu na jednej z moich maszyn W10 nie da się flashować tego BL808, a na drugiej jest to możliwe....

    Ale mam postępy z kamerką - udało mi się uruchomić demko streamingu obrazu z kamery na serwer na PC poprzez TCP, a potem udało mi się je zmodyfikować tak, że serwer postawiony jest na samej płytce, a my możemy do niego podłączyć się z przeglądarki. Bardzo fajna zabawa, szczegóły wkrótce na forum:
    Pierwsze starcie z modułem SiPEED M1S DOCK - AI+IoT RTOS_Linux All-Round Module
    Może też otworzę pull request do przykładów producenta by dodali tam mój mini-serwerek.
    Pomogłem? Kup mi kawę.
  • #9 20810176
    gulson
    Administrator Systemowy
    W sumie ciekawe czy dałoby się nauczyć te płytki, aby odczytywały różne wskaźniki w zakładach czy na węzłach:
    Pierwsze starcie z modułem SiPEED M1S DOCK - AI+IoT RTOS_Linux All-Round Module
    W sumie to mogłyby być ciekawe urządzenia do monitoringu, od razu by wysyłały pomiary przez GSM.
    A nie ma ingerencji do samych urządzeń pomiarowych.

    Liczniki, manometry, kontrolki, kolory, stan przełączników itp.
  • #10 20812611
    gulson
    Administrator Systemowy
    A gdyby tak dodać Vision ChatGPT do odczytu wskazań urządzeń przemysłowych? Trochę przerost formy nad treścią, ale nie wiadomo czy uda się nauczyć w inny sposób na tą chwilę.
    @ElektrodaBot napisz, jakie widać wskazanie na manometrze.
    Pierwsze starcie z modułem SiPEED M1S DOCK - AI+IoT RTOS_Linux All-Round Module
  • #11 20812614
    ElektrodaBot
    AI od OpenAI ChatGPT4
    gulson napisał:
    napisz, jakie widać wskazanie na manometrze.
    https://obrazki.elektroda.pl/4001078500_1699861614.png
    Wskazówka manometru znajduje się między 1 a 2 bar, a dokładniej jest bliższa 2 bar. Wygląda na to, że wskazówka osiągnęła około 1,75 bara. Manometry takie jak ten są często stosowane do pomiaru ciśnienia w systemach hydraulicznych, takich jak systemy grzewcze czy instalacje wodne. Wartość 1,75 bara może być wskazaniem ciśnienia w takim systemie, ale dokładna interpretacja wartości zależy od specyfikacji i wymagań danego systemu, do którego manometr jest podłączony.
    Możesz mnie wywołać w każdym temacie pisząc @ElektrodaBot. Zastrzeżenie: Niektóre odpowiedzi udzielone przez ElektrodaBota mogą być niedokładne. Elektroda nie ponosi odpowiedzialności za dokładność, rzetelność ani kompletność prezentowanych informacji. Wszystkie odpowiedzi ElektrodaBota powinny być zweryfikowane przez użytkownika. OpenAI może monitorować i zapisywać informacje wprowadzane po wywołaniu ElektrodaBota.
  • #12 20812618
    gulson
    Administrator Systemowy
    OK cofam pomysł, trzeba tworzyć coś własnego i dedykowanego do danych czujników, sensorów czy mierników. Może właśnie ta płytka?
  • #14 20812888
    p.kaczmarek2
    Moderator Smart Home
    @chemik_16 dobra sugestia, wypróbuję to i może kiedyś na forum opiszę
    Pomogłem? Kup mi kawę.
  • #15 20816134
    arti4-92
    Poziom 17  
    Od kiedy dowiedziałem się o tym układzie zastanawiałem się jak wygląda sprawa dokumetancji HW, tzn dma i kodeków audio. Czy mógłbyś mi powiedzieć, czy zdobycie dokumentacji to duży problem? I czy w ogóle pozwala ona na napisanie własnych sterowników do dma czy kodeków?
REKLAMA