GPS GY-NEO6MV2 en la Raspberry Pi

Compré este controlador GPS con antena cerámica exenta. En la foto de la tienda venía la imagen del U-Blox:

411bRvnjcwL

Pero realmente me llegó este, con la antena incorporada:

FullSizeRender

FullSizeRender2

Quería conectarlo por USB, pero aún no me ha llegado el adaptar de USB a TTL [ahora ya me ha llegado, así que explico cómo hacerlo con el adaptador más abajo], así que lo conecto por UART.

El esquema de conexión es el siguiente:

  • 5V de la Raspberry Pi al VIN del GPS
  • GND de la Raspberry Pi al GND del GPS
  • TX de la Raspberry Pi al RX del GPS
  • RX de la Raspberry Pi al TX del GPS

Con los colores de cables que he asignado, y los pines del GPIO de la Raspberry Pi, queda así:

RPi pin 4 (5V) ----- Rojo ------- GPS VCC
RPi pin 6 (GND) ---- Azul ------- GPS GND
RPi pin 8 (TX) ----- Amarillo --- GPS RX
RPi pin 10 (RX) ---- Verde ------ GPS TX

GPIO

Esquema de pines de la Raspberry Pi

FullSizeRender4

Ahora tenemos que activar UART. Para ello editamos el fichero /boot/cmdline.txt:

sudo nano /boot/cmdline.txt

Contiene lo siguiente:

dwc_otg.lpm_enable=0 console=ttyAMA0,115200 console=tty1 root=/dev/mmcblk0p2 rootfstype=ext4 elevator=deadline rootwait

Lo dejo de la siguiente forma:

dwc_otg.lpm_enable=0 console=tty1 console=tty1 root=/dev/mmcblk0p2 rootfstype=ext4 elevator=deadline rootwait

También hemos de editar /etc/inittab, comentando (poner # delante) la última línea:

#Spawn a getty on Raspberry Pi serial line
#T0:23:respawn:/sbin/getty -L ttyAMA0 115200 vt100

Reinicio la Raspberry Pi.

Ahora, instalo los programas de uso del GPS más típicos:

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

Arrancamos el demonio gpsd:

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

Y ejecuto el cliente GPS:

cgps -s

Y, tras esperar un rato a que encuentre las señales de los satélites necesarios, me sale lo siguiente:

┌───────────────────────────────────────────┐┌─────────────────────────────────┐
│    Time:       2015-04-18T10:06:19.000Z   ││PRN:   Elev:  Azim:  SNR:  Used: │
│    Latitude:    40.556089 N               ││   5    75    228    36      Y   │
│    Longitude:    5.673255 W               ││  13    59    314    38      Y   │
│    Altitude:   843.4 m                    ││  15    26    292    39      Y   │
│    Speed:      0.4 kph                    ││   2    10    208    22      Y   │
│    Heading:    64.1 deg (true)            ││  44    07    103    00      N   │
│    Climb:      -54.0 m/min                ││                                 │
│    Status:     3D FIX (34 secs)           ││                                 │
│    Longitude Err:   +/- 133 m             ││                                 │
│    Latitude Err:    +/- 59 m              ││                                 │
│    Altitude Err:    +/- 170 m             ││                                 │
│    Course Err:      n/a                   ││                                 │
│    Speed Err:       +/- 989 kph           ││                                 │
│    Time offset:     0.435                 ││                                 │
│    Grid Square:     IN80dk                ││                                 │
└───────────────────────────────────────────┘└─────────────────────────────────┘

¡Funciona!

Si en algún momento se «atasca», basta con parar el proceso cgps y volverlo a arrancar:

sudo killall gpsd
sudo gpsd /dev/ttyAMA0 -F /var/run/gpsd.sock

Conexión con un adaptador USB a serie TTL

Ya me ha llegado el adaptador, así que voy a conectar ahora el GPS a la Raspberry Pi por medio de un adaptador USB a serie TTL PL2303HX, por 2€. Compré este:

FullSizeRender

FullSizeRender2

Lo conecto de la siguiente forma:

PL2303HX      GPS

3V3 --------- (No lo conecto)
TXD --------- RX
RXD --------- TX
GND --------- GND
+5V --------- VCC

Y enchufo el módulo USB a la RaspberrY Pi. Ejecuto:

ls /dev/ttyUSB*

Como tengo ahora mismo conectado un modem 3G USB, me aparecen 3 dispositivos adicionales (/dev/ttyUSB0, /dev/ttyUSB1 y /dev/ttyUSB2), junto con el nuevo /dev/ttyUSB3, que es mi GPS. Si no hubiese otros dispositivos USB conectados, seguramente aparecería como /dev/ttyUSB0.

Si hago sudo lsusb, me aparece, entre otros dispositivos:

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

Así que ahí está mi Prolific PL2303, ok.

Miro a ver si el dispositivo está mandando alguna información (coordenadas GPS…), de forma un poco rupestre:

sudo cat /dev/ttyUSB3

Sale una ristra de lo que podría ser información geográfica, así que pinta bien. Ya sólo tengo que seguir los pasos anteriores (cuando lo conectamos por UART), y apuntar a este nuevo puerto:

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

Y ejecuto el cliente GPS:

cgps -s

¡Funciona también! Así que ya puedo decidir cómo prefiero usar el GPS, si con el adaptador a USB, y así libero los puertos UART, o a los UART.

Referencias

2 comentarios en “GPS GY-NEO6MV2 en la Raspberry Pi

  1. Pingback: Adafruit Ultimate GPS Breakout v3 en la Raspberry Pi | Carlini's Blog

  2. Hola Carlini, estuve viendo tus posts sobre Raspberry Pi y me gustó mucho el nivel de detalle y dedicación en tus tutoriales. Estoy tratando de hacer funcionar una RPi 3 Model B (o B+, no recuerdo bien, pero es la con WiFi integrado) con dos sensores en simultáneo: el NEO6MV2 (de este post) y un DHT-11 idéntico al que usaste en el post sobre ese sensor, pero no he logrado hacer que funcionen los dos en paralelo y tampoco logré encontrar documentación sobre como hacerlos funcionar en paralelo. Si pudieras echarme una mano lo agradecería mucho, saludos y gracias de antemano.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.