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-cadrusensor câș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 bluetooth construit 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 modurile SINGLE_BUFFER / DOUBLE_BUFFER / TRIPLE_BUFFER / VIDEO_FIFO, plus sensor.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 bluetooth susț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 (deoarece None este 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 cropped care 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.

Commit-uri: 364eea6c7, 26c5376b0

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:

  1. Înlocuiește orice utilizare a modului de streaming eliminat cu noul API de tamponare multiplă sensor.set_framebuffers() (modul de streaming eliminat).

  2. Reverifică apelurile sensor.set_windowing() în raport cu gestionarea reproiectată, mai flexibilă, a argumentelor (modificarea de fereastră).

  3. Revalidează scripturile care depind de comportamentul specific versiunii al MicroPython în raport cu MicroPython 1.15 (saltul MicroPython).

  4. Renunță la argumentul update_jpeg_buffer din apelurile ImageIO (modificarea ImageIO).

Toate celelalte scripturi rulează neschimbate.