bclose

Utilizar el data logger del shield GPS

Creando una hoja de cálculo con los datos de GPS

Objetivos

 

 

    • Utilizar el data logger del shield GPS.
    • Crear ficheros y grabar los datos del GPS en una SD.
    • Obtener la distancia a un objetivo.
 

Material requerido

 

 Tienda EspañaTienda Mexico
Vista principal de un arduino unoArduino UNOArduino UNO
Vista principalGPS Shield

 

Usando el data logger y la tarjeta SD

 

Ahora que sabemos usar el shield para obtener los datos del GPS, vamos a centrarnos en otras características que nos ofrece. Concretamente en la capacidad para grabar los datos en una tarjeta SD. Y como extra vamos a calcular la distancia desde nos encontramos al lugar que le indiquemos.

Lo primero que tenemos que hacer es incluir las librerías y declarar las variables e instancias que vamos a usar después. La mayoría se repiten del ejemplo anterior, y las que no lo hacen, son las que necesitamos para usar el data logger y la tarjeta SD.

Para poder usar el data logger tenemos que declarar una variable para indicar el chip que estamos usando. No os voy a engañar, cuando lo intentamos no conseguimos encontrar información concreta de cuál es, pero un poco de prueba y error nos dio la solución, es el chip 8. A parte de eso, tenemos que dar nombre al archivo que usaremos para guardar los datos en la tarjeta, con la extensión  .CSV.

#include <TinyGPS++.h>
#include <SoftwareSerial.h>
#include <SD.h>
const int chipSelect = 8;

static const int RXPin = 2, TXPin = 3;
static const uint32_t GPSBaud = 9600;

File dataFile;
char filename[] = "LOGGER00.CSV";

// The TinyGPS++ object
TinyGPSPlus gps;

// The serial connection to the GPS device
SoftwareSerial ss(RXPin, TXPin);

// For stats that happen every 5 seconds
unsigned long last = 0UL;

En el setup tenemos que inicializar el GPS y la SD. Al hacerlo creamos un nuevo archivo en la SD y le damos un nombre con números correlativos, para no borrar siempre el archivo anterior cuando vayamos a grabar uno nuevo.

Si hemos conseguido abrir la SD y grabar el archivo correctamente, escribimos las cabeceras de los campos que queremos mostrar y las mostramos también en el monitor serie:  latitud, longitud, altitud, velocidad, fecha, hora y distancia al objetivo que le marquemos.

 
  • Vamos a utilizar una “,” como separador para los campos para poder importarlos luego a una hoja de Excel. 
void setup()
{
 Serial.begin(9600);
 ss.begin(GPSBaud);

 Serial.print(F("Initializing SD card. "));
 // make sure that the default chip select pin is set to
 // output, even if you don't use it:
 pinMode(chipSelect, OUTPUT);
 
 // see if the card is present and can be initialized:
 if (!SD.begin(chipSelect)) {
 Serial.println(F("Card failed."));
 // don't do anything more:
 return;
 }
 Serial.println(F("Card initialized."));
 
// create a new file with a new filenumber
for (uint8_t i = 0; i < 100; i++) {
 filename[6] = i/10 + '0';
 filename[7] = i%10 + '0';
 if (! SD.exists(filename)) {
 // only open a new file if it doesn't exist
 dataFile = SD.open(filename, FILE_WRITE);
 break; // leave the loop
 }
 dataFile.close();
 }
if (! dataFile) {
 Serial.println("couldnt create file");
 }
 Serial.print("Logging to: ");
 Serial.println(filename);
 Serial.println(""); 
 
 //_________________________Write Log File Header__________________________________________________
File dataFile = SD.open(filename, FILE_WRITE); 
 if (dataFile)
 { 
 dataFile.print(F("Latitud")); 
 dataFile.print(",");
 dataFile.print(F("Altitud"));
 dataFile.print(",");
 dataFile.print(F("Velocidad"));
 dataFile.print(",");
 dataFile.print(F("Fecha"));
 dataFile.print(",");
 dataFile.print(F("Hora"));
 dataFile.print(",");
 dataFile.println(F("Distancia al objetivo"));
 dataFile.close();
 }
 Serial.print(F("Latitud")); 
 Serial.print(",");
 Serial.print(F("Longitud"));
 Serial.print(",");
 Serial.print(F("Velocidad"));
 Serial.print(",");
 Serial.print(F("Fecha"));
 Serial.print(",");
 Serial.print(F("Hora"));
 Serial.print(",");
 Serial.println(F("Distancia al objetivo"));
}

Y ya en el loop obtenemos los datos del GPS y los vamos escribiendo en la SD. Una vez tengamos nuestra posición,  le indicamos la posición objetivo y calculamos la distancia a la misma. Hemos puesto como objetivo las coordenadas de Madrid.

Contenido solo disponible para suscriptores. ¡Accede al contenido!

Si abrimos el monitor serie podemos ver como funciona el GPS. Primero veremos si es capaz de acceder a la tarjeta y el nombre del archivo que va a crear. A partir de ahí nos irá dando los datos que hemos obtenido del GPS.

Shield gps

Podéis meter los datos que hemos obtenido en el localizador de coordenadas de Google para ver si funciona correctamente. En nuestro caso la precisión ha sido altísima:

coordenadas gps

 

Utilizando los datos de la tarjeta SD

 

Para probar el GPS en condiciones vamos a soltarlo del ordenador, colocarle una power bank (las baterías que se suelen usar para cargar los móviles) y vamos a salir a dar una vuelta, a ver si todo funciona en condiciones.

Gps duinopeak

Bueno, ya estamos de vuelta… Así que ahora vamos a sacar la tarjeta SD del shield a conectarla a nuestro PC. Si la abrís podréis ver los diferentes archivos que hemos ido guardando.

csv file

Ahora abrimos una hoja nueva de Excel donde vamos a importar los datos que hemos guardado. Para ello vamos a “Datos”->”Obtener datos externos”->”Desde texto”

hoja nueva excel

 

Contenido solo disponible para suscriptores. ¡Accede al contenido!

Datos GPS

Ahora podéis utilizar estos datos con alguna de las aplicaciones que hay para dibujar el recorrido en un mapa usando Google Maps, o para lo que se os ocurra. Pero eso os lo dejamos para vosotros.

 

Resumen de la sesión

 

En esta sesión hemos aprendido varias cosas importantes:

 
    • Hemos aprendido a usar el data logger del shield GPS.
    • Guardamos los datos en una tarjeta SD.
    • Hemos importado los datos a una hoja Excel.
 
 
 

 

No Comments

Para porder realizar consultas a nuestros expertos, tienes que ser suscriptor. Suscribiendote nos ayudas a mantener este proyecto en marcha.

¡ Quiero Suscribirme !

Si ya eres premium y no puedes comentar haz login. Hacer login