Inhaltsverzeichnis

GPS Datenerfassung und Auswertung

GPS-Logger I-BLUE 747 Für die Erfassung der GPS-Daten verwende ich einen GPS-Logger I-BLUE 747 - haupsächlich zum Festhalten meiner Rad - und Moppedtouren. Natürlich verwende ich den Logger auch um die Daten bei http://www.openstreetmap.org abzugleichen und ggf. zu ergänzen und korrigieren. Der Logger hat zwar auch eine Bluetooth Schnittstelle, doch zum Auslesen verwende ich die USB-Schnittstelle, da diese quasi out of the box direkt unterstützt wird.

Aug 22 19:19:24 compaq-evo kernel: usb 2-1: new full speed USB device using uhci_hcd and address 2
Aug 22 19:19:24 compaq-evo kernel: usb 2-1: configuration #1 chosen from 1 choice
Aug 22 19:19:24 compaq-evo kernel: usbcore: registered new driver usbserial
Aug 22 19:19:24 compaq-evo kernel: drivers/usb/serial/usb-serial.c: USB Serial support registered for generic
Aug 22 19:19:24 compaq-evo kernel: usbcore: registered new driver usbserial_generic
Aug 22 19:19:24 compaq-evo kernel: drivers/usb/serial/usb-serial.c: USB Serial Driver core
Aug 22 19:19:24 compaq-evo kernel: drivers/usb/serial/usb-serial.c: USB Serial support registered for cp2101
Aug 22 19:19:24 compaq-evo kernel: cp2101 2-1:1.0: cp2101 converter detected
Aug 22 19:19:24 compaq-evo kernel: usb 2-1: reset full speed USB device using uhci_hcd and address 2
Aug 22 19:19:24 compaq-evo kernel: usb 2-1: cp2101 converter now attached to ttyUSB0
Aug 22 19:19:24 compaq-evo kernel: usbcore: registered new driver cp2101
Aug 22 19:19:24 compaq-evo kernel: drivers/usb/serial/cp2101.c: Silicon Labs CP2101/CP2102 RS232 serial adaptor driver v0.07

Der Datenlogger ist nach dem Einstecken über die Gerätedatei /dev/ttyUSB0 ansprechbar.

Auslesesoftware MTKBabel

Zum Auslesen des Datenspeichers unter Linux verwende ich BTKBabel ein kleines Perl-Script. Das Programmarchiv und findet man unter folgender Seite.

benötigte Perl-Pakete nachinstallieren

Damit des Perlscript den Datenlogger richtig ansprechen kann, werden noch ein paar Perl-Pakete benötigt. Wir installieren daher die Pakete perl-Device-SerialPort, perl-DateTime und perl-TimeDate via yum.

yum install perl-Device-SerialPort perl-DateTime perl-TimeDate

MTKBabel installieren

Gemäß den Quellangaben bei rigacci holen wir uns erst einmal das benötigte Programmpaket via wget und entpacken das Archiv an die gewohnte Stelle im System.

cd /usr/local/src/

wget http://www.rigacci.org/wiki/lib/exe/fetch.php/tecnica/download/local_software/mtkbabel-0.7.tar.gz

tar zxvf mtkbabel-0.7.tar.gz
mtkbabel-0.7/
mtkbabel-0.7/mtkbabel
mtkbabel-0.7/MtkExtensionsv1.xsd
mtkbabel-0.7/README
mtkbabel-0.7/changelog
mtkbabel-0.7/copyright
mtkbabel-0.7/mtkbabel.1

Anschließend verlinken wird das Perlscript, damit der User das Script direkt aufrufen kann.

ln -s /usr/local/src/mtkbabel-0.7/mtkbabel /usr/local/bin/

Nun können wir das erste mal mtkbabel aufrufen und uns die Programmversion über die Option -v ausgeben lassen.

[luser@host ~]$ mtkbabel -v

MTKBabel Version 0.7

User Berechtigungen

Damit der User auch beim Aufruf von mtkbabel auf die Gerätedatei /dev/ttyUSB0 zugreifen kann, benötigt er noch die entsprechenden Lese- und Schreibrechte.

[root@host bin]# ll /dev/ttyU*
crw-rw---- 1 root uucp 188, 0 23. Aug 20:19 /dev/ttyUSB0

Wir eränzen also die Gruppe uucp um unseren User django.

usermod -G uucp luser 

Ohne Schreib-/Leseberechtigungen würde der Aufruf von mtkbabel mit folgender Fehlermeldung quittiert werden:

[luser@host ~]$ mtkbabel -p /dev/ttyUSB0 -f gpsdata_080822 -t -w
Can't call method "baudrate" on an undefined value at /usr/local/bin/mtkbabel line 1647.

Programmaufruf

Das Ausleseprogramm mtkbabel verfügt über folgende Programmoptionen.

[django@host ~]$ mtkbabel -h
Usage: mtkbabel [options]
Options:
    -a                       Read all the log memory (overlapped data)
    -b filename.bin          Do not read device, read a previously saved .bin file
    -d debug_level           Debug level: 0..7
    -E                       Erase data log memory
    -f filename              Base name for saved files (.bin and .gpx)
    -h                       Print this message and exit
    -l {on|off}              Turn loggin ON/OFF
    -m {stop|overlap}        Set STOP/OVERLAP recording method on memory full
    -o log_format            Enable or disable log fields (FIELD1,-FIELD2,...), available fields:
                             UTC,VALID,LATITUDE,LONGITUDE,HEIGHT,SPEED,HEADING,DSTA,DAGE,PDOP,HDOP,VDOP
                             NSAT,SID,ELEVATION,AZIMUTH,SNR,RCR,MILLISECOND,DISTANCE
    -p port                  Communication port, default: /dev/ttyUSB0
    -R                       Recover from disabled log: erase data and reset recording criteria
    -r time:distance:speed   Set logging criteria (zero to disable):
                             every 1-999 seconds, every 10-9999 meters, over 10-999 km/h
    -s speed                 Serial port speed, default 115200 baud
    -t                       Create a gpx file with tracks
    -v                       Print MTKBabel version and exit
    -w                       Create a gpx file with waypoints

Example:
    Download traks and waypoints from GPS device, creating the
    following files: gpsdata.bin, gpsdata_trk.gpx and gpsdata_wpt.gpx.

    mtkbabel -s 115200 -f gpsdata -t -w

Datenlogger auslesen

Das Auslesen des Loggers erfolgt über folgenden Aufruf.

[luser@host GPS-Traces]$ mtkbabel -p /dev/ttyUSB0 -f gpsdata_datum_080823 -t -w 
MTK Test OK
MTK Firmware: Version: 1, Release: B-core_1.1, Model ID: 0002
Log format: (0002002F) UTC,VALID,LATITUDE,LONGITUDE,SPEED,RCR
Size in bytes of each log record: 30 + (0 * sats_in_view)
Logging TIME interval:       1.00 s
Logging DISTANCE interval:   0.00 m
Logging SPEED limit:         0.00 km/h
Recording method on memory full: (2) STOP
Log status: (010100000100) AUTOLOG_OFF,STOP_WHEN_FULL,ENABLE_LOG,NEED_FORMAT
WARNING! Log status NEED_FORMAT, log data is not valid!
Next write address: 512 (0x00000200)
Number of records: 0
Memory health status (failed sectors mask): FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
>> Retrieving 65536 (0x00010000) bytes of log data from device...
Saved log data:   0.00%
Saved log data:   3.12%
Saved log data:   6.25%
Saved log data:   9.38%
Saved log data:  12.50%
Saved log data:  15.62%
Saved log data:  18.75%
Saved log data:  21.88%
Saved log data:  25.00%
Saved log data:  28.12%
Saved log data:  31.25%
Saved log data:  34.38%
Saved log data:  37.50%
Saved log data:  40.62%
Saved log data:  43.75%
Saved log data:  46.88%
Saved log data:  50.00%
Saved log data:  53.12%
Saved log data:  56.25%
Saved log data:  59.38%
Saved log data:  62.50%
Saved log data:  65.62%
Saved log data:  68.75%
Saved log data:  71.88%
Saved log data:  75.00%
Saved log data:  78.12%
Saved log data:  81.25%
Saved log data:  84.38%
Saved log data:  87.50%
Saved log data:  90.62%
Saved log data:  93.75%
Saved log data:  96.88%
Total record count: 0

Es werden damit folgende Dateien in unserem Zielverzeichnis angelegt.

[luser@host GPS-Traces]$ ll
insgesamt 88
-rw-rw-r-- 1 luser luser  65536 23. Aug 22:50 gpsdata_datum_080823.bin
-rw-rw-r-- 1 luser luser  665 23. Aug 22:50 gpsdata_datum_080823_trk.gpx
-rw-rw-r-- 1 luser luser  665 23. Aug 22:50 gpsdata_datum_080823_wpt.gpx

Datenlogger löschen

Das Löschen des Datenspeichers unserers GPSloggers erfolgt über:

[luser@compaq-evo GPS-Traces]$ mtkbabel -p /dev/ttyUSB0 -E
MTK Test OK
MTK Firmware: Version: 1, Release: B-core_1.1, Model ID: 0002
>> Erasing log memory...

Der Löschvorgang wird unter Umständen zwar mit folgender fehlermeldung quittiert:

ERROR: Reading from device: Nicht erlaubter Seek at /usr/local/bin/mtkbabel line 610.

Der Speicherinhalt wurde aber erfolgreich gelöscht und der Logger steht für weitere Traces wieder zur Verfügung.