Moduł GPS w OpenWrt

Moduły GPS we wpółczenym swiecie można znaleźć w telefonach, samochodach, dlaczego nie zastosować ich w routerze :-) Chociazby do sychronizowania czasu :-)

Troche o sprzęcie

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.

Niezbędne moduły/programy

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

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

Sprawdzamy działanie GPSa

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.

Zastosowania

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
usb/gps.txt · ostatnio zmienione: 2010/03/14 09:57 przez arteq
CC Attribution-Noncommercial-Share Alike 3.0 Unported
www.chimeric.de Valid CSS Driven by DokuWiki Recent changes RSS feed Valid XHTML 1.0
Profesjonalny Hosting