v4.2.2

v4.2.2 aggiunge il supporto per le immagini PNG (decodifica/codifica tramite lodepng), un loader di modelli integrati basato su tabella, il supporto OV5640 per Portenta, un aggiornamento di Edge-Impulse TensorFlow e ulab 4.0. L’API di configurazione RPC CAN è cambiata — leggi le modifiche incompatibili qui sotto.

Punti salienti

  • Supporto PNGImage.to_png(), image.PNG e lettura/scrittura di file PNG.

  • tf.load_builtin_model() — modelli integrati basati su tabella che possono essere sostituiti o aggiunti in fase di build.

  • Portenta H7 — supporto per la camera OV5640 (con autofocus).

  • MicroPython/ulab — ulab aggiornato alla versione 4.0.0.

  • Incompatibile: l’API di configurazione RPC CAN è cambiata — vedi le modifiche incompatibili.

Nuove funzionalità

  • Formato immagine PNG — un nuovo metodo Image.to_png(), una costante image.PNG / PIXFORMAT_PNG, caricamento/salvataggio di file PNG (lettura/scrittura di .png) e output PNG nelle conversioni image.to(), tramite il codec lodepng integrato.

  • tf.load_builtin_model(path) — carica un modello integrato nel firmware e restituisce una tupla (labels, net); i modelli integrati sono ora basati su tabella, quindi possono essere sostituiti o aggiunti in fase di build.

Altre modifiche e miglioramenti

  • TensorFlow / Edge Impulse — la libreria di inferenza inclusa è stata aggiornata a Edge Impulse ei-V2.5.0, il modello person_detection è stato spostato nella tabella dei modelli integrati e gli operatori TensorFlow mancanti sono stati aggiunti in tutte le build Cortex-M0+/M4/M7/M55, così da poter eseguire più modelli Edge Impulse.

  • ulab aggiornato alla versione 4.0.0.

  • L’apertura della porta seriale virtuale USB a 1200 bps ora attiva un touch reset in stile Arduino verso il bootloader.

  • Il firmware del modulo WiFi WINC1500 è stato aggiornato alla versione 19.7.6 (con lo script di aggiornamento) e ora segnala la versione effettiva del driver host.

  • La porta RP2 stampa «MPY: soft reboot» e ha ottenuto l’init/de-init della UART.

Correzioni di bug

  • Corretta la dimensione del frame buffer grezzo dell’Arduino Nano RP2040 Connect e il Product ID USB dell’Arduino Nicla Vision (enumerazione USB corretta).

Hardware e supporto schede

  • Arduino Portenta H7 — supporto per la camera OV5640 (con autofocus); il GC2145 è disabilitato sulla Portenta.

  • Arduino Nano RP2040 Connect — configurazione della memoria e template per filesystem nuovo.

  • WiFi Shield (WINC1500) — firmware aggiornato alla versione 19.7.6.

Modifiche API incompatibili

Rotture dell’API visibili all’utente tra la v4.2.1 e la v4.2.2. Ambito: moduli C Python in modules/ e librerie Python in scripts/libraries/.

Ogni modifica è contrassegnata in base al suo impatto:

  • minore — API ristretta; interessa solo gli script che la usavano.

  • comportamento — stessa API, risultati diversi; ricontrolla gli script messi a punto.

Le modifiche sono raggruppate per impatto in quest’ordine. Ogni hash di commit rimanda al relativo diff su GitHub.

API di configurazione RPC CAN (minore)

Nella libreria rpc, l’argomento keyword CAN sampling_point di rpc_can_master / rpc_can_slave è stato rinominato in sample_point (per allinearsi a MicroPython upstream) e l’helper manuale per il bit-timing CAN è stato rimosso — il bus CAN viene ora configurato tramite CAN(..., baudrate=, sample_point=). Gli script che passavano sampling_point o che si basavano sul vecchio calcolo del bit-timing devono essere aggiornati.

Commit: b565eca58, 06d716986

image.format() e immagini compresse (comportamento)

Con il percorso unificato per le immagini compresse aggiunto per il PNG, image.format() ora restituisce PIXFORMAT_INVALID per un formato sconosciuto e l’indicizzazione / iterazione / stampa delle immagini compresse ora copre il PNG oltre al JPEG. Il codice che ispezionava il precedente valore di ritorno per i formati sconosciuti dovrebbe essere ricontrollato.

Commit: f12a4659c

Checklist di migrazione

Per un porting pulito alla v4.2.2: rinomina l’RPC CAN sampling_pointsample_point ed elimina qualsiasi configurazione manuale del bit-timing CAN (la modifica RPC CAN), e ricontrolla qualsiasi codice che ispezionava image.format() per i formati sconosciuti (la modifica di format()).