v4.1.0

v4.1.0 bổ sung hỗ trợ đầy đủ cho Arduino Nano RP2040 Connect / Raspberry Pi Pico (WiFi, Bluetooth, chụp ảnh camera, nhảy vào bootloader), giải mã ảnh JPEG trực tiếp, HTTP client urequests được đóng gói sẵn, hỗ trợ cảm biến OV7670, và chuẩn hóa báo lỗi cảm biến. API WiFi và các ngoại lệ cảm biến đã thay đổi — hãy đọc phần thay đổi phá vỡ tương thích bên dưới.

Điểm nổi bật

  • Bo mạch RP2 — Arduino Nano RP2040 Connect / Pico được bổ sung WiFi (NINA-W10), Bluetooth (NimBLE), chụp ảnh camera/DCMI, và lệnh nhảy vào bootloader.

  • Giải mã JPEG — các thao tác trên ảnh giờ đây chấp nhận ảnh JPEG đã nén trực tiếp.

  • HTTP client urequests được đóng gói vào firmware.

  • Hỗ trợ cảm biến camera OV7670.

  • Phá vỡ tương thích: API WiFi NINA/RP2 đã được tái cấu trúc và một số lỗi cảm biến giờ đây ném RuntimeError — xem phần thay đổi phá vỡ tương thích.

Tính năng mới

  • Arduino Nano RP2040 Connect / Raspberry Pi Pico — WiFi qua driver network NINA-W10, Bluetooth/NimBLE, chụp ảnh camera (chương trình DCMI PIO), và lệnh nhảy vào bootloader.

  • Giải mã ảnh JPEGfind_apriltags(), lcd.display(), tv.display(), và các thao tác ảnh liên quan giờ đây chấp nhận ảnh JPEG đã nén trực tiếp (giải mã sang định dạng nhị phân/thang xám/RGB565).

  • urequests — HTTP client (GET/POST/PUT/...) nay được đóng gói sẵn trên OpenMV 4 / 4 Plus / Portenta / Nicla, kèm ví dụ http_post.py.

  • Thư viện hỗ trợ ble_advertising, được đóng gói sẵn trên Nano RP2040 Connect.

  • Host/debugpyopenmv.reset_to_bl() và lệnh USBDBG_SYS_RESET_TO_BL mới (0x0E) để reset vào bootloader; nhảy vào bootloader trên Arduino Nano 33 BLE Sense.

  • OV7670 — hỗ trợ cảm biến camera OV7670 mới, có thể chọn trên OpenMV 4.

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

  • UDP socket trên RP2 tự động bind vào cổng tạm thời khi sử dụng ở trạng thái chưa bind; cập nhật submodule MicroPython.

Sửa lỗi

Kết nối mạng:

  • Sửa lỗi xử lý accept/close/send/recv/bind và timeout thao tác của NINA WiFi socket, và race condition bộ đệm text debug RP2 có thể làm hỏng output IDE.

Camera và hệ thống:

  • Sửa lỗi reset HM01B0, bus I2C camera bị kẹt sau khi quét cảm biến thất bại trên OpenMV H7, chế độ tiết kiệm điện H7 ULPI khi ngắt kết nối USB, tạo chân ADC H7, và sơ đồ chân camera Portenta / SPI-CS của shield.

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

  • Arduino Nano RP2040 Connect / Raspberry Pi Pico — WiFi, Bluetooth, camera, hệ thống tệp flash lớn hơn, MSC bootloader.

  • Cảm biến camera OV7670 (OpenMV 4).

  • Arduino Portenta H7 — breakout I2C4, thêm chân PWM/clock, cảm biến OV7725 / MT9V034.

Thay đổi API phá vỡ tương thích

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

Mỗi thay đổi được gắn nhãn mức độ tác động:

  • minor — API hẹp; chỉ ảnh hưởng đến các tập lệnh đã sử dụng nó.

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

Các thay đổi được nhóm theo mức độ tác độ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 hash commit liên kết đến diff trên GitHub.

API WiFi NINA / RP2 được tái cấu trúc (minor)

Driver WLAN NINA / RP2 đã được tái cấu trúc để phù hợp với giao diện network MicroPython / CYW43 upstream: constructor WLAN(interface) (chế độ STA/AP), phương thức active([bool]) mới, bí danh config / start_ap của connect, đối số ssid của connect() đổi tên thành essid, từ khóa channel mới, và nina.fw_version() giờ đây trả về tuple (major, minor, patch) thay vì bytes thô. Lỗi không khớp phiên bản firmware NINA giờ là cảnh báo không nghiêm trọng thay vì OSError.

Commits: eb2f98277, e14470f68, 0c40f4832

Lỗi cảm biến giờ đây ném RuntimeError (behavior)

Báo cáo lỗi cảm biến đã được chuẩn hóa theo bảng mã lỗi thống nhất: các lỗi camera (timeout chụp ảnh, framesize/pixformat/window/framerate không hợp lệ, lỗi bộ đệm khung hình, tràn JPEG, cảm biến không được phát hiện, ...) giờ đây ném các thông điệp nhất quán và mô tả rõ ràng, và một số điều kiện trước đây ném ValueError giờ ném RuntimeError (bao gồm sensor.reset()). Code bắt ValueError cho các trường hợp này phải chuyển sang bắt RuntimeError.

Commits: 0491a6a88, c8bf0af6f, 2fb226562

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

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

  1. Chuyển code WiFi NINA/RP2 sang giao diện network.WLAN chuẩn (WLAN(interface), active(), essid=) và mong đợi tuple từ nina.fw_version() (thay đổi API WiFi).

  2. Thay except ValueError thành except RuntimeError xung quanh xử lý lỗi camera / sensor.reset() (thay đổi lỗi cảm biến).