Tutorial Raspberry Pi 3 - NEO-6M módulo GPS

Sección Unicamente para Tutoriales y Guías
Micky101224
Pi Newbie
Pi Newbie
Mensajes: 1
Registrado: 29 May 2018, 12:30
Agradecido: 0
Agradecimiento recibido: 0

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

Código: Seleccionar todo

$ sudo nano /boot/config.txt
Tenemos que añadir al final del documento lo siguiente:

Código: Seleccionar todo

dtparam=spi=on
dtoverlay=pi3-miniuart-bt
core_freq=250
enable_uart=1
force_turbo=1
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 :

Código: Seleccionar todo

sudo cp boot/cmdline.txt boot/cmdline_backup.txt
sudo nano /boot.cmdline.txt
Realizamos una copia de seguridad por si las moscas. Reemplazamos el contenido del archivo por:

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
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:

Código: Seleccionar todo

sudo systemctl stop serial-getty@ttyAMA0.service
sudo systemctl disable serial-getty@ttyAMA0.service
Reboot, otra vez.

Si queremos comprobar lo que nos entra por el gps, podemos realizar el siguiente comando:

Código: Seleccionar todo

sudo cat /dev/ttyAMA0
Imagen

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
Si queremos volver a habilitarlo ejecutamos lo siguiente:

Código: Seleccionar todo

sudo systemctl enable gpsd.socket
sudo systemctl start gpsd.socket
Para arrancar el programa ejecutamos:

Código: Seleccionar todo

sudo gpsd /dev/ttyAMA0 -F /var/run/gpsd.sock
Ahora si queremos testearlo, debemos ejecutar la siguiente orden:

Código: Seleccionar todo

cgps -s
La salida que obtendremos será parecida a la imagen que tenemos a continuación:

Imagen

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
Adjuntos
rasp.JPG
Responder