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 rameksensor zyskuje 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ł bluetooth zbudowany 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 tryby SINGLE_BUFFER / DOUBLE_BUFFER / TRIPLE_BUFFER / VIDEO_FIFO, a także sensor.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ł bluetooth oparty 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ż None jest 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.

Commity: 364eea6c7, 26c5376b0

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:

  1. Zastąp wszelkie użycia usuniętego trybu strumieniowania nowym API wielobuforowania sensor.set_framebuffers() (usunięto tryb strumieniowania).

  2. Sprawdź ponownie wywołania sensor.set_windowing() względem przerobionej, bardziej elastycznej obsługi argumentów (zmiana okienkowania).

  3. Zweryfikuj ponownie skrypty zależne od zachowania MicroPython specyficznego dla wersji względem MicroPython 1.15 (aktualizacja MicroPython).

  4. Porzuć argument update_jpeg_buffer z wywołań ImageIO (zmiana ImageIO).

Wszystkie pozostałe skrypty działają bez zmian.