XIAO 用 Wi-Fi HaLow モジュール入門ガイド

はじめに
このチュートリアルでは、Wio-WM6108 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-WM6108 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 は、IEEE 802.11ah 標準に基づく無線ネットワーキングプロトコルで、モノのインターネット(IoT)アプリケーション向けに特別に設計されています。サブ 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 は WM6108 モジュールを使用して HaLow 接続を確立・維持します。
MM-IoT-SDK フレームワーク
WM6108 モジュールは MorseMicro の MM-IoT-SDK を利用し、以下を提供します:
- マルチプロトコルサポート:様々な IoT プロトコルとのシームレスな統合を可能にします
- 低消費電力管理:バッテリー駆動デバイス用に最適化された消費電力
- セキュリティ機能:内蔵の暗号化と認証メカニズム
- 簡単な設定:ネットワークセットアップと管理のための簡素化された API
MM-IoT-SDK アーキテクチャは複数のレイヤーで構成されています:
- ハードウェア抽象化レイヤー(HAL):異なるハードウェアプラットフォーム用の統一インターフェースを提供
- ネットワークスタック:Wi-Fi HaLow プロトコルスタックを実装
- アプリケーションレイヤー:アプリケーション開発とデバイス管理用の API を提供
このフレームワークにより、開発者はカスタムアプリケーションの柔軟性を維持しながら、Wi-Fi HaLow 機能を迅速に実装できます。
必要な材料
このチュートリアルを実行するために必要な材料は以下の通りです。
このチュートリアルは XIAO ESP32-S3 シリーズにのみ適用されます。このチュートリアルでは XIAO ESP32S3 Sense を例として使用します。
上記に加えて、WiFi-Halow 使用に適した追加のアンテナを準備する必要がある場合があります。以下は検証済みの推奨アンテナモデルです。
アンテナを 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
ステップ 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
ステップ 3. 環境変数を設定
. $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
ステップ 3. 環境変数を設定
. $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と入力) - "Environment Variables"をクリック
- "User variables"の下で"New"をクリック
- 変数名:
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
ステップ 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
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. scan
このサンプルは、近くで利用可能なWi-Fi HaLowネットワークをスキャンする方法を実演します。scanサンプルをビルドして実行するには、以下の手順に従ってください:
ステップ 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-WM6108 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-WM6108 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
IPv6テストの場合、ゲートウェイで以下のコマンドを実行します:
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-WM6108 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 リポジトリ
- [GITHUB] mm-iot ドキュメント
- [PDF] WI-FI_HALOW_FGH100M_EXT01_V30_SCH_20241107
- [KiCAD] WI-FI_HALOW_FGH100M_EXT01_V30 KiCAD PCBファイル
- [PDF] Quectel_FGH100M-H_Short-Range_Module_Specification_V1.0.0
技術サポートと製品ディスカッション
弊社製品をお選びいただきありがとうございます!弊社製品での体験が可能な限りスムーズになるよう、さまざまなサポートを提供しています。さまざまな好みやニーズに対応するため、複数のコミュニケーションチャンネルを提供しています。



