ThreadプロトコルによるESP32C6デバイス間通信検証(ボーダールーターなし)


はじめに

IoT(Internet of Things)デバイスの通信プロトコルとして注目を集めているThreadプロトコル。本記事では、ESP32C6を2台使用してThreadプロトコルによる送受信の検証を行います。ボーダールーターを使用せず、デバイス間の直接通信を検証する方法を解説していきます。

Threadプロトコルとは

Threadは、IoT(Internet of Things)デバイス向けに設計された無線ネットワークプロトコルです。IPv6ベースの低消費電力メッシュネットワーク技術で、特にスマートホームや商業ビルの自動化アプリケーションに適しています。

主な特徴

Threadプロトコルには、以下のような特徴があります:

1. シンプルさと使いやすさ

  • 簡単なセットアップと起動プロセス
  • デバイス間の直接通信が可能
  • 自己設定・自己修復機能を持つメッシュネットワーク

2. 高度なセキュリティ

  • AES-128暗号化とパスワードベースの認証
  • すべての通信が暗号化され、認証されたデバイスのみがネットワークに参加可能

3. 信頼性と効率性

  • 自己修復メッシュネットワーク構造
  • 単一障害点がない分散型プロトコル
  • 低レイテンシーと低消費電力設計

4. スケーラビリティ

  • 数百のデバイスをサポート可能
  • スター型からメッシュ型まで、自動的にネットワークトポロジーを調整

5. IPv6ベース

  • 将来性の高いIPv6アドレッシングアーキテクチャを採用
  • 他のIP基盤のデバイスとの互換性

Threadの仕組み

Threadは802.15.4無線規格上で動作し、6LoWPAN(IPv6 over Low-power Wireless Personal Area Networks)を使用してIPv6通信を実現します。ネットワーク内のデバイスは直接通信するか、近隣デバイスを経由してメッセージを転送します。ボーダールーターと呼ばれる特殊なデバイスを使用して、ThreadネットワークをWi-Fiやインターネットなどの他のネットワークに接続します。

他のプロトコルとの比較

ZigbeeやZ-Waveなどの他の低電力メッシュネットワークプロトコルと比較して、Threadはより効率的なデバイス間通信、優れたスケーラビリティ、そしてネットワークの自己修復能力を提供します。

まとめ

Threadプロトコルは、IoTデバイスの接続性、セキュリティ、および効率性に関する多くの課題を解決する革新的な技術です。その柔軟性と将来性により、スマートホームや商業用ビルオートメーションの分野で急速に採用が進んでいます。開発者やユーザーにとって、より安全で信頼性の高いIoTエコシステムを構築するための強力なツールとなっています。

OpenThreadとは

OpenThreadは、GoogleがリリースしたThreadのオープンソース実装です。Threadは、IoT(Internet of Things)製品向けの低消費電力メッシュネットワーク技術で、安全性と将来性を両立させるよう設計されています。OpenThreadの主な特徴は以下の通りです:

  • IPv6ベースのプロトコル
  • メッシュネットワーク機能
  • 低消費電力
  • 高い信頼性
  • セキュリティ機能

OpenThreadは、すべてのThreadネットワークレイヤー(IPv6、6LoWPAN、IEEE 802.15.4 MACセキュリティ、メッシュリンクの確立、メッシュルーティング)を実装しています。

OpenThread CLI とは

OpenThread CLI(Command Line Interface)は、OpenThreadの構成と管理APIをインターフェースから使用できるツールです。開発者はこのCLIを使用して、OpenThreadの開発やテストを行うことができます。

CLIの主な機能

  • ネットワーク管理: Threadネットワークの作成、参加、離脱などの操作が可能です。
  • デバイス設定: チャンネル、PAN ID、ネットワークキーなどの設定ができます。
  • 状態確認: デバイスの現在の状態(リーダー、ルーター、子デバイスなど)を確認できます。
  • データセット操作: アクティブデータセットの初期化、コミット、表示が可能です。
  • TCP機能テスト: Thread ネットワーク上でTCPエンドポイント間の通信をテストできます。

OpenThread CLIは、開発者がThreadネットワークを効率的に構築、管理、テストするための強力なツールです。

Threadプロトコル通信の検証用機材

送信用・受信用の最低2セット必要です。

Seeed Studio XIAO ESP32C6【113991254】

【オプション】XIAO ESP32C3/C6用2.4GHzロッドアンテナ【103990623】

開発環境の構築

開発関連の構築については下記ページをご覧ください。

Threadデバイス用ファームウェア

サンプルプログラムディレクトリへ移動します。

cd ~/esp/v5.4/esp-idf/examples/openthread/ot_cli

ターゲットチップを指定します。

idf.py set-target esp32c6

設定を変更します。

idf.py menuconfig
  • Component Config → ESP System Settings → Channel for console oputput : USB Serial/JTAG Controller
  • Component config → OpenThread : Enable
  • Component config → OpenThread → Thread Core Features → Enable Commisioner: Enable
  • Component config → OpenThread → Thread Core Features → Enable Joiner: Enable

ビルドします。

idf.py build  

ESP32C6に書き込みます。送信・受信とも同一のバイナリを書き込みます。

idf.py -p /dev/ttyACM0 flash

デバイスの設定

次のサイトの情報を参考にデバイスを設定します。

ESP32C6にTera Termやminicom等でシリアル接続し、設定を行います。

新規のThreadネットワークを構築する

新しいネットワーク構成を生成します。

dataset init new

ネットワーク構成を表示します。

dataset

※表示された「Network Key」を控えておきます。

新しいデータセットを不揮発性のアクティブな運用データセットに commit ストレージです。

dataset commit active

Thread インターフェースを有効にします。

ifconfig up
thread start

Thread インターフェースに割り当てられた IPv6 アドレスを表示します。

ipaddr

Thread ネットワークに割り当てられた IPv6 プレフィックスを登録します。

prefix add fd00:dead:beef:cafe::/64 paros med
netdata register

Threadのネットワーク データを表示します。

netdata show

Thread インターフェースに割り当てられた IPv6 アドレスを表示します。

ipaddr

※最初に表示されるアドレスを控えておきます。

既存のネットワークに接続する

dataset networkkey ネットワークキー
dataset commit active

※事前に控えておいたネットワークキーを指定します。

Thread インターフェースを有効にします。

ifconfig up
thread start

ネットワークの接続が確立するまで、しばらく時間がかかります。

既存のネットワークに接続したら、Thread Network Data を表示します。

netdata show

Thread インターフェースに割り当てられた IPv6 アドレスを表示します。

ipaddr

※最初に表示されるアドレスを控えておきます。

デバイス間でのThread通信

1台を受信用、1台を送信用として検証します。

受信用デバイスの設定

udp open
udp bind :: 1234

送信用デバイスの設定

udp open
udp send 送信先IPアドレス 1234 hello_thread

上記コマンドを実行すると、受信側デバイスにメッセージが表示されます。

FAQ

Threadプロトコルとは何ですか?

Threadは、IoTデバイス向けに設計されたIPv6ベースの低消費電力メッシュネットワークプロトコルです。スマートホームや商業ビルの自動化アプリケーションに特に適しています。

Threadプロトコルの主な特徴は何ですか?

Threadプロトコルの主な特徴には以下があります:

  1. シンプルさと使いやすさ
  2. 高度なセキュリティ(AES-128暗号化)
  3. 信頼性と効率性(自己修復メッシュネットワーク)
  4. スケーラビリティ(数百のデバイスをサポート)
  5. IPv6ベース

Threadは他のプロトコルとどう違いますか?

ThreadはZigbeeやZ-Waveなどと比較して、より効率的なデバイス間通信、優れたスケーラビリティ、ネットワークの自己修復能力を提供します。

Threadプロトコル通信の検証に必要な機材は何ですか?

検証には最低2セットの機材が必要です。具体的には、Seeed Studio XIAO ESP32C6とXIAO ESP32C3/C6用2.4GHzロッドアンテナが推奨されています。

OpenThreadとは何ですか?

OpenThreadは、GoogleがリリースしたThreadのオープンソース実装です。IoT製品向けの低消費電力メッシュネットワーク技術であるThreadを実装しています。OpenThreadの主な特徴には、IPv6ベースのプロトコル、メッシュネットワーク機能、低消費電力、高い信頼性、セキュリティ機能があります。

OpenThread CLIとは何ですか?

OpenThread CLIは、OpenThreadの構成と管理APIをコマンドラインインターフェースから使用できるツールです。開発者がOpenThreadの開発やテストを行うために使用します。ネットワーク管理、デバイス設定、状態確認、データセット操作、TCP機能テストなどがあります。