AVR GPS-Logger

  1. Vorwort
  2. GPS-Maus
  3. Aufzeichnungsformat
  4. Aufzeichnungsformat
  5. Bedienung und Anzeige
  6. AVR und PC Software
  7. To Do
  8. Infos und Links

Vorwort

Das Gerät dient dazu, eine mit dem Motorrad, Fahrrad, zu Fuß etc. zurückgelegte Route aufzuzeichnen um sich diese nachher am PC ansehen zu können. Die aktuelle Position wird dabei von einer seriellen GPS-Maus geliefert.
Die aufgezeichnete Route kann dann beispielsweise in Google Earth angezeigt werden.

Hier mal ein Beispiel wie so etwas dann in Google Earth aussehen könnte:


Zugehörige GPX-Route (ohne Waypoints):
Motorrad_Route_1.gpx

GPS-Maus

Für das Gerät wird eine externer GPS-Empfänger (GPS-Maus) benötigt, die über einen seriellen Anschluss (kein USB!) verfügt und über diesen die Daten im standardisierten NMEA-0183 Datenformat ausgibt.
Die von mir verwendete Maus bezieht ihren Strom über den PS/2-Anschluss des PCs. Da im 6-poligen Mini-DIN-Stecker des Verteilers alle Signale vorhanden sind, habe ich den Anschluss des Gerätes hierauf ausgelegt um den Kabelsalat unterwegs gering zu halten. Weiterhin sind die TxD/RxD-Leitungen auch im TTL-Level vorhanden. Das Gerät verwendet diese Leitungen um die Stromaufnahme zu reduzieren, da der Pegelwandler MAX232 unterwegs abgeschaltet werden kann.

Aufzeichnungsformat

Die GPS-Maus liefert einiges an Informationen aus, z.B. über die zur Zeit erreichbaren Satelliten, die Genauigkeit der Messung und einiges mehr.
Hier interessiert aber nur die aktuelle Uhrzeit und Datum, sowie Breiten- und Längengrad. Zusätzlich wird noch die Höhe aufgezeichnet, auch wenn diese bei meinem GPS-Empfänger nicht sonderlich genau zu sein scheint.

Da die Positionsdaten lediglich abgespeichert werden sollen, werden die von der GPS-Maus im ASCII-Format empfangenen Daten in ein möglichst speichersparendes Format gewandelt.
Ein im EEPROM gespeicherter Datensatz hat dabei folgenden Aufbau:

Datum Datentyp Beispiel NMEA-ASCII Beispiel Datentyp Größe in Byte
date unsigned long 050806 50806 4
time unsigned long 121630.611 121630 4
latitude unsigned long 5215.3472 52153472 4
longitude unsigned long 5215.3472 52153472 4
latitude_ns char N N 1
longitude_ew char E E 1
20

Bedienung und Anzeige

Die Bedienung des Gerätes erfolgt über die 2 Tasten, die mehrere Funktionen besitzen.
Vor dem Ausschalten des Gerätes sollte der Logging Vorgang gestoppt werden. Damit wird der aktuelle Index im EEPROM gespeichert und der Track kann beim nächsten Einschalten an dieser Stelle fortgesetzt werden.

Anzeigen der Duo-LED rot/grün:

Schaltung

An der Schaltung ist eigentlich nichts besonderes. Der Atmega8 ist in Standardbeschaltung, für einen ISP musste auch noch Platz sein um den AVR im SMD-Gehäuse zu programmieren.
Als Spannungsversorgung ist ein Step-Up Konverter vom Typ LT1073 notwendig, der die Spannung von den zwei Batterie oder Akku-Zellen auf die benötigten 5V wandelt. Dieser Wandler benötigt auf der Ausgangsseite einen Kondensator mit geringen inneren Verlustwiderstand (Low-ESR). Diese sind etwas schwer zu bekommen, und von den handelsüblichen Elkos bekommt man nur selten Datenblätter in denen der ESR aufgelistet ist. Unschön ist auch noch der Preis des Wandlers von fast 5 Euro, aber eine günstigere Lösung habe ich noch nicht gefunden.

GPS-Logger Schaltung

Layout

Stückliste

Schaltplan Bezeichnung / Funktion Quelle Best.Nr. Anzahl
- Gehäuse Conrad - -
- Halter für 2 Microzellen (AAA) Lötfahnen Reichelt HALTER 2XUM4-NLF 1
IC1 Atmel AVR RISC Controller Atmega8, TQFP32 Reichelt ATMEGA 8-16 TQ 1
IC2 RS232E Interface, SO-16 Reichelt MAX 202 CSE 1
IC3 Serielles CMOS EEPROM, 5V, 64kB, DIP8 Reichelt ST 24C512 BN6 1
IC4 DC-DC Wandler 5V, DIP-8 Reichelt LT 1073 CN8-5 1
L1 Drosselspule, Festinduktivität, axial 68µH Reichelt SMCC 68µ 1
D1 Schottky-Diode 1N5818 Reichelt 1N 5818 1
D2 Duo LED, 5mm, 3 Pin, rot/grün Reichelt LED 5 RG-3 1
R1 Widerstand 100 Ohm, SMD 1206 Reichelt SMD 1/4W 100 1
R2 Widerstand 10 kOhm, SMD 1206 Reichelt SMD 1/4W 10K 1
R3, R4 Widerstand 470 Ohm, SMD 1206 Reichelt SMD 1/4W 470 2
C1, C4, C6, C7, C8, C9, C10 SMD Vielschicht Kondensator 100nF 1206 Reichelt X7R-G1206 100N 7
C2, C3 SMD Vielschicht Kondensator 15pF 0805 Reichelt NPO-G0805 15P 2
C5 Elko radial, Low ESR, 100µ 50V Conrad 446122 1
P1, P2 SMD Kurzhubtaster Reichelt TASTER 9316 2
Q1 Standardquarz 3,686411 MHz Reichelt 3,686411HC49U-S 1
Q2 Mosfet BSS84P, SMD, SOT23 Reichelt BSS84P SMD 1
X1 Sub-D Buchse 9-polig für Printmontage Reichelt D-SUB BU 09EU 1
- Stiftleiste - - -
- Lötnägel - - -

AVR und PC Software

Um die Daten vom PC aus abzuholen, stellt dieser eine Anfrage an den Controller.
Ein Datensatz ist ähnlich dem NMEA-Protokoll aufgebaut, damit hierfür der gleiche Parser verwendet werden kann.
Einstellungen der seriellen Schnittstelle: 4800 Baud, 1 Startbit, 1 Stopbit, keine Parität
Es stehen dabei folgende Befehle zur Verfügung:

PC Richtung Logger Beschreibung
$TREQ*<CR><LF> -->   Anzahl der gespeicherten Trackpunkte
  <-- $TCNT,n*<CR><LF> n = Anzahl
       
$TSET,n*<CR><LF> -->   Trackpunkt n Abfragen
  <-- $ddddddddddttttttttttBBBBBBBBBBLLLLLLLLLLbl*<CR><LF> d = Datum [ulong]
t = Uhrzeit [ulong]
B = Breite [ulong] Komma an 5.Stelle
L = Länge [ulong] Komma an 6. Stelle
b = Breite [char] n/e
l = Länge [char] e/w
       
$WREQ*<CR><LF> -->   Anzahl der gespeicherten Wegpunkte
  <-- $WCNT,n*<CR><LF> n = Anzahl
       
$WSET,n*<CR><LF> -->   Wegpunkt n Abfragen
  <-- $nnnnn*<CR><LF> n = Wegpunkt Nr. mit führenden Nullen

To Do

Infos und Links

Allgemeine Infos zur Funktionsweise von GPS (auf deutsch):
http://www.kowoma.de/gps/

GPX-Track-Viewer Seite, Auswertung der EXIF-Informationen von Bildern:
http://www.kompf.de/trekka/

Beschreibung des GPX-Datenformates:
http://www.topografix.com/gpx.asp