Introducción al módulo Wi-Fi HaLow para XIAO

Introducción
Este tutorial te guiará en la configuración y uso del módulo Wio-WM6108 Wi-Fi HaLow con un XIAO ESP32S3 para construir un cliente Wi-Fi HaLow. Wi-Fi HaLow (IEEE 802.11ah) está diseñado para aplicaciones IoT de largo alcance y bajo consumo, que operan en la banda de frecuencia sub-1 GHz. Veremos la configuración de hardware, la configuración de software y mostraremos cómo establecer conectividad Wi-Fi HaLow para tus proyectos IoT.
Características clave
- Conectividad Wi-Fi de largo alcance de hasta 1 km en línea de vista
- Bajo consumo de energía, ideal para dispositivos IoT
- Funcionamiento en sub-1 GHz para mejor penetración a través de paredes y obstáculos
- Compatible con la placa de desarrollo XIAO ESP32S3
- Proceso de configuración y ajuste fácil de seguir
Descripción general del hardware
La siguiente tabla describe las especificaciones clave del módulo Wio-WM6108 Wi-Fi HaLow:
| Característica | Valor | Unidad |
|---|---|---|
| Tensión de funcionamiento | 3.3 (Digital) / 5.0 (RF front-end) | V |
| Corriente de funcionamiento | TBD | mA |
| Protocolo Wi-Fi | IEEE 802.11ah | - |
| Banda de frecuencia | Sub-1 GHz | - |
| Alcance | Hasta 1 | km |
| Interfaz | SPI | - |
| Dimensiones | TBD | mm |
Esta placa requiere dos entradas de alimentación separadas:
- El pad de 3.3V alimenta los raíles digitales del módulo.
- El pad de 5.0V alimenta el front-end de RF (amplificador de potencia TX) a través de un raíl separado.
Cuando el módulo está conectado a una placa de expansión XIAO, ambos raíles de alimentación se proporcionan automáticamente a través del conector de expansión.
Sin embargo, cuando se cablea la placa a un sistema host mediante la interfaz de pads (por ejemplo, una Raspberry Pi a través de SPI), debes conectar todos los 5V, 3.3V y GND.
Si solo se conecta 3.3V, el módulo podrá cargar firmware y recibir normalmente, pero no puede transmitir a la potencia nominal.
¿Qué es Wi-Fi HaLow?
Wi-Fi HaLow es un protocolo de red inalámbrica basado en el estándar IEEE 802.11ah, diseñado específicamente para aplicaciones de Internet de las Cosas (IoT). Al operar en la banda de frecuencia sub-1 GHz (normalmente 900 MHz), Wi-Fi HaLow ofrece varias ventajas significativas sobre el Wi-Fi tradicional:

-
Alcance extendido: Wi-Fi HaLow puede alcanzar distancias de hasta 1 kilómetro en condiciones de línea de vista, superando ampliamente el alcance del Wi-Fi convencional.
-
Mejor penetración: Las señales de menor frecuencia pueden penetrar mejor a través de paredes y otros obstáculos, lo que lo hace ideal para entornos exigentes.
-
Bajo consumo de energía: Diseñado pensando en los dispositivos IoT, Wi-Fi HaLow permite años de vida útil de la batería para los dispositivos conectados.
-
Escalabilidad: Admite miles de dispositivos conectados a un solo punto de acceso, perfecto para despliegues IoT a gran escala.
-
Seguridad: Hereda las sólidas funciones de seguridad de la familia Wi-Fi, incluida la encriptación WPA3.
Por qué importa Wi-Fi HaLow
Wi-Fi HaLow responde a las crecientes necesidades de las aplicaciones IoT que requieren conectividad de largo alcance, bajo consumo de energía y la capacidad de manejar numerosos dispositivos simultáneamente. Cierra la brecha entre el Wi-Fi tradicional y las tecnologías LPWAN, ofreciendo:
- IoT industrial: Permite conectividad fiable en fábricas, almacenes y entornos industriales.
- Agricultura inteligente: Proporciona cobertura en grandes áreas agrícolas para redes de sensores.
- Ciudades inteligentes: Admite amplias redes de dispositivos conectados en entornos urbanos.
- Seguimiento de activos: Permite el seguimiento de largo alcance de activos y equipos valiosos.
Al combinar la familiaridad de Wi-Fi con las ventajas de la conectividad de largo alcance y bajo consumo, Wi-Fi HaLow está llamado a desempeñar un papel crucial en la expansión de las aplicaciones IoT en diversas industrias.
Arquitectura del sistema Wi-Fi HaLow
Una red típica de Wi-Fi HaLow consta de varios componentes clave que trabajan juntos para habilitar la conectividad IoT de largo alcance y bajo consumo:

-
Punto de acceso (AP): El concentrador central de la red Wi-Fi HaLow, responsable de gestionar las conexiones y enrutar los datos entre los dispositivos y Internet.
-
Estaciones (STA): Los dispositivos cliente que se conectan al punto de acceso. Estos pueden ser sensores, actuadores u otros dispositivos IoT.
-
Gateway: Actúa como un puente entre la red Wi-Fi HaLow y otras redes (por ejemplo, Ethernet o celular).
En este tutorial, configuraremos el XIAO ESP32S3 como un cliente Estación (STA) que se conecta a un punto de acceso Wi-Fi HaLow. El XIAO utilizará el módulo WM6108 para establecer y mantener la conexión HaLow.
Framework MM-IoT-SDK
El módulo WM6108 utiliza el MM-IoT-SDK de MorseMicro, que proporciona:
- Soporte multiprotocolo: Permite una integración fluida con varios protocolos IoT
- Gestión de bajo consumo: Consumo de energía optimizado para dispositivos alimentados por batería
- Funciones de seguridad: Mecanismos integrados de cifrado y autenticación
- Configuración sencilla: API simplificada para la configuración y gestión de la red
La arquitectura de MM-IoT-SDK consta de varias capas:
- Capa de abstracción de hardware (HAL): Proporciona una interfaz unificada para diferentes plataformas de hardware
- Pila de red: Implementa la pila de protocolo Wi-Fi HaLow
- Capa de aplicación: Ofrece APIs para el desarrollo de aplicaciones y la gestión de dispositivos
Este framework permite a los desarrolladores implementar rápidamente la funcionalidad Wi-Fi HaLow manteniendo la flexibilidad para aplicaciones personalizadas.
Materiales necesarios
Estos son los materiales necesarios para seguir este tutorial.
| XIAO ESP32S3 Sense | Módulo Wi-Fi HaLow Wio-WM6108 para XIAO |
|---|---|
![]() | ![]() |
Este tutorial solo es aplicable a la serie XIAO ESP32-S3. Usaremos XIAO ESP32S3 Sense como ejemplo en este tutorial.
Además de lo anterior, es posible que necesites preparar antenas adicionales adecuadas para el uso con WiFi-Halow. Aquí están los modelos de antena verificados y recomendados.
| Kit de antena de interior de largo alcance | Antena de largo alcance de 2.6dBi |
|---|---|
![]() | ![]() |
Para conectar la antena al módulo WiFi-Halow, también puede que necesites comprar el cable de antena SMA a I-PEX.
| Cable de antena SMA a I-PEX |
|---|
![]() |
Si lo utilizas por primera vez, puedes consultar el siguiente vídeo para la instalación de la antena.
Instalar ESP-IDF v5.1.1
Antes de empezar a programar, necesitamos instalar ESP-IDF v5.1.1 en tu ordenador. ESP-IDF es el framework de desarrollo oficial para los chips de la serie ESP32.
- Windows
- MacOS
- Linux
Paso 1. Descarga el instalador de ESP-IDF Tools para Windows
Descarga el ESP-IDF Tools Installer para Windows. Este instalador incluye todas las herramientas necesarias para el desarrollo con ESP-IDF.
Paso 2. Ejecuta el instalador
- Ejecuta el instalador descargado como administrador
- Sigue las indicaciones para instalar Python, Git y otras herramientas necesarias
- Cuando se te solicite, selecciona las siguientes opciones:
- Instalar ESP-IDF v5.1.1
- Instalar Python
- Instalar Git
- Añadir ESP-IDF Tools al Path
Paso 3. Verifica la instalación
Abre una nueva ventana de Command Prompt y ejecuta:
esp-idf --version
Si la instalación se realizó correctamente, deberías ver el número de versión 5.1.1.
Paso 1. Instala los prerrequisitos
Abre Terminal e instala Homebrew si aún no lo has hecho:
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install.sh)"
Instala los paquetes necesarios:
brew install cmake ninja dfu-util
Paso 2. Descarga e instala 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
Paso 3. Configura las variables de entorno
. $HOME/esp/esp-idf/export.sh
Añade esta línea a tu ~/.profile o ~/.zshrc para configurar automáticamente las variables de entorno al abrir un nuevo terminal.
Paso 1. Instala los prerrequisitos
Para Ubuntu y 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
Para otras distribuciones, instala los paquetes equivalentes.
Paso 2. Descarga e instala 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
Paso 3. Configura las variables de entorno
. $HOME/esp/esp-idf/export.sh
Añade esta línea a tu ~/.bashrc para configurar automáticamente las variables de entorno al abrir un nuevo terminal.
Después de la instalación, puede que necesites reiniciar tu ordenador para asegurarte de que todas las variables de entorno se configuren correctamente.
Para obtener instrucciones más detalladas sobre la instalación de ESP-IDF v5.1.1, puedes consultar la documentación oficial de Espressif:
Clonar y configurar el repositorio mm-iot-esp32
Sigue estos pasos para clonar el repositorio mm-iot-esp32 y configurar las variables de entorno:
- Windows
- MacOS
- Linux
Paso 1. Clona el repositorio
cd %USERPROFILE%
git clone https://github.com/Seeed-Studio/mm-iot-esp32.git
Paso 2. Exporta las variables de IDF
cd %USERPROFILE%\mm-iot-esp32
export.bat
Paso 3. Configura la variable de entorno MMIOT_ROOT
Puedes configurarla de forma permanente a través de las Propiedades del sistema de Windows:
- Abre System Properties (Win + R, escribe
sysdm.cpl) - Haz clic en "Environment Variables"
- En "User variables", haz clic en "New"
- Nombre de la variable:
MMIOT_ROOT - Valor de la variable:
C:\Users\YourUsername\mm-iot-esp32(sustituye por tu ruta real) - Haz clic en "OK" para guardar
Como alternativa, puedes configurarla temporalmente en Command Prompt:
set MMIOT_ROOT=C:\Users\YourUsername\mm-iot-esp32
Paso 1. Clona el repositorio
cd ~
git clone https://github.com/Seeed-Studio/mm-iot-esp32.git
Paso 2. Exporta las variables de IDF
cd ~/mm-iot-esp32
source export.sh
Paso 3. Configura la variable de entorno MMIOT_ROOT
Para uso temporal:
export MMIOT_ROOT=~/mm-iot-esp32
Para uso permanente, añádela a tu archivo de configuración del 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
Luego recarga la configuración de tu shell:
# For bash
source ~/.bash_profile
# For zsh
source ~/.zshrc
Paso 1. Clona el repositorio
cd ~
git clone https://github.com/Seeed-Studio/mm-iot-esp32.git
Paso 2. Exporta las variables de IDF
cd ~/mm-iot-esp32
source export.sh
Paso 3. Configura la variable de entorno MMIOT_ROOT
Para uso temporal:
export MMIOT_ROOT=~/mm-iot-esp32
Para uso permanente, añádela a tu archivo de configuración del shell:
# For bash users
echo 'export MMIOT_ROOT=~/mm-iot-esp32' >> ~/.bashrc
# For zsh users
echo 'export MMIOT_ROOT=~/mm-iot-esp32' >> ~/.zshrc
Luego recarga la configuración de tu shell:
# For bash
source ~/.bashrc
# For zsh
source ~/.zshrc
Asegúrate de utilizar rutas absolutas al configurar la variable de entorno MMIOT_ROOT. Las rutas relativas pueden causar problemas al compilar proyectos.
Después de configurar las variables de entorno, puede que necesites cerrar y volver a abrir tu terminal para que los cambios surtan efecto.
Compilación del firmware de ejemplo
El repositorio mm-iot-esp32 incluye varias aplicaciones de ejemplo que demuestran diferentes funcionalidades. A continuación se explica cómo compilar y configurar estos ejemplos:
Ubicación de las aplicaciones de ejemplo
Todas las aplicaciones de ejemplo se encuentran en el directorio examples del repositorio. Los ejemplos disponibles incluyen:
scan: ejemplo de escaneo Wi-Fiiperf: ejemplo de servidor iperfsta_reboot: ejemplo de reinicio de estación Wi-Fista_connect: ejemplo de conexión de estación Wi-Fiweb_camera_server: ejemplo de servidor de cámara web- Y más...
Configurar las credenciales de red
Antes de compilar el firmware, debes configurar los ajustes de red en el archivo de configuración del ejemplo:
- Ve al directorio del ejemplo que hayas elegido:
cd $MMIOT_ROOT/examples/example_name
- Edita el archivo de configuración:
# Open the configuration file
nano src/mm_app_loadconfig.c
- En este archivo, puedes modificar:
- Código de país (debe establecerse en US ya que el producto actualmente solo está disponible para Norteamérica)
- Credenciales de la red Wi-Fi HaLow
- Otros parámetros relacionados con la red
Nota importante sobre el código de país:
- El código de país debe establecerse en "US" ya que este producto actualmente solo está disponible para el mercado norteamericano
- El producto aún no está disponible para otras regiones debido a requisitos regulatorios
- El uso del producto en regiones fuera de Norteamérica puede infringir las normativas locales
Proceso de compilación
Después de configurar los ajustes de red, puedes compilar el firmware utilizando estos comandos:
idf.py set-target esp32s3
idf.py fullclean
idf.py build
- El comando
idf.py set-targetsolo necesita ejecutarse una vez por cada ejemplo idf.py fullcleangarantiza una compilación limpia eliminando todos los artefactos de compilaciones anteriores- Tras una compilación correcta, el binario del firmware se encontrará en el directorio
build
Resultado de la compilación
Después de una compilación correcta, deberías ver una salida similar a esta:
# Project build complete. To flash, run this command:
idf.py -p (PORT) flash
A continuación, mostraremos algunos ejemplos.
Ejemplo 1. scan
Este ejemplo muestra cómo escanear las redes Wi-Fi HaLow disponibles en tu entorno. Sigue estos pasos para compilar y ejecutar el ejemplo de escaneo:
Paso 1: Ir al ejemplo de Scan
cd ~/mm-iot-esp32/example/scan
Paso 2: Configurar el código de país
- Abre el archivo de configuración:
nano main/src/mm_app_loadconfig.c
- Localiza y modifica la línea del código de país:
#define COUNTRY_CODE "US" // Must use "US" as the product is only available for North America
Paso 3: Configuración de hardware
-
Conecta el módulo Wio-WM6108 Wi-Fi HaLow a tu XIAO ESP32S3
-
Conecta el XIAO ESP32S3 a tu ordenador mediante USB
Paso 4: Compilar y flashear
Ejecuta los siguientes comandos en secuencia:
idf.py set-target esp32s3
idf.py fullclean
idf.py build
idf.py flash monitor
Paso 5: Monitorizar los resultados
Si todo funciona correctamente:
- El monitor serie se iniciará automáticamente después del flasheo
- El programa comenzará a escanear redes Wi-Fi HaLow
- Si hay pasarelas Wi-Fi HaLow dentro del alcance, su información se mostrará en el monitor serie
Salida de ejemplo en el monitor serie:

- Asegúrate de que haya pasarelas Wi-Fi HaLow en tu entorno para poder detectar redes
- El proceso de escaneo se ejecuta de forma continua, por lo que verás actualizaciones periódicas de las redes disponibles
- Pulsa Ctrl+C para detener el monitor y salir del programa
Si no ves ninguna red:
- Verifica que tu pasarela Wi-Fi HaLow esté encendida y funcionando
- Comprueba que estás dentro del alcance del gateway
- Asegúrate de que el módulo esté correctamente conectado a tu XIAO ESP32S3
Ejemplo 2. iperf
Este ejemplo muestra cómo probar el rendimiento de red de tu conexión Wi‑Fi HaLow usando iPerf. Sigue estos pasos para compilar y ejecutar el ejemplo de iPerf:
Paso 1: Navegar al ejemplo de iPerf
cd ~/mm-iot-esp32/example/iperf
Paso 2: Configurar los ajustes de red
- Abre el archivo de configuración:
nano main/src/mm_app_loadconfig.c
- Modifica los siguientes parámetros:
// 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
Paso 3: Configuración de hardware
- Conecta el módulo Wio-WM6108 Wi‑Fi HaLow a tu XIAO ESP32S3
- Conecta el XIAO ESP32S3 a tu ordenador mediante USB
Paso 4: Compilar y flashear
Ejecuta los siguientes comandos en secuencia:
idf.py set-target esp32s3
idf.py fullclean
idf.py build
idf.py flash monitor
Paso 5: Ejecutar la prueba de rendimiento
Una vez que el programa se esté ejecutando correctamente, verás que el servicio iPerf se inicia. Ahora puedes ejecutar pruebas de rendimiento desde tu gateway Wi‑Fi HaLow.
Para pruebas IPv4, ejecuta este comando en tu gateway:
iperf -c <device_ip> -p <port> -i 1 -u -b 20M
Para pruebas IPv6, ejecuta este comando en tu gateway:
iperf -c <device_ip>%wlan0 -p <port> -i 1 -V -u -b 20M
Explicación de los parámetros:
-c: Ejecutar en modo cliente-p: Número de puerto-i: Intervalo de informe (1 segundo)-u: Usar protocolo UDP-b: Ancho de banda objetivo (20 Mbps)-V: Modo IPv6 (solo para pruebas IPv6)

- Asegúrate de que tu dispositivo se haya conectado correctamente a la red Wi‑Fi HaLow antes de ejecutar la prueba de rendimiento
- La dirección IP del dispositivo se mostrará en el monitor serie después de la conexión
- Puedes ajustar el ancho de banda (parámetro -b) según tus necesidades de prueba
Problemas comunes y soluciones:
- Si la conexión falla, verifica tus credenciales de red
- Si el servicio iPerf no se inicia, comprueba tus conexiones de hardware
- Si el rendimiento es deficiente, asegúrate de estar dentro de un buen alcance del gateway
Ejemplo 3. web_camera_server
Este ejemplo muestra cómo transmitir la señal de la cámara desde XIAO ESP32S3 Sense a través de la red Wi‑Fi HaLow. Sigue estos pasos para compilar y ejecutar el servidor de cámara web:
Paso 1: Navegar al ejemplo de cámara web
cd ~/mm-iot-esp32/example/web_camera_serve
Paso 2: Configurar los ajustes de red
- Abre el archivo de configuración:
nano main/src/mm_app_loadconfig.c
- Modifica las credenciales de 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
Paso 3: Configuración de hardware
- Conecta el módulo Wio-WM6108 Wi‑Fi HaLow a tu XIAO ESP32S3 Sense
- Asegúrate de que el módulo de cámara de tu XIAO ESP32S3 Sense esté correctamente conectado
- Conecta el XIAO ESP32S3 Sense a tu ordenador mediante USB
Paso 4: Compilar y flashear
Ejecuta los siguientes comandos en secuencia:
idf.py set-target esp32s3
idf.py fullclean
idf.py build
idf.py flash monitor
Paso 5: Acceder a la señal de la cámara
Una vez que el programa se esté ejecutando correctamente:
- Anota la dirección IP que se muestra en el monitor serie
- Abre un navegador web en cualquier dispositivo conectado a la misma red que tu gateway Wi‑Fi HaLow
- Introduce la dirección IP en la barra de direcciones de tu navegador
- Ahora deberías ver la señal de la cámara en vivo desde tu XIAO ESP32S3 Sense
URL de ejemplo:
http://192.168.4.1

Para obtener la mejor experiencia de transmisión:
- Asegura buenas condiciones de iluminación para una mejor calidad de imagen
- Mantén el XIAO ESP32S3 Sense dentro de un buen alcance del gateway Wi‑Fi HaLow
- Usa un navegador web moderno para una compatibilidad óptima
Solución de problemas:
- Si no puedes acceder a la señal de la cámara, verifica que tu dispositivo esté en la misma red que el gateway Wi‑Fi HaLow
- Si la imagen no aparece, comprueba que el módulo de cámara esté correctamente conectado
- Si la transmisión tiene retraso, intenta acercarte al gateway Wi‑Fi HaLow
Recursos
- [GITHUB] Repositorio mm-iot-esp32
- [GITHUB] Documento mm-iot
- [PDF] WI-FI_HALOW_FGH100M_EXT01_V30_SCH_20241107
- [KiCAD] Archivo PCB KiCAD WI-FI_HALOW_FGH100M_EXT01_V30
- [PDF] Quectel_FGH100M-H_Short-Range_Module_Specification_V1.0.0
Soporte técnico y debate sobre el producto
Gracias por elegir nuestros productos. Estamos aquí para ofrecerte diferentes tipos de soporte y garantizar que tu experiencia con nuestros productos sea lo más fluida posible. Ofrecemos varios canales de comunicación para adaptarnos a diferentes preferencias y necesidades.



