Archivo de la etiqueta: gps

Datalogger GPS con exportación a Excel y Google Maps

¿Has pensado alguna vez en registrar las rutas que realizas en bicicleta, andando, corriendo, con tu coche o en moto?

Existen multitud de dispositivos en el mercado para registrar tus tracks (trayectos) tanto para deporte como para temas de seguridad o seguimiento de flotas de vehículos, pero… ¿por qué no hacelo tú mismo?

Con ArduinoBlocks vamos a construir y programar un datalogger (registrador de datos) de nuestros trayectos de una forma muy sencilla, además vamos a poder volcar esos datos registrados en formato CSV para tratarlos en programas como Excel o poder visualizar los datos sobre un mapa tipo Google Maps….

Material necesario:

Esquema de conexión:

SD MOSI -> Pin 11

SD MISO -> Pin 12

SD SCK -> Pin 13

SD CS -> Pin 4

GPS RX -> Pin 2

GPS TX -> Pin 3

Led (a través de resistencia 220 Ω a GND) -> Pin 5 (PWM)

Programa:

Inicialización de los módulos:

Bucle principal del programa:

El led está encendido a muy poca intensidad durante el funcionamiento del programa, por un lado se comprueba contínuamente si hay algún dato pendiente de procesar recibido por el puerto serie (desde la consola), por otro lado cada 5 segundos se comprueba si el GPS tiene datos válidos y en ese caso se guarda un registro en la tarjeta SD.

Procesar comando (un número recibido desde la consola serie):

Si recibimos un “1” volcamos todo el contenido del archivo de registro a través del puerto serie (para visualizarlo en la consola)

Si recibimos un “2” borramos el archivo de registro, para hacer un reset y empezar un nuevo registro vacío.

Registrar fecha/hora y posición en una línea en el archivo de registro:

El formato es CSV separado por “;”

Formato de línea guardado:   d/m/y h:m:s ; latitud ; longitud ; altitud

Resultado del funcionamiento:

Probamos a realizar un recorrido con el GPS datalogger, cuando el receptor GPS obtiene una posición correcta vemos como cada 5s se ilumina intensamiente el led indicando que se realiza el registro de datos.

Para mover el datalogger más fácilmente, se adapta a una versión “portátil” del montaje… el tupperware nunca falla! 😉

Desde la consola enviando el valor “1” podemos recibir todos los datos almacenados:

Copiamos y pegamos todas las líneas de log en un editor de textos (bloc de notas o similar) y lo guardamos con extensión “.csv”

(Otra opción sería desconectar el datalogger, extraear la tarjeta y copiar el archivo “gps.csv” al PC)

Con doble click podemos abrirlo en Excel o LibreOffice Calc para analizar y procesar la información. Añadiremos los nombres de las columnas para poder procesar la información automáticamente con otra aplicación. Guardamos en formato Excel (.xls)

En la siguiente web podemos subir el archivo Excel generado y obtener el archivo KML compatible con Google Earth:

https://www.earthpoint.us/ExcelToKml.aspx

Una vez generado podemos abrir y visualizar todos los puntos sobre el mapa (al usar la altitud los puntos se muestran según la elevación si no se quiere simplemente eliminamos la columna de la altitud del excel).

Posibles mejoras y funcionalidades del proyecto:

  • Añadir un pulsador o botón para iniciar y parar la recogida de datos cuando queramos.
  • Modificar el tiempo de registro (cuanto menor tiempo entre toma de registros tendremos más precisión pero también ocuparán más los datos)
  • Añadir más campos al archivo de registro (por ejemplo la velocidad).
  • No recoger datos cuando no hemos recorrido una distancia mínima desde el último punto recogido o cuando la velocidad actual es muy baja (por ejemplo menor que 2 km/h) y así no registrar datos mientras no nos movemos.
  • Añadir una pantalla LCD para mostrar información básica.

Enlace al proyecto compartido:

http://arduinoblocks.com/web/project/869

Y recuerda… si quieres ver más proyectos resueltos y un manual completo del entorno ArduinoBlock tienes en Amazon disponible el libro oficial…

https://www.amazon.es/ArduinoBlocks-Programaci%C3%B3n-visual-bloques-Arduino/dp/1535513284/

Compartir

Nuevos bloques para módulos GPS

Nuevos bloques en ArduinoBlocks para utilizar módulos GPS!

Los módulos GPS serie son fáciles de conseguir, podemos encontrarlos en forma de módulo independiente o como una shield para Arduino. Uno de los chips GPS más utilizado es el NEO-6. Los módulos GPS permiten obtener las coordenadas de nuestra posición actual (latitud y longitud) de una forma muy precisa, además de otros datos como altitud, velocidad, y fecha y hora.

gps_neo-6m

2016-12-04-21_25_30-aliexpress-com_-comprar-shield-gps-para-arduino-uno-r3-elecrow-con-ranura-sd-ant

El módulo sólo tiene 4 conexiones. GND,VCC, RX y TX por lo que la conexión con la placa Arduino es muy sencilla (en el ejemplo usamos los pines 2 y 3 de Arduino):

2016-12-04-21_38_45-gy-neo6mv2-fzz_-fritzing-vista-de-protoboard-placa-de-prototipos

img_20161204_214244

Bloques GPS de ArduinoBlocks:

GPS Iniciar: Este bloque se colocará normalmente dentro del bloque de Inicializaición. Lo único que tenemos que indicarle es los pines donde conectamos las patillas de Rx (recibir) y Tx (transmitir) del módulo GPS.

2016-12-04-21_46_42-arduinoblocks

¿Datos válidos?: Este bloque es muy importante, antes de utilizar cualquier de los datos suministrados por el GPS debemos validar que son datos correctos (si se pierde la señal GPS los datos se invalidan). Este bloque será verdadero cuando los datos del GPS sean correctos y falso cuando no.

2016-12-04-21_48_55-arduinoblocks

2016-12-04-21_51_33-arduinoblocks

Distancia entre: Calcula la distancia (en metros) entre unas coordenadas (latitud/longitud) origen y otras coordenadas (latitud/longitud) destino.

Ejemplo: Distancia entre Barcelona y Madrid

2016-12-04-22_30_18-arduinoblocks

Ejemplo: Distancia entr mi posición actual y Madrid

2016-12-04-22_32_54-arduinoblocks

Campos de datos: posición (latitud / longitud), velocidad (km/h o millas/h), altitud (metros) , rumbo (grados), fecha y hora del GPS (sin ajuste de verano/invierno):

2016-12-04-21_52_22-arduinoblocks

IMPORTANTE: El módulo GPS internamente está continuamente recibiendo y procesando información, cuando utilicemos bloques de GPS no debemos utilizar bloques de tipo "esperar" que bloquean el funcionamiento del programa totalmente, provocando un mal funcionamiento general del programa.

Para más información sobre programar con tareas periódicas sin bloquear el procesamiento consultar esta entrada del blog:

Multitarea sin bloqueo

Eemplo completo de uso de los bloques GPS:

Mostrar la información de posición, velocidad y fecha/hora del GPS por la consola serie:

2016-12-04-23_43_02-arduinoblocks 2016-12-04-23_43_39-arduinoblocks

2016-12-04-23_31_42-arduinoblocks

Código del ejemplo:

http://arduinoblocks.com/web/project/editor/583

Ejemplo con módulo GPS y pantalla LCD:

img_20161204_230554http://arduinoblocks.com/web/project/585

Código del ejemplo:

http://arduinoblocks.com/web/project/584

+Proyectos de ejemplo:

GPS tupperware 1.0 – visualiza datos y muestra la distancia total recorrida

GPS aviso de velocidad – avisa al superar la velocidad límite

 

Y recuerda, para aprenderlo todo sobre ArduinoBlocks no te puede faltar el libro oficial:

portada_delante_smalles_175

 

Compartir