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.