v3.4.2

v3.4.2 adalah rilis besar. Versi ini memperkenalkan OpenMV Cam H7 Plus (SDRAM, framebuffer besar untuk pengambilan resolusi tinggi), kamera OV5640 5 MP, dukungan FDCAN, penulisan ulang driver OV2640, Image.jpeg_encode_for_ide(), serta library pid / modbus baru. API ifconfig() WINC1500 dan default find_apriltags() berubah — baca perubahan yang merusak di bawah ini.

Sorotan

  • OpenMV Cam H7 Plus — board baru dengan driver SDRAM dan framebuffer ~31 MB untuk pengambilan resolusi tinggi.

  • Driver kamera OV5640 5 MP dengan deteksi berbasis I2C.

  • Dukungan periferal FDCAN, dengan contoh CAN.

  • Penulisan ulang OV2640 — citra tegak, fungsi auto yang berfungsi, snapshot JPEG, dan ukuran bingkai sensor.XGA baru.

  • IDE JPEGImage.jpeg_encode_for_ide() dan auto-transmit JPEG besar ke IDE.

  • Merusak: semantik WLAN.ifconfig() WINC1500 berubah, MQTTClient.wait_msg() tidak lagi memunculkan pengecualian pada recv kosong, dan find_apriltags() default ke konektivitas 4 arah — lihat perubahan yang merusak.

Fitur baru

  • WiFi — menambahkan WLAN.netinfo() (mengembalikan (rssi, security, ssid, mac, ip)) dan konfigurasi IP statis WINC1500 melalui WLAN.ifconfig(), dengan contoh IP statis.

  • FDCAN — menambahkan dukungan periferal FDCAN dan contoh can.py.

  • IDE JPEG — menambahkan Image.jpeg_encode_for_ide() / Image.jpeg_encoded_for_ide(); JPEG besar secara otomatis ditransmisikan ke IDE ketika buffer terlalu kecil.

  • Library — menambahkan library PID-controller pid, library slave RTU modbus (dengan contoh 32-modbus), dan kelas SSD1306_I2C untuk layar OLED I2C.

  • Contoh — menambahkan subscribe MQTT (mqtt_sub.py, dengan mqtt.py diubah namanya menjadi mqtt_pub.py).

  • Sensor — menambahkan ukuran bingkai sensor.XGA (1024x768); print() / repr() pada citra Bayer kini menghasilkan metadata JSON.

Perubahan dan peningkatan lainnya

  • Menulis ulang driver OV2640 (citra tegak, fungsi auto yang berfungsi, snapshot JPEG diterima); mengaktifkan apriltags resolusi tinggi (menghapus batas ROI <64K piksel pada board yang mampu); menurunkan PCLK OV2640 dari 72 MHz ke 36 MHz.

Perbaikan bug

Pencitraan:

  • Memperbaiki overflow binary-ops melewati akhir citra, presisi printf/float dalam output find_apriltags() / find_datamatrices() / find_lines(), JSON malformed dalam blob print(), find_apriltags() pada citra vflipped / hmirrored, bug ROI find_lbp(), timeout kompresi JPEG untuk resolusi besar, dan pelaporan statistik memori fb_alloc.

Kamera dan sensor:

  • Memperbaiki pemeliharaan cache dan penyelarasan buffer mode JPEG, ukuran transfer DCMI maksimum, konfigurasi register dan resolusi OV2640, pemulihan state shutdown sensor saat reset, dan kualitas citra OV7725 (menambahkan filter banding per kamera).

Jaringan dan sistem:

  • Memperbaiki hardfault/bug socket.accept(), penanganan timeout socket WINC1500 (timeout 0 kini memblokir; socket tidak ditutup saat timeout recv), deep-sleep H7, RTC (pembaruan upstream dan masalah EXTI / wakeup-timer / soft-reset H7), dan IRQ timer pyb.Servo (Servo tidak berfungsi).

Dukungan hardware dan board

  • OpenMV Cam H7 Plus (OPENMV4R) — board baru dengan driver SDRAM yang memungkinkan framebuffer besar (~31 MB).

  • OV5640 — driver kamera 5 MP baru dengan deteksi berbasis I2C.

  • FDCAN — dukungan periferal.

Perubahan API yang merusak

Perubahan API yang terlihat oleh pengguna antara v3.4.1 dan v3.4.2. Cakupan: modul C Python di modules/ dan library Python di scripts/libraries/.

Setiap perubahan diberi tag dampaknya:

  • major — memengaruhi sebagian besar skrip yang menggunakan fitur ini; Anda perlu melakukan porting kode.

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

  • behavior — API sama, hasil berbeda; periksa ulang skrip yang sudah disetel.

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

Semantik WLAN.ifconfig() WINC1500 berubah (major)

Pada WiFi shield WINC1500, WLAN.ifconfig() tidak lagi mengembalikan daftar 5 elemen lama [rssi, security, ssid, mac, ip]. Kini ia mendapatkan/mengatur tuple (ip, subnet, gateway, dns) (dan mendukung konfigurasi IP statis), sesuai dengan antarmuka network standar. Kode yang membaca info koneksi dari ifconfig() harus beralih ke metode WLAN.netinfo() baru ((rssi, security, ssid, mac, ip)).

Commit: e685b484a

MQTTClient.wait_msg() mengembalikan None pada recv kosong (minor)

MQTTClient.wait_msg() library mqtt kini mengembalikan None pada penerimaan kosong alih-alih memunculkan OSError(-1). Kode yang menangkap OSError(-1) untuk mendeteksi socket tertutup/kosong harus memeriksa nilai kembalian None.

Commit: 76239ea89

find_apriltags() default ke konektivitas 4 arah (behavior)

image.find_apriltags() kini default ke konektivitas tepi 4 arah (alih-alih 8 arah) — lebih cepat, tetapi tag yang terdeteksi mungkin sedikit berbeda. Untuk memulihkan akurasi sebelumnya, build firmware dengan IMLIB_ENABLE_FINE_APRILTAGS yang didefinisikan.

Commit: c1d9bec2c

Daftar periksa migrasi

Untuk porting bersih ke v3.4.2, pekerjaan umum yang diperlukan adalah:

  1. Ganti pembacaan info koneksi WLAN.ifconfig() WINC1500 dengan WLAN.netinfo() (perubahan ifconfig).

  2. Periksa MQTTClient.wait_msg() untuk nilai kembalian None alih-alih menangkap OSError(-1) (perubahan wait_msg).

  3. Setel ulang deteksi AprilTag atau build dengan IMLIB_ENABLE_FINE_APRILTAGS jika Anda memerlukan konektivitas 8 arah (perubahan find_apriltags).

Semua skrip lainnya berjalan tanpa perubahan.