ESP32-H2開発キットを使って、Matter over ThreadデバイスをDIYしました。前回に続いてEspressif社のESP ZeroCodeを利用します。Threadで動作するMatterデバイスは、まだどこからも製品化されていない(と思います)ので、貴重です。
(追記:Matter over Threadの押しボタンスイッチが最近売られているようです)
Matter over Thread
まずは、Matter over Threadについて説明します。現在のMatterの規格では、Matterは物理層・ネットワーク層として、
- Ethernet
- Wi-Fi (IEEE 802.11)
- Thread (IEEE 802.15.4)
の3種類をサポートしてます。Matterデバイスを無線動作させる場合、Wi-FiとThreadの選択肢があります。それぞれをMatter over Wi-Fi、Matter over Threadと呼ぶことにします。下の図のような関係になります。
Wi-Fi/Ethernetの世界とThreadとを橋渡しをするデバイスがThread Border Router (TBR)という装置です。Apple製品だと、HomePodやAppleTVがTBRの役割を果たします。
Threadは、Zigbeeと同じ物理層 (IEEE 802.15.4) の上に、IPv6を載せたものと考えて良いようです。こちらの記事で色々調べて書きました。
Wi-Fiと比べてThreadは、低消費電力、接続可能デバイスの個数が多い、メッシュ構造が可能など、IoTデバイスに適しています。特に家庭用のWi-Fiは、せいぜい数十個のデバイスを想定しているので、多数のデバイスを使用するIoT用途には不向きです。なので、Matterを使うならば、Matter over Wi-Fiではなくて、Matter over Threadを使いたいところです。
ESP32-H2
EspressifのESP32シリーズにESP32-H2があります。Matter over Threadのデバイスのために作られたチップです。こちらに紹介動画がありました。
ESP32-H2は、無線モジュールとしてBLEとIEEE802.15.4(ZigbeeやThreadの物理層)を搭載してます。Wi-Fiを搭載していません。電力消費の大きいWi-Fiを搭載しない、IoTデバイスに特化した構成です。
前の記事では、ESP32によるMatter over Wi-Fiの試作をしました。ツールにはESP ZeroCodeというWebアプリを使いました。このWebアプリのデバイス選択肢に、ESP32-H2があり、技術情報へのリンクも用意されてました。
これで是非ともMatter over ThreadのDIYをしてみたいと思いました。AliExpressで探したところ、Espressifの開発キット、ESP32-H2-DevKitM-1という製品が販売されていました。
購入したときは送料税込1,911円だったのですが、今は少し値上がりしているようです。600円くらいで買えるESP32無印と比べるとかなり高いです。
開封する
高級品だけあって、綺麗なマッチ箱のような箱に入って、到着しました。注文のタイミングによっては、OEM用のシンプルな包装の場合もあるようです。
ESP32無印とは違い、本体に技適マークの刻印はありません。USBポートはType-Cです。片方がシリアル接続用、もう一方がUSBだそうですが、プログラムをダウンロードする目的では、どちらでも使用可能でした。
Arduino IDEは使用不可
まずは試しにMacに接続してArduino IDEを起動してみました。サポートされてませんでした。ESPのボードマネージャのメニューに、ESP32-H2の選択肢が無いので、まだ対応していないのだと思います。ESP32無印を選んでLチカサンプルをプログラムしてみましたが、ダウンロードの際に下のようにエラーメッセージが出ます。
ZeroCodeを使う
ということで、ESP ZeroCodeを使いました。ESP ZeroCodeに関しては、以下の記事をご覧ください。こちらではESP32無印を使って、Matter over Wi-Fiの明るさ可変スマート電球を作っています。
これに従って作業します。前回の記事では、Windowsが必要だったり、コンデンサ追加する必要がありました。今回は全く問題なく、またMacのGoogle Chromeも使用可能でした。前回、コードのダウンロードで苦労したのは、安価な互換性品を使ったせいだったのかもしれません。ということで、以下ではmacOSを使用します。
MatterでLED照度制御
今回も、まずは、照度をコントロールできるスマート電球を目指してDIYします。GPIO 4番をPWM出力として使い、LEDを点灯します。そこでGPIO4に、220Ωの抵抗、LEDを取り付け、GNDに接続します。
前の記事に従って、ESP ZeroCodeで作業を進めます。macOSのGoogle Chromeを使って、ZeroCodeのページにサインインして、
Create a new productを選びます。
適当な名前をつけて、PWM電球を選択します。
次にESPモジュールを選択します。今回取り寄せたESP32-H2-DevkitM-1が選択肢にありますので、選びます。Zigbee, Thread, BLEのマークが付いてます。
部品構成のページでは、LEDをGPIO4に接続する設定になってます。このまま使います。
すると、ZeroCodeのサーバが必要なコードを作ってくれます。なので、これをダウンロードする先のシリアルポートを指定します。
シリアルポートを指定すると、正しくダウンロードが進み、進捗状況のパーセント表示も100%まで達しました。
ダウンロード終了すると、Matter設定用のQRコードが表示されます。
また、この状態で接続したLEDが2秒周期で点滅します。これはペアリング状態になっていることを示してます。
そこでiPhoneのホームから、「アクセサリを追加」を選びます。
カメラで、Chromeの画面に表示されたQRコードを読み取ります。
すると、電球アクセサリーの追加が開始されます。途中で「認定されていないアクセサリ」というメッセージが出ますが、「このまま追加」を選びます。
この結果、iPhoneやMacのホームに、照明アクセサリが表示されます。タップするとLEDがOn/Offします。
余白部分をタップすると、スライダーも表示されます。
ここまで非常に順調に、問題なく進みました。ペアリングも失敗することなく成功します。動作もとても安定しています。ESP32無印で作ったWi-Fi接続Matterデバイスよりも高速に反応している気もしましたが、実際に比較してみたらほぼ同じでした。
搭載RGB LEDを使う
この開発キットには、フルカラーのLEDが取り付けられています。白くて大きな部品なので目立ちます。開発キットの仕様を見ると、この部品は「アドレス可能なフルカラーLED」でGPIO8に接続されているようです。
個々のLEDをアドレス指定で制御できる、リボン形状フルカラーLEDがあります。多分それと同じ部品が搭載されていると予想しました。GPIO8からシリアルでコマンドを出すと、色や明るさが設定できると思われます。
ESP ZeroCodeのデバイス選択の一覧に、LED Stripという項目があります。キットに搭載のLEDに対して、これが使えるのではないかと思い、試してみました。
GPIO8に接続されているということなので(上記の写真にもプリント基板上にそのように表記されています)、GPIO8番を使用するよう設定します。
この後、コードを生成して、ダウンロードしたところ、基板上のLEDが点滅し、ペアリングモードになったことを表示しました。LEDは制御できているようです。iPhoneのホームからHomeKitに接続すると、iPhoneやMacのホームにOn/Offボタンが現れます。
余白をタップすると、RGB色を変更できました。操作している様子を動画で示します。
本当にThreadなのか?
ということで、キットの基板に搭載されたフルカラーLEDを、Matterデバイスとしてコントロールができました。USBケーブルを接続するだけなので、DIY要素は皆無です。プログラムもESP ZeroCodeで設定しただけでした。Matter over Threadのフルカラー照明を簡単に試せるので、楽しいです。
これが本当にThreadで接続しているかどうか、確認するのは難しいです。というのは、HomeKitからは、どの経路で接続しているかは抽象化されているようで、「詳細メニュー」を見ても表示されていません。ESP32-H2搭載の無線モジュールはThreadのみで、Wi-Fiが搭載されていないので、Threadだと信じるしかありません。
と思ってたら、ペアリングの過程で、以下のような表示が出ました。Matterのペアリングはとてもスムーズでしたが、一回だけこのような表示が出ました。
完了を押して、再度、ペアリングを進めると、もうこの表示は出ませんでした。TBRを担っているHomePod miniの機嫌が悪かったのかと思います。これによると、間違いなくThreadで接続するアクセサリとして扱われているようです。
まとめ
EspressifのESP32-H2は、Threadに対応したIoTモジュールです。この開発キットをAliExpressで購入して、ESP ZeroCodeを使って、Matterで動作する照明デバイスをLEDで試作しました。開発キットに搭載されているフルカラーLEDを使うと、すぐにカラー照明を作って試すことができます。Matter over Threadのデバイスは、まだまだ珍しいので、面白いです。
コメント