Installare un ricevitore GPS su Linux
Esistono ormai diverse interfacce che si collegano al computer via USB o
seriale e permettono di ricevere le informazioni dai satelliti GPS per
ottenere la propria posizione sulla Terra. Tali ricevitori hanno ovviamente
un maggior senso di esistere se vengono collegati ad un portatile o ad un PDA.
L'installazione non è particolarmente impegnativa, in quanto il
dispositivo che viene associato a tali interfacce è sempre di tipo
seriale, conformemente allo standard
standard NMEA 0183;
forse l'unico problema è
capire proprio il nome del dispositivo che viene creato nella directory
/dev, ma questo si può risolvere facilmente esaminando il log
di sistema quando andiamo a collegare l'interfaccia:
[~]# tail -f /var/log/messages
13:16:43 sonja kernel: hub.c: new USB device 02:09.1-2, assigned address 2
13:16:43 sonja kernel: usb.c: USB device 2 (vend/prod 0x67b/0x2303) is not
claimed by any active driver.
13:16:46 sonja /etc/hotplug/usb.agent: Setup pl2303 for USB product 67b/2303/202
13:16:46 sonja kernel: usb.c: registered new driver serial
13:16:46 sonja kernel: usbserial.c: USB Serial support registered for Generic
13:16:46 sonja kernel: usbserial.c: USB Serial Driver core v1.4
13:16:46 sonja kernel: usbserial.c: USB Serial support registered for PL-2303
13:16:46 sonja kernel: usbserial.c: PL-2303 converter detected
13:16:46 sonja kernel: usbserial.c: PL-2303 converter now attached to ttyUSB0
(or usb/tts/0 for devfs)
13:16:46 sonja kernel: pl2303.c: Prolific PL2303 USB to serial adaptor driver v0.10
[~]# ls /dev/usb/tts/0
/dev/usb/tts/0
Sotto Linux per gestire direttamente il dispositivo associato al GPS viene
utilizzato un programma chiamato gpsd.
che mette poi a disposizione di tutte le applicazioni interessate le informazioni
ricavate dal ricevitore; questo porta a due vantaggi:
-
Il dispositivo seriale può essere gestito da un solo programma
per volta, quindi non sarebbe possibile avere ad esempio un navigatore
satellitare ed un programma di analisi della posizione dei satelliti
nello stesso tempo. In questa maniera invece possiamo eseguire tutti i
programmi che vogliamo, in quanto si collegano tutti al demone che
fornisce loro le informazioni che interessano.
-
Poiché gpsd mette a disposizione i dati utilizzando
connessioni TCP, è possibile condividere le informazioni fornite
dall'interfaccia GPS con più macchine, anche su Internet. In
questa maniera è possibile avere un computer che fornisce le
coordinate ed un altro che le elabora in maniera trasparente alle applicazioni.
Vediamo allora come eseguire gpsd: il programma non ha un file di
configurazione quindi dovremo passare le informazioni che ci interessano
direttamente come parametro. In linea di massima i parametri di default
per la configurazione della seriale sono corretti, a parte il dispositivo
da utilizzare, che andremo a modificare con il parametro -p. Vi metto
a disposizione lo script di init (tipo sconosciuto, 712 byte) che
utilizzo sul mio sistema con un
ricevitore USB: nel caso il dispositivo associato all'interfaccia sia
differente dalla prima seriale USB è sufficiente modificare la
definizione della variabile GPSDEVICE. Una volta collegato il
ricevitore GPS e mandato in esecuzione gpsd possiamo provare a
collegarci direttamente al demone per vedere se funziona tutto correttamente:
[root@sonja root]# telnet 192.168.4.31 2947
Trying 192.168.4.31...
Connected to 192.168.4.31 (192.168.4.31).
Escape character is '^]'.
s
GPSD,S=1
m
GPSD,M=3
p
GPSD,P=45.411208 12.263330
v
GPSD,V=0.470000
a
GPSD,A=52.900000
d
GPSD,D=05/02/2004 13:41:12
^]
telnet> q
Connection closed.
Come è possibile notare il demone mi ha risposto fornendo tutte le
informazioni da me richieste: in particolare utilizzando il comando s
ho chiesto lo stato del posizionamento, ovvero se ci sono sufficienti satelliti
in vista oppure se non è possibile stabilire la posizione, utilizzando
il comando m ho invece chiesto se il posizionamento è stato
effettuato in due o tre dimensioni, sempre in base al numero di satelliti
visibili. Ecco la lista dei comandi che accetta gpsd,
tratta direttamente dalla sua documentazione:
p Returns the current position in the form "P=%f %f".
d Returns the date in the form "D=%s".
a The current altitude as "A=%f".
v The current speed (velocity) as "V=%f".
s The gps status as "S=%d".
m The gps mode as "M=%d".
r Toggles 'raw' mode. Return "R=0" or "R=1"
g Returns six-digit Maidenhead grid square (like FN12fx)
A questo punto la parte server è a posto, possiamo provare ad installare
qualche client per gestire le informazioni che ci arrivano dal ricevitore GPS.
RIFERIMENTI
-
Sito molto interessante dove è possibile trovare moltissime informazioni
sullo standard NMEA 0183 e sul GPS in genere.
-
Il sito ufficiale di gpsd.
Conviene usare però quello fornito con GPSdrive o con altri software.
-
Lo script di init (tipo sconosciuto, 712 byte) per
eseguire automaticamente il demone gpsd in ambiente RedHat o Mandrake.
-
Il sito ufficiale di GPSdrive,
un ottimo programma di navigazione sotto Linux. Permette di scaricare le mappe da Internet e di
inserire waypoint anche da programmi esterni,