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.
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.
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 |
Anzeigen der Duo-LED rot/grün:
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 | - | - | - |
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 |
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