Die GPS-Maus: Aufzucht und Pflege

Tobias Nebel Dieser Artikel wurde von geschrieben. Tobias Nebel hat sein Studium der Telekommunikationsinformatik an der Hochschule für Telekommunikation in Leipzig absolviert. Er arbeitet als Softwareentwickler bei der Firma ubigrate mit dem Schwerpunkt Geräteintegration.

PNAs (Personal Navigation Assistant / “Navi”) sind seit geraumer Zeit in immer mehr Formen, Farben und Ausführungen von verschiedensten Herstellern erhältlich. Diese Geräte haben einen eingebauten GPS-Empfänger und benötigen deshalb keine zusätzliche Hardware. Doch es steckt noch viel mehr in diesen Geräten: In der Regel ist auf solchen Geräten ein MS Windows Mobile oder MS Windows CE installiert. Deshalb verfügen die meisten dieser Geräte auch über zusätzliche Features, wie beispielsweise die Funktion als Multimedia-Player.

Doch es geht natürlich auch andersherum: Man kann jedes gängige Betriebssystem mit einem externen GPS-Empfänger, einer so genannten GPS-Maus, ausstatten. Diese Geräte sind mit allen erdenklichen Schnittstellen zum Endgerät, wie beispielsweise RS232, PCMCIA, USB und seit neuestem auch Bluetooth, erhältlich (wobei letztere drei Varianten ebenfalls einen virtuellen RS232-Port zur Verfügung stellen). Mit entsprechender Software lassen sich dann die meisten PCs, Notebooks, Handhelds und sogar neuere Mobilitelefone in Navigationsgeräte “verwandeln”.

Neben der typischen Assoziation von GPS mit Navigation sind noch eine Menge weiterer Anwendungsszenarien für GPS denkbar. Beispielsweise ermöglicht die Positionsbestimmung von LKWs einem Logistikunternehmen ein weitaus flexibleres Flottenmanagement.

Doch wie bekommt der Otto-Normal-Programmierer die Daten vom GPS-Empfänger in sein Programm? Dazu wurde bereits 1983 (!!!) von der National Marine Electronics Association (NMEA) der Übertragungsstandard NMEA-0183 entwickelt. Dieser definiert die Übertragung von GPS-Daten über eine beliebige serielle Schnittstelle mit 4800 Baud.

Protokoll

Die GPS-Informationen im NMEA-0183 sind in so genannte sentences (Sätze) eingeteilt und dürfen 80 Zeichen pro Satz nicht überschreiten. Der Zeichenvorrrat für eine Nachricht umfasst alle druckbaren ASCII-Zeichen und zusätzlich Carriage-Return (CR) und Line-Feed (LF). Ein Satz beginnt immer mit einem “$” und wird grundsätzlich mit CR+LF beendet.

Die ersten 2 Zeichen nach dem einleitenden “$” identifizieren die Quelle des aktuellen Satzes (z.B. für GPS-Informationen “GP”, andere Schlüssel sind z.B. für Statusinformationen möglich). Die nächsten 3 Zeichen geben Auskunft über den Inhalt des Satzes (siehe Abschnitt “Nachrichten”). Darauf folgen die eigentlichen Informationen, welche jeweils mit einem Komma getrennt sind. Die Anzahl der Zeichen pro Information ist dabei variabel. Es treten bisweilen sogar Unterschiede in der Formatierung der Informationen, wie etwa der Anzahl von Nachkommastellen einer Zahl, auf. Zu guter Letzt schließt ein “*” gefolgt von einer zwei Byte langen Prüfsumme den Satz ab. Die Prüfsumme resultiert aus einer bitweisen XOR-Verknüpfung aller ASCII-Werte zwischen dem einleitenden “$” und dem “*” am Ende der Nachricht.

Nachrichten

Das Absenden der Sätze durch den GPS-Empfänger erfolgt i.d.R. periodisch. Er kann verschiedene Satz-Typen nach dem NMEA-Standard absenden, wobei aber nicht jeder Empfänger alle Typen unterstützen muss. Es existiert jedoch mit GPRMC (GPS Recommended Minimum Configuration) ein Satz, welchen jedes GPS-Gerät unterstützen sollte. Dieser enthält die wichtigsten Informationen zur aktuellen Position:

$GPRMC,122453.000,A,5054.8734,N,01338.2914,E,0.0,334.37,170508,0.4,E,A*2E
 ^     ^          ^  ^           ^            ^    ^     ^      ^    ^  ^
 |     |          |  |           |            |    |     |      |    |  |
 |     |          |  |           |            |    |     |      |    |  |
 |     |          |  |           |            |    |     |      |    |  Prüfsumme
 |     |          |  |           |            |    |     |      |    |
 |     |          |  |           |            |    |     |      |    Modus
 |     |          |  |           |            |    |     |      |
 |     |          |  |           |            |    |     |      magnetische
 |     |          |  |           |            |    |     |      Deklination
 |     |          |  |           |            |    |     |
 |     |          |  |           |            |    |     Datum [ddmmyy]
 |     |          |  |           |            |    |
 |     |          |  |           |            |    Kurs in Grad [0°...359.99°]
 |     |          |  |           |            |
 |     |          |  |           |            Geschwindigkeit [Knoten]
 |     |          |  |           |
 |     |          |  |           Längengrad [dddmm.mmmm], Ost/West
 |     |          |  |
 |     |          |  Breitengrad [ddmm.mmmm], Nord/Süd
 |     |          |
 |     |          Status [A=OK, V=Warnung]
 |     |
 |     Uhrzeit [hhmmss.sss]
 |
 Satz-Typ

Weiterhin liefert der GPGGA-Satz (im Allgemeinen GPS Fixed Data genannt1) weitere Positionsdaten und nützliche Informationen über die Qualität und Genauigkeit der Messung.

$GPGGA,122454.000,5054.8734,N,01338.2914,E,1,7,2.27,350.3,M,45.9,M,,*5E
 ^      ^         ^           ^            ^ ^ ^    ^     ^  ^   ^^^  ^
 |      |         |           |            | | |    |     |  |   |||  |
 |      |         |           |            | | |    |     |  |   |||  Prüfsumme
 |      |         |           |            | | |    |     |  |   |||
 |      |         |           |            | | |    |     |  |   ||Differential GPS
 |      |         |           |            | | |    |     |  |   ||Referenzstation
 |      |         |           |            | | |    |     |  |   ||
 |      |         |           |            | | |    |     |  |   |Differential GPS
 |      |         |           |            | | |    |     |  |   |Alter der Daten
 |      |         |           |            | | |    |     |  |   |
 |      |         |           |            | | |    |     |  |   Geoid-Separation
 |      |         |           |            | | |    |     |  |   Einheit
 |      |         |           |            | | |    |     |  |
 |      |         |           |            | | |    |     |  Geoid-Separation
 |      |         |           |            | | |    |     |  Abstand zw. WGS-84
 |      |         |           |            | | |    |     |  (Erd-Ellipsoid) und
 |      |         |           |            | | |    |     |  Meeresspiegel(Geoid)
 |      |         |           |            | | |    |     |
 |      |         |           |            | | |    |     Höhe über Geoid
 |      |         |           |            | | |    |     Einheit
 |      |         |           |            | | |    |
 |      |         |           |            | | |    Höhe über Geoid
 |      |         |           |            | | |    Wert
 |      |         |           |            | | |
 |      |         |           |            | | Horizontal Dilution of Precision
 |      |         |           |            | | (HDOP) Genauigkeit [1.0...99.9]
 |      |         |           |            | |
 |      |         |           |            | Anzahl erfasster Satelliten
 |      |         |           |            |
 |      |         |           |            Qualität der Messung
 |      |         |           |            [ 0=ungültig, 1=GPS, 2=DGPS ]
 |      |         |           |
 |      |         |           Längengrad [dddmm.mmmm], Ost/West
 |      |         |
 |      |         Breitengrad [ddmm.mmmm], Nord/Süd
 |      |
 |      Uhrzeit [hhmmss.sss]
 |
 Satz-Typ

Neben dem GPRMC- und dem GPGGA-Satz sind exemplarisch noch folgende weitere NMEA-Sätze zu nennen:

  • GPGSA (GPS Satellites Active) beinhaltet Informationen zu aktiven Satelliten
  • GPGSV (GPS Satellites in View) beinhaltet Informationen über sichtbare Satelliten, wie z.B. deren Position und Signalstärke

Fazit

Allein anhand der GPRMC- und GPGGA-Sätze sind auf sehr einfache Art und Weise Positions-Informationen zu erlangen, die kaum weiterer Nachbearbeitung erfordern. Der Programmierer kann GPS-Daten somit schnell und einfach ohne umfangreiche Auswertungs-Logik in Programme integrieren.

Sollten Sie trotz oder wegen obigen Artikels Bedarf an einem fertigen Adapter für NMEA-kodierte GPS-Daten haben, finden Sie unter den Koordinaten 51° 2′ 4” N, 13° 46′ 36” O einen Hersteller von Integrationssoftware, der eine derartige Komponente für Sie bereithält.

1 Liebe Leser! Leider konnten wir nicht ermitteln, wofür die Abkürzung GPGGA steht. Wir würden uns über Aufklärung durch unsere Leserschaft sehr freuen! Die ersten drei Leser, welche uns das Akronym erklären, erhalten von uns eine kleine Überraschung per Post!

Post to Twitter

Schlagworte:

1 Kommentar bisher »

  1. Florian sagt

    am 19. Juni 2008 @ 7:13

    Ich denke, dass die Abkürzung GGA wie bei den anderen Sentences mit dem Inhalt der Sentence zu tun hat.

    Mein Tipp deshalb:
    G = Height above Geoid
    G = Geoidal Separation
    A = Age of data

    Alternativ könnte das A auch für die Antenna Altitude stehen – dann wird der Rest aber holprig :-)

Komentar RSS · TrackBack URI

Hinterlasse einen Kommentar

Name:

eMail:

Website:

Kommentar:

 

google

google

asus