Obtención de datos GPS con la tarjeta ITEAD GPS Shield 1.1 y Arduino MKR GSM 1400.

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. En este caso la tarjeta GPS ha de estar configurada a 3.3v, ya que el MKR 1400 trabaja a este voltaje.

#include <TinyGPS.h>

TinyGPS gps;

void setup()
{
  Serial.begin(115200);
  Serial1.begin(9600);
}

void loop()
{
  
  bool newData = false;
  unsigned long chars;
  unsigned short sentences, failed;

  // For one second we parse GPS data and report some key values
  for (unsigned long start = millis(); millis() - start < 1000;)
  {
    while (Serial1.available())
    {
      char c = Serial1.read();
      if (gps.encode(c)) // Did a new valid sentence come in?
        newData = true;
    }
  }

  if (newData)
  {
    while (!Serial1) ; 
    float flat, flon;
    unsigned long age;
    gps.f_get_position(&flat, &flon, &age);
    Serial.print("Latitud=");
    Serial.print(flat == TinyGPS::GPS_INVALID_F_ANGLE ? 0.0 : flat, 6);
    Serial.print(" Longitud=");
    Serial.print(flon == TinyGPS::GPS_INVALID_F_ANGLE ? 0.0 : flon, 6);
    Serial.print(" Satelites recibidos=");
    Serial.print(gps.satellites() == TinyGPS::GPS_INVALID_SATELLITES ? 0 : gps.satellites());
    Serial.print(" Precision=");
    Serial.print(gps.hdop() == TinyGPS::GPS_INVALID_HDOP ? 0 : gps.hdop());
  }
  
  gps.stats(&chars, &sentences, &failed);
  Serial.print(" Caracteres Recibidos=");
  Serial.print(chars);
  Serial.print(" Sentencias=");
  Serial.print(sentences);
  Serial.print(" CSUM ERR=");
  Serial.println(failed);
  if (chars == 0)
    Serial.println("** No characters received from GPS: check wiring **");
}

Deja una respuesta