Ein in meinen Augen extrem faszinierendes Gebiet ist die Positionsbestimmung mittels GPS. Analog zu Funkmodulen ist es auch hier so, dass viele Wege nach Rom führen.
Wer noch nicht mit GPS in Kontakt gekommen ist, dem würde ich zunächst empfehlen, sich die allgemeinen Informationen durchzulesen. Denn was nützen einem die vielen Größen, die ein GPS-Gerät ausgeben kann, wenn man nichts damit anzufangen weiß.
Einstieg in das Global Positioning System GPS: *klick-mich*
Soviel sei gleich gesagt, meine Wahl ist auf das "Lassen iQ" von Trimble gefallen. Dieses ist ein relativ neues Gerät und im vierten Quartal 2004 erst auf den Markt gekommen. Sein Vorgänger war das Lassen SQ (siehe Bild).
Dieser GPS-Receiver hat eine komplexe Elektronik bereits integriert, was dem Anwender einiges erleichtert. Für den User, welcher das Modul nur als Black Box betrachten sollte, ist wichtig, dass das Modul seine Daten über eine serielle Schnittstelle (USART bei 4800 Baud) mit einem von ihm festzulegendem Protokoll ausgibt. Hier stehen zur Wahl (nur die zwei wichtigsten):
Trotz allem werde ich hier nur auf das TSIP eingehen, wer so einen Haufen Geld in einen GPS-Empfänger steckt der möchte auch alle Features desselben nutzen können! Nachteilig ist natürlich, dass es sich um ein herstellerspezifisches Protokoll handelt (kein Standard), was der Sache in diesem Fall jedoch keinen Abbruch geben soll.
Um zum neugierig machen noch ein paar Features des Moduls zu nennen:
Zu den nicht zu unterschätzenden Kosten für das Modul kommen noch die für eine geeignete Antenne (kann man normalerweise gleich mit erwerben) und entsprechende Anschlusskabel hinzu. Vom Löten an den Pins eines Moduls dieser Preisklasse würde ich dann doch eher abraten. Um nach dem Einschalten schnell zu Messwerten zu kommen, empfiehlt sich der Anschluss einer Puffer-Batterie zur Überbrückung der Zeiträume ohne externe Spannungsversorgung. Die Verwendung einer solchen Batterie bringt zusätzlich den Vorteil mit sich, dass das Modul wesentlich weniger Zeit benötigt, bevor der erste gültige Datensatz übermittelt werden kann (typisch <20s, sonst mind. 3min). Die Lebensdauer einer 3,6V Lithium-Batterie wird mit bis zu 5 Jahren angegeben.
Nun noch einmal ein kleiner Blick auf die Grafik zu Beginn. Der Anschluss links dient für die Antenne, der Anschluss rechts für die Spannungsversorgung und Kommunikation. Die Pinbelegung hat folgende Form (Lassen SQ):
Pin-Nr. | Funktion | Beschreibung |
1 | TXD A | Sendeleitung der seriellen Schnittstelle |
2 | GND | Masse |
3 | RXD A | Empfangsleitung der seriellen Schnittstelle |
4 | PPS | Puls pro Sekunde |
5 | reserviert | nicht verbinden |
6 | reserviert | nicht verbinden |
7 | Vcc | 3,3±0,3V (ca. 33mA) |
8 | Batterie | 2,5-3,6V (ca. 19μA) |
Dem Modul sind nach dem Einschalten mind. 2,1s Zeit zu geben, bevor eine Kommunikation gestartet wird. Die Kommunikation läuft über eine konfigurierbare serielle Schnittstelle (VORSICHT: man kann sich durch falsche Konfiguration unter Umständen auch aussperren) mit TTL-Pegeln. Zur Kommunikation mit dem PC müsste ein Pegelwandler wie der MAX232 eingesetzt werden.
Eine Warnung noch vorweg: Die an das Modul angeschlossene Antenne braucht freie Sicht auf den Himmel. GPS arbeitet bei ca. 1574MHz, was dem Signal das Durchdringen von Mauern, metallischen Oberflächen u.ä. unmöglich macht. Deshalb empfiehlt sich für den mobilen Bastler die kompakte magnetisch befestigbare Antenne von Trimble. Diese bringt 5m Kabel und einen entsprechenden Anschlussstecker für das Modul bereits mit. Zwar bringt das Modul die Fähigkeit mit sich, auch mit sehr schwachen Signalen arbeiten zu können, doch sollte man es ihm nach Möglichkeit nicht schwerer als möglich machen.
Das Modul kann parallel die Daten von bis zu 8
Satelliten auswerten. Es beginnt mit der Suche nach ihnen sofort nach dem
Einschalten. Die Geschwindigkeit, mit der dieses geschieht, hängt stark von der
aktuellen Satellitenkonstellation, der Güte des Signals sowie den noch im Modul
gespeicherten Daten ab (Back-Up-Batterie!).
Verpasst man dem Modul einen Kaltstart (entweder beim ersten Einschalten oder
weil keine Batterie angebracht wurde), so kann es bis zu 15min Dauern, bis es
einen kompletten Datensatz verfügbar hat. Mit Batterie dauert das Ganze normal
nur noch 45s. Dieses Initialisierungsprozess sollte nicht gestört werden, ist
halt eine kleine Geduldsprobe :-)
Will man nach dem Einschalten zum ersten Mal
mit dem Modul kommunizieren, so empfehle ich dafür zunächst die
Herstellersoftware (PC). Wenn hier alles glatt läuft, kann man auf ein
Terminalprogramm und danach auf den MC wechseln. Die Standardeinstellungen für
die serielle Schnittstelle sind 9600 Baud, 1 Startbit, 8 Datenbits und keine
Parität. Als Protokoll ist TSIP eingestellt, was nicht weiter störend ist.
Das Terminalprogramm sollte allerdings die einziger binärer Daten unterstützen.
Wer es gar nicht erwarten kann, der ändert die Einstellung des Moduls auf NMEA.
Hier werden die Daten zwar nur noch mit der halben Baudrate ausgegeben, dafür
aber im Klartext (char).
TSIP
Ist TSIP als Protokoll eingestellt, so gibt es zwei Möglichkeiten mit dem GPS-Modul zu kommunizieren. Zum einen gibt es den so genannten Query-Mode, zum anderen den Automatic-Mode. Im Query-Mode gibt das Modul Daten nur auf Anfrage Preis. Man sendet für die gewünschte Information einen bestimmten Code und erhält diese dafür. Im Automatic-Mode legt man vorher fest, welche Daten man erhalten möchte und in welcher zeitlichen Taktung dies stattfinden soll (1s bzw. 5s möglich).
Das TSIP basiert auf Paketen. Eingeschlossen wird jedes Datenpaket von Kontrollzeichen, welche Beginn und Ende des Paketes kennzeichnen. Jedes Paket beinhaltet ein Byte, welches über den Inhalt und die Formatierung desselben Auskunft gibt. Diese Struktur gilt sowohl für vom Modul empfangene als auch zum Modul gesendete Pakete.
<DLE> <ID> <Datenstring> <DLE> <ETX>
<DLE> ist 0x10, <ETX> ist 0x03 und ID stellt den Identifier dar. Dieser kann alle Werte außer 0x03 und 0x10 annehmen. Der Datenstring kann ein beliebiges Format haben. Da auch in ihm die Werte von <DLE> und <ETX> auftauchen können, wurden Konventionen geschaffen. Taucht im Datenstring an irgendeiner Stelle 0x10 auf, so wird diesem vor dem Senden ein weiteres 0x10 voran gestellt. Dieses muss vom Empfänger wieder entfernt werden. Auf diese Weise taucht im Datenstring immer eine gerade Anzahl von <DLE> Bytes auf. Beendet wird das Paket von einem <ETX>, dem eine ungerade Anzahl von <DLE> voran gestellt ist.
Hier alle Pakete und deren Inhalt zu erläutern würde den Rahmen sprengen, da kann ich leider nur auf das Datenblatt verweisen (insgesamt etwa 70 Seiten dazu). Ich werde jedoch einfach versuchen, die Sache am Beispiel aufzuzeigen, ohne hier auf jedes Detail einzugehen. Wahrscheinlich werden soundso die meisten auf das "Klartext-Protokoll" NMEA ausweichen, da dessen Verarbeitung sich wesentlich einfacher gestaltet.
To be continued ...