Homepage Wiki Forum Buy

GPS

Aus GNUBLIN

Schwierigkeitsgrad Voraussetzung Gnublin Familie
Gnublin logo advanced.png Baustein per USB verbinden, Zugriff serielle Schnittstelle Alle


Inhaltsverzeichnis

Gnublin und GPS

Es ist möglich einen GPS Empfänger am Board anzuschließen und mit diesem seine Standortdaten zu loggen. Die geloggten Daten können dann später wunderbar mithilfe eines Kartenprogrammes, wie Google Earth oder Merkaator visualisiert werden, oder direkt auf einer Internetseite angezeigt werden. Dadurch kann das Gnublin mit GPS-Empfänger als Streckenlogger oder ähnliches eingesetzt werden.

150px‎

In diesem Fall wurde der GlobalTop Gms-d1 GPS Empfänger (MediaTek MT3329) aus dem Embedded Projects Shop verwendet.

http://shop.embedded-projects.net/index.php?module=artikel&action=artikel&id=552

Da das Modul schon mit einem eingebauten USB-Seriell Wandler geliefert wird, kann man nun einen schon vorhandenden Treiber für die virtuelle serielle Schnittstelle verwenden.


Vorbereiten und anschließen

Löten

Zuerst müssen die Pins D+, D-, VCC, und GND mit den selben Leitungen an einem USB-Kabel verlötet werden. Somit wird das GPS-Modul gleich über die USB Schnittstelle mit Strom versorgt.

Steckerbelegung USB:

Anschluss Adernfarbe Funktion
1 Rot VCC(5V)
2 Weiß - Data
3 Grün + Data
4 Schwarz GND

Treiber identifizieren

Um herauszufinden welcher USB-Serial Treiber zu verwenden ist, schließt man den GPS Empfänger erstmal an einem Linux Laptop an:

[49804.367201] cdc_acm 2-1.2:1.1: ttyACM0: USB ACM device [49804.367867] usbcore: registered new interface driver cdc_acm [49804.367870] cdc_acm: USB Abstract Control Model driver for USB modems and ISDN adapters

Sollte der Treiber nicht als Modul im Kernel vorhanden sein, so muss man das erforderliche Kernel Modul neu kompilieren und anschließend installieren. Dabei sollte man nach dem cdc_acm Treiber ausschau halten.

Treiber laden

Um den Treiber auf dem Gnublin zu laden, verwendet man folgenden Befehl:

modprobe cdc_acm

Hier die Ausgabe des Befehls.

root@gnublin:~# modprobe cdc_acm usbcore: registered new interface driver cdc_acm cdc_acm: v0.26:USB Abstract Control Model driver for USB modems and ISDN adapters

An Gnublin anschließen

root@gnublin:~# usb 1-1: new full speed USB device using lpc-ehci and address 2 usb 1-1: New USB device found, idVendor=0e8d, idProduct=3329 usb 1-1: New USB device strings: Mfr=3, Product=4, SerialNumber=0 usb 1-1: Product: GPS Receiver usb 1-1: Manufacturer: MTK cdc_acm 1-1:1.1: ttyACM0: USB ACM device

Hier sieht man in der letzten Zeile, dass der Treiber cdc_acm ein neues Device ttyACM0 anlegt, falls udev vorhanden ist.

Auslesen und Loggen

Device-Datei anlegen und auslesen

Falls man ein Gnublin ohne udev besitzt, muss man zuerst das Device manuell erstellen um eine Kommunikation zu ermöglichen.

mknod /dev/ttyACM0 c 166 0

Anschließend kann das neu erstellte Device mit cat ausgelesen werden. Nachfolgend eine Beispielausgabe:

root@gnublin:~# cat /dev/ttyACM0 GPRMC,............. $GPVTG............ $GPGSA,........... $GPRMC,............ $GPVTG,............ $GPGGA,............ $GPGSA,...........

(Natürlich erscheinen nicht nur Punkte in der Ausgabe, sondern die aktuellen Koordinaten und andere Informationen in Form eines Codes)

Diese Daten können nun mithilfe zweier Programme, die im Hintergrund laufen, so aufbereitet werden, dass am Ende eine fertige .gpx-Datei erstellt wird. Diese Datei enthält alle aufgenommenen Standortdaten (chronologisch geordnet).

GPSD installieren und testen

GPSD ist ein GPS-Daemon welcher die GPS-Daten des Empfängers im Hintergrund abruft. Andere GPS-Programme können auf die Daten von GPSD zurückgreifen und sie weiterverwenden. Für GPSD werden folgende Debianpakete verwendet.

gpsd (nicht mit dem Packet fso-gpsd kompatibel!) gpsd-clients(enthält unter anderem den ebenfalls wichtigen gpxlogger) libgps19

Die Pakete finden sich alle unter: http://packages.debian.org Nachdem die Pakete installiert wurden kann man die Funktionalität von GPSD mit folgendem Kommando überprüfen.

gpsd -D 5 -N -n /dev/ttyACM0

Dieses Kommando startet GPSD nicht im Hintergrund, wodurch die empfangenen Werte ständig auf der Konsole ausgegeben werden.

GPS Daten loggen mit gpxlogger

Für das Loggen von GPS-Daten kann man das Programm gpxlogger verwenden, welches in dem Paket gpsd-clients enthalten ist.

Zuerst muss gpsd mit dem passenden Device gestartet werden, zum Beispiel gpsd /dev/ttyACM0.Danach wird gpxlogger mit folgendem Kommando gestartet.

gpxlogger -i 5 localhost:2947 > LOG.gpx


Wichtig hierbei ist, dass die Datei LOG.gpx erst gespeichert wird, sobald man das Programm gpxlogger mit STRG+C beendet oder ein SIGINT-Signal (Wert 2) mithilfe von kill schickt.

kill -2 PID-vom-gpxlogger

Grafische Ausgabe der geloggten Daten

Die grafische Ausgabe der GPX-Datei kann entwedwer auf einem PC/Laptop, mithilfe von Kartenprogrammen wie Google Earth, Merkaartor, oder GPX-Viewer erfolgen, oder direkt im Internet unter:

http://www.maplorer.com/view_gpx_3D.html

Merkaartor kann man mit apt-get installieren und GPX-Viewer muss kompiliert werden. Die Methode mit maplorer ist die momentan komfortabelste möglichkeit seine geloggten GPS-Daten zu betrachten. Dazu muss einfach die angelegte .gpx-Datei angegeben werden.

Auftretende Fehler vermeiden

Um einigen Fehler aus dem Weg zu gehen, sollte man, bevor GPSD das erste mal gestartet wird zuerst das socketfile (/var/run/gpsd.sock) löschen. Die genauen Hintegründe sind noch nicht bekannt

In anderen Sprachen