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ștelcdcu backend-uri unificateSPIDisplay/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:
lcd→display,lcd_touch→ft5x06, pini LED redenumiți — vedeți modificările incompatibile.
Funcționalități noi¶
Backend-uri pentru afișaj —
DisplayData(citire DDC/EDID), un serializator DVI/HDMITFP410, suport pentru afișaje MIPI-DSI pe STM32 H7, un drivercecpentru HDMI/DVI și o bibliotecă Pythondisplaycu un ajutor de inițializare pentru panoul RGBST7701.Atingere — nou driver de atingere capacitivă cu 5 puncte
GT911(read_points()/read_id()/reset()).Extensie
machine— o bibliotecămachinecare poate fi înghețată, cu o clasă ajutătoaremachine.LEDși o nouă metodămachine.LED.value([v]).Controale pentru senzor —
sensor.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 șisensor.disable_delays()pentru a omite întârzierile de stabilizare ale camerei, în vederea unei reconfigurări mai rapide.i.MX RT —
sensor.set_xclk_frequency()acceptă acum orice frecvență (ajustând-o la cel mai apropiat divizor CSI valid), iar modulele SPIlcd/tv/firau 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/vcvtppe Cortex-M4 (fast_floorf/fast_ceilf), o eroare de scalare in-place în conversiaimage.to_*()și coruperea cache-ului de desenare DMA2D.
Afișaj și sistem:
S-au corectat temporizarea afișajului DSI și modul portret,
micro_speechlisten()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.
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).
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:
Înlocuiți utilizarea
import lcdcu noul moduldisplayși backend-ul corespunzător (modificarea modulului display).Treceți de la
lcd_touchlaFT5X06, actualizați eventualele nume vechi de pini LED și reverificați API-urile driverelor IMU din amonte (modificările de atingere/pini/drivere).Înlocuiți
try/except RuntimeErrordin jurul controalelor de senzor neacceptate cu verificări de capabilitate (modificarea controlului de senzor).