v4.0.0¶
v4.0.0 este versiunea majoră v3 → v4. Introduce API-ul modern de tamponare multi-cadru sensor (tamponare dublă / triplă și un FIFO video), o funcție de retroapelare la finalizarea cadrului, un modul Bluetooth (stiva NimBLE) cu suport Portenta, driverul inițial de cameră MT9M114, capturarea camerei transferată către MDMA, suport Bayer/JPEG în image.draw_image() și un salt la MicroPython 1.15. Modul de streaming vechi a fost eliminat, iar sensor.set_windowing() a fost reproiectat — citește modificările incompatibile de mai jos.
Aspecte importante¶
Tamponare multi-cadru —
sensorcâștigă tamponare dublă, tamponare triplă și un mod FIFO video pentru rate de cadre mai mari și mai fluide.Funcție de retroapelare la finalizarea cadrului — înregistrează o funcție de retroapelare care se declanșează când un nou cadru este gata, pentru pipeline-uri de capturare neblocante.
Bluetooth — un modul
bluetoothconstruit pe stiva NimBLE, activat pe Arduino Portenta H7 (cu un exemplu BLE).MT9M114 — driver inițial de senzor de cameră.
Capturare mai rapidă — transfer MDMA pentru capturarea datelor camerei;
draw_image()acceptă acum surse/destinații Bayer și JPEG.MicroPython 1.15 — MicroPython-ul inclus a fost actualizat de la 1.13 la 1.15.
Incompatibil: modul de streaming vechi a fost eliminat, iar
sensor.set_windowing()a fost reproiectat — vezi modificările incompatibile.
Funcții noi¶
Tamponare multiplă a senzorului — s-au adăugat
sensor.set_framebuffers()/sensor.get_framebuffers()și modurileSINGLE_BUFFER/DOUBLE_BUFFER/TRIPLE_BUFFER/VIDEO_FIFO, plussensor.get_frame_available()pentru capturare dublă, triplă și FIFO video.Funcție de retroapelare la finalizarea cadrului — s-a adăugat
sensor.set_frame_callback()astfel încât o funcție de retroapelare Python să ruleze la finalizarea fiecărui cadru nou.Bluetooth — s-a adăugat un modul
bluetoothsusținut de stiva NimBLE (submodul NimBLE, driver CYW-BT), activat pe Arduino Portenta H7 cu un exemplu BLE.MT9M114 — s-a adăugat driverul inițial de senzor de cameră MT9M114.
draw_image — s-a adăugat suport de debayering și suport de copiere JPEG, astfel încât
image.draw_image()acceptă imagini sursă/destinație Bayer și JPEG.Transfer de capturare MDMA — capturarea datelor camerei este transferată către MDMA pentru un debit mai mare.
Un argument de paletă de culori poate fi acum dezactivat trimițând
-1(deoareceNoneeste rezervat ca argument valid).
Alte modificări și îmbunătățiri¶
S-a trecut la noua implementare software I2C; s-a aliniat cu upstream-ul MicroPython; configurare ulab per-placă; module de bază integrate activate pentru OpenMV 2; blocare mai echitabilă a citirii tamponului de cadre (frame buffer); suport mutex extins la Cortex-M0/M0+ cu un timeout de blocare.
Remedieri de erori¶
Cameră și imagistică:
S-au remediat fiabilitatea inițializării FLIR Lepton pe placa Pure Thermal, gestionarea tamponului JPEG / a pauzei în ImageIO, setările vflip/hmirror HM01B0, golirea tamponului JPEG la invalidarea unei imagini și un indicator
croppedcare era setat când dimensiunea cadrului era invalidă.
Sistem și conectivitate:
S-au remediat drenarea comenzii USB și comanda de resetare către bootloader, inițializarea mutex, sursa de ceas UART, definiția code-page FatFS, gestionarea ACK în afara benzii WINC1500, depanarea WiFi și PID-ul USB al Nano33; s-au izolat pad-urile analogice dedicate.
Hardware și suport pentru plăci¶
Senzor de cameră MT9M114 (driver inițial).
Arduino Portenta H7 — Bluetooth activat (NimBLE) cu un exemplu BLE.
Arduino Nano RP2040 Connect / Nano 33 BLE Sense — indicatorul de depanare WiFi dezactivat unde nu este acceptat; s-a adăugat un exemplu blinky; remediere PID USB.
Modificări incompatibile ale API-ului¶
Modificări incompatibile ale API-ului vizibile pentru utilizator între v3.9.4 și v4.0.0. Domeniu: module C Python în modules/ și biblioteci Python în scripts/libraries/.
Fiecare modificare este etichetată cu impactul său:
major — afectează majoritatea scripturilor; aproape sigur va trebui să-ți portezi codul.
minor — API restrâns; afectează doar scripturile care îl foloseau.
comportament — același API, rezultate diferite; reverifică scripturile reglate.
Modificările sunt grupate în ordinea impactului. Dacă vrei doar să-ți portezi codul, sari la lista de verificare pentru migrare de la final. Fiecare hash de commit trimite la diff-ul său pe GitHub.
Modul de streaming eliminat (major)¶
Modul de streaming vechi al senzorului a fost eliminat în favoarea noului API de tamponare multi-cadru. Codul care activa modul de streaming trebuie să treacă la sensor.set_framebuffers() cu DOUBLE_BUFFER / TRIPLE_BUFFER / VIDEO_FIFO și să conducă capturarea cu sensor.snapshot() / sensor.get_frame_available() în schimb.
Commit-uri: a42f3a647
sensor.set_windowing() reproiectat (comportament)¶
sensor.set_windowing() a fost făcut mult mai flexibil: acceptă acum mai multe forme de argumente (un tuplu de regiune, sau lățime/înălțime centrate, sau x, y, w, h) și rezolvă fereastra în raport cu rezoluția curentă. Scripturile care trimiteau argumente de fereastră în vechea formă fixă pot selecta o regiune diferită și ar trebui reverificate.
Commit-uri: 3e9c43554
MicroPython 1.13 → 1.15 (comportament)¶
Nucleul MicroPython inclus a fost actualizat de la 1.13 la 1.15 (prin 1.14). Comportamentul bibliotecii standard și al limbajului urmează upstream-ul MicroPython 1.15; reverifică scripturile care depind de comportamentul specific versiunii al micropython / modulelor standard.
Argumentul ImageIO update_jpeg_buffer eliminat (minor)¶
Actualizarea tamponului JPEG ImageIO a fost reproiectată pentru a deriva tamponul din argumentul sursă al imaginii, iar argumentul explicit update_jpeg_buffer a fost eliminat. Scripturile care trimiteau update_jpeg_buffer către ImageIO trebuie să renunțe la acel argument.
Commit-uri: 5c6937bd1
Lista de verificare pentru migrare¶
Pentru o portare curată la v4.0.0, munca tipică este:
Înlocuiește orice utilizare a modului de streaming eliminat cu noul API de tamponare multiplă
sensor.set_framebuffers()(modul de streaming eliminat).Reverifică apelurile
sensor.set_windowing()în raport cu gestionarea reproiectată, mai flexibilă, a argumentelor (modificarea de fereastră).Revalidează scripturile care depind de comportamentul specific versiunii al MicroPython în raport cu MicroPython 1.15 (saltul MicroPython).
Renunță la argumentul
update_jpeg_bufferdin apelurile ImageIO (modificarea ImageIO).
Toate celelalte scripturi rulează neschimbate.