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 JPEGImage.jpeg_encode_for_ide() と大きな JPEG の IDE への自動送信。

  • 破壊的変更: WINC1500 WLAN.ifconfig() のセマンティクスが変更され、MQTTClient.wait_msg() は空の受信時に例外を送出しなくなり、find_apriltags() のデフォルトが 4 方向接続になりました。破壊的変更を参照してください。

新機能

  • WiFiWLAN.netinfo()(rssi, security, ssid, mac, ip) を返す)と、WLAN.ifconfig() による WINC1500 の静的 IP 設定を、静的 IP のサンプルとともに追加。

  • FDCAN — FDCAN ペリフェラルサポートと can.py サンプルを追加。

  • IDE JPEGImage.jpeg_encode_for_ide() / Image.jpeg_encoded_for_ide() を追加。バッファが小さすぎる場合、大きな JPEG は IDE へ自動送信されます。

  • ライブラリpid PID コントローラライブラリ、modbus RTU スレーブライブラリ(32-modbus サンプル付き)、そして I2C OLED ディスプレイ用の SSD1306_I2C クラスを追加。

  • サンプル — MQTT サブスクライブ(mqtt_sub.pymqtt.pymqtt_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

find_apriltags() のデフォルトが 4 方向接続になった (behavior)

image.find_apriltags() は、エッジ接続のデフォルトが(8 方向ではなく)4 方向になりました — より高速ですが、検出されるタグがわずかに異なる場合があります。以前の精度に戻すには、IMLIB_ENABLE_FINE_APRILTAGS を定義してファームウェアをビルドしてください。

コミット: c1d9bec2c

移行チェックリスト

v3.4.2 へのクリーンな移植では、一般的に次の作業が必要です:

  1. WINC1500 WLAN.ifconfig() による接続情報の読み取りを WLAN.netinfo() に置き換える(ifconfig の変更)。

  2. OSError(-1) をキャッチする代わりに MQTTClient.wait_msg()None 戻り値をチェックする(wait_msg の変更)。

  3. 8 方向接続が必要な場合は、AprilTag 検出を再チューニングするか IMLIB_ENABLE_FINE_APRILTAGS を定義してビルドする(find_apriltags の変更)。

その他のすべてのスクリプトは変更なしで動作します。