v4.0.0¶
v4.0.0 è la grande release v3 → v4. Introduce la moderna API di buffering multi-frame di sensor (double / triple buffering e un video FIFO), una callback di frame completato, un modulo Bluetooth (stack NimBLE) con supporto Portenta, il driver iniziale della camera MT9M114, la cattura camera scaricata su MDMA, il supporto Bayer/JPEG in image.draw_image() e un salto a MicroPython 1.15. La modalità di streaming legacy è stata rimossa e sensor.set_windowing() è stata rielaborata — leggi le modifiche incompatibili qui sotto.
Punti salienti¶
Buffering multi-frame —
sensoracquisisce double buffering, triple buffering e una modalità video-FIFO per frame rate più alti e fluidi.Callback di frame completato — registra una callback che si attiva quando un nuovo frame è pronto, per pipeline di cattura non bloccanti.
Bluetooth — un modulo
bluetoothcostruito sullo stack NimBLE, abilitato sull’Arduino Portenta H7 (con un esempio BLE).MT9M114 — driver iniziale del sensore camera.
Cattura più veloce — offload MDMA per la cattura dei dati della camera;
draw_image()accetta ora sorgenti/destinazioni Bayer e JPEG.MicroPython 1.15 — il MicroPython incluso è stato aggiornato da 1.13 a 1.15.
Incompatibile: la modalità di streaming legacy è stata rimossa e
sensor.set_windowing()è stata rielaborata — vedi le modifiche incompatibili.
Nuove funzionalità¶
Multi-buffering del sensore — aggiunti
sensor.set_framebuffers()/sensor.get_framebuffers()e le modalitàSINGLE_BUFFER/DOUBLE_BUFFER/TRIPLE_BUFFER/VIDEO_FIFO, oltre asensor.get_frame_available()per la cattura double, triple e video-FIFO.Callback di frame completato — aggiunta
sensor.set_frame_callback()in modo che una callback Python venga eseguita al termine di ogni nuovo frame.Bluetooth — aggiunto un modulo
bluetoothbasato sullo stack NimBLE (submodule NimBLE, driver CYW-BT), abilitato sull’Arduino Portenta H7 con un esempio BLE.MT9M114 — aggiunto il driver iniziale del sensore camera MT9M114.
draw_image — aggiunto il supporto al debayering e il supporto alla copia JPEG in modo che
image.draw_image()accetti immagini sorgente/destinazione Bayer e JPEG.Offload cattura MDMA — la cattura dei dati della camera è scaricata su MDMA per un throughput più elevato.
Un argomento di palette di colori può ora essere disabilitato passando
-1(poichéNoneè riservato come argomento valido).
Altre modifiche e miglioramenti¶
Passaggio alla nuova implementazione I2C software; allineamento con l’upstream MicroPython; configurazione ulab per scheda; moduli incorporati di base abilitati per OpenMV 2; locking più equo della lettura del frame buffer; supporto mutex esteso a Cortex-M0/M0+ con un timeout di lock.
Correzioni di bug¶
Camera e imaging:
Corretti l’affidabilità dell’inizializzazione del FLIR Lepton sulla scheda Pure Thermal, la gestione del buffer JPEG / della pausa di ImageIO, le impostazioni vflip/hmirror dell’HM01B0, il flush del buffer JPEG quando un’immagine viene invalidata e un flag
croppedche veniva impostato quando il framesize era non valido.
Sistema e connettività:
Corretti lo svuotamento dei comandi USB e il comando di reset-to-bootloader, l’inizializzazione del mutex, la sorgente di clock UART, la define del code-page di FatFS, la gestione degli ACK out-of-band del WINC1500, il debugging WiFi e il PID USB del Nano33; isolati i pad analogici dedicati.
Hardware e supporto schede¶
Sensore camera MT9M114 (driver iniziale).
Arduino Portenta H7 — Bluetooth abilitato (NimBLE) con un esempio BLE.
Arduino Nano RP2040 Connect / Nano 33 BLE Sense — flag di debug WiFi disabilitato dove non supportato; aggiunto esempio blinky; correzione del PID USB.
Modifiche incompatibili alle API¶
Modifiche incompatibili alle API visibili all’utente tra v3.9.4 e v4.0.0. Ambito: moduli C Python in modules/ e librerie Python in scripts/libraries/.
Ogni modifica è contrassegnata dal suo impatto:
major — interessa la maggior parte degli script; quasi certamente sarà necessario portare il codice.
minor — API ristretta; interessa solo gli script che la usavano.
behavior — stessa API, risultati diversi; ricontrolla gli script ottimizzati.
Le modifiche sono raggruppate per impatto in quest’ordine. Se vuoi solo portare il tuo codice, vai direttamente alla checklist di migrazione in fondo. Ogni hash di commit rimanda al suo diff su GitHub.
Modalità di streaming rimossa (major)¶
La modalità di streaming legacy del sensore è stata rimossa a favore della nuova API di buffering multi-frame. Il codice che abilitava la modalità di streaming deve passare a sensor.set_framebuffers() con DOUBLE_BUFFER / TRIPLE_BUFFER / VIDEO_FIFO e pilotare la cattura con sensor.snapshot() / sensor.get_frame_available().
Commit: a42f3a647
sensor.set_windowing() rielaborata (behavior)¶
sensor.set_windowing() è stata resa molto più flessibile: accetta ora più forme di argomenti (una tupla di regione, oppure larghezza/altezza centrate, oppure x, y, w, h) e risolve la finestra relativamente alla risoluzione corrente. Gli script che passavano gli argomenti di windowing nella vecchia forma fissa potrebbero selezionare una regione diversa e dovrebbero essere ricontrollati.
Commit: 3e9c43554
MicroPython 1.13 → 1.15 (behavior)¶
Il core MicroPython incluso è stato aggiornato da 1.13 a 1.15 (tramite 1.14). Il comportamento della libreria standard e del linguaggio segue l’upstream MicroPython 1.15; ricontrolla gli script che dipendono da comportamenti specifici della versione di micropython / dei moduli standard.
Argomento update_jpeg_buffer di ImageIO rimosso (minor)¶
L’aggiornamento del buffer JPEG di ImageIO è stato rielaborato per derivare il buffer dall’argomento immagine sorgente, e l’argomento esplicito update_jpeg_buffer è stato rimosso. Gli script che passavano update_jpeg_buffer a ImageIO devono eliminare quell’argomento.
Commit: 5c6937bd1
Checklist di migrazione¶
Per un porting pulito a v4.0.0 il lavoro tipico è:
Sostituisci qualsiasi uso della modalità di streaming rimossa con la nuova API di multi-buffering
sensor.set_framebuffers()(modalità di streaming rimossa).Ricontrolla le chiamate a
sensor.set_windowing()rispetto alla gestione degli argomenti rielaborata e più flessibile (la modifica del windowing).Rivalida gli script che dipendono da comportamenti specifici della versione di MicroPython rispetto a MicroPython 1.15 (l’aggiornamento di MicroPython).
Elimina l’argomento
update_jpeg_bufferdalle chiamate ImageIO (la modifica di ImageIO).
Tutti gli altri script funzionano senza modifiche.