XIAO Wi-Fi HaLow 模组快速上手

介绍
本教程将指导你使用 Wio-WM6108 Wi-Fi HaLow 模组与 XIAO ESP32S3 搭建一个 Wi-Fi HaLow 客户端。Wi-Fi HaLow(IEEE 802.11ah)专为远距离、低功耗的物联网应用设计,工作在 Sub-1 GHz 频段。我们将依次完成硬件搭建、软件配置,并演示如何为你的物联网项目建立 Wi-Fi HaLow 连接。
主要特性
- 最远可达 1km 视距的长距离 Wi-Fi 连接
- 低功耗,非常适合物联网设备
- Sub-1 GHz 工作频段,可更好地穿透墙体和障碍物
- 兼容 XIAO ESP32S3 开发板
- 简单易懂的搭建与配置流程
硬件概览
下表列出了 Wio-WM6108 Wi-Fi HaLow 模组的关键规格:
| 特性 | 数值 | 单位 |
|---|---|---|
| 工作电压 | 3.3(数字)/ 5.0(射频前端) | V |
| 工作电流 | TBD | mA |
| Wi-Fi 协议 | IEEE 802.11ah | - |
| 频段 | Sub-1 GHz | - |
| 通信距离 | 最远 1 | km |
| 接口 | SPI | - |
| 尺寸 | TBD | mm |
该板卡需要两个独立的电源输入:
- 3.3V 焊盘为模组的数字电源轨供电。
- 5.0V 焊盘通过独立电源轨为射频前端(发射功率放大器)供电。
当模组插在 XIAO 扩展板上时,这两路电源会通过扩展连接器自动提供。
但是,当通过焊盘接口将该板连接到主机系统(例如通过 SPI 连接到 Raspberry Pi)时,你必须同时连接 5V、3.3V 和 GND。
如果只连接 3.3V,模组仍然可以加载固件并正常接收,但无法以额定功率进行发射。
什么是 Wi-Fi HaLow?
Wi-Fi HaLow 是基于 IEEE 802.11ah 标准的无线网络协议,专门为物联网(IoT)应用设计。它工作在 Sub-1 GHz 频段(通常为 900 MHz),相较于传统 Wi-Fi,Wi-Fi HaLow 具有以下显著优势:

-
更长的传输距离:在视距条件下,Wi-Fi HaLow 的传输距离可达 1 公里,远超传统 Wi-Fi 的覆盖范围。
-
更强的穿透能力:较低的工作频率使信号更容易穿透墙体和其他障碍物,非常适合复杂环境。
-
低功耗:以物联网设备为设计初衷,Wi-Fi HaLow 能够让连接设备实现多年电池续航。
-
高可扩展性:支持在单个接入点下连接数千台设备,非常适合大规模物联网部署。
-
安全性:继承了 Wi-Fi 家族强大的安全特性,包括 WPA3 加密。
Wi-Fi HaLow 的重要性
Wi-Fi HaLow 满足了物联网应用在远距离连接、低功耗以及同时连接大量设备方面日益增长的需求。它弥合了传统 Wi-Fi 与 LPWAN 技术之间的差距,提供了如下应用场景:
- 工业物联网:在工厂、仓库和工业环境中实现可靠连接。
- 智慧农业:为大面积农田中的传感器网络提供覆盖。
- 智慧城市:支持城市环境中大规模的连接设备网络。
- 资产追踪:实现对高价值资产和设备的远距离追踪。
通过将人们熟悉的 Wi-Fi 生态与低功耗、长距离连接的优势相结合,Wi-Fi HaLow 有望在各行各业的物联网应用扩展中发挥关键作用。
Wi-Fi HaLow 系统架构
一个典型的 Wi-Fi HaLow 网络由若干关键组件构成,它们协同工作以实现远距离、低功耗的物联网连接:

-
接入点(AP):Wi-Fi HaLow 网络的中心节点,负责管理连接并在设备与互联网之间转发数据。
-
站点(STA):连接到接入点的客户端设备,可以是传感器、执行器或其他物联网设备。
-
网关:在 Wi-Fi HaLow 网络与其他网络(如以太网或蜂窝网络)之间充当桥梁。
在本教程中,我们将把 XIAO ESP32S3 配置为连接到 Wi-Fi HaLow 接入点的站点(STA)客户端。XIAO 将通过 WM6108 模组建立并维持 HaLow 连接。
MM-IoT-SDK 框架
WM6108 模组使用了 MorseMicro 的 MM-IoT-SDK,它提供:
- 多协议支持:可与多种物联网协议无缝集成
- 低功耗管理:为电池供电设备优化功耗
- 安全特性:内置加密与认证机制
- 简易配置:提供简化的 API 用于网络配置与管理
MM-IoT-SDK 的架构由多个层次组成:
- 硬件抽象层(HAL):为不同硬件平台提供统一接口
- 网络协议栈:实现 Wi-Fi HaLow 协议栈
- 应用层:为应用开发和设备管理提供 API
该框架使开发者能够在保持应用灵活性的同时,快速实现 Wi-Fi HaLow 功能。
所需材料
以下是完成本教程所需的材料。
本教程仅适用于 XIAO ESP32-S3 系列。我们将在本教程中以 XIAO ESP32S3 Sense 为例进行说明。
除了上述材料外,你可能还需要准备适用于 WiFi-Halow 的额外天线。以下是已经验证并推荐的天线型号。
要将天线连接到 WiFi-Halow 模组,你可能还需要购买 SMA 转 I-PEX 天线线缆。
| SMA 转 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 Tools Installer。该安装程序包含 ESP-IDF 开发所需的所有工具。
步骤 2. 运行安装程序
- 以管理员身份运行下载的安装程序
- 按提示安装 Python、Git 和其他所需工具
- 在提示时,选择以下选项:
- 安装 ESP-IDF v5.1.1
- 安装 Python
- 安装 Git
- 将 ESP-IDF Tools 添加到 Path
步骤 3. 验证安装
打开一个新的命令提示符并运行:
esp-idf --version
如果安装成功,您应该会看到版本号 5.1.1。
步骤 1. 安装前置依赖
打开 Terminal,如果尚未安装 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 的更详细说明,您可以参考乐鑫官方文档:
克隆并配置 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
若需永久生效,请添加到您的 shell 配置文件中:
# 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
然后重新加载您的 shell 配置:
# 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
若需永久生效,请添加到您的 shell 配置文件中:
# For bash users
echo 'export MMIOT_ROOT=~/mm-iot-esp32' >> ~/.bashrc
# For zsh users
echo 'export MMIOT_ROOT=~/mm-iot-esp32' >> ~/.zshrc
然后重新加载您的 shell 配置:
# For bash
source ~/.bashrc
# For zsh
source ~/.zshrc
在设置 MMIOT_ROOT 环境变量时,请务必使用绝对路径。使用相对路径在构建项目时可能会导致问题。
在设置环境变量后,您可能需要关闭并重新打开终端,使更改生效。
构建示例固件
mm-iot-esp32 仓库包含多个示例应用程序,用于演示不同的功能。以下是构建和配置这些示例的方法:
示例应用位置
所有示例应用都位于仓库的 examples 目录中。可用示例包括:
scan:Wi-Fi 扫描示例iperf:iperf 服务器示例sta_reboot:Wi-Fi station 重启示例sta_connect:Wi-Fi station 连接示例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:进入 Scan 示例目录
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
-
通过 USB 将 XIAO ESP32S3 连接到您的电脑
步骤 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
- 通过 USB 将 XIAO ESP32S3 连接到你的电脑
步骤 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
本示例演示如何通过 Wi-Fi HaLow 网络从 XIAO ESP32S3 Sense 进行摄像头视频流传输。请按照以下步骤构建并运行 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 上的摄像头模块连接正确
- 通过 USB 将 XIAO ESP32S3 Sense 连接到你的电脑
步骤 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
技术支持与产品讨论
感谢你选择我们的产品!我们将为你提供多种支持,确保你在使用我们产品的过程中尽可能顺利。我们提供多种沟通渠道,以满足不同的偏好和需求。



