v3.4.2¶
v3.4.2 是一個重大版本。它推出了 OpenMV Cam H7 Plus(SDRAM、用於高解析度擷取的超大影格緩衝區)、OV5640 5 MP 相機、FDCAN 支援、重寫的 OV2640 驅動程式、Image.jpeg_encode_for_ide(),以及新的 pid / modbus 函式庫。WINC1500 ifconfig() API 與 find_apriltags() 的預設值有所變更——請閱讀下方的破壞性變更。
重點¶
OpenMV Cam H7 Plus——具備 SDRAM 驅動程式與約 31 MB 影格緩衝區、可用於高解析度擷取的全新開發板。
具備 I2C 偵測的 OV5640 5 MP 相機驅動程式。
FDCAN 周邊支援,附上 CAN 範例。
OV2640 重寫——正立影像、可運作的自動功能、JPEG 快照,以及新的
sensor.XGA影格尺寸。IDE JPEG——
Image.jpeg_encode_for_ide()以及將大型 JPEG 自動傳輸至 IDE。破壞性變更: WINC1500
WLAN.ifconfig()語意已變更,MQTTClient.wait_msg()在收到空白資料時不再擲回例外,且find_apriltags()預設改為 4 方向連通性——請參閱破壞性變更。
新功能¶
WiFi——新增了
WLAN.netinfo()(回傳(rssi, security, ssid, mac, ip))以及透過WLAN.ifconfig()進行 WINC1500 靜態 IP 設定,並附上靜態 IP 範例。FDCAN——新增了 FDCAN 周邊支援與
can.py範例。IDE JPEG——新增了
Image.jpeg_encode_for_ide()/Image.jpeg_encoded_for_ide();當緩衝區太小時,大型 JPEG 會自動傳輸至 IDE。函式庫——新增了
pidPID 控制器函式庫、modbusRTU 從站函式庫(附上 32-modbus 範例),以及用於 I2C OLED 顯示器的SSD1306_I2C類別。範例——新增了 MQTT 訂閱(
mqtt_sub.py,並將mqtt.py重新命名為mqtt_pub.py)。感測器——新增了
sensor.XGA(1024x768)影格尺寸;在 Bayer 影像上呼叫print()/repr()現在會輸出 JSON 中繼資料。
其他變更與改進¶
重寫了 OV2640 驅動程式(正立影像、可運作的自動功能、接受 JPEG 快照);啟用了高解析度 apriltags(解除支援的開發板上 <64K 像素的 ROI 限制);將 OV2640 PCLK 從 72 MHz 降至 36 MHz。
錯誤修正¶
影像處理:
修正了二元運算超出影像結尾的溢位、
find_apriltags()/find_datamatrices()/find_lines()輸出中的 printf/浮點精度、色塊print()中格式錯誤的 JSON、在 vflip / hmirror 影像上的find_apriltags()、find_lbp()ROI 錯誤、大解析度的 JPEG 壓縮逾時,以及fb_alloc記憶體統計回報。
相機與感測器:
修正了 JPEG 模式快取維護與緩衝區對齊、最大 DCMI 傳輸大小、OV2640 暫存器設定與解析度、在重設時還原感測器關機狀態,以及 OV7725 影像品質(新增了每相機的條紋濾鏡)。
網路與系統:
修正了
socket.accept()硬錯誤/錯誤、WINC1500 socket 逾時處理(逾時 0 現在為阻塞式;socket 不會在 recv 逾時時關閉)、H7 深度睡眠、RTC(上游更新以及 H7 EXTI / 喚醒計時器 / 軟重設問題),以及pyb.Servo計時器 IRQ(Servo 先前無法運作)。
硬體與開發板支援¶
OpenMV Cam H7 Plus(OPENMV4R)——具備 SDRAM 驅動程式、可啟用大型(約 31 MB)影格緩衝區的全新開發板。
OV5640——具備 I2C 偵測的全新 5 MP 相機驅動程式。
FDCAN——周邊支援。
破壞性 API 變更¶
v3.4.1 與 v3.4.2 之間使用者可見的 API 破壞性變更。範圍:modules/ 中的 Python C 模組與 scripts/libraries/ 中的 Python 函式庫。
每項變更皆標註其影響程度:
major——影響大多數使用該功能的指令碼;你需要移植程式碼。
minor——範圍狹窄的 API;僅影響使用到它的指令碼。
behavior——API 相同,但結果不同;請重新檢查已調校過的指令碼。
變更依影響程度依序分組。如果你只想移植程式碼,請跳至結尾的 遷移檢查清單。每個 commit 雜湊值都連結至其在 GitHub 上的 diff。
WINC1500 WLAN.ifconfig() 語意變更 (major)¶
在 WINC1500 WiFi shield 上,WLAN.ifconfig() 不再回傳舊的 5 元素清單 [rssi, security, ssid, mac, ip]。它現在會取得/設定 (ip, subnet, gateway, dns) 元組(並支援靜態 IP 設定),與標準的 network 介面一致。從 ifconfig() 讀取連線資訊的程式碼必須改用新的 WLAN.netinfo() 方法((rssi, security, ssid, mac, ip))。
Commits: e685b484a
MQTTClient.wait_msg() 在收到空白資料時回傳 None (minor)¶
mqtt 函式庫的 MQTTClient.wait_msg() 現在會在收到空白資料時回傳 None,而非擲回 OSError(-1)。捕捉 OSError(-1) 以偵測已關閉/空白 socket 的程式碼必須改為檢查 None 回傳值。
Commits: 76239ea89
遷移檢查清單¶
若要乾淨地移植至 v3.4.2,典型的工作為:
將讀取 WINC1500
WLAN.ifconfig()連線資訊的程式碼替換為WLAN.netinfo()(ifconfig 變更)。檢查
MQTTClient.wait_msg()的None回傳值,而非捕捉OSError(-1)(wait_msg 變更)。若你需要 8 方向連通性,請重新調校 AprilTag 偵測,或在建置時定義
IMLIB_ENABLE_FINE_APRILTAGS(find_apriltags 變更)。
所有其他指令碼皆可不變執行。