Skytraq GPS Datalogger
FreizeitSkytraq-Datalogger
Geräte dieser Art konnte man damals wie auch heute noch in einigen Variationen bei den unterschiedlichsten Händlern finden. Die meisten sind sehr spartanisch und haben neben einem An- und Ausschalter noch ein paar Leuchtdioden. Man bekommt ein einfaches Gerät mit dem man einen GPS-Track aufzeichnen kann, des weiteren kann es noch als GPS Mouse verwendet werden. Neben dem USB-Anschluss hat mein Gerät noch die Möglichkeit Bluetooth zu verwenden.
Es gibt 3 Leuchtdioden: Eine grüne für GPS die blinkt sobald eine Position bestimmt werden konnte, eine rote Ladeanzeige und eine blaue Bluetooth LED. Unten ist ein Schiebeschalter zum an- bzw. ausschalten, oben ist die USB-Buchse.
Diese Geräte werden in den meisten Fällen mit der Software iTravel Tech PhotoTagger (http://www.itravel-tech.com/) ausgeliefert welche nur unter Windows läuft. Ob diese per wine (http://www.winehq.org) unter Linux ebenfalls funktioniert habe ich bisher noch nicht getestet.
Linux
Es sollte doch möglich sein das Gerät auch von Linux aus zu bedienen. So ein Tracker an für sich ist ja nichts außerordentlich spezielles und zunächst ein ganz normales USB-Gerät. Also einfach mal eingesteckt und nachgeschaut was passiert. lsusb brachte folgende Informationen zu Tage:
dr.disk@local:~$ lsusb Bus 007 Device 004: ID 067b:2303 Prolific Technology, Inc. PL2303 Serial Port Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub Bus 002 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub Bus 003 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub Bus 004 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub Bus 005 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub Bus 006 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub Bus 007 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub Bus 008 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Sieh an, sieh an: Ein PL2303. Der Tracker meldet sich als normaler serieller Anschluss am System. Dazu finden sich weitere Details im dmesg:
dr.disk@local:~$ dmesg | tail [23945.432040] usb 7-2: new full-speed USB device number 4 using uhci_hcd [23945.595067] usb 7-2: New USB device found, idVendor=067b, idProduct=2303 [23945.595073] usb 7-2: New USB device strings: Mfr=1, Product=2, SerialNumber=0 [23945.595076] usb 7-2: Product: USB-Serial Controller D [23945.595079] usb 7-2: Manufacturer: Prolific Technology Inc. [23945.598094] pl2303 7-2:1.0: pl2303 converter detected [23945.610122] usb 7-2: pl2303 converter now attached to ttyUSB0
Der Tracker ist verbunden als serieller Anschluss via /dev/ttyUSB0. Damit lässt sich doch schon mal was anfangen 🙂
Die Anschlusseinstellungen, vor allem die Baud-Rate, kann mit //stty -F /dev/ttyUSB0// ermittelt werden:
dr.disk@local:~$ stty -F /dev/ttyUSB0 speed 9600 baud; line = 0; min = 1; time = 0; -brkint -icrnl -imaxbel -opost -onlcr -isig -icanon -iexten -echo
Der Logger läuft also mit 9600 Baud. Diese Info reicht fürs Erste.
GPS Mouse
Um zu testen ob bzw. welche Daten der Logger im Moment liefert verwende ich gpsd und gpsmon (http://catb.org/gpsd/). gpsd habe ich einfach mit gpsd /dev/ttyUSB0 gestartet. gpsmon erzeugte im Anschluss daran folgende Ausgaben:
tcp://localhost:2947 NMEA0183>
┌──────────────────────────────────────────────────────────────────────────────┐
│Time: n/a Lat: n/a Lon: n/a │
└───────────────────────────────── Cooked TPV ─────────────────────────────────┘
┌──────────────────────────────────────────────────────────────────────────────┐
│ GPGGA GPGSA GPRMC GPVTG GPGSV │
└───────────────────────────────── Sentences ──────────────────────────────────┘
┌──────────────────┐┌────────────────────────────┐┌────────────────────────────┐
│Ch PRN Az El S/N ││Time: 075908.000 ││Time: 075908.000 │
│ 0 ││Latitude: 0000.0000 N ││Latitude: 0000.0000 │
│ 1 ││Longitude: 00000.0000 E ││Longitude: 00000.0000 │
│ 2 ││Speed: 000.0 ││Altitude: 0.0 │
│ 3 ││Course: 000.0 ││Quality: 0 Sats: 00 │
│ 4 ││Status: V FAA: N ││HDOP: 0.0 │
│ 5 ││MagVar: ││Geoid: 0.0 │
│ 6 │└─────────── RMC ────────────┘└─────────── GGA ────────────┘
│ 7 │┌────────────────────────────┐┌────────────────────────────┐
│ 8 ││Mode: A1 Sats: ││UTC: RMS: │
│ 9 ││DOP: H=0.0 V=0.0 P=0.0 ││MAJ: MIN: │
│10 ││TOFF: ││ORI: LAT: │
│11 ││PPS: ││LON: ALT: │
└────── GSV ───────┘└──────── GSA + PPS ─────────┘└─────────── GST ────────────┘
(40) $GPVTG,000.0,T,,M,000.0,N,000.0,K,N*02
Das sieht doch schon mal sehr schön aus! Als GPS Mouse funktioniert das Gerät bereits wunderbar. Ok, ich war in einem Gebäude, deswegen wurde keine Position ermittelt. Dies deckt sich mit der grünen Status-LED fürs GPS: Diese leuchtete noch permanent, d.h. es wurde noch keine Postion ermittelt.
Als GPS Mouse habe ich für dieses Gerät keine Verwendung. Ich bin Sportler. Von daher gesehen will ich eigentlich nur aufzeichnen wo ich war und nicht unterwegs nachschauen wo ich bin. Vielleicht ein anderes Mal, aber derzeit ist das für mich uninteressant.
dr.disk@local:~$ cat /dev/ttyUSB0 ,T,,M,000.0,N,000.0,K,N*02 $GPGGA,141514.000,0000.0000,N,00000.0000,E,0,00,0.0,0.0,M,0.0,M,,0000*69 $GPGSA,A,1,,,,,,,,,,,,,0.0,0.0,0.0*30 $GPRMC,141514.000,V,0000.0000,N,00000.0000,E,000.0,000.0,081013,,,N*79 $GPVTG,000.0,T,,M,000.0,N,000.0,K,N*02 $GPGGA,141515.000,0000.0000,N,00000.0000,E,0,00,0.0,0.0,M,0.0,M,,0000*68 $GPGSA,A,1,,,,,,,,,,,,,0.0,0.0,0.0*30 $GPRMC,141515.000,V,0000.0000,N,00000.0000,E,000.0,000.0,081013,,,N*78 $GPVTG,000.0,T,,M,000.0,N,000.0,K,N*02
skytraq-datalogger: Konfigurieren und Auslesen des Loggers
Auf der Suche nach einer Möglichkeit den Logger unter Linux zu konfigurieren und auszulesen bin ich auf skytraq-datalogger (http://code.google.com/p/skytraq-datalogger/) gestoßen.
Das Programm ist einfach gehalten und sollte sich auch auf neueren Linux-Systemen übersetzen lassen. Alternativ dazu, falls man die deb-Pakete nicht installieren will oder einen anderen Paketmanager verwendet, kann man mit alien -t <Paketname> das Paket in eine tar.gz-Datei umwandeln lassen. Die darin enthaltene skytraq-datalogger kann dann an jede beliebige Stelle kopiert werden.
Mit skytraq-datalogger –help gestartet erhält man die möglichen Optionen:
dr.disk@local:~$ ./skytraq-datalogger --help USAGE: ./skytraq-datalogger <OPTIONS> ACTION ACTION is one of: --info get information about software version and configuration --delete delete all track lists from the data logger --dump dump track lists to STDOUT --set-config change configuration of the data logger --set-baud-rate configure speed of the device's serial port --set-output-off disable output for GPS data --set-output-nmea enable output for GPS data in NMEA format --set-output-bin enable output for GPS data in binary format --update-agps upload to AGPS data on the device (needs internet connection) OPTIONS: --device <DEV> name of the device, default is /dev/ttyUSB0 --permanent write serial port speed to FLASH --baud-rate set baud-rate manually OPTIONS for configuration: --time <SECONDS> log every <SECONDS> seconds --max-time <SECONDS> --dist <METERS> log every <METERS> meters --max-dist <METERS> --speed <KMPH> only log if faster than <KMPH> km/h --max-speed <KMPH> --enable-log turn on logging --disable-log turn off logging --mode-fifo overwrite oldest entries when no space is left --mode-stop stop logging when no space is left
Mit –info kann man die Einstellungen sowie den noch freien Platz auslesen. Falls ein andere serieller Anschluss als ttyUSB0 verwendet wird muss dies per –device <Anschluss> mit übergeben werden.
steffen@ws-0908173:/tmp/usr/bin$ ./skytraq-datalogger --device /dev/ttyUSB0 --info kernel version: 1.3.3 -- ODM version: 1.4.5 -- revision: 2007-12-11 log_wr_ptr: 92636 total sectors: 254 sectors left: 235 max time: 3600 s min time: 5 s max distance: 1000 m min distance: 2 m max speed: 1000 km/h min speed: 0 km/h datalog enable: 1 log fifo mode: 0 AGPS enabled: 0 AGPS data left: none baud-rate: 9600 bps
Mit –dump kann der Inhalt des Speichers ausgegeben werden. Per skytraq-datalogger –dump > /tmp/test.gpx kann die Ausgabe in eine Datei umgeleitet werden. Diese Datei kann bereits von Tools wie google earth, viking oder gpsprune geöffnet werden. Jedoch sind die Tracks nicht in einzelne Bereich geschnitten.
Weitere interessante Optionen sind –erase mit dem man den Speicher wieder leeren kann bzw. –set-config mit dem die Einstellungen geändert werden.
gpsbabel: Eine Alternative zum auslesen der Tracks
Gpsbabel kann ebenfalls SkyTraq Geräte ansprechen. Infos hierzu finden sich in der Dokumentation: http://www.gpsbabel.org/htmldoc-development/fmt_skytraq.html.
- Eine Variante mit dem die Daten als gpx ausgelesen werden kann sieht so aus:
dr.disk@local:~$ gpsbabel -i skytraq -f /dev/ttyUSB0 -o gpx -F gpsbabel.gpx - Falls man die Daten auf dem Logger gleich noch mit löschen will kann dies mit erase erfolgen:
dr.disk@local:~$ gpsbabel -i skytraq,erase -f /dev/ttyUSB0 -o gpx -F gpsbabel.gpx - Wer wie ich erst mal alles lesen und später nachdem die Daten das erste Mal ausgewertet sind alles löschen möchte kann die Ausgabe abschalten:
dr.disk@local:~$ gpsbabel -i skytraq,erase,no-output -f /dev/ttyUSB0
Anstatt der Befehlszeile kann die GUI von gpsbabel analog dazu verwendet werden:
Weitere Schalter zu Skytraq und gpsbabel finden sich in obiger angegebener Dokumentation. Zu gpsbabel selbst lohnt sich der Blick in dessen Doku unter http://www.gpsbabel.org/readme.html.
Trennen der Tracks
Wer mehrere Tracks auf dem Logger hat und diese trennen will kann dies zum Beispiel hiermit tun (trennt pro Tag, andere Varianten siehe gpsbabel Handbuch):
gpsbabel -i skytraq -f /dev/ttyUSB0 -xtrack,split,title=“Track %D“ -o gpx -F gpsbabel.gpx
Falls wie hier nicht alle Tracks in einer Datei landen sollen kann mit //start// und //stop// gearbeitet werden um einzelne Bereiche separat aus zuschneiden. Für mehrere Dateien muss dieser Befehl dann entsprechend mehrfach verwendet werden:
gpsbabel -i skytraq -f /dev/ttyUSB0 -xtrack,start=20130709,stop=20130711 -o gpx -F gpsbabel.gpx
AGPS – schnellere Initialisierung nach dem Start
Das lästigste bei diesen Geräten dürfte die lange Zeitspanne bis zur ersten Positionsbestimmung sein. Mit AGPS wird diese drastisch verkürzt. Ebenso berichten viele Benutzer, dass die Empfangsqualität dadurch deutlich besser wird. Infos zu AGPS gibt es zum Beispiel hier: https://en.wikipedia.org/wiki/Assisted_GPS.
Damit dies funktioniert muss man den Almanach im Gerät aktualisieren. Diesen Schritt sollte man regelmäßig wiederholen damit stets aktuelle Daten hinterlegt sind.
skytraq-datalogger
Die notwendigen Schritte kann man zum Beispiel mit dem skytraq-datalogger durchführen. Falls es nicht klappen sollte: Gerät aus- und wieder einschalten und nochmals probieren.
dr.disk@local:~$ skytraq-datalogger --update-agps Downloading AGPS data from SkyTraq's FTP-server... Uploading AGPS data to GPS device... 7% done 14% done 21% done 28% done 35% done 42% done 48% done 55% done 62% done 69% done 76% done 83% done 90% done 97% done Upload completed.
Sparkfun Forum
Im Internet habe ich noch folgendes gefunden: https://forum.sparkfun.com/viewtopic.php?p=81423. Hier wird ein kleines c-Programm gezeigt welches ebenfalls den Almanach aktualisieren können soll. Das Tool ist sehr einfach gehalten und sollte sich leicht an die eigenen Anforderungen anpassen lassen.
Die benötigte Almanach-Datei kann zum Beispiel mit wget geholt werden:
wget ftp://skytraq:skytraq@60.250.205.31/ephemeris/Eph.dat
Windows
Unter Windows kann die mitgelieferte Software verwendet werden. Alternativ müsste zumindest der Teil mit gpsbabel ebenfalls funktionieren. Versuche ob die obigen Tools direkt oder per Cygwin laufen überlasse ich jedem selbst 😀