MI RECEPTOR GPS NO ENCUENTRA SATELITES

Buenas, estoy utilizando el Receptor GPS EM-506 con una Shield GPS, ambos de Bricogeek.com con mi Arduino DUE.

He conseguido compilar un código y es el siguiente:

#include <TinyGPS++.h> // Include the TinyGPS++ library
TinyGPSPlus tinyGPS; // Create a TinyGPSPlus object

#define GPS_BAUD 9600 // GPS module baud rate. GP3906 defaults to 9600.

// Define the serial monitor port. On the Leonardo this is 'Serial'
//  but on other boards this may be 'SerialUSB'
#define SerialMonitor Serial // e.g. Arduino Leonardo
// Define the harware serial port on pins 0/1. On the Leonardo this is 'Serial1'
//  but on other boards this may be 'Serial'
#define gpsPort Serial2 // e.g. Arduino Leonardo
// See https://www.arduino.cc/en/Reference/Serial to find out which Serial ports
//  you should use in the defines above.

void setup()
{
  SerialMonitor.begin(9600);
  gpsPort.begin(GPS_BAUD);
}

void loop()
{
  // print position, altitude, speed, time/date, and satellites:
  printGPSInfo();

  // "Smart delay" looks for GPS data while the Arduino's not doing anything else
  smartDelay(1000); 
}

void printGPSInfo()
{
  // Print latitude, longitude, altitude in feet, course, speed, date, time,
  // and the number of visible satellites.
  SerialMonitor.print("Lat: "); SerialMonitor.println(tinyGPS.location.lat(), 6);
  SerialMonitor.print("Long: "); SerialMonitor.println(tinyGPS.location.lng(), 6);
  SerialMonitor.print("Alt: "); SerialMonitor.println(tinyGPS.altitude.feet());
  SerialMonitor.print("Course: "); SerialMonitor.println(tinyGPS.course.deg());
  SerialMonitor.print("Speed: "); SerialMonitor.println(tinyGPS.speed.mph());
  SerialMonitor.print("Date: "); printDate();
  SerialMonitor.print("Time: "); printTime();
  SerialMonitor.print("Sats: "); SerialMonitor.println(tinyGPS.satellites.value());
  SerialMonitor.println();
}

// This custom version of delay() ensures that the tinyGPS object
// is being "fed". From the TinyGPS++ examples.
static void smartDelay(unsigned long ms)
{
  unsigned long start = millis();
  do
  {
    // If data has come in from the GPS module
    while (gpsPort.available())
      tinyGPS.encode(gpsPort.read()); // Send it to the encode function
    // tinyGPS.encode(char) continues to "load" the tinGPS object with new
    // data coming in from the GPS module. As full NMEA strings begin to come in
    // the tinyGPS library will be able to start parsing them for pertinent info
  } while (millis() - start < ms);
}

// printDate() formats the date into dd/mm/yy.
void printDate()
{
  SerialMonitor.print(tinyGPS.date.day());
  SerialMonitor.print("/");
  SerialMonitor.print(tinyGPS.date.month());
  SerialMonitor.print("/");
  SerialMonitor.println(tinyGPS.date.year());
}

// printTime() formats the time into "hh:mm:ss", and prints leading 0's
// where they're called for.
void printTime()
{
  SerialMonitor.print(tinyGPS.time.hour());
  SerialMonitor.print(":");
  if (tinyGPS.time.minute() < 10) SerialMonitor.print('0');
  SerialMonitor.print(tinyGPS.time.minute());
  SerialMonitor.print(":");
  if (tinyGPS.time.second() < 10) SerialMonitor.print('0');
  SerialMonitor.println(tinyGPS.time.second());
}

El problema es que cuando abro el monitor serie me sale lo siguiente:

Lat: 0.000000
Long: 0.000000
Alt: 0.00
Course: 0.00
Speed: 0.00
Date: 0/0/2000
Time: 0:00:00
Sats: 0

Se supone según he leído que eso es porque el sensor gps no encuentra satélites, sin embargo, el led rojo de la izquierda parpadea, lo que según el fabricante es un indicador de que ha fijado posición.

No sé donde puede estar el problema.

Gracias de antemano y un saludo

Recuerdo haber peleado con estos bastante, y algunas veces logré que funcionaran simplemente saliendo al exterior, ya que si estas muy encerrado no encontrará satélites. Para referencia puedes probar con tu telefono movil y ver si logra conectarse a los satélites desde donde estas... espero eso te ayude...

Lo que dice el fabricante si es el GPS Breakout Adafruit es que parpadea cada segundo si no encuentra un FIX. Si encuentra un FIX va a parpadear cada 15 segundos. Mas info.

FIX is an output pin - it is the same pin as the one that drives the red LED. When there is no fix, the FIX pin is going to pulse up and down once every second. When there is a fix, the pin is low (0V) for most of the time, once every 15 seconds it will pulse high for 200 milliseconds

Te recomiendo que trabajes afuera, ya que si trabajas desde la ventana de tu casa es dificil que agarres algun satellite. Normalment el GPS funciona bien si tienes mas de 6 satelites.

He salido a la calle y me he subido al ático y nada, sigue saliendo lo mismo. El GPS parpadea rápido y no conecta con ningun satelite, no se si alguien puede ayudarme

Hola
Si conectas tu GPS al puerto serie del arduino lo puedes leer desde el terminal del IDE.
Fijate en la secuencia $GPRMC,153609.900,A..........
Si la letra de la derecha de la segunda coma es una V es que no recibe o funciona. Si es una A es que funciona bien y tiene satelites.
Ten en cuenta que aun a cielo abierto puede tardar hasta 15 minutos en "conectarse".