v3.9.4

v3.9.4 přidává modul buzzer, ioctly pro detekci pohybu HM01B0 od Himaxu (s příklady probuzení při pohybu v nízkopříkonovém režimu), řízení čtecího okna MT9V034, nízkopříkonové funkce pro Ethernet, ovladač kamery OV7670 a kameru Arduino Nano 33 BLE Sense. Přináší také velkou dávku zrychlení JPEG / LCD / TV. API výstupu VSYNC bylo nahrazeno callbackem a byl opraven výpočet zisku/expozice u MT9V034 — přečtěte si nekompatibilní změny níže.

Hlavní novinky

  • Modul buzzer — nový modul buzzer (freq(), duty(), RESONANT_FREQ) na OpenMV Pure Thermal.

  • Detekce pohybu HM01B0 — nové ioctly Himaxu pro detekci pohybu plus příklad probuzení při pohybu v nízkopříkonovém režimu.

  • Čtecí okno MT9V034 — řízení čtecího okna global-shutter pomocí sensor.ioctl().

  • Nové kamery / desky — základní ovladač OV7670, kamera Arduino Nano 33 BLE Sense a deska Bormio.

  • Rychlejší zpracování — přepsaný SIMD JPEG enkodér, rychlejší debayering a velká zrychlení přenosu na LCD/TV.

  • Nekompatibilní: sensor.set_vsync_output() bylo nahrazeno sensor.set_vsync_callback() a byl opraven výpočet zisku/expozice u MT9V034 — viz nekompatibilní změny.

Nové funkce

  • Buzzer — přidán modul buzzer s buzzer.freq(), buzzer.duty() a konstantou buzzer.RESONANT_FREQ (OpenMV Pure Thermal).

  • Detekce pohybu HM01B0 — přidány ioctly IOCTL_HIMAX_MD_ENABLE / MD_WINDOW / MD_THRESHOLD / MD_CLEAR a IOCTL_HIMAX_OSC_ENABLE, s příkladem detekce pohybu Himaxu a nízkopříkonovým příkladem probuzení himax_wakeup_on_motion_detection.py.

  • Čtecí okno MT9V034 — přidány IOCTL_SET_READOUT_WINDOW / IOCTL_GET_READOUT_WINDOW pro řízení čtecího okna MT9V034 pomocí sensor.ioctl().

  • Nízkopříkonový Ethernet — přidány funkce pro vypnutí / nízkopříkonový režim Ethernetu.

  • Portenta — přidány callback funkce pro povolení/zakázání externího oscilátoru.

Další změny a vylepšení

  • Přepsán JPEG enkodér s využitím SIMD a zrychleno kódování Bayer→YCbCr, hardwarové JPEG jádro zůstává napájené během běhu skriptu, zrychlen debayering (~19,5 ms pro VGA), komprese JPEG přesunuta na MDMA, urychleny přenosové cesty TV/LCD pomocí SIMD/efektivního DMA a výrazně sníženo využití sběrnice SPI LCD. Přidán ovladač USB3320 ULPI PHY pro vysokorychlostní USB.

Opravy chyb

Kamera a senzory:

  • Opravena inicializace/streamování ovladače HM01B0 a doladěn jeho cíl AE / max. zisk, opraveno omezení zisku AGC/AEC u MT9V034 a opraveno načítání firmwaru autofokusu OV5640 (pořadí bajtů).

Displej:

  • Opraveny DMA přenosy SPI LCD větší než 64 KB, polarita výstupu LCD a stabilita sběrnice LCD (AXI QOS).

Systém a konektivita:

  • Opravena instance SDMMC používaná ovladačem WiFi CYW43 (s instancí SDMMC definovanou deskou), zlepšena efektivita DMA u FLIR Lepton (VOSPI zvýšeno na 20 MHz na H7), opraveno nízkopříkonové / pohotovostní chování Portenty (proudové omezení PMIC SW1, nízkopříkonový režim Ethernetu a ULPI), server RTSP nyní toleruje hlavičky CSeq a PLAY Range mimo pořadí (FFPLAY), opraveno 8bajtové EABI zarovnání zásobníku v linkeru a opraven nefunkční import v příkladu mqtt_sub.py pro Portentu.

Hardware a podpora desek

  • OV7670 senzor kamery — základní ovladač.

  • Arduino Nano 33 BLE Sense — ovladač senzoru kamery (port nrf) s opravami reset pinu a sběrnice I2C.

  • HM01B0 — přidáno rozlišení 320x320.

  • Bormio — konfigurace hodin PLL, rozložení flash paměti a GPIO PORT K (povoleno také na Portentě).

  • USB3320 ULPI PHY — vysokorychlostní USB.

Nekompatibilní změny API

Uživatelsky viditelné nekompatibility API mezi v3.9.3 a v3.9.4. 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ů, které funkci používaly; budete muset upravit kód.

  • 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.

Výstup VSYNC nahrazen callbackem (major)

sensor.set_vsync_output(pin) bylo odstraněno a nahrazeno sensor.set_vsync_callback(callback). Linka VSYNC již nebudí přímo Pin; místo toho se volá Python callable se stavem VSYNC a váš callback přepíná Pin sám. Kód, který používal sensor.set_vsync_output(), musí být upraven (viz aktualizovaný příklad vsync_gpio_output.py).

Commity: 5bbe25c20

Opraven výpočet zisku/expozice u MT9V034 (behavior)

Byla opravena rychlost hodin a výpočet zisku/expozice u MT9V034, takže sensor.set_auto_gain() / sensor.set_auto_exposure() nyní produkují přesné (a tedy odlišné) hodnoty než dříve. Skripty, které měly napevno nastavené kompenzační hodnoty zisku/expozice, aby obešly starý nesprávný výpočet u kamer MT9V034 s global-shutter, by tato obejití měly odstranit a znovu doladit.

Commity: 4420536c4

Kontrolní seznam migrace

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

  1. Nahraďte sensor.set_vsync_output(pin) za sensor.set_vsync_callback(callback) a přepínejte Pin zevnitř callbacku (změna VSYNC).

  2. Znovu dolaďte všechna obejití zisku/expozice u MT9V034 vůči opravenému výpočtu (změna MT9V034).

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