Blog
ESP32 + LoRa: Sensorknoten mit bis zu 8 km Reichweite
Das Problem
WLAN funktioniert großartig — bis Sie einen Sensor 200 Meter entfernt in den Garten stellen müssen. Oder auf einen Bauernhof jenseits des Tals. Oder in ein Metalllagerhaus. WLAN stirbt bei 50 Metern. Bluetooth bei 10.
LoRa ändert alles. Mit dem E32-LoRa-Modul (915MHz, 1W) können Sie Sensordaten über 8 Kilometer senden — ohne Mobilfunkmast, ohne WLAN, ohne Monatsgebühren.
Was Sie bauen werden
Ein batteriebetriebener LoRa-Sensorknoten, der:
- Temperatur und Luftfeuchtigkeit liest
- Daten per LoRa an einen Empfänger überträgt
- Zwischen den Messungen 10 Minuten im Deep Sleep geht (die Batterie hält monatelang)
Schwierigkeit: Einsteiger | Zeit: 45 Minuten | Kosten: ~$40 an Teilen
Benötigte Hardware (Stückliste)
| Teil | Modell | Anzahl | Preis | Kaufen |
|---|---|---|---|---|
| Mikrocontroller (Sender) | ESP32 DevKitC V4 | 1 | $13.49 | Produkt ansehen |
| Mikrocontroller (Empfänger) | ESP32-C3 SuperMini | 1 | $7.49 | Produkt ansehen |
| LoRa-Modul | E32-915T30D (915MHz) | 2 | $11.99 / Stück | Produkt ansehen |
| Temperatur-/Feuchtesensor | DHT22 | 1 | $5.24 | Produkt ansehen |
| Batteriestrom | 18650 Battery Shield | 1 | $11.99 | Produkt ansehen |
| Breadboard | 830-point | 1 | $4.49 | Produkt ansehen |
| Jumper-Kabel | M-M 40pcs | 1 | $2.99 | Produkt ansehen |
Frequenz-Warnung: E32-Module gibt es in den Versionen 433MHz, 868MHz und 915MHz. Sie können NICHT miteinander kommunizieren. Stellen Sie sicher, dass beide Module dieselbe Frequenz haben. In den USA wird 915MHz verwendet.
Schritt 1: Verkabelung (Sender-Knoten)
Das E32-LoRa-Modul nutzt UART-Serial — viel einfacher als SPI-basierte LoRa-Module. Keine komplexen Bibliotheken nötig!
| E32-LoRa-Pin | ESP32-Pin | Hinweis |
|---|---|---|
| VCC | 5V | Strom (prüfen Sie die Modulspezifikation) |
| GND | GND | Masse |
| RXD | GPIO 17 (TX2) | E32 RX ← ESP32 TX |
| TXD | GPIO 16 (RX2) | E32 TX → ESP32 RX |
| M0 | GND | Auf Sendemodus stellen |
| M1 | GND | Auf Sendemodus stellen |
| DHT22 DATA | GPIO 13 | Sensordaten |
TX↔RX kreuzen: UART ist wie ein Telefonat — Ihr Mund (TX) verbindet sich mit dem Ohr des anderen (RX). Kreuzen Sie immer: Modul-TXD → ESP32-RX2, Modul-RXD → ESP32-TX2.
Schritt 2: Sender-Code
Laden Sie das auf den Sender-ESP32 hoch (den mit dem DHT22-Sensor):
#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
}
Schritt 3: Empfänger-Code
Laden Sie das auf den Empfänger-ESP32 hoch (den, der am Computer hängt):
#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);
}
}
Schritt 4: Testen
- Versorgen Sie den Sender-Knoten mit dem 18650-Battery-Shield
- Verbinden Sie den Empfänger mit Ihrem Computer und öffnen Sie den Serial Monitor (115200 Baud)
- Alle 10 Minuten sehen Sie Temperatur und Luftfeuchtigkeit aus bis zu 8km Entfernung eintreffen
Warum das so gut funktioniert
- Deep Sleep: Der ESP32 zieht im Deep Sleep nur 10µA. Mit einer 2000mAh-18650-Batterie läuft der Sensorknoten mit einer Ladung über 3 Monate.
- UART-LoRa: Anders als SPI-basiertes LoRa (SX1276) nutzt das E32-Modul einfache serielle Kommunikation. Keine komplexe Bibliothek, kein SPI-Verdrahtungsdurcheinander, keine Konfigurationsregister.
- 1W-Leistung (30dBm): Die E32-915T30D ist die Hochleistungsversion. Standardmodule geben 20dBm (100mW) aus. Dieses gibt 30dBm (1000mW) aus — die 10-fache Leistung, die 3-fache Reichweite.
Noch weiter gehen
- Weitere Sensorknoten hinzufügen: Jeder Knoten sendet nach einem eigenen Zeitplan, um Kollisionen zu vermeiden
- An die Cloud weiterleiten: Verbinden Sie den Empfänger-ESP32 mit WLAN und leiten Sie die LoRa-Daten an MQTT weiter
- Solarenergie: Bauen Sie ein kleines Solarpanel ans 18650-Battery-Shield für den Dauerbetrieb
- Mesh aufbauen: Mehrere Empfänger-Knoten können Daten über noch größere Distanzen weiterreichen