APRS · LoRa · ESP32 · 433,775 MHz · RX-only

1. Wie ich auf LoRa-APRS stiess

Da mein iGate für das klassische APRS auf dem 2‑Meter-Band so gut funktionierte, wollte ich mehr. Also schaute ich mich weiter um und stiess dabei auf LoRa-APRS.

Auch bei LoRa-APRS gibt es grundsätzlich zwei Seiten: die stationäre Empfangsstation, also das iGate, und den mobilen Teil – den Tracker. Danach explodiert die Vielfalt jedoch regelrecht.

Neben GPS-Position, Höhe, Geschwindigkeit und Kurs können auch Wetterdaten und andere Telemetriedaten übertragen werden. Teilweise wird alles miteinander kombiniert. In meiner Nähe befindet sich beispielsweise eine Wetterstation, die neben den üblichen Wetterwerten auch Windböen erfasst. Es gibt auch Wetterballone, die ihre Positions- und Messdaten über LoRa-APRS senden.

Für dieses Projekt beschränke ich mich zunächst wieder auf ein RX-only iGate. Es empfängt LoRa-APRS-Pakete und leitet die Daten über das Internet weiter. Selbst senden soll es nicht.

2. ESP32 oder WisBlock?

Bei der Hardware begegnet man hauptsächlich zwei Systemen: Geräten auf Basis eines ESP32 und Modulen aus dem WisBlock-System von RAK Wireless. Beide Varianten besitzen ihre eigenen Vor- und Nachteile.

Ein ESP32 benötigt vergleichsweise mehr Energie, bietet dafür aber bereits WLAN. Für ein iGate, das seine empfangenen Daten an das Internet weiterleiten muss, ist das sehr praktisch.

WisBlock-Systeme sind wesentlich sparsamer. Sie besitzen normalerweise jedoch kein integriertes WLAN. Dafür eignen sie sich besonders gut für solarbetriebene Tracker, Digipeater oder Relaisstationen an abgelegenen Standorten.

Für mein iGate entschied ich mich für ein Heltec WiFi LoRa 32 V3. Das Board vereint ESP32, WLAN, Display und LoRa-Funkmodul auf einer kleinen Platine.

3. Installation der Software

Die passende Firmware lässt sich über den Webinstaller von SQ2CPA direkt auf das Heltec-Board übertragen. Der aktuelle Installer unterstützt unter anderem das Heltec WiFi LoRa 32 V3

Dafür benötigt man einen Browser mit Web-Serial-Unterstützung, beispielsweise Google Chrome oder Microsoft Edge. Nach dem Anschliessen des Heltec-Boards wird das passende Board ausgewählt und die Firmware direkt über den Browser installiert.

Der frühere Installer wurde inzwischen auf die neue Adresse verschoben:

LoRa-APRS Webinstaller

4. Die Konfiguration für die Schweiz

Nach der Installation folgt die eigentliche Konfiguration. Hier ist besondere Aufmerksamkeit nötig, denn die vorgegebenen Einstellungen müssen nicht automatisch zum verwendeten LoRa-APRS-Netz passen.

In der Schweiz wird für LoRa-APRS 433,775 MHz verwendet. Die USKA nennt diese Frequenz ebenfalls für das Schweizer LoRa-APRS-Netz.

Für das in der Schweiz verwendete 300-Bit/s-Profil stellte ich folgende Werte ein:

  • Frequenz: 433,775 MHz
  • Bandbreite: 125 kHz
  • Coding Rate: 4/5
  • Spreading Factor: SF12
  • Datenrate: ungefähr 300 Bit/s

Diese Kombination entspricht dem verbreiteten europäischen LoRa-APRS-Profil.

Da dieses iGate ausschliesslich empfangen soll, habe ich bei diesem iGate ausschliesslich RX aktiviert. Mit aktiviertem TX kann ein iGate je nach Betriebsart als unbediente Amateurfunkanlage gelten. In der Schweiz muss eine solche Anlage beim BAKOM gemeldet werden. Wer TX aktivieren möchte, sollte deshalb vorher die aktuell geltenden Vorschriften abklären.

5. Der erste Empfang

Nach kurzer Zeit stand die Konfiguration. Anschliessend druckte ich noch ein passendes Gehäuse mit dem 3D-Drucker und montierte das LoRa-iGate draussen.

Soweit funktionierte alles: Das Heltec empfing LoRa-APRS-Pakete und die Daten wurden an das Internet weitergeleitet.

Auf APRS.fi sollten sie nun eigentlich sichtbar sein.

Vielleicht?!

6. Was APRS.fi nicht zeigt

Grundsätzlich funktionierte die Übertragung. Für mich war das Ergebnis trotzdem unbefriedigend, denn APRS.fi zeigt nicht vollständig, was mein eigenes iGate tatsächlich empfangen hat.

Ein LoRa-APRS-Paket kann gleichzeitig von mehreren iGates gehört werden. APRS-IS erkennt identische Pakete innerhalb eines bestimmten Zeitfensters als Duplikate. Normalerweise wird nur die zuerst eingetroffene Kopie im Netzwerk weitergeleitet. Die weiteren Kopien werden verworfen.

War ein anderes iGate schneller, hatte mein Empfänger das Paket zwar ebenfalls gehört – auf APRS.fi war jedoch nicht mehr eindeutig erkennbar, dass es auch über meine Station empfangen wurde.

Damit konnte ich auf APRS.fi zwar die Positionen der Tracker sehen, aber nicht zuverlässig feststellen:

  • welche Pakete mein eigenes iGate empfangen hatte.
  • wie gross dessen tatsächlicher Empfangsbereich war.
  • mit welcher Signalstärke und welchem Signal-Rausch-Abstand sie ankamen.

Ich wollte jedoch nicht nur wissen, was schliesslich auf APRS.fi erschien. Ich wollte wissen, was mein eigener LoRa-Empfänger tatsächlich hörte.

Also brauchte ich eine Möglichkeit, die empfangenen Daten direkt aus dem Heltec auszulesen und selbst zu speichern.

7. Die Daten direkt aus dem Heltec holen

In der Konfiguration des Heltec-Boards entdeckte ich eine interessante Funktion: Das Gerät kann seine Systemmeldungen über Syslog an eine andere Adresse im lokalen Netzwerk senden.

Als Ziel trug ich die IP-Adresse meines Raspberry Pi und den Port 1514 ein. Von da an sendete der Heltec seine laufenden Protokollmeldungen an den Raspberry Pi.

Dort übernimmt ein eigens dafür eingerichtetes Python-Programm die weitere Verarbeitung. Es filtert aus den vielen Meldungen die relevanten LoRa-Funkempfänge heraus und trennt sie von den Betriebs-, WLAN- und Internetmeldungen des Heltec-Boards.

Die herausgefilterten Empfangsdaten werden anschliessend an ein PHP-Script auf meinem Webserver übertragen. Dieses prüft die Daten und speichert sie in einer Datenbank.

Ein weiterer PHP-Endpunkt stellt die gespeicherten Positionen für die Homepage bereit. JavaScript lädt diese Daten und zeichnet daraus die grünen Empfangspunkte auf der Karte.

Aus den gespeicherten Empfangsdaten entstand meine eigene LoRa-APRS-Karte. Sie zeigt die gültigen RX-Positionen, die mein iGate tatsächlich empfangen hat.

8. Die interaktive Empfangskarte

Die Karte ist interaktiv: Sie lässt sich verschieben und vergrössern. Durch Anklicken oder Antippen eines grünen Punktes werden die dazugehörigen Empfangsdaten angezeigt. Dazu gehören je nach Paket unter anderem Rufzeichen, Empfangszeit, Höhe, Geschwindigkeit, Kurs, RSSI und SNR. RSSI: Stärke des empfangenen Funksignals. Je weniger negativ der Wert, desto stärker das Signal. SNR: Verhältnis zwischen Nutzsignal und Rauschen. Je höher der Wert, desto sauberer das Signal.

Die Karte ist sowohl über das Hauptmenü als auch direkt über den folgenden Link erreichbar:

Bei einem mobilen Tracker werden im Laufe der Zeit viele Pakete von derselben Position empfangen. Würde jedes einzelne Paket als eigener Punkt eingezeichnet, lägen zahlreiche Punkte direkt übereinander.

Für die Kartendarstellung werden deshalb alle gültigen RX-Pakete nach Rufzeichen und Position zusammengefasst. Wobei die Positionen auf fünf Nachkommastellen gerundet werden. Befinden sich mehrere Pakete desselben Rufzeichens am gleichen Standort, wird nur das jeweils neueste Paket für den Kartenpunkt verwendet. Die älteren Pakete gelten in dieser Darstellung als Duplikate.

Unterhalb der Karte wird deshalb zwischen drei Werten unterschieden:

  • empfangene RX-Datensätze,
  • aussortierte Duplikate,
  • und tatsächlich für die Karte verwendete Punkte.

Daneben erscheinen im Syslog auch Pakete, die der Heltec mit einem CRC-Fehler kennzeichnet und verwirft. Bei diesen Paketen stimmt die Prüfsumme nicht. Sie wurden während der Funkübertragung nicht vollständig oder fehlerhaft empfangen und konnten deshalb nicht zuverlässig decodiert werden.

Solche CRC-Datensätze werden nicht an APRS-IS beziehungsweise APRS.fi weitergeleitet. Sie können zwar für die technische Beurteilung des Empfangs interessant sein, werden auf meiner öffentlichen Karte jedoch ebenfalls nicht dargestellt. Auch die angezeigten Statistiken der öffentlichen Karte beziehen sich ausschliesslich auf gültige RX-Daten.

9. Das Stummelchen

Die eigene Karte zeigte ziemlich schonungslos, wie schlecht mein Empfang tatsächlich war. Trotz der bekannten Reichweiten von LoRa konnte mein iGate praktisch nichts ausserhalb des eigenen Dorfes empfangen.

Damit fiel der Verdacht schnell auf die kleine Originalantenne des Heltec-Boards – mein Stummelchen.

Solche Antennen sind kompakt und für erste Versuche praktisch. Sie müssen jedoch mit verschiedenen Geräten, Gehäusen und Einbausituationen zurechtkommen. Ob sie wirklich optimal zur verwendeten Frequenz passt, lässt sich von aussen nicht erkennen.

Mit einem NanoVNA, einem kompakten HF-Messgerät, lässt sich überprüfen, wie gut eine Antenne auf die gewünschte Frequenz abgestimmt ist. Für jemanden, der regelmässig Antennen baut oder verändert, ist ein solches Messgerät deshalb äusserst hilfreich. Ohne Messung bleibt letztlich vieles Vermutung.

10. Neue Antenne

Statt einfach eine weitere fertige Antenne zu kaufen, entschied ich mich für den Eigenbau. Eine selbst gebaute Antenne lässt sich gezielt auf die benötigten 433,775 MHz abstimmen. Bei dieser Frequenz sind die benötigten Antennenelemente nur ungefähr 17 Zentimeter lang. Dadurch bleiben auch leistungsfähige Antennen klein und vergleichsweise einfach zu bauen.

Meine Wahl fiel auf eine Groundplane-Antenne. Der Grund dafür war nicht nur ihr einfacher Aufbau, sondern vor allem ihr definiertes Gegengewicht.

Eine einfache Viertelwellen-Stabantenne besteht nicht nur aus dem sichtbaren Strahler. Sie benötigt eine zweite elektrische Hälfte als Gegengewicht. Bei einem Handfunkgerät übernehmen häufig das Gerätegehäuse, die Platine, angeschlossene Kabel und teilweise sogar der Benutzer diese Aufgabe.

Ein Heltec-Board ist jedoch sehr klein und besitzt nur eine begrenzte Massefläche. Dadurch ist das Gegengewicht der aufgesteckten Antenne weder besonders gross noch eindeutig definiert. Auch das USB-Kabel und die Einbausituation können dadurch einen Teil der Antenne bilden und deren Abstimmung beeinflussen.

Bei einer Groundplane übernehmen mehrere Radiale diese Aufgabe. Strahler und Gegengewicht sind damit klar festgelegt und lassen sich gemeinsam auf die gewünschte Frequenz abstimmen. Die Antenne ist dadurch weniger davon abhängig, wie das Heltec montiert ist oder welche Kabel daran angeschlossen sind.

Für 433,775 MHz bleiben sowohl der Viertelwellenstrahler als auch die Radiale mit ungefähr 17 Zentimetern angenehm klein. Damit eignet sich die Groundplane sehr gut für einen einfachen und kompakten Eigenbau.

11. Die Montage in der Scheune

Das Heltec-Board hängt nun oben in der Holzscheune. Die kleine Groundplane ist so leicht, dass sie keine zusätzliche Halterung benötigt.

Das trockene Holz der Scheune verursacht bei 433 MHz nur eine geringe Dämpfung. Gleichzeitig ist das iGate vor Regen und anderen Witterungseinflüssen geschützt.

12. Fazit

Mit dem fertigen Projekt bin ich sehr zufrieden. Das iGate deckt für Fahrzeuge bereits einen guten Teil des Berner Seelands ab.

Stationen auf Berggipfeln oder in der Luft werden aus deutlich grösseren Entfernungen empfangen – teilweise bis zur Unendlichkeit und noch viel weiter!