v4.5.0

v4.5.0 はメジャーリリースです。従来の lcd モジュールは、SPI / パラレル / DSI / TV の各バックエンドを分離した統合 display モジュールに置き換えられ、Arduino Giga ボードが追加され、ディスプレイ・タッチ・センサー制御に関する多数の機能が登場しました。いくつかの破壊的変更があります。以下をお読みください。

ハイライト

  • 新しい display モジュール — lcd を、統合された SPIDisplay / RGBDisplay / DSIDisplay / TVDisplay バックエンドに置き換えます。

  • Arduino Giga ボードのサポート。

  • 新しいディスプレイ/タッチハードウェア — STM32 H7 上の DSI ディスプレイ、TFP410 DVI/HDMI、HDMI/DVI CEC、ST7701 RGB パネル、GT911 / FT5X06 静電容量式タッチ。

  • 新しいセンサー制御 — 黒レベル補正、ナイトモード、sensor.disable_delays()。トランスポーズ(約5倍)とモルフォロジー(約2.5倍)が大幅に高速化されました。

  • 破壊的変更: lcddisplaylcd_touchft5x06、LED ピン名の変更 — 破壊的変更を参照してください。

新機能

  • ディスプレイバックエンドDisplayData(DDC/EDID の読み出し)、TFP410 DVI/HDMI シリアライザ、STM32 H7 での MIPI-DSI ディスプレイサポート、HDMI/DVI の cec ドライバ、および ST7701 RGB パネル初期化ヘルパーを備えた Python の display ライブラリ。

  • タッチ — 新しい GT911 5点静電容量式タッチドライバ(read_points() / read_id() / reset())。

  • machine の拡張 — machine.LED ヘルパークラスを備えたフリーズ可能な machine ライブラリと、新しい machine.LED.value([v]) メソッド。

  • センサー制御sensor.set_auto_blc(enable, regs=None) / sensor.get_blc_regs()(黒レベル補正)、IOCTL_SET_NIGHT_MODE / IOCTL_GET_NIGHT_MODE(OV7725/OV5640)、OV7670 の hmirror/vflip、そしてカメラの安定化待ち時間をスキップして再設定を高速化する sensor.disable_delays()

  • i.MX RTsensor.set_xclk_frequency() が任意の周波数を受け付けるようになり(最も近い有効な CSI 分周比にスナップします)、RT1060 で SPI の lcd / tv / fir モジュールが有効化されました。

その他の変更と改善

  • 画像処理が大幅に高速化 — 画像のトランスポーズが約5倍、image.morph() が約2.5倍高速になりました。

  • カメラバスのプローブが複数のデバイスアドレスをスキャンして検証するようになり、バス上に複数のデバイスを持つボードに対応しました。

バグ修正

カメラとセンサー:

  • 多数のセンサー(HM01B0、HM0360、MT9M114、MT9V0xx、OV2640、OV5640、OV7690、OV7725、OV9650、PAJ6100)でのゲイン計算の精度、MT9V0xx の露出/カラムビニング、OV5640 の露出、OV7670 の VGA ウィンドウ処理を修正しました。

  • STM32 が、不正な画像を返す代わりに破損したトランスポーズフレームを破棄するようになりました。

画像処理:

  • 画像 / FIR / ToF / LCD / TV 処理に影響する整数オーバーフロー、Cortex-M4 上での不正な vcvtm/vcvtp 浮動小数点命令(fast_floorf/fast_ceilf)、image.to_*() 変換におけるインプレーススケーリングのバグ、および DMA2D の描画キャッシュ破損を修正しました。

ディスプレイとシステム:

  • DSI ディスプレイのタイミングとポートレートモード、Nicla Vision / Portenta H7 での micro_speechlisten()、STM32 のユーザースイッチ(pyb.Switch)、I2C4 バスのサポートを修正しました。

ハードウェアとボードのサポート

  • Arduino Giga — 新規ボード。名前付きの Arduino ピンマッピングと完全なサンプルセットを備えています。

  • OpenMV RT1060 — SPI LCD、TV、FIR サーマルモジュールが有効化されました。

  • Arduino Nano 33 BLE Sense — LED ピン。

破壊的 API 変更

v4.4.3 から v4.5.0 にかけての、ユーザーに見える API の破壊的変更です。対象範囲: modules/ 内の Python C モジュールと scripts/libraries/ 内の Python ライブラリ。

各変更には影響度のタグが付けられています:

  • major — それを使用していたほとんどのスクリプトで修正が必要です。

  • minor — 限定的な API。それを使用していたスクリプトにのみ影響します。

  • behavior — API は同じですが結果が異なります。チューニング済みのスクリプトを再確認してください。

変更はこの順序で影響度ごとにグループ化されています。コードを移植したいだけの場合は、末尾の 移行チェックリスト に進んでください。各コミットハッシュは GitHub 上の差分にリンクしています。

lcd モジュールが display に置き換え (major)

従来の lcd モジュールは削除され、共通の API を持つ SPIDisplay(SPI LCD シールド)、RGBDisplay / パラレル、DSIDisplay(MIPI-DSI)、TVDisplay の各バックエンドに分割された統合 display モジュールに置き換えられました。スクリプトは import lcd から display モジュールへ切り替え、適切なバックエンドオブジェクトを構築する必要があります。

コミット: 227824aac, 6c6336829

タッチモジュール、LED ピン、同梱ドライバ (minor)

汎用の lcd_touch モジュールは、専用の FT5X06 静電容量式タッチドライバモジュールに置き換えられました。LED ピン名は、すべてのボード間で一貫させるためにリネームされました(古い LED ピン名を参照しているスクリプトは更新が必要です)。同梱されていた hts221 / lps22h / lsm6dsox / lsm9ds1 IMU/センサードライバは、API がわずかに異なる upstream の micropython-lib 版に置き換えられました(同梱のサンプルもそれに合わせて更新されています)。

コミット: 86ad6dcdb, 9344c3b74, 2b5b7963b

未サポートのセンサー制御が警告を出すように (behavior)

sensor.set_auto_gain()set_auto_exposure()set_auto_whitebal()set_auto_blc() は、アクティブなセンサーがその制御をサポートしていない場合に RuntimeError を発生させる代わりに警告を表示するようになり、同一のスクリプトを機能の異なるセンサー間で実行できるようになりました。例外をキャッチすることに依存していたコードは更新が必要です。

コミット: dbf4996f2

移行チェックリスト

v4.5.0 へきれいに移植するための典型的な作業は次のとおりです:

  1. import lcd の使用を、新しい display モジュールと適切なバックエンドに置き換えます(display モジュールの変更)。

  2. lcd_touchFT5X06 に切り替え、古い LED ピン名を更新し、upstream の IMU ドライバ API を再確認します(タッチ/ピン/ドライバの変更)。

  3. 未サポートのセンサー制御を囲む try/except RuntimeError を機能チェックに置き換えます(センサー制御の変更)。