jueves, septiembre 12

Raspberry Pi GPS BU-353-S4

Bueno el objetivo principal es conseguir que el GPS BU-353-S4 que muestro a continuación funcione en el RPi y posteriormente buscar la manera de posicionar la longitud y latitud que nos regresa en un mapa. Es un GPS BU-353-S4 conector USB.



Este GPS BU-353-S4 incluye un CD de configuración para el Windows pero no lo ocupamos,; Antes de conectar ejecutamos el código sudo lsusb para ver que dispositivos se encuentran conectados. Ahora bien conectamos el GPS BU-353-S4 y tecleamos nuevamente el comando sudo lsusb.


Identificamos cual es el dispositivo que no se encontraba conectado antes de haber ejecutado por segunda vez el comando. En mi caso es el siguiente:

Bus 001 Device 009: ID 067b:2303 Prolific Technology, Inc. PL2303 Serial Port

Si verificas en el /var/log/syslog notaras que tiene creado el puerto como /dev/ttyUSB0 como el primer puerto serial.

Usando el Raspberry Pi como un GPS BU-353-S4

Ahora para recibir los datos de los satélites, necesitamos instalar unos repositorios disponibles para linux que se llaman gpsd para tener el cliente y servidor para el GPS BU-353-S4 ejecutando el siguiente comando:

sudo apt-get install gpsd gpsd-clients python-gps

después necesitamos iniciar el demonio:

sudo gpsd /dev/ttyUSB0 -F /var/run/gpsd.sock

Ignora cualquier mensaje que te arroje la consola o los archivos log, veras mensajes relacionados con el IPv6 también puedes ignorar eso.

Ver que hay en la nube y tu posición

Primero debes saber que el GPS BU-353-S4 no sirve en interiores, ya que necesita una vista clara del cielo así que para esto he puesto la antena del GPS BU-353-S4  cerca de una puerta abierta. Una de las ventajas de este GPS BU-353-S4 es que tiene un Super-cohesiva magnética por lo tanto me permite montarlo aquí:



Ahora ya que posicionamos el GPS BU-353-S4 o el RPi cerca de alguna ventana o un lugar donde pueda recibir una señal aceptable el GPS BU-353-S4 ejecutamos el siguiente comando:

sudo cgps -s

Lo que hace la bandera -s es decirle al GPS BU-353-S4 que no escriba los datos en bruto, así como los datos procesados. Y conseguiremos la siguiente salida:

NOTA!!!: Si les muestra alguna alerta de timeout al intentar ejecutar el cgps -s, intenten darle permisos al gps con 

sudo chmod 775 /dev/ttyUSB0



Notaras que yo estoy recibiendo información de 10 satelites. Las lineas Err te dicen el error en tu posición. Si lo llegas a notar las lineas Err llegan a cambiar a cada segundo o por lo menos aproximadamente. El 3D Fix le dice que tiene suficientes datos para una solución 3D en su localización (la altitud, por ejemplo). 

También es posible manejar el X-Windows; En mi caso me abstengo por hacerlo y explicarlo para que empecemos a acostumbrarnos al ambiente consola y evitar que el Raspberry Pi tenga que trabajar muchos procesos innecesarios haciéndose mas lento. Pero si aun así deseas aprenderlo te recomiendo el link fuente de esta entrada ahí encontraras como usarlo en X-Windows.

Ajustando el tiempo del RPi a través del GPS BU-353-S4

Ahora que ya tenemos el GPS BU-353-S4 funcionando podemos hacer que el Raspberry PI lo use cada determinado tiempo. Para hacer esto necesitamos configurar el ntp para el uso de los satélites GPS BU-353-S4 como recurso del tiempo. Ahora ya debes de tener instalado el ntp en caso de que no lo este, entonces instalarlo con el comando:

sudo apt-get install ntp

Después necesitamos configurar  el archivo: sudo nano /etc/ntp.conf y agregarle algunas lineas para definir el GPS BU-353-S4. Esto puede ser antes o después de las lineas existentes que comienzan con el servidor.

#gps ntp
server 127.127.28.0 minpoll 4
fudge 127.127.28.0 time1 0.183 refid NMEA
server 127.127.28.1 minpoll 4 prefer
fudge 127.127.28.1 refid PPS


Ahora reinicia el ntp con el siguiente comando:

sudo service ntp restart

Ahora bien, si se consulta el servidor después de un tiempo, podrías verlo sincronizado con el GPS BU-353-S4. Ejecutando el comando:

sudo ntpq -p

¿No funciona el ntp con el GPS BU-353-S4?

En un principio notaras que el NTP no se conecta con el GPS BU-353-S4 en un primer momento; Parece como si empezara el gpsd sin el enlace al puerto serie. Por lo tanto tendrías que hacer lo siguiente:

$ sudo killall gpsd
$ sudo gpsd /dev/ttyUSB0 -F /var/run/gpsd.sock
$ sudo service ntp restart

Y con esto ya debe de estar funcionando bien.




Algunas veces mientras corre el  cgps y espera a que se haga una revisión también corrige esto. Aun no se por que sucede pero... pronto.

Link Fuente
[1]. http://blog.retep.org/2012/06/18/getting-gps-to-work-on-a-raspberry-pi/