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. Si sois clientes de Amazon podéis comprarla en el este link.
Si optáis por comprar el gps de Adafruit necesitaréis comprar el siguiente adaptador
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
Hola, tengo una Raspberry Pi 3 y te comento mi problema.
He hecho todos los pasos y cuando uso el comando sudo cat /dev/ttyAMA0 si que me sale que la raspberry esta recibiendo datos del GPS ( un modulo de ublox NEO m6)
pero cuando uso cgps -s me aparece N/A y al rato time out y se cierra. No se a que se debe ya que si que esta recibiendo datos y cuando uso sudo cat /dev/ttyAMA0 veo coordenadas y tiempos etc. osea que el GPS si que tiene señal. Puedes ayudarme?
Me gustaMe gusta
Hola, si haces el cat y recibe los datos es porque efectivamente está conectado y los datos se reciben correctamente pero por algún motivo no se reenvían al gpsd.
No conozco ese modelo de gps, ¿cómo se conecta a la Raspberry (Hat usando el gpio/ USB / Serie)?
Salu2
Me gustaMe gusta
Hola hice los pasos como decia hasta que llego a lo de sudo gps /dev/ttyAMAo… etc. tengo problemas, cuando pongo sudo cat etc me dice que no hay nada en el directorio, lo estoy haciendo con raspbian y modulo gps neo m6, esta conectado en el puerto donde estan los pines
Me gustaMe gusta
Hola Marcos, buenos días,
prueba lo siguiente:
ejecuta raspi-config, y en Advanced Options-> A8 Serial
y activa el acceso a la consola a través del puerto serie marcando ‘SI‘, a continuación sal de la aplicación indicando que SI queremos reiniciar el sistema.
Y ya me dices como te ha ido.
Salu2
Santi
Me gustaMe gusta
Hola Marcos.
he seguido todos los pasos pero me da varios problemas. en ttyAMA0 no me aparece nada.
en cgps -s tampoco.
me he dado cuenta de que no ha cargado el paquete gpsd-client.
Que hago????
Muchas gracias!!!
Me gustaMe gusta
Hola,
¿Qué modelo de Raspberry estás usando? ¿El gps es usb o tipo hat (gpio)?
Salu2
Me gustaMe gusta
Hola yo igual tengo el mismo problema el gps es usb
Me gustaMe gusta
Hola Isaac, buenos días,
A ver si puedo ayudarte. Por favor dime que modelo de Raspberry usas, marca de gas, y si has seguido todos los pasos.
Este post es sobre como instalar un gps, pero quizás te vaya mejor seguir los pasos de otro post parecido que hice sobre como Convertir una Raspberry Pi en un servidor NTP Stratum 1, ya que allí usaba un gps usb.
Te adjunto el link https://alteageek.com/convertir-una-raspberry-pi-1-en-servidor-ntp-stratum-1/
Échale un vistazo y con lo que sea ya me dices.
Saludos,
Santi
Me gustaMe gusta