v4.1.0

v4.1.0 帶來完整的 Arduino Nano RP2040 Connect / Raspberry Pi Pico 支援(WiFi、藍牙、相機擷取、跳至開機載入程式)、直接 JPEG 影像解碼、凍結的 urequests HTTP 用戶端、OV7670 感測器支援,以及標準化的感測器錯誤回報。WiFi API 與感測器例外狀況有所變更——請閱讀下方的破壞性變更。

重點摘要

  • RP2 開發板——Arduino Nano RP2040 Connect / Pico 新增 WiFi(NINA-W10)、藍牙(NimBLE)、相機/DCMI 擷取,以及跳至開機載入程式。

  • JPEG 解碼——影像操作現在可直接接受壓縮的 JPEG 影像。

  • urequests HTTP 用戶端已凍結至韌體中。

  • OV7670 相機感測器支援。

  • 破壞性變更: NINA/RP2 WiFi API 經過重新設計,且數種感測器錯誤現在會引發 RuntimeError——請參閱破壞性變更。

新功能

  • Arduino Nano RP2040 Connect / Raspberry Pi Pico——透過 NINA-W10 network 驅動程式提供 WiFi、藍牙/NimBLE、相機擷取(DCMI PIO 程式),以及跳至開機載入程式指令。

  • JPEG 影像解碼——find_apriltags()lcd.display()tv.display() 及相關影像操作現在可直接接受壓縮的 JPEG 影像(解碼為二進位/灰階/RGB565)。

  • urequests——HTTP 用戶端(GET/POST/PUT/...)現已凍結於 OpenMV 4 / 4 Plus / Portenta / Nicla 上,並附有 http_post.py 範例。

  • ble_advertising 輔助程式庫,凍結於 Nano RP2040 Connect 上。

  • 主機/除錯——新增 pyopenmv.reset_to_bl() 與新的 USBDBG_SYS_RESET_TO_BL(0x0E)指令以重設進入開機載入程式;在 Arduino Nano 33 BLE Sense 上支援跳至開機載入程式。

  • OV7670——新增 OV7670 相機感測器支援,可在 OpenMV 4 上選用。

其他變更與改善

  • RP2 UDP 通訊端在未繫結使用時會自動繫結至臨時連接埠;隨附的 MicroPython 子模組已更新。

錯誤修正

網路功能:

  • 修正了 NINA WiFi 通訊端的 accept/close/send/recv/bind 處理與操作逾時,以及一個可能損毀 IDE 輸出的 RP2 除錯文字緩衝區競爭問題。

相機與系統:

  • 修正了 HM01B0 重設、OpenMV H7 上感測器掃描失敗後相機 I2C 匯流排卡住、H7 ULPI 在 USB 中斷連線時進入低功耗、H7 ADC 接腳產生,以及 Portenta 相機接腳配置/擴充板 SPI-CS。

硬體與開發板支援

  • Arduino Nano RP2040 Connect / Raspberry Pi Pico——WiFi、藍牙、相機、較大的快閃記憶體檔案系統、MSC 開機載入程式。

  • OV7670 相機感測器(OpenMV 4)。

  • Arduino Portenta H7——擴充 I2C4、額外的 PWM/時脈接腳、OV7725 / MT9V034 感測器。

破壞性 API 變更

v4.0.2 與 v4.1.0 之間使用者可見的 API 破壞性變更。範圍:modules/ 中的 Python C 模組與 scripts/libraries/ 中的 Python 程式庫。

每項變更都標註其影響程度:

  • minor——範圍狹窄的 API;僅影響使用到它的指令碼。

  • behavior——相同 API,不同結果;請重新檢查已調校的指令碼。

變更依此順序按影響程度分組。若您只想移植程式碼,請跳至結尾的 移植檢查清單。每個提交雜湊都連結至其在 GitHub 上的差異。

NINA / RP2 WiFi API 經過重新設計 (minor)

NINA / RP2 WLAN 驅動程式經過重新設計以符合上游 MicroPython / CYW43 network 介面:WLAN(interface) 建構函式(STA/AP 模式)、新的 active([bool]) 方法、config / start_ap 作為 connect 的別名、connect()ssid 引數更名為 essid、新的 channel 關鍵字,以及 nina.fw_version() 現在會傳回 (major, minor, patch) 元組而非原始位元組。NINA 韌體版本不符現在是非致命警告,而非 OSError

Commits: eb2f98277e14470f680c40f4832

感測器錯誤現在會引發 RuntimeError (behavior)

感測器錯誤回報已圍繞統一的錯誤碼表進行標準化:相機故障(擷取逾時、無效的 framesize/pixformat/window/framerate、framebuffer 錯誤、JPEG 溢位、未偵測到感測器,...)現在會引發一致且具描述性的訊息,且數種先前引發 ValueError 的情況現在會引發 RuntimeError(包括 sensor.reset())。針對這些情況捕捉 ValueError 的程式碼必須改為捕捉 RuntimeError

Commits: 0491a6a88c8bf0af6f2fb226562

移植檢查清單

若要乾淨地移植至 v4.1.0,典型的工作為:

  1. 將 NINA/RP2 WiFi 程式碼移植至標準的 network.WLAN 介面(WLAN(interface)active()essid=),並預期 nina.fw_version() 傳回元組(WiFi API 變更)。

  2. 在相機/sensor.reset() 錯誤處理周圍將 except ValueError 改為 except RuntimeError感測器錯誤變更)。