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.