GPS-NEO6MV2-800x8001

Hola makers en este tutorial les enseñare como utilizar el modulo GPS GY-NEO6MV2.El mismo sirve para la obtención de la ubicación en el espacio terrestre.

Componentes:

  • Arduino UNO o cualquier otro que tenga las mismas características técnicas.
  • Modulo GPS GY-NEO6MV2.
  • Modulo Display  LCD 16*2 + Adaptadod i2c.
  • Protoboard.
  • Cables jumper Macho Macho.
  • Resistencia 4.7 Komhs.

Un poco mas sobre el Modulo GPS GY-NEO6MV2:

Este modulo gps solamente requiere de 3V para su correcto funcionamiento. Este sistema de geolocalización nos proporciona 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.

Conexiones:

Modulo GPS:

Modulo Display:

Código:

El código tiene indexado comentarios para seguirlo claramente.

// Incluimos las librerías
  #include <SoftwareSerial.h>        
  #include <LiquidCrystal_I2C.h>    
  #include <Wire.h>                  
  #include <TinyGPS.h>              
 
  // Declaración de los objetos
  TinyGPS gps;
  SoftwareSerial ss(4, 3); // Rx = 4 y Tx = 3
 
  // Terminales de conexión del LCD
  //                    addr, en,rw,rs,d4,d5,d6,d7,bl,blpol
  LiquidCrystal_I2C lcd(0x27, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE);
 
  // Variables internas del programa
  static void smartdelay(unsigned long ms);
  static void print_float(float val, float invalid, int len, int prec);
  static void print_int(unsigned long val, unsigned long invalid, int len);
  static void print_date(TinyGPS &gps);
  static void print_str(const char *str, int len);
 
  float flat, flon;
   
  void setup()
  {
    lcd.begin(16,2); // Inicializamos el LCD para 16x2
    lcd.backlight(); // Encendemos la retroiluminación del LCD
   
    inicio_LCD(); // LLamamos a la función que inicia el LCD
   
    ss.begin(9600); // Comienza la comunicación serie con el GPS
  }
 
  void loop()
  {
    // Obtenemos las coordenadas de latitud y la longitud en grados
    gps.f_get_position(&flat, &flon);
   
    // Presentamos la latitud
    lcd.clear();                      
    lcd.setCursor(0, 0);              
    lcd.print("<<< LATITUD >>>");
    lcd.setCursor(0, 1);
    print_float(flat, TinyGPS::GPS_INVALID_F_ANGLE, 10, 6);
   
    smartdelay(4000); // Retardo de 4 segundos
   
    // Presentamos la longitud
    lcd.clear();                      
    lcd.setCursor(0, 0);              
    lcd.print("<<< LONGITUD >>>");
    lcd.setCursor(0, 1);
    print_float(flon, TinyGPS::GPS_INVALID_F_ANGLE, 11, 6);
   
    smartdelay(4000); // Retardo de 4 segundos
   
    // Presentamos la hora
    lcd.clear();                      
    lcd.setCursor(0, 0);              
    lcd.print("<<< HORA >>>");
    lcd.setCursor(0, 1);
    print_date(gps);
   
    smartdelay(4000); // Retardo de 4 segundos
   
    // Presentamos la altitud
    lcd.clear();                      
    lcd.setCursor(0, 0);              
    lcd.print("<<< ALTITUD >>>");
    lcd.setCursor(0, 1);
    print_float(gps.f_altitude(), TinyGPS::GPS_INVALID_F_ALTITUDE, 7, 2);
   
    smartdelay(4000); // Retardo de 4 segundos
  }
 
  // Función del retardo
  static void smartdelay(unsigned long ms)
  {
    unsigned long start = millis();
    do
    {
      while (ss.available())
        gps.encode(ss.read());
    } while (millis() - start < ms);
  }
 
  // Función para imprimir valores con coma flotante (float)
  static void print_float(float val, float invalid, int len, int prec)
  {
    if (val == invalid)
    {
      while (len-- > 1)
        lcd.print('*');
      lcd.print(' ');
    }
    else
    {
      lcd.print(val, prec);
      int vi = abs((int)val);
      int flen = prec + (val < 0.0 ? 2 : 1);
      flen += vi >= 1000 ? 4 : vi >= 100 ? 3 : vi >= 10 ? 2 : 1;
      for (int i=flen; i<len; ++i)
        lcd.print(' ');
    }
    smartdelay(0);
  }
 
  // Función para imprimir la hora
  static void print_date(TinyGPS &gps)
  {
    int year;
    byte month, day, hour, minute, second, hundredths;
    unsigned long age;
    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 ",hour, minute, second);
      lcd.print(sz);
    }
    smartdelay(0);
  }
 
  // Función que inicializa el LCD 1602
  void inicio_LCD()                        
  {                                              
      lcd.clear();                      
      lcd.setCursor(0, 0);              
      lcd.print("Modulo GPS");          
      lcd.setCursor(0, 1);              
      lcd.print("& Display I2C... ");  
      delay(3000);                      
      lcd.clear();                      
      lcd.setCursor(0, 0);              
      lcd.print("Iniciando....");      
      delay(4000);                      
      lcd.clear();                      
  }

Eso es todo.Saludos German.


ElectroMercado

  • : tutorial_
  • arduino | ideas_/_inventos | programación | otros
2 Comentarios
  1. Juanjo
    Juanjo 4 semanas

    Gracias German por la info. Saludos

    1+
  2. Juani10
    Juani10 4 semanas

    Para cuando me pierdo. jaja

    0

Contesta

CONTACTANOS

Esta es su red social de tecnología para compartir tus ideas y proyectos .Puedes enviarnos un correo si tienes dudas.Nos vemos

Enviando

Inicia Sesión con tu Usuario y Contraseña

o    

¿Olvidó sus datos?

Create Account