Módulo GPS neo-6m con Arduino

El módulo GPS en su modelo GY-GPS6MV2 viene con un módulo de serie U-Blox NEO 6M equipado en el PCB, una EEPROM con configuración de fábrica, una pila de botón para mantener los datos de configuración en la memoria EEPROM, un indicador LED y una antena cerámica. También posee los pines o

conectores Vcc, Rx, Tx y Gnd por el que se puede conectar a algún microcontrolador mediante una interfaz serial. Para que nuestro módulo GPS funcione a la perfección se recomienda hacer las pruebas en un ambiente abierto o cercano a la ventana para una correcta recepción de la señal. 

 Bien, ahora vamos a probar nuestro módulo conectándolo a nuestro Arduino (en este caso se usará un Arduino UNO) mediante un puerto serie que se emulará por Software ya que usaremos el Rx0 y TX0 (puerto serie por Hardware) para la comunicación con nuestra PC y así verificar los datos que recibimos por el módulo GPS.


Vamos a realizar las conexiones que se muestran en la siguiente imagen o seguir los pasos que se describen a continuación:

- Conecte el pin 3.3V del Arduino UNO al pin Vcc del módulo GPS.
- Conecte el pin GND del Arduino UNO al pin GND del módulo GPS.
- Conecte el pin digital 4 del Arduino UNO al pin Tx del módulo GPS.
- Conecte el pin digital 3 del Arduino UNO al pin Rx del módulo GPS.

Cabe indicar que nuestro módulo GPS también se puede alimentar con una tensión de 5V ya que posee un regulador integrado dentro de sí.

A continuación, cargaremos el siguiente código a nuestro Arduino, en el cual se puede apreciar que se emplea la librería SoftwareSerial para emular un puerto serie como se mencionó anteriormente (no es necesaria instalarla, ya que viene por defecto en nuestro IDE de Arduino).

Codigo:

#include <SoftwareSerial.h>

SoftwareSerial gps(4,3);

char dato=' ';

void setup()
{
 Serial.begin(115200);           
 gps.begin(9600);
}


void loop()
{
  if(gps.available())
  {
    dato=gps.read();
    Serial.print(dato);
  }
}

Como podemos ver, lo que hace nuestro programa es leer constantemente el módulo GPS a una velocidad de 9600 baudios que es la velocidad por la que viene configurado por defecto nuestro módulo GPS y  enviar dichos datos a la PC a través del puerto serie físico para poder visualizarlos en nuestro Monitor Serial. Al abrir nuestro Monitor Serial, nos aseguramos de configurarlo a una velocidad de 115200 baudios. Podremos ver los datos que recibimos.

Los datos que recibimos en nuestro módulo GPS siguen el protocolo NMEA (siglas de National Marine Electronics Asociation), las cuales son sentencias estándares para la recepción de datos GPS. Una de ellas y la más usada son las sentencias $GPRMC, las cuales tienen la siguiente estructura:

  

$GPRMC,044235.000,A,4322.0289,N,00824.5210,W,0.39,65.46,020615,,,A*44

Estas coordenadas las podemos leer en la siguiente web: http://rl.se/gprmc

Donde si analizamos la trama de este ejemplo y basándose en el protocolo NMEA, podríamos determinar las siguientes variables:

- 044235.000 representa la hora GMT (04:42:35)
- “A” es la indicación de que el dato de posición está fijado y es correcto. “V” sería no válido
- 4322.0289 representa la longitud (43º 22.0289´)
- N representa el Norte
- 00824.5210 representa la latitud (8º 24.5210´)
- W representa el Oeste
- 0.39 representa la velocidad en nudos
- 65.46 representa la orientación en grados
- 020615 representa la fecha (2 de Junio del 2015)
 

Como vimos, de la trama de datos que nos envía nuestro módulo GPS podemos obtener varias variables, siendo las importantes para proyectos de posicionamiento la latitud y la longitud. Para ello, vamos a hacer uso de la librería TinyGPS que la podemos descargar de aquí:

https://github.com/mikalhart/TinyGPS

Recuerde que una vez descargada la Libreria, tenemos que importarla copiándola en la carpeta “Libraries” donde se instaló nuestro IDE de Arduino y luego reiniciar el programa para que sea cargada correctamente. La librería TinyGPS nos facilitará la identificación tanto de la latitud y longitud, así como las otras variables descritas anteriormente sin tener que recurrir a algoritmos complejos para lograr obtenerlas. Para ello ejecutamos un sencillo ejemplo que nos provee la librería, para lo cual nos vamos a Archivo/Ejemplos/TinyGPS/simple_test en nuestro IDE de Arduino.

  
A continuación, nos aseguramos de cambiar la velocidad de lectura del puerto serie emulado a 9600 baudios y cargamos nuestro código a nuestra tarjeta Arduino.

Finalmente, podremos abrir nuestro Monitor serial y visualizar las variables mencionadas tal como se pueden ver en la siguiente imagen:

 

 

 

 

Related Articles

Este espacio lo he creado pensando en los entusiastas como tú, para compartir y centralizar documentación sobre temas que me apasionan: Arduino, impresoras 3D, Raspberry Pi, y mucho más.

Además, he querido fusionarlo con mi canal de YouTube, donde exploramos retro-informática, Raspberry Pi, consolas retro, electrónica y otras maravillas del mundo tecnológico. Este es tu sitio si disfrutas aprendiendo, creando y reviviendo lo mejor de la tecnología de ayer y hoy.

¡Bienvenido!