Installare un ricevitore GPS su LinuxEsistono 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:
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
|