v4.0.0

v4.0.0 je hlavní vydání v3 → v4. Zavádí moderní API sensor pro vícesnímkové bufferování (dvojité / trojité bufferování a video FIFO), callback při dokončení snímku, modul Bluetooth (stack NimBLE) s podporou Portenty, první ovladač kamery MT9M114, snímání z kamery odlehčené přes MDMA, podporu Bayer/JPEG v image.draw_image() a skok na MicroPython 1.15. Starší režim streamování byl odstraněn a sensor.set_windowing() byl přepracován — přečtěte si nekompatibilní změny níže.

Hlavní novinky

  • Vícesnímkové bufferovánísensor získává dvojité bufferování, trojité bufferování a režim video FIFO pro vyšší a plynulejší snímkovou frekvenci.

  • Callback při dokončení snímku — zaregistrujte callback, který se spustí, jakmile je nový snímek připraven, pro neblokující snímací pipeline.

  • Bluetooth — modul bluetooth postavený na stacku NimBLE, povolený na Arduino Portenta H7 (s příkladem BLE).

  • MT9M114 — první ovladač senzoru kamery.

  • Rychlejší snímání — odlehčení snímání dat z kamery přes MDMA; draw_image() nyní přijímá zdroje/cíle ve formátu Bayer a JPEG.

  • MicroPython 1.15 — přiložený MicroPython byl aktualizován z 1.13 na 1.15.

  • Nekompatibilní: starší režim streamování byl odstraněn a sensor.set_windowing() byl přepracován — viz nekompatibilní změny.

Nové funkce

  • Vícenásobné bufferování senzoru — přidány sensor.set_framebuffers() / sensor.get_framebuffers() a režimy SINGLE_BUFFER / DOUBLE_BUFFER / TRIPLE_BUFFER / VIDEO_FIFO, plus sensor.get_frame_available() pro dvojité, trojité a video-FIFO snímání.

  • Callback při dokončení snímku — přidán sensor.set_frame_callback(), takže Python callback se spustí při dokončení každého nového snímku.

  • Bluetooth — přidán modul bluetooth postavený na stacku NimBLE (submodul NimBLE, ovladač CYW-BT), povolený na Arduino Portenta H7 s příkladem BLE.

  • MT9M114 — přidán první ovladač senzoru kamery MT9M114.

  • draw_image — přidána podpora debayeringu a kopírování JPEG, takže image.draw_image() přijímá zdrojové/cílové obrazy ve formátu Bayer a JPEG.

  • Odlehčení snímání přes MDMA — snímání dat z kamery je odlehčeno na MDMA pro vyšší propustnost.

  • Argument barevné palety lze nyní zakázat předáním -1 (jelikož None je vyhrazeno jako platný argument).

Další změny a vylepšení

  • Přechod na novou softwarovou implementaci I2C; sladění s upstream MicroPythonem; konfigurace ulab pro jednotlivé desky; povoleny základní vestavěné moduly pro OpenMV 2; spravedlivější zamykání čtení snímkového bufferu; podpora mutexů rozšířena na Cortex-M0/M0+ s timeoutem zámku.

Opravy chyb

Kamera a zpracování obrazu:

  • Opravena spolehlivost inicializace FLIR Lepton na desce Pure Thermal, zpracování JPEG bufferu / pauzy u ImageIO, nastavení vflip/hmirror u HM01B0, vyprázdnění JPEG bufferu při zneplatnění obrazu a příznak cropped, který byl nastaven při neplatné velikosti snímku.

Systém a konektivita:

  • Opraveno vyprazdňování USB příkazů a příkaz reset-to-bootloader, inicializace mutexu, zdroj hodin UART, define kódové stránky FatFS, zpracování ACK mimo pásmo u WINC1500, ladění WiFi a USB PID u Nano33; izolovány vyhrazené analogové pady.

Hardware a podpora desek

  • MT9M114 senzor kamery (první ovladač).

  • Arduino Portenta H7 — povoleno Bluetooth (NimBLE) s příkladem BLE.

  • Arduino Nano RP2040 Connect / Nano 33 BLE Sense — příznak WiFi-debug zakázán tam, kde není podporován; přidán příklad blikání; oprava USB PID.

Nekompatibilní změny API

Uživatelsky viditelné nekompatibility API mezi v3.9.4 a v4.0.0. Rozsah: Python C-moduly v modules/ a Python knihovny v scripts/libraries/.

Každá změna je označena svým dopadem:

  • major — ovlivňuje většinu skriptů; téměř jistě budete muset upravit kód.

  • minor — úzké API; ovlivňuje pouze skripty, které jej používaly.

  • behavior — stejné API, jiné výsledky; znovu zkontrolujte doladěné skripty.

Změny jsou seskupeny podle dopadu v tomto pořadí. Pokud chcete jen upravit svůj kód, přejděte na kontrolní seznam migrace na konci. Každý hash commitu odkazuje na svůj diff na GitHubu.

Odstraněn režim streamování (major)

Starší režim streamování senzoru byl odstraněn ve prospěch nového API pro vícesnímkové bufferování. Kód, který povoloval režim streamování, musí přejít na sensor.set_framebuffers() s DOUBLE_BUFFER / TRIPLE_BUFFER / VIDEO_FIFO a snímání řídit pomocí sensor.snapshot() / sensor.get_frame_available().

Commity: a42f3a647

sensor.set_windowing() přepracován (behavior)

sensor.set_windowing() byl výrazně zpružněn: nyní přijímá více forem argumentů (n-tici oblasti, nebo šířku/výšku vystředěnou, nebo x, y, w, h) a okno vyhodnocuje relativně k aktuálnímu rozlišení. Skripty, které předávaly argumenty oříznutí ve starém pevném tvaru, mohou vybrat jinou oblast a měly by být znovu zkontrolovány.

Commity: 3e9c43554

MicroPython 1.13 → 1.15 (behavior)

Přiložené jádro MicroPythonu bylo aktualizováno z 1.13 na 1.15 (přes 1.14). Chování standardní knihovny a jazyka odpovídá upstream MicroPythonu 1.15; znovu zkontrolujte skripty, které závisí na chování micropython / standardních modulů specifickém pro danou verzi.

Commity: 364eea6c7, 26c5376b0

Odstraněn argument update_jpeg_buffer u ImageIO (minor)

Aktualizace JPEG bufferu u ImageIO byla přepracována tak, aby se buffer odvozoval z argumentu zdrojového obrazu, a explicitní argument update_jpeg_buffer byl odstraněn. Skripty, které předávaly update_jpeg_buffer do ImageIO, musí tento argument vypustit.

Commity: 5c6937bd1

Kontrolní seznam migrace

Pro čistý přechod na v4.0.0 je typická práce následující:

  1. Nahraďte jakékoli použití odstraněného režimu streamování novým API pro vícenásobné bufferování sensor.set_framebuffers() (odstraněn režim streamování).

  2. Znovu zkontrolujte volání sensor.set_windowing() vůči přepracovanému, pružnějšímu zpracování argumentů (změna oříznutí).

  3. Znovu ověřte skripty závisející na chování MicroPythonu specifickém pro danou verzi vůči MicroPythonu 1.15 (povýšení MicroPythonu).

  4. Vypusťte argument update_jpeg_buffer z volání ImageIO (změna ImageIO).

Všechny ostatní skripty běží beze změny.