Skip to content

Probando el GPS

El montaje con el módulo GPS es el siguiente:

Montaje ZigBee+GPS+acelerómetro+Arduino

Como se puede observar, el acelerómetro ahora está en la posición vertical para permitir conectar el GPS en el espacio que deja para ello el módulo de XBee.

El acelerómetro se leerá en los puertos 4 y 5, mientras que el GPS se leerá por software en los puertos 8 y 9.

Utilizando la librería GPS modificada por mí (original de D. Cuartielles), el siguiente código ha de enviar al ordenador, utilizando el puerto serie del arduino, las sentencias GGA:

#include "LB_GPS.h"

void setup(){
  Serial.begin(19200);

  Serial.println(GPS.getLibVersion());

  // GPS warm-up time
  delay(1000);

  // Localización inicial en mi librería: Betanzos
  GPS.init();
  GPS.setDate("01,03,2011");
  GPS.setTime("11,00,00");

  // done!
  Serial.println("done!");
}

void loop(){
  Serial.println(GPS.getRaw(100));
  delay(5000);
}

Tras realizar pruebas y llegar a la conclusión de que el cable de conexión de la antena estaba defectuoso, el que en la imagen superior es el de color blanco conectado al módulo GPS (mucho cuidado, parece ser que son muy sensibles y suelen estropearse), el GPS ha encontrado hasta 6 satélites. Como se puede ver en la siguiente captura, la información es la siguiente:

  • Hora UTC: 123101 = 12:31:01
  • Latitud: 43º 21,118 minutos N
  • Longitud 8º 23.506 minutos W
  • 1 : Valor GPS válido
  • 05: 5 satélites a la vista
  • 11.8: Dilución de precisión horizontal (en este caso, medida “pasable”)
  • 54.7: Altura de la antena en metros.

Podemos consultar el log para extraer conclusiones sobre el funcionamiento:

V01a-fix
done!
GPGGA,105949.000,4328.193,N,00821.111,W,0,00,99.0,-053.0,M,53.0,M,, [1]
...
GPGGA,110530.000,4328.193,N,00821.111,W,0,00,99.0,-053.0,M,53.0,M,, [2]
GPGGA,115321.000,4328.193,N,00821.111,W,0,00,99.0,-053.0,M,53.0,M,, [3]
GPGGA,115352.000,4328.193,N,00821.111,W,0,01,99.0,-053.0,M,53.0,M,, [4]
...
GPGGA,122245.000,4328.193,N,00821.111,W,0,01,99.0,-053.0,M,53.0,M,, [5]
GPGGA,122316.000,4328.193,N,00821.111,W,0,02,99.0,-053.0,M,53.0,M,, [6]
...
GPGGA,122622.000,4328.193,N,00821.111,W,0,02,99.0,-053.0,M,53.0,M,, [7]
GPGGA,122653.000,4328.193,N,00821.111,W,0,04,31.0,-053.0,M,53.0,M,, [8]
GPGGA,122724.000,4320.986,N,00823.543,W,1,04,29.9,-041.4,M,52.9,M,, [9]
GPGGA,122755.000,4321.017,N,00823.519,W,1,04,28.5,0012.9,M,52.9,M,,
GPGGA,122826.000,4321.060,N,00823.507,W,1,05,10.3,0046.4,M,52.9,M,,
GPGGA,122857.000,4321.088,N,00823.504,W,1,05,10.6,0053.1,M,52.9,M,,
...
GPGGA,123305.000,4321.115,N,00823.503,W,1,05,12.3,0057.8,M,52.9,M,,
GPGGA,123336.000,4321.123,N,00823.503,W,1,06,1.7,0053.6,M,52.9,M,, [10]
GPGGA,123407.000,4321.132,N,00823.504,W,1,07,1.3,0049.1,M,52.9,M,,
GPGGA,123438.000,4321.134,N,00823.505,W,1,06,1.9,0045.3,M,52.9,M,,
...
GPGGA,124733.000,4321.131,N,00823.508,W,1,05,2.0,0066.5,M,52.9,M,,
GPGGA,124804.000,4321.131,N,00823.508,W,1,04,2.5,0067.4,M,52.9,M,,
GPGGA,124835.000,4321.130,N,00823.508,W,1,04,2.5,0067.7,M,52.9,M,,
GPGGA,124906.000,4321.130,N,00823.507,W,1,04,2.4,0069.4,M,52.9,M,,
GPGGA,124937.000,4321.134,N,00823.508,W,1,03,9.2,0070.6,M,52.9,M,,
GPGGA,125008.000,4321.133,N,00823.508,W,1,03,8.8,0070.4,M,52.9,M,,

Las coordenadas iniciales que puse en el código fueron las de betanzos ( 4328.193,N,00821.111,W), que son las que aparecen a partir de [1].

Notar que antes de indicar que ha encontrado 1 satélite ([4]), actualiza la hora al horario UTC ([3]).

El tiempo de adquisición del primer satélite fue de unos 7 minutos.

El tiempo hasta adquirir 4 satélites ([8]) fue de unos 40 minutos, a pesar de que el valor es inaceptable (error más o menos 30), pero ya marca el dato “fix” como 1, que significa “válido” ([9]).

El tiempo de acquisición de 6 satélites ([10]) y comenzar a calcular un posicionamiento considerado “excelente” es de unos 45 minutos.

Los valores de error menor de 2 (excelente) aparecen cuando se encuentran 6 o más satélites, aumentando el error hasta casi 10 al perder satélites y quedarse con 3. La medición con 4 satélites, tras tener 6 satélites previamente, se mantiene en “buena” con un valor de error entre 2 y 3.

Comentar que, a pesar de que el GPS  indica un valor “excelente”, comprobando en Google Maps y SIGPAC, muestra un error de unos 30 metros.

Coordenadas en Google Maps

Al tratar de visualizar coordenadas en Google Maps, si se utiliza directamente el valor devuelto por el GPS se comprobará que no son coordenadas aceptadas, y en el supuesto caso de que simplemente cambiemos el punto decimal de las coordenadas detrás de los grados (4321.133N a 43.2133N,o incluso 43º 21′ 133”N) nos dará la sensación de que el GPS posee muy poca precisión.

En todos los casos, se ha de seguir el valor de coordeanda con N,S,E,W, o anteponer la coordenada con el signo menos ‘-‘ en el caso de que sea sur(S) u oeste(W) si se omite la letra de punto cardinal.

El formato que devuelve el GPS es el siguiente:

  • Para latitud: GGMM.MMMMM. Es decir, las 2 primeras cifras para grados y el resto son los minutos en decimal.
  • Para longitud: GGGMM.MMMMM. Es decir, las 3 primeras cifras para grados y el resto son los minutos en decimal.

El formato aceptado por Google Maps son 3:

  • Posición en grados decimales: 43.352216
  • Posición en grados, minutos y segundos: 43º 21′ 8”
  • Un tercer modo que se describe más abajo

Ambos ejemplos anteriores corresponden al valor del GPS 4321.133

¿Cómo funciona la conversión? Lo único que hay que tener en cuenta es que 1 grado decimal son 60 minutos y 1 minuto son 60 segundos. Por ello, para pasar de grados-minutos-segundos a grados decimales, la operación es: grados+minutos/60+segundos/3600.

El tercer modo es aprovechar que Google Maps realiza la conversión entre grados-minutos-segundos y grados decimales automáticamente, de manera que le indicamos los grados y los minutos decimales: 43º21.133’N; la conversión a este formato desde el valor recibido del GPS es algo sencillo.

V01a-fix
done!
GPGGA,105949.000,4328.193,N,00821.111,W,0,00,99.0,-053.0,M,53.0,M,,
GPGGA,110020.000,4328.193,N,00821.111,W,0,00,99.0,-053.0,M,53.0,M,,
GPGGA,110051.000,4328.193,N,00821.111,W,0,00,99.0,-053.0,M,53.0,M,,
GPGGA,110122.000,4328.193,N,00821.111,W,0,00,99.0,-053.0,M,53.0,M,,
GPGGA,110153.000,4328.193,N,00821.111,W,0,00,99.0,-053.0,M,53.0,M,,
GPGGA,110224.000,4328.193,N,00821.111,W,0,00,99.0,-053.0,M,53.0,M,,
GPGGA,110255.000,4328.193,N,00821.111,W,0,00,99.0,-053.0,M,53.0,M,,
GPGGA,110326.000,4328.193,N,00821.111,W,0,00,99.0,-053.0,M,53.0,M,,
GPGGA,110357.000,4328.193,N,00821.111,W,0,00,99.0,-053.0,M,53.0,M,,
GPGGA,110428.000,4328.193,N,00821.111,W,0,00,99.0,-053.0,M,53.0,M,,
GPGGA,110459.000,4328.193,N,00821.111,W,0,00,99.0,-053.0,M,53.0,M,,
GPGGA,110530.000,4328.193,N,00821.111,W,0,00,99.0,-053.0,M,53.0,M,,
GPGGA,115321.000,4328.193,N,00821.111,W,0,00,99.0,-053.0,M,53.0,M,,
GPGGA,115352.000,4328.193,N,00821.111,W,0,01,99.0,-053.0,M,53.0,M,,
GPGGA,115423.000,4328.193,N,00821.111,W,0,01,99.0,-053.0,M,53.0,M,,
GPGGA,115454.000,4328.193,N,00821.111,W,0,01,99.0,-053.0,M,53.0,M,,
GPGGA,115525.000,4328.193,N,00821.111,W,0,01,99.0,-053.0,M,53.0,M,,
GPGGA,115556.000,4328.193,N,00821.111,W,0,01,99.0,-053.0,M,53.0,M,,
GPGGA,115627.000,4328.193,N,00821.111,W,0,01,99.0,-053.0,M,53.0,M,,
GPGGA,115658.000,4328.193,N,00821.111,W,0,01,99.0,-053.0,M,53.0,M,,
GPGGA,115729.000,4328.193,N,00821.111,W,0,01,99.0,-053.0,M,53.0,M,,
GPGGA,115800.000,4328.193,N,00821.111,W,0,01,99.0,-053.0,M,53.0,M,,
GPGGA,115831.000,4328.193,N,00821.111,W,0,01,99.0,-053.0,M,53.0,M,,
GPGGA,115902.000,4328.193,N,00821.111,W,0,01,99.0,-053.0,M,53.0,M,,
GPGGA,115933.000,4328.193,N,00821.111,W,0,01,99.0,-053.0,M,53.0,M,,
GPGGA,120004.000,4328.193,N,00821.111,W,0,01,99.0,-053.0,M,53.0,M,,
GPGGA,120035.000,4328.193,N,00821.111,W,0,01,99.0,-053.0,M,53.0,M,,
GPGGA,120106.000,4328.193,N,00821.111,W,0,01,99.0,-053.0,M,53.0,M,,
GPGGA,120137.000,4328.193,N,00821.111,W,0,01,99.0,-053.0,M,53.0,M,,
GPGGA,120208.000,4328.193,N,00821.111,W,0,01,99.0,-053.0,M,53.0,M,,
GPGGA,120239.000,4328.193,N,00821.111,W,0,01,99.0,-053.0,M,53.0,M,,
GPGGA,120310.000,4328.193,N,00821.111,W,0,01,99.0,-053.0,M,53.0,M,,
GPGGA,120341.000,4328.193,N,00821.111,W,0,01,99.0,-053.0,M,53.0,M,,
GPGGA,120409.000,4328.193,N,00821.111,W,0,01,99.0,-053.0,M,53.0,M,,
GPGGA,120440.000,4328.193,N,00821.111,W,0,01,99.0,-053.0,M,53.0,M,,
GPGGA,120511.000,4328.193,N,00821.111,W,0,01,99.0,-053.0,M,53.0,M,,
GPGGA,120542.000,4328.193,N,00821.111,W,0,01,99.0,-053.0,M,53.0,M,,
GPGGA,120613.000,4328.193,N,00821.111,W,0,01,99.0,-053.0,M,53.0,M,,
GPGGA,120644.000,4328.193,N,00821.111,W,0,01,99.0,-053.0,M,53.0,M,,
GPGGA,120715.000,4328.193,N,00821.111,W,0,01,99.0,-053.0,M,53.0,M,,
GPGGA,120746.000,4328.193,N,00821.111,W,0,01,99.0,-053.0,M,53.0,M,,
GPGGA,120817.000,4328.193,N,00821.111,W,0,01,99.0,-053.0,M,53.0,M,,
GPGGA,120848.000,4328.193,N,00821.111,W,0,01,99.0,-053.0,M,53.0,M,,
GPGGA,120919.000,4328.193,N,00821.111,W,0,01,99.0,-053.0,M,53.0,M,,
GPGGA,120950.000,4328.193,N,00821.111,W,0,01,99.0,-053.0,M,53.0,M,,
GPGGA,121021.000,4328.193,N,00821.111,W,0,01,99.0,-053.0,M,53.0,M,,
GPGGA,121052.000,4328.193,N,00821.111,W,0,01,99.0,-053.0,M,53.0,M,,
GPGGA,121123.000,4328.193,N,00821.111,W,0,01,99.0,-053.0,M,53.0,M,,
GPGGA,121154.000,4328.193,N,00821.111,W,0,01,99.0,-053.0,M,53.0,M,,
GPGGA,121225.000,4328.193,N,00821.111,W,0,01,99.0,-053.0,M,53.0,M,,
GPGGA,121256.000,4328.193,N,00821.111,W,0,01,99.0,-053.0,M,53.0,M,,
GPGGA,121327.000,4328.193,N,00821.111,W,0,01,99.0,-053.0,M,53.0,M,,
GPGGA,121358.000,4328.193,N,00821.111,W,0,01,99.0,-053.0,M,53.0,M,,
GPGGA,121429.000,4328.193,N,00821.111,W,0,01,99.0,-053.0,M,53.0,M,,
GPGGA,121500.000,4328.193,N,00821.111,W,0,01,99.0,-053.0,M,53.0,M,,
GPGGA,121531.000,4328.193,N,00821.111,W,0,01,99.0,-053.0,M,53.0,M,,
GPGGA,121602.000,4328.193,N,00821.111,W,0,01,99.0,-053.0,M,53.0,M,,
GPGGA,121633.000,4328.193,N,00821.111,W,0,01,99.0,-053.0,M,53.0,M,,
GPGGA,121704.000,4328.193,N,00821.111,W,0,01,99.0,-053.0,M,53.0,M,,
GPGGA,121735.000,4328.193,N,00821.111,W,0,01,99.0,-053.0,M,53.0,M,,
GPGGA,121806.000,4328.193,N,00821.111,W,0,01,99.0,-053.0,M,53.0,M,,
GPGGA,121837.000,4328.193,N,00821.111,W,0,01,99.0,-053.0,M,53.0,M,,
GPGGA,121908.000,4328.193,N,00821.111,W,0,01,99.0,-053.0,M,53.0,M,,
GPGGA,121939.000,4328.193,N,00821.111,W,0,01,99.0,-053.0,M,53.0,M,,
GPGGA,122010.000,4328.193,N,00821.111,W,0,01,99.0,-053.0,M,53.0,M,,
GPGGA,122041.000,4328.193,N,00821.111,W,0,01,99.0,-053.0,M,53.0,M,,
GPGGA,122112.000,4328.193,N,00821.111,W,0,01,99.0,-053.0,M,53.0,M,,
GPGGA,122143.000,4328.193,N,00821.111,W,0,01,99.0,-053.0,M,53.0,M,,
GPGGA,122214.000,4328.193,N,00821.111,W,0,01,99.0,-053.0,M,53.0,M,,
GPGGA,122245.000,4328.193,N,00821.111,W,0,01,99.0,-053.0,M,53.0,M,,
GPGGA,122316.000,4328.193,N,00821.111,W,0,02,99.0,-053.0,M,53.0,M,,
GPGGA,122347.000,4328.193,N,00821.111,W,0,02,99.0,-053.0,M,53.0,M,,
GPGGA,122418.000,4328.193,N,00821.111,W,0,02,99.0,-053.0,M,53.0,M,,
GPGGA,122449.000,4328.193,N,00821.111,W,0,02,99.0,-053.0,M,53.0,M,,
GPGGA,122520.000,4328.193,N,00821.111,W,0,02,99.0,-053.0,M,53.0,M,,
GPGGA,122551.000,4328.193,N,00821.111,W,0,02,99.0,-053.0,M,53.0,M,,
GPGGA,122622.000,4328.193,N,00821.111,W,0,02,99.0,-053.0,M,53.0,M,,
GPGGA,122653.000,4328.193,N,00821.111,W,0,04,31.0,-053.0,M,53.0,M,,
GPGGA,122724.000,4320.986,N,00823.543,W,1,04,29.9,-041.4,M,52.9,M,,
GPGGA,122755.000,4321.017,N,00823.519,W,1,04,28.5,0012.9,M,52.9,M,,
GPGGA,122826.000,4321.060,N,00823.507,W,1,05,10.3,0046.4,M,52.9,M,,
GPGGA,122857.000,4321.088,N,00823.504,W,1,05,10.6,0053.1,M,52.9,M,,
GPGGA,122928.000,4321.106,N,00823.504,W,1,05,11.0,0056.1,M,52.9,M,,
GPGGA,122959.000,4321.114,N,00823.505,W,1,05,11.2,0058.5,M,52.9,M,,
GPGGA,123030.000,4321.113,N,00823.505,W,1,05,11.5,0057.9,M,52.9,M,,
GPGGA,123101.000,4321.118,N,00823.506,W,1,05,11.8,0054.7,M,52.9,M,,
GPGGA,123132.000,4321.114,N,00823.505,W,1,05,12.0,0055.7,M,52.9,M,,
GPGGA,123203.000,4321.115,N,00823.503,W,1,05,12.1,0055.4,M,52.9,M,,
GPGGA,123234.000,4321.113,N,00823.502,W,1,04,16.1,0058.2,M,52.9,M,,
GPGGA,123305.000,4321.115,N,00823.503,W,1,05,12.3,0057.8,M,52.9,M,,
GPGGA,123336.000,4321.123,N,00823.503,W,1,06,1.7,0053.6,M,52.9,M,,
GPGGA,123407.000,4321.132,N,00823.504,W,1,07,1.3,0049.1,M,52.9,M,,
GPGGA,123438.000,4321.134,N,00823.505,W,1,06,1.9,0045.3,M,52.9,M,,
GPGGA,123509.000,4321.135,N,00823.507,W,1,06,1.9,0042.1,M,52.9,M,,
GPGGA,123540.000,4321.135,N,00823.508,W,1,06,1.9,0042.3,M,52.9,M,,
GPGGA,123611.000,4321.134,N,00823.508,W,1,06,1.9,0044.9,M,52.9,M,,
GPGGA,123642.000,4321.135,N,00823.508,W,1,06,1.9,0045.2,M,52.9,M,,
GPGGA,123713.000,4321.135,N,00823.508,W,1,06,1.9,0045.0,M,52.9,M,,
GPGGA,123744.000,4321.135,N,00823.508,W,1,06,1.9,0045.5,M,52.9,M,,
GPGGA,123815.000,4321.135,N,00823.508,W,1,06,1.9,0045.5,M,52.9,M,,
GPGGA,123846.000,4321.135,N,00823.508,W,1,06,1.9,0046.0,M,52.9,M,,
GPGGA,123917.000,4321.136,N,00823.508,W,1,06,1.9,0046.6,M,52.9,M,,
GPGGA,123948.000,4321.136,N,00823.508,W,1,06,1.9,0046.3,M,52.9,M,,
GPGGA,124019.000,4321.136,N,00823.508,W,1,05,2.2,0046.8,M,52.9,M,,
GPGGA,124050.000,4321.137,N,00823.507,W,1,05,2.2,0048.1,M,52.9,M,,
GPGGA,124121.000,4321.137,N,00823.507,W,1,05,2.2,0049.2,M,52.9,M,,
GPGGA,124152.000,4321.134,N,00823.506,W,1,04,3.1,0051.6,M,52.9,M,,
GPGGA,124223.000,4321.132,N,00823.507,W,1,04,3.0,0052.5,M,52.9,M,,
GPGGA,124254.000,4321.134,N,00823.507,W,1,06,1.9,0054.8,M,52.9,M,,
GPGGA,124325.000,4321.134,N,00823.506,W,1,05,2.4,0056.4,M,52.9,M,,
GPGGA,124356.000,4321.133,N,00823.508,W,1,05,2.4,0060.4,M,52.9,M,,
GPGGA,124427.000,4321.132,N,00823.506,W,1,05,2.4,0064.8,M,52.9,M,,
GPGGA,124458.000,4321.130,N,00823.508,W,1,05,2.4,0065.9,M,52.9,M,,
GPGGA,124529.000,4321.130,N,00823.509,W,1,05,2.4,0068.1,M,52.9,M,,
GPGGA,124600.000,4321.130,N,00823.508,W,1,04,2.7,0069.1,M,52.9,M,,
GPGGA,124631.000,4321.131,N,00823.508,W,1,04,2.6,0065.7,M,52.9,M,,
GPGGA,124702.000,4321.132,N,00823.508,W,1,05,2.0,0065.0,M,52.9,M,,
GPGGA,124733.000,4321.131,N,00823.508,W,1,05,2.0,0066.5,M,52.9,M,,
GPGGA,124804.000,4321.131,N,00823.508,W,1,04,2.5,0067.4,M,52.9,M,,
GPGGA,124835.000,4321.130,N,00823.508,W,1,04,2.5,0067.7,M,52.9,M,,
GPGGA,124906.000,4321.130,N,00823.507,W,1,04,2.4,0069.4,M,52.9,M,,
GPGGA,124937.000,4321.134,N,00823.508,W,1,03,9.2,0070.6,M,52.9,M,,
GPGGA,125008.000,4321.133,N,00823.508,W,1,03,8.8,0070.4,M,52.9,M,,

{ 1 } Comments

  1. Paco Portalo | May 10, 2012 at 7:46 am | Permalink

    Hola Alfonso,
    En principio te felicito por el trabajo que estás haciendo ¿ Ya lo terminaste?
    No solo el contenido , sini la idea de presentarlo en un bllog me parece muy interesante.
    Yo estoy terminando Ing Electrónica y estoy haciendo una práctica, mucho más simple que tu proyecto, para obtener información de un GPS con un arduino ( no veo el modelo que utilizas) .
    Imagino que las conexiones cambiarán algo si se trata de un uno o un mega…
    También me gustaría saber si te planteaste utilizar el GPS V1037 B con protocolo SIRF III pero mas caro.
    En fin si tienes un rato me comentas lo que sea
    Saludos

Post a Comment

Your email is never published nor shared. Required fields are marked *