Logo PJ
Home
Arcade
Musica
Bicicletta
FabLab
Linux
DreamBox
Giochi
 
   Introduzione   Perle   Programmi   SSH   SAMBA   Firewall   GPS   WIFI   Jukebox   PCcar 

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,
Comments