Página principal

Grabador de datos gps XM37-1612 en SD.
Tracker Arduino


xsetaseta@gmail.com


En mis anteriores montajes había utilizado el XM37-1612 para visualizar los datos del gps en un PC y en un LCD Nokia. Ahora en este montaje he realizado un grabador de datos de gps, almacenando los datos en una SD para su posterior tratamiento.
También he realizado un programa en Gambas (VB de linux) para tratar los datos y convertirlos en un fichero con formato kml. Este formato kml se puede importar desde Google Maps y de esta forma visualizarlos en un mapa.


Prototipo en una placas board


Conexión de la SD al arduino.

Caja donde se encuentra metido todo el circuito.



El gps con la alimentación

La caja utilizada es una caja estanca de electricidad, es barata y además se pueden hacer agujeros facilmente.
La alimentación del circuito se toma de un alimentador para móviles, que suele proporcionar unos 2000mA.
Sabiendo que el circuito consume unos 55mA, tendremos una autonomía de 36 horas.
El primer led parpadea hasta que pilla señal de gps, luego se queda fijo.
El segundo led se encuentra apagado, cuando se pulsa el boton de grabar se enciende.
Si se vuelve a pulsar el boton, el led se apaga y se para la grabación.


Programa en gambas para convertir a formato kml


Ruta importada de nuestro gps.


Otra ruta importada de nuestro gps.

En el programa arduino se toman todos los datos que proporciona el gps y se graban los datos en la SD con el siguiente formato:

4200.8979,N,00431.5688,W,799.8,133357,101115,0,1325
4200.8978,N,00431.5690,W,799.3,133358,101115,0,1326
4200.8977,N,00431.5694,W,799.1,133359,101115,0,1327

El gps nos proporciona la longitud y latitud en grados y minutos con decimales, pero el formato kml requiere grados con decimales, por lo que el programa en basic hace la conversión y coloca las cabeceras. Como el gps proporciona datos cada segundo, y los datos son de 52 bytes, cada minuto ocupa 3120 bytes, es una cantidad bastante elevada. Para reducir el numero de datos que se le proporcionan al Google Maps, se puede indicar el numero de segundos entre toma.

<?xml version="1.0" encoding="UTF-8"?>
<kml xmlns="http://earth.google.com/kml/2.0">
<Document>
<Folder>
<Folder>
<name><![CDATA[RUTA]]></name>
<Placemark>
<LineString><extrude>1</extrude><altitudeMode>clampToGround</altitudeMode>
<coordinates>
-4.5261567,+42.0149617,799
-4.5261933,+42.0151600,796
-4.5265000,+42.0152850,788
-4.5266867,+42.0152883,785
-4.5268100,+42.0152450,782
-4.5267600,+42.0151033,780
-4.5268350,+42.0148733,780
-4.5268250,+42.0149117,778
</coordinates>
</LineString>
</Placemark>
</Folder>
</Folder>
</Document>
</kml>

Formato kml, este formato se puede importar con Google Maps.

El programa de arduino se puede mejorar bastante, como introducir el numero de segundos entre tomas.
También se puede trocear los ficheros para que no sean muy grandes.
En este programa me pasó de todo, desde alimentar mal durante unos segundos el gps, conectores que no hacen bien contacto, hasta borrarse parte de código de arduino y tener que escribirlo de nuevo.
En la alimentación invertida al gps creo que me cargue algo, pues ahora tarda algo mas en recibir señal.
Mi intención en un próximo montaje, es que se incorpore la batería dentro de la propia caja del gps.

PROGRAMAS

Saludos.
Juan Galaz


Bibliografía:
http://www.gpsinformation.org/dale/nmea.htm
rards.html
gamgps.html