v4.0.0#
v4.0.0 to główne wydanie v3 → v4. Wprowadza nowoczesne API buforowania wielu ramek sensor (podwójne / potrójne buforowanie oraz wideo FIFO), wywołanie zwrotne zakończenia ramki, moduł Bluetooth (stos NimBLE) z obsługą Portenta, początkowy sterownik kamery MT9M114, przechwytywanie obrazu z odciążeniem MDMA, obsługę Bayer/JPEG w image.draw_image() oraz skok do MicroPython 1.15. Usunięto starszy tryb strumieniowania, a sensor.set_windowing() został przerobiony — przeczytaj poniższe przełomowe zmiany.
Najważniejsze zmiany#
Buforowanie wielu ramek —
sensorzyskuje podwójne buforowanie, potrójne buforowanie oraz tryb wideo FIFO dla wyższej, płynniejszej liczby klatek.Wywołanie zwrotne zakończenia ramki — zarejestruj wywołanie zwrotne uruchamiane, gdy nowa ramka jest gotowa, dla nieblokujących potoków przechwytywania.
Bluetooth — moduł
bluetoothzbudowany na stosie NimBLE, włączony na Arduino Portenta H7 (z przykładem BLE).MT9M114 — początkowy sterownik sensora kamery.
Szybsze przechwytywanie — odciążenie MDMA dla przechwytywania danych kamery;
draw_image()akceptuje teraz źródła/cele Bayer i JPEG.MicroPython 1.15 — dołączony MicroPython został zaktualizowany z 1.13 do 1.15.
Przełomowe: usunięto starszy tryb strumieniowania, a
sensor.set_windowing()został przerobiony — zobacz przełomowe zmiany.
Nowe funkcje#
Wielobuforowanie sensora — dodano
sensor.set_framebuffers()/sensor.get_framebuffers()oraz trybySINGLE_BUFFER/DOUBLE_BUFFER/TRIPLE_BUFFER/VIDEO_FIFO, a takżesensor.get_frame_available()dla przechwytywania podwójnego, potrójnego i wideo FIFO.Wywołanie zwrotne zakończenia ramki — dodano
sensor.set_frame_callback(), dzięki czemu wywołanie zwrotne Pythona uruchamia się po zakończeniu każdej nowej ramki.Bluetooth — dodano moduł
bluetoothoparty na stosie NimBLE (submoduł NimBLE, sterownik CYW-BT), włączony na Arduino Portenta H7 wraz z przykładem BLE.MT9M114 — dodano początkowy sterownik sensora kamery MT9M114.
draw_image — dodano obsługę debayerowania i kopiowania JPEG, dzięki czemu
image.draw_image()akceptuje obrazy źródłowe/docelowe Bayer i JPEG.Odciążenie przechwytywania MDMA — przechwytywanie danych kamery jest odciążane na MDMA dla wyższej przepustowości.
Argument palety kolorów można teraz wyłączyć, przekazując
-1(ponieważNonejest zarezerwowane jako prawidłowy argument).
Pozostałe zmiany i ulepszenia#
Przełączono na nową programową implementację I2C; zsynchronizowano z głównym repozytorium MicroPython; konfiguracja ulab per płytka; włączono podstawowe wbudowane moduły dla OpenMV 2; sprawiedliwsze blokowanie odczytu bufora ramki; obsługa muteksów rozszerzona na Cortex-M0/M0+ z limitem czasu blokady.
Poprawki błędów#
Kamera i obrazowanie:
Naprawiono niezawodność inicjalizacji FLIR Lepton na płytce Pure Thermal, obsługę bufora JPEG / pauzy ImageIO, ustawienia vflip/hmirror HM01B0, opróżnianie bufora JPEG przy unieważnieniu obrazu oraz flagę
cropped, która była ustawiana, gdy framesize był nieprawidłowy.
System i łączność:
Naprawiono opróżnianie komend USB i komendę resetu do bootloadera, inicjalizację muteksów, źródło zegara UART, definicję strony kodowej FatFS, obsługę ACK poza pasmem WINC1500, debugowanie WiFi oraz USB PID Nano33; odizolowano dedykowane pady analogowe.
Sprzęt i obsługa płytek#
Sensor kamery MT9M114 (początkowy sterownik).
Arduino Portenta H7 — włączony Bluetooth (NimBLE) z przykładem BLE.
Arduino Nano RP2040 Connect / Nano 33 BLE Sense — flaga debugowania WiFi wyłączona tam, gdzie nie jest obsługiwana; dodano przykład blinky; poprawka USB PID.
Przełomowe zmiany API#
Widoczne dla użytkownika zmiany API między v3.9.4 a v4.0.0. Zakres: moduły C Pythona w modules/ oraz biblioteki Pythona w scripts/libraries/.
Każda zmiana jest oznaczona swoim wpływem:
major — dotyczy większości skryptów; niemal na pewno konieczne będzie przeniesienie kodu.
minor — wąskie API; dotyczy tylko skryptów, które z niego korzystały.
behavior — to samo API, inne wyniki; sprawdź ponownie dostrojone skrypty.
Zmiany są pogrupowane według wpływu w tej kolejności. Jeśli chcesz po prostu przenieść swój kod, przejdź do listy kontrolnej migracji na końcu. Każdy hash commita prowadzi do jego diffu na GitHubie.
Usunięto tryb strumieniowania (major)#
Starszy tryb strumieniowania sensora został usunięty na rzecz nowego API buforowania wielu ramek. Kod, który włączał tryb strumieniowania, musi przejść na sensor.set_framebuffers() z DOUBLE_BUFFER / TRIPLE_BUFFER / VIDEO_FIFO i sterować przechwytywaniem za pomocą sensor.snapshot() / sensor.get_frame_available().
Commity: a42f3a647
sensor.set_windowing() przerobiony (behavior)#
sensor.set_windowing() został uczyniony znacznie bardziej elastycznym: akceptuje teraz wiele form argumentów (krotkę obszaru, lub wyśrodkowaną szerokość/wysokość, lub x, y, w, h) i rozwiązuje okno względem bieżącej rozdzielczości. Skrypty, które przekazywały argumenty okienkowania w starej, sztywnej formie, mogą wybrać inny obszar i powinny zostać ponownie sprawdzone.
Commity: 3e9c43554
MicroPython 1.13 → 1.15 (behavior)#
Dołączony rdzeń MicroPython został zaktualizowany z 1.13 do 1.15 (poprzez 1.14). Zachowanie biblioteki standardowej i języka jest zgodne z głównym MicroPython 1.15; sprawdź ponownie skrypty zależne od zachowania micropython / modułów standardowych specyficznego dla wersji.
Usunięto argument update_jpeg_buffer ImageIO (minor)#
Aktualizacja bufora JPEG ImageIO została przerobiona tak, aby wyprowadzać bufor z argumentu źródłowego obrazu, a jawny argument update_jpeg_buffer został usunięty. Skrypty, które przekazywały update_jpeg_buffer do ImageIO, muszą porzucić ten argument.
Commity: 5c6937bd1
Lista kontrolna migracji#
Aby czysto przenieść się na v4.0.0, typowa praca to:
Zastąp wszelkie użycia usuniętego trybu strumieniowania nowym API wielobuforowania
sensor.set_framebuffers()(usunięto tryb strumieniowania).Sprawdź ponownie wywołania
sensor.set_windowing()względem przerobionej, bardziej elastycznej obsługi argumentów (zmiana okienkowania).Zweryfikuj ponownie skrypty zależne od zachowania MicroPython specyficznego dla wersji względem MicroPython 1.15 (aktualizacja MicroPython).
Porzuć argument
update_jpeg_bufferz wywołań ImageIO (zmiana ImageIO).
Wszystkie pozostałe skrypty działają bez zmian.