v4.0.0

v4.0.0 is de grote v3 → v4-release. Het introduceert de moderne multi-frame sensor-bufferings-API (dubbele / driedubbele buffering en een video-FIFO), een frame-complete-callback, een Bluetooth-module (NimBLE-stack) met Portenta-ondersteuning, de eerste MT9M114-cameradriver, MDMA-offloaded cameraopname, Bayer/JPEG-ondersteuning in image.draw_image() en een sprong naar MicroPython 1.15. De verouderde streamingmodus is verwijderd en sensor.set_windowing() is herwerkt — lees de ingrijpende wijzigingen hieronder.

Hoogtepunten

  • Multi-frame-bufferingsensor krijgt dubbele buffering, driedubbele buffering en een video-FIFO-modus voor hogere, soepelere framesnelheden.

  • Frame-complete-callback — registreer een callback die afgaat zodra een nieuw frame klaar is, voor niet-blokkerende opnamepijplijnen.

  • Bluetooth — een bluetooth-module gebouwd op de NimBLE-stack, ingeschakeld op de Arduino Portenta H7 (met een BLE-voorbeeld).

  • MT9M114 — eerste camerasensordriver.

  • Snellere opname — MDMA-offload voor camera-data-opname; draw_image() accepteert nu Bayer- en JPEG-bronnen/-bestemmingen.

  • MicroPython 1.15 — de meegeleverde MicroPython is bijgewerkt van 1.13 naar 1.15.

  • Ingrijpend: de verouderde streamingmodus is verwijderd en sensor.set_windowing() is herwerkt — zie de ingrijpende wijzigingen.

Nieuwe functies

  • Sensor-multi-bufferingsensor.set_framebuffers() / sensor.get_framebuffers() en de modi SINGLE_BUFFER / DOUBLE_BUFFER / TRIPLE_BUFFER / VIDEO_FIFO toegevoegd, plus sensor.get_frame_available() voor dubbele, driedubbele en video-FIFO-opname.

  • Frame-complete-callbacksensor.set_frame_callback() toegevoegd zodat een Python-callback draait wanneer elk nieuw frame klaar is.

  • Bluetooth — een bluetooth-module toegevoegd, gebaseerd op de NimBLE-stack (NimBLE-submodule, CYW-BT-driver), ingeschakeld op de Arduino Portenta H7 met een BLE-voorbeeld.

  • MT9M114 — de eerste MT9M114-camerasensordriver toegevoegd.

  • draw_image — debayering-ondersteuning en JPEG-kopieerondersteuning toegevoegd zodat image.draw_image() Bayer- en JPEG-bron-/bestemmingsafbeeldingen accepteert.

  • MDMA-opname-offload — camera-data-opname wordt naar MDMA geoffload voor hogere doorvoer.

  • Een kleurenpalet-argument kan nu worden uitgeschakeld door -1 door te geven (aangezien None is gereserveerd als een geldig argument).

Overige wijzigingen en verbeteringen

  • Overgeschakeld naar de nieuwe software-I2C-implementatie; afgestemd op de MicroPython-upstream; ulab-configuratie per board; basis-ingebouwde modules ingeschakeld voor OpenMV 2; eerlijkere frame buffer-uitleesvergrendeling; mutex-ondersteuning uitgebreid naar Cortex-M0/M0+ met een lock-timeout.

Bugfixes

Camera en beeldverwerking:

  • De FLIR Lepton-init-betrouwbaarheid op het Pure Thermal-board, de ImageIO JPEG-buffer-/pauzeafhandeling, de HM01B0 vflip/hmirror-instellingen, de JPEG-bufferflush wanneer een afbeelding ongeldig wordt gemaakt en een cropped-flag die werd gezet wanneer de framesize ongeldig was, gerepareerd.

Systeem en connectiviteit:

  • Het legen van de USB-command en het reset-to-bootloader-command, de mutex-init, de UART-klokbron, de FatFS-codepage-define, de WINC1500 out-of-band ACK-afhandeling, WiFi-debugging en de Nano33 USB-PID gerepareerd; toegewijde analoge pads geïsoleerd.

Hardware- en boardondersteuning

  • MT9M114-camerasensor (eerste driver).

  • Arduino Portenta H7 — Bluetooth ingeschakeld (NimBLE) met een BLE-voorbeeld.

  • Arduino Nano RP2040 Connect / Nano 33 BLE Sense — WiFi-debug-flag uitgeschakeld waar niet ondersteund; blinky-voorbeeld toegevoegd; USB-PID-fix.

Ingrijpende API-wijzigingen

Voor de gebruiker zichtbare API-wijzigingen tussen v3.9.4 en v4.0.0. Scope: Python C-modules in modules/ en Python-bibliotheken in scripts/libraries/.

Elke wijziging is gemarkeerd met de impact ervan:

  • major — treft de meeste scripts; je zult vrijwel zeker code moeten porten.

  • minor — beperkte API; treft alleen scripts die het gebruikten.

  • behavior — dezelfde API, andere resultaten; controleer afgestelde scripts opnieuw.

Wijzigingen zijn in die volgorde gegroepeerd op impact. Als je alleen je code wilt porten, ga dan naar de migratiechecklist aan het eind. Elke commit-hash linkt naar de bijbehorende diff op GitHub.

Streamingmodus verwijderd (major)

De verouderde sensor-streamingmodus is verwijderd ten gunste van de nieuwe multi-frame-bufferings-API. Code die de streamingmodus inschakelde, moet overschakelen naar sensor.set_framebuffers() met DOUBLE_BUFFER / TRIPLE_BUFFER / VIDEO_FIFO en de opname aansturen met sensor.snapshot() / sensor.get_frame_available().

Commits: a42f3a647

sensor.set_windowing() herwerkt (behavior)

sensor.set_windowing() is veel flexibeler gemaakt: het accepteert nu meerdere argumentvormen (een regio-tuple, of gecentreerde breedte/hoogte, of x, y, w, h) en bepaalt het venster relatief aan de huidige resolutie. Scripts die windowing-argumenten in de oude vaste vorm doorgaven, kunnen een andere regio selecteren en moeten opnieuw worden gecontroleerd.

Commits: 3e9c43554

MicroPython 1.13 → 1.15 (behavior)

De meegeleverde MicroPython-kern is bijgewerkt van 1.13 naar 1.15 (via 1.14). Het gedrag van de standaardbibliotheek en de taal volgt de upstream MicroPython 1.15; controleer scripts opnieuw die afhankelijk zijn van versiespecifiek micropython- / standaardmodulegedrag.

Commits: 364eea6c7, 26c5376b0

ImageIO-argument update_jpeg_buffer verwijderd (minor)

De ImageIO JPEG-bufferupdate is herwerkt om de buffer af te leiden uit het afbeeldingsbron-argument, en het expliciete update_jpeg_buffer-argument is verwijderd. Scripts die update_jpeg_buffer aan ImageIO doorgaven, moeten dat argument laten vallen.

Commits: 5c6937bd1

Migratiechecklist

Voor een schone port naar v4.0.0 is het typische werk:

  1. Vervang elk gebruik van de verwijderde streamingmodus door de nieuwe sensor.set_framebuffers()-multi-bufferings-API (streamingmodus verwijderd).

  2. Controleer sensor.set_windowing()-aanroepen opnieuw tegen de herwerkte, flexibelere argumentafhandeling (de windowing-wijziging).

  3. Valideer scripts die afhankelijk zijn van versiespecifiek MicroPython-gedrag opnieuw tegen MicroPython 1.15 (de MicroPython-upgrade).

  4. Laat het update_jpeg_buffer-argument vallen uit ImageIO-aanroepen (de ImageIO-wijziging).

Alle andere scripts draaien ongewijzigd.