Publicado el — Deja un comentario

Módulo LoRa E220-900T30D: Envío de texto serial paso a paso

El módulo LoRa E220-900T30D es un transceptor inalámbrico UART basado en el chip LLCC68 de Semtech que permite enviar texto serial entre dos puntos separados hasta 10km, sin router, sin internet y sin infraestructura adicional. Se define como un módulo de puerto serie inalámbrico: lo que escribes por UART en un extremo aparece en el UART del otro extremo, igual que un cable serial, pero a distancia.
Esta guía cubre todo lo necesario para hacer funcionar un enlace de texto entre dos módulos E220-900T30D: conexión de pines, modos de operación, código de ejemplo para Arduino y ESP32, y los errores más comunes al comenzar.

Componentes utilizados

Módulo LoRa E220-900T30D: especificaciones técnicas

Antes de conectar cualquier cable conviene tener claras las características del módulo para no dañarlo ni tener sorpresas de voltaje.

Parámetro Valor
Chip LLCC68 (Semtech)
Banda de frecuencia 850.125 – 930.125 MHz (por defecto 873.125 MHz)
Potencia de transmisión 30 dBm (1 W)
Distancia máxima (campo abierto) 10 km
Interfaz UART TTL
Voltaje de operación 3.0 – 5.5 V (óptimo ≥5V)
Nivel lógico Compatible 3.3V y 5V
Velocidad de datos UART 2.4 – 62.5 kbps
Corriente en transmisión ~120 mA
Buffer interno 400 bytes
Conector de antena SMA hembra (impedancia 50 Ω)
Dimensiones 24 × 43 mm
Temperatura de operación -40 °C a +85 °C

Un detalle importante: la corriente de transmisión puede llegar a 120 mA. El ESP32 DevKitC V4 alimentado por USB puede suministrar esa corriente sin problemas, pero si notas reinicios o comportamiento errático agrega un condensador de desacoplamiento de 100 µF entre VCC y GND del módulo, cerca del conector del E220-900T30D.

Pines del E220-900T30D y cómo conectarlos

El módulo LoRa E220-900T30D expone 8 pines en un conector DIP de 2.54 mm de paso. Estos son los que necesitas para una comunicación serial básica:

  • VCC — Alimentación. Conectar a 3.0–5.5V (5V recomendado para potencia máxima).
  • GND — Tierra. Debe ser común con el microcontrolador.
  • TXD — Salida serie del módulo. Conectar al RX del microcontrolador.
  • RXD — Entrada serie del módulo. Conectar al TX del microcontrolador.
  • M0 — Selección de modo (junto con M1). Para modo normal: M0 = LOW.
  • M1 — Selección de modo (junto con M0). Para modo normal: M1 = LOW.
  • AUX — Pin de estado. HIGH = módulo listo o buffer vacío; LOW = ocupado o inicializando.

Consideraciones importantes sobre AUX, M0 y M1

El pin AUX es opcional para pruebas básicas, pero muy recomendable en producción: si no lo usas, la librería inserta delays automáticos para compensar. Por otro lado, los pines M0 y M1 no deben quedar flotantes; por lo tanto, si no los vas a controlar dinámicamente, conéctalos directamente a GND para asegurar el modo normal.

Modos de operación del módulo LoRa E220-900T30D

M1 M0 Modo Descripción
0 0 Normal (transmisión transparente) Lo que entra por UART se envía por radio y viceversa. Es el modo para enviar texto.
0 1 WOR (Wake On Radio) Modo de bajo consumo. El módulo despierta cuando detecta actividad en el aire.
1 0 Configuración Permite leer y escribir parámetros vía comandos AT a 9600 baud, 8N1.
1 1 Deep sleep Consumo mínimo. No transmite ni recibe datos.

Modo recomendado para esta guía

Para esta guía se usa el modo normal (M0 = 0, M1 = 0), que es el más sencillo de configurar. Es importante tener en cuenta que los comandos AT de configuración solo funcionan a 9600 baud en modo de configuración (M1=1, M0=0); por lo tanto, no los envíes en modo normal o el módulo los ignorará.

Conexión del módulo LoRa E220-900T30D al ESP32 DevKitC V4

El siguiente cableado conecta dos módulos E220-900T30D a dos ESP32 DevKitC V4 para transmitir texto serial entre ellos. Repite el mismo esquema en ambos lados del enlace. Los pines del ESP32 operan a 3.3V, por lo que no necesitas divisor de voltaje en ninguna línea.

Se usa el UART2 (Serial2) del ESP32 con pines reasignados a GPIO25 (RX) y GPIO26 (TX), que son pines seguros en el DevKitC V4 y no interfieren con el arranque ni con el flash. Esto permite tener el monitor serial abierto en UART0 mientras el módulo LoRa opera sin interferencias.

Código para el módulo LoRa E220-900T30D: envío y recepción de texto

El código siguiente usa la librería EByte LoRa E220 library de Renzo Mischianti, disponible en el gestor de librerías de Arduino IDE. El mismo sketch corre en ambos nodos: cada uno puede enviar y recibir.


#include "LoRa_E220.h"
 
#define RX2 25
#define TX2 26
 
// Pines de control: AUX=GPIO4, M0=GPIO21, M1=GPIO19
LoRa_E220 e220ttl(&Serial2, 4, 21, 19);
 
void setup() {
  Serial.begin(115200);
  Serial2.begin(9600, SERIAL_8N1, RX2, TX2);
 
  if (e220ttl.begin()) {
    Serial.println("--- Nodo LoRa E220 Listo ---");
  } else {
    Serial.println("Error al iniciar el módulo. Revisa las conexiones.");
  }
 
  Serial.println("Escribe algo y presiona Enter para enviarlo.");
}
 
void loop() {
  // Recepción: si hay datos disponibles por radio
  if (e220ttl.available() > 1) {
    ResponseContainer rc = e220ttl.receiveMessage();
    if (rc.status.code == 1) {
      Serial.print(">> Recibido: ");
      Serial.println(rc.data);
    }
  }
 
  // Transmisión: si el usuario escribe en el monitor serial
  if (Serial.available()) {
    String input = Serial.readStringUntil('\n');
    input.trim();
    if (input.length() > 0) {
      e220ttl.sendMessage(input);
      Serial.print("<< ENVIADO: ");
      Serial.println(input);
    }
  }
}

Cómo interpretar la salida del monitor serial

Hay dos velocidades en el código que conviene no confundir. En primer lugar, Serial.begin(115200) corresponde al monitor serial por USB (UART0). En segundo lugar, Serial2.begin(9600, …) es la velocidad de comunicación con el módulo E220-900T30D, que por defecto opera a 9600 baud. Ambos son puertos distintos con propósitos distintos. Al iniciar, el monitor serial confirma si el módulo respondió correctamente; si ves el mensaje de error, verifica el cableado antes de continuar.

Parámetros de configuración del E220-900T30D que deben coincidir

Dos módulos E220-900T30D solo se comunican si comparten exactamente los mismos valores en estos tres parámetros:

  • Canal de frecuencia — Valor de 0 a 80. Determina la frecuencia exacta de operación dentro de la banda 850–930 MHz.
  • Dirección de red (NETID) — Identificador de red de 0 a 65535. Módulos en redes distintas no se escuchan entre sí.
  • Velocidad de datos por aire (air data rate) — Cuanto más baja, mayor alcance y mejor rechazo de interferencias, pero menor velocidad de transferencia.

Estos parámetros se configuran con comandos AT en modo de configuración (M1=1, M0=0) a 9600 baud, 8N1, o usando el software de configuración de Ebyte para Windows.

Errores frecuentes al empezar con el E220-900T30D

  • TXD y RXD invertidos: el pin TXD del módulo va al RX del microcontrolador, y el RXD del módulo va al TX. Es el cruce clásico y la causa número uno de “no recibo nada”.
  • Sin tierra común: si alimentas el módulo con una fuente distinta a la del microcontrolador, los GND deben estar unidos o no habrá referencia lógica compartida.
  • M0 o M1 flotantes: estos pines tienen pull-up interno débil, pero en un entorno con ruido pueden fluctuar. Conéctalos siempre a un nivel definido.
  • Sin antena: nunca transmitas sin antena conectada. A 30 dBm puedes dañar el amplificador de salida del chip LLCC68.
  • Velocidad UART incorrecta: la velocidad UART del módulo y la del microcontrolador deben coincidir. La velocidad por defecto de fábrica del E220-900T30D es 9600 baud.
  • Fuente de alimentación insuficiente: 120 mA en transmisión puede causar caídas de tensión en líneas USB largas o de baja calidad. Si el ESP32 se reinicia durante la transmisión, agrega un condensador de 100 µF entre VCC y GND del módulo.

Preguntas frecuentes sobre el E220-900T30D

¿Qué diferencia hay entre el E220-900T30D y el E220-900T22D?

La diferencia radica en la potencia: el T30D transmite a 30 dBm (1W) alcanzando 10km en campo abierto, mientras el T22D transmite a 22 dBm (5km). Ambos usan el chip LLCC68 e interfaz UART, por lo cual el código y conexión son idénticos.

¿Necesito licencia para usar el E220-900T30D en Perú?

En Perú, la banda 915 MHz está dentro de las bandas ISM de uso libre. La potencia máxima permitida sin licencia es de 1W (30 dBm), límite exacto de este módulo. Para fines comerciales, revise la normativa del MTC, ya que las condiciones varían según la aplicación.

¿El E220-900T30D es compatible con LoRaWAN?

No directamente. Opera en transmisión transparente punto a punto vía UART y no implementa el stack LoRaWAN de fábrica. Para conectividad LoRaWAN o redes como The Things Network, use módulos con stack integrado como el RAK3172.

¿Cuántos bytes puede enviar de una sola vez el E220-900T30D?

Posee un buffer de 400 bytes. Si el mensaje es mayor, el módulo lo fragmenta automáticamente en subpaquetes. No obstante, para la mayoría de aplicaciones de telemetría y texto corto, esta capacidad es más que suficiente.

¿Puedo usar el E220-900T30D con MicroPython o Raspberry Pi?

Sí. Funciona mediante UART con cualquier plataforma con puerto serie: Raspberry Pi, ESP32, STM32 o RP2040. Existen librerías en PyPI (ebyte-lora-e220-rpi) y versiones de MicroPython mantenidas por la comunidad científica.

¿Qué antena debo usar con el E220-900T30D?

El módulo tiene conector SMA hembra de 50 Ω. Para uso básico en escritorio, una antena de goma de 915 MHz con conector SMA macho es suficiente. Para mayor alcance en exteriores, una antena directiva de 5–8 dBi apuntada hacia el otro extremo del enlace mejora significativamente la distancia. Nunca transmitas sin antena: a 30 dBm puedes dañar el chip.

¿Tienes dudas sobre cuál módulo LoRa es el adecuado para tu proyecto? En MTLAB te asesoramos sin costo. Escríbenos por WhatsApp al +51 961 589 585 o visita nuestra categoría de módulos inalámbricos en mtlab.pe.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *