Conecta una red Meshtastic a Internet construyendo un gateway con la unidad C6L de M5Stack, y explora las aplicaciones que se abren al integrar la comunicación LoRa con MQTT.
Introducción
Meshtastic es una tecnología de comunicación basada en LoRa que permite crear redes en malla formadas por nodos. En estas redes, los mensajes muchas veces no viajan directamente desde el nodo de origen hasta nodo destino, sino que van “saltando” de un nodo a otro hasta completar el recorrido.
Esta forma de funcionamiento permite ampliar el alcance de la red y mantener la comunicación incluso cuando dos dispositivos no están dentro del rango directo entre sí. Pero, además de retransmitir mensajes dentro de la malla, algunos nodos también pueden cumplir una función especial: actuar como gateways.
Un gateway Meshtastic funciona como puente entre la red LoRa e Internet. De esta manera, se pueden unir mallas lejanas o enviar datos hacia servicios externos, servidores o plataformas de monitoreo.
En este artículo te voy a explicar cómo construir un gateway utilizando la unidad C6L de M5Stack, aprovechando su doble capacidad de comunicación: LoRa para conectarse con la malla Meshtastic y WiFi para enlazarse con Internet. También te voy a mostrar un sencillo ejemplo en el que un par de nodos envían datos de telemetría a través de la malla, los que son publicados en un broker por el gateway y luego extraídos en una computadora con Node-RED para alimentar un dashboard.
Nodos Meshtastic
Meshtastic es una plataforma de comunicación descentralizada y de código abierto que utiliza tecnología de radio LoRa. El sistema permite el envío de mensajes y coordenadas GPS sin depender de infraestructuras tradicionales como el internet o la telefonía celular, operando en frecuencias de uso libre según la región.
Cada elemento que forma parte de la malla se denomina nodo. Estos nodos pueden ser fijos, instalados en techos, postes o puntos elevados para mejorar el alcance y fortalecer la red, o portátiles, como pequeñas radios o localizadores empleados para enviar mensajes o datos de posición.
Los nodos pueden comprarse listos para usar o armarse con conocimientos básicos de electrónica. Hoy existen placas que ya integran casi toda la circuitería necesaria, por lo que solo queda conectar la batería, el panel solar y montar el conjunto dentro de una caja adecuada para soportar su funcionamiento a la intemperie.
En la actualidad, las placas más utilizadas son las basadas en ESP32 o en nRF52840, con distintos modelos disponibles de varios fabricantes.
Las placas con ESP32 tienen la ventaja de combinar LoRa, mediante un módulo de radio externo, con conectividad WiFi y Bluetooth integrada. En cambio, las placas basadas en el chip Nordic nRF52840 no incluyen WiFi, pero ofrecen como contrapartida un menor consumo de energía, algo muy importante en nodos alimentados por batería o panel solar.
Uniendo redes
Como te contaba al principio, en una red Meshtastic los mensajes no viajan necesariamente de forma directa, sino que van saltando de un nodo a otro hasta llegar a su destino.
Esta forma de funcionamiento hace que la red sea resiliente: si uno o más nodos dejan de funcionar, los mensajes pueden encontrar rutas alternativas y seguir circulando por la malla.
Dentro de la red se pueden instalar uno o más nodos que cumplan la función de gateway. Un gateway actúa como puente entre la red LoRa de Meshtastic e Internet, permitiendo que los mensajes o datos generados dentro de la malla puedan salir hacia otros servicios o plataformas.
El gateway debe tener capacidad de conectarse a ambas redes: por un lado a la red LoRa de Meshtastic, y por otro a Internet, por ejemplo mediante WiFi o Ethernet.
Una vez conectado, el gateway puede tomar ciertos mensajes o datos que circulan por la red LoRa y publicarlos en un servidor usando el protocolo MQTT. A un servidor que usa este protocolo se le sule llamar broker. A partir de allí, esa información puede ser utilizada por distintas aplicaciones externas.
Por ejemplo, un servicio puede leer los datos publicados en el broker para procesarlos, almacenarlos o mostrarlos en un dashboard, algo especialmente útil cuando se trabaja con información de telemetría, como temperatura, ubicación, estado de baterías o datos provenientes de sensores remotos.
Otra aplicación de un gateway es unir mallas que están fuera del alcance de las radios LoRa. Un nodo ubicado en una zona geográficamente alejada puede recibir mensajes de otros nodos a través de MQTT. De esta manera, es posible extender el alcance de la red más allá de las limitaciones propias de LoRa.
Sin embargo, esta ampliación depende de Internet, por lo que se resigna parte de una de las principales ventajas de Meshtastic: su capacidad de funcionar como una red autónoma, descentralizada e independiente de la infraestructura tradicional de comunicaciones. Por esta razón, algunas comunidades de usuarios prefieren limitar su uso y priorizar las comunicaciones exclusivamente por radio.
La unidad C6L
Características
La C6L de M5Stack es una unidad basada en el ESP32-C6 de Espressif, un potente Soc multiprotocolo que integra dos procesadores RISC-V de 32 bits, uno principal trabajando a 160 MHz y otro de bajo consumo que opera a 20 MHz acompañados de una memoria Flash de 16 MB.
La capacidad de conectividad empleando redes WiFi 6 en 2,4 GHz y Bluetooth Low Energy del C6 es complementada con un transceptor LoRa basado en el SX1262 capaz de operar en la banda de 868 a 923 MHz.
Adicionalmente, la C6L integra un display OLED monocromo de 0,66 pulgadas y una resolución de 64 x 48 pixeles, un led RGB tipo WS2812C, un buzzer y dos botones: uno de uso múltiple para el usuario y otro que se emplea para el encendido, RESET y activación del modo BOOT.
Para la interconexión con periféricos externos, la C6L incorpora una interfaz Grove mediante un conector HY2.0 de 4 pines. Además, el gabinete incluye orificios compatibles con sistemas de montaje tipo LEGO.
La alimentación de 5 Voltios ingresa a la unidad a través de un conector USB tipo C que también se usa para la programación del dispositivo. La unidad no tiene batería interna, así que se debe incluir una externa para mantenerla en funcionamiento.
Aplicaciones
Gracias a su capacidad de operar tanto en redes WiFi como LoRa y sus dos antenas, la unidad C6L encuentra utilidad en múltiples aplicaciones:
- Integrada en una red Meshtastic, puede funcionar como nodo portátil para mensajería y localización en actividades al aire libre o situaciones de emergencia. También puede utilizarse como nodo fijo dentro de la infraestructura de red o como gateway que vincule la red LoRa con Internet mediante WiFi.
- En redes LoRa privadas, resulta adecuada para aplicaciones de monitoreo remoto en ámbitos como la agricultura, la industria o el control ambiental.
- Por su conectividad WiFi, además, puede integrarse en sistemas de domótica, seguridad o sensado de corto alcance, enviando datos a servidores MQTT, dashboards web o plataformas como Home Assistant.
Construyendo el Gateway
Después de esta introducción al concepto de gateway en Meshtastic y a las características y aplicaciones de la C6L, veamos el paso a paso de la construcción de este gateway.
En la siguiente imagen podés apreciar el equipo ya armado y funcionando, con el detalle de cada uno de sus componentes. Veamos con mas detalle cada uno de ellos.

Caja contenedora
La electrónica del gateway está contenida en una caja estanca IP65 de 20 cm x 20 cm de material plástico que la protege de las inclemencias del clima.
Sobre el fondo de la caja fijé una placa de MDF de 3 mm de espesor cortada con láser con las medidas justas, para montar sobre ella el resto de los componentes. Tal vez el MDF no sea la mejor elección porque puede absorber humedad, pero quería hacer la prueba porque es cómodo y fácil hacer cortar una placa de este tipo.
Baterías
Para alimentar el gateway utilizo tres baterías recargables tipo 18650 de 3,7 Voltios. En este caso mas especificamente de la marca Panasonic, modelo NCR18650-BD, que me han dado excelentes resultados. Estas baterías teóricamente tienen una capacidad de 3000 mAh, así que el conjunto tendrá la capacidad de almacenar una buena cantidad de energía para mantener el nodo en funcionamiento durante los días de poco sol que se avecinan.
Un consejo: no ahorres en baterías de mala calidad, marcas desconocidas o que sean de marca pero con un precio sospechosamente bajo. Las baterías son un componente fundamental en un nodo y usar unas de buena calidad te asegurarán una buena autonomía, larga duración y funcionamiento sin inconvenientes. Vale la pena la inversión.
Controlador de alimentación
Este es un componente clave que cumple con varias funciones. No sólo se encarga de cargar las baterías con la energía proveniente del panel solar sino que también debe protegerlas ante distintas situaciones, para optimizar su funcionamiento y alargar su vida útil.
Para este proyecto elegí una placa Waveshare que es bastante completa ya que integra varias funciones importantes que resuelven de manera integral el tema de la gestión de alimentación:
- Carga las baterías desde un panel solar
- Acepta paneles con una tensión de salida entre 6 y 24 Voltios
- Soporta MPTT para optimizar la eficiencia del panel
- Incluye leds indicadores del estado de las baterías y del panel.
- Carga las baterías desde una entrada USB-C.
- Provee una salida de tensión de 5 VDC/3 A
- Incluye distintos tipos de conectores y borneras de conexión.
- Protege las baterías
- Contra sobrecarga
- Contra sobredescarga
- Contra inversión de polaridad
Waveshare tiene varios modelos diferentes de placas con funciones similares, la que yo usé es el «D». Podés encontrar mas información de este modelo y una comparativa de todas estas placas en su Wiki.
Unidad C6L
La C6L es el corazón del Gateway. Está atornillada sobre el fondo de la caja contenedora y se alimenta desde la placa controladora de alimentación con un cable USB-C reciclado.
Contiene las dos antenas, LoRa y WiFi. En esta primera versión he preferido usar las antenas originales dentro de la caja, pero planeo más adelante conectar una antena exterior LoRa para lograr una mayor ganancia y por lo tanto mayor alcance.
Panel solar
Para lograr una buena autonomía, sobre todo en los meses de invierno cuando hay poca radiación solar, le conecté un panel de 10 Watts, con sus correspondientes soportes para montarlo sobre un caño.
Actualización del firmware
Antes de proceder a la configuración del nodo para que funcione como Gateway, hay que asegurarse de que la unidad tenga la última versión del firmware Meshtastic.
Para ello se puede emplear la página de meshtastic.org que tiene una aplicación de actualización. El procedimiento es sencillo y podés verlo paso a paso en el siguiente video:
En mi caso, empecé con la versión 2.7.15, que es conocida por ser bastante estable, pero tuve problemas con la conexion WiFi. Luego cargué la 2.7.20 que funcionó sin problemas. Aparentemente el soporte para el ESP32-C6 dentro del firmware Meshtastic aún está en desarrollo y puede que encuentres diferencias entre un firmware y otro.
Con el firmware actualizado, se puede proceder con la configuración para que el nodo funcione como gateway.
Configuración
Para que el nodo funcione correctamente dentro de una malla debe tener una serie de parámetros correctamente configurados. Algunos de estos parámetros son la región, el nombre del nodo, los canales a utilizar, etc. No me extenderé sobre el detalle de cada uno de estos valores, en su lugar paso a explicar sólo lo que corresponde específicamente al funcionamiento como gateway.
Importante: lo mas habitual es configurar un nodo a través de la aplicación Meshtastic usando Bluetooth. Sin embargo, al habilitar la conexión de WiFi, se perderá el enlace bluetooth. Esto es una limitante del firmware Meshtastic. Por esta razón, te recomiendo hacer la configuración usando un cable USB y el cliente web https://client.meshtastic.org
Vamos a revisar dos configuraciones importantes: la del WiFi y el MQTT y al final haré una aclaración sobre el rol del nodo.
Configuración WiFi
Se debe habilitar el WiFi y cargar el nombre de la red a la que la unidad va a acceder y su contraseña:
En el display OLED de la C6L se habilita un nuevo menú donde podemos ver el estado de la conexión:
Configuración MQTT
A continuación se debe habilitar y configurar el uso de MQTT. Esto se hace en varios puntos de la configuración.
En la configuración de la radio:
En la configuración del canal primario (habilitar al menos Uplink)

Y en la configuración del módulo donde se definen algunos valores relacionados con el servidor o broker.
Para probar el funcionamiento del gateway te sugiero que uses un broker público. Yo hice las pruebas con el de EMQX, con la siguiente configuración:
Host: broker.emqx.io
Port: 1883
TLS: OFF
Username: vacío
Password: vacíoEn el cliente web se ve de la siguiente forma:
El broker publico no necesita nombre de usuario y contraseña, pero el cliente de configuración igualmente los carga, generando una contraseña al azar.
Es importante habilitar el uso del formato JSON para después poder ver la información que se guarda en el broker de una manera mas clara, y no en binario.
Configuración del rol
El rol de un nodo define como será su comportamiento dentro de la malla, en relación a los mensajes que origine y a los que recibe de otros nodos.
El rol mas usado seguramente es CLIENT, que es el rol por defecto, pero hay otros como CLIENT_MUTE, ROUTER, TRACKER, SENSOR, etc. No existe el rol GATEWAY.
En este caso particular, el nodo no estará ubicado en una posición privilegiada ni cumplirá una función estratégica de cobertura amplia, por lo que no se justifica configurarlo como ROUTER. Al mismo tiempo, quiero que pueda retransmitir los mensajes que reciba por LoRa, por lo que descarto CLIENT_MUTE. Tampoco corresponde usar roles especializados como SENSOR o TRACKER, ya que la intención es que el equipo permanezca integrado a la malla como un nodo de uso general. Por ese motivo, la configuración más adecuada es dejarlo con el rol CLIENT.
Comprobando el funcionamiento
Llegó el momento de probar que todo esto funciona y tiene alguna utilidad práctica.
Para ello te sugiero una aplicación que monitoree la tensión de batería de dos nodos en una malla a través de un dashboard construido usando node-RED. Los nodos envían información de telemetría usando LoRa y el gateway la publica en el broker,desde donde es extraída por el flujo node-RED.
El primer paso va a ser configurar los nodos para que envíen telemetría:
A continuación, vamos a usar un cliente MQTT para suscribirnos al broker y ver la información que mandan esos nodos. Yo recomiendo MQTTX, que es bastante simple de usar.
Cargando los datos del broker EMQX y el topic donde publica el gateway, se puede ver que van llegando distintos paquetes de información (nodeinfo), posición (position) y telemetría (telemetry) que son los que nos interesan para esta demostración. Estos paquetes se pubican en un subtopic que identifica al nodo gateway (814ffff8):
Esto confirma que el gateway funciona.
El siguiente paso es hacer algo con esta información. Debemos crear algún tipo de aplicación que se suscriba al mismo topic y muestre algunos de los datos recibidos de una forma mas amigable.
Una herramienta sencilla y muy didactica para hacer esto es node-RED, que es gratuita y puede correr en distintas plataformas. Para hacer una prueba de concepto, hice el siguiente flujo:

Este flujo inicia con un bloque que está suscripto al topic salsimesh/2/json/# para capturar los datos que envía el Gateway. Su salida se pasa a JSON y luego se parsea el JSON para obtener la tensión de batería con el bloque function 1:
La salida de function 1 se muestra en debug 1 y también alimenta a dos switches o conmutadores que verifican los números de nodo para mostrar en cada gauge la tensión de batería correspondiente. Por ejemplo para bateria 1:
Si el identificador del nodo es 138817e7 (en hexa), manda el valor de la tensión al Gauge 1. El otro bloque hace lo propio con el otro nodo, que tiene otro identificador y otro gauge.
El dashboard con los dos gauges tiene el siguiente aspecto:

Es importante notar que los nodos no tienen habilitado el MQTT, sino que mandan su telemetría a través de la malla y es el Gateway el que la captura y la sube al broker.
Así se resume gráficamente el flujo de informacion:

Conclusiones
En este artículo vimos qué es un gateway y qué papel puede cumplir dentro de una malla Meshtastic. A partir de la unidad C6L de M5Stack, construimos un nodo capaz de comunicarse por LoRa con la malla y, al mismo tiempo, conectarse a Internet mediante WiFi. Para comprobar su funcionamiento, hicimos una prueba sencilla pero muy representativa: dos nodos enviaron su telemetría por LoRa, el gateway la publicó en un broker MQTT y luego Node-RED tomó esos datos para mostrarlos en un dashboard. De esta manera, pudimos ver cómo una red Meshtastic puede mantenerse funcionando de forma local y autónoma, pero también abrir una puerta hacia aplicaciones externas de monitoreo, registro y visualización de datos.
Este es solo un ejemplo, pero sirve para mostrar las posibilidades que se abren al interconectar una red Meshtastic con Internet y el potencial que ofrece la unidad C6L. A partir de esta base, se pueden imaginar muchas otras aplicaciones.
Como siempre, cualquier duda o sugerencia, podés dejarla mas abajo en la sección de comentarios.
Nos vemos! 🚀















