Aunque instalar un GPS en una Raspberry Pi no es complicado, hacerlo sin recurrir a algún tipo de manual puede convertir una proyecto muy divertido en una experiencia frustrante.
Para evitar que os ocurra esto último he decidido publicar este manual / tutorial explicándolo paso a paso sin ningún margen de error.
Lo primero que necesitaréis es un dispositivo GPS, los hay de varios tipos. En mi caso me decidí por uno del tipo HAT por ser la solución más compacta, al ir pinchado directamente sobre el puerto GPIO de la Raspberry, además de contar con PPS, una funcionalidad imprescindible si pensáis en usar ese equipo como servidor NTP.
Los del tipo HAT, conectados al puerto GPIO, transmiten la información a través del puerto serie ttyAMA0, mientras que los externos, conectables a través del USB lo hacen através del puerto USB0. En este ejemplo me centro en el tipo HAT (ttyAMA0).
¿CUÁL ELEGIR?
De entre las opciones disponibles he probado tanto el de Adafruit como el HAB de Uputronics , con resultados muy parecidos, aunque mi preferido ha sido este último.
Respecto a la antena, hay muchas disponibles por precios que van desde los 15 a los 30 euros. Si finalmente optáis por comprar el GPS HAB de Uputronics tenéis la opción de comprar una en su misma Web de Nevis computers, ahorrando gastos de envío.
INSTALACIÓN Y CONFIGURACIÓN DEL SOFTWARE
Actualizaremos el sistema con:
sudo apt-get update
sudo apt-get dist-upgrade
sudo rpi-update
Reiniciándolo a continuación para que los cambios tomen efecto con:
sudo reboot
Instalaremos los paquetes necesarios para el correcto funcionamiento del gps y el acceso a las librerías necesarias:
sudo apt-get install pps-tools
sudo apt-get install libcap-dev
sudo apt-get install gpsd gpsd-clients python-gps
Después editaremos el fichero config.txt:
sudo nano /boot/config.txt
Y al final del fichero añadiremos:
dtoverlay=pps-gpio,gpiopin=18
Para guardar y salir pulsaremos ctrl + x , pulsaremos Y y enter
Seguidamente editaremos el fichero /etc/modules:
sudo nano /etc/modules
y añadiremos la siguiente línea
pps-gpio
Para guardar y salir pulsaremos ctrl + x , pulsaremos Y y enter
Forzaremos el reinicio del sistema:
sudo reboot
Editaremos su fichero de configuración:
sudo nano /etc/default/gpsd
Al abrirlo aparecen los paremetros de configuración que al margen de los comentarios han de quedar así:
START_DAEMON=»true»
GPSD_OPTIONS=»-n»
DEVICES=»/dev/ttyAMA0″
USBAUTO=»true»
GPSD_SOCKET=»/var/run/gpsd.sock»
Una mez modificado, grabaremos como de costumbre, ctrl +x , Y, y Enter.
Reiniciaremos el sistema con
sudo reboot
A continuación teclearemos
sudo gpsd /dev/ttyAMA0 -F /var/run/gpsd-sock
Y, dando por hecho que el gps tiene cobertura, probaremos que el gps funciona y recibe señal:
Para ver que el gps envia información al puerto:
sudo cat /dev/ttyAMA0
saldrán ristras de caracteres en las que se puede leer fechas, horas, coordenadas… no os asustéis es totalmente normal, confirmando el buen funcionamiento y recepción del Gps.
Interrumpiremos la ejecución de la prueba con ctrl + c
Seguido comprobaremos los datos que llegan a la aplicación gpsd con:
cgps -s
deberemos ver un cuadro en el que figurarán, fecha, hora, latitud, longitud…
¿CÓMO GESTIONAR LA INFORMACIÓN A TRAVÉS DE UN PROGRAMA?
Con el gps funcionando y recibiendo datos tan solo nos queda empezar a gestionar la información recibida, para lo cual os adjunto un pequeño script de Python que os servirá para recabar la información más importante tratarla con una finalidad u otra.
Os recomiendo crearlo con:
sudo nano testgps.py
pegar en su interior el siguiente script:
import gps session = gps.gps("localhost", "2947") session.stream(gps.WATCH_ENABLE | gps.WATCH_NEWSTYLE) x= 1 while x == 1: report = session.next() if report['class'] == 'TPV': if hasattr(report, 'time'): print 'Hora: ' + str(report.time) if hasattr(report, 'lat'): print 'Latitud: ' + str(report.lat) if hasattr(report, 'lon'): print 'Longitud: ' + str(report.lon) if hasattr(report, 'speed'): print 'Velocidad: ' + str(report.speed) if hasattr(report, 'track'): print 'Rumbo: ' + str(report.track) if hasattr(report, 'head'): print report.head x= 0
Pulsando ctrl + x para guardar los cambios, pulsando a continuación Y para grabarlos.
Para ejecutarlo bastará con:
python testgps.py
Mostrando algo muy similar a esto:
Espero que este post os haya sido útil. Si tenéis cualquier problema o necesitáis cualquier aclaración no dudéis en contactarme.
Hasta la próxima.
Salu2
Santi