v3.9.4

v3.9.4 bổ sung module buzzer, các ioctl phát hiện chuyển động HM01B0 của Himax (kèm ví dụ thức dậy theo chuyển động tiêu thụ ít điện), điều khiển cửa sổ đọc MT9V034, các hàm Ethernet tiêu thụ ít điện, driver camera OV7670, và camera Arduino Nano 33 BLE Sense. Bản này cũng mang đến hàng loạt cải tiến tốc độ cho JPEG / LCD / TV. API đầu ra VSYNC đã được thay thế bằng hàm gọi lại và phép tính gain/exposure của MT9V034 đã được hiệu chỉnh — hãy đọc phần thay đổi gây mất tương thích bên dưới.

Điểm nổi bật

  • Module Buzzer — module buzzer mới (freq(), duty(), RESONANT_FREQ) trên OpenMV Pure Thermal.

  • Phát hiện chuyển động HM01B0 — các ioctl phát hiện chuyển động Himax mới cùng ví dụ thức dậy theo chuyển động tiêu thụ ít điện.

  • Cửa sổ đọc MT9V034 — điều khiển cửa sổ đọc của màn trập toàn cục qua sensor.ioctl().

  • Camera / bo mạch mới — driver OV7670 cơ bản, camera Arduino Nano 33 BLE Sense, và bo mạch Bormio.

  • Pipeline nhanh hơn — bộ mã hóa JPEG SIMD được viết lại, khử nhiễu nhanh hơn, và tăng tốc đáng kể cho việc truyền LCD/TV.

  • Thay đổi gây mất tương thích: sensor.set_vsync_output() được thay thế bằng sensor.set_vsync_callback() và phép tính gain/exposure của MT9V034 đã được hiệu chỉnh — xem phần thay đổi gây mất tương thích.

Tính năng mới

  • Buzzer — thêm module buzzer với buzzer.freq(), buzzer.duty(), và hằng số buzzer.RESONANT_FREQ (OpenMV Pure Thermal).

  • Phát hiện chuyển động HM01B0 — thêm các ioctl IOCTL_HIMAX_MD_ENABLE / MD_WINDOW / MD_THRESHOLD / MD_CLEARIOCTL_HIMAX_OSC_ENABLE, kèm ví dụ phát hiện chuyển động Himax và ví dụ thức dậy tiêu thụ ít điện himax_wakeup_on_motion_detection.py.

  • Cửa sổ đọc MT9V034 — thêm IOCTL_SET_READOUT_WINDOW / IOCTL_GET_READOUT_WINDOW để điều khiển cửa sổ đọc MT9V034 qua sensor.ioctl().

  • Ethernet tiêu thụ ít điện — thêm các hàm tắt nguồn / tiêu thụ ít điện cho Ethernet.

  • Portenta — thêm các hàm gọi lại bật/tắt bộ dao động ngoài.

Các thay đổi và cải tiến khác

  • Viết lại bộ mã hóa JPEG bằng SIMD và tăng tốc mã hóa Bayer→YCbCr, giữ lõi JPEG phần cứng hoạt động trong quá trình thực thi tập lệnh, tăng tốc khử nhiễu (~19,5 ms cho VGA), chuyển nén JPEG sang MDMA, tăng tốc đường truyền TV/LCD bằng SIMD/DMA hiệu quả, và giảm đáng kể sử dụng bus SPI LCD. Thêm driver USB3320 ULPI PHY cho USB tốc độ cao.

Sửa lỗi

Camera và cảm biến:

  • Đã sửa lỗi khởi tạo/streaming của driver HM01B0 và tinh chỉnh mục tiêu AE / khuếch đại tối đa, hiệu chỉnh kẹp gain AGC/AEC của MT9V034, và sửa lỗi tải firmware lấy nét tự động OV5640 (thứ tự byte).

Màn hình:

  • Đã sửa lỗi truyền DMA SPI LCD lớn hơn 64 KB, cực tính đầu ra LCD, và độ ổn định bus LCD (AXI QOS).

Hệ thống và kết nối:

  • Đã sửa instance SDMMC được sử dụng bởi driver WiFi CYW43 (với instance SDMMC do bo mạch định nghĩa), cải thiện hiệu quả DMA của FLIR Lepton (VOSPI nâng lên 20 MHz trên H7), sửa hành vi tiêu thụ ít điện / chế độ chờ Portenta (giới hạn dòng PMIC SW1, Ethernet và ULPI tiêu thụ ít điện), khiến server RTSP chịu đựng được các header CSeqPLAY Range không theo thứ tự (FFPLAY), sửa căn chỉnh 8-byte EABI của stack linker, và sửa lỗi import bị hỏng trong ví dụ mqtt_sub.py của Portenta.

Phần cứng và hỗ trợ bo mạch

  • Cảm biến camera OV7670 — driver cơ bản.

  • Arduino Nano 33 BLE Sense — driver cảm biến camera (cổng nrf) với sửa lỗi chân reset và bus I2C.

  • HM01B0 — thêm độ phân giải 320x320.

  • Bormio — cấu hình xung nhịp PLL, bố cục flash, và GPIO PORT K (cũng được bật trên Portenta).

  • USB3320 ULPI PHY — USB tốc độ cao.

Thay đổi API gây mất tương thích

Các thay đổi API hiển thị với người dùng giữa v3.9.3 và v3.9.4. Phạm vi: các C-module Python trong modules/ và các thư viện Python trong scripts/libraries/.

Mỗi thay đổi được gắn thẻ theo mức độ ảnh hưởng:

  • major — ảnh hưởng đến hầu hết các tập lệnh đã sử dụng tính năng này; bạn sẽ cần chuyển đổi code.

  • behavior — cùng API, kết quả khác nhau; kiểm tra lại các tập lệnh đã được tinh chỉnh.

Các thay đổi được nhóm theo mức độ ảnh hưởng theo thứ tự đó. Nếu bạn chỉ muốn chuyển đổi code, hãy chuyển đến danh sách kiểm tra chuyển đổi ở cuối. Mỗi mã hash commit liên kết đến diff của nó trên GitHub.

Đầu ra VSYNC được thay thế bằng hàm gọi lại (major)

sensor.set_vsync_output(pin) đã bị loại bỏ và thay thế bằng sensor.set_vsync_callback(callback). Đường VSYNC không còn điều khiển trực tiếp một Pin nữa; thay vào đó, một callable Python được gọi với trạng thái VSYNC, và hàm gọi lại của bạn tự toggle Pin. Code sử dụng sensor.set_vsync_output() phải được chuyển đổi (xem ví dụ vsync_gpio_output.py đã cập nhật).

Commits: 5bbe25c20

Phép tính gain/exposure MT9V034 được hiệu chỉnh (behavior)

Tốc độ xung nhịp và phép tính gain/exposure của MT9V034 đã được hiệu chỉnh, vì vậy sensor.set_auto_gain() / sensor.set_auto_exposure() bây giờ tạo ra các giá trị chính xác (và do đó khác với trước). Các tập lệnh đã hard-code các giá trị gain/exposure bù để giải quyết phép tính sai cũ trên các camera có màn trập toàn cục MT9V034 nên bỏ các giải pháp tạm thời đó và tinh chỉnh lại.

Commits: 4420536c4

Danh sách kiểm tra chuyển đổi

Để chuyển đổi sạch sang v3.9.4, công việc thông thường là:

  1. Thay thế sensor.set_vsync_output(pin) bằng sensor.set_vsync_callback(callback) và toggle Pin từ bên trong hàm gọi lại (thay đổi VSYNC).

  2. Tinh chỉnh lại bất kỳ giải pháp tạm thời nào cho gain/exposure MT9V034 theo phép tính đã được hiệu chỉnh (thay đổi MT9V034).

Tất cả các tập lệnh khác chạy không thay đổi.