Obtención de datos Gps con la placa ITEAD GPS Shield 1.1 y Arduino Mega.

Materiales utilizados:

Conexionado:

Descripción de la aplicación:

En cierta aplicación, necesito ver por el monitor serie del IDE de Arduino la recepción de datos de la ITEAD GPS Shield 1.1, para ello, realizo el cableado según indico en la imagen. La shield ha de estar pinchada en el Arduino Mega en su ubicación.

#include <TinyGPS.h>
#include <SoftwareSerial.h>

TinyGPS gps;
SoftwareSerial serialgps(69, 68); //Pin 69 equivale a A15 en arduino mega.

float latitud, longitud;
char LONGITUD_GPS[12];
char LATITUD_GPS[12];
char VELOCIDAD_GPS[5] = {'0', '0', '0', 0, 0};
char RUMBO_GPS[5] = {'0', '0', '0', 0, 0};
char HORA_GPS[4] = {'0', '0', 0, 0};
char MINUTOS_GPS[4] = {'0', '0', 0, 0};
char SEGUNDOS_GPS[4] = {'0', '0', 0, 0};
char DIA_GPS[4] = {'0', '0', 0, 0};
char MES_GPS[4] = {'0', '0', 0, 0};
char ANO_GPS[6] = {'0', '0', '0', '0', 0, 0};

int year;
byte month, day, hour, minute, second, hundredths;

void setup()
{
    serialgps.begin(9600);
    Serial.begin(9600);
}

void loop(){
   
    bool newData=false;
    unsigned long chars;
    unsigned short sentences, failed;
    
    for (unsigned long start = millis(); millis()-start<1000;)
    {
       while(serialgps.available()){
         {
           char c=serialgps.read();
           if (gps.encode(c)){
             Serial.println("");
 
            //obtengo y muestro la latitud y la longitud
             gps.f_get_position(&latitud, &longitud);
             char latitudChar[10]= "";
             dtostrf(latitud,4,6,latitudChar);
             Serial.print("Latitud: ");
             Serial.println(latitudChar);
             char longitudChar[10]= "";
             dtostrf(longitud,4,6,longitudChar);
             Serial.print("Longitud: ");
             Serial.println(longitudChar);
             
             //obtengo y muestro la velocidad en nudos 
             int velocidad_gps = int(gps.f_speed_knots());
             sprintf(VELOCIDAD_GPS, "%03u", velocidad_gps);
             Serial.print("Velocidad: ");
             Serial.println(velocidad_gps);
             
             //Obtengo y muestro el rumbo.
             sprintf(RUMBO_GPS, "%03u", int(gps.f_course()));
             Serial.print("Rumbo: ");
             Serial.println(RUMBO_GPS);
             
             //Obtengo la fecha y la muestro usando el Serial.print
             gps.crack_datetime(&year, &month, &day, &hour, &minute, &second, hundredths);
             sprintf(ANO_GPS, "%u", year);
             sprintf(DIA_GPS, "%02u", day);
             sprintf(MES_GPS, "%02u", month);
             sprintf(HORA_GPS, "%02u", hour);
             sprintf(MINUTOS_GPS, "%02u", minute);
             sprintf(SEGUNDOS_GPS, "%02u", second);
             Serial.print("Fecha: ");
             Serial.print(DIA_GPS);
             Serial.print("/");
             Serial.print(MES_GPS);
             Serial.print("/");
             Serial.println(ANO_GPS);
 
             //muestro la hora usando concatenacion
             String horaActual="";
             horaActual.concat(HORA_GPS); 
             horaActual.concat(":");
             horaActual.concat(MINUTOS_GPS);
             horaActual.concat(":");
             horaActual.concat(SEGUNDOS_GPS);
             Serial.print("Hora: ");
             Serial.println(horaActual);
 
           }
         }
       }
    } 
}

Uso de la tarjeta SD de la placa ITEAD GPS Shield 1.1 con Arduino Mega.

Materiales utilizados:

Conexionado:

Descripción de la aplicación:

En cierta aplicación, necesito usar el almacenamiento en la tarjeta SD que puede alojar la ITEAD GPS Shield 1.1, para ello, realizo el cableado como se indica en la imagen. La shield ha de estar pinchada en el Arduino Mega en su ubicación.

La aplicación almacena un contador cada segundo desde 1 hasta 100, con lo que en la tarjeta ha de almacenarse en un fichero llamado log.txt una lista con los 100 numeros.

Código de la aplicación* (Extraido del foro de Arduino):

#include <SD.h>
#include <SPI.h>

const int chipSelect = 53;
int contador = 0;
int i = 0;

void setup() {

  Serial.begin(115200);
  Serial.print("Inicializando tarjeta SD...");
  pinMode(chipSelect,OUTPUT);
  delay(2000);
  if (!SD.begin(chipSelect))
  {
    Serial.print("fallo lectura de tarjeta");
    delay(2000);
    return;
  }
  Serial.print("Tarjeta SD inicializada");
  delay(2000);
  
}

void loop() {
  
  for(i=0; i<100; i++)
  {
    contador ++;
    sdcard();
    delay(1000);
  }
}

void sdcard() {
  String dataString = "";
  dataString += String("Contador");
  dataString +=",";
  dataString += String(contador);
  dataString +=",";
  File dafile = SD.open("log.txt",FILE_WRITE);
  if (dafile) {
    dafile.print(",");
    dafile.println(dataString);
    dafile.close();
    Serial.println(dataString);
  }
  else {
    Serial.println("error al abrir log.txt");
  }
}