lunes, 29 de febrero de 2016

Geolocalización con módulo GPS GY-NEO6MV2 y LCD 1602


Hoy les traigo un geolocalizador muy compacto, económico y de muy bajo consumo, puesto que solamente requiere de 3V para su correcto funcionamiento, aunque nosotros le vamos a alimentar con la salida de 3,3V que Arduino nos ofrece. Este sistema de geolocalización está basado en el módulo GPS GY-NEO6MV2, mediante el que obtenemos las coordenadas, en grados, de latitud y longitud, el valor en metros de la altitud a la que nos encontramos, y como plus también se obtiene la hora internacional en formato de 24 horas que el satélite nos devuelve. El sistema necesita de un cierto tiempo para sincronizarse con los satélites, además para su correcto funcionamiento es muy importante utilizarlo en zonas exteriores o si lo utilizamos en interiores lo debemos de colocar muy cerca de una ventana. Los valores obtenidos se muestran a través de un display LCD 1602 conectado a nuestro Arduino por medio de comunicación I2C.
El módulo GPS GY-NEO6MV2 viene con un módulo 6 U-Blox NEO de serie equipado en el PCB, una EEPROM con su correspondiente pila de tipo botón para mantener los datos intactos y una antena de cerámica que permite amplificar las señales recibidas de los satélites con los que se comunica.


Módulo GPS GY-NEO6MV2

Este módulo es sumamente sencillo de conectar a nuestro Arduino puesto que requiere de comunicación serie, y solo se necesitan dos pines para su conexión (TX/RX), además de dos resistencias de 4,7KΩy 10kΩ para adecuar la señal que recibe el módulo a través de su pin RX. Para más información, debéis consultar los comentarios del código del programa.


Lista de Materiales:


·         Arduino UNO Rev.3.

·         Cable USB tipo A-B.

·         Módulo GPS GY-NEO6MV2.

·         Display 16x2 LCD 1602.

·         Pila de 9V con adaptador Jack macho de 2.1mm.

·         Protoboard.

·         Cables de conexión.



Código del programa:



Video:


6 comentarios:

  1. Gracias Mariano por la descripción y código del cual funciona correctamente.
    Te realizo una pregunta;
    La hora está obviamente en GMT, yo tengo hora local de GMT + 2, que tendría que modificar para mostrar la hora en mi zona local? se tendría que modificar la librería TinyGPS?

    Saludos.

    ResponderEliminar
  2. Hay torpe de mi :(
    Encontré la solución con este código a reemplazar y poniendo una variable donde se le aumenta 2 horas mas al GMT (UTC), este es;

    int hour2 = hour + 2;
    gps.crack_datetime(&year, &month, &day, &hour, &minute, &second, &hundredths, &age);
    if (age == TinyGPS::GPS_INVALID_AGE)
    lcd.print("****************");
    else
    {
    char sz[32];
    sprintf(sz, "%02d:%02d:%02d ",hour2, minute, second );
    lcd.print(sz);

    ResponderEliminar
    Respuestas
    1. Me alegro de que hayas encontrado la solución a tu pequeño problema. Un saludo

      Eliminar
  3. Ainda ñ programe depois digo qualquer dica.

    ResponderEliminar
  4. Hola Mariano, tengo un pequeño problema. Recibo correctamente la tramas de datos del gps pero la latitud y la logitud me salen erroneas estn desviadas unos 1000km mas o menos el caso es que me gustaria preguntar si hay alguna manera de calibrar el gps para que marque correctamente.

    ResponderEliminar
  5. Si conoces exactamente la desviación simplemente resta esa cantidad a las variables antes de presentar los datos en el LCD (latitud = latitud - 1000;)

    ResponderEliminar