v4.0.0

v4.0.0 är den stora v3 → v4-releasen. Den introducerar det moderna sensor-API:t för flerbildsbuffring (dubbel-/trippelbuffring och en video-FIFO), ett återanrop för slutförd bildruta, en Bluetooth-modul (NimBLE-stack) med Portenta-stöd, den första MT9M114-kameradrivrutinen, MDMA-avlastad kamerafångst, stöd för Bayer/JPEG i image.draw_image() och ett steg upp till MicroPython 1.15. Det äldre strömningsläget togs bort och sensor.set_windowing() arbetades om — läs de brytande ändringarna nedan.

Höjdpunkter

  • Flerbildsbuffringsensor får dubbelbuffring, trippelbuffring och ett video-FIFO-läge för högre, jämnare bildfrekvenser.

  • Återanrop för slutförd bildruta — registrera ett återanrop som utlöses när en ny bildruta är klar, för icke-blockerande fångstpipelines.

  • Bluetooth — en bluetooth-modul byggd på NimBLE-stacken, aktiverad på Arduino Portenta H7 (med ett BLE-exempel).

  • MT9M114 — första kamerasensordrivrutinen.

  • Snabbare fångst — MDMA-avlastning för kameradatafångst; draw_image() accepterar nu Bayer- och JPEG-källor/-destinationer.

  • MicroPython 1.15 — den medföljande MicroPython uppdaterades från 1.13 till 1.15.

  • Brytande: det äldre strömningsläget togs bort och sensor.set_windowing() arbetades om — se de brytande ändringarna.

Nya funktioner

  • Flerbuffring i sensor — lade till sensor.set_framebuffers() / sensor.get_framebuffers() och lägena SINGLE_BUFFER / DOUBLE_BUFFER / TRIPLE_BUFFER / VIDEO_FIFO, plus sensor.get_frame_available() för dubbel-, trippel- och video-FIFO-fångst.

  • Återanrop för slutförd bildruta — lade till sensor.set_frame_callback() så att ett Python-återanrop körs när varje ny bildruta är klar.

  • Bluetooth — lade till en bluetooth-modul som stöds av NimBLE-stacken (NimBLE-undermodul, CYW-BT-drivrutin), aktiverad på Arduino Portenta H7 med ett BLE-exempel.

  • MT9M114 — lade till den första MT9M114-kamerasensordrivrutinen.

  • draw_image — lade till stöd för debayering och JPEG-kopiering så att image.draw_image() accepterar Bayer- och JPEG-källbilder/-destinationsbilder.

  • MDMA-fångstavlastning — kameradatafångst avlastas till MDMA för högre genomströmning.

  • Ett argument för färgpalett kan nu inaktiveras genom att skicka -1 (eftersom None är reserverat som ett giltigt argument).

Övriga ändringar och förbättringar

  • Bytte till den nya programvarubaserade I2C-implementeringen; anpassade mot MicroPython upstream; ulab-konfiguration per kort; grundläggande inbyggda moduler aktiverade för OpenMV 2; rättvisare låsning av bildbuffertutläsning; mutex-stöd utökat till Cortex-M0/M0+ med en låstimeout.

Buggrättningar

Kamera och bildbehandling:

  • Rättade FLIR Leptons initieringspålitlighet på Pure Thermal-kortet, ImageIO:s hantering av JPEG-buffert / paus, HM01B0:s vflip/hmirror-inställningar, JPEG-buffertens tömning när en bild ogiltigförklaras och en cropped-flagga som sattes när bildstorleken var ogiltig.

System och anslutningar:

  • Rättade USB-kommandots tömning och kommandot för reset-till-startladdare, mutex-initiering, UART-klockkällan, FatFS code-page-definitionen, WINC1500:s hantering av out-of-band-ACK, WiFi-felsökning och Nano33:s USB-PID; isolerade dedikerade analoga pads.

Hårdvaru- och kortstöd

  • MT9M114-kamerasensor (första drivrutinen).

  • Arduino Portenta H7 — Bluetooth aktiverat (NimBLE) med ett BLE-exempel.

  • Arduino Nano RP2040 Connect / Nano 33 BLE Sense — WiFi-felsökningsflaggan inaktiverad där den inte stöds; blinky-exempel tillagt; rättning av USB-PID.

Brytande API-ändringar

Användarsynliga API-brott mellan v3.9.4 och v4.0.0. Omfattning: Python-C-moduler i modules/ och Python-bibliotek i scripts/libraries/.

Varje ändring är märkt med sin påverkan:

  • major — påverkar de flesta skript; du kommer nästan säkert att behöva porta kod.

  • minor — smalt API; påverkar bara skript som använde det.

  • behavior — samma API, andra resultat; kontrollera trimmade skript igen.

Ändringar är grupperade efter påverkan i den ordningen. Om du bara vill porta din kod, hoppa till migreringschecklistan i slutet. Varje commit-hash länkar till sin diff på GitHub.

Strömningsläge borttaget (major)

Det äldre strömningsläget för sensorn togs bort till förmån för det nya API:t för flerbildsbuffring. Kod som aktiverade strömningsläget måste byta till sensor.set_framebuffers() med DOUBLE_BUFFER / TRIPLE_BUFFER / VIDEO_FIFO och driva fångst med sensor.snapshot() / sensor.get_frame_available() i stället.

Commits: a42f3a647

sensor.set_windowing() omarbetad (behavior)

sensor.set_windowing() gjordes mycket mer flexibel: den accepterar nu flera argumentformer (en regiontupel, eller bredd/höjd centrerad, eller x, y, w, h) och löser fönstret relativt den aktuella upplösningen. Skript som skickade fönstringsargument i den gamla fasta formen kan välja en annan region och bör kontrolleras igen.

Commits: 3e9c43554

MicroPython 1.13 → 1.15 (behavior)

Den medföljande MicroPython-kärnan uppdaterades från 1.13 till 1.15 (via 1.14). Standardbiblioteks- och språkbeteende följer upstream MicroPython 1.15; kontrollera igen skript som är beroende av versionsspecifikt beteende i micropython / standardmoduler.

Commits: 364eea6c7, 26c5376b0

Argumentet update_jpeg_buffer i ImageIO borttaget (minor)

ImageIO:s uppdatering av JPEG-buffert arbetades om för att härleda bufferten från bildkällargumentet, och det explicita argumentet update_jpeg_buffer togs bort. Skript som skickade update_jpeg_buffer till ImageIO måste ta bort det argumentet.

Commits: 5c6937bd1

Migreringschecklista

För en ren portning till v4.0.0 är det typiska arbetet:

  1. Ersätt all användning av det borttagna strömningsläget med det nya flerbuffrings-API:t sensor.set_framebuffers() (strömningsläge borttaget).

  2. Kontrollera anrop till sensor.set_windowing() igen mot den omarbetade, mer flexibla argumenthanteringen (fönstringsändringen).

  3. Validera om skript som är beroende av versionsspecifikt MicroPython-beteende mot MicroPython 1.15 (MicroPython-uppgraderingen).

  4. Ta bort argumentet update_jpeg_buffer från ImageIO-anrop (ImageIO-ändringen).

Alla andra skript körs oförändrade.