APRS - Eigenentwicklungen und Erfahrungsberichte über Software für Windows, Linux & Android Smartphones
APRS Smartbeaconing Simulation
APRS Packets werden normalerweise time-based ausgegeben (Status, WX, Telemetry etc). Für Position-Packets ist dieser Ansatz
ungeeignet: entweder werden zu viele oder zu wenige Packets gesendet. Der Algorithmus Smartbeaconing™ löst dieses Problem:
Packets werden abhängig von der Geschwindigkeit und dem Richtungswechsel generiert. Die Original-Beschreibung und der
Pseudo-Code sind bei
hamhud.net
zu finden.
Smartbeaconing™ ermittelt den Zeitpunkt für das Position-Packet anhand von 7 fix eingestellten Parametern sowie der
vom GPS gemessenen Geschwindigkeit (Speed) und Richtung (Heading). Es gibt keine one-fits-all Einstellung. Dieser
Blogger
empfiehlt verschiedene Einstellungen für 'car drive', bicycling', 'walking' und 'sailing'. Alle Angaben in 'knots' (Seemeilen, 1,852km).
Slow Speed
|
(km/h)
Wenn 'GPS Speed' kleiner als 'Slow Speed' werden Position-Packets alle 'Slow Rate' Sekunden gesendet.
Richtungswechsel werden nicht berücksichtigt.
|
Slow Rate
|
(seconds)
Abstand Position-Packets
|
Fast Speed
|
(km/h)
Wenn 'GPS Speed' grösser als 'Fast Speed' werden Position-Packets alle 'Fast Rate' Sekunden gesendet.
List 'GPS Speed' zwischen 'Slow Speed' und 'Fast Speed' wird der Abstand der Position-Packets berechnet
(höher bei kleinerer 'GPS Speed'.
Richtungswechsel werden berücksichtigt.
|
Fast Rate
|
(seconds)
Abstand Position-Packets
|
Minimum Turn Angle
|
(degrees)
Minimalwert für Richtungsänderung
|
Turn Slope
|
(factor)
Läuft unter bem Begriff "CornerPegging". Dieser 'factor' wird durch 'GPS Speed' geteilt und zum 'Minimum Turn Angel' dazugezählt.
Bei höheren 'GPS Speed' wird bei kleineren Richtungswechseln ein Position-Packet ausgelöst. Der Wert von 'factor' muss ausprobiert
werden.
|
Minimum Turn Time
|
Mindestabstand Position-Packets in Kurven
|
Um all die Parameter-Werte mit dem Browser testen zu können, habe ich
'APRS Smartbeaconing Simulation'
entwickelt. Die notwendigen Test-Daten wurden auf einer Autofahrt Lausen - Liestal - Schönmatt - Liestal - Augst - Sissach - Lausen gesammelt.
Jede Sekunde wurde die aktuelle Position aufgezeichnet.
ISS - Passes & Packets
APRS-Aktivitäten können mit aprs.fi monitored werden. Die Packets des Digipeaters
RS0ISS
können leider nicht vernünftig ausgewertet werden. findu.com bietet eine rudimentäre
Aufbereitung
der Daten an, scheint aber etwas in die Jahre gekommen zu sein.
Die ISS ist von meinem Home-Locator JN37VL ungefähr bei 5 täglichen Durchflügen zu erreichen (Radio Passes).
Projektziel: Interaktive Browserkarte mit Anzeige der vergangenen und zukünftigen Überflüge, Locations der Call-Signs und Packets.
Die Overview-Karte sowie die detaillierten Packet-Daten sind
hier
zu finden.
Als APRS-Client für die ISS verwendet ich
UISS mit
DireWolf
als TNC. Die notwendige Konfiguration ist
hier
beschrieben.
UISS hat endlos viele Funktionen. Im Normalfall wird nur "TX APRS Position" und "TX APRS Message" mit den dazugehörenden Push-Buttons benötigt.
Eine 'M-Heard' Station kann mit einem Doppelclick in das Feld 'TX APRS Message For' kopiert werden.
Setup
Bei dieser Mashup-Applikation spielen diverse Softwarekomponenten zusammen. Als Programmiersprachen werden
Python, PHP und Javascript, als Datenbanksysteme SQLite und MySQL eingesetzt.
- Cron-Job auf Raspberry holt die Pass-Daten (Zentrum: JN37VL) 1 mal täglich ab n2yo.com
und speichert diese lokal in einer SQLite DB und auf dem Webspace in einer MySQL DB ab.
- Endlos-Job auf Raspberry holt die APRS Daten während eines Passes ab aprs-is.net
und speichert diese in einer MySQL DB auf dem Webspace
- Webpage holt die Pass- und APRS-Daten zur Laufzeit ab der MySQL DB und bereitet die Map dynamisch auf
APIR
APIR steht für "APRS Pi Remote Control". Übliche APRS-Clients wie APRSIS32, UI-View, Xastir etc dienen dazu, APRS-Packets auf Karten darzustellen.
APIR ist als Remote Control konzipiert und kann zum Ansteuern von Raspberry GPIO-Pins verwendet werden. Zusätzliche Funktionen sind TX von Wetter-Daten und Telemetrie.
Die aktuelle Version 0.2 verwendet 'Soundmodem' als Sofware-TNC. 'Soundmodem' ist relativ unempfindlich und wird nicht mehr weiter entwickelt.
Die folgende Version von APIR wird 'DireWolf' als Software-TNC verwenden. 'DireWolf' kann auch als Digipeater sowie als I-Gate konfiguriert werden.
Prototyp "HB9BL-1", verwendet im Clublokal vom HB9FS
Hardware
Raspberry Pi
|
Model B
USB-Soundcard
Der Raspberry hat nur einen Audio-Ausgang. Für Audio IN/OUT wird eine USB-Soundcard benötigt.
|
Powering
|
DC-DC Wandler 12V --> 5V USB
|
A/D Wandler
|
MCP3008
Die GPIO Pins des Raspberry können nur digitale Werte verarbeiten. Mit dem MCP3008 können auf max. 8 Kanälen Input analoge Werte von 0V - 3.3V eingespiesen werden.
Die Python-Library "MCP3008" wandelt die Input-Spannungen auf Werte von 0 - 1024 um. Der MCP3008 wird für die Überwachung der Akku-Spannung benötigt.
|
Clock
|
DS3132
Der Raspberry hängt nicht am Internet und muss die Zeit ab einer externen Uhr lesen.
|
PTT Circuit
|
Transformer 1:1, Opto-Koppler
|
PTT Watchdog
|
Digispark ATtiny85
Der PTT Watchdog läuft unabhängig vom Raspberry auf dem Digispark.
|
Software
Software TNC
|
Soundmodem (RX: axlisten, TX: beacon)
|
APIR
|
Python
|
PTT Watchdog
|
Arduino C++
|
Functionality APIR
Functionality PTT Watchdog
Das Aussenden einer APRS-Message dauert ein paar Sekunden. Das PTT-Signal wird vom Raspberry via den PTT Watchdog an den TRX geleitet.
Die maximale PTT-Time wird durch den PTT Watchdog kontrolliert.
Nach 10 Sekunden wird PTT auf OFF gesetzt und so ein Dauerträger auf 144.800 MHz vermieden.
Der Wert ist hardcoded, könnte auch über einen externen Poti konfigurierbar gemacht werden.
|
DireWolf Sofware Soundcard
"Dire Wolf is a software "soundcard" AX.25 packet modem/TNC and APRS encoder/decoder.
It can be used stand-alone to observe APRS traffic, as a tracker, digipeater, APRStt gateway, or Internet Gateway (IGate)."
DireWolf decodiert besser als Chip-basierte und ältere Sofware-basierte TNCs:
Technisch Interessierte finden
hier
eine Beschreibung des DireWolf-Approaches mit 9 Demodulatoren.
DireWolf läuft auf Windows & Linux.
Nach diversen Tests ist dies mein bevorzugter "Virtual TNC und läuft auf Notebook, Netbook & Raspberry.
APRSISCE/32 - APRS Client
"APRSISCE/32 is an advanced Automatic Packet Reporting System (APRS) Client for Amateur Radio, written for Windows (x86 and x64)."
In diesem Screenshot werden nur Packets angezeigt, die vom TRX empfangen und via DireWolf geliefert werden. Die Schnittstelle zu APRS-IS wurde abgeschaltet.
APRSISCE/32 läuft (leider) nur auf Windows.
Nach diversen Tests von allen möglichen APRS-Clients ist dies mein bevorzugter Client. Als passender TNC wird natürlich DireWolf eingesetzt.
APRS Gateway, Arduino
Idee: Arduino basierter APRS TX-Gateway. Die externen Sensordaten werden mit 433MHz an den Gateway gesendet, dort in APRS-Packets umgewandelt und ausgesendet.
coming soon
APRSdroid
APRSdroid ist ein APRS Client. Positionen können via Internet (APRS-IS) oder via TRX (AFSK) verteilt werden. Ein separater TNC ist nicht notwendig.
APRSdroid - Map
|
|
APRSdroid - Hub
|
|
|
|
APRSdroid - Log (TCP)
|
|
XPERIA & APRSdroid + UV-3R (Vox-Betrieb)
|
|
|
|
APRSdroid - Konfiguration AFSK
|
|
APRSdroid - Log (AFSK)
|
|
APRSdroid - Map aprs.fi
|
|
|
|
|
|
APRS Daten Empfang via UV-3R konnte mangels 4-Pol-Stecker für das XPERIA noch nicht ausprobiert werden.
APRSdroid ist eine mächtige Software. Mit der vorgestellten Konfiguration kann man mit einfachen Mitteln und ohne TNC APRS-QRV werden.
APRSbeacon
Mit der Windows-Software
ARPSbeacon können bis zu 3 APRS Positions Beacons verwaltet werden. APRSbeacon kann nur
senden! Die
Positionsbeacons können mit einem Zeitintervall oder manuell abgesetzt werden. Ich verwende den Software TNC
AGW Packer Engine (AGWPE.zip).
|
|
Definition APRSbeacon, % vor Home wird durch HHMM ersetzt
|
Anzeige in aprs.fi
Anzeige in openaprs.net, Zeitangabe falsch
|
Problem:
Positionen können nur mittels Click auf die Karte gesetzt werden. Die Felder Latitude, Longitude
und Beacon Header können nicht editiert werden. Ein passender Kartenausschnitt kann gemäss Help in
APRSbeacon selbst erstellt werden. Möglich ist auch diese Lösung:
Lösung:
Zu jeder Karte (z.B: BL.jpg) gehört eine File mit Koordinaten zu dieser Karte (BL.inf) sowie ein File mit den Daten der Positionsbeacons (BL.odb).
Das File .odb kann editiert und die Koordinaten manuell eingegeben werden. Diese Koordinaten sind im LORAN Format.
Koordinaten bestimmen & in LORAN Format umrechnen und in .odb-File einfügen
LORAN-Format: ggmm.hhN/ggdmm.hhE (g=Grad, m=Minute, h=Hundertstel; Latitude: N=Nord, S=Süd / Longitude: W=West, E=Ost)
--> Programm APRSbeacon beenden
--> .odb-File editieren
-->
Google Maps starten
--> Position auswählen, rechte Maustaste
--> 'Was ist hier?' auswählen
--> Koordinate wird im Google Suchfeld angezeigt
-->
Converter starten
--> copy Lat(1. Zahl) aus Google Suchfeld
--> Lat im Feld 'Decimal Degrees' eingeben, 'Convert'
--> 'DM.m' copy
--> paste nach 'Latitude=' (.odb-File)
--> copy Lon (2. Zahl) aus Google Suchfeld
--> Lon im Feld 'Decimal Degrees' eingeben, 'Convert'
--> 'DM.m' copy
--> paste nach 'Longitude=' (.odb-File)
--> Koordinaten gemäss LORAN Format editieren (siehe Beispiel)
--> .odb-File speichern
--> Programm APRSbeacon starten
Beispiel
Googlemaps, 'Belchenflue' suchen: 47.363508,7.81055;
nach Converter: Latitude=47 21.81048, Longitude=7 48.633;
editieren: 47 21.81048 -> 47.21.81N; 7 48.633 -> 007.48.63E (Achtung: Grad bei Longitude immer 3-stellig!)
Positionsbeacon HB9EYZ-2 'Lenk' wird irgendwo auf Map angezeigt. Lat/Lon sind massgebend.
Link Collection
Helge, SA7SKY, stellt die wichtigsten APRS PDFs inklusive der "Bibel" APRS101.pdf in seiner
Sammlung.
zur Verfügung (siehe "Documents").