Der selbstgebaute GPS Logger

Figure 7
Der geöffnete GPS Logger beim Laden

Mein erstes großes Projekt im Bereich Mikrocontroller und Elektronik war die Konstruktion eines GPS Loggers. Auslöser für das Projekt war ein Artikelwettbewerb der Webseite mikrocontroller.net im Sommer 2008 (in welchem ich mit meinem Artikel den 8. Platz belegt habe). Das Gerät ist dazu in der Lage, einen Weg, den man gegangen oder gefahren ist, auf eine Speicherkarte zu schreiben, sodass man den Pfad später am Computer betrachten kann.

Neu: Erfreulicherweise wurde mein Artikel zum Bau des GPS Loggers in der 9. Ausgabe des embedded projects journal veröffentlicht.

Aufbau

Das Gerät, welches man auf dem Bild sieht, ist bereits die zweite Version des Loggers. Diese habe ich im Sommer 2010 entworfen. Hauptänderung gegenüber der ersten Version sind die Außenmaße des Geräts. Der Logger ist 5cm x 5cm x 2cm groß und passt damit in jede Hosentasche. Bei der Platine handelt es sich um ein doppelseitiges Layout, dass überwiegend SMD-Bauteile einsetzt um solche kompakten Maße zu erzielen. Der Prozessor ist ein Atmel ATmega88. Der Programmcode für ihn wurde in C geschrieben.

Kostenmäßig liegt das Gerät bei etwa 50 Euro. Nähere Informationen finden sich im Wiki-Artikel auf www.mikrocontroller.net.

Software

Parallel zum Gerät habe ich auch zwei Programme für den Computer geschrieben, um die aufgezeichneten Daten leicht auswerten zu können. Zum einen handelt es sich um ein Programm (namens "RawRead"), dass die SD-Karte ausliest (da sie bei der neuen Version des GPS Loggers in einem speziellen Format beschrieben wird). Zum Anderen habe ich eine Software entwickelt (die "NMEA-Toolbox"), mit der man aus den Daten beispielsweise Google-Earth Pfade erstellen kann.

RawRead

Da beim Beschreiben der Karte auf ein Dateisystem verzichtet wurde, ist das Auslesen der Karte am PC nicht komplett ohne Zusatzsoftware möglich. Unter Linux kann man eingebaute Tools verwenden (z. B. dd), für Windows-PCs habe ich eine kleine Software zum Auslesen und Leeren der Karte geschrieben. Es handelt sich hierbei um eine Kommandozeilen-Applikation, geschrieben in C++. Das Tool hat bestimmte Erkennungsmechanismen eingebaut, die das Auslesen und Leeren lediglich bei Wechselmedien erlauben. Durch einen bestimmten Header, der sich am Beginn eines NoFS-Laufwerkes befindet, wird zudem zusätzlich gewarnt, wenn man ein Nicht-NoFS-Laufwerk leeren möchte.

NMEA-Toolbox

Ein weiteres Programm, dass ich geschrieben habe (diesmal in Java), ist die NMEA-Toolbox. Sie kann, wie bereits oben geschrieben, aufgezeichnete Daten in Handelsübliche Formate für Geodaten konvertieren, so zum Beispiel Google Earth Pfade. Hierbei kann man auch einige Filter einstellen, um ein besseres Ergebnis zu erhalten. Dieses sowie alle anderen Programme und Quelltexte liegen am Ende der Seite als Download bereit.

Das Programm unterstützt folgende Dateiformate:

Eingabe:

  • Jedes beliebige, solange NMEA-Datensätze der Dateiinhalt sind

Ausgabe:

  • Google Earth Pfad (*.kml)
  • Google Maps Pfad (*.kml)
  • Geschwindigkeitsdiagramm (*.csv)
  • Höhendiagramm (*.csv)
  • GPX-Track (*.gpx)

Update

Ich habe mich dazu entschieden, sowohl die AVR Firmware als auch RawRead nach GitHub zu verlegen. Sie können die jeweils aktuellste Version immer dort finden. Aus diesem Grund habe ich die jeweiligen Anhänge aus diesem Artikel entfernt.

Anhänge