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/float の精度、ブロブのprint()における不正な JSON、vflip / hmirror された画像でのfind_apriltags()、find_lbp()の ROI バグ、大きな解像度での JPEG 圧縮タイムアウト、そしてfb_allocのメモリ統計レポートを修正。
カメラとセンサー:
JPEG モードのキャッシュメンテナンスとバッファアライメント、DCMI 転送の最大サイズ、OV2640 のレジスタ設定と解像度、リセット時のセンサーシャットダウン状態の復元、そして OV7725 の画質(カメラごとのバンディングフィルタを追加)を修正。
ネットワークとシステム:
socket.accept()のハードフォルト/バグ、WINC1500 ソケットのタイムアウト処理(タイムアウト 0 はブロッキングになり、受信タイムアウトでソケットは閉じられません)、H7 のディープスリープ、RTC(アップストリームの更新と H7 EXTI / ウェイクアップタイマー / ソフトリセットの問題)、そしてpyb.Servoのタイマー IRQ(Servo が機能していなかった問題)を修正。
ハードウェアとボードサポート¶
OpenMV Cam H7 Plus (OPENMV4R) — 大きな(約 31 MB)フレームバッファを可能にする SDRAM ドライバを備えた新しいボード。
OV5640 — I2C ベースの検出を備えた新しい 5 MP カメラドライバ。
FDCAN — ペリフェラルサポート。
破壊的 API 変更¶
v3.4.1 と v3.4.2 の間のユーザーから見える API の破壊的変更。範囲: modules/ 内の Python C モジュールと scripts/libraries/ 内の Python ライブラリ。
各変更にはその影響度がタグ付けされています:
major — その機能を使用していたほとんどのスクリプトに影響します。コードの移植が必要になります。
minor — 限定的な API。それを使用していたスクリプトのみに影響します。
behavior — 同じ API ですが結果が異なります。チューニング済みのスクリプトを再確認してください。
変更はその順序で影響度別にグループ化されています。コードを移植したいだけであれば、末尾の 移行チェックリスト に進んでください。各コミットハッシュは GitHub 上の差分にリンクしています。
WINC1500 WLAN.ifconfig() のセマンティクスが変更された (major)¶
WINC1500 WiFi シールドにおいて、WLAN.ifconfig() は古い 5 要素のリスト [rssi, security, ssid, mac, ip] を返さなくなりました。標準の network インターフェースに合わせて、(ip, subnet, gateway, dns) タプルを取得/設定するようになりました(静的 IP 設定もサポート)。ifconfig() から接続情報を読み取っていたコードは、新しい WLAN.netinfo() メソッド((rssi, security, ssid, mac, ip))に切り替える必要があります。
コミット: e685b484a
MQTTClient.wait_msg() が空の受信時に None を返す (minor)¶
mqtt ライブラリの MQTTClient.wait_msg() は、空の受信時に OSError(-1) を送出する代わりに None を返すようになりました。閉じた/空のソケットを検出するために OSError(-1) をキャッチしていたコードは、代わりに None の戻り値をチェックする必要があります。
コミット: 76239ea89
移行チェックリスト¶
v3.4.2 へのクリーンな移植では、一般的に次の作業が必要です:
WINC1500
WLAN.ifconfig()による接続情報の読み取りをWLAN.netinfo()に置き換える(ifconfig の変更)。OSError(-1)をキャッチする代わりにMQTTClient.wait_msg()のNone戻り値をチェックする(wait_msg の変更)。8 方向接続が必要な場合は、AprilTag 検出を再チューニングするか
IMLIB_ENABLE_FINE_APRILTAGSを定義してビルドする(find_apriltags の変更)。
その他のすべてのスクリプトは変更なしで動作します。