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/