Stand-Alone-APRS-Monitor mit Positionsdatenanzeige und Sprachausgabe
In Bearbeitung
Stand: 6. Februar 2018

  Here is automatic translation made by Google:
https://translate.google.com/translate?sl=de&tl=en&js=y&prev=_t&hl=de&ie=UTF-8&u=http%3A%2F%2Fwww.kh-gps.de%2Faprs_mon.htm&edit-text=

NEU:  5 Min.-Video zum Projekt erzeugt von DG3SMA und DJ7OO:  https://youtu.be/V99YUq4r6Y8

Wunsch war der Aufbau einer einfachen Einheit zur stationären und mobilen Beobachtung von APRS-Aktivitäten im Bereich lokaler Digipeater. In den letzten Jahren hatte ich schon mehrfach in dieser Richtung experimentiert [1],[2] wobei es aber oft so ist, dass es neue Erkenntnisse sind, durch die man angeregt wird, ein bereits existierendes Projekt noch einmal hervorzuholen und entsprechend aufzufrischen. So geschah es auch in diesem Fall. Ausschlaggebend war dabei auch, dass ich ein relativ einfach zu handhabendes Programm zur Erstellung eigener Applikationen für Android-Smartphones bzw. -Tablets "entdeckte" und sich dadurch interessante neue Möglichkeiten in Hinblick auf gewünschte APRS-Funktionen ergaben.


Abb.1  APRS-Monitorboard ( Ansicht von oben )


Abb.2  APRS-Monitorboard ( Ansicht von unten )


Der APRS-Decoder bestehend aus 2m-Band-Empfänger-,
sowie Arduino-Baustein und Bluetooth-Modul


Die erstellte Anordnung besteht aus einem auf der Frequenz 144.8 MHz betriebenen Transceivermodul des Typs "DRA818V" von Firma DORJI, wobei dieses ( zumindest vorerst; siehe dazu auch weiter unten ) nur für Empfangsbetrieb eingesetzt wird.


Abb.3  APRS-Monitoreinheit  Gesamtschaltbild

Die nach Empfang von APRS-Stationen an seinem Tonausgang Pin 3 bereitstehenden 1200Baud-AFSK-Daten werden dem Analogeingang #A0 eines Microcontrollerbausteins vom Typ "Pro-Mini" in  3V-Version zugeführt. Die Decodierung der Eingangsdaten erfolgt mithilfe einer im verwendeten Prozessor ATMEL328P abgelegten Arduino-Firmware. Durch Nutzbarkeit einer von Mark, OZ7TMD erstellten Library [5] vereinfachte sich die Programmentwicklung dabei ganz erheblich. Mit wenig Zusatzaufwand liess sich seine Musterdatei auch dahingehend erweitern, dass der Decoderbaustein an seinem seriellen Ausgang bereits direkt sowohl im Standard-, als auch Mic-E-Format übertragene APRS-Rohdaten bereitstellt. Mit ihrer Datenrate von 9600bps werden sie von hier aus einem Bluetooth-Modul zugeführt. An dieser Stelle bot sich der Einsatz der sehr preiswert erhältlichen BT-Bausteine mit der Bezeichnung "HC-06" an. Auf einfachste Weise lassen sich diese unter Beibehaltung der bereits im Lieferzustand zur Verfügung gestellten Betriebseinstellungen verwenden.

Nicht unerwähnt bleiben darf auch der bei jedem Programmstart via Soft-Uart-Pin #8 vom Prozessor in Richtung des DRA818-Funkmoduls übertragene serielle Datenstring,. Er dient der Initialisierung von Betriebsparametern wie z.B. denjenigen zur Frequenzanwahl.

Abb.3 zeigt das Schaltbild der entsprechend realisierten APRS-Decodereinheit. Für diese Anwendung wurde auch das Platinenlayout gem. Abb.7 ( siehe dazu weiter unten ) erstellt.

Die Firmware zur APRS-Decodierung kann unter [8] heruntergeladen werden und ist danach zum ARDUINO-Baustein "Pro-Mini" hochzuladen. Der Umgang mit dem zum Kompilieren und Hochladen üblicherweise benutzten Betriebsprogramm, der sog. Arduino-IDE wird hier als bekannt vorausgesetzt.

Datenauswertung unter Verwendung von  ANDROID-Smartphones/Tablets



Abb.4   Android-Bildschirmmeldung nach Erstellung einer Bluetoothverbindung

Die Auswertung bereitgestellter APRS-Rohdaten kann unter Verwendung verschiedener, auf Android Smartphones bzw. -Tablets lauffähiger Applikation ( APP's ) erfolgen. Über das  Bluetooth-Menü der Android-Geräte ist dazu eine einmalige Paarung mit dem "HC-06-Modul" der Gegenseite durchzuführen. Bei anschliessendem Aufruf der jeweils benutzten APP wird ein Popup-Fenster aufrufbar sein, in dem alle dem Gerät bekannten Bluetooth-Partner gelistet sind. Darunter sollte sich jetzt auch unser "HC-06" befinden. 
Die maximal überbrückbare Distanz zwischen Android-Gerät und Bluetooth-Modul wird  bei etwa 20m liegen.

Vier zur Decodierung von APRS-Daten geeignete ANDROID-APP's

Beispielhaft sollen an dieser Stelle vier zur Decodierung der bereitgestellten APRS-Daten geeignete  ANDROID-App's  vorgestellt werden. Im Einzelnen sind das:

APP1: ein Standard-Android-Terminalprogramm

APP2: ein vom Verfasser erstelltes Programm, das neben empfangenen Navigationsdaten und dem Ident-Namen des Absenders ( hier z.B.: AFU-Call ) auch Distanz- und Richtungsangaben bezogen auf den gegenwärtigen Standort des Smartphones/Tablets ermöglicht. Als Besonderheit lassen sich diese Daten bei Bedarf auch im Sprachformat ausgeben.

APP3: "APRSDROID" ein APRS-Empfangs- und Sendeprogramm, von dem im vorliegenden Fall allerdigs nur der Empfangsteil mit Anzeige empfangener Daten im Rohdaten- bzw. Textformat oder in Form von Positionsmarken auf Karten benutzt wird.

APP4:  "W2APRS" ein APRS-Empfangsprogramm aus Japan mit ebenfalls Text- und Kartendarstellung

APP1 : Verwendung von Standard-Terminalprogrammen

Via Bluetooth in Richtung Smartphone/Tablet übertragene APRS-Rohdaten lassen sich im einfachsten Fall mithilfe von Standard Terminalprogrammen auswerten. Auf unkomplizierte Weise kann damit eine generelle Funktionskontrolle des Gesamtsystems durchgeführt werden. Damit empfiehlt sich diese Lösung besonders auch für erste Betriebsversuche.


Abb.5   Beispiele für empfangene APRS-Rohdaten

Die von mir an dieser Stelle favorisierte APP ist unter dem Namen "Serial Bluetooth Terminal" aus dem Google PlayStore herunterladbar. Neben der Anzeige von z.B. via Bluetooth empfangenen Daten ermöglicht sie zudem auch die serielle Datenaussendung von Textstrings. Diese sind dazu entweder in eine Ausgabezeile zu schreiben oder können auch schon vorabgespeichert bereitstehen. In beiden Fällen erfolgt die Übertragung allerdings erst durch Betätigung einer gesonderten Sendetaste.
Für spätere Kontrollzwecke besonders interessant ist auch die Möglichkeit zur Ablage empfangener Daten im Speicherbereich der Smartphones/Tablets.

APP2 : Eine erste selbsterstellte APRS-Decoder-APP

Hierbei habe ich mich erstmals mit der Erstellung einer eigenen Andoid-APP zur Decodierung von APRS-Daten versucht. Trotz einiger derzeit noch bestehender kleinerer Schwachpunkte ( siehe dazu auch weiter unten ) gibt es m.E. aber durchaus schon viele interessante  Einsatzmöglichkeiten.

Wurde ausgehend vom Android-Gerät eine Verbindung zum APRS-Decoder aufgebaut, so wird das Auswertprogramm auf von der Gegenseite kommende APRS-Daten warten und diesen Zustand auch signalisieren ( Abb.4 ). Nach dem  Eintreffen erster APRS-Daten wird Wechsel auf eine Displaydarstellung ähnlich Abb.6 erfolgen, wobei sich diese nach dem Empfang neuer Stationsdaten jeweils aktualisiert.


Abb.6   Beispieldarstellung für APRS-Decoder-APP

Anm.: Bei der neusten Programmversion habe ich bei den Werten von ALTITUDE und BEARING auf die Ausgabe von Nachkommastellen verzichtet.
Bei DISTANCES werden nur noch Werte unter 10Km mit einer Nachkommastelle angezeigt. Diese Massnahme soll vorallem auch kürzere Sprachausgabezeiten bewirken.

Auf dem Display des ANDROID-Gerätes werden die Rufzeichen absendender Stationen, sowie ihre Werte von Breitengrad, Längengrad und Höhe angezeigt.

Mithilfe der Daten des im ANDROID-Gerät integrierten GPS-Empfängerbausteins erfolgt zudem eine Berechnung und Anzeige von Distanz- und Richtungswerten bezogen auf die Eigenposition. Wird das Gerät jedoch an Standorten betrieben, die aktuell keinen GPS-Empfang erlauben  ( z.B. innerhalb von Gebäuden ), so erfolgt die Berechnung basierend auf den vom Gerät zuletzt als gültig erkannten intern gespeicherten Werten. Der jeweilige Erfassungszeitpunkt wird dabei rot hinterlegt auf dem Display angezeigt. Wechselt diese Anzeige auf grünen Hintergrund, so signalisiert das die Verfügbarkeit aktueller GPS-Navigationsdaten zur Berechnung von  Distanz- und Richtungswerten.

Zusätzlich zu einem Fenster, das ggf. zusammen mit den APRS-Navigationsdaten vom Absender übertragene Zusatztinformationen enthält, dient eine weitere Anzeigezeile der Signalisierung des benutzten Übertragungsmodes. Hierdurch ist ersichtlich, ob empfangene Daten im Standard-APRS- oder im komprimierten MIC-E-Format übertragen wurden. Ein Upcounter erlaubt darüber hinaus die Anzeige der Anzahl empfangener Sendepakete von Gegenstationen. Zusätzlich wird nach jeder Einlesung auch ein kurzer Quittungston ausgegeben. 

Als Besonderheit besteht noch die Möglichkeit einer Sprachausgabe. Nach Programmstart ist diese Funktion vorerst deaktiviert ( Fensteranzeige: SPK OFF). Nach einmaligem Drücken der entsprechenden Bildschirmtaste werden im Folgenden lediglich die Rufzeichen empfangener Stationen gesprochen ( Fensteranzeige: SPK CALL ). Durch nochmaliges Drücken wird in einen weiteren Modus geschaltet, der zudem noch die Distanz- und Richtungswerte sprechen lässt ( Fensternazeige: SPK ALL ). Ein erneutes Betätigen bewirkt dann wieder ein Zurückschalten in den Ausgangszustand mit Deaktivierung der Sprachausgabe.

Hinweise: Die Anzeige neu gewählter Sprachmodizustände wird immer erst nach dem Eintreffen weiterer APRS-Stationsdaten aktualisiert.
Umschaltsensiv ist bei der derzeitigen Version nicht nur das eigentliche Tastenfeld, sondern der komplette Bildschirmbereich!
Mit diesen Schaltlösungen bin ich derzeit noch nicht ganz glücklich und werde auch versuchen, hier im Laufe der Zeit noch Verbesserungen zu erreichen.


 APP3 : APRSDROID

Bei "APRSDROID" dürfte es sich um die am weitesten verbreitete APRS-APP für ANDROID-Anwendungen zu handeln. Das Programm ist in seiner Basisversion aus dem Google "PlayStore" herunterladbar. Mehr ( so z.B. Hinweise auch auf die OpenStreetmaps-Version ) findet man auf den Seiten des Programmautors Georg Lukas, DO1GL Siehe zum Programm aber auch meine ältere Seite zum Thema [3].
Die APP "APRSDROID" ist vielseitig einsetzbar. Neben ihrer Nutzbarkeit im Online-Mode mit Verbindungsmöglichkeit in das weltweite APRS-IS-Netz, erlaubt sie auch den Einsatz in Verbindung mit lokalen APRS-Peripheriegeräten. Dazu gibt es verschiedene Anschaltmöglichkeiten. Neben einer rein akustischen Verbindung über AFSK-Tonsignale, bietet das Programm auch die Möglichkeit der Verwendung von USB-Schnittstellen ( gilt nicht für alle ANDROID-Geräte ) oder eine Zusammenschaltbarkeit über Bluetooth.  
Während ältere Programmversionen nur im KISS-Format vorliegende APRS-Daten akzeptierten, kann "APRSDROID" inzwischen auch Standard-APRS-Rohdaten verarbeiten. Zum Betrieb mit unserem Arduino-Baustein sind dazu unter "Einstellungen" der "Bluetooth-Mode" als Verbindungstyp und "TNC (Plaintext TNC2)" als Verbindungsprotokoll zu wählen.

Hinweis:  Zur Vermeidung von Problemen, die durch fortbestehende Blockierung der Bluetoothfunktionalität auch nach Beendigung der Ausführung des APRSDROID-Programmes bestehen bleiben können, sollte in diesen Fällen über "Einstellungen", "Anwendungsmanager", nach Auswahl von "APRSDROID" auch noch explizit ein Programmstopp erzwungen werden.

 APP4 : W2APRS

W2APRS ist ein einfaches Programm zur Decodierung von APRS-Daten und erlaubt ihre Anzeige in Tabellenformat oder in Form von Positionsdarstellungen auf Karten. Es stammt von dem japanischen Amateur JA7UDE. Standardmäßig kommen dabei Google-Onlinekarten zum Einsatz, aber es gibt auch eine Version zur Verwendung von OpenStreetmaps. Mehr zum Programm und passende Links finden sich u.a. auch auf meiner Seite [4].

Nachbau und Inbetriebnahme

Zum Aufbau der Decodereinheit gem.Abb.3 wurde das in Abb.7 gezeigte Platinenlayout entworfen. Dabei ist schon die Möglichkeit für eine spätere Erweiterung auch als APRS-Sendebake vorgesehen. Dieses erfordert dann auch die Bestückung der im weiss umrandeten Bereich angeordneten Bauteile. Für die vorliegende Anwendung, da hier nur Empfangs- bzw. Decoderbetrieb erfolgt, werden sie derzeit noch nicht benötigt.
Die Herstellung der Platinen hat freundlicherweise Dirk Ruffing, DH4YM [10] übernommen. Sie haben die Bezeichnung: "DJ7OO_DRA818_ProMini_HC06_3.lay6".
Bezüglich der Bluetooth- und Prozessorboards kann ich die Bezugsquelle nach [6] und [7] empfehlen. Hinsichtlich der zugehörigen Software siehe die Links [8] und [9].


Abb.7 Platinenlayout Arduino-Board

HINWEIS: Das Empfänger-Tonausgangssignal des DRA818V-Transceiverbausteins ist an seinem Pin3 verfügbar und wird von dort einem Analogeingang des ARDUINO-Prozessors zugeführt. Stattdessen könnten hier aber auch von einem beliebigen anderen 2m-Band-FM-Empfänger stammende Signale eingespeist werden, was dann allerdings noch einige Versuche hinsichtlich geeigneter Pegelwerte erfordern würde.

mögliche Alternativlösungen und Erweiterungen

* Es existiert noch ein abgespecktes Platinenlayout ohne bestückbares DRA818-Modul. Daran Interessierte sollten mir eine E-Mail senden.
* Geplant ist noch die Boardnutzung für den Betrieb auch als APRS-Sendebake, was sich allerdings noch etwas hinziehen wird.

Linkliste

[1]  http://www.kh-gps.de/aprspeak3.htm
[2]  http://www.kh-gps.de/aprspeak4.htm
[3]  http://www.kh-gps.de/wpl2kiss.htm
[4]  http://www.kh-gps.de/w2aprs.htm
[5]  http://unsigned.io/projects/libaprs/
[6]  https://eckstein-shop.de/HC-06-Wireless-Bluetooth-Modul-RS232/TTL-33/5V-Board
[7]  https://eckstein-shop.de/Pro-Mini-Modul-33V/8MHz-Arduino-kompatibel
[8]  http://www.kh-gps.de/APRS_DRA_3.zip  ( Arduino-Firmware als INO-File und LibAPRS-Library )
[9]  http://www.kh-gps.de/APRS_APK_1.zip  ( Android APRS-Decoder-APP im APK-Format  )
[10] http://www.dh4ym.de/


E-Mail contact via: