Primeros Pasos con el Módulo Wi-Fi HaLow para XIAO

Introducción
Este tutorial te guiará en la configuración y uso del Módulo Wi-Fi HaLow Wio-WM6180 con una 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 energético, operando en la banda de frecuencia sub-1 GHz. A lo largo del tutorial, revisaremos la configuración del hardware, la configuración del software y demostraremos 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
- Operación 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 fácil de seguir
Descripción General del Hardware
La siguiente tabla resume las especificaciones clave del Módulo Wi-Fi HaLow Wio-WM6180:
Característica | Valor | Unidad |
---|---|---|
Voltaje de operación | 3.3 | V |
Corriente de operación | TBD | mA |
Protocolo Wi-Fi | IEEE 802.11ah | - |
Banda de frecuencia | Sub-1 GHz | - |
Alcance | Hasta 1 | km |
Interfaz | SPI | - |
Dimensiones | TBD | mm |
¿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 del Internet de las Cosas (IoT). Operando en la banda de frecuencia sub-1 GHz (típicamente 900 MHz), Wi-Fi HaLow ofrece varias ventajas importantes 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 con creces 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 desafiantes.
Bajo Consumo de Energía: Diseñado pensando en los dispositivos IoT, Wi-Fi HaLow permite años de duración de batería para los dispositivos conectados.
Escalabilidad: Soporta miles de dispositivos conectados a un solo punto de acceso, perfecto para implementaciones IoT a gran escala.
Seguridad: Hereda las sólidas funciones de seguridad de la familia Wi-Fi, incluida la encriptación WPA3.
¿Por Qué es Importante Wi-Fi HaLow?
Wi-Fi HaLow responde a las crecientes necesidades de las aplicaciones IoT que requieren conectividad de largo alcance, bajo consumo energético y la capacidad de manejar numerosos dispositivos simultáneamente. Llena el vacío entre el Wi-Fi tradicional y las tecnologías LPWAN, ofreciendo:
- IoT Industrial: Habilita conectividad confiable en fábricas, almacenes y entornos industriales.
- Agricultura Inteligente: Proporciona cobertura en grandes áreas agrícolas para redes de sensores.
- Ciudades Inteligentes: Soporta redes extensas de dispositivos conectados en entornos urbanos.
- Rastreo de Activos: Permite el seguimiento a larga distancia de activos y equipos valiosos.
Al combinar la familiaridad del Wi-Fi con los beneficios de conectividad de bajo consumo y largo alcance, Wi-Fi HaLow está preparado para desempeñar un papel crucial en la expansión de las aplicaciones IoT en diversas industrias.
Arquitectura del Sistema Wi-Fi HaLow
Una red Wi-Fi HaLow típica consta de varios componentes clave que trabajan en conjunto para habilitar la conectividad IoT de largo alcance y bajo consumo:

Punto de Acceso (AP): El centro de la red Wi-Fi HaLow, responsable de gestionar las conexiones y enrutar los datos entre los dispositivos y el internet.
Estaciones (STA): Dispositivos cliente que se conectan al Punto de Acceso. Estos pueden ser sensores, actuadores u otros dispositivos IoT.
Gateway (Pasarela): 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 WM6180 para establecer y mantener la conexión HaLow.
Framework MM-IoT-SDK
El módulo WM6180 utiliza el MM-IoT-SDK de MorseMicro, el cual proporciona:
- Soporte Multiprotocolo: Permite una integración fluida con diversos protocolos IoT
- Gestión de Bajo Consumo: Consumo de energía optimizado para dispositivos alimentados por batería
- Funciones de Seguridad: Mecanismos de cifrado y autenticación integrados
- Configuración Sencilla: API simplificada para la configuración y gestión de red
La arquitectura del MM-IoT-SDK se compone de varias capas:
- Capa de Abstracción de Hardware (HAL): Proporciona una interfaz unificada para diferentes plataformas de hardware
- Stack de Red: Implementa el stack del protocolo Wi-Fi HaLow
- Capa de Aplicación: Ofrece APIs para desarrollo de aplicaciones y gestión de dispositivos
Este framework permite a los desarrolladores implementar rápidamente la funcionalidad Wi-Fi HaLow, manteniendo flexibilidad para aplicaciones personalizadas.
Materiales Requeridos
Estos son los materiales necesarios para ejecutar este tutorial.
XIAO ESP32S3 Sense | XIAO ESP32C3 | XIAO ESP32C6 | Módulo Wio-WM6180 Wi-Fi HaLow para XIAO |
---|---|---|---|
![]() | ![]() | ![]() | ![]() |
Este tutorial es aplicable a toda la serie XIAO ESP32. Usaremos el 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. A continuación se presentan los modelos de antenas verificados y recomendados.
Long Range Indoor Antenna Kit | 2.6dBi Long Range Antenna |
---|---|
![]() | ![]() |
Para conectar la antena al módulo WiFi-HaLow, es posible que también necesites adquirir un cable de antena SMA a I-PEX.
Cable de antena SMA a I-PEX |
---|
![]() |
Si es la primera vez que lo usas, puedes consultar el siguiente video para la instalación de la antena.
Install ESP-IDF v5.1.1
Instalar ESP-IDF v5.1.1
Antes de comenzar a programar, necesitamos instalar ESP-IDF v5.1.1 en tu computadora. ESP-IDF es el framework oficial de desarrollo para los chips de la serie ESP32.
- Windows
- MacOS
- Linux
Paso 1. Descarga el instalador de herramientas de ESP-IDF para Windows
Descarga el Instalador de Herramientas de ESP-IDF 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 instrucciones 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
- Agregar ESP-IDF Tools al Path
Paso 3. Verifica la instalación
Abre una nueva ventana de Símbolo del sistema (Command Prompt) y ejecuta:
esp-idf --version
Si la instalación fue exitosa, deberías ver el número de versión 5.1.1.
Paso 1. Instalar los prerrequisitos
Abre la Terminal e instala Homebrew si aún no lo tienes:
/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. Descargar e instalar 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. Configurar las variables de entorno
. $HOME/esp/esp-idf/export.sh
Agrega esta línea a tu archivo ~/.profile
o ~/.zshrc
para que las variables de entorno se configuren automáticamente al abrir una nueva terminal.
Paso 1. Instalar prerrequisitos
Para Ubuntu y Debian, ejecuta en la terminal:
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 de acuerdo con tu sistema.
Paso 2. Descargar e instalar 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. Configurar las variables de entorno
. $HOME/esp/esp-idf/export.sh
Para que las variables se carguen automáticamente cada vez que abras la terminal, agrega esta línea al final de tu archivo ~/.bashrc
:
echo '. $HOME/esp/esp-idf/export.sh' >> ~/.bashrc
Luego, recarga la configuración con:
source ~/.bashrc
Después de la instalación, es posible que necesites reiniciar tu computadora para asegurarte de que todas las variables de entorno se configuren correctamente.
Para obtener instrucciones más detalladas sobre cómo instalar 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
Step 1. Clona el repositorio
cd %USERPROFILE%
git clone https://github.com/Seeed-Studio/mm-iot-esp32.git
Step 2. Exporta variables IDF
cd %USERPROFILE%\mm-iot-esp32
export.bat
Step 3. Establece la variable de entorno MMIOT_ROOT
Puedes establecer esto de forma permanente a través de las Propiedades del Sistema de Windows:
- Abre las Propiedades del Sistema (Win + R, escribe
sysdm.cpl
) - Haz clic en "Variables de entorno"
- En "Variables de usuario", haz clic en "Nueva"
- Nombre de la variable:
MMIOT_ROOT
- Valor de la variable:
C:\Users\TuUsuario\mm-iot-esp32
(reemplaza con tu ruta real) - Haz clic en "Aceptar" para guardar
Alternativamente, puedes establecerla de forma temporal en el Command Prompt (cmd):
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 variables IDF
cd ~/mm-iot-esp32
source export.sh
Paso 3. Establece la variable de entorno MMIOT_ROOT
Para uso temporal:
export MMIOT_ROOT=~/mm-iot-esp32
Para uso permanente, agrega a tu archivo shell de configuración:
# 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 tu configuración shell:
# For bash
source ~/.bash_profile
# For zsh
source ~/.zshrc
Step 1. Clona el repositorio
cd ~
git clone https://github.com/Seeed-Studio/mm-iot-esp32.git
Step 2. Exporta variables IDF
cd ~/mm-iot-esp32
source export.sh
Step 3. Establece la variable de entorno MMIOT_ROOT
Para uso temporal:
export MMIOT_ROOT=~/mm-iot-esp32
Para uso permanente, agrega a tu archivo shell de configuración:
# For bash users
echo 'export MMIOT_ROOT=~/mm-iot-esp32' >> ~/.bashrc
# For zsh users
echo 'export MMIOT_ROOT=~/mm-iot-esp32' >> ~/.zshrc
Luego recarga tu archivo shell de configuración:
# For bash
source ~/.bashrc
# For zsh
source ~/.zshrc
Asegúrate de usar rutas absolutas al configurar la variable de entorno MMIOT_ROOT. Las rutas relativas pueden causar problemas al compilar los proyectos.
Después de configurar las variables de entorno, es posible que necesites cerrar y volver a abrir tu terminal para que los cambios surtan efecto.
Compilar el 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. Algunos ejemplos disponibles son:
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, necesitas configurar los ajustes de red en el archivo de configuración del ejemplo:
- Navega al directorio del ejemplo que hayas elegido:
cd $MMIOT_ROOT/examples/example_name
- Edita el archivo de configuración:
# Abre el archivo de configuración
nano src/mm_app_loadconfig.c
- En este archivo, puedes modificar:
- El código de país (debe establecerse en US, ya que el producto actualmente solo está disponible para América del Norte)
- Las credenciales de 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 de América del Norte
- El producto aún no está disponible en otras regiones debido a requisitos regulatorios
- Usar el producto en regiones fuera de América del Norte puede violar regulaciones locales
Proceso de Compilación
Después de configurar los ajustes de red, puedes compilar el firmware utilizando los siguientes comandos:
idf.py set-target esp32s3
idf.py fullclean
idf.py build
- El comando
idf.py set-target
solo necesita ejecutarse una vez por cada ejemplo idf.py fullclean
garantiza una compilación limpia eliminando todos los artefactos de compilaciones anteriores- Después de una compilación exitosa, el archivo binario del firmware se ubicará en el directorio
build
Salida de la Compilación
Después de una compilación exitosa, 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 demuestra cómo escanear redes Wi-Fi HaLow disponibles en tu área. Sigue estos pasos para compilar y ejecutar el ejemplo de escaneo:
Paso 1: Navegar al Ejemplo de Escaneo
cd ~/mm-iot-esp32/example/scan
Paso 2: Configura el código de país
- Abre el archvio de configuración:
nano main/src/mm_app_loadconfig.c
- Localiza y modifica la línea de país del código:
#define COUNTRY_CODE "US" // Debe usar "US" porque el producto solo se encuentra disponible en Norte América
Paso 3: Configuración del Hardware
Conecta el módulo Wi-Fi HaLow Wio-WM6180 a tu XIAO ESP32S3
Conecta el XIAO ESP32S3 a tu computadora mediante USB
Paso 4: Compilar y Grabar
Ejecuta los siguientes comandos en orden:
idf.py set-target esp32s3
idf.py fullclean
idf.py build
idf.py flash monitor
Paso 5: Monitorear Resultados
Si todo funciona correctamente:
- El monitor serial se iniciará automáticamente después de grabar el firmware
- El programa comenzará a escanear redes Wi-Fi HaLow
- Si hay alguna puerta de enlace Wi-Fi HaLow dentro del alcance, su información se mostrará en el monitor serial
Ejemplo de salida en el monitor serial:

- Asegúrate de que haya puertas de enlace Wi-Fi HaLow en tu área para detectar redes
- El proceso de escaneo se ejecuta continuamente, por lo que verás actualizaciones periódicas de las redes disponibles
- Presiona Ctrl+C para detener el monitor y salir del programa
Si no ves ninguna red:
- Verifica que tu puerta de enlace Wi-Fi HaLow esté encendida y funcionando
- Comprueba que estés dentro del rango de la puerta de enlace
- Asegúrate de que el módulo esté correctamente conectado a tu XIAO ESP32S3
Ejemplo 2. iperf
Este ejemplo demuestra 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: Naviga el Ejemplo iPerf
cd ~/mm-iot-esp32/example/iperf
Paso 2: Configurar Ajustes de Red
- Abre el archivo de configuración:
nano main/src/mm_app_loadconfig.c
- Modifica los siguiens parámetros:
// Establece el código de país (debe ser "US" para Norte America)
#define COUNTRY_CODE "US"
// Establece tus credenciales de red Wi-Fi HaLow
#define SSID Your_HaLow_SSID // Remplaza con el nombre de tu red
#define SAE_PASSPHRASE Your_Password // Remplaza con la contraseña de tu red
Paso 3: Configuración del Hardware
- Conecta el módulo Wi-Fi HaLow Wio-WM6180 a tu XIAO ESP32S3
- Conecta el XIAO ESP32S3 a tu computadora mediante USB
Paso 4: Compilar y Grabar
Ejecuta los siguientes comandos en orden:
idf.py set-target esp32s3
idf.py fullclean
idf.py build
idf.py flash monitor
Paso 5: Ejecutar Prueba de Rendimiento
Una vez que el programa esté funcionando correctamente, verás que el servicio iPerf se inicia. Ahora puedes ejecutar pruebas de rendimiento desde tu puerta de enlace Wi-Fi HaLow.
Para la prueba IPv4, ejecuta este comando en tu puerta de enlace:
iperf -c <device_ip> -p <port> -i 1 -u -b 20M
Para la prueba IPv6, ejecuta este comando en tu puerta de enlace:
iperf -c <device_ip>%wlan0 -p <port> -i 1 -V -u -b 20M
Los parámetros explicados:
-c
: Ejecutar en modo cliente-p
: Número de puerto-i
: Intervalo de reporte (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 esté 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 serial 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, revisa las conexiones de hardware
- Si el rendimiento es bajo, asegúrate de estar dentro de un buen rango de la puerta de enlace
Ejemplo 3. web_camera_server
Este ejemplo demuestra cómo transmitir la cámara desde el 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: Navega al Ejemplo de la Cámara Web
cd ~/mm-iot-esp32/example/web_camera_serve
Paso 2: Configura Ajustes de Red
- Abre el archivo de configuración:
nano main/src/mm_app_loadconfig.c
- Modifica las credenciales para Wi-Fi HaLow:
// Establece tus configuraciones Wi-Fi HaLow
#define SSID Your_HaLow_SSID // Remplaza con el nombre de tu red
#define SAE_PASSPHRASE Your_Password // Remplaza con la contraseña de tu red
Paso 3: Configuración del Hardware
- Conecta el módulo Wi-Fi HaLow Wio-WM6180 a tu XIAO ESP32S3 Sense
- Asegúrate de que el módulo de cámara en tu XIAO ESP32S3 Sense esté correctamente conectado
- Conecta el XIAO ESP32S3 Sense a tu computadora mediante USB
Paso 4: Compilar y Grabar
Ejecuta los siguientes comandos en orden:
idf.py set-target esp32s3
idf.py fullclean
idf.py build
idf.py flash monitor
Paso 5: Acceder a la Transmisión de la Cámara
Una vez que el programa esté funcionando correctamente:
- Anota la dirección IP que se muestra en el monitor serial
- Abre un navegador web en cualquier dispositivo conectado a la misma red que tu puerta de enlace Wi-Fi HaLow
- Ingresa la dirección IP en la barra de direcciones del navegador
- Ahora deberías poder ver la transmisión en vivo de la cámara desde tu XIAO ESP32S3 Sense
URL de ejemplo:
http://192.168.4.1

Para una mejor experiencia de transmisión:
- Asegura buenas condiciones de iluminación para una mejor calidad de imagen
- Mantén el XIAO ESP32S3 Sense dentro del buen rango de la puerta de enlace Wi-Fi HaLow
- Usa un navegador web moderno para una compatibilidad óptima
Solución de problemas:
- Si no puedes acceder a la transmisión de la cámara, verifica que tu dispositivo esté en la misma red que la puerta de enlace Wi-Fi HaLow
- Si la imagen no se muestra, revisa que el módulo de cámara esté correctamente conectado
- Si la transmisión se ve lenta o con retraso, intenta acercarte a la puerta de enlace Wi-Fi HaLow
Recursos
- [GITHUB] Repositorio mm-iot-esp32
- [GITHUB] Documento mm-iot
- [PDF] WI-FI_HALOW_FGH100M_EXT01_V30_SCH_20241107
- [KiCAD] Archivo KiCAD PCB WI-FI_HALOW_FGH100M_EXT01_V30
- [PDF] Quectel_FGH100M-H_Especificaciones del Módulo de Corto Alcance_V1.0.0
Soporte Técnico y Discusión de Producto
¡Gracias por elegir nuestros productos! Estamos aquí para brindarte diferentes tipos de soporte para asegurar que tu experiencia con nuestros productos sea lo más fluida posible. Ofrecemos varios canales de comunicación para atender diferentes preferencias y necesidades.