Skip to main content

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
工作电流TBDmA
Wi-Fi 协议IEEE 802.11ah-
频段Sub-1 GHz-
通信距离最远 1km
接口SPI-
尺寸TBDmm
同时需要 3.3/5.0V 电源供电

该板卡需要两个独立的电源输入:

  • 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 具有以下显著优势:

  1. 更长的传输距离:在视距条件下,Wi-Fi HaLow 的传输距离可达 1 公里,远超传统 Wi-Fi 的覆盖范围。

  2. 更强的穿透能力:较低的工作频率使信号更容易穿透墙体和其他障碍物,非常适合复杂环境。

  3. 低功耗:以物联网设备为设计初衷,Wi-Fi HaLow 能够让连接设备实现多年电池续航。

  4. 高可扩展性:支持在单个接入点下连接数千台设备,非常适合大规模物联网部署。

  5. 安全性:继承了 Wi-Fi 家族强大的安全特性,包括 WPA3 加密。

Wi-Fi HaLow 的重要性

Wi-Fi HaLow 满足了物联网应用在远距离连接、低功耗以及同时连接大量设备方面日益增长的需求。它弥合了传统 Wi-Fi 与 LPWAN 技术之间的差距,提供了如下应用场景:

  • 工业物联网:在工厂、仓库和工业环境中实现可靠连接。
  • 智慧农业:为大面积农田中的传感器网络提供覆盖。
  • 智慧城市:支持城市环境中大规模的连接设备网络。
  • 资产追踪:实现对高价值资产和设备的远距离追踪。

通过将人们熟悉的 Wi-Fi 生态与低功耗、长距离连接的优势相结合,Wi-Fi HaLow 有望在各行各业的物联网应用扩展中发挥关键作用。

Wi-Fi HaLow 系统架构

一个典型的 Wi-Fi HaLow 网络由若干关键组件构成,它们协同工作以实现远距离、低功耗的物联网连接:

  1. 接入点(AP):Wi-Fi HaLow 网络的中心节点,负责管理连接并在设备与互联网之间转发数据。

  2. 站点(STA):连接到接入点的客户端设备,可以是传感器、执行器或其他物联网设备。

  3. 网关:在 Wi-Fi HaLow 网络与其他网络(如以太网或蜂窝网络)之间充当桥梁。

在本教程中,我们将把 XIAO ESP32S3 配置为连接到 Wi-Fi HaLow 接入点的站点(STA)客户端。XIAO 将通过 WM6108 模组建立并维持 HaLow 连接。

MM-IoT-SDK 框架

WM6108 模组使用了 MorseMicro 的 MM-IoT-SDK,它提供:

  • 多协议支持:可与多种物联网协议无缝集成
  • 低功耗管理:为电池供电设备优化功耗
  • 安全特性:内置加密与认证机制
  • 简易配置:提供简化的 API 用于网络配置与管理

MM-IoT-SDK 的架构由多个层次组成:

  1. 硬件抽象层(HAL):为不同硬件平台提供统一接口
  2. 网络协议栈:实现 Wi-Fi HaLow 协议栈
  3. 应用层:为应用开发和设备管理提供 API

该框架使开发者能够在保持应用灵活性的同时,快速实现 Wi-Fi HaLow 功能。

所需材料

以下是完成本教程所需的材料。

XIAO ESP32S3 SenseWio-WM6108 Wi-Fi HaLow 模组(适用于 XIAO)
note

本教程仅适用于 XIAO ESP32-S3 系列。我们将在本教程中以 XIAO ESP32S3 Sense 为例进行说明。

除了上述材料外,你可能还需要准备适用于 WiFi-Halow 的额外天线。以下是已经验证并推荐的天线型号。

长距离室内天线套件2.6dBi 长距离天线

要将天线连接到 WiFi-Halow 模组,你可能还需要购买 SMA 转 I-PEX 天线线缆

SMA 转 I-PEX 天线线缆

如果您是第一次使用,可以参考下面的视频进行天线安装。

安装 ESP-IDF v5.1.1

在开始编程之前,我们需要在您的电脑上安装 ESP-IDF v5.1.1。ESP-IDF 是 ESP32 系列芯片的官方开发框架。

步骤 1. 下载适用于 Windows 的 ESP-IDF 工具安装程序

下载适用于 Windows 的 ESP-IDF Tools Installer。该安装程序包含 ESP-IDF 开发所需的所有工具。

步骤 2. 运行安装程序

  1. 以管理员身份运行下载的安装程序
  2. 按提示安装 Python、Git 和其他所需工具
  3. 在提示时,选择以下选项:
    • 安装 ESP-IDF v5.1.1
    • 安装 Python
    • 安装 Git
    • 将 ESP-IDF Tools 添加到 Path

步骤 3. 验证安装

打开一个新的命令提示符并运行:

esp-idf --version

如果安装成功,您应该会看到版本号 5.1.1。

tip

安装完成后,您可能需要重启电脑,以确保所有环境变量都已正确设置。

note

有关安装 ESP-IDF v5.1.1 的更详细说明,您可以参考乐鑫官方文档:

克隆并配置 mm-iot-esp32 仓库

按照以下步骤克隆 mm-iot-esp32 仓库并设置环境变量:

步骤 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 系统属性永久设置该变量:

  1. 打开系统属性(Win + R,输入 sysdm.cpl
  2. 点击 "Environment Variables"
  3. 在 "User variables" 下点击 "New"
  4. 变量名:MMIOT_ROOT
  5. 变量值:C:\Users\YourUsername\mm-iot-esp32(替换为您的实际路径)
  6. 点击 "OK" 保存

或者,您也可以在命令提示符中临时设置:

set MMIOT_ROOT=C:\Users\YourUsername\mm-iot-esp32
tip

在设置 MMIOT_ROOT 环境变量时,请务必使用绝对路径。使用相对路径在构建项目时可能会导致问题。

note

在设置环境变量后,您可能需要关闭并重新打开终端,使更改生效。

构建示例固件

mm-iot-esp32 仓库包含多个示例应用程序,用于演示不同的功能。以下是构建和配置这些示例的方法:

示例应用位置

所有示例应用都位于仓库的 examples 目录中。可用示例包括:

  • scan:Wi-Fi 扫描示例
  • iperf:iperf 服务器示例
  • sta_reboot:Wi-Fi station 重启示例
  • sta_connect:Wi-Fi station 连接示例
  • web_camera_server:Web 摄像头服务器示例
  • 以及更多……

配置网络凭据

在构建固件之前,您需要在示例的配置文件中配置网络设置:

  1. 进入您选择的示例目录:
cd $MMIOT_ROOT/examples/example_name
  1. 编辑配置文件:
# Open the configuration file
nano src/mm_app_loadconfig.c
  1. 在此文件中,您可以修改:
  • 国家代码(应设置为 US,因为该产品目前仅在北美地区提供)
  • Wi-Fi HaLow 网络凭据
  • 其他与网络相关的参数
caution

关于国家代码的重要说明:

  • 国家代码必须设置为 "US",因为该产品目前仅在北美市场提供
  • 由于监管要求,该产品目前尚未在其他地区上市
  • 在北美以外地区使用该产品可能会违反当地法规

构建流程

在配置好网络设置后,您可以使用以下命令构建固件:

idf.py set-target esp32s3
idf.py fullclean
idf.py build
note
  • 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:配置国家代码

  1. 打开配置文件:
nano main/src/mm_app_loadconfig.c
  1. 找到并修改国家代码所在的行:
#define COUNTRY_CODE "US"  // Must use "US" as the product is only available for North America

步骤 3:硬件连接

  1. 将 Wio-WM6108 Wi-Fi HaLow 模块连接到您的 XIAO ESP32S3

  2. 通过 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 网关,其信息将显示在串口监视器中

串口监视器中的示例输出:

tip
  • 请确保您附近有 Wi-Fi HaLow 网关,以便检测到网络
  • 扫描过程是持续进行的,因此您会看到可用网络的周期性更新
  • 按 Ctrl+C 停止监视并退出程序
note

如果您没有看到任何网络:

  • 请确认您的 Wi-Fi HaLow 网关已通电并正常工作
  • 检查你是否在网关的覆盖范围内
  • 确保模块已正确连接到你的 XIAO ESP32S3

示例 2. iperf

本示例演示如何使用 iPerf 测试你的 Wi-Fi HaLow 连接的网络性能。请按照以下步骤构建并运行 iPerf 示例:

步骤 1:进入 iPerf 示例目录

cd ~/mm-iot-esp32/example/iperf

步骤 2:配置网络设置

  1. 打开配置文件:
nano main/src/mm_app_loadconfig.c
  1. 修改以下参数:
// 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:硬件连接

  1. 将 Wio-WM6108 Wi-Fi HaLow 模块连接到你的 XIAO ESP32S3
  2. 通过 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 测试)
tip
  • 在运行性能测试前,确保你的设备已成功连接到 Wi-Fi HaLow 网络
  • 连接成功后,设备的 IP 地址会显示在串口监视器中
  • 你可以根据测试需求调整带宽(-b 参数)
note

常见问题与解决方案:

  • 如果连接失败,请检查你的网络凭据
  • 如果 iPerf 服务未启动,请检查硬件连接
  • 如果性能较差,请确保你处于网关的良好覆盖范围内

示例 3. web_camera_server

本示例演示如何通过 Wi-Fi HaLow 网络从 XIAO ESP32S3 Sense 进行摄像头视频流传输。请按照以下步骤构建并运行 Web 摄像头服务器:

步骤 1:进入 Web 摄像头示例目录

cd ~/mm-iot-esp32/example/web_camera_serve

步骤 2:配置网络设置

  1. 打开配置文件:
nano main/src/mm_app_loadconfig.c
  1. 修改 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:硬件连接

  1. 将 Wio-WM6108 Wi-Fi HaLow 模块连接到你的 XIAO ESP32S3 Sense
  2. 确保 XIAO ESP32S3 Sense 上的摄像头模块连接正确
  3. 通过 USB 将 XIAO ESP32S3 Sense 连接到你的电脑

步骤 4:编译与烧录

按顺序执行以下命令:

idf.py set-target esp32s3
idf.py fullclean
idf.py build
idf.py flash monitor

步骤 5:访问摄像头视频流

当程序成功运行后:

  1. 记录串口监视器中显示的 IP 地址
  2. 在任何连接到与 Wi-Fi HaLow 网关相同网络的设备上打开 Web 浏览器
  3. 在浏览器地址栏中输入该 IP 地址
  4. 现在你应该可以看到来自 XIAO ESP32S3 Sense 的实时摄像头视频流

示例 URL:

http://192.168.4.1
tip

为了获得最佳的流媒体体验:

  • 确保有良好的光照条件,以获得更好的图像质量
  • 保持 XIAO ESP32S3 Sense 处于 Wi-Fi HaLow 网关的良好覆盖范围内
  • 使用现代 Web 浏览器以获得最佳兼容性
note

故障排查:

  • 如果无法访问摄像头视频流,请确认你的设备与 Wi-Fi HaLow 网关处于同一网络
  • 如果没有图像显示,请检查摄像头模块是否连接正确
  • 如果视频流延迟较大,请尝试靠近 Wi-Fi HaLow 网关

资源

技术支持与产品讨论

感谢你选择我们的产品!我们将为你提供多种支持,确保你在使用我们产品的过程中尽可能顺利。我们提供多种沟通渠道,以满足不同的偏好和需求。

Loading Comments...