Ein einfacher LoRa-Tracker für APRS-Wetterdaten
In Bearbeitung

Status 10.11.2020

NEU: Korrektur des Ausgabeformates "Temperaturdaten" für HELTEC LoRa32- und TTGO LoRa32-Boards  ( siehe dazu auch weiter unten )

Angeregt durch einen Forumsbeitrag begann ich, neben einem Projekt zur LoRa-Aussendung von APRS-Positionsdaten, auch noch eine Version für APRS-Wetterdaten zu erstellen. Für den Anfang sollten dabei erst einmal nur die Daten der BOSCH-Sensoren des Typs BME280 zur Aussendung kommen. Über ihre I2C-Schnittstelle stellen diese Bausteine auf einfache Weise sowohl Werte von Temperatur, Luftfeuchte, Höhe und Luftdruck zur Verfügung: Die Genauigkeit der Werte entspricht dabei mittleren Anforderungen ( was immer das auch bedeutet ! ).


Abb.1  Komplette LoRa-APRS-Sendeeinheit für Wetterdaten
hier mit ESP32, OLED, LoRa-Board von ICQUANZX und BME280-Sensor

Zur weiteren Datenaufbereitung und LoRa-Verabeitung galt es nun noch geeignete Prozessorboards zu finden. Bei der Suche nach hierfür geeigneten Lösungen stiess ich auf kleine Boards der Firmen HELTEC bzw. baugleich von ICQUANZX u.a., die bereits sowohl einen ESP32-Prozessor, ein OLED-SW-Display ( 128x64 Pixel  ), als auch einen LoRa-Transceiverbaustein beinhalten. Ähnliche, durch ihre Ausstattung mit einer SMA-Antennenbuchse erkennbare Boards gibt es auch mit der Bezeichnung: TTGO LoRa32 .

Bei allen Versionen ist zu beachten, dass sie Üblicherweise sowohl für einen Frequenzbereich um 433 MHz, als auch für einen solchen um 868 MHz angeboten werden. Nachdem es sich bei letztgenanntem Bereich um kein Amateurfunkband handelt, kommen für LoRa-APRS-Anwendungen in der Regel nur die 433 MHz-Versionen infage. 

Der USB-Anschluss der Bausteine dient u.a. ihrer Spannungsversorgung mit 5V. Alternativ können aber auch 3.7V-LiPo-Akkus benutzt werden, wofür eine integrierte Ladeelektronik vorhanden ist. Zum Lieferumfang gehören zudem kleine Wendelantennen für den 433MHz-Bereich.

Anschaltung der BME280-Boards

Der Nachbau gestaltet sich sehr einfach. Hardwaremäßig müssen  lediglich das Prozessorboard und der BME280-Baustein miteinander verbunden werden. Dabei sind neben der Masse- und der Versorgungsspannung lediglich noch die beiden Verbindungen zur I2C-Steuerung herzustellen ( benötigte Pull-Ups befinden sich bereits auf dem BME280-Board und werden somit nicht noch extern benötigt ). Die beiden oben genannten Familien von Prozessorbausteinen erfordern die Nutzung unterschiedlicher Portanschlüsse:

ESP32-BORD mit LoRa und OLED
SDA
SCL
HELTEC LoRa32 / ICQUANZX LoRa 32
GPIO 4
GPIO 15
TTGO LoRa 32
GPIO 21
GPIO 22
Die I2C-Anschaltung der BME280-Bausteine entspricht einer Parallelschaltung zu den auf den Prozessorboards befindlichen OLED's.

Personalisierung des Quellcodes

Der Quellcode ( INO-File ) ist an einigen Stellen noch an die persönlichen Daten anzupassen. Beginnen wir mit dem auszusendenden Datenstring. Einschliesslich der APRS-Wetterdaten kann er etwa folgendermassen aussehen: "DJ7OO-12>APRS:!4957.60N/00812.00E_.../...t79h42b09970a00245_".
Die hierbei vom Anwender noch zu ändernden Daten finden sich in der ersten Hälfte:

DJ7OO-12>APRS:!4957.60N/00812.00E_

Das Absender-Call ( ggf. incl SSID ) und die fixen Positionsdaten sind durch Werte eigener Wahl zu ersetzen. Im Beispiel steht "4957.60N" für einen nördlichen Breitengrad im Format "GGMM.mm" zuzügl. N/S ( Hemispherenangabe ). "00812.00E" weist dagegen auf einen östlichen Längengrad im Format "GGGMM.mm" zuzügl. E/W hin.

Hilfreich kann es ggf. sein, die für den eigenen Einsatzstandort benötigten Werte mithilfe von z.B. Google-Earth zu ermitteln.

Bestimmung der Sendefrequenz

Die Festlegung der zu benutzenden Sendefrequenz erfolgt im Quellcode mithilfe des Befehls: "LoRa.begin(xxx)", wobei  "xxx" durch die gewünschte Frequenz in "Hz" zu ersetzen ist. Für die standardmäßige LoRa-APRS-Frequenz: 433.775MHz ist hier somit die Ziffernfolge 433775000 ( oder auch andere Schreibweise: 433775E3 ) zu verwenden. Die Wahl anderer abweichender Frequenzen ist selbstverständlich auch möglich.

Bestimmung der Sendefolgen

Vorab einige Bemerkungen zu den Sendefolgen:  
Unter LoRa führt die Aussendung von Wetterdaten mit ihren insgesamt ca. 60 Zeichen zu einer Kanalbelegung in der Größenordnung von etwa 4 Sekunden. Nachdem kurze Sendefolgen aber auch kaum zur besseren Erfassung von Wetterdatenänderungen beitragen, sollte man die zeitlichen Abstände zwischen den Aussendungen sinnvoll wählen und den verwendeten Kanal nur massvoll belegen. So hat sich an dieser Stelle z.B. eine Sendefolge von 30 Minuten als gängiger Wert erwiesen.
Um für Testzwecke aber ggf. zeitweise auch kürzere Zeitfolgen zu ermöglichen, enthält der Quellcode hierfür auch entsprechende Wertangaben. Nicht benutzte Codezeilen sind dabei jeweils auszuklammern.

   calc = 1800;  // 1800sec. = 30 Min.
//  calc = 900;  // 900sec.  = 15 Min.
//  calc = 600;  // 600sec.  = 10 Min.
//  calc = 300;  // 300sec.  = 5 Min.
//  calc = 60;  // 60sec.  = 1 Min.
 

Abb.2

Für den Zeitpunkt der Aussendungen geht das Display für einige Sekunden auf eine Anzeige gem. Abb.2. Zudem wird der Stand eines nach jeder Datenausgabe incrementierenden Zählers angezeigt.

Firmware-Download und seine Weiterverarbeitung

NEU am 10.11.2020:  

Mit den bisherigen Firmwareversionen gab es bei einigen Decoderprogrammen Probleme bei der Auswertung von Temperaturwerten. Ursache dafür war, dass sie ( obwohl in der Einheit FAHRENHEIT ausgegeben  ) bei uns üblicherweise nur zweistellig sind und damit nicht den eine dreistellige Ausgabe verlangenden APRS-Vorgaben entsprachen. Das wurde inzwischen geändert, indem ggf. führende Nullen vorangestellt werden.

Die Firmware gibt es sowohl in einer Version für die Boards "HELTEC LoRa32" und Baugleiche ( wie z.B. ICQUANZX ), als auch einer solchen für TTGO-Bausteine wie "LoRa32" und "T-Beam".
Zur Steuerung der LoRa-Bausteine ( Serie: RFM9x ) werden die altbewährten Libraries von Stuart Robinson, GW7HPW benutzt. Das beigefügte File: "LoRaTX.h" ist dabei in den gleichen Ordner zu kopieren, in dem auch das INO-File abgelegt wurde. Beide Firmwareversionen können incl. Library-Files unter [2] heruntergeladen werden.

Hinweise zu ggf. erforderlich werdenden Frequenzumstellungen ( derzeit: 433.775 MHz ) sind im Quellcode zu finden. 

Wer mit Arduino-Programmierung und der Weiterverarbeitung von Daten vertraut ist, der sollte mit dem Hochladen der Programmcodes keine Probleme haben. Ggf. sind allerdings vorher auch noch  die benutzten ADAFRUIT-Includes im Library-Ordner der Arduino-IDE abzulegen.

Zum Kompilieren und Hochladen benutzte ich ansonsten eine neuere, auf ESP32-Nutzung erweiterte Version der ARDUINO-IDE. Während für HELTEC- und baugleiche Boards dabei unter "Werkzeuge" das Board "HELTEC WiFi LoRa 32" zu wählen ist, lautet der Name zur Anwahl der TTGO-Boards: "TTGO LoRa32-OLED V1".

Erste Betrieberfahrungen

Schon nach der ersten Inbetriebnahme erschienen die ausgesandten Wetterdaten auf der Seite von APRS-Fi. Dabei noch festgestellte kleinere Formatfehler wurden inzwischen beseitigt. Unter Verwendung der mit den Bausteinen gelieferten kurzen Antenne konnten die mit etwa 50mW-Sendeleistung ( +17dBm ) erfolgten Aussendungen bereits von einem Gateway in etwa 5 Km Distanz ( siehe Bild ) und auch von unserem Lora-Repeater "DL0OJ-14" in etwa 15 Km Entfernung empfangen und verarbeitet werden.


Abb.3  Beispiel für Wetterdatenempfang auf der Seite: APRS.fi

Was noch aussteht, ist eine Kontrolle der Verarbeitung negativer Temperaturwerte. Danach könnten ggf. noch kleinere Änderungen im Quellcode erforderlich werden. Um diesen Test durchführen zu können, muss ich mir allerdings erst noch eine Dose Kältespray besorgen !

Mögliche Erweiterungen

Inzwischen gibt es zum Projekt auch noch einige weitere Ideen. So fragte ein OM an, ob neben den Daten des BME280 nicht auch noch weitere, über die Analogeingänge des Prozessors zugeführte Daten in die Ausgangssignale eingefügt werden könnten. Das ist natürlich denkbar, aber eine andere Sache reizt mich dezeit noch mehr: Nachdem das derzeitige Konzept nur für den Einsatz an Feststandorten vorgesehen ist, würde mich ansonsten noch interessieren, die fixen Positionsdaten durch solche eines GPS-Bausteins zu ersetzen, wodurch auch einen Einsatz bei z.B. Ballonmissionen infrage kommen würde. Hierbei denke ich auch an eine Nutzung separater Frequenzen z.B. im Rahmen von SRD-Allgemeingenehmigungen.


Abb.4  Verwendung einer BME280-Sendeeinheit ( TTGO-Version ) zur APRS-Aussendung von Wetterdaten
Eine hierfür eingerichtete M5Stack-Deodereinheit dient zur Signalkontrolle auf der LoRa-APRS-Frequenz

Abb.4 zeigt u.a. die speziell für den Empfang von Wetterdaten eingerichtete Version meines mit einem M5Stack realisierten und in [1] beschriebenen LoRa-APRS-Decoders. Eine wesentlich einfachere ( und deutlich preiswertere ) Version verwendet dagegen für den gleichen Zweck nur eines der schon oben erwähnten Boards.

Linkliste

[1]  http://www.kh-gps.de/Lora-Decoder_OE.htm
[2]  http://www.kh-gps.de/LoRa_WX_11_20.zip