SYSTEM

LoRaWAN GPS-Tracker

Gesamtsystem :

1. Darstellung Gesamtsystem

2. LoRa GPS Tracker

gps_lora_tracker

Ein kompakter GPS-Tracker auf Basis eines Heltec Wireless Tracker mit integriertem GPS-Modul und LoRaWAN-Anbindung.

Der Tracker ermittelt regelmäßig seine aktuelle GPS-Position und überträgt Latitude und Longitude über LoRaWAN an einen LoRaWAN-Netzwerkserver, beispielsweise The Things Network (TTN).

Zusätzlich verfügt das Gerät über ein kleines Display, einen Taster zur Aktivierung der Aufzeichnung sowie einen integrierten WLAN-Hotspot zur Konfiguration des Sendeintervalls.


Projektübersicht

Der GPS-Tracker kombiniert folgende Funktionen:

  • ESP32-Mikrocontroller
  • integriertes GPS-Modul
  • LoRaWAN-Funkübertragung
  • Anzeige der GPS-Koordinaten auf dem integrierten Display
  • einstellbares Übertragungsintervall
  • Speicherung des Intervalls im LittleFS
  • WLAN-Hotspot zur Konfiguration
  • Taster zur Aktivierung der Aufzeichnung
  • Übertragung des Aufzeichnungsstatus über LoRaWAN
  • OTAA-Anmeldung bei LoRaWAN
  • automatischer Failsafe bei fehlendem GPS-Fix bzw. GPS-Startverzögerung

Hardware

Verwendete Hardware

  • Heltec Wireless Tracker
  • integriertes ESP32
  • integriertes LoRa-Modul
  • integriertes GPS-Modul
  • integriertes ST7735 TFT-Display
  • Taster an GPIO 0

GPS

Das GPS-Modul wird über Serial1 angesprochen.

GPS RX/TX:
GPIO 33 / GPIO 34
Baudrate: 115200

Das GPS wird über VGNSS_CTRL aktiviert.

#define VGNSS_CTRL 3

Display

Das integrierte ST7735-Display wird zur Anzeige des aktuellen GPS-Status verwendet.

Bei vorhandenem GPS-Fix werden Latitude und Longitude angezeigt:

LAT: 51.xxxxxx
LON: 11.xxxxxx

Ist noch kein GPS-Fix vorhanden:

Kein GPS Fix

Die Anzeige wird alle 3 Sekunden aktualisiert.


LoRaWAN

Die Kommunikation erfolgt über LoRaWAN.

Verwendet wird:

  • LoRaWAN Class A
  • OTAA
  • Region entsprechend der Einstellung ACTIVE_REGION
  • Uplink Port 2
  • ADR aktiviert

Im Sketch ist vorgesehen:

DeviceClass_t loraWanClass = CLASS_A;

bool overTheAirActivation = true;

bool loraWanAdr = true;

uint8_t appPort = 2;

Das Übertragungsintervall wird über appTxDutyCycle festgelegt.


Datenübertragung

Die GPS-Koordinaten werden für die Übertragung auf Ganzzahlen skaliert.

Latitude und Longitude werden mit dem Faktor 100000 multipliziert.

Damit können die Koordinaten mit hoher Genauigkeit in 4 Byte übertragen werden.

Das Datenformat umfasst insgesamt 9 Byte:

ByteInhalt
0–3Latitude
4–7Longitude
8Logging-Status

Payload

Byte 0-3   Latitude
Byte 4-7   Longitude
Byte 8     Logging

Der Logging-Status hat folgende Bedeutung:

0 = Logging AUS
1 = Logging EIN

TTN Payload Formatter

Für The Things Network (TTN) kann folgender Payload Formatter verwendet werden:

function decodeUplink(input) {

  var bytes = input.bytes;

  var lat = (bytes[0]<<24 | bytes[1]<<16 | bytes[2]<<8 | bytes[3]) / 100000;
  var lon = (bytes[4]<<24 | bytes[5]<<16 | bytes[6]<<8 | bytes[7]) / 100000;

  var logging = bytes[8] === 1;

  return {
    data: {
      latitude: lat,
      longitude: lon,
      logging: logging
    }
  };
}

Das Ergebnis steht anschließend beispielsweise als JSON zur Verfügung:

{
  "latitude": 51.123456,
  "longitude": 11.654321,
  "logging": true
}

Logging

Der Taster an GPIO 0 steuert den Aufzeichnungsstatus.

#define BUTTON_PIN 0

Der Taster arbeitet mit INPUT_PULLUP.

Taster gedrückt  → LOGGING START
Taster loslassen → LOGGING STOP

Der aktuelle Status wird als zusätzliches Byte im LoRaWAN-Payload übertragen.


Einstellbares Sendeintervall

Das Übertragungsintervall kann über einen integrierten WLAN-Hotspot eingestellt werden.

Der ESP32 stellt dazu ein eigenes WLAN bereit:

SSID: ESP32-LoRa-Config
Passwort: 12345678

Nach dem Verbinden kann über die IP-Adresse des ESP32 eine kleine Konfigurationsseite geöffnet werden.

Dort kann das Intervall eingegeben und gespeichert werden.


LittleFS

Das konfigurierte Intervall wird dauerhaft im internen Flash-Speicher des ESP32 gespeichert.

Verwendet wird LittleFS.

Die Datei:

/intervall.txt

enthält beispielsweise:

intervall=10000

Nach einem Neustart wird der gespeicherte Wert automatisch geladen.

Dadurch bleibt die Einstellung des Sendeintervalls auch nach dem Ausschalten des Gerätes erhalten.


WLAN-Konfiguration

Der ESP32 arbeitet für die Konfiguration als Access Point.

WiFi.softAP(ap_ssid, ap_pass);

Die IP-Adresse des Access Points wird beim Start über den seriellen Monitor ausgegeben.

Beispiel:

AP gestartet
IP: 192.168.4.1

Anschließend kann die Konfigurationsseite über diese Adresse geöffnet werden.


GPS-Fix

Nach dem Einschalten wartet das System zunächst auf einen gültigen GPS-Fix.

Während dieser Zeit wird über den seriellen Monitor ausgegeben:

Warte auf GPS Fix...

Nach maximal 120 Sekunden wird auch ohne gültigen GPS-Fix ein Sendevorgang ausgelöst.

Dadurch bleibt der LoRaWAN-Ablauf auch bei schlechten GPS-Empfangsbedingungen funktionsfähig.


Programmablauf

Vereinfacht arbeitet der Tracker nach folgendem Schema:

ESP32 starten
     │
     ├── LittleFS initialisieren
     │
     ├── Sendeintervall laden
     │
     ├── WLAN Access Point starten
     │
     ├── LoRaWAN initialisieren
     │
     ├── GPS einschalten
     │
     └── System starten
             │
             ▼
        GPS-Daten lesen
             │
             ▼
        GPS-Fix vorhanden?
          │          │
         Nein       Ja
          │          │
          └────┬─────┘
               ▼
        Payload erstellen
               │
               ▼
          LoRaWAN Uplink
               │
               ▼
        Warten auf nächstes
        Übertragungsintervall

Arduino-Bibliotheken

Für die Kompilierung werden unter anderem folgende Bibliotheken bzw. Komponenten verwendet:

#include "LoRaWan_APP.h"
#include "Wire.h"
#include "HT_st7735.h"
#include "HT_TinyGPS++.h"
#include <FS.h>
#include <LittleFS.h>
#include <WiFi.h>
#include <WebServer.h>

Die LoRaWAN-Funktionen stammen aus der Heltec-Umgebung.


Dateien

Das Repository enthält den Arduino-Sketch:

GPS-Tracker/
│
├── GPS-Tracker.ino
├── README.md
└── images/
    └── ...

Falls weitere Bilder oder Dokumentationen vorhanden sind, können diese im Verzeichnis images abgelegt werden.


Sicherheitshinweis

Wichtig: LoRaWAN-Zugangsdaten wie AppKeyAppEUI und gegebenenfalls weitere persönliche Geräteparameter dürfen nicht mit echten Werten in ein öffentliches GitHub-Repository hochgeladen werden.

Im veröffentlichten Sketch sollten diese Werte beispielsweise durch Platzhalter ersetzt werden:

uint8_t devEui[] = {
  // eigene DevEUI eintragen
};

uint8_t appEui[] = {
  // eigene AppEUI eintragen
};

uint8_t appKey[] = {
  // eigenen AppKey eintragen
};

Der originale AppKey sollte niemals öffentlich veröffentlicht werden.


Entwicklungsstand

Version: 26.06.2026 FINAL

Schwerpunkt dieser Version:

  • verbessertes Logging
  • Speicherung des Sendeintervalls mit LittleFS
  • Konfiguration über WLAN-Hotspot
  • GPS-Positionsübertragung über LoRaWAN
  • Anzeige der GPS-Koordinaten
  • Übertragung des Logging-Status

Lizenz

Dieses Projekt wird auf GitHub zur privaten Dokumentation und als Beispielprojekt veröffentlicht.

Eine eigene Lizenz kann bei Bedarf ergänzt werden.

3. LoRaWAN Empfänger und Anzeige

gps_lora_anzeige

Projektübersicht

Dieser ESP32 dient als Empfängerstation für einen GPS-Tracker.

Der GPS-Tracker überträgt seine aktuelle Position über LoRaWAN an The Things Network (TTN). Die empfangenen Daten werden von diesem ESP32 über MQTT aus TTN abgerufen, auf einem TFT-Display dargestellt und bei aktiviertem Logging als GPX-Datei auf einer SD-Karte gespeichert.

Zusätzlich besitzt der Empfänger einen eigenen WLAN-Hotspot. Über einen Webbrowser können die aufgezeichneten GPX-Tracks angezeigt, heruntergeladen und gelöscht werden. Die Tracks lassen sich direkt auf einer OpenStreetMap-Karte darstellen.

Systemübersicht

GPS-Tracker
     │
     │ LoRaWAN
     ▼
The Things Network (TTN)
     │
     │ MQTT
     ▼
ESP32 Empfänger
     │
     ├── TFT Display
     │
     ├── SD-Karte
     │      └── GPX-Dateien
     │
     └── WLAN-Hotspot
            │
            ▼
        Webbrowser
            │
            └── OpenStreetMap

Funktionen

GPS-Daten

Der Empfänger verarbeitet die vom GPS-Tracker übertragenen:

  • Latitude
  • Longitude
  • Logging-Status
  • Zeitstempel

Die Position wird auf dem TFT-Display angezeigt.

TTN / MQTT

Die Kommunikation erfolgt über:

  • The Things Network
  • MQTT
  • ESP32 WLAN

Der ESP32 verbindet sich mit dem WLAN und ruft die Uplink-Daten des Trackers über MQTT ab.

Gateway-Auswahl

Wenn mehrere TTN-Gateways ein Paket empfangen, werden die empfangenen Gateway-Daten ausgewertet.

Anhand des RSSI-Wertes wird das beste empfangende Gateway ausgewählt.

Auf dem Display werden unter anderem angezeigt:

  • Gateway
  • RSSI
  • SNR

Damit lässt sich während einer Fahrt nachvollziehen, über welches Gateway die Daten empfangen wurden.

TFT-Display

Das TFT-Display zeigt die aktuellen Betriebsdaten des Empfängers.

Beispielsweise:

GPS TRACKER

Zeit: 14:32:18

LAT: 51.482345
LON: 11.970123

LOG: ON

GW: Gateway-Name
RSSI: -87 dBm
SNR: 8.5

Die genaue Darstellung hängt von der verwendeten Display-Konfiguration und der aktuellen Softwareversion ab.

GPX-Logging

Bei aktiviertem Logging werden die empfangenen GPS-Positionen auf der SD-Karte gespeichert.

Das Dateiformat ist GPX (GPS Exchange Format) und kann beispielsweise mit Karten- und GPS-Programmen weiterverarbeitet werden.

Die Dateien können später beispielsweise in:

  • OpenStreetMap-Anwendungen
  • GPX-Trackern
  • Kartenprogrammen
  • GPS-Software

verwendet werden.

Dateiname

Die GPX-Dateien werden automatisch anhand von Datum und Uhrzeit benannt.

Dadurch können mehrere Fahrten voneinander getrennt gespeichert werden.

Weboberfläche

Der ESP32 stellt einen eigenen WLAN-Hotspot zur Verfügung.

Nach dem Verbinden mit dem Hotspot kann die Weboberfläche des Empfängers mit einem Smartphone, Tablet oder PC geöffnet werden.

Die Weboberfläche ermöglicht:

  • Anzeige der vorhandenen GPX-Dateien
  • Download von GPX-Dateien
  • Löschen von GPX-Dateien
  • Anzeige eines aufgezeichneten Tracks
  • Darstellung des Tracks auf einer Karte

Kartenanzeige

Die aufgezeichneten GPS-Daten können direkt auf einer OpenStreetMap-Karte dargestellt werden.

Die Trackpunkte werden dabei als Streckenverlauf angezeigt.

Zusätzlich können Informationen zum jeweiligen Trackpunkt dargestellt werden, beispielsweise:

  • Uhrzeit
  • Gateway
  • RSSI
  • SNR

WLAN-Hotspot

Der ESP32 arbeitet als eigener Access Point.

Beispiel:

SSID:
ESP32-GPS-Tracker

Passwort:
********

Die tatsächlichen Zugangsdaten werden im Sketch festgelegt.

Nach dem Verbinden mit dem ESP32 kann die Weboberfläche über die IP-Adresse des Access Points aufgerufen werden.

Die Standard-IP eines ESP32-SoftAP ist normalerweise:

192.168.4.1

Hardware

Empfänger

Benötigt werden:

  • ESP32
  • TFT-Display
  • LoRaWAN-fähige WLAN-/MQTT-Anbindung
  • SD-Karten-Modul
  • SD-Karte

Je nach verwendeter Hardware können zusätzliche Bauteile erforderlich sein.

Software

Das Projekt wurde für den ESP32 entwickelt und verwendet unter anderem folgende Bibliotheken:

  • WiFi
  • MQTT
  • TFT_eSPI
  • SPI
  • SD
  • LittleFS
  • weitere im Sketch aufgeführte Bibliotheken

Die jeweils verwendeten Bibliotheksversionen sollten möglichst mit der Version übereinstimmen, mit der der Sketch entwickelt und getestet wurde.

TTN-Konfiguration

Der GPS-Tracker muss bei The Things Network als LoRaWAN-Gerät eingerichtet sein.

Für den Empfänger werden die MQTT-Zugangsdaten von TTN benötigt.

Im Sketch werden unter anderem folgende Parameter verwendet:

mqtt_server
mqtt_port
mqtt_user
mqtt_pass
mqtt_topic

Sicherheit

Wichtig:

Passwörter, MQTT-API-Keys und andere Zugangsdaten dürfen nicht in ein öffentliches GitHub-Repository hochgeladen werden.

Vor der Veröffentlichung sollten deshalb alle persönlichen Zugangsdaten aus dem Sketch entfernt werden.

Beispielsweise:

const char* ssid = "DEIN_WLAN";
const char* password = "DEIN_PASSWORT";

const char* mqtt_user = "DEIN_TTN_USER";
const char* mqtt_pass = "DEIN_TTN_API_KEY";

Die eigenen Zugangsdaten können anschließend lokal wieder eingesetzt werden.

SD-Karte

Die SD-Karte dient zur Speicherung der aufgezeichneten GPS-Tracks.

Die erzeugten Dateien besitzen das Format:

.gpx

Die Dateien können über die Weboberfläche angezeigt und heruntergeladen werden.

Datenfluss

Ein typischer Datenfluss während einer Fahrt sieht folgendermaßen aus:

GPS-Sender
   │
   │ GPS Position
   ▼
ESP32 GPS Tracker
   │
   │ LoRaWAN
   ▼
LoRaWAN Gateway
   │
   ▼
The Things Network
   │
   │ MQTT
   ▼
ESP32 Empfänger
   │
   ├── TFT-Anzeige
   │
   └── SD-Karte
          │
          ▼
        GPX-Datei
          │
          ▼
      Webbrowser
          │
          ▼
    OpenStreetMap

Einsatzgebiet

Das System eignet sich beispielsweise für:

  • GPS-Tracking von Fahrzeugen
  • Modellbahn- und Fahrzeugprojekte
  • Outdoor-Fahrzeuge
  • mobile GPS-Aufzeichnungen
  • Tests der LoRaWAN-Reichweite
  • Aufzeichnung von Fahrstrecken

Projektstatus

Status: Funktionsfähiger Prototyp / getestet

Der Empfänger wurde zusammen mit dem zugehörigen GPS-LoRaWAN-Sender entwickelt und getestet.

Die Software wird bei Bedarf weiterentwickelt.

Hinweise

Die Reichweite und Zuverlässigkeit der Datenübertragung hängen unter anderem ab von:

  • verwendeter LoRaWAN-Frequenz
  • Gateway-Standort
  • Antenne
  • Sendeleistung
  • Umgebung
  • Bebauung
  • Gelände
  • Anzahl erreichbarer Gateways

Für den praktischen Betrieb sollte außerdem auf eine zuverlässige WLAN-Verbindung zwischen Empfänger und MQTT/TTN geachtet werden.

Zugehöriges Projekt

Der Empfänger ist Bestandteil des Projekts:

LoRaWAN GPS-Tracker

Zum Gesamtsystem gehören:

  • GPS-Tracker / Sender
  • LoRaWAN
  • The Things Network
  • MQTT
  • ESP32-Empfänger
  • TFT-Display
  • SD-Karte
  • GPX-Logging
  • Weboberfläche
  • OpenStreetMap

Lizenz

Dieses Projekt wird auf GitHub zu Dokumentations- und Entwicklungszwecken veröffentlicht.

Die Verwendung, Änderung und Weiterentwicklung des Codes erfolgt auf eigene Verantwortung.

4. GITHUB

Quellen_LoRaWAN_HELTEC_Sender.ino
_LoRaWAN_MQTT_Empfang_.ino
DateienBeschreibung / Bilder
Repositoryjoachim-reuter/Heltec-GPS-Tracker-LoRaWAN: Ein kompakter GPS-Tracker auf Basis eines Heltec Wireless Tracker mit integriertem GPS-Modul und LoRaWAN-Anbindung.