v3.4.2¶
v3.4.2 là một phiên bản lớn. Nó giới thiệu OpenMV Cam H7 Plus (SDRAM, bộ đệm khung hình khổng lồ cho chụp ảnh độ phân giải cao), camera OV5640 5 MP, hỗ trợ FDCAN, driver OV2640 được viết lại, Image.jpeg_encode_for_ide(), và các thư viện pid / modbus mới. API ifconfig() của WINC1500 và mặc định của find_apriltags() đã thay đổi — đọc phần thay đổi gây gián đoạn bên dưới.
Điểm nổi bật¶
OpenMV Cam H7 Plus — bo mạch mới với driver SDRAM và bộ đệm khung hình ~31 MB cho chụp ảnh độ phân giải cao.
Driver camera OV5640 5 MP với phát hiện qua I2C.
Hỗ trợ ngoại vi FDCAN, kèm theo ví dụ CAN.
Viết lại OV2640 — ảnh đúng chiều, các chức năng tự động hoạt động, ảnh chụp JPEG, và kích thước khung hình
sensor.XGAmới.IDE JPEG —
Image.jpeg_encode_for_ide()và tự động truyền JPEG lớn sang IDE.Gây gián đoạn: ngữ nghĩa của
WLAN.ifconfig()WINC1500 đã thay đổi,MQTTClient.wait_msg()không còn đưa ra ngoại lệ khi recv rỗng, vàfind_apriltags()mặc định kết nối 4 chiều — xem phần thay đổi gây gián đoạn.
Tính năng mới¶
WiFi — thêm
WLAN.netinfo()(trả về(rssi, security, ssid, mac, ip)) và cấu hình IP tĩnh WINC1500 quaWLAN.ifconfig(), kèm theo ví dụ IP tĩnh.FDCAN — thêm hỗ trợ ngoại vi FDCAN và ví dụ
can.py.IDE JPEG — thêm
Image.jpeg_encode_for_ide()/Image.jpeg_encoded_for_ide(); các JPEG lớn tự động truyền sang IDE khi bộ đệm quá nhỏ.Thư viện — thêm thư viện PID
pid, thư viện RTU slavemodbus(kèm theo ví dụ 32-modbus), và classSSD1306_I2Ccho màn hình OLED I2C.Ví dụ — thêm MQTT subscribe (
mqtt_sub.py, vớimqtt.pyđổi tên thànhmqtt_pub.py).Cảm biến — thêm kích thước khung hình
sensor.XGA(1024x768);print()/repr()trên ảnh Bayer giờ xuất metadata JSON.
Các thay đổi và cải tiến khác¶
Viết lại driver OV2640 (ảnh đúng chiều, các chức năng tự động hoạt động, ảnh chụp JPEG được chấp nhận); bật apriltags độ phân giải cao (loại bỏ giới hạn ROI <64K điểm ảnh trên các bo mạch hỗ trợ); giảm PCLK OV2640 từ 72 MHz xuống 36 MHz.
Sửa lỗi¶
Xử lý ảnh:
Sửa lỗi tràn bộ nhớ vượt cuối ảnh trong binary-ops, độ chính xác printf/float trong đầu ra
find_apriltags()/find_datamatrices()/find_lines(), JSON bị lỗi trongprint()blob,find_apriltags()trên ảnh vflipped / hmirrored, lỗi ROIfind_lbp(), timeout nén JPEG cho độ phân giải lớn, và báo cáo thống kê bộ nhớfb_alloc.
Camera và cảm biến:
Sửa lỗi bảo trì cache và căn chỉnh bộ đệm chế độ JPEG, kích thước truyền DCMI tối đa, cấu hình thanh ghi và độ phân giải OV2640, khôi phục trạng thái tắt cảm biến khi reset, và chất lượng ảnh OV7725 (thêm bộ lọc banding theo từng camera).
Mạng và hệ thống:
Sửa lỗi hardfault/bug của
socket.accept(), xử lý timeout socket WINC1500 (timeout 0 giờ là blocking; socket không bị đóng khi recv timeout), deep-sleep H7, RTC (cập nhật upstream và các vấn đề EXTI / wakeup-timer / soft-reset của H7), và ngắt timerpyb.Servo(Servo không hoạt động).
Hỗ trợ phần cứng và bo mạch¶
OpenMV Cam H7 Plus (OPENMV4R) — bo mạch mới với driver SDRAM cho phép bộ đệm khung hình lớn (~31 MB).
OV5640 — driver camera 5 MP mới với phát hiện qua I2C.
FDCAN — hỗ trợ ngoại vi.
Thay đổi API gây gián đoạn¶
Các thay đổi API hiển thị với người dùng giữa v3.4.1 và v3.4.2. Phạm vi: Python C-modules trong modules/ và thư viện Python trong scripts/libraries/.
Mỗi thay đổi được gắn nhãn theo mức độ ảnh hưởng:
nghiêm trọng — ảnh hưởng đến hầu hết các tập lệnh đã dùng tính năng này; bạn sẽ cần chuyển đổi code.
nhỏ — API hẹp; chỉ ảnh hưởng đến các tập lệnh đã dùng nó.
hành vi — API giống nhau, kết quả khác; hãy 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 di chuyển ở cuối. Mỗi hash commit liên kết đến diff của nó trên GitHub.
Ngữ nghĩa của WLAN.ifconfig() WINC1500 đã thay đổi (nghiêm trọng)¶
Trên WiFi shield WINC1500, WLAN.ifconfig() không còn trả về danh sách 5 phần tử cũ [rssi, security, ssid, mac, ip]. Giờ nó lấy/đặt một tuple (ip, subnet, gateway, dns) (và hỗ trợ cấu hình IP tĩnh), phù hợp với giao diện network chuẩn. Code đọc thông tin kết nối từ ifconfig() phải chuyển sang phương thức WLAN.netinfo() mới ((rssi, security, ssid, mac, ip)).
Commits: e685b484a
MQTTClient.wait_msg() trả về None khi recv rỗng (nhỏ)¶
MQTTClient.wait_msg() của thư viện mqtt giờ trả về None khi nhận rỗng thay vì đưa ra OSError(-1). Code bắt OSError(-1) để phát hiện socket đóng/rỗng phải kiểm tra giá trị trả về None thay thế.
Commits: 76239ea89
Danh sách kiểm tra di chuyển¶
Để chuyển đổi sạch sang v3.4.2, công việc thông thường là:
Thay thế các lần đọc thông tin kết nối
WLAN.ifconfig()WINC1500 bằngWLAN.netinfo()(thay đổi ifconfig).Kiểm tra giá trị trả về
NonetừMQTTClient.wait_msg()thay vì bắtOSError(-1)(thay đổi wait_msg).Tinh chỉnh lại phát hiện AprilTag hoặc build với
IMLIB_ENABLE_FINE_APRILTAGSnếu bạn cần kết nối 8 chiều (thay đổi find_apriltags).
Tất cả các tập lệnh khác chạy không đổi.