Uncategorized

ESP32 + LoRa: nodo sensor de largo alcance (hasta 8 km)

El problema

El WiFi funciona de maravilla, hasta que necesitas poner un sensor en tu jardín a 200 metros. O en una granja al otro lado del valle. O dentro de un almacén de metal. El WiFi se muere a los 50 metros. El Bluetooth, a los 10.

LoRa lo cambia todo. Con el módulo LoRa E32 (915MHz, 1W), puedes enviar datos del sensor hasta 8 kilómetros, sin antena de telefonía, sin WiFi y sin cuotas mensuales.

Qué vas a construir

Un nodo sensor LoRa alimentado por batería que:

  • Lee temperatura y humedad
  • Transmite los datos por LoRa a un receptor
  • Entra en deep sleep 10 minutos entre lecturas (la batería dura meses)

Dificultad: Principiante  |  Tiempo: 45 minutos  |  Coste: ~40,00 $ en piezas

Hardware necesario (lista de materiales)

Componente Modelo Cant. Precio Comprar
Microcontrolador (emisor) ESP32 DevKitC V4 1 13,49 $ Ver producto
Microcontrolador (receptor) ESP32-C3 SuperMini 1 7,49 $ Ver producto
Módulo LoRa E32-915T30D (915MHz) 2 11,99 $ c/u Ver producto
Sensor de temperatura/humedad DHT22 1 5,24 $ Ver producto
Alimentación por batería Escudo de batería 18650 1 11,99 $ Ver producto
Protoboard 830 puntos 1 4,49 $ Ver producto
Cables jumper M-M 40 uds. 1 2,99 $ Ver producto

Aviso sobre la frecuencia: los módulos E32 existen en versiones de 433MHz, 868MHz y 915MHz. NO pueden comunicarse entre sí. Asegúrate de que ambos módulos tengan la MISMA frecuencia. En EE. UU. se usa 915MHz.

Paso 1: Cableado (nodo emisor)

El módulo LoRa E32 usa UART serie, mucho más simple que los módulos LoRa basados en SPI. ¡Nada de librerías complicadas!

Pin E32 LoRa Pin ESP32 Nota
VCC 5V Alimentación (revisa las especificaciones de tu módulo)
GND GND Tierra
RXD GPIO 17 (TX2) RX del E32 ← TX del ESP32
TXD GPIO 16 (RX2) TX del E32 → RX del ESP32
M0 GND Configurado en modo transmisión
M1 GND Configurado en modo transmisión
DATA DHT22 GPIO 13 Datos del sensor

Cruce TX↔RX: el UART es como una llamada de teléfono: tu boca (TX) se conecta con el oído del otro (RX). Cruza siempre las conexiones: TXD del módulo → RX2 del ESP32, RXD del módulo → TX2 del ESP32.

Paso 2: Código del emisor

Sube esto al ESP32 emisor (el que lleva el sensor DHT22):

#include <HardwareSerial.h>
#include "DHT.h"

HardwareSerial LoRaSerial(2); // ESP32 Serial2 (GPIO 16, 17)

#define DHTPIN 13
#define DHTTYPE DHT22
DHT dht(DHTPIN, DHTTYPE);

// Deep sleep: 10 minutes between readings
#define uS_TO_S_FACTOR 1000000ULL
#define TIME_TO_SLEEP  600

void setup() {
  Serial.begin(115200);
  Serial.println("sensbench LoRa Sensor Node");

  LoRaSerial.begin(9600);
  dht.begin();
  delay(2000);

  float h = dht.readHumidity();
  float t = dht.readTemperature();

  if (isnan(h) || isnan(t)) {
    Serial.println("Sensor read failed!");
  } else {
    String data = "T:" + String(t, 1) + "C H:" + String(h, 1) + "%";
    Serial.println("Sending: " + data);
    LoRaSerial.println(data);
  }

  Serial.println("Deep sleeping for 10 minutes...");
  Serial.flush();

  esp_sleep_enable_timer_wakeup(TIME_TO_SLEEP * uS_TO_S_FACTOR);
  esp_deep_sleep_start();
}

void loop() {
  // Not reached after deep sleep
}

Paso 3: Código del receptor

Sube esto al ESP32 receptor (el conectado a tu ordenador):

#include <HardwareSerial.h>

HardwareSerial LoRaSerial(2);

void setup() {
  Serial.begin(115200);
  Serial.println("sensbench LoRa Receiver");
  LoRaSerial.begin(9600);
}

void loop() {
  if (LoRaSerial.available()) {
    String data = LoRaSerial.readString();
    Serial.print("Received: ");
    Serial.println(data);
  }
}

Paso 4: Pruébalo

  1. Alimenta el nodo emisor con el escudo de batería 18650
  2. Conecta el receptor a tu ordenador y abre el Monitor Serie (115200 baudios)
  3. Cada 10 minutos verás llegar la temperatura y la humedad desde hasta 8 km de distancia

Por qué funciona tan bien

  • Deep Sleep: el ESP32 consume solo 10µA en deep sleep. Con una batería 18650 de 2000mAh, el nodo sensor puede funcionar más de 3 meses con una sola carga.
  • LoRa por UART: a diferencia del LoRa basado en SPI (SX1276), el módulo E32 usa comunicación serie simple. Sin librerías complejas, sin líos de cableado SPI, sin registros de configuración.
  • Potencia de 1W (30dBm): el E32-915T30D es la versión de alta potencia. Los módulos estándar emiten 20dBm (100mW). Este emite 30dBm (1000mW): 10 veces más potencia, 3 veces más alcance.

Ir más allá

  • Añade más nodos sensores: cada nodo envía datos en un horario distinto para evitar colisiones
  • Reenvía a la nube: conecta el ESP32 receptor al WiFi y pasa los datos LoRa a MQTT
  • Energía solar: añade una placa solar pequeña al escudo de batería 18650 para una instalación permanente
  • Monta una malla: varios nodos receptores pueden retransmitir los datos a distancias aún mayores

Leave a Reply

Your email address will not be published. Required fields are marked *