Et mål med min RPi var å teste ut om jeg kunne bruke en GPS-dongle for å hente ut informasjon om lokasjon, fart og høyde osv. Klarer jeg det burde det ikke være noe problem å sende det via SMS for å rapportere evt. bevegelse eller noe sånt.
Da er det på tide å teste om det er mulig å få kontakt med GPS-dongelen min. Det enkleste er å bare plugge den inn og se hva som skjer.
Jeg plugget GPS receiver i en ledig port på min PiHub, og sjekket i loggen (/var/log/messages) om noe ble rapportert, og sannelig dukket det opp treff der:
# tail -20 /var/log/message
Feb 7 23:18:13 raspberrypi kernel: [ 9701.726689] usb 1-1.3.2: new full-speed USB device number 7 using dwc_otg Feb 7 23:18:13 raspberrypi kernel: [ 9701.832322] usb 1-1.3.2: New USB device found, idVendor=067b, idProduct=2303 Feb 7 23:18:13 raspberrypi kernel: [ 9701.832361] usb 1-1.3.2: New USB device strings: Mfr=1, Product=2, SerialNumber=0 Feb 7 23:18:13 raspberrypi kernel: [ 9701.832381] usb 1-1.3.2: Product: USB-Serial Controller D Feb 7 23:18:13 raspberrypi kernel: [ 9701.832399] usb 1-1.3.2: Manufacturer: Prolific Technology Inc. Feb 7 23:18:13 raspberrypi kernel: [ 9701.938148] usbcore: registered new interface driver pl2303 Feb 7 23:18:13 raspberrypi kernel: [ 9701.938347] usbserial: USB Serial support registered for pl2303 Feb 7 23:18:13 raspberrypi kernel: [ 9701.938486] pl2303 1-1.3.2:1.0: pl2303 converter detected Feb 7 23:18:13 raspberrypi kernel: [ 9701.950444] usb 1-1.3.2: pl2303 converter now attached to ttyUSB3
Ergo ble GPS-receiveren registrert, og den kan adresseres som /dev/ttyUSB3.
Enn så lenge får jeg ikke gjort noe fornuftig med denne informasjonen, så jeg må installere noen GPS-programmer og -biblioteker for å få brukt dette til noe fornuftig:
# apt-get install gpsd gpsd-clients python-gps
En liste med programvarepakker blir installert.
Så må programmet som kommuniserer med GPSen startes. Kommandoen spesifiserer hvilken port som skal brukes, og hvilken fil som skal fungere som «socket» (for å kommunisere med enheten):
# gpsd /dev/ttyUSB3 -F /var/run/gpsd.sock
Du får ingen tilbakemelding på denne kommandoen hvis alt gikk ok.
Nå er det på tide å sjekke om jeg får lest ut noe fornuftig fra GPS’en. Dette gjøres med kommandoen cgps:
# cgps -s
Følgende informasjon vises hos meg:
┌───────────────────────────────────────────┐ │ Time: 2014-02-10T22:56:51.000Z │ │ Latitude: 5X.YYYYYY N │ │ Longitude: 1X.YYUUUU E │ │ Altitude: 535.9 ft │ │ Speed: 0.0 mph │ │ Heading: 0.0 deg (true) │ │ Climb: 0.0 ft/min │ │ Status: 3D FIX (324 secs) │ │ Longitude Err: +/- 43 ft │ │ Latitude Err: +/- 88 ft │ │ Altitude Err: +/- 155 ft │ │ Course Err: n/a │ │ Speed Err: +/- 121 mph │ │ Time offset: 1.089 │ │ Grid Square: JO59kw │ └───────────────────────────────────────────┘ ┌─────────────────────────────────┐ │PRN: Elev: Azim: SNR: Used: │ │ 21 45 174 19 Y │ │ 2 08 042 13 Y │ │ 23 11 309 26 Y │ │ 31 34 220 28 Y │ │ 13 14 340 29 Y │ │ 29 59 087 27 Y │ │ 5 25 066 17 N │ │ 16 24 297 21 N │ │ │ └─────────────────────────────────┘
Boksene oppdateres hvert sekund, og de vises egentlig ved siden av hverandre, men kolonnebredden på bloggen gjorde at jeg viser de under hverandre. Første boks viser min posisjon, fart og høyde, mens den andre boksen viser informasjon om satelittene GPS-dongelene plukker opp.
Konklusjon så langt: Det var ikke noe problem å hente ut automatisk oppdatert informasjon fra GPS-dongelen. Det som gjenstår er å hente ut et valgfrie verdier ved behov, så jeg f.eks. kan sende en SMS med posisjon og fart hvis enheten begynner å flytte på seg.