v4.5.0

v4.5.0 è una release importante. Il vecchio modulo lcd è stato sostituito da un modulo display unificato con backend SPI / parallelo / DSI / TV separati, è stato aggiunto il supporto alla scheda Arduino Giga ed è arrivata un’ondata di funzionalità per display, touch e controllo del sensore. Sono presenti diverse modifiche non retrocompatibili — leggile di seguito.

In evidenza

  • Nuovo modulo display — sostituisce lcd con backend unificati SPIDisplay / RGBDisplay / DSIDisplay / TVDisplay.

  • Supporto alla scheda Arduino Giga.

  • Nuovo hardware display/touch — display DSI su STM32 H7, serializzatore DVI/HDMI TFP410, CEC HDMI/DVI, pannelli RGB ST7701 e touch capacitivo GT911 / FT5X06.

  • Nuovi controlli del sensore — calibrazione del livello di nero, modalità notturna e sensor.disable_delays(); transpose molto più veloce (~5x) e morfologia (~2,5x).

  • Modifica non retrocompatibile: lcddisplay, lcd_touchft5x06, pin dei LED rinominati — vedi le modifiche non retrocompatibili.

Nuove funzionalità

  • Backend displayDisplayData (lettura DDC/EDID), un serializzatore DVI/HDMI TFP410, supporto display MIPI-DSI su STM32 H7, un driver cec HDMI/DVI e una libreria Python display con un helper di inizializzazione per i pannelli RGB ST7701.

  • Touch — nuovo driver touch capacitivo a 5 punti GT911 (read_points() / read_id() / reset()).

  • Estensione machine — una libreria machine freezable con una classe helper machine.LED e un nuovo metodo machine.LED.value([v]).

  • Controlli del sensoresensor.set_auto_blc(enable, regs=None) / sensor.get_blc_regs() (calibrazione del livello di nero), IOCTL_SET_NIGHT_MODE / IOCTL_GET_NIGHT_MODE (OV7725/OV5640), hmirror/vflip per OV7670 e sensor.disable_delays() per saltare i ritardi di stabilizzazione della camera ed ottenere una riconfigurazione più rapida.

  • i.MX RTsensor.set_xclk_frequency() ora accetta qualsiasi frequenza (arrotondando al divisore CSI valido più vicino) e i moduli SPI lcd / tv / fir sono stati abilitati sull’RT1060.

Altre modifiche e miglioramenti

  • Operazioni sulle immagini molto più veloci — il transpose delle immagini è ~5x più veloce e image.morph() è ~2,5x più veloce.

  • Il rilevamento del bus della camera ora analizza e convalida più indirizzi di dispositivo, supportando schede con diversi dispositivi sul bus.

Correzioni di bug

Camera e sensori:

  • Corretta l’accuratezza del calcolo del guadagno su molti sensori (HM01B0, HM0360, MT9M114, MT9V0xx, OV2640, OV5640, OV7690, OV7725, OV9650, PAJ6100), l’esposizione / il binning di colonna dell’MT9V0xx, l’esposizione dell’OV5640 e il windowing VGA dell’OV7670.

  • STM32 ora scarta i frame transpose corrotti invece di restituire immagini errate.

Elaborazione delle immagini:

  • Corretto un overflow di interi che interessava le operazioni image / FIR / ToF / LCD / TV, le istruzioni floating-point non valide vcvtm/vcvtp su Cortex-M4 (fast_floorf/fast_ceilf), un bug di scaling in-place nella conversione image.to_*() e la corruzione della cache di disegno DMA2D.

Display e sistema:

  • Corretti il timing e la modalità verticale dei display DSI, listen() di micro_speech su Nicla Vision / Portenta H7, l’interruttore utente STM32 (pyb.Switch) e il supporto del bus I2C4.

Hardware e supporto schede

  • Arduino Giga — nuova scheda, con mappature dei pin Arduino denominate e un set completo di esempi.

  • OpenMV RT1060 — moduli LCD SPI, TV e termico FIR abilitati.

  • Arduino Nano 33 BLE Sense — pin dei LED.

Modifiche API non retrocompatibili

Modifiche API visibili all’utente tra la v4.4.3 e la v4.5.0. Ambito: moduli C Python in modules/ e librerie Python in scripts/libraries/.

Ogni modifica è contrassegnata in base al suo impatto:

  • major — la maggior parte degli script che lo utilizzavano necessita di modifiche.

  • minor — API ristretta; interessa solo gli script che la utilizzavano.

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

Le modifiche sono raggruppate per impatto in quell’ordine. Se vuoi solo portare il tuo codice, salta alla checklist di migrazione alla fine. Ogni hash di commit rimanda al relativo diff su GitHub.

Modulo lcd sostituito da display (major)

Il vecchio modulo lcd è stato rimosso e sostituito da un modulo display unificato suddiviso nei backend SPIDisplay (shield LCD SPI), RGBDisplay / parallelo, DSIDisplay (MIPI-DSI) e TVDisplay con un’API comune. Gli script devono passare da import lcd al modulo display e costruire l’oggetto backend appropriato.

Commit: 227824aac, 6c6336829

Modulo touch, pin dei LED e driver inclusi (minor)

Il modulo generico lcd_touch è stato sostituito da un modulo driver touch capacitivo dedicato FT5X06. I nomi dei pin dei LED sono stati rinominati per coerenza su tutte le schede (gli script che fanno riferimento ai vecchi nomi dei pin dei LED devono essere aggiornati). I driver IMU/sensore inclusi hts221 / lps22h / lsm6dsox / lsm9ds1 sono stati sostituiti con le versioni upstream di micropython-lib, le cui API differiscono leggermente (gli esempi inclusi sono stati aggiornati di conseguenza).

Commit: 86ad6dcdb, 9344c3b74, 2b5b7963b

I controlli del sensore non supportati ora emettono un avviso (behavior)

sensor.set_auto_gain(), set_auto_exposure(), set_auto_whitebal() e set_auto_blc() ora stampano un avviso invece di sollevare un RuntimeError quando il sensore attivo non supporta il controllo, così lo stesso script può funzionare su sensori con capacità diverse. Il codice che si basava sulla cattura dell’eccezione deve essere aggiornato.

Commit: dbf4996f2

Checklist di migrazione

Per un porting pulito alla v4.5.0 il lavoro tipico è:

  1. Sostituire l’uso di import lcd con il nuovo modulo display e il backend appropriato (la modifica al modulo display).

  2. Passare da lcd_touch a FT5X06, aggiornare eventuali vecchi nomi dei pin dei LED e ricontrollare le API dei driver IMU upstream (le modifiche a touch/pin/driver).

  3. Sostituire try/except RuntimeError attorno ai controlli del sensore non supportati con verifiche delle capacità (la modifica ai controlli del sensore).