v4.5.0

v4.5.0 este o versiune majoră. Vechiul modul lcd a fost înlocuit cu un modul display unificat, cu backend-uri separate SPI / paralel / DSI / TV, a fost adăugată placa Arduino Giga și a sosit un val de funcționalități pentru afișaje, atingere și control al senzorilor. Există mai multe modificări incompatibile — citiți-le mai jos.

Puncte importante

  • Noul modul display — înlocuiește lcd cu backend-uri unificate SPIDisplay / RGBDisplay / DSIDisplay / TVDisplay.

  • Suport pentru placa Arduino Giga.

  • Hardware nou pentru afișaj/atingere — afișaje DSI pe STM32 H7, TFP410 DVI/HDMI, CEC pentru HDMI/DVI, panouri RGB ST7701 și atingere capacitivă GT911 / FT5X06.

  • Noi controale pentru senzor — calibrarea nivelului de negru, modul de noapte și sensor.disable_delays(); transpunere mult mai rapidă (~5x) și morfologie (~2,5x).

  • Incompatibil: lcddisplay, lcd_touchft5x06, pini LED redenumiți — vedeți modificările incompatibile.

Funcționalități noi

  • Backend-uri pentru afișajDisplayData (citire DDC/EDID), un serializator DVI/HDMI TFP410, suport pentru afișaje MIPI-DSI pe STM32 H7, un driver cec pentru HDMI/DVI și o bibliotecă Python display cu un ajutor de inițializare pentru panoul RGB ST7701.

  • Atingere — nou driver de atingere capacitivă cu 5 puncte GT911 (read_points() / read_id() / reset()).

  • Extensie machine — o bibliotecă machine care poate fi înghețată, cu o clasă ajutătoare machine.LED și o nouă metodă machine.LED.value([v]).

  • Controale pentru senzorsensor.set_auto_blc(enable, regs=None) / sensor.get_blc_regs() (calibrarea nivelului de negru), IOCTL_SET_NIGHT_MODE / IOCTL_GET_NIGHT_MODE (OV7725/OV5640), hmirror/vflip pentru OV7670 și sensor.disable_delays() pentru a omite întârzierile de stabilizare ale camerei, în vederea unei reconfigurări mai rapide.

  • i.MX RTsensor.set_xclk_frequency() acceptă acum orice frecvență (ajustând-o la cel mai apropiat divizor CSI valid), iar modulele SPI lcd / tv / fir au fost activate pe RT1060.

Alte modificări și îmbunătățiri

  • Operații pe imagini mult mai rapide — transpunerea imaginilor este de ~5x mai rapidă, iar image.morph() este de ~2,5x mai rapidă.

  • Sondarea magistralei camerei scanează și validează acum mai multe adrese de dispozitive, oferind suport pentru plăci cu mai multe dispozitive pe magistrală.

Corectări de erori

Cameră și senzori:

  • S-a corectat acuratețea calculului amplificării (gain) pentru numeroși senzori (HM01B0, HM0360, MT9M114, MT9V0xx, OV2640, OV5640, OV7690, OV7725, OV9650, PAJ6100), expunerea / binning-ul pe coloane la MT9V0xx, expunerea la OV5640 și fereastra VGA la OV7670.

  • STM32 elimină acum cadrele de transpunere corupte în loc să returneze imagini eronate.

Procesare de imagini:

  • S-a corectat o depășire de întreg (integer overflow) care afecta operațiile pe imagini / FIR / ToF / LCD / TV, instrucțiunile invalide în virgulă mobilă vcvtm/vcvtp pe Cortex-M4 (fast_floorf/fast_ceilf), o eroare de scalare in-place în conversia image.to_*() și coruperea cache-ului de desenare DMA2D.

Afișaj și sistem:

  • S-au corectat temporizarea afișajului DSI și modul portret, micro_speech listen() pe Nicla Vision / Portenta H7, comutatorul de utilizator STM32 (pyb.Switch) și suportul pentru magistrala I2C4.

Suport hardware și plăci

  • Arduino Giga — placă nouă, cu mapări denumite ale pinilor Arduino și un set complet de exemple.

  • OpenMV RT1060 — module SPI LCD, TV și FIR termic activate.

  • Arduino Nano 33 BLE Sense — pini LED.

Modificări incompatibile de API

Modificări de API vizibile pentru utilizator între v4.4.3 și v4.5.0. Domeniu: module C Python din modules/ și biblioteci Python din scripts/libraries/.

Fiecare modificare este etichetată cu impactul său:

  • major — majoritatea scripturilor care îl foloseau necesită modificări.

  • minor — API restrâns; afectează doar scripturile care îl foloseau.

  • comportament — același API, rezultate diferite; reverificați scripturile reglate fin.

Modificările sunt grupate după impact în această ordine. Dacă doriți doar să vă portați codul, săriți la lista de verificare pentru migrare de la final. Fiecare hash de commit trimite către diff-ul său pe GitHub.

Modulul lcd înlocuit de display (major)

Vechiul modul lcd a fost eliminat și înlocuit cu un modul display unificat, împărțit în backend-urile SPIDisplay (shield LCD SPI), RGBDisplay / paralel, DSIDisplay (MIPI-DSI) și TVDisplay, cu un API comun. Scripturile trebuie să treacă de la import lcd la modulul display și să construiască obiectul de backend corespunzător.

Commit-uri: 227824aac, 6c6336829

Modul de atingere, pini LED și drivere incluse (minor)

Modulul generic lcd_touch a fost înlocuit cu un modul dedicat driver de atingere capacitivă FT5X06. Numele pinilor LED au fost redenumite pentru consecvență pe toate plăcile (scripturile care fac referire la vechile nume de pini LED trebuie actualizate). Driverele IMU/senzor incluse hts221 / lps22h / lsm6dsox / lsm9ds1 au fost înlocuite cu versiunile din amonte (upstream) micropython-lib, ale căror API-uri diferă ușor (exemplele incluse au fost actualizate corespunzător).

Commit-uri: 86ad6dcdb, 9344c3b74, 2b5b7963b

Controalele de senzor neacceptate emit acum un avertisment (comportament)

sensor.set_auto_gain(), set_auto_exposure(), set_auto_whitebal() și set_auto_blc() afișează acum un avertisment în loc să genereze o eroare RuntimeError atunci când senzorul activ nu acceptă controlul respectiv, astfel încât același script să poată rula pe senzori cu capabilități diferite. Codul care se baza pe capturarea excepției trebuie actualizat.

Commit: dbf4996f2

Listă de verificare pentru migrare

Pentru o portare curată la v4.5.0, munca tipică este:

  1. Înlocuiți utilizarea import lcd cu noul modul display și backend-ul corespunzător (modificarea modulului display).

  2. Treceți de la lcd_touch la FT5X06, actualizați eventualele nume vechi de pini LED și reverificați API-urile driverelor IMU din amonte (modificările de atingere/pini/drivere).

  3. Înlocuiți try/except RuntimeError din jurul controalelor de senzor neacceptate cu verificări de capabilitate (modificarea controlului de senzor).