v4.0.0

v4.0.0 adalah rilis besar v3 → v4. Rilis ini memperkenalkan API buffering sensor multi-bingkai modern (double / triple buffering dan video FIFO), callback frame selesai, modul Bluetooth (stack NimBLE) dengan dukungan Portenta, driver kamera MT9M114 awal, capture kamera yang di-offload ke MDMA, dukungan Bayer/JPEG di image.draw_image(), dan lompatan ke MicroPython 1.15. Mode streaming lama telah dihapus dan sensor.set_windowing() telah dirombak — baca perubahan yang merusak di bawah ini.

Sorotan

  • Multi-frame bufferingsensor mendapatkan double buffering, triple buffering, dan mode video-FIFO untuk frame rate yang lebih tinggi dan lebih halus.

  • Callback frame selesai — daftarkan callback yang dipanggil saat bingkai baru siap, untuk pipeline capture non-blocking.

  • Bluetooth — modul bluetooth yang dibangun di atas stack NimBLE, diaktifkan pada Arduino Portenta H7 (dengan contoh BLE).

  • MT9M114 — driver sensor kamera awal.

  • Capture lebih cepat — offload MDMA untuk capture data kamera; draw_image() kini menerima sumber/tujuan Bayer dan JPEG.

  • MicroPython 1.15 — MicroPython yang disertakan diperbarui dari 1.13 ke 1.15.

  • Merusak: mode streaming lama telah dihapus dan sensor.set_windowing() telah dirombak — lihat perubahan yang merusak.

Fitur baru

  • Multi-buffering Sensor — menambahkan sensor.set_framebuffers() / sensor.get_framebuffers() dan mode SINGLE_BUFFER / DOUBLE_BUFFER / TRIPLE_BUFFER / VIDEO_FIFO, beserta sensor.get_frame_available() untuk capture double, triple, dan video-FIFO.

  • Callback frame selesai — menambahkan sensor.set_frame_callback() sehingga callback Python berjalan saat setiap bingkai baru selesai.

  • Bluetooth — menambahkan modul bluetooth yang didukung oleh stack NimBLE (submodul NimBLE, driver CYW-BT), diaktifkan pada Arduino Portenta H7 dengan contoh BLE.

  • MT9M114 — menambahkan driver sensor kamera MT9M114 awal.

  • draw_image — menambahkan dukungan debayering dan dukungan copy JPEG sehingga image.draw_image() menerima citra sumber/tujuan Bayer dan JPEG.

  • Offload capture MDMA — capture data kamera di-offload ke MDMA untuk throughput yang lebih tinggi.

  • Argumen color-palette kini dapat dinonaktifkan dengan meneruskan -1 (karena None dicadangkan sebagai argumen yang valid).

Perubahan dan peningkatan lainnya

  • Beralih ke implementasi software I2C baru; diselaraskan dengan upstream MicroPython; konfigurasi ulab per-papan; modul built-in dasar diaktifkan untuk OpenMV 2; penguncian readout frame-buffer yang lebih adil; dukungan mutex diperluas ke Cortex-M0/M0+ dengan batas waktu lock.

Perbaikan bug

Kamera dan pencitraan:

  • Memperbaiki keandalan init FLIR Lepton pada papan Pure Thermal, penanganan buffer/jeda ImageIO JPEG, pengaturan vflip/hmirror HM01B0, flush buffer JPEG saat citra tidak valid, dan flag cropped yang diatur saat framesize tidak valid.

Sistem dan konektivitas:

  • Memperbaiki draining perintah USB dan perintah reset-to-bootloader, init mutex, sumber clock UART, definisi code-page FatFS, penanganan ACK out-of-band WINC1500, debug WiFi, dan USB PID Nano33; mengisolasi pad analog khusus.

Dukungan perangkat keras dan papan

  • Sensor kamera MT9M114 (driver awal).

  • Arduino Portenta H7 — Bluetooth diaktifkan (NimBLE) dengan contoh BLE.

  • Arduino Nano RP2040 Connect / Nano 33 BLE Sense — flag wifi-debug dinonaktifkan jika tidak didukung; contoh blinky ditambahkan; perbaikan USB PID.

Perubahan API yang merusak

Perubahan API yang terlihat oleh pengguna antara v3.9.4 dan v4.0.0. Cakupan: Python C-modules di modules/ dan library Python di scripts/libraries/.

Setiap perubahan ditandai dengan dampaknya:

  • major — memengaruhi sebagian besar skrip; Anda hampir pasti perlu melakukan porting kode.

  • minor — API sempit; hanya memengaruhi skrip yang menggunakannya.

  • behavior — API sama, hasil berbeda; periksa kembali skrip yang telah distel.

Perubahan dikelompokkan berdasarkan dampak dalam urutan tersebut. Jika Anda hanya ingin melakukan porting kode, lompat ke daftar periksa migrasi di akhir. Setiap hash commit terhubung ke diff-nya di GitHub.

Mode streaming dihapus (major)

Mode streaming sensor lama dihapus demi API multi-frame buffering baru. Kode yang mengaktifkan mode streaming harus beralih ke sensor.set_framebuffers() dengan DOUBLE_BUFFER / TRIPLE_BUFFER / VIDEO_FIFO dan menggerakkan capture dengan sensor.snapshot() / sensor.get_frame_available() sebagai gantinya.

Commits: a42f3a647

sensor.set_windowing() dirombak (behavior)

sensor.set_windowing() dibuat jauh lebih fleksibel: kini menerima berbagai bentuk argumen (tuple region, atau lebar/tinggi terpusat, atau x, y, w, h) dan menyelesaikan jendela relatif terhadap resolusi saat ini. Skrip yang meneruskan argumen windowing dalam bentuk lama yang tetap mungkin memilih region yang berbeda dan harus diperiksa kembali.

Commits: 3e9c43554

MicroPython 1.13 → 1.15 (behavior)

Inti MicroPython yang disertakan diperbarui dari 1.13 ke 1.15 (melalui 1.14). Perilaku standard-library dan bahasa mengikuti upstream MicroPython 1.15; periksa kembali skrip yang bergantung pada perilaku spesifik versi micropython / modul standar.

Commits: 364eea6c7, 26c5376b0

Argumen ImageIO update_jpeg_buffer dihapus (minor)

Pembaruan buffer JPEG ImageIO dirombak untuk mendapatkan buffer dari argumen sumber citra, dan argumen eksplisit update_jpeg_buffer telah dihapus. Skrip yang meneruskan update_jpeg_buffer ke ImageIO harus menghapus argumen tersebut.

Commits: 5c6937bd1

Daftar periksa migrasi

Untuk porting bersih ke v4.0.0, pekerjaan umumnya adalah:

  1. Ganti penggunaan mode streaming yang telah dihapus dengan API multi-buffering sensor.set_framebuffers() baru (mode streaming dihapus).

  2. Periksa kembali panggilan sensor.set_windowing() terhadap penanganan argumen yang telah dirombak dan lebih fleksibel (perubahan windowing).

  3. Validasi ulang skrip yang bergantung pada perilaku MicroPython spesifik versi terhadap MicroPython 1.15 (peningkatan versi MicroPython).

  4. Hapus argumen update_jpeg_buffer dari panggilan ImageIO (perubahan ImageIO).

Semua skrip lainnya berjalan tanpa perubahan.