Tutorial Raspberry Pi 3 - NEO-6M módulo GPS
Publicado: 29 May 2018, 15:11
El siguiente tutorial está realizado con una Raspberry Pi 3 con el sistema operativo Raspbian, utilizando una tarjeta microSD de 16 GB, y un módulo GPS NEO-6M, que podéis comprar en el siguiente enlace:
https://www.amazon.es/gp/product/B01N38 ... UTF8&psc=1
Este gps no es la gran cosa, pero para empezar funciona bastante bien. También deciros que no incluye jumpers, asi que si no tenéis os recomiendo que los compréis también.
La conexión de la Rasp con el módulo gps es la siguiente:
Raspberry PIN GPS PIN
2 – 5v VIN/VCC
6 – GND GND
8 – TX RX
10 – RX TX
En la foto adjunta podéis ver la conexión física.
Ahora que tenemos realizada la conexión hardware, vamos a modificar algunos archivos para que esto funcione.
Primero vamos a editar el archivo /boot/config.txt
Tenemos que añadir al final del documento lo siguiente:
Por defecto, el bluetooth utiliza el UART(AMA0), con esta configuración conseguiremos que el gps utilice el AMA0 y el bluetooth el S0.
Segundo paso, editar backup del fichero :
Realizamos una copia de seguridad por si las moscas. Reemplazamos el contenido del archivo por:
Reboot de la raspberry.
El siguiente paso es desactivar el servicio getty de la serial de la Pi, el comando evitará que comience de nuevo al reiniciar:
Reboot, otra vez.
Si queremos comprobar lo que nos entra por el gps, podemos realizar el siguiente comando:

Si vemos muchos valores con NULL, no os preocupéis, a este GPS le cuesta un poco pillar la señal del gps. Al encenderlo tarda un poco, cuando el módulo tenga una luz azul intermitente, querrá decir que tiene señal.
Ahora vamos a instalar un daemon para poder visualizar los datos de una forma más atractiva:
Tenga en cuenta que si usa Raspbian Jessie o una versión posterior, deberá deshabilitar un servicio systemd que gpsd instala. Este servicio está escuchado en un socket local y ejecuta gpsd cuando los clientes se conectan a él, sin embargo, también interferirá con otras instancias de gpsd que se ejecutan manualmente (como en esta guía). Deberá deshabilitar el servicio gpsd systemd ejecutando los siguientes comandos:
Si queremos volver a habilitarlo ejecutamos lo siguiente:
Para arrancar el programa ejecutamos:
Ahora si queremos testearlo, debemos ejecutar la siguiente orden:
La salida que obtendremos será parecida a la imagen que tenemos a continuación:

Si tienes algún problema y cgps siempre muestra 'NO FIX' en estado y luego cancela después de unos segundos, es posible que deba reiniciar el servicio gpsd. Puedes hacerlo a través de los siguientes comandos:
Si aún muestra 'GPS Timeout' o 'NO FIX', modifique el archivo /etc/default/gpsd como se muestra a continuación:
Luego reinicia. CGPS debería funcionar entonces.
NOTA: Si el receptor GPS es nuevo o no se ha utilizado durante un tiempo, es posible que necesite unos minutos para recibir señal. Necesita 3 satélites GPS para una corrección 2D (es decir, sin altura) o 4 satélites para una solución 3D Una vez arreglado, el LED '3D_FIX' parpadeará.
Espero haber ayudado a alguno!
Este tutorial forma parte de un proyecto en el cual hacemos un seguimiento del estado y localización de vehículos con una raspberry, el gps y un conector OBD, utilizando una api rest y una página web para visualizar los datos. El proyecto esta casi terminado y podéis encontralo en el github: https://github.com/joansalto/PTI-ProjectGPS
https://www.amazon.es/gp/product/B01N38 ... UTF8&psc=1
Este gps no es la gran cosa, pero para empezar funciona bastante bien. También deciros que no incluye jumpers, asi que si no tenéis os recomiendo que los compréis también.
La conexión de la Rasp con el módulo gps es la siguiente:
Raspberry PIN GPS PIN
2 – 5v VIN/VCC
6 – GND GND
8 – TX RX
10 – RX TX
En la foto adjunta podéis ver la conexión física.
Ahora que tenemos realizada la conexión hardware, vamos a modificar algunos archivos para que esto funcione.
Primero vamos a editar el archivo /boot/config.txt
Código: Seleccionar todo
$ sudo nano /boot/config.txt
Código: Seleccionar todo
dtparam=spi=on
dtoverlay=pi3-miniuart-bt
core_freq=250
enable_uart=1
force_turbo=1
Segundo paso, editar backup del fichero :
Código: Seleccionar todo
sudo cp boot/cmdline.txt boot/cmdline_backup.txt
sudo nano /boot.cmdline.txt
Código: Seleccionar todo
dwc_otg.lpm_enable=0 console=tty1 root=/dev/mmcblk0p2 rootfstype=ext4 elevator=deadline fsck.repair=yes rootwait quiet splash plymouth.ignore-serial-consoles
El siguiente paso es desactivar el servicio getty de la serial de la Pi, el comando evitará que comience de nuevo al reiniciar:
Código: Seleccionar todo
sudo systemctl stop serial-getty@ttyAMA0.service
sudo systemctl disable serial-getty@ttyAMA0.service
Si queremos comprobar lo que nos entra por el gps, podemos realizar el siguiente comando:
Código: Seleccionar todo
sudo cat /dev/ttyAMA0

Si vemos muchos valores con NULL, no os preocupéis, a este GPS le cuesta un poco pillar la señal del gps. Al encenderlo tarda un poco, cuando el módulo tenga una luz azul intermitente, querrá decir que tiene señal.
Ahora vamos a instalar un daemon para poder visualizar los datos de una forma más atractiva:
Código: Seleccionar todo
sudo apt-get install gpsd gpsd-clients python-gps
Tenga en cuenta que si usa Raspbian Jessie o una versión posterior, deberá deshabilitar un servicio systemd que gpsd instala. Este servicio está escuchado en un socket local y ejecuta gpsd cuando los clientes se conectan a él, sin embargo, también interferirá con otras instancias de gpsd que se ejecutan manualmente (como en esta guía). Deberá deshabilitar el servicio gpsd systemd ejecutando los siguientes comandos:
Código: Seleccionar todo
sudo systemctl stop gpsd.socket
sudo systemctl disable gpsd.socket
Código: Seleccionar todo
sudo systemctl enable gpsd.socket
sudo systemctl start gpsd.socket
Código: Seleccionar todo
sudo gpsd /dev/ttyAMA0 -F /var/run/gpsd.sock
Código: Seleccionar todo
cgps -s

Si tienes algún problema y cgps siempre muestra 'NO FIX' en estado y luego cancela después de unos segundos, es posible que deba reiniciar el servicio gpsd. Puedes hacerlo a través de los siguientes comandos:
Código: Seleccionar todo
sudo killall gpsd
sudo gpsd /dev/ttyS0 -F /var/run/gpsd.sock
Si aún muestra 'GPS Timeout' o 'NO FIX', modifique el archivo /etc/default/gpsd como se muestra a continuación:
Código: Seleccionar todo
# Default settings for gpsd.
# Please do not edit this file directly - use `dpkg-reconfigure gpsd' to
# change the options.
START_DAEMON="true"
GPSD_OPTIONS="-n"
DEVICES="/dev/ttyAMA0"
USBAUTO="false"
GPSD_SOCKET="/var/run/gpsd.sock"
Luego reinicia. CGPS debería funcionar entonces.
NOTA: Si el receptor GPS es nuevo o no se ha utilizado durante un tiempo, es posible que necesite unos minutos para recibir señal. Necesita 3 satélites GPS para una corrección 2D (es decir, sin altura) o 4 satélites para una solución 3D Una vez arreglado, el LED '3D_FIX' parpadeará.
Espero haber ayudado a alguno!
Este tutorial forma parte de un proyecto en el cual hacemos un seguimiento del estado y localización de vehículos con una raspberry, el gps y un conector OBD, utilizando una api rest y una página web para visualizar los datos. El proyecto esta casi terminado y podéis encontralo en el github: https://github.com/joansalto/PTI-ProjectGPS