Seeed Studio XIAO nRF54L15 Sense Zigbee
このチュートリアルでは、Seeed Studio XIAO nRF54L15 開発ボードで Zigbee アプリケーションを実装する方法を説明します。このボードは Wi-Fi、Bluetooth Low Energy (BLE)、Zigbee 接続を組み合わせており、IoT アプリケーション に最適です。このガイドの例では、NCS を使用して Zigbee 機能を実現します。
NCS の準備がまだの場合は、入門ガイド を参照してください。
nRF Connect SDK が完全にダウンロードされていない、または問題がある可能性を心配している場合は、以下の方法でダウンロードした nRF Connect SDK の整合性と正確性を確認できます。Manage west workspace を選択し、次に West Update を選択します(下図参照)。


目次
Zigbee 概要
Zigbee は IEEE 802.15.4 標準に基づく 低電力、低帯域幅 のワイヤレス通信プロトコルです。ホームオートメーション、スマートシティ、産業制御 などの IoT シナリオに特化しており、動的環境での信頼性の高い通信のための堅牢なメッシュネットワーク機能を提供します。
- Zigbee 関連の内容について簡単に説明します。アプリケーション例を直接参照したい場合は、先に進むこともできます。
Zigbee データモデル
Zigbee 通信は Zigbee Cluster Library (ZCL) に依存しており、これはデバイスがその機能をどのように整理し、相互作用するかを定義します。主要なコンポーネントには以下が含まれます:
-
デバイスタイプ Zigbee デバイス(スイッチ、センサー、ライトなど)は特定の動作で事前定義されており、機能的な クラスタ にグループ化されています。
-
クラスタ クラスタは以下の論理的なグループです:
- 属性:明度や温度などのデバイス状態を表します。
- コマンド:ライトをオンにしたり、明度を 50% に設定したりするアクションをトリガーします。
例:
- On/Off クラスタ:電源などのバイナリ状態を制御します。
- Level Control クラスタ:強度や明度を調整します。
- Temperature Measurement クラスタ:温度測定値を送信します。
- Scenes クラスタ:プリセット設定を保存・呼び出しします。
-
属性とコマンド 属性はデバイスデータ(状態、設定など)を保存し、コマンドはアクションを開始します。

Zigbee ネットワークアーキテクチャ
Zigbee ネットワークは 3 つの主要なノードタイプで構成されます:
-
Zigbee コーディネータ (ZC)
- ネットワークの中央ハブとして機能します。
- ネットワークの作成、デバイス認証、アドレス割り当てを処理します。
- ネットワークの初期化と管理を担当します。
- 各 Zigbee ネットワークには 1 つのコーディネータ のみ存在できます。
-
Zigbee ルータ (ZR)
- デバイス間でメッセージを中継してネットワーク範囲を拡張します。
- 追加デバイスのネットワーク参加をサポートします。
- 通常は主電源で動作し、継続的な動作と信頼性の高いメッセージ中継を確保します。
- バッテリー駆動のルータも可能ですが、エネルギー需要が高いため一般的ではありません。
もちろん、ルータは必須ではありません。距離が短い場合、ルータは省略できます。例えば、次のデモではルータを使用しません。
- Zigbee エンドデバイス (ZED)
- 親ノード(コーディネータまたはルータ)と通信する軽量で電力効率の良いデバイスです。
- 他のデバイスにメッセージをルーティングしません。
- バッテリー動作に最適化されており、通常はエネルギーを節約するためにスリープモードに入ります。
-
アドレッシングとルーティング:
- Zigbee は 16 ビットアドレッシングスキームを使用します。デバイスは直接アドレッシングと間接アドレッシングの組み合わせで通信します。
- ルーティング決定は、AODV(Ad hoc On-demand Distance Vector)などのアルゴリズムを使用してルータによって行われます。
-
電力管理:
- Zigbee エンドデバイスは低消費電力に最適化されています。多くの場合スリープモードで動作し、必要な時のみ起動します。
- ルータとコーディネータは一般的に主電源で動作し、一貫した可用性を確保します。
ネットワークトポロジ
Zigbee は、アプリケーション要件と環境に応じて、3 つの主要なネットワークトポロジをサポートします:
1. メッシュトポロジ
-
単一のコーディネータと複数のルータが自己修復可能で堅牢なネットワークを形成します。
-
通信パスが中断された場合、デバイスは動的にメッセージを再ルーティングでき、高い信頼性を確保します。
-
広範囲のカバレッジと冗長性を必要とする大規模ネットワークに最適です。
-
主な特徴:
- 動的再ルーティングにより高い信頼性を確保します。
- スケーラブルなカバレッジで大規模ネットワークをサポートします。
- 自己修復メカニズムにより耐障害性が向上します。
2. ツリートポロジ
-
コーディネータが階層構造のルートとして機能し、ルータがブランチを形成します。
-
各ブランチには複数のエンドデバイスまたは追加のルータを持つことができ、ツリー状の構造を作成します。
-
通信は階層パスに依存するため、潜在的な単一障害点が発生します。
-
主な特徴:
- 構造化された環境でうまく機能します。
- メッシュネットワークよりもセットアップと管理が簡単です。
- ブランチ障害に脆弱で、サブネットワーク全体が切断される可能性があります。
3. スタートポロジ
-
すべてのデバイスがコーディネータと直接通信します。
-
展開は簡単ですが、コーディネータが単一障害点になります。
-
デバイスがコーディネータの近くにある小規模ネットワークに最適です。
-
主な特徴:
- セットアップと管理が簡単です。
- 範囲とデバイス容量の制約により、スケーラビリティが制限されます。
- すべての通信をコーディネータに依存するため、耐障害性が低下します。
次のデモもこのタイプのトポロジです
NCS Zigbee の開始
ハードウェアの準備
3 つの XIAO nRF54L15 ボードを準備する必要があります。
| Seeed Studio XIAO nRF54L15 Sense |
|---|
![]() |
図に示すようにデバイスを接続してください

ソフトウェアの準備
ステップ 1. Zigbee R23 プラグインをインストールします
- NCS プラグインアイコンをクリック -> Create a new application を選択し、モードを Browse nRF Connect SDK Add-on Index として選択します。

- R23 を検索し、Zigbee R23 nRF Connect -> V1.2.1 に移動します


- 最新バージョンを選択 -> ワークスペースディレクトリを選択して作成します

Zigbee プラグインが完全にインストールされるまで待ち、NCS バージョンは自動的に v2.9.2 に切り替わります。 プラグインは非常に大きい(4GB以上)ため、ダウンロード処理には長時間かかります。ネットワーク接続を安定に保ち、途中でプロセスを中断しないでください。
- 作成完了時にポップアップ通知が表示されます。

ステップ 2. コードの準備

- Seeed Studio の公式リポジトリを参照してサンプルを取得してください。
- または、Git環境が設定されている場合は、先ほど指定したファイルディレクトリに直接コードをプルできます。
git clone https://github.com/StarSphere-1024/XIAO_nRF54L15_Zigbee_Examples

サンプルコードを取得した後、簡単に理解してみましょう:
1.boardsディレクトリには、異なる開発ボード間のハードウェア差異(ピンやペリフェラルなど)に適応するために使用されるボードレベルの設定ファイルが含まれています:
- 内部の.overlayファイルは「Device Tree Overlayファイル」で、チップ/開発ボードのデフォルトハードウェア設定を変更するために使用されます;
- 例えば、xiao_nrf54l15_nrf54l15_cpuapp.overlayは、XIAO nRF54L15専用に書かれた設定です(例:コード内でD3ピンをLED制御ピンにマッピング);

- その他のファイル(例:nrf54l15dk_xxx.overlay)は、Nordicの公式開発キット(DK)向けのものなので、気にする必要はありません—xiao_xxxで始まるファイルのみに注目してください。
- includeディレクトリはヘッダーファイルが保存される場所です:
- zb_dimmable_light.hは、Zigbee調光可能ライトの機能ヘッダーファイルで、ライトノードのZigbeeプロトコル関連機能とパラメータ(例:明度制御、ステータス報告)を定義します。
- srcディレクトリはコアコードが保存される場所です:
- main.cはプロジェクト全体のエントリファイルで、プログラム起動ロジック、Zigbeeネットワーク初期化、LED制御ロジック(例:スイッチコマンド受信後のD3ピンレベル制御)が含まれています。
- ルートディレクトリのファイル これらはプロジェクトのビルドと設定ファイルです(NCS/Zephyrフレームワークの標準ファイル):
- CMakeLists.txt:プロジェクトがコンパイルする必要があるファイルと依存するライブラリを定義するCMakeビルドスクリプト;
- Kconfig.sysbuild:プロジェクトのコンパイルオプションを設定(例:Zigbee機能の有効化、デバッグログ);
- prj.conf:プロジェクトのコア設定ファイルで、チップパラメータとZephyrシステムパラメータを設定(例:GPIO機能の有効化、Zigbeeプロトコルスタック);
- sample.yaml:プロジェクトの基本情報を記述するNCSサンプル設定ファイル(例:サポートされる開発ボード、機能説明)。
コードのコンパイルとフラッシュ
このガイドでは、既存のアプリケーション(light_switchを例として)をVS Code環境に追加し、ターゲットハードウェア(xiao_nrf54l15を例として)にコンパイルしてフラッシュする方法を説明します。
ステップ 1. アプリケーションをワークスペースに追加
-
APPLICATIONSパネルを見つける:サイドバーで「APPLICATIONS」という名前のパネルを見つけます。
-
既存のアプリケーションを追加:パネルの右上角にある「+」(既存のアプリケーションを追加)アイコンをクリックします。下図の赤いボックスで示されています。
-
アプリケーションフォルダを選択:ポップアップしたファイルブラウザウィンドウで、プロジェクトが配置されているフォルダ(例:D:...\workspace)に移動します。リストから、フラッシュしたいアプリケーションフォルダ—この例ではlight_switch—を選択し、「Open」ボタンをクリックします。

ステップ 2. コンパイルオプションの作成と設定
-
ビルド設定を追加:「APPLICATIONS」パネルで、新しく追加されたlight_switchプロジェクトが表示されます。その下の「+ Add build configuration」をクリックします。
-
コンパイルパラメータを設定:開いた「Add Build Configuration」ページで、以下の設定を行います:SDK and Toolchain:インストールされたnRF Connect SDKとツールチェーンは通常自動的に選択されます—バージョンが正しいことを確認してください。(先ほどダウンロードしたプラグインが完全であれば、ここでV2.9が自動的に選択されます。)
-
Board target:これが最も重要なステップです。コードが実行されるハードウェアを選択する必要があります。「Browse」をクリックするか、入力ボックスで直接検索します。図に示すように、選択する必要があるターゲットボードはxiao_nrf54l15/nrf54l15/cpuappです。「Custom」をチェックして、公式にサポートされていないボードを素早くフィルタリングまたは検索できます。
-
その他の設定:特別な要件がない限り、Kconfig fragmentsやDevicetree overlaysなどの他の設定は、今のところデフォルトのままにしておきます。

まず**「Custom」**をチェックして、公式にサポートされていないボードを素早くフィルタリングまたは検索し、その後選択する必要があるターゲットボード:xiao_nrf54l15/nrf54l15/cpuappを見つけることをお勧めします。直接検索すると、トラブルシューティングプロセスに時間がかかりすぎ、ターゲットボードが見つからない可能性があります。
- ボードレベルファイルを更新してください。ファイルが長期間更新されていない場合は、使用前に更新することをお勧めします。

詳細なチュートリアルについては、以下のリンクを参照してください。 入門ガイド。
ステップ 3. コンパイルとフラッシュ
-
ハードウェアを接続:ターゲットハードウェア(例:XIAO nRF54L15開発ボード)がデータケーブルを介してコンピュータに適切に接続されていることを確認します。
-
ターミナルを開く:NRF CONNECT拡張機能のWELCOMEパネルで、「Open terminal」オプションを見つけてクリックします(図の赤いボックスでマークされています)。

- プロジェクトディレクトリに移動:ターミナルで、cdコマンドを使用してプロジェクトフォルダに入ります。
cd D:\code\nrf54115_zigbee\workspace\light_switch\.lbuild
west flash
-
このパスを実際のプロジェクトパスに置き換えてください。
-
フラッシュプロセスを監視:ターミナルは、コンパイル進行状況、デバッガ(例:CMSIS-DAP)への接続、フラッシュ消去、データ書き込みプロセスを含む詳細なログを出力します。

-
同様に、同じ手順で残りの2つのコードプロジェクトをフラッシュします。
-
コードが正常にフラッシュされたかどうか心配な場合は、確認する方法があります:
- シリアルポート経由で開発ボードに接続し、シリアルポート出力を観察します(この方法はフラッシュ結果を確認するだけでなく、プログラム実行ログを直感的に表示でき、確認ロジックがより明確になります)。
Zigbeeへの接続
ステップ 1. Zigbeeへの接続
- CoordinatorプログラムがロードされたXIAO開発ボードの電源を入れて起動します。
- シリアルポートアシスタントでログを観察し、コーディネータがZigbeeスタック初期化とネットワークパラメータ設定を完了し、シリアルポート情報が出力されるまで待ちます。
- コーディネータの電源を入れたままにしてネットワークを継続的に維持し、後続のデバイスがネットワークに参加するための基盤を提供します。
ステップ 2. 電球端のネットワーク参加設定
-
電源が入ったコーディネータネットワークの準備ができた後、Light BulbプログラムがロードされたXIAO開発ボードの電源を入れて起動します。
-
電球端は自動的にネットワークスキャンを開始し、利用可能なZigbeeコーディネータネットワークを見つけます。
-
シリアルポートログを確認して、電球側がコーディネーターネットワークに正常に参加したことを確認します。 コアログの参考:

ステップ 3. ライトスイッチ側のネットワーク参加とデバイス検出
- 電球側がネットワークに正常に参加したことを確認した後、Light Switch プログラムがロードされた XIAO 開発ボードに電源を入れて起動します(必要に応じてオンボードボタンでファクトリーリセットをトリガーして、ネットワークの再スキャンを確実に行います)。 2.ライトスイッチ側は自動的に同じコーディネーターネットワークをスキャンして参加します。 コアログの参考:

- 電球側のシリアルポートログを確認して、コマンドが受信・実行され、LED がオン/オフ動作を完了することを確認します。コアログの参考:


Zigbee ネットワークリセット手順
ステップ 1. コーディネーターのネットワークリセット
ネットワークコーディネーターのオンボードボタンを押して、Zigbee ネットワークリセットを完了します。
ステップ 2. ライト制御デバイス(ライトスイッチ/電球)のリセットと再参加
- ライト制御デバイス(ライトスイッチ/電球)のオンボードボタンを長押しします;
- デバイスのリセットボタンを押します;
- オンボードボタンを離します。デバイスはリセットを完了し、自動的に新しい Zigbee ネットワークに参加します。
重要: デバイスがバッテリーで動作している場合、シリアルポートを明示的に無効にする必要があります。そうしないと、プログラムの起動に失敗します。
結果
すべてが順調に進めば、以下の結果が表示されます。

よくある質問
1.インストールルートディレクトリとして過度に長いディレクトリを使用しないでください。そうしないと、Windows で例を コンパイルする際に、ディレクトリ名が長すぎることによるコンパイルエラーが頻繁に発生します。

技術サポート & 製品ディスカッション
弊社製品をお選びいただき、ありがとうございます!弊社製品での体験が可能な限りスムーズになるよう、さまざまなサポートを提供しています。異なる好みやニーズに対応するため、複数のコミュニケーションチャンネルを用意しています。
