APRS-Tracker "Trackuino"
Nachbau mit Board: ARDUINO-UNO und Proto-Shield
NEU: Version mit "Boarduino"
Stand: 7. März 2014

Clone of  TRACKUINO APRS-Tracker.
Here is automatic translation made by Google:  http://translate.google.com/translate?hl=en&sl=de&tl=en&u=http%3A%2F%2Fwww.kh-gps.de%2Ftrackuino.htm


Anleitungen zum Aufbau von APRS-Trackern lassen sich im Internet nicht gerade selten finden. Mir ging es dabei um ein einfaches, preiswertes Konzept, das sich aber auch von der Hardwareseite betrachtet schnell umsetzen lassen sollte. Nachdem ich mich in letzter Zeit auch schon an anderen Stellen ( http://www.kh-gps.de ) damit beschäftigt hatte, hierfür überwiegend handelsübliche fertig erhältliche ARDUINO-Boards zu verwenden, lag es nicht ganz fern, einmal zu schauen, ob es nicht etwas geben würde, das auf diesem Sektor bereits realisiert wurde und stiess dabei auf das Projekt "TRACKUINO" [1]. Ursprünglich wurde der APRS-Tracker "TRACKUINO" dabei vorzugsweise für den Einsatz bei Ballonflügen entwickelt, erlaubt darüberhinaus aber auch den universellen Einsatz. Die aktuellen Versionen des Projektes zeichnen sich dadurch aus, das sie mit nach aussen klar definierten Schnittstellen arbeiten und dadurch auch den Anschluss anderer als in der Originalversion vorgesehener Zusatzkomponenten wie GPS-Empfänger und Funksender erlauben. Nachdem sich auch die Anzahl der zusätzlich zum ARDUINO-Board noch benötigten Bauelemente in engen Grenzen hält, besteht auch keine unbedingte Notwendigkeit zur Verwendung des für den "TRACKUINO" eigens entwickelten Shields, so dass stattdessen ebenso auch eine schnell bestückbare Lochrasterplatine ( Proto-Shield ) verwendet werden konnte.


Abb.1  APRS-Tracker bestehend aus Board "ARDUINO-UNO" und selbstbestücktem Proto-Shield

Aufgesteckt auf ein Basisboard "Arduino-Uno" zeigt Abb.1 das entsprechend bestückte Zusatzshield.  Wir erkennen das GPS-Empfängermodul und einige wenige weitere Bauteile. Was dabei zur Steuerung eines angeschlossenen Funksenders noch erforderlich ist, geht aus dem Schaltbild Abb.2 hervor, wobei daraus auch die mit dem Basisboard herzustellenden Querverbindungen ersichtlich sind. 


Abb.2  Zum Aufbau eines APRS-Trackers erforderliche Zusatzbestückung

Als GPS-Empfänger kommen alle Versionen infrage, die serielle NMEA-Protokolldaten mit 9600bps und TTL-Pegel bereitstellen. Nach einem kleinen Eingriff in den Quellcode des Arduino-Prozessors ist aber auch eine Umstellung auf eine Datenrate von 4800bps möglich. Zum Betrieb von Empfängermoduln, die mit nur 3.3V betrieben werden dürfen, ist anstelle des gem. Abb.2 benutzten 5V-Anschlusses der auf dem Arduino-Board ebenfalls verfügbare 3.3V-Versorgungspin zu verwenden.
Das von mir verwendete GPS-Empfängermodul ( Abb.3 ) stammt von Fa. NAVILOCK [4] und ist z.B. hier [5] erhältlich. Interessant ist dabei auch seine Spezifizierung für Einsätze bis 50000m Höhe (!) , womit es natürlich besonders auch für Ballonflüge interessant ist.


Abb.3 verwendetes modernes GPS-Empängermodul: "NAVILOCK NL-621ETTL"

Für vergleichbare Anwendungen ist auch eine Erfassung und Aussendung von Temperaturdaten vorgesehen. Hierbei sollen bis zu zwei Thermosensoren ( z.B. ein Innen- und ein Aussensensor ) des Typs "LM60" von Fa. Texas Instruments benutzt werden und
temperaturabhängige Spannungswerte an die Prozessor-Analogeingänge "A0" und "A1" liefern. Bei Nichtbedarf kann auf eine Bestückung der Sensoren aber auch problemlos verzichtet werden.
Über den Analogeingang "A2" wird die ( über einen Spannungsteiler in einen zulässigen Bereich heruntergeteilte ) Board-Versorgungsspannung verarbeitet und erlaubt damit eine Spannungskontrolle auch von der Empfangsseite.
Die AFSK-Sendedaten stehen mit 1200 Baud als PWM-Signal an Arduino Pin #3 ( ATMEGA Portd.3 ) zur Verfügung. Nach Spannungsteilung erlaubt der Einsteller "P1" dabei eine Einstellung des Modulationspegels passend zum angeschlossenen Sender.
Zur Senderauftastung wechselt Pin #4 ( ATMEGA Portd.4 ) auf H-Pegel und schaltet dabei neben der Kontroll-LED "D1" auch einen Transistor, dessen Open-Collector-Ausgang mit dem kombinierten Modulations- und PTT-Eingang des angeschlossenen Senders verbunden ist. 


Abb.4 Beispiele für APRS-Aussendungen des TRACKUINO-Trackers

Abb.4 zeigt einige Beispiele für TRACKUINO-Aussendungen. Neben dem üblichen APRS-Header mit Absender-Call; Ziel-Call und APRS-Pfadeinstellungen gehören dazu: Zeitstempel;   Breitengraddaten; Symbol-Tabelle; Längengraddaten; APRS-Symbol; Kurs- und Geschwindigkeitsdaten; Höhenwerte; Werte Temperatursensor1; Werte Temperatursensor2, sowie Versorgungsspannung und Zusatztext.

Um TRACKUINO-Firmware in den Flash-Speicherbereich des ARDUINO-UNO-Prozessors ATMEGA328P laden zu können, muss das Board via USB mit einem PC verbunden und dort die ARDUINO-Betriebssoftware [3] installiert sein. Kompilierungsversuche unter Verwendung aktueller ARDUINO-Versionen werden dabei allerdings erst einmal nur viele Fehlermeldungen bewirken. Verwendbar sollten an dieser Stelle dagegen die älteren ARDUINO-Version  22 und 23 sein.
Um zur Kompilierung auch neuere ARDUINO-IDE-Versionen nutzen zu können, sind vorher erst noch einige Änderungen im Programmcode durchzuführen. So sind im "trackuino.pde" bzw. "ino" zuerst einmal alle sich auf Nutzung der älteren Versionen 22 und 23 beziehenden Zeilen zu löschen oder zumindest auszuklammern. Im Einzelnen handelt es sich um die folgenden ( hier schon ausgeklammerten ) Codezeilen:

// #if (ARDUINO + 0) == 0
// #error "Oops! We need the real Arduino IDE (version 22 or 23) for Arduino builds."
// #error "See trackuino.pde for details on this"

// #elif (ARDUINO + 0) < 22
// #error "Oops! We need Arduino 22 or 23"
// #error "See trackuino.pde for details on this"

// #elif (ARDUINO + 1) >= 100
// #error "Ooops! We don't support Arduino 1.0+ (yet). Please use 22 or 23"
// #error "See trackuino.pde for details on this"

// #endif

Weiterhin ist in folgenden in das TRACKUINO-Projekt eingebundenen Files nach <WProgram.h>  zu suchen und hierfür stattdessen  jeweils <Arduino.h> einzusetzen:

trackuino.pde bzw. trackuino.ino
sensors_avr.cpp
radio_hx1.cpp
power_avr.cpp
pin_avr.cpp
buzzer_avr.cpp

Ich hoffe, dass ich bei der Auflistung kein File vergessen habe. Ansonsten kommt es aber zu Fehlermeldungen mit Hinweisen auf die noch vorzunehmenden Änderungen. Nach Abschluss dieses Vorgangs ist eine TRACKUINO-Kompilierung auch mit den aktuellen Versionen von ARDUINO möglich.

Das TRACKUINO-Firmwarepaket selbst ist derzeit in der Version 1.4 verfügbar und steht hier [2] zum Download bereit. Dabei enthält die zugehörige Hauptdatei  "trackuino.pde" auch noch einmal die Hinweise auf die zu verwendende Version der ARDUINO-Betriebssoftware.
Die darüberhinaus im Paket enthaltene Datei "config.h" muss einmalig entsprechend der vom Anwender gewünschten Einstellungen modifiziert werden. Dazu gehören eine Anpassung des Absender-Rufzeichens incl SSID ( hier: "DJ7OO-11" ), der Zieladresse ( hier: "APRS" ), der APRS-Pfadeinstellungen ( hier: "WIDE2-1" ) und eines möglichen, jeweils am Stringende stehenden Zusatztextes. Nachdem genannte Config-Datei sehr ausführlich dokumentiert ist, sollte es nicht schwer fallen, darüberhinaus ggf. auch noch weitere Parameter an die eigenen Bedürfnisse anzupassen. So könnte es z.B. erforderlich sein, den voreingestellten Minutentakt für Bakenaussendungen ( Einstellung:   #define APRS_PERIOD   60 ) auf einen anderen Wert umzustellen.
Anm: Hinsichtlich der möglichen APRS-Pfadeinstellungen würde ich mir für zukünftige Versionen noch etwas mehr Flexiblität wünschen!

NEU: Version mit BOARDUINO-Platine

Unter dem Namen "Boarduino" [6] ist seit einiger Zeit eine als Kit erhältliche kleine Baugruppe verfügbar [z.B. bei 7], mit der sich ansonsten mit Standard-Arduino-Bausteinen realisierte Anwendungen ebenfalls umsetzen lassen. So entstand die Idee, den "Boarduino" auch für den schon oben beschriebenen "Trackuino" zu verwenden.  Abb.5 zeigt die entsprechende Anordnung.
 

Abb.5   Trackuino-GPS-Tracker unter Verwendung von Boarduino-Board

Als GPS-Empfangsbaustein kommen alle Versionen infrage, die ihre NMEA-Daten mit 9600bps und TTL-Pegel seriell zur Verfügung stellen. Eine an dieser Stelle geeignete hochmoderne Version ist z.B. der bei z.B. [9] und [10] erhältliche Baustein "Ultimate GPS" von Adafruit [8].


Abb.6   "Ultimate GPS" von Adafruit

Mit der gezeigten Anordnung lässt sich ein ultrakompakter APRS-Tracker realisieren. Als Sender auf üblicherweise 144.8 MHz lassen sich z.B. die für wenig Geld aus China erhältlichen Transceiver verwenden.
Die Programmierung des verwendeten Prozessors "ATMEGA328P" kann auf unterschiedliche Weise erfolgen. So kann, wer noch einen "UNO" oder die Vorgängerversion mit DIL-Stecksockel besitzt, seinen Prozessor "ATMEGA328P" auch dort via USB und Bootloader flashen und ihn danach auf das Boarduino-Board umstecken. Eine andere Möglichkeit besteht darin, den Baustein temporär um einen "USB zu Seriell-TTL"-Wandlerbaustein zu erweitern und dabei die standardmäßige ARDUINO-IDE zu benutzen. Ein hierzu geeigneter und noch dazu sehr preiswerter USB-Adapterbaustein ist z.B. der" UM2102" von ELV [11].


Abb.7  "UM2102" USB<>ser. TTL-Adapter

Nicht allgemein bekannt ist, dass pc-intern bei Ausführung von Kompiliervorgängen über die ARDUINO-IDE zumindest zeitweilig auch HEX-Files der jeweiligen Anwendung ablegt werden. Diese lassen sich bei Bedarf aber "retten" und mithilfe z.B. eines USB-Programmiersticks [z.B.: 12] via ICP in den Boarduino-Prozessor laden.  Hat man in der ARDUINO-IDE unter "Datei", "Einstellungen" einen Haken bei "Ausführliche Ausgabe anzeigen während Kompilierung" gesetzt, so werden am unteren Rand des Ausführungsfensters auch Pfad und Zielregister des jeweiligen HEX-Files angezeigt, was den Zugriff natürlich sehr vereinfacht. Zumindest bei einigen ARDUINO-Versionen scheinen diese Files allerdings nur bis zum Abschluss der jeweils aktuellen IDE-Programmausführung zur Verfügung zu stehen. Damit ist es ratsam, rechtzeitig Kopien zu erstellen und diese an leicht wieder auffindbarer Stelle abzulegen.

Mathias, DH7AHO hatte mich noch auf die Seite von SV1OAN hingewiesen ( http://sv1oan.wordpress.com/2013/05/18/never-hide/  ) . OM Antonis aus Athen hat sich auch mit dem Trackuino-Projekt beschäftigt und berichtet dort darüber.  Dabei stellt er auch seine an einigen Stellen geänderte bzw. erweiterte Softwareversion zur Verfügung.

Abschlussbemerkung

Ein Schwachpunkt des TRACKUINO-Konzeptes scheint mir derzeit noch darin zu bestehen, dass Aussendungen OHNE vorherige Überprüfung einer eventuell schon vorhandenen Kanalbelegung erfolgen. Für Balloneinsätze auf besonderen Frequenzen mag das ohne Belang sein, aber bei Betrieb auf der APRS-Hauptfrequenz 144.8 MHz ist das ggf. problematisch. Somit ist zu hoffen, dass die Programmentwickler ( oder ein anderer engagierter Programierer ) in naher Zukunft noch eine entsprechende Programmerweiterung präsentieren.  Im praktischen Betrieb sollte man den TRACKUINO-Tracker daher zur Zeit zumindest nicht in Verbindung mit Sendern betreiben, deren Sendeleistung deutlich oberhalb von 1W liegt.

Linkliste

[1]  http://www.trackuino.org/
[2]  http://code.google.com/p/trackuino/downloads/detail?name=trackuino-firmware-1.4.zip
[3]  http://arduino.cc/en/Main/Software
[4]  http://www.navilock.de/produkte/G_60422/merkmale.html
[5] 
http://www.ddcom24.de/shop/artikel_artikel_21958_name_GPS-Engine-Module-NL-621ETTL-Navilock-industry.html
[6]  http://www.ladyada.net/make/boarduino/
[7]  http://www.watterott.com/de/Adafruit-DC-Boarduino
[8]  http://www.adafruit.com/products/746

[9]  http://www.watterott.com/de/Adafruit-Ultimate-GPS-Breakout-66-channel
[10]  http://www.exp-tech.de/Shields/Adafruit-Ultimate-GPS-Breakout-66-channel-10-Hz-Version-3.html
[11]  http://www.elv.de/mini-usb-modul-um2102-komplettbausatz.html  ( PS: keine Angst vor dem Begriff: "BAUSATZ"; alle wesentlichen Bauteile sind bereits installiert )
[12]  http://shop.myavr.de/index.php?sp=article.sp.php&artID=200006

E-Mail contact via: