Projektseite GPS-Display und AVR-Tracker

So fing es an...

Als Resultat der Beschäftigung mit APRS entstand schon länger der Wunsch, auch mal einen Tracker selbst aufzubauen, bei dem man aber auch noch einiges verändern können soll. Ein geeignetes, nachbaubares Projekt mit einem AVR-Mikrocontroller ist der WhereAVR von G.Dion (N4TXI) [1]. Von diesem existiert auch ein Nachbau bzw. eine hard- und software- mässige Erweiterung von R.Wilke (DH3WR) [2], letztere sogar mit Platinenlayout wenn auch für SMD-Bestückung. Von beiden Projekten sind die Quellen verfügbar und m.E. ausreichend dokumentiert.

Mit dem Thema GPS kommt man nicht nur via APRS in Kontakt, auch in der Zeitschrift Funkamateur gab es schon einige Bauvorschläge, die Auslese und Auswertung bzw. Aufbereitung von GPS-Daten durchführen. Besonders hat es mir hier das GPS-Display von O.Dröse [3] angetan. Ein solches Gerät, vielleicht noch mit einigen Zusatzfunktionen, sollte beim gelegentlichen Portabel-Betrieb sicher doch recht nützlich sein...

Ebenso mit etwas APRS und mit Anwendungen, die auf GPS beruhen, beschäftigt sich die Web-Site von K.Hirschelmann (DJ7OO) [4] - hier gibt es mehrere Varianten eines GPS-Decoders [5].

Erster Aufbau und Tests

Wie bei den anderen Projekten auch, erfolgt der Aufbau auf einer Lochrasterplatine. Diese ist von der Größe her so gewählt, dass sich der gesamte Aufbau in einem Profilgehäuse von Fischer (?) unterbringen läßt. Zuerst wird allerdings das Schaltbild neu gezeichnet, die beiden Bauvorschläge sowie einige Erweiterungen in Losezettelsammlung erweisen sich als zu chaotisch bei Aufbau...

Bild des Aufbaus auf Lochrasterplatine

Da sich der Aufbau doch über einige Abende hinzog und die Verdrahtung doch schon etwas komplexer ist, bin ich der fertigen Platine dann mit schrittweise komplexeren Tests bzw. Testprogrammen zu Leibe gerückt:

  • 5V-Regler, Stromaufnahme sowie Verteilung von GND und +5V checken
  • Ansteuerung der LEDs, Testprogramm testLED.c, die LEDs simulieren einen Binärzähler
  • der Beschaltung der seriellen Schnittstelle (Pegelwandler mit Transistoren) widmet sich das Testprogramm testSerial.c, Zeichen werden von RxD nach TxD weitergeleitet, hier kommt dann auch gleich noch der Sourcecode Serial.c zum Einsatz
  • der mittels Widerständen 'diskret' aufgebaute DAC-Converter wird mittels des Testprogramms testDAC.c überprüft

Das GPS-Modul

Einem glücklichen Umstand ist es zu verdanken, dass ich recht günstig in den Besitz eines Garmin GPS25-LVC Moduls gekommen bin - ein Kollege hatte ein solches noch über. So war die Kaufentscheidung für ein Navilock-Modul o.ä. erst mal vertagt.
Ein Vorteil dieses Moduls gegenüber dem ursprünglich ins Auge gefaßten Modul von Navilock ist, dass das es eine externe Antenne hat, sich also zum Einbau in ein Metallgehäuse eher eignet.

Um mit diesem Modul etwas unabhägig experimentieren zu können, wird eine 'Testumgebung' auf einer Lochrasterplatine aufgebaut. Im Wesentlichen enthält diese

  • einen 5V-Spannungsregler, sowie Verpolungsschutz
  • Inverter für die seriellen Signalleitungen
  • das GPS-Modul ansich
Der aufgelistete Inverter ist notwendig, weil das verwendete GPS-Modul seine seriellen Signal invertiert ausgibt bzw. solche erwartet.

Bild des Experimentieraufbaus

Im Rahmen der Tests sowie Vrebesserung und Erweiterung der GPS-Decodier-Routinen des Trackers war dann die Idee geboren, sich erst mal an dem GPS-Display zu probieren, Programmtests erfolgtes übrigens zu großen Teilen auf einem PC unter Linux.

Zu einem späteren Zeitpunkt habe ich dann doch noch ein Navilock NL-303P erworben, dieses sieht aus wie eine Maus, enthält einen SiRF-III-Star Chipsatz und liefert sowohl RS232- als auch TTL-Signale. Diese Bauform erlaubt damit ebenfalls den abgesetzten Betrieb.

Wunschliste GPS-Decoder/Display (Pflichtenheft)

Wenn auch die Bauanleitung von DH8BQA [3] auf einem PIC18F252 basiert, so hat sie doch bei der Planung der Benutzerschnittstelle am meisten Pate gestanden, Folgendes ist also zu realisieren:

  • Funktionsumfang des GPS-Displays von DH8BQA sollte vollständig enthalten sein, d.h. umschaltbare Anzeige um die Größen Zeit (UTC), Datum, Länge und Breite, QTH-Locator, Geschwindigeit und Kurs, HDOP und Anzahl der Satelliten anzuzeigen.
  • Qualität des GPS-Empfangs durch LED anzeigen (aus, Blinken, an)

Vergleicht man den Schaltungsumfang der N4TXI-Schaltung mit dem gegenwärtigen Zweck, so erscheint der Aufwand etwas am Ziel vorbei zu sein, aber das Fernziel bleibt weiterhin der Tracker, das einfachere Ziel kam eben "unterwegs"...

Die Version V 1.1 der Software implementiert diese Wunschliste größtenteils und auf unserer Urlaubsfahrt im Sommer 2009 in die Nähe von Nizza und Fahrten in der Umgebung, konnte es ausgiebig getestet werden. Dies führt zu einer geäderten Wunschliste:

  • Die Aufteilung in mehrere Anzeigen ist für den Portabelbetrieb OK, beim Autofahren hat man aber nie alle gewünschten Informationen gleichzeitig geifbar, bzw. das Umschalten kann ablenken (oder zumindest die XYL nervös machen). Wie bei [5] muß entweder mehr Information durch eine kompakztere Daterstellung auf einer Seite vorhanden sein, oder es muss z.B. ein 4-Zeilen Display vorhanden sein
  • Das Verhalten des Navilock-Moduls im Stand führt zu großen Geschwindigkeitssprüngen in der Anzeige, das muß irgendwie unterdrückt werden (Gradientenfilter)

Software

Die Software basiert zum einen auf der Auswerteroutine von N4TXI für den GPS-Datenstring, bzw. jene ist davon inspiriert. Um für die limitierten Ressourcen auf einem uController geeignet zu sein, sind einige Anpassungen notwendig, leider wird dadurch der Code weniger schön. Zur Ansteuerung der seriellen Schnittstelle kann wahlweise der Code von P.Fleury [6] oder von N4TXI verwendet werden, letzterer ist etwas kompakter. Die Ansteuerung des LCDs erfolgt ebenfalls mit der entsprechenden Bibliothek von P.Fleury. Die Abfrage des Tasters erfolgt in der bereits bewährten Weise über den Timer-Interrupt, das schließt das Entprellen mit ein,

Eine kleine Gemeinheit bei der Auswertung der NMEA-Datenstrings soll nicht unerwähnt bleiben, der Vergleich der Garmin- [7] bzw. SiRF-Dokumentation [8] zeigt, dass das Format doch Unterschiede aufweist. Dies führte bei dem nicht die Längen der Zeichenketten überprüfenden Code von N4TXI zu Überschreibungen und zu anfänglich sehr merkwürdigen Ausgaben auf dem Display.

Damit ist auch klar, dass der gesammte Code in C geschrieben ist. Um die verwendeten Algorithmen (GPS-Dekodierung und Aufbereitung für das LCD) besser testen zu können, ist ein Teil des Codes auch auf dem Linux-PC übersetzbar und wird dort in einem entsprechenden Testrahmen eingebunden. Dort wird f&uuuml;r das Einlesen von der seriellen Schnittstelle (auch USB) die LibSerial [9] verwendet.

Die Inbetriebnahme der Hardware - da es die ursprüngliche Hardware-Platform von N4TXI ist - gestaltet sich durch einige weitere Testprogramme auch noch etwas einfacher.

Wunschliste APRS-Tracker

Referenzen