nRF Connect SDKは、電力最適化されたMatterサンプルを複数提供しており、デフォルトでMatter ICDを使用します。ただし、この演習では、nRF Connect SDKのMatterテンプレートサンプルを出発点として使用します。このサンプルは電力最適化されておらず、デフォルトではMatter ICDを使用しません。目標は、これを最適化し、さまざまなICD構成をテストし、Nordic Power Profiler Kit II(PPK II)を使用してデバイスの消費電力を測定することです。
電力最適化されたMatterサンプルとアプリケーションの完全なリストについては、Matterにおける消費電力の削減のドキュメントを参照してください。
この演習では、一部の手順を完了するためにNordic Power Profiler Kit II(PPK2)が必要です。PPK2をお持ちでない場合でも演習を進めることはできますが、消費電力測定の手順を実行することはできません。
1. この演習のベースコードを取得します。
Visual Studio Codeの「WELCOME」パネルで、Open an existing applicationを選択し、コースのGitHubリポジトリに移動してl4/l4_e1ディレクトリを開きます。アプリケーションはAPPLICATIONSパネルに表示されます。
このアプリケーションは、Matterテンプレートサンプルのコピーであり、この演習のコードスニペットを入力する場所の指示が追加されています。
2. ZAPツールを使用してICD SITを有効にします。
2.1 Visual Studio Codeの「APPLICATIONS」パネルで、アプリケーションを右クリックし、「Start New Terminal」を選択し、nRF Connect SDKバージョンと対応するツールチェーンバージョンを選択します。これにより、サンプルディレクトリでターミナルが開きます。
次のコマンドを使用してZAPツールを実行します。
west zap-guiTerminal command2.2 ウィンドウの左側のサイドパネルに表示されているEndpoint 0をクリックします。
2.3 検索フィールドに「ICD」と入力して、ICD Managementクラスタを見つけます。見つかったら、チェックボックスを使用してServerロールを有効にします。

2.4 歯車アイコンをクリックしてICD Managementの詳細を表示し、次の図に示されている必須属性が有効になっていることを確認します。

2.5 上部バーの「File->Save」をクリックして構成を保存し、アプリケーションを終了します。
2.6 VS Codeターミナルで次のコマンドを実行して、.zapファイルに基づいてコードを生成します。
west zap-generateTerminal command3. アプリケーションでICD SITと電力最適化を有効にします。
この手順で必要なすべての変更は、prj_release.confファイルで行われます。これは、消費電力を削減するためにデバッグ機能とログが無効化された、通常のサンプルのprj.confファイルのバリアントです。
3.1 消費電力を削減するために、LEDとウォッチドッグを無効にします。
prj_release.confファイルに次の構成を追加します。
CONFIG_NCS_SAMPLE_MATTER_LEDS=n
CONFIG_NCS_SAMPLE_MATTER_WATCHDOG=nKconfig3.2 RAM Power Downライブラリを有効にして、未使用のRAMブロックを無効にし、消費電力を削減します。
prj_release.confファイルに次の構成を追加します。
CONFIG_RAM_POWER_DOWN_LIBRARY=yKconfig3.3 無線トランシーバーのデフォルトTX電力を8 dBmから0 dBmに削減するために、prj_release.confファイルに次の構成を追加します。
CONFIG_OPENTHREAD_DEFAULT_TX_POWER=0Kconfig3.4 prj_release.confファイルに次の構成を追加して、ICDサポートを有効にします。
CONFIG_CHIP_ENABLE_ICD_SUPPORT=yKconfig3.5 prj_release.confファイルに次の行を追加して、デバイスを最小限のThreadデバイスとして構成します。
CONFIG_OPENTHREAD_MTD=y
CONFIG_OPENTHREAD_NORDIC_LIBRARY_MTD=yKconfigOpenThreadデバイスロールの必要な構成はMTDです。これは、 CONFIG_OPENTHREAD_NORDIC_LIBRARY_MTD=y およびCONFIG_OPENTHREAD_MTD=y Kconfigsをprj_release.confファイルで設定することによって構成されます。
3.6 ICDパラメータのデフォルト構成を変更します。
デフォルトでは、ICD SITは次の値を使用します。
スローポーリング間隔を1秒、ファストポーリング間隔を200ミリ秒、アイドルモード期間を30秒に設定して構成を変更します。prj_release.confファイルに次の構成を追加します。
CONFIG_CHIP_ICD_SLOW_POLL_INTERVAL=1000
CONFIG_CHIP_ICD_FAST_POLLING_INTERVAL=200
CONFIG_CHIP_ICD_IDLE_MODE_DURATION=30Kconfig4. アプリケーションをビルドしてDKにフラッシュします。
通常どおり、ビルド構成を追加してボードターゲットを選択します。
次に、「Extra CMake arguments」の下で、Add Argumentをクリックし、デフォルトの代わりにprj_release.conf を使用するために次の行を追加します。 prj.conf
-DFILE_SUFFIX=release
5. Thread Border Routerをセットアップします。
5.1 Thread Border Routerがまだ実行されていることを確認します。実行されていない場合:
5.1.1 新しいコマンドラインターミナルを開き、次のコマンドを実行してOpenThread Border Routerを実行します。
/dev/ttyACM0をThread Coprocessorで使用されているシリアルポート番号に置き換えます。
sudo docker run -it --rm --privileged --name otbr --network otbr -p 8080:80 \
--sysctl "net.ipv6.conf.all.disable_ipv6=0 net.ipv4.conf.all.forwarding=1 net.ipv6.conf.all.forwarding=1" \
--volume /dev/ttyACM0:/dev/radio nrfconnect/otbr:fbde28a --radio-url spinel+hdlc+uart:///dev/radio?uart-baudrate=1000000Terminal command「The container name “/otbr” is already in use by container…」のようなエラーが表示された場合は、次のコマンドを実行してください。
sudo docker kill otbrsudo ip -6 route del "fd11:22::/64" dev otbr0 via "fd11:db8:1::2"sudo ip link set dev otbr0 downsudo docker network rm otbr5.1.2 Webブラウザでhttp://localhost:8080/アドレスを開き、OpenThread Border Routerのグラフィカルユーザーインターフェースにアクセスします。
5.1.3 サイドパネルからFormタブに移動し、挿入されたすべてのデータが次の図と同じであることを確認します。次に、FORMボタンを押して、OpenThread Border RouterにThreadネットワークを形成し、Threadリーダーになるよう要求します。

5.1.4 新しいコマンドラインターミナルを開き、Docker内で実行されているThreadノードのステータスを確認します。
sudo docker exec -it otbr sh -c "sudo ot-ctl state"Terminal command出力は次のようになります。
leader
DoneTerminal手順6に進みます。
6. PPK IIを使用して消費電力測定セットアップを作成します。
6.1 デバイスのUSB DATA/POWERポートを使用して、micro-USBケーブルでPower Profiler Kit IIをコンピュータに接続します。
6.2 Power Profiler Kit IIのピンをDKのVDD nRF CURRENT MEASUREピンセットに接続します。
6.3 nRF Connect for Desktopを開き、Power Profilerアプリケーションを起動します。

6.4 Select Deviceの下のドロップダウンメニューでPPK2を選択します。
6.5 ソースメーターモードを選択し、供給電圧を3000 mVに設定し、電源出力を有効にします。

6.6 Startボタンをクリックして測定を開始します。
7. Matterファブリックへの参加後の消費電力を測定します。
CHIP Toolがまだ実行されていることを確認します。実行されていない場合:
7.1 新しいコマンドラインターミナルを開き、前の演習で取得したダウンロード済みバイナリファイルを次のコマンドで実行します。
PCの場合:
./chip-tool_x64 interactive start
Raspberry Piの場合:
./chip-tool_arm64 interactive start
7.2 デバイスをネットワークにコミッションします。
7.2.1 Bluetooth LE経由のMatterアドバタイジングが実行されていることを確認します。
デバイスのシリアルポートに次のログが表示されます。
I: 730208 [DL]CHIPoBLE advertising started
I: 730212 [DL]NFC Tag emulation startedTerminalMatterテンプレートサンプルでは、Bluetooth LE経由のMatterアドバタイジングが自動的に開始されますが、1時間後にタイムアウトします。アドバタイジングがタイムアウトした場合は、MatterデバイスのBUTTON0を押して再度開始してください。
7.2.2 CHIP Toolアプリケーションを実行しているターミナルウィンドウに戻ります。
次のコマンドを実行してコミッショニングプロセスを開始し、<thread dataset>引数にレッスン2演習1で取得してコンピュータに保存したThreadデータセットを入力します。<your_selected_node_id>を、他の演習で使用されていないランダムなノードID(例:5)に置き換えます。この同じ番号は、CHIP Tool経由でデバイスにコマンドを送信する際に使用されます。
pairing ble-thread <your_selected_node_id> hex:<thread dataset> 20202021 3840Terminal commandCHIP Toolがまだ実行されていることを確認します。実行されていない場合:
7.1 新しいコマンドラインターミナルを開き、前の演習で取得したダウンロード済みバイナリファイルを次のコマンドで実行します。
PCの場合:
./chip-tool_x64 interactive start
Raspberry Piの場合:
./chip-tool_arm64 interactive start
7.2 デバイスをネットワークにコミッションします。
7.2.1 MatterデバイスのBUTTON0を押して、Bluetooth LE経由のMatterアドバタイジングを開始します。
デバイスのシリアルポートに次のログが表示されます。
I: 730208 [DL]CHIPoBLE advertising started
I: 730212 [DL]NFC Tag emulation startedTerminal7.2.2 CHIP Toolアプリケーションを実行しているターミナルウィンドウに戻ります。
次のコマンドを実行し、<wifi_ssid>および<wifi_password>引数にWi-Fiネットワークデータを入力します。
<your_selected_node_id>を、他の演習で使用されていないランダムなノードID(例:5)に置き換えます。この同じ番号は、CHIP Tool経由でデバイスにコマンドを送信する際に使用されます。
pairing ble-wifi <your_selected_node_id> <wifi_ssid> <wifi_password> 20202021 3840Terminal commandPower Profilerアプリケーションのウィンドウで、コミッショニングプロセスが表示され、次の画像に示されているものと同様になります。

7.3 単一のスローポーリング期間中に消費される電力を測定します。
7.3.1 Power Profilerツールのマーカーを使用して測定値を取得します。
コミッショニング終了後、消費電力チャートが安定するまでしばらく待ちます。キャプチャを停止し、マーカーを使用して2つの定期的な電流ピーク間の時間を測定します。それらの間の時間は、手順3.4で構成したとおり、1秒に等しくなります。
電流ピーク間のスリープ電流は約2.37 uAになると予想され、単一のポーリング期間中に消費される電荷は約12 uCになると予想されます。これは次の図に示されています。

7.3.2 Online Power Profiler for Matter over Threadにアクセスして、測定値が予想どおりであることを確認します。
7.3.3 手順3.4で使用した値と一致する方法でMatter ICD設定を構成します。次の図に示されています。

7.3.4 表示されたチャートのData Pollにマウスカーソルを合わせて、その電荷を読み取ります。次の図に示されています。

7.3.5 表示されたチャートのSleep領域にマウスカーソルを合わせて、その電荷を読み取ります。次の図に示されています。

7.3.6 手順7.3.5と7.3.4で読み取った2つの値を合計します。単一のポーリング期間中に消費される合計電荷は約12.2 uCであり、これはPower Profilerツールを使用して測定された11.93 uCに非常に近い値です。
7.4 BasicInformationクラスタのNodeLabel属性をサブスクライブして、定期的なMatterデータレポートの送信をトリガーします。
7.4.1 CHIP Toolアプリケーションを実行しているターミナルウィンドウを開きます。
7.4.2 次のコマンドを実行して、コマンドの使用方法を学習します。
basicinformation subscribeTerminal commandおよび
basicinformation subscribe node-labelTerminal command7.4.2 次のコマンドを実行して、NodeLabel属性値をサブスクライブします。
basicinformation subscribe node-label 0 30 <your_selected_node_id> 0Terminal command選択したmax-interval値は、手順3.4で構成したとおり、30秒に等しくなります。
7.5 単一のアイドルモード期間中に消費される電力を測定します。
7.5.1 Power Profilerツールのマーカーを使用して測定値を取得します。
30秒以上待って、少なくとも2つのMatterデータレポートをキャプチャします。キャプチャを停止し、マーカーを使用して、Threadデータプールである小さなピークの中に見える2つの広い電流ピーク間の時間を測定します。それらの間の時間は、手順3.4で構成したとおり、30秒に等しくなります。
単一のサブスクリプション期間中に消費される電荷は約450 uCになると予想されます。これは次の図に示されています。

7.5.2 Online Power Profiler for Matter over Threadで、Operating Timeを30秒に等しくなるように構成します。

7.5.3 Generalセクションに記載されているTotal consumption over timeを読み取ります。値は459.5 uCであり、これはPower Profilerツールを使用して測定された450 uCに非常に近い値です。

8. ZAPツールを使用してICD LITを有効にします。
8.1 Visual Studio Codeの「WELCOME」パネルで、「Open terminal」を選択します。これにより、サンプルディレクトリでターミナルが開きます。開かない場合は、続行する前にサンプルディレクトリに移動してください。
次のコマンドを使用してZAPツールを実行します。
west zap-guiTerminal command8.2 ウィンドウの左側のサイドパネルに表示されているEndpoint 0をクリックします。
8.3 検索フィールドに「ICD」と入力して、ICD Managementクラスタを見つけます。見つかったら、歯車アイコンをクリックしてICD Managementの詳細を表示します。
8.4 Featuresタブで、ICD LITデバイスタイプに必須のCIP、UAT、LITS機能を有効にします。次の図に示されています。

8.5 必要なすべてのコマンドが有効になっていることを確認します。次の図に示されています。

8.6 必要なすべての属性が有効になっていることを確認します。次の図に示されています。

8.7 上部バーの「File->Save」をクリックして構成を保存し、アプリケーションを終了します。
8.8 VS Codeターミナルで次のコマンドを実行して、.zapファイルに基づいてコードを生成します。
west zap-generateTerminal command9. アプリケーションでICD LITを有効にします。
この手順で必要なすべての変更は、prj_release.confファイルに適用されます。
9.1 prj_release.confファイルに次の構成を追加して、ICD LITサポートを有効にします。
CONFIG_CHIP_ICD_LIT_SUPPORT=y
CONFIG_CHIP_ICD_REPORT_ON_ACTIVE_MODE=yKconfig9.2 ICDパラメータのデフォルト構成を変更します。デフォルトでは、ICD LITは次の値を使用します。
構成を変更する方法を学ぶために、スローポーリング間隔を60秒、ファストポーリング間隔を500ミリ秒、アイドルモード期間を60秒、アクティブモード閾値を5秒に設定しましょう。
手順3.5で追加した行をコメントアウトし、prj_release.confファイルに次の行を追加します。
CONFIG_CHIP_ICD_SLOW_POLL_INTERVAL=60000
CONFIG_CHIP_ICD_FAST_POLLING_INTERVAL=500
CONFIG_CHIP_ICD_IDLE_MODE_DURATION=60
CONFIG_CHIP_ICD_ACTIVE_MODE_THRESHOLD=5000Kconfig10. アプリケーションをビルドしてDKにフラッシュします。
通常どおり、ビルド構成を追加してボードターゲットを選択します。
次に、「Extra CMake arguments」の下で、Add Argumentをクリックし、デフォルトの代わりにprj_release.confを使用するために次の行を追加します。 prj.conf
-DFILE_SUFFIX=release
11. Matterファブリックへの参加後の消費電力を測定します。
CHIP Toolがまだ実行されていることを確認します。実行されていない場合:
11.1 新しいコマンドラインターミナルを開き、前の演習で取得したダウンロード済みバイナリファイルを次のコマンドで実行します。
PCの場合:
./chip-tool_x64 interactive start
Raspberry Piの場合:
./chip-tool_arm64 interactive start
11.2 デバイスをネットワークにコミッションします。
11.2.1 Bluetooth LE経由のMatterアドバタイジングが実行されていることを確認します。
デバイスのシリアルポートに次のログが表示されます。
I: 730208 [DL]CHIPoBLE advertising started
I: 730212 [DL]NFC Tag emulation startedTerminalMatterテンプレートサンプルでは、Bluetooth LE経由のMatterアドバタイジングが自動的に開始されますが、1時間後にタイムアウトします。アドバタイジングがタイムアウトした場合は、MatterデバイスのBUTTON0を押して再度開始してください。
11.2.2 CHIP Toolアプリケーションを実行しているターミナルウィンドウに戻ります。
次のコマンドを実行してコミッショニングプロセスを開始し、<thread dataset>引数にレッスン2演習1で取得してコンピュータに保存したThreadデータセットを入力します。<your_selected_node_id>を、他の演習で使用されていないランダムなノードID(例:6)に置き換えます。この同じ番号は、CHIP Tool経由でデバイスにコマンドを送信する際に使用されます。
pairing ble-thread <your_selected_node_id> hex:<thread dataset> 20202021 3840 --icd-registration trueTerminal commandコマンドは前の手順や演習とは異なり、追加のicd-registration trueフラグが含まれていることに注意してください。これにより、CHIP ToolがICD LITをテストするために必要なnRF MatterデバイスのICDクライアントとして自動的に登録されます。
CHIP Toolがまだ実行されていることを確認します。実行されていない場合:
11.1 新しいコマンドラインターミナルを開き、前の演習で取得したダウンロード済みバイナリファイルを次のコマンドで実行します。
PCの場合:
./chip-tool_x64 interactive start
Raspberry Piの場合:
./chip-tool_arm64 interactive start
11.2 デバイスをネットワークにコミッションします。
11.2.1 MatterデバイスのBUTTON0を押して、Bluetooth LE経由のMatterアドバタイジングを開始します。
デバイスのシリアルポートに次のログが表示されます。
I: 730208 [DL]CHIPoBLE advertising started
I: 730212 [DL]NFC Tag emulation startedTerminal11.2.2 CHIP Toolアプリケーションを実行しているターミナルウィンドウに戻ります。
次のコマンドを実行し、<wifi_ssid>および<wifi_password>引数にWi-Fiネットワークデータを入力します。
<your_selected_node_id>を、他の演習で使用されていないランダムなノードID(例:6)に置き換えます。この同じ番号は、CHIP Tool経由でデバイスにコマンドを送信する際に使用されます。
pairing ble-wifi <your_selected_node_id> <wifi_ssid> <wifi_password> 20202021 3840 --icd-registration trueTerminal commandコマンドは前の手順や演習とは異なり、追加のicd-registration trueフラグが含まれていることに注意してください。これにより、CHIP ToolがICD LITをテストするために必要なnRF MatterデバイスのICDクライアントとして自動的に登録されます。
11.2.3 次のコマンドを実行して、NodeLabel属性値をサブスクライブします。
basicinformation subscribe node-label 0 60 <your_selected_node_id> 0Terminal command選択したmax-interval値は、手順9.2で構成したとおり、60秒に等しくなります。
11.3 単一のアイドルモード期間中に消費される電力を測定します。
11.3.1 Power Profilerツールのマーカーを使用して測定値を取得します。
コミッショニング完了後60秒以上待って、少なくとも2つのMatterデータレポートをキャプチャします。キャプチャを停止し、マーカーを使用して2つの電流ピークのグループ間の時間を測定します。それらの間の時間は、手順9.2で構成したとおり、60秒に等しくなります。
単一のサブスクリプション期間中に消費される電荷は約350 uCになると予想されます。これは次の図に示されています。

Matterデータレポートを送信する際に、ICD SITの場合のような単一のピークではなく、電流ピークのグループが表示されることに注意してください。これは、ゼロ以外のアクティブモード閾値を使用した結果です。Matterデバイスは、Matterデータレポートを送信した後5秒間ファストポーリングを使用し続けます。これは、いくつかの短い電流ピークのグループとして表示されます。
11.3.2 Online Power Profiler for Matter over Threadで、手順9.2で使用した値と一致する方法でMatter ICD設定を構成します。次の図に示されています。

11.3.3 Online Power Profiler for Matter over Threadで、Operating Timeを70秒に等しくなるように構成します。
11.3.4 Generalセクションに記載されているTotal consumption over timeを読み取ります。値は380.8 uCであり、これはPower Profilerツールを使用して測定された346 uCに近い値です。
