Obtener nuestras coordenadas con el Shield GPS

 Objetivos

 

  • Conocer el shield GPS.
  • Aprender a comunicarlo con Arduino.
  • Obtener nuestra localización.
  •  

    Material requerido

     

    Vista principal Arduino UNO
    Vista principal GPS Shield

     

    A estas alturas todos estamos ya familiarizados con el uso del GPS y como ha ayudado a facilitarnos la vida. Este sistema nos permite determinar con gran exactitud la posición de una persona, vehículo, etc… en cualquier parte de la Tierra. Fue desarrolado por el ministerio de defensa de EEUU y para ello pusieron en órbita 24 satélites  para cubrir toda la superficie del planeta. Para conseguir nuestra posición necesitamos conectarnos al menos a 3 de estos satélites.

    triangulación gps
    El Shield GPS de DuinoPeak está diseñado para convertirse en una interfaz sencilla y practica para dotar de posicionamiento GPS a proyectos Arduino. Incluye una antena de GPS activa y nos permite seleccionar los pines que queremos usar para la comunicación serie entre D0 y D7.
    Además incluye un lector de tarjetas SD para grabar los datos que se registran del GPS mediante interfaz SPI, aunque esto lo dejaremos para la próxima sesión. Y como nos suele gustar, tenemos una librería que nos facilita el trabajo muchísimo.
    Vista principal
    Para conectarlo no tenemos más que colocarlo con cuidado encima del Arduino para que todos los pines entren donde deben. Además tenemos que conectar los jumpers de arriba a la derecha en los pines que queramos usar para la comunicación serie. Nosotros vamos a usar el pin 2 del GPS como Tx y el 3 como Rx. Podéis verlo más claro en la siguiente imagen.
    gps shield

    El shield GPS

    El shield GPS

     

    Lo primero que vamos a hacer para empezar a trabajar con el shield es descargar su respectiva librería TinyGPSPlus-0.95La librería incluye varios ejemplos que podemos ejecutar directamente, aunque tendremos que hacerle alguna pequeña modificación. Para probarlo vamos a abrir el ejemplo DeviceExample, que sirve para obtener nuestra localización y la fecha y hora actual.

    Al principio del programa incluimos las librerías y declaramos los pines para la comunicación serie y la velocidad del GPS. Si habéis colocado los jumpers como nosotros tendréis que cambiar los pines Rx y Tx por el 2 y el 3 respectivamente.

    Por otra parte, la velocidad por defecto es de 4800 para el GPS, y nosotros no hemos conseguido hacerlo funcionar con ella. La única con la que hemos conseguido que todo vaya bien 9600 baudios. Total, que tenemos algo como esto:

    #include <TinyGPS++.h>
    #include <SoftwareSerial.h>
    
    static const int RXPin = 2, TXPin = 3;
    static const uint32_t GPSBaud = 9600;
    
    // The TinyGPS++ object
    TinyGPSPlus gps;
    
    // The serial connection to the GPS device
    SoftwareSerial ss(RXPin, TXPin);
    

    En el setup lo relevante es que tenemos que vamos a cambiar la velocidad del puerto serie también a 9600:

    Serial.begin(9600);
    ss.begin(GPSBaud);

    En el loop comprobamos que nos llegue algo por el puerto serie que hemos conectado al shield, y si llega llamamos a la función displayInfo, con la que mostramos los datos del GPS.

    void loop()
    {
     // This sketch displays information every time a new sentence is correctly encoded.
     while (ss.available() > 0)
     if (gps.encode(ss.read()))
     displayInfo();
    
     if (millis() > 5000 && gps.charsProcessed() < 10)
     {
     Serial.println(F("No GPS detected: check wiring."));
     while(true);
     }
    }

    shield gps duinopeak

    Resumen de la sesión

     

    En esta sesión hemos aprendido varias cosas importantes:

  • Cómo conectar el shield y el Arduino correctamente.
  • A obtener las coordenadas de nuestro GPS.
  •  

    Deja una respuesta