XIAO 用 Wi-Fi HaLow モジュールの使用開始

はじめに
このチュートリアルでは、Wio-WM6180 Wi-Fi HaLow モジュールと XIAO ESP32S3 を使用して Wi-Fi HaLow クライアントを構築するためのセットアップと使用方法をガイドします。Wi-Fi HaLow(IEEE 802.11ah)は、サブ 1 GHz 周波数帯で動作する長距離・低消費電力の IoT アプリケーション向けに設計されています。ハードウェアのセットアップ、ソフトウェアの設定、そして IoT プロジェクト用の Wi-Fi HaLow 接続を確立する方法をデモンストレーションします。
主な特徴
- 見通し距離最大 1km の長距離 Wi-Fi 接続
- IoT デバイスに最適な低消費電力
- 壁や障害物をより良く透過するサブ 1 GHz 動作
- XIAO ESP32S3 開発ボードとの互換性
- 簡単に従えるセットアップと設定プロセス
ハードウェア概要
以下の表は、Wio-WM6180 Wi-Fi HaLow モジュールの主要仕様を示しています:
特性 | 値 | 単位 |
---|---|---|
動作電圧 | 3.3 | V |
動作電流 | TBD | mA |
Wi-Fi プロトコル | IEEE 802.11ah | - |
周波数帯 | サブ 1 GHz | - |
通信距離 | 最大 1 | km |
インターフェース | SPI | - |
寸法 | TBD | mm |
Wi-Fi HaLow とは?
Wi-Fi HaLow は、モノのインターネット(IoT)アプリケーション向けに特別に設計された IEEE 802.11ah 標準に基づく無線ネットワーキングプロトコルです。サブ 1 GHz 周波数帯(通常 900 MHz)で動作する Wi-Fi HaLow は、従来の Wi-Fi に比べていくつかの重要な利点を提供します:

-
拡張された通信距離: Wi-Fi HaLow は見通し条件で最大 1 キロメートルの距離を達成でき、従来の Wi-Fi の通信距離を大幅に上回ります。
-
改善された透過性: より低い周波数の信号は壁やその他の障害物をより良く透過できるため、困難な環境に最適です。
-
低消費電力: IoT デバイスを念頭に置いて設計されており、Wi-Fi HaLow は接続デバイスの数年間のバッテリー寿命を可能にします。
-
スケーラビリティ: 単一のアクセスポイントに数千のデバイスの接続をサポートし、大規模な IoT 展開に最適です。
-
セキュリティ: WPA3 暗号化を含む Wi-Fi ファミリーの堅牢なセキュリティ機能を継承しています。
Wi-Fi HaLow が重要な理由
Wi-Fi HaLow は、長距離接続、低消費電力、および多数のデバイスを同時に処理する能力を必要とする IoT アプリケーションの成長するニーズに対応します。従来の Wi-Fi と LPWAN 技術の間のギャップを埋め、以下を提供します:
- 産業用 IoT: 工場、倉庫、産業環境での信頼性の高い接続を可能にします。
- スマート農業: センサーネットワーク用の大規模農業エリア全体のカバレッジを提供します。
- スマートシティ: 都市環境での接続デバイスの広範なネットワークをサポートします。
- 資産追跡: 貴重な資産や機器の長距離追跡を可能にします。
Wi-Fi の親しみやすさと低消費電力・長距離接続の利点を組み合わせることで、Wi-Fi HaLow は様々な業界での IoT アプリケーションの拡大において重要な役割を果たす準備ができています。
Wi-Fi HaLow システムアーキテクチャ
典型的な Wi-Fi HaLow ネットワークは、長距離・低消費電力の IoT 接続を可能にするために連携して動作するいくつかの主要コンポーネントで構成されています:

-
アクセスポイント(AP): Wi-Fi HaLow ネットワークの中央ハブで、接続の管理とデバイスとインターネット間のデータルーティングを担当します。
-
ステーション(STA): アクセスポイントに接続するクライアントデバイス。これらはセンサー、アクチュエーター、またはその他の IoT デバイスです。
-
ゲートウェイ: Wi-Fi HaLow ネットワークと他のネットワーク(例:イーサネットやセルラー)間のブリッジとして機能します。
このチュートリアルでは、Wi-Fi HaLow アクセスポイントに接続するステーション(STA)クライアントとして XIAO ESP32S3 を設定します。XIAO は WM6180 モジュールを使用して HaLow 接続を確立し、維持します。
MM-IoT-SDK フレームワーク
WM6180 モジュールは MorseMicro の MM-IoT-SDK を利用しており、以下の機能を提供します:
- マルチプロトコルサポート: 様々な IoT プロトコルとのシームレスな統合を可能にします
- 低消費電力管理: バッテリー駆動デバイス向けに最適化された消費電力
- セキュリティ機能: 内蔵の暗号化と認証メカニズム
- 簡単な設定: ネットワークセットアップと管理のための簡素化された API
MM-IoT-SDK アーキテクチャは複数のレイヤーで構成されています:
- ハードウェア抽象化レイヤー (HAL): 異なるハードウェアプラットフォーム向けの統一インターフェースを提供
- ネットワークスタック: Wi-Fi HaLow プロトコルスタックを実装
- アプリケーションレイヤー: アプリケーション開発とデバイス管理のための API を提供
このフレームワークにより、開発者はカスタムアプリケーションの柔軟性を維持しながら、Wi-Fi HaLow 機能を迅速に実装できます。
必要な材料
このチュートリアルを実行するために必要な材料は以下の通りです。
XIAO ESP32S3 Sense | XIAO ESP32C3 | XIAO ESP32C6 | Wio-WM6180 Wi-Fi HaLow Module for XIAO |
---|---|---|---|
![]() | ![]() | ![]() | ![]() |
このチュートリアルは、すべてのXIAO ESP32シリーズに適用されます。このチュートリアルでは、XIAO ESP32S3 Senseを例として使用します。
上記に加えて、WiFi-Halow使用に適した追加のアンテナを準備する必要がある場合があります。以下は、検証済みの推奨アンテナモデルです。
長距離屋内アンテナキット | 2.6dBi長距離アンテナ |
---|---|
![]() | ![]() |
WiFi-Halowモジュールにアンテナを接続するには、SMA to I-PEXアンテナケーブルの購入も必要になる場合があります。
SMA to I-PEXアンテナケーブル |
---|
![]() |
初回使用の場合は、アンテナの取り付けについて以下の動画を参考にしてください。
ESP-IDF v5.1.1のインストール
プログラミングを開始する前に、コンピューターにESP-IDF v5.1.1をインストールする必要があります。ESP-IDFはESP32シリーズチップの公式開発フレームワークです。
- Windows
- MacOS
- Linux
ステップ1. Windows用ESP-IDFツールインストーラーをダウンロード
Windows用のESP-IDFツールインストーラーをダウンロードします。このインストーラーには、ESP-IDF開発に必要なすべてのツールが含まれています。
ステップ2. インストーラーを実行
- ダウンロードしたインストーラーを管理者として実行
- プロンプトに従ってPython、Git、その他の必要なツールをインストール
- プロンプトが表示されたら、以下のオプションを選択:
- ESP-IDF v5.1.1をインストール
- Pythonをインストール
- Gitをインストール
- ESP-IDFツールをパスに追加
ステップ3. インストールの確認
新しいコマンドプロンプトを開いて以下を実行:
esp-idf --version
インストールが成功した場合、バージョン番号 5.1.1 が表示されるはずです。
ステップ 1. 前提条件をインストールする
ターミナルを開き、まだインストールしていない場合は Homebrew をインストールします:
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install.sh)"
必要なパッケージをインストールします:
brew install cmake ninja dfu-util
Step 2. Download and install ESP-IDF
mkdir -p ~/esp
cd ~/esp
git clone -b v5.1.1 --recursive https://github.com/espressif/esp-idf.git
cd esp-idf
./install.sh esp32s3
Step 3. Set up the environment variables
. $HOME/esp/esp-idf/export.sh
この行を ~/.profile
または ~/.zshrc
に追加して、新しいターミナルを開いたときに環境変数を自動的に設定します。
ステップ 1. 前提条件をインストール
Ubuntu と Debian の場合:
sudo apt-get install git wget flex bison gperf python3 python3-pip python3-setuptools cmake ninja-build ccache libffi-dev libssl-dev dfu-util libusb-1.0-0
他のディストリビューションについては、同等のパッケージをインストールしてください。
ステップ 2. ESP-IDF をダウンロードしてインストールする
mkdir -p ~/esp
cd ~/esp
git clone -b v5.1.1 --recursive https://github.com/espressif/esp-idf.git
cd esp-idf
./install.sh esp32s3
Step 3. Set up the environment variables
. $HOME/esp/esp-idf/export.sh
この行を ~/.bashrc
に追加して、新しいターミナルを開いた際に環境変数が自動的に設定されるようにします。
インストール後、すべての環境変数が適切に設定されるように、コンピュータの再起動が必要な場合があります。
ESP-IDF v5.1.1のインストールに関するより詳細な手順については、Espressifの公式ドキュメントを参照してください:
mm-iot-esp32 リポジトリのクローンと設定
以下の手順に従って、mm-iot-esp32 リポジトリをクローンし、環境変数を設定します:
- Windows
- MacOS
- Linux
ステップ 1. リポジトリをクローンする
cd %USERPROFILE%
git clone https://github.com/Seeed-Studio/mm-iot-esp32.git
ステップ 2. IDF変数をエクスポートする
cd %USERPROFILE%\mm-iot-esp32
export.bat
ステップ 3. MMIOT_ROOT 環境変数を設定する
これは Windows システムプロパティを通じて永続的に設定できます:
- システムプロパティを開く(Win + R を押して
sysdm.cpl
と入力) - 「環境変数」をクリック
- 「ユーザー環境変数」の下で「新規」をクリック
- 変数名:
MMIOT_ROOT
- 変数値:
C:\Users\YourUsername\mm-iot-esp32
(実際のパスに置き換えてください) - 「OK」をクリックして保存
または、コマンドプロンプトで一時的に設定することもできます:
set MMIOT_ROOT=C:\Users\YourUsername\mm-iot-esp32
ステップ 1. リポジトリをクローンする
cd ~
git clone https://github.com/Seeed-Studio/mm-iot-esp32.git
ステップ 2. IDF変数をエクスポートする
cd ~/mm-iot-esp32
source export.sh
ステップ 3. MMIOT_ROOT環境変数を設定する
一時的な使用の場合:
export MMIOT_ROOT=~/mm-iot-esp32
永続的に使用するには、シェル設定ファイルに追加してください:
# For bash users (add to ~/.bash_profile or ~/.bashrc)
echo 'export MMIOT_ROOT=~/mm-iot-esp32' >> ~/.bash_profile
# For zsh users (add to ~/.zshrc)
echo 'export MMIOT_ROOT=~/mm-iot-esp32' >> ~/.zshrc
その後、シェル設定を再読み込みしてください:
# For bash
source ~/.bash_profile
# For zsh
source ~/.zshrc
Step 1. Clone the repository
cd ~
git clone https://github.com/Seeed-Studio/mm-iot-esp32.git
ステップ 2. IDF変数をエクスポートする
cd ~/mm-iot-esp32
source export.sh
ステップ 3. MMIOT_ROOT環境変数を設定する
一時的な使用の場合:
export MMIOT_ROOT=~/mm-iot-esp32
永続的に使用するには、シェル設定ファイルに追加してください:
# For bash users
echo 'export MMIOT_ROOT=~/mm-iot-esp32' >> ~/.bashrc
# For zsh users
echo 'export MMIOT_ROOT=~/mm-iot-esp32' >> ~/.zshrc
その後、シェル設定を再読み込みします:
# For bash
source ~/.bashrc
# For zsh
source ~/.zshrc
MMIOT_ROOT環境変数を設定する際は、必ず絶対パスを使用してください。相対パスを使用すると、プロジェクトのビルド時に問題が発生する可能性があります。
環境変数を設定した後、変更を有効にするためにターミナルを一度閉じて再度開く必要がある場合があります。
サンプルファームウェアのビルド
mm-iot-esp32リポジトリには、さまざまな機能を実演するいくつかのサンプルアプリケーションが含まれています。これらのサンプルをビルドして設定する方法は以下の通りです:
サンプルアプリケーションの場所
すべてのサンプルアプリケーションは、リポジトリのexamples
ディレクトリにあります。利用可能なサンプルには以下が含まれます:
scan
: Wi-Fiスキャンサンプルiperf
: iperfサーバーサンプルsta_reboot
: Wi-Fiステーション再起動サンプルsta_connect
: Wi-Fiステーション接続サンプルweb_camera_server
: Webカメラサーバーサンプル- その他...
ネットワーク認証情報の設定
ファームウェアをビルドする前に、サンプルの設定ファイルでネットワーク設定を構成する必要があります:
- 選択したサンプルディレクトリに移動します:
cd $MMIOT_ROOT/examples/example_name
- 設定ファイルを編集します:
# Open the configuration file
nano src/mm_app_loadconfig.c
- このファイルでは、以下を変更できます:
- 国コード(製品は現在北米でのみ利用可能なため、US に設定する必要があります)
- Wi-Fi HaLow ネットワーク認証情報
- その他のネットワーク関連パラメータ
国コードに関する重要な注意事項:
- この製品は現在北米市場でのみ利用可能なため、国コードは「US」に設定する必要があります
- 規制要件により、この製品は他の地域ではまだ利用できません
- 北米以外の地域でこの製品を使用すると、現地の規制に違反する可能性があります
ビルドプロセス
ネットワーク設定を構成した後、以下のコマンドを使用してファームウェアをビルドできます:
idf.py set-target esp32s3
idf.py fullclean
idf.py build
idf.py set-target
コマンドは各例につき一度だけ実行する必要がありますidf.py fullclean
は以前のビルド成果物をすべて削除してクリーンビルドを確実にします- ビルドが成功すると、ファームウェアバイナリは
build
ディレクトリに配置されます
ビルド出力
ビルドが成功すると、以下のような出力が表示されます:
# Project build complete. To flash, run this command:
idf.py -p (PORT) flash
以下に、いくつかの例を示します。
例 1. スキャン
この例では、周辺で利用可能な Wi-Fi HaLow ネットワークをスキャンする方法を示します。以下の手順に従って、スキャン例をビルドして実行してください:
ステップ 1: スキャン例に移動する
cd ~/mm-iot-esp32/example/scan
ステップ2: 国コードの設定
- 設定ファイルを開く:
nano main/src/mm_app_loadconfig.c
- 国コード行を見つけて修正します:
#define COUNTRY_CODE "US" // Must use "US" as the product is only available for North America
ステップ 3: ハードウェアセットアップ
-
Wio-WM6180 Wi-Fi HaLow モジュールを XIAO ESP32S3 に接続します
-
XIAO ESP32S3 を USB 経由でコンピュータに接続します
ステップ 4: ビルドとフラッシュ
以下のコマンドを順番に実行します:
idf.py set-target esp32s3
idf.py fullclean
idf.py build
idf.py flash monitor
ステップ5: 結果の監視
すべてが正常に動作している場合:
- フラッシュ後にシリアルモニターが自動的に開始されます
- プログラムがWi-Fi HaLowネットワークのスキャンを開始します
- 範囲内にWi-Fi HaLowゲートウェイがある場合、その情報がシリアルモニターに表示されます
シリアルモニターでの出力例:

- ネットワークを検出するために、近くにWi-Fi HaLowゲートウェイがあることを確認してください
- スキャンプロセスは継続的に実行されるため、利用可能なネットワークの定期的な更新が表示されます
- Ctrl+Cを押してモニターを停止し、プログラムを終了します
ネットワークが表示されない場合:
- Wi-Fi HaLowゲートウェイの電源が入っており、正常に機能していることを確認してください
- ゲートウェイの範囲内にいることを確認してください
- モジュールがXIAO ESP32S3に正しく接続されていることを確認してください
例2. iperf
この例では、iPerfを使用してWi-Fi HaLow接続のネットワークパフォーマンスをテストする方法を示します。以下の手順に従ってiPerfの例をビルドして実行してください:
ステップ1: iPerfの例に移動
cd ~/mm-iot-esp32/example/iperf
ステップ2: ネットワーク設定の構成
- 設定ファイルを開く:
nano main/src/mm_app_loadconfig.c
- 以下のパラメータを変更してください:
// Set country code (must be "US" for North America)
#define COUNTRY_CODE "US"
// Set your Wi-Fi HaLow network credentials
#define SSID Your_HaLow_SSID // Replace with your network name
#define SAE_PASSPHRASE Your_Password // Replace with your network password
ステップ 3: ハードウェアセットアップ
- Wio-WM6180 Wi-Fi HaLow モジュールを XIAO ESP32S3 に接続します
- XIAO ESP32S3 を USB 経由でコンピュータに接続します
ステップ 4: ビルドとフラッシュ
以下のコマンドを順番に実行します:
idf.py set-target esp32s3
idf.py fullclean
idf.py build
idf.py flash monitor
ステップ5: パフォーマンステストの実行
プログラムが正常に動作すると、iPerfサービスが起動するのが確認できます。これで、Wi-Fi HaLowゲートウェイからパフォーマンステストを実行できます。
IPv4テストの場合、ゲートウェイで以下のコマンドを実行してください:
iperf -c <device_ip> -p <port> -i 1 -u -b 20M
For IPv6 testing, execute this command on your gateway:
iperf -c <device_ip>%wlan0 -p <port> -i 1 -V -u -b 20M
パラメータの説明:
-c
: クライアントモードで実行-p
: ポート番号-i
: レポート間隔(1秒)-u
: UDPプロトコルを使用-b
: 目標帯域幅(20 Mbps)-V
: IPv6モード(IPv6テストのみ)

- パフォーマンステストを実行する前に、デバイスがWi-Fi HaLowネットワークに正常に接続されていることを確認してください
- 接続後、デバイスのIPアドレスがシリアルモニターに表示されます
- テストニーズに基づいて帯域幅(-bパラメータ)を調整できます
よくある問題と解決策:
- 接続に失敗した場合は、ネットワーク認証情報を確認してください
- iPerfサービスが開始されない場合は、ハードウェア接続を確認してください
- パフォーマンスが悪い場合は、ゲートウェイの良好な範囲内にいることを確認してください
例3. web_camera_server
この例では、XIAO ESP32S3 SenseからWi-Fi HaLowネットワーク経由でカメラフィードをストリーミングする方法を示します。以下の手順に従ってWebカメラサーバーを構築して実行してください:
ステップ1: Webカメラの例に移動
cd ~/mm-iot-esp32/example/web_camera_serve
ステップ2: ネットワーク設定の構成
- 設定ファイルを開く:
nano main/src/mm_app_loadconfig.c
- Wi-Fi HaLow認証情報を変更します:
// Set your Wi-Fi HaLow network credentials
#define SSID Your_HaLow_SSID // Replace with your network name
#define SAE_PASSPHRASE Your_Password // Replace with your network password
ステップ 3: ハードウェアセットアップ
- Wio-WM6180 Wi-Fi HaLow モジュールを XIAO ESP32S3 Sense に接続します
- XIAO ESP32S3 Sense のカメラモジュールが適切に接続されていることを確認します
- XIAO ESP32S3 Sense を USB 経由でコンピュータに接続します
ステップ 4: ビルドとフラッシュ
以下のコマンドを順番に実行します:
idf.py set-target esp32s3
idf.py fullclean
idf.py build
idf.py flash monitor
ステップ5: カメラフィードにアクセスする
プログラムが正常に動作したら:
- シリアルモニターに表示されるIPアドレスをメモする
- Wi-Fi HaLowゲートウェイと同じネットワークに接続されている任意のデバイスでWebブラウザを開く
- ブラウザのアドレスバーにIPアドレスを入力する
- XIAO ESP32S3 Senseからのライブカメラフィードが表示されるはずです
URLの例:
http://192.168.4.1

最適なストリーミング体験のために:
- より良い画質のために良好な照明条件を確保してください
- XIAO ESP32S3 SenseをWi-Fi HaLowゲートウェイの良好な範囲内に保ってください
- 最適な互換性のために最新のWebブラウザを使用してください
トラブルシューティング:
- カメラフィードにアクセスできない場合は、デバイスがWi-Fi HaLowゲートウェイと同じネットワーク上にあることを確認してください
- 画像が表示されない場合は、カメラモジュールが正しく接続されていることを確認してください
- ストリームが遅延する場合は、Wi-Fi HaLowゲートウェイに近づいてみてください
リソース
- [GITHUB] mm-iot-esp32 repository
- [GITHUB] mm-iot Document
- [PDF] WI-FI_HALOW_FGH100M_EXT01_V30_SCH_20241107
- [KiCAD] WI-FI_HALOW_FGH100M_EXT01_V30 KiCAD PCB File
- [PDF] Quectel_FGH100M-H_Short-Range_Module_Specification_V1.0.0
技術サポート & 製品ディスカッション
私たちの製品をお選びいただき、ありがとうございます!私たちは、お客様の製品体験が可能な限りスムーズになるよう、さまざまなサポートを提供しています。異なる好みやニーズに対応するため、複数のコミュニケーションチャンネルを提供しています。