esp32c6を使ったMatterデバイスの開発メモ

備忘録

前提

  • Windows10 Home+WSL2
  • 開発ボードは使わず、USBシリアル変換モジュール(AE-UM232R)を使ってESP32C6のフラッシュに書き込む

wsl2のubuntuにEspressifのMatterのSDKをインストールする

こちらを参照してインストールする。ちなみに、Matterデバイスのデバッグに使えそうなCHIP Toolの使用は断念した。wsl2からローカルネットワークにアクセスするためはブリッジネットワークの設定が必要となるが、Windows10 HomeだとHyper-V Managerが使用できないため(こちらの方法を使えば使用できる可能性はある)。

ubuntuからUSBシリアルコンバーターにアクセスできるようにする

  1. 管理者権限でコマンドプロンプトを起動
  2. usbデバイスのリストを表示してUSBシリアルコンバーターのバスIDを確認
usbipd list

以下、1-2がコンバーターのバスIDであるものとする。

  1. WSLでアクセスできるようバインド、アタッチする
usbipd bind --busid 1-2
usbipd attach --wsl --busid 1-2

2番目のコマンドはホストを再起動したら毎回実行しないといけないっぽい。

  1. 確認
    ubuntuでdmesgで以下のようなログが出ているか確認
[  822.222197] usbcore: registered new interface driver ftdi_sio
[  822.222215] usbserial: USB Serial support registered for FTDI USB Serial Device
[  822.222244] ftdi_sio 1-1:1.0: FTDI USB Serial Device converter detected
[  822.222266] usb 1-1: Detected FT232RL
[  822.224741] usb 1-1: FTDI USB Serial Device converter now attached to ttyUSB0

matterのサンプルプロジェクトのビルド手順

  1. wsl2のubuntu起動後に以下を実行
cd esp-idf; source ./export.sh; cd ..
cd esp-matter; source ./export.sh; cd ..
export IDF_CCACHE_ENABLE=1

esp-idf,esp-matterは導入したEspressifのSDKのディレクトリ。

  1. esp-matter/examplesの下のサンプルプロジェクト(例えばlight)のディレクトリに移動
  2. ビルドして実行
  • ビルドターゲットを設定
idf.py set-target esp32c6
  • esp32c6を書き込みモードで起動し、以下のコマンドでフラッシュをクリアする(いらないかもしれない)
idf.py erase_flash
  • esp32c6を書き込みモードで起動し、以下のコマンドでビルドして書き込む
idf.py flash monitor
  • esp32c6を通常モードで起動。ターミナルにシリアルのログが出力される。

補足:最初に試した時、Brownout detector was triggeredというメッセージが出て再起動を繰り返す不具合が出た。これは、USBシリアルコンバーターの3.3Vのピンから直接電圧を供給していたため(このピンは最大で50mAしか供給しないが、esp32c6にはより多くの電流が流れる)。3端子レギュレーターで電圧を供給するようにしたら安定した。

サンプルプロジェクトを書き込んだmatterデバイスをipadのHomeアプリにペアリングする

  1. homeを起動したらアクセサリを追加をタップ
  2. 以下のサイトのQRコードを読み込む
    https://docs.espressif.com/projects/esp-matter/en/latest/esp32/developing.html#commissioning

補足:今回使用したesp32c6は2.4GHzのWifiしかアクセスできないので、ipadも2.4GHzのWifiアクセスポイントにつないでおく必要がある

トラブルシューティング

esp32c6のフラッシュに書き込もうとすると/dev/ttyUSB0へのパーミッションがない、というエラーが出る

シリアルポートのアクセス権限がdialoutグループに設定されているので、以下のコマンドで現在のユーザーをdialoutグループに追加する

sudo usermod -aG dialout $USER

その後、ログアウトして再ログインするか、以下のコマンドで変更を適用

newgrp dialout

参考ページはこちら

Comments

Copied title and URL