HowTo / Daten mit ESP32 aufnehmen
Mit dieser Anleitung bringst du einen ESP32 dazu, mit dem Funkmodul Dragino LA66 Messwerte an das Netzwerk TTN und weiter ans LoRaMINT-Backend zu funken. Programmiert wird in der einsteigerfreundlichen App Thonny – ganz ohne Vorkenntnisse.
Materialien und Vorbereitungen
Hardware
- ESP32-Board (z. B. ESP32-S3) mit USB-Kabel
- Dragino LA66 Funkmodul mit Antenne (Antenne anschrauben!)
- ein paar Steckkabel (Jumperkabel)
- BME280-Sensor (für Temperatur-, Luftfeuchte- und Luftdruckmessung)

1. Thonny und MicroPython einrichten
Thonny installieren
Thonny ist das Programm, mit dem du auf deinem Computer Code schreibst und ihn auf das ESP32-Board überträgst.
- Lade Thonny von thonny.org herunter und installiere es (Windows/macOS/Linux).
- Starte Thonny. Ist die Oberfläche auf Englisch, kannst du unter Tools → Options → General → Language auf Deutsch umstellen.
MicroPython auf den ESP32 flashen
Damit das Board Python „versteht", spielst du ihm einmalig MicroPython auf – das ist eine abgespeckte Python-Version für kleine Mikrocontroller.
- Verbinde das ESP32-Board per USB mit dem Computer.Board wird nicht gefunden? Dann fehlt der USB-Treiber (CP210x oder CH340). Installiere ihn und probiere ein anderes USB-Kabel (manche Kabel können nur laden, nicht Daten übertragen).
- Öffne Extras → Optionen → Interpreter.
- Wähle oben „MicroPython (ESP32)".
- Wähle darunter den Port deines Boards – das ist der Anschluss, über den dein Computer mit dem Board spricht (①).

- Klicke unten auf „MicroPython installieren oder aktualisieren" (②).
- Im Dialog Family und Variant passend zum Board wählen und auf Installieren klicken. Kommt ein Verbindungsfehler, halte die BOOT-Taste am Board gedrückt, während die Installation startet.

- Danach den Dialog schließen und mit OK bestätigen.
Board mit Thonny verbinden
- Unten in Thonny erscheint die Shell – ein Eingabefeld mit dem Zeichen
>>>, in das du direkt Befehle tippen kannst. Fehlt sie, öffne noch einmal Extras → Optionen → Interpreter, prüfe den Port und drücke den roten Stopp-Knopf. - Tippe zum Testen in die Shell:
print("Hallo ESP32")Erscheint Hallo ESP32, klappt die Verbindung. 🎉
2. Alles verkabeln
Damit ESP32 und Funkmodul miteinander reden können, verbindest du sie mit vier Kabeln (das nennt man UART – eine einfache serielle Verbindung). Wichtig: TX geht immer auf RX und umgekehrt (Senden ↔ Empfangen), sonst hören beide nicht zu. Die folgende Skizze zeigt die komplette Verkabelung inklusive BME280-Sensor.

ESP32 ↔ LA66 (Funkmodul)
| ESP32 | LA66 |
|---|---|
GPIO17 (TX = Senden) | RX (PIN 11) |
GPIO16 (RX = Empfangen) | TX (PIN 10) |
GND (Minus) | GND |
3V3 (Strom) | 3V3 |
3. Die loramint-Bibliothek auf das Board laden
loramint ist unsere fertige Programm-Bibliothek. Sie übernimmt das komplizierte Funken, damit dein Code kurz bleibt. Du kopierst den Ordner loramint/ auf das Board:
- Lade die Bibliothek herunter (Button unten) und aktiviere in Thonny Ansicht → Dateien. Es erscheinen zwei Bereiche: oben dein Computer, unten das „MicroPython device" (das Board).
- Entpacke die ZIP und gehe im oberen Bereich in den Ordner mit den Dateien.
- Rechtsklick auf den Ordner
loramint→ „Upload nach /". - Unten (auf dem Gerät) muss danach der Ordner
loramintauftauchen.

4. Verbindung zum LA66 testen
Bevor du funkst, prüfst du kurz, ob ESP32 und LA66 sich „hören". Lege in Thonny ein neues Skript an (Datei → Neu) und schreibe:
from loramint import LoRaMINT
lora = LoRaMINT() # Standard: TX=GPIO17, RX=GPIO16
lora.check_connection() # gibt eine Statusmeldung ausFühre das Programm aus (grüner Play-Knopf oder Taste F5). In der Shell sollte eine Erfolgsmeldung mit der Firmware-Version des LA66 erscheinen. Kommt keine Antwort:
- Verkabelung prüfen (TX↔RX gekreuzt? GND verbunden?),
- oder andere Pins angeben:
LoRaMINT(uart_id=1, tx=4, rx=5).
5. Temperatur mit dem BME280 senden
Jetzt sendest du echte Messwerte. Das fertige Programm send_temperature.py liest den BME280-Sensor aus und funkt die Temperatur einmal pro Minute.
- BME280 anschließen. Der Sensor ist in der Verkabelungs-Skizze (Abschnitt 2) bereits enthalten – schließe ihn wie dort gezeigt über I2C an: SDA an GPIO10, SCL an GPIO11 sowie GND und 3V3 (Sensor-Adresse
0x76). - Sensor-Treiber laden. Der BME280-Treiber gehört nicht zu uns, sondern ist fertiger Fremdcode. Lade eine Treiberdatei herunter und lege sie – genau wie in Schritt 3 über Ansicht → Dateien – als
bme280.pyauf das Board.🔗 Fremdcode: robert-hh/BME280 auf GitHub – lade dort die passende Treiberdatei (z. B.bme280_float.py) herunter und speichere sie auf dem Board alsbme280.py(so heißt sie im Beispiel). - Programm öffnen und starten:
send_temperature.pyin Thonny öffnen, die Pins ggf. anpassen und starten (grüner Play-Knopf oder F5). In der Shell siehst du:Joining LoRaWAN network...– das Board meldet sich im Funknetz anJoined.(kann bis zu einer Minute dauern)- danach im Minutentakt
Measurement sent: 21.5
Klappt die Anmeldung nicht (txTimeout), wurde zwar gefunkt, aber kein Gateway hat geantwortet – Schlüssel in TTN und die Antenne prüfen.
Damit das Programm nach dem Einschalten von allein läuft
Ein Programm mit dem Namen main.py startet der ESP32 automatisch, sobald er Strom bekommt. So speicherst du dein Beispiel als main.py auf das Board:
- Das geöffnete Beispiel über Datei → Speichern unter sichern.
- Als Ort „MicroPython-Gerät" wählen.
- Als Dateiname
main.pyeingeben. - Board neu starten (Reset-Taste) → das Programm läuft von allein.
6. Wenn etwas nicht klappt
Häufige Probleme & Lösungen
| Problem | Lösung |
|---|---|
| Board erscheint unter keinem Port | USB-Treiber (CP210x/CH340) installieren, anderes USB-Kabel testen |
| „Could not connect" beim Flashen | BOOT-Taste gedrückt halten, während die Installation startet |
| Verbindung / Port belegt | anderes Programm am Port schließen – nur Thonny darf ihn nutzen |
check_connection meldet nichts | Verkabelung prüfen: TX↔RX gekreuzt, GND verbunden, richtige Pins |
Anmeldung txTimeout | Schlüssel in TTN prüfen, Antenne anschließen, in Gateway-Reichweite gehen |
| Zweite Nachricht schlägt fehl | zu schnell hintereinander gefunkt – mindestens ~10 Sekunden warten |
| Umlaute kommen falsch an | nur einfache Zeichen senden ("*C" statt "°C") |