Raspberry Pi Pico 2 W: Rust による Matter 対応 Wi-Fi 電球の構築

Raspberry Pi Pico 2 W (RP2350) を使用して、Rustと rs-matter スタック、および Embassy async フレームワークを活用することで、完全に準拠した Matter スマートホームデバイスを構築できるようになりました。開発者は、クラウドアカウントを必要とせずに、Apple Home、Google Home、および Home Assistant と直接統合できるローカル専用のスマートホームハードウェアを構築できます。

RP2350へのMatterの実装

この実装の核となるのは、初期のコミッショニングフェーズに Bluetooth Low Energy (BLE) を使用し、ネットワーク接続に Wi-Fi を使用する Matter 対応 Wi-Fi 電球です。このデバイスは、GPIO ピンに接続された物理的な LED を切り替えるための標準的な Matter On/Off クラスターを公開します。

技術アーキテクチャ

  • Bare Metal 実行: このプロジェクトは、embassy-rp を使用して、ベアメタル上で完全に no_std で動作します。
  • Async フレームワーク: Embassy async フレームワークは、ステートマシンのロジックを管理するために使用され、従来の C ベースの組み込み開発と比較して実装を簡素化します。
  • Radio Coexistence (CoEx): 重要な技術的課題は、CYW43439 ワイヤレスチップの管理でした。無線通信が飽和したときにバスの破損を防ぐため、RP2350 のより高速な 150MHz コアクロックに合わせて PIO SPI クロック分周器を調整する必要がありました。
  • Multiplexing: このプロジェクトには、Bluetooth と Wi-Fi スタックを並行して安全にマルチプレックスするための async CoEx ランナーの設定が含まれています。

Matter 電球のためのハードウェアと配線

Matter 電球の例を再現するには、Raspberry Pi Pico 2 W を電流制限抵抗を介して外部 LED に接続します。

配線図:

  • GP15 (Pin 20) $\rightarrow$ 220-330 Ohm Resistor $\rightarrow$ LED Anode (+)
  • GND (Pin 18) $\rightarrow$ LED Cathode (-)

Home Assistant によるプロビジョニング

このデバイスは、スマートホームエコシステムへのシームレスな統合のために設計されています。プロビジョニングプロセスは以下の手順に従います:

  1. Advertising: Pico 2 W は起動時に BLE でアドバタイジングを開始します。
  2. Integration: Home Assistant コンパニオンアプリにおいて、ユーザーは Settings $\rightarrow$ Devices & Services $\rightarrow$ Add Integration $\rightarrow$ Add Matter device へと進みます。
  3. Authentication: ユーザーはデフォルトのセットアップコード 3497-0112-332 を入力するか、提供された QR コードをスキャンします。
  4. Connectivity: Home Assistant は BLE を介して Wi-Fi 認証情報を送信し、デバイスはネットワークに接続して、標準的な電球として表示されます。

追加の RP2350 Rust 例

Matter の実装に加えて、rust-rpico2-embassy-examples リポジトリは、Raspberry Pi Pico 2 のさまざまな周辺機器やセンサーの例を提供しています:

I2C センサーの統合

  • HS3003: 14ビット解像度の高性能な温度・湿度センサー。
  • ADXL345: $\pm 16$ g までの測定をサポートする 13ビット解像度の 3軸加速度計。

SPI ディスプレイとグラフィックス

  • Zermatt Example: Adafruit 2.2" TFT LCD 上に 320x240 の画像を描画します。
  • Zermatt Snow: 物理エンジンとオフスクリーン lcd-async フレームバッファを利用した高度な例です。CPU のブロッキングを避けるため、DMA を介してデータを転送します。

1-Wire プロトコル実装

  • DS18B20: 防水温度プローブ。この実装では、Cortex-M33 コア上で 1-Wire プロトコルの要求事項であるサブマイクロ秒のタイミングを実現するために、カスタムのサイクルアキュレートな PreciseDelay を使用しています。
  • DHT11: 低コストの温度・湿度センサー。ビット読み取りフェーズのタイミングの感度が高いため、この例は精度を確保するために release モードで実行する必要があります。

コミュニティの洞察と視点

プロジェクトに関する技術的な議論は、組み込み Rust のより親しみやすい方向へのシフトを強調しています:

"Rust on embedded は、Embassy と Pico SDK により、より親しみやすくなっています... async ランタイムにより、ステートマシンのロジックが C 言語の同等物よりもはるかにクリーンになりました。"

しかし、一部の開発者は、プロジェクトが「超低」電力であることを示している一方で、Wi-Fi モジュールの特定のバッテリー駆動操作やコインセルの適合性については、さらなるドキュメントが必要であると指摘しています。

他のコントリビューターは、Matter の IP ベースの性質を強調し、DIY エンジスアストが公式の C++ Matter SDK の複雑さなしに「このようなものをハックして作り上げる」ことができる価値を、強調しています。

Sources