Arduino y modulo GPS [SOLUCIONADO]

Buenas a todos!

El otro dia me compre un modulo GPS para arduino, para ser mas especificos, es el siguiente modelo: A1037-A de Vincotech. El Arduino que tengo es Arduino UNO. El problema que tengo es que cargue un codigo que encontre de un tutorial y en vez de darme los datos de la posicion y todo lo referente a informacion del satelite, como velocidad, ubicacion, etc... Obtengo lo siguiente:

Configurando GPS...
$GPGGA,003719.000,0000.000,N,00000.000,E,0,00,99.0,0082.0,M,18.0,M,,
$GPGGA,003723.000,0000.000,N,00000.000,E,0,00,99.0,0082.0,M,18.0,M,,
$GPGGA,003727.000,0000.000,N,00000.000,E,0,00,99.0,0082.0,M,18.0,M,,
$GPGGA,003731.000,0000.000,N,00000.000,E,0,00,99.0,0082.0,M,18.0,M,,
$GPGGA,003735.000,0000.000,N,00000.000,E,0,00,99.0,0082.0,M,18.0,M,,
$GPGGA,003739.000,0000.000,N,00000.000,E,0,00,99.0,0082.0,M,18.0,M,,
$GPGGA,003743.000,0000.000,N,00000.000,E,0,00,99.0,0082.0,M,18.0,M,,
$GPGGA,003747.000,0000.000,N,00000.000,E,0,00,99.0,0082.0,M,18.0,M,,
$GPGGA,003751.000,0000.000,N,00000.000,E,0,00,99.0,0082.0,M,18.0,M,,
$GPGGA,003755.000,0000.000,N,00000.000,E,0,00,99.0,0082.0,M,18.0,M,,

Alguien me podria ayudar???

Gracias

Es posible que no tengas ningún fix o que no estés extrayendo bien la información.

Tienes la antena en una zona despejada sin ningún techo?

  • problema con fix, no esta viendo ningún satélite.

El programa esta imprimiendo lo que esta leyendo del receptor?
En caso contrario es posible que tengas algún problema al configurar la lectura de la linea serie, velocidad, ...

La tengo puesta en el balcon la antena, lo unico que podria ser que el edificio hiciese de sombre y no le llegara la señal, el codigo es el siguiente por si tuviese algun error:

// include the SoftwareSerial library
#include <SoftwareSerial.h>

// Constants
#define rxPin 9
#define txPin 8

// set up the serial port

SoftwareSerial mySerial = SoftwareSerial(rxPin, txPin);

// variables
byte byteGPS = 0;
int i = 0;
int indices[13];
int cont = 0;
int conta = 0;

char inBuffer[300] = "";

int k = 0;

void setup(){

//setup for mySerial port
pinMode(rxPin, INPUT);
pinMode(txPin, OUTPUT);
mySerial.begin(4800);

//setup for Serial port
Serial.begin(19200);

// setup the GPS module en la posicion de loteria 2, Bilbao
Serial.println("Configurando GPS...");
delay(1000);
mySerial.println("$PSTMNMEACONFIG,0,4800,1,1"); // configure NMEA sentences to show only GGA sentence
delay(100);

// command for setting time and position
// mySerial.println("$PSTMINITGPS,4315.280,N,0255.267,W,0016.0,24,01,2008,17,15,00");
mySerial.println("$GPGGA,123519,4807.038,N,01131.000,E,1,08,0.9,545.4,M,46.9,M,,*47");

// "4140.000,N" means: Latitude 41º40'00.0" North
// "00053.000,W" means: Longitude 0º53'00.0" West
// "0197" means 197 m elevation
// "22,10,2007,11,40,00" means date and time (October 22, 2.007 - 11h 40min 00sec UTC time)
}

void loop(){

byteGPS = 0;
i = 0;
while(byteGPS != 42){ // read the GGA sentence
byteGPS = mySerial.read();
inBuffer*=byteGPS;*

  • i++;*
  • }*
  • k = 0;*
  • while(inBuffer[k] != 42){*
  • Serial.print(inBuffer[k]); // write the GGA sentence*
  • k++;*
  • }*
  • Serial.println();*
  • delay(3000);*
    }

Los mas probable es que no hayas esperado el tiempo suficiente para obtener un fix de tu GPS. Habitualmente se toma un buen tiempo el descargar toda la información necesaria desde los satélites para que el GPS comience a arrojar la posición geográfica.

Cuanto tiempo has esperado ?

Me podriais explicar lo que es el FIX?? Es que estoy poco puesto en estos temas. Respecto al tiempo no lo he dejado ni media hora supongo que con menos de media hora tendria que encontrar informacion.

Cuando a mi me ha pasado algo parecido a eso, es porque el GPS estaba cascado (roto), o bien tenía poca batería. Los GPS suelen funcionar bien hasta dentro de casa... Además puedes sacar la calidad de la señal con las propias tramas del GPS.

Eso sí, yo he utilizado GPS autónomos, sin arduino. Así que, tal vez te falte algún cable por conectar, o haga falta poner algún componente electrónico...

Por cierto, tu código parece que solo está preparado para imprimir tramas GGA. Hay alguna otra trama que también puede imprimir la posición, por ejemplo RMC. Así que podrías comenzar por imprimir todos los tipos de tramas que saca el GPS...

Un saludo

En el siguiente link puedes ver un documento en donde se describen los comando que admite tu GPS.

http://www.libelium.com/squidbee/upload/7/75/GPS-Firmware.pdf

El tiempo de FIX se refiere al tiempo desde que el GPS enciende hasta que tiene toda la información necesaria para comenzar a operar.

Habitualmente los GPS autónomos deben descargar una buena cantidad de información desde los satélites antes de comenzar a operar. Existen mecanismos para respaldar esa información cuando se apaga el GPS de forma que luego es posible reutilizarla y así iniciar el aparato de forma mas rápida. Todo este tema lo puedes ver en el link anterior, específicamente los comandos en la página 17.-
Otra alternativa es darle una ubicación y hora estimada para que el dispositivo sepa donde se encuentra. Esto es lo que aparece comentado en tu código mediante el comando: PSTMINITGPS (página 16 del link)

Con el comando de configuración que usas en setup puedes indicar que quieres recibir otras sentencias además de las GGA. El comando es PSTMNMEACONFIG, y el tercer parámetro indica que tipo de sentencias quieres recibir:
1 --> GGA
4 --> GSA
8 --> GSV
16 --> VTG
64 --> RMC

Las sentencias GGA muestran los datos de ubicación
Con las sentencias GSV puedes ver los satélites a la vista.
Con las sentencias GSA puedes ver los satélites activos.
Con las sentencias VTG puedes ver los datos de curso sobre tierra y velocidad en tierra.
Con las sentencias RMC puedes ver los datos mínimos recomendados específicos para el GPS

Te recomiendo comentar la linea de código en donde escribes la sentencia GGA, me refiero a:

mySerial.println("$GPGGA,123519,4807.038,N,01131.000,E,1,08,0.9,545.4,M,46.9,M,,*47");

Y en el setup intentar hacer un Cold Start, es decir indicarle al GPS que elimine la información que pudo haber descargado y parta desde cero.

Al final consegui solucionar el problema, tarde aproximadamente unos tres días, en esos días probe cosas como cambiar el codigo, los pines a los cuales habia conectado el modulo puesto que algunos pines me daban errores que aun desconozco (lo mas probable es que esten averiados o que les haya dado un mal uso).

En resumen, un dia me fui a probar las modificaciones de codigo que hice a la calle y consegui que funcionase, no es que vaya a las mil maravillas ya que el GPS este de libelium lo siento decir mucho pero es un poco nefasto.

Gracias a todos por vuestra ayuda.

Ho la jvazquez, tengo que algo parecido,te pregunto, cual seria el mejor GPS para colocarlo en un carro, que placa arduino es la mas conveniente, que antena colocaste y bueno, puedes colocar el codigo y asi nos ayudamos muchos que estamos en foro.
Gracias

Te hablo desde mi poca experiencia que tengo, el modulo GPS que tengo es de libelium, una mierda pinchada en un palo, a la que sufe algun tipo de vibracion o cambio de temperatura como una brisa o algo parecido se vuelve loco. Si tienes pensado hacer algo con GPS, comprate uno bueno bueno de verdad no esto que tengo yo... que me arrepiento de comprarlo. Y respecto arduino segun lo que utilices yo tengo que incorporarle varias cosas y claro ahora la Arduino UNO se me queda pequeña, me estado mirando la Mega for android por si necesito algo mas para completar mi proyecto. No se si te ha servido de mucho mi explicacion. Siento contestar tan tarde...