Moduły GPS we wpółczenym swiecie można znaleźć w telefonach, samochodach, dlaczego nie zastosować ich w routerze
Chociazby do sychronizowania czasu
Poniższy opis wykonany jest na brcm63xx z kernelem 2.6. Moduł GPS to Trimble SQ podłączony pod popularny konwerter USB-Serial oparty na chipie Prolific 2303. W kernelu OpenWrt jest moduł dla tego konwetera, tak więc strona programowa jest załatwiona. Opis będzie działał na wszystkich architekturach oraz kernelach wpieranych przez OpenWrt.
Instalujemy moduły oraz daemon gpsd:
opkg update opkg install kmod-usb-serial-pl2303 opkg install gpsd
Po załadowaniu modułu pl2303 'dmesg' wyświeli się nam taki oto komunikat:
usbserial: USB Serial support registered for pl2303 usbcore: registered new interface driver pl2303 pl2303: Prolific PL2303 USB to serial adaptor driver
Podłączamy moduł GPS do portu USB,'dmesg' pokazuje lokalizację naszego modułu. Najcześciej /dev/ttyUSB0
usb 1-1.2: new full speed USB device using bcm63xx_ohci and address 3 usb 1-1.2: configuration #1 chosen from 1 choice pl2303 1-1.2:1.0: pl2303 converter detected usb 1-1.2: pl2303 converter now attached to ttyUSB0
Odpalamy gpsd, aby nie działał w tle(-N) oraz ze zwiekszona ilością komunikatów debug (-D 2).
gpsd -b -N -D 2 /dev/ttyUSB0
gpsd: launching (Version 2.39) gpsd: listening on port 2947 gpsd: Priority setting failed. gpsd: running with effective group ID 0 gpsd: running with effective user ID 0 gpsd: opening read-only GPS data source at '/dev/ttyUSB0' gpsd: speed 9600, 8N1 gpsd: garmin_gps Linux USB module not active. gpsd: gpsd_activate(1): opened GPS (7) gpsd: ntpd_link_activate: 0
Podłączamy się do routera w kolejnej sesji ssh/telnet i łączymy się do daemona 'gpsd' komendą:
telnet localhost 2947 lub nc localhost 2947
Wpisujemy komendÄ™
w=1
powinny pokazać nam się ramki NMEA w postaci:
GPSD,O=GGA 1253011485.000 0.005 54.XXXXXXX 22.XXXXXXXX 167.000 153.000 23.000 ? ? 0.000 ? ? ? 3 GPSD,O=GLL 1253011485.000 0.005 54.XXXXXXX 22.XXXXXXXX 167.000 153.000 23.000 ? ? 0.000 ? ? ? 3 GPSD,Y=GSV 1253011485.000 8:30 34 268 0 0:4 28 101 42 1:9 61 161 38 1:12 70 270 0 0:14 33 302 0 0:17 22 50 0 0:26 41 269 28 0:27 51 155 44 1:
Dokładną lokalizację zaiksowałem specjalnie
Jeżeli niemamy takich ramek musimy chwile odczekać możliwe, że GPS musi pobrać dane almanach(informacje o satelitach) co trwa sporo czasu czasami.
Zastosowań jest wiele. Chociażby kismet, i logowanie punktów dostępowych.
Kolejne to log z przebytej trasy. Podczas włączonego daemona 'gpsd', wydajemy komendę w czasie jazdy:
echo rw | nc localhost 2947 > trasa_warszawa-gdansk.dump
PosiadajÄ…c surowe ramki NMEA, za pomocÄ… 'gpsbabel' konwertujemy na 'gpx', format akceptowalny przez Google Maps oraz Google Earth.
gpsbabel -i nmea -f trasa_warszawa-gdansk.dump -o gpx -F trasa_warszawa-gdansk.gpx
