GPS USB para Raspberry

Hace tiempo un amigo me regalo un GPS con conexión mediante USB. Como muchas cosas ha dormido en el cajon de los proyectos. Al abrirlo encontré este dispositivo y pensé en darle alguna utilidad.

En algunas ocasiones utilizo la raspberry en aplicaciones que no están constantemente conectadas a internet. Y como necesitaba una fuente de reloj fiable, decidí hacerlo mediante un GPS.

En esta primera parte, conectaremos el GPS veremos los datos que se recogen, en la segunda parte, crearemos el servidor NTP.

Conectamos el Receptor USB  a un puerto y comprobamos si lo ha detectado, con la orden lusb

Deberíamos tener una respuesta del tipo:

Lo ha detectado como un dispositivo Prolific Technology y lo ha configurado como un puerto serie.

Si buscamos  en /var/log/syslog, vemos que ha  creado el puerto como /dev/ttyUSB0, ya que es el primer puerto serie.

El siguiente paso es conseguir que el pi reciba los datos de los satélites. Hay un conjunto de herramientas denominado gpsd, los cuales instalaremos.

A continuación, iniciamos el demonio:

Ignoramos cualquier mensaje en el terminal o en los archivos de registro.

editamos /etc/default/gpsd 

Añadimos a ese fichero las siguientes lineas:

# Default settings for the gpsd init script and the hotplug wrapper.

# Start the gpsd daemon automatically at boot time

START_DAEMON=»true»

# Use USB hotplugging to add new USB devices automatically to the daemon

USBAUTO=»false»

# Devices gpsd should collect to at boot time.

# They need to be read/writeable, either by user gpsd or the group dialout.

DEVICES=»/dev/ttyUSB0″

# Other options you want to pass to gpsd

GPSD_OPTIONS=»» 

#tried -F, -n in here too – no difference

GPSD_SOCKET=“/var/run/gpsd.sock»

Reiniciamos el sevicio

Comprobación que recibe datos

Ejecutamos la orden: cgps

De esta forma escribe los datos procesados, mostrándo la siguiente pantalla.

Aquí puede ver que está recibiendo de 7 satélites y que tiene la hora y su ubicación. La sección 3D FIX dice que tiene suficientes datos para una corrección 3D en su ubicación (es decir: Altitud, Longitud, Latitud, Velocidad). Las líneas Err le indican el error en su posición. Los valores de Err cambian cada segundo más o menos.