v4.5.0

v4.5.0 is een belangrijke release. De oude lcd-module is vervangen door een uniforme display-module met afzonderlijke SPI- / parallelle / DSI- / TV-backends, het Arduino Giga-board is toegevoegd, en er is een golf aan functies voor display, touch en sensorbesturing bijgekomen. Er zijn enkele breaking changes — lees ze hieronder.

Hoogtepunten

  • Nieuwe display-module — vervangt lcd door uniforme SPIDisplay / RGBDisplay / DSIDisplay / TVDisplay backends.

  • Ondersteuning voor het Arduino Giga-board.

  • Nieuwe display-/touch-hardware — DSI-displays op STM32 H7, TFP410 DVI/HDMI, HDMI/DVI CEC, ST7701 RGB-panelen, en GT911 / FT5X06 capacitieve touch.

  • Nieuwe sensorbesturingen — black-level-kalibratie, nachtmodus, en sensor.disable_delays(); veel snellere transpose (~5x) en morfologie (~2,5x).

  • Breaking: lcddisplay, lcd_touchft5x06, hernoemde LED-pinnen — zie de breaking changes.

Nieuwe functies

  • Display-backendsDisplayData (DDC/EDID-uitlezing), een TFP410 DVI/HDMI-serializer, ondersteuning voor MIPI-DSI-displays op STM32 H7, een HDMI/DVI cec-driver, en een Python display-bibliotheek met een ST7701 RGB-paneel-init-helper.

  • Touch — nieuwe GT911 5-punts capacitieve touch-driver (read_points() / read_id() / reset()).

  • machine-uitbreiding — een freezable machine-bibliotheek met een machine.LED helper-klasse, en een nieuwe machine.LED.value([v])-methode.

  • Sensorbesturingensensor.set_auto_blc(enable, regs=None) / sensor.get_blc_regs() (black-level-kalibratie), IOCTL_SET_NIGHT_MODE / IOCTL_GET_NIGHT_MODE (OV7725/OV5640), OV7670 hmirror/vflip, en sensor.disable_delays() om instelvertragingen van de camera over te slaan voor snellere herconfiguratie.

  • i.MX RTsensor.set_xclk_frequency() accepteert nu elke frequentie (en kiest de dichtstbijzijnde geldige CSI-deler) en de SPI lcd / tv / fir-modules zijn ingeschakeld op de RT1060.

Overige wijzigingen en verbeteringen

  • Veel snellere afbeeldingsbewerkingen — de transpose van afbeeldingen is ~5x sneller en image.morph() is ~2,5x sneller.

  • De camera-bus-probe scant en valideert nu meerdere apparaatadressen, ter ondersteuning van boards met meerdere apparaten op de bus.

Bugfixes

Camera en sensoren:

  • Nauwkeurigheid van de versterkingsberekening hersteld voor veel sensoren (HM01B0, HM0360, MT9M114, MT9V0xx, OV2640, OV5640, OV7690, OV7725, OV9650, PAJ6100), MT9V0xx belichting / kolom-binning, OV5640 belichting, en OV7670 VGA-windowing.

  • STM32 laat nu beschadigde transpose-frames vallen in plaats van slechte afbeeldingen terug te geven.

Beeldverwerking:

  • Een integer-overflow hersteld die invloed had op image- / FIR- / ToF- / LCD- / TV-bewerkingen, ongeldige vcvtm/vcvtp floating-point-instructies op Cortex-M4 (fast_floorf/fast_ceilf), een in-place schalingsbug in de image.to_*()-conversie, en DMA2D-tekencachecorruptie.

Display en systeem:

  • DSI-displaytiming en portretmodus hersteld, micro_speech listen() op Nicla Vision / Portenta H7, de STM32-gebruikersschakelaar (pyb.Switch), en I2C4-busondersteuning.

Hardware- en boardondersteuning

  • Arduino Giga — nieuw board, met benoemde Arduino-pinmappings en een complete set voorbeelden.

  • OpenMV RT1060 — SPI-LCD-, TV- en FIR-thermische modules ingeschakeld.

  • Arduino Nano 33 BLE Sense — LED-pinnen.

Breaking API-wijzigingen

Voor de gebruiker zichtbare API-breaks tussen v4.4.3 en v4.5.0. Scope: Python C-modules in modules/ en Python-bibliotheken in scripts/libraries/.

Elke wijziging is getagd met de impact ervan:

  • major — de meeste scripts die het gebruikten, moeten worden aangepast.

  • minor — beperkte API; heeft alleen invloed op scripts die het gebruikten.

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

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

lcd-module vervangen door display (major)

De oude lcd-module is verwijderd en vervangen door een uniforme display-module die is opgesplitst in SPIDisplay (SPI-LCD-shield), RGBDisplay / parallel, DSIDisplay (MIPI-DSI), en TVDisplay backends met een gemeenschappelijke API. Scripts moeten overstappen van import lcd naar de display-module en het juiste backend-object construeren.

Commits: 227824aac, 6c6336829

Touch-module, LED-pinnen en meegeleverde drivers (minor)

De generieke lcd_touch-module is vervangen door een speciale FT5X06 capacitieve-touch-driver-module. LED-pinnamen zijn hernoemd voor consistentie op alle boards (scripts die naar de oude LED-pinnamen verwijzen, moeten worden bijgewerkt). De meegeleverde hts221 / lps22h / lsm6dsox / lsm9ds1 IMU-/sensordrivers zijn vervangen door de upstream micropython-lib-versies, waarvan de API’s licht afwijken (de meegeleverde voorbeelden zijn dienovereenkomstig bijgewerkt).

Commits: 86ad6dcdb, 9344c3b74, 2b5b7963b

Niet-ondersteunde sensorbesturingen waarschuwen nu (behavior)

sensor.set_auto_gain(), set_auto_exposure(), set_auto_whitebal() en set_auto_blc() printen nu een waarschuwing in plaats van een RuntimeError op te werpen wanneer de actieve sensor de besturing niet ondersteunt, zodat hetzelfde script kan draaien op sensoren met verschillende mogelijkheden. Code die afhankelijk was van het opvangen van de uitzondering, moet worden bijgewerkt.

Commit: dbf4996f2

Migratiechecklist

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

  1. Vervang het gebruik van import lcd door de nieuwe display-module en de juiste backend (de wijziging van de display-module).

  2. Schakel lcd_touch over naar FT5X06, werk eventuele oude LED-pinnamen bij, en controleer de upstream IMU-driver-API’s opnieuw (de touch-/pin-/driverwijzigingen).

  3. Vervang try/except RuntimeError rond niet-ondersteunde sensorbesturingen door capability-controles (de wijziging van de sensorbesturing).