| [NXP Matter デモ構築ガイド 2] へ |
目次
はじめに
次世代スマートホーム通信規格の「Matter」は業界統一のオープンソース接続規格です。
メーカーを問わず、スマートホーム・ネットワークを構築することができ、より便利に IoT 機器を使用することができます。
Matter で採用されている通信規格に、Wi-Fi と Thread と Bluetooth Low Energy (BLE) があります。
Wi-Fi と Thread はデータ通信で使用され、Thread は低消費電力が要求される製品で使用されます。
BLE は接続を確立させるための通信(コミッショニング)にのみ使用されます。
今回は、Thread と BLE を搭載した電球のスマートホーム機器(エッジノード)を想定したデモを構築し、動作確認を実施する手法を解説していきます。
接続構成は図1の通りです。
図1:デモの接続構成図
NXP Matter ソリューションの詳細は下記コンテンツをご覧ください。
参考:NXP 製品で実現する次世代スマートホーム通信規格「Matter」 - マクニカ (macnica.co.jp)
注記:今回使用する評価ボードは、技適未取得機器を用いた実験等の特例制度 (soumu.go.jp) を取得したうえでご使用ください。
1. デモ構築環境の準備
必要な機材を表1に記載します。
サンプルソフトウェアのビルド PC は Windows か Linux を選択できます。
| 名称 | 概要 |
| IOTZTB-DK006 |
K32W061 と拡張ボードが含まれており、Matter のThread BLE 通信を検証できる評価ボードです。 エッジノード端末として動作させます。 |
| Google Nest Hub 第2世代 |
Wi-Fi、BLE、Thread を搭載し音声認識機能で、スマートホーム機器を操作できます。 Wi-Fi と Thread をブリッジするボーダールータとして動作させます。 最新バージョンにアップデートしておきます。 |
|
Andoroid スマートフォン またはタブレット (Google Pixel 6a を使用) |
Android OS (8.1) 以降 |
| Wi-Fi ルーター | インターネットとの接続用に Wi-Fi ルーターが必要です。 |
|
Windows PC |
サンプルソフトウェアのビルド(WSL使用)、 バイナリーファイルの書き込み、 EVK 起動後のログ確認用として使用します |
|
Linux PC (必要に応じて) |
サンプルソフトウェアのビルドとして使用します |
1-1. Android スマートフォンの準備
Andoroid スマートフォン は下記手順で、準備が必要です
- Android OS (8.1) 以降にアップデート
- Google Play service を 22.36.15 以上にアップデート
- Google Home App をインストール
- 以上により System -> Google -> Devices & sharing に matter devices が表示されることを確認
- 表示されない場合は、Google Home App をアンインストールしてから再インストールする
- Android の開発者向けオプションを有効にする
参考:デバイスの開発者向けオプションを設定する | Android Studio | Android Developers
1-2. Google Home Developer Console への登録
デモを動作させる為には、Google Home Developer Console への登録が必要です。
デモサンプルソフトウェアで定義されている、テスト Vendor ID と Product ID の登録を行います。
Google 提供の手順書を参考に、下記手順を実施ください。
- Developer Console に登録
- Project を作成し、カンパニープロファイルの承認を取得
- Vendor ID と Product ID の登録(テスト環境で設定する ID 番号は起動ログから確認可能。5-2 を参照)
参考:デベロッパー プロジェクトを作成する | Matter | Google Home Developers
注記:スマートフォンとGoogle Nest Hub と Google Home Developer Console は同一の Google アカウントでログインする必要があります。
2. 開発環境の準備
IOTZTB-DK006 に搭載している K32W061 の Matter 開発環境の例としては2つあります。
- Windows 10 WSL Ubuntu 20.04 LTS
- Linux Ubuntu 20.04 (64 bit) (Linux Virtual Machine で Windows 上で構築しても可能)
このコンテンツでの開発環境は Linux Ubuntu 20.04 (64 bit) PC を使用しています。
詳しい手順は下記資料をご覧ください。
参考:Getting started with K32W0x1 in Matter
Ubuntu 20.04 のターミナル画面で、パッケージの更新を行い、開発環境を構築しておきます。
$ sudo apt update
$ sudo apt upgrade -y
$ sudo apt-get install git gcc g++ python pkg-config libssl-dev libdbus-1-dev libglib2.0-dev libavahi-client-dev ninja-build python3-venv python3-dev python3-pip unzip libgirepository1.0-dev libcairo2-dev gcc-arm-none-eabi
WSL の場合下記も実施します
$ sudo apt-get install dos2unix
3. K32W061 のソフトウェア・ビルド
詳しい ビルド手順は、下記サイトの Readme をご覧ください。
参考:matter/examples/lighting-app/nxp/k32w/k32w0 at v1.1.0.1-tag-nxp · NXP/matter · GitHub
Ubuntu 20.04 のターミナル画面で操作していきます。
NXP K32W061 SDK をダウンロードし、NXP_K32W0_SDK_ROOT に SDK を解凍したパスを保存します。環境に併せてパスを設定してください。
$ wget https://cache.nxp.com/lgfiles/bsps/SDK_2_6_11_K32W061DK6.zip
$ unzip SDK_2_6_11_K32W061DK6.zip
$ export NXP_K32W0_SDK_ROOT=~/Documents/SDK_2_6_8_K32W061DK6
Matter コードをダウンロードし、activate.sh で環境設定します。
$ git clone https://github.com/NXPmicro/matter
$ cd matter/
$ git checkout v1.1.0.1-tag-nxp
$ git pull
$ git submodule update --init --recursive
$ source ./scripts/activate.sh
K32W061 Lighting Example Application のビルドを実施します。
成功すると、out/debug/chip-k32w0x-light-example.bin が生成されます。
$ cd examples/lighting-app/nxp/k32w/k32w0
$ gn gen out/debug --args="k32w0_sdk_root=\"${NXP_K32W0_SDK_ROOT}\" chip_with_OM15082=1 chip_with_ot_cli=0 is_debug=false chip_crypto=\"platform\" chip_with_se05x=0 chip_pw_tokenizer_logging=false chip_enable_ota_requestor=false"
$ ninja -C out/debug
ポイント:gn gen コマンドにある chip_pw_tokenizer_logging=false オプションはコミッショニングで使用する QR コードの URL をログで出力します。メモリー使用量が増加します。
ポイント:gn gen コマンドにある chip_enable_ota_requestor=false オプションは OTA 機能を OFF にします。メモリー使用量が減少します。
4. ソフトウェアの書き込み
詳しい書き込み手順は下記資料とサイトをご覧ください。
参考:Getting started with K32W0x1 in Matter
参考:ot-nxp/src/k32w0/k32w061 at main · openthread/ot-nxp · GitHub
Windows PC で書き込み作業を実施していきます。
ダウンロードした SDK_2_6_11_K32W061DK6\tools\JN-SW-4407-DK6-Flash-Programmer にインストーラーとドキュメントが用意されています。
インストーラーを Windows PC で実行すると、DK6-Flash-Programmer がインストールされます。
図2:SDK に格納されている、書き込みツール・インストーラー
Windows コマンドプロンプト で DK6Programmer.exe を実行し書き込みをしていきます。
- EVK の J4 J7 ジャンパーを真ん中の位置に接続します(JN UART- FTDI)
- FTDI USB PORT と Windows PC を接続します。
- DK6Programmer.exe と同じフォルダーに out/debug/chip-k32w0x-light-example.bin をコピーした場合、下記コマンドで書き込み可能です。
> DK6Programmer.exe --list
> DK6Programmer.exe -s COM25 -p chip-k32w0x-light-example.bin
図3:Windows コマンドプロンプトでの実行例
書き込みが完了後、Windows PC の Tera Term を起動し COM25 を指定し、ボードをリセットすれば、起動ログを確認できます。
図4:K32W061-EVK 起動ログの例
ポイント:Tera Term の設定
-
- スピード:115200
- データ:8 bit
- パリティ:none
- ストップビッチ:1 bits
- フロー制御:none
5. Google Nest Hub 2 との接続
Google が提供している接続手順を参考に、補足情報交えて接続方法を解説します。
図5 に K32W061-EVK の スイッチと LED の構成図を記載します。
LED D3 を照明として動作させるデモになっています。
ポイント:SW2 は接続をやり直す際に押すことで、マイコン内に残っている接続履歴を削除できます。再度接続を試みる際は押すようにしてください。
図5:K32W061-EVK の スイッチと LED の構成図
5-1. Google Nest Hub 2 と Android スマートフォンの接続
Google Nest Hub 2 を Wi-Fi ルーターに接続し、スマートフォンから操作や音声操作ができる状態にします。接続方法は Google 提供の手順通り実施してください。
参考:Google Nest のスピーカーやディスプレイを Wi-Fi に接続する - Google Nest ヘルプ
5-2. Google Nest Hub 2 と K32W061-EVK の Thread 接続
Google Nest Hub 2 と K32W061-EVK を Thread で接続するには、スマートフォンにインストールされている Google Home App で操作していきます。
参考:Google Home アプリで Matter 対応デバイスを管理する - Google Nest ヘルプ
- K32W061-EVK を PC に接続して電源を入れます
- PC で Tera Term を起動して、COM Port のログが出力されることを確認します
- Tera Term のログに表示される URL を WEB ブラウザーにコピーして QR コードを表示させます
(ポイント:QR コードの表示方法を参照) - 上記 Google 提供の手順通り作業を実施していきます
(デバイス検出画面が出たら、EVK にある「BLE アドバタイズ開始スイッチ」を押します) - QR コードをスキャンする手順が出てきたら、QR コードをスキャンします
- 接続に成功して、Matter 対応デバイスを配置する部屋とデバイス名を設定したら完了です
Google Nest Hub に「OK Google ~~~ を点けて」と声をかけると音声で操作できることを確認できるかと思います。
ポイント:QR コードの表示方法
手順2で出力されたログに "[SVR] Copy/paste the below URL in a browser to see the QR Code:" とQR コード用の URL が表示されますので、そちらを WEB ブラウザーに張り付けると表示されます。
図6:QR コードの表示方法
ポイント:Google Home Developer Console で登録する Vender ID Device ID の確認方法
サンプルプロジェクト内では、テスト環境の Vender ID と Device ID が事前に用意されています。明示的に変更する必要がない場合、こちらの ID を使用することでテスト環境を構築可能です。
下記ログでは、Vender ID =65521 (0xFFF1) 、Product ID =32773 (0x8005) となりますので、Google Home Developer Console では、それぞれ HEX で登録します。
コミッショニング(アドバタイズ)開始前に、Google Home Developer Console の WEB 上で登録をしておいてください。
図7:Device ID と Vender ID の確認方法
ポイント:うまく接続ができない場合は、K32W061-EVK の SW2 「デフォルトリセット」ボタンを押してから再度接続を試みてください。接続で使用された情報等が削除されます。
まとめ
NXP が提供している、IOTZTB-DK006 を購入することで、エッジノードデバイスの模擬テストを簡単に行う事が可能です。今回は、Github にある examples/lighting-app を使用しましたが、examples フォルダーに様々なデモが用意されていますので、色々と試してみてください。
次回、Matter の真骨頂でもある、「メーカーの垣根を超えたスマートホーム・ネットワーク接続の実現」のデモとして、 Alexa と Google Nest Hub 両方から制御するデモを紹介します。
| [NXP Matter デモ構築ガイド 2] へ |