13
Informática II – UTN Facultad Regional Mendoza Informe de Trabajo Final INTRODUCCIÓN : Título del Trabajo : “DATA TRACKER”. Resumen : A través de la Plataforma Arduino, se pretende construir un sistema embebido de registro y rastreo que cuenta con un módulo GPS. La finalidad de dicho sistema radica en poder almacenar las posiciones globales o confeccionar un registro de desplazamiento e información útil de un móvil (Tal como velocidad, tiempos en reposo y en movimiento). Este Sistema está previsto ser instalado en un camión que diariamente recorre distintos circuitos productivos, de esta manera quien esté a cargo de supervisar dicho móvil puede contar con un registro detallado de lo que sucedió en la jornada. Se aplicarán numerosos conceptos vistos en la cátedra, tales como punteros, cadena de caracteres, archivos y puertos de Comunicación. Objetivos : Aplicar los Contenidos Trabajados en el transcurso del año en la Cátedra de Informática II (Punteros, Cadenas de Caracteres, Archivos, Puertos de comunicaciones, etc.). Desarrollar Hardware para un sistema que sea práctico, ágil y de fácil montaje. Aprender a manejarse dentro la plataforma Arduino Crear un Software para el sistema embebido que sea Autónomo, es decir, que no dependa de un Usuario. Desarrollar un algoritmo eficiente que permita el registro de los datos entregados en tiempo real por el GPS en alguna unidad de almacenamiento. Establecer Comunicación entre el Sistema TRACKER y un Ordenador Personal. Construir una Interfaz que permita al usuario, luego de la conexión al sistema, visualizar, analizar e interpretar los registros almacenados. Fundamentos del Trabajo: 1

Data Tracker

Embed Size (px)

Citation preview

Page 1: Data Tracker

Informática II – UTN Facultad Regional Mendoza

Informe de Trabajo Final

INTRODUCCIÓN:

Título del Trabajo: “DATA TRACKER”.

Resumen: A través de la Plataforma Arduino, se pretende construir un sistema embebido de registro y

rastreo que cuenta con un módulo GPS. La finalidad de dicho sistema radica en poder almacenar las

posiciones globales o confeccionar un registro de desplazamiento e información útil de un móvil (Tal como

velocidad, tiempos en reposo y en movimiento). Este Sistema está previsto ser instalado en un camión que

diariamente recorre distintos circuitos productivos, de esta manera quien esté a cargo de supervisar dicho

móvil puede contar con un registro detallado de lo que sucedió en la jornada. Se aplicarán numerosos

conceptos vistos en la cátedra, tales como punteros, cadena de caracteres, archivos y puertos de

Comunicación.

Objetivos:

Aplicar los Contenidos Trabajados en el transcurso del año en la Cátedra de Informática II (Punteros,

Cadenas de Caracteres, Archivos, Puertos de comunicaciones, etc.).

Desarrollar Hardware para un sistema que sea práctico, ágil y de fácil montaje.

Aprender a manejarse dentro la plataforma Arduino

Crear un Software para el sistema embebido que sea Autónomo, es decir, que no dependa de un

Usuario.

Desarrollar un algoritmo eficiente que permita el registro de los datos entregados en tiempo real por el

GPS en alguna unidad de almacenamiento.

Establecer Comunicación entre el Sistema TRACKER y un Ordenador Personal.

Construir una Interfaz que permita al usuario, luego de la conexión al sistema, visualizar, analizar e

interpretar los registros almacenados.

Fundamentos del Trabajo:

El armado de este sistema será llevado a cabo mediante el uso de una Placa Arduino Mega (Se

Agrega hoja de datos en Anexos), esta es una plataforma de hardware libre, basada en una placa con

un microcontrolador y un entorno de desarrollo, diseñada para facilitar el uso de la electrónica en proyectos

multidisciplinares. De esta manera, se pueden construir versátilmente dispositivos embebidos, sin tener

grandes conocimientos de Electrónica.

Este tipo de Placas permite la adhesión de “Shields” o módulos ya fabricados para distintos fines, en

nuestro caso un Módulo GPS será el que comunicaremos formalmente con la placa para llevar a cabo el

proyecto.

El GPS (Sistema de Posicionamiento Global) es un sistema global de navegación por satélite que

permite determinar en todo el mundo la posición de un objeto, una persona o un vehículo con una precisión

1

Page 2: Data Tracker

Informática II – UTN Facultad Regional Mendoza

Informe de Trabajo Final

hasta de centímetros, aunque lo habitual son unos pocos metros de precisión. El sistema fue desarrollado,

instalado y actualmente operado por el Departamento de Defensa de los Estados Unidos.

Este funciona mediante una red de 24 satélites en órbita sobre el planeta tierra, a 20.200 km, con

trayectorias sincronizadas para cubrir toda la superficie de la Tierra. Cuando se desea determinar la

posición, el receptor que se utiliza para ello localiza automáticamente como mínimo tres satélites de la red,

de los que recibe unas señales indicando la identificación y la hora del reloj de cada uno de ellos. Con base

en estas señales, el aparato sincroniza el reloj del GPS y calcula el tiempo que tardan en llegar las señales

al equipo, y de tal modo mide la distancia al satélite mediante "triangulación", la cual se basa en determinar

la distancia de cada satélite respecto al punto de medición. Conocidas las distancias, se determina

fácilmente la propia posición relativa respecto a los tres satélites. Conociendo además las coordenadas o

posición de cada uno de ellos por la señal que emiten, se obtiene la posición absoluta o coordenadas reales

del punto de medición. También se consigue una exactitud extrema en el reloj del GPS, similar a la de los

relojes atómicos que llevan a bordo cada uno de los satélites.

La Programación del controlador de la placa, será llevada a cabo por el Entorno de Desarrollo

Integrado provisto por Arduino, en lenguaje C. Para ello se aplicarán los conocimientos vistos en clase. Se

establecerá una comunicación Serie con el modulo GPS, utilizando las librerías y asistencias de la

comunidad Arduino que facilitan notablemente el trabajo; se ordenarán los datos según interés y se los

registrará en una unidad de almacenamiento.

Una vez que la comunicación esté establecida, el Módulo GPS proveerá los datos a través de una

Cadena de Caracteres, la cual será recibida por el arduino, y usando las librerías correspondientes y

punteros, se podrán organizar los datos en un arreglo de estructuras para que el almacenamiento de los

mismos sea más eficiente. El muestreo de los Datos, se realizará iteradamente, o según la condición del

móvil, la lógica del programa permitirá reconocer si este está en movimiento, y si conviene o no tomar un

registro de los Datos.

La interfaz para el usuario, pretende ser sencilla, y trabajará bajo Windows, está permitirá al

supervisor o encargado del Vehículo Visualizar en la pantalla de su ordenador los registros tomados por el

sistema. De esta manera el operador podrá interpretarlos, y modificarlos para su Análisis. Se pretenden

agregar funciones complementarias tales como el Cálculo del Consumo, Promedio de Velocidades, y

Tiempos del móvil.

Una vez terminado el dispositivo, se harán las pruebas de Campo Correspondientes.

2

Page 3: Data Tracker

Informática II – UTN Facultad Regional Mendoza

Informe de Trabajo Final

DESARROLLO:

Hardware y Protocolos:

Para comenzar la investigación y desarrollo de nuestro sistema, nos valemos del Siguiente Hardware:

Placa GPS Lassen Sirf II

Arduino Mega 2560

Arduino Uno

Memoria Eeprom Atmel 24C256

3

Page 4: Data Tracker

Informática II – UTN Facultad Regional Mendoza

Informe de Trabajo Final

La placa GPS fue provista por la cátedra de Informática II de la Universidad Tecnológica Nacional, esta trabaja bajo el protocolo NMEA 0183. Si bien no se encontró la hoja de datos correspondiente a dicho módulo receptor, se investigó de cerca dispositivos de la misma familia.

Este tipo de placas desarrolladas por “Sirf”, pueden trabajar de dos modos distintos, uno es el provisto por el fabricante o “Sirf Mode”, y el otro, el mencionado NMEA. Las ventajas de uno frente al otro no son apreciables, ambos reúnen las mismas características. El modo Sirf permite que los datos provenientes del receptor GPS puedan ser interpretados por software de la misma compañía. Para nuestro desarrollo trabajaremos con NMEA, ya que permite establecer una interpretación más ágil a partir de algoritmos simples.

El NMEA 0183 es un protocolo sofisticado utilizado para la comunicación entre dispositivos electrónicos marinos tales como ecosondas, sonares, pilotos automáticos, receptores GPS y muchos otros tipos de instrumentos. Ha sido definido, y es controlado por la Asociación estadounidense de Electrónica Marítima. La versión 0183 Sustituye a la anterior NMEA 0180 y NMEA 0182 estándares, actualmente se está trabajando en el desarrollo de una versión posterior.

Dicho estándar utiliza caracteres de tipo ASCII , y una comunicación serie que define cómo se transmiten los datos en una "sentencia" de un "hablador" a varios "oyentes" a la vez.  La idea de este protocolo es enviar una línea de información que es totalmente independiente a otra.

Los datos son separados por comas, de esta manera se puede delimitar los campos correspondientes de información. Cada fabricante suele comenzar la sentencia de manera distinta, pero todos responden al mismo estándar. Todas estas sentencias tienen, por lo general, prefijos comunes “GP”, que luego sumado tres letras se especifica que datos serán los que incluya la misma. Según el fabricante, la línea comienza con “$” y termina con un retorno de carro, además no puede tener una longitud mayor a 80 caracteres de texto visible.

Tal como lo haremos en nuestro caso, los programas que interpretan la información proveniente de dicha manera, utilizan la coma para ir delimitando los campos que proveen distinta información. Al final de cada oración puede encontrarse un bloque checksum, o suma de verificación, este es una función que tiene como propósito principal detectar cambios accidentales en una secuencia de datos para proteger la integridad de datos, verificando que no haya discrepancias. La idea es que se transmita el dato junto con su valor hash, de esta forma el receptor puede calcular el valor hash de la secuencia recibida y la puede comparar con el valor hash recibido. Si hay una discrepancia se pueden rechazar los datos o pedir una retransmisión.

Hay múltiples sentencias en el estándar NMEA para todo tipo de uso en la parte, aunque sólo algunas son utilizadas para los receptores GPS:

AAM - Waypoint Arrival Alarm ALM - Almanac data APA - Auto Pilot A sentence APB - Auto Pilot B sentence BOD - Bearing Origin to Destination BWC - Bearing using Great Circle route

4

Page 5: Data Tracker

Informática II – UTN Facultad Regional Mendoza

Informe de Trabajo Final

DTM - Datum being used. GGA - Fix information GLL - Lat/Lon data GRS - GPS Range Residuals GSA - Overall Satellite data GST - GPS Pseudorange Noise Statistics GSV - Detailed Satellite data MSK - send control for a beacon receiver MSS - Beacon receiver status information. RMA - recommended Loran data RMB - recommended navigation data for gps RMC - recommended minimum data for gps RTE - route message TRF - Transit Fix Data STN - Multiple Data ID VBW - dual Ground / Water Spped VTG - Vector track an Speed over the Ground WCV - Waypoint closure velocity (Velocity Made Good) WPL - Waypoint Location information XTC - cross track error XTE - measured cross track error ZTG - Zulu (UTC) time and time to go (to destination) ZDA - Date and Time

Todas comienzan con el prefijo “$GP”.

Para el caso de los receptores SIRF, nuestro caso, sólo se utilizan las sentencias: $GPGGA, $GPGLL, $GPGSV, $GPRMC, $GPVTG.

Describiremos la información contenida en cada una de las sentencias mediante tablas de datos vinculadas a ejemplos:

GGA – Global Positioning System Fixed Data

$GPGGA, 161229.487,3723.2475,N,12158.3416,W,1,07,1.0,9.0,M,,,,0000*18

Nombre Ejemplo Unidades DescripciónID del Mensaje $GPGGA Encabezado de la Sentencia GGATiempo UTC 161229.487 hhmmss.sss Tiempo Universal CoordinadoLatitud 3723.2475 ddmm.mmmmIndicador N o S N N=Norte ó S=SurLongitud 12158.3416 dddmm.mmmmIndicador E u O W E=Este ó W=OesteModo de Posicionamiento 1 Ver Tabla

5

Page 6: Data Tracker

Informática II – UTN Facultad Regional Mendoza

Informe de Trabajo Final

Satélites en Uso 07 Rango de 0 a 12HDOP 1.0 Dilución de precisión HorizontalAltura al Nivel del Mar 9.0Unidades MChecksum *18<CR> <LF> Fin del Mensaje

Valor

Descripción

0 Modo no disponible o Inválido1 Modo GPS SPS2 Modo GPS diferencial3 Modo GPS PPS

GLL – Geographic Position – Latitude/Longitude$GPGLL, 3723.2475,N,12158.3416,W,161229.487,A*2C

Nombre Ejemplo Unidades DescripciónID del Mensaje $GPGLL Encabezado de la Sentencia GLLLatitud 3723.2475 ddmm.mmmmIndicador N o S N N=Norte ó S=SurLongitud 12158.3416 dddmm.mmmmIndicador E u O W E=Este ó W=OesteTiempo UTC 161229.487 hhmmss.sss Tiempo Universal CoordinadoEstado A A = Datos Válidos V= Datos no VálidosChecksum *2C<CR> <LF> Fin del Mensaje

GSV- GNSS Satellites in View$GPGSV,2,1,07,07,79,048,42,02,51,062,43,26,36,256,42,27,27,138,42*71

$GPGSV2,2,07,09,23,313,42,04,19,159,41,15,12,041,42*41

Nombre Ejemplo Unidades DescripciónID del Mensaje $GPGSV Encabezado de la Sentencia GSVNúmero de Mensajes 2 Rango de 1 a 3Número del Mensaje 1 ddmm.mmmm Rango de 1 a 3Satélites en Vista 07 N=Norte ó S=Sur

6

Page 7: Data Tracker

Informática II – UTN Facultad Regional Mendoza

Informe de Trabajo Final

ID del Satélite 07 Canal 1 (Rango de 1 a 32)Elevación 79 Grados Canal 1 (Máximo 90)Azimuth 048 Grados Canal 1 (Rango de 1 a 359)SNR 42 dBHz Rango de 0 a 99…ID del Satélite 27 Canal 1 (Rango de 1 a 32)Elevación 27 Grados Canal 1 (Máximo 90)Azimuth 138 Grados Canal 1 (Rango de 1 a 359)SNR 42 dBHz Rango de 0 a 99…Checksum *71<CR> <LF> Fin del Mensaje

RMC- Recommended Minimum Specific GNSS Data$GPRMC, 161229.487,A,3723.2475,N,12158.3416,W,0.13,309.62,120598,,*10

Nombre Ejemplo Unidades DescripciónID del Mensaje $GPRMC Encabezado de la Sentencia RMCTiempo UTC 161229.487 hhmmss.sss Tiempo Universal CoordinadoEstado A A = Datos Válidos V= Datos no VálidosLatitud 3723.2475 ddmm.mmmmIndicador N o S N N=Norte ó S=SurLongitud 12158.3416 dddmm.mmmmIndicador E u O W E=Este ó W=OesteVelocidad Relativa a la Tierra 0.13 Nudos Ver TablaCurso Relativo a la Tierra 309.62 GradosFecha 120598 ddmmyyVariación Magnética GradosChecksum *18<CR> <LF> Fin del Mensaje

VTG- Course Over Ground and Ground Speed$GPVTG, 309.62, T,,M,0.13,N,0.2,K*6E

Nombre Ejemplo Unidades DescripciónID del Mensaje $GPVTG Encabezado de la Sentencia VTGCurso 309.62 GradosReferencia T VerdaderoCurso 0 GradosReferencia M MagnéticaVelocidad 0.13 NudosUnidades N NudosVelocidad 0.2 Km/hUnidades K Kilómetros por Hora

7

Page 8: Data Tracker

Informática II – UTN Facultad Regional Mendoza

Informe de Trabajo Final

Checksum *6E<CR> <LF> Fin del Mensaje

Mediante estas cinco cadenas enviadas por receptor GPS, las cuales siguen el estándar NMEA, podemos describir todos los datos pertinentes a la posición, velocidad, curso, hora, fecha, satélites, y demás estados de nuestro móvil. Sin embargo, para nuestros fines prácticos con valernos únicamente de la información proveniente de la cadena GPRMC estamos en condiciones de recibir e interpretar toda la información que deseamos conocer de nuestro móvil.

Por ello, nuestro algoritmo interpretador, almacenado en nuestra placa Arduino Mega sólo trabajará sobre la Cadena $GPRMC.

La placa GPS Sirf, permite configurar algunas cosas acerca de la emisión de Sentencias, sin embargo, esto lo detallaremos posteriormente.

Conexión

La conexión entre la placa GPS y nuestro Arduino Mega se establecerá mediante puerto serie o protocolo RS232, para establecer dicha conexión se tiene que configurar el puerto de modo tal que cumpla con:

Velocidad: 4800 baudios 8 bits de Datos Ningún tipo de Paridad 1 bit de Parada

Como vemos a la velocidad 4800b/s, se pueden enviar 480 caracteres por segundo. Si cada cadena consta de aproximadamente unos 80 caracteres es suficiente como para enviar y recibir información completa de 6 cadenas completas en un segundo. Por ello, se configura a los receptores GPS, para que lo hagan en un rango de entre 1 y 5 segundos, luego la lógica interpretadora será la encargada de definir si el dato recibido es o no relevante.

La conexión que cumple con estos parámetros se lleva a cabo mediante el puerto serie de nuestra placa Arduino, por tratarse del modelo Mega contamos con 4 puertos serie, por lo que aprovecharemos a destinar el Serial1 a la conexión con la Placa GPS, y el Serial para la conexión con la PC, el cual ya cuenta con un conversor de tipo USB, para establecer en forma Plug and Play una conexión con la PC. Esto nos beneficiará a la hora de leer la memoria directamente desde la pc, tal como lo explicaremos más adelante.

Solo serán necesarios dos cables para la conexión con la placa GPS, el de información (Rx-Tx), y la puesta a tierra. Podemos observar que el cable (Tx-Rx), es decir, el que envía información desde el arduino hacia el GPS no será necesario, ya que en este protocolo no hace falta enviar ningún tipo de dato, sólo se necesita para establecer los parámetros básicos lo cuales ya están seteados.

8

Page 9: Data Tracker

Informática II – UTN Facultad Regional Mendoza

Informe de Trabajo Final

Programación de la Placa Arduino Mega

El código de la placa es algo extensivo, sin embargo se basa en bloques de programación básicos.

Articula con la Pc, por puerto serie, preguntando si alguna orden enviada por la misma debe o no realizar una función. Y, articula con el receptor GPS mediante otro puerto serie, en el cual adquiere las cadenas provistas por el dispositivo y luego las interpreta. Como se mencionó anteriormente sólo nos interesan los datos provenientes de la sentencia $GPRMC, por lo que información de otras sentencias será descartada. Mediante el uso de los separadores (“,”) se almacena en un arreglo las posiciones correspondientes a los delimitadores de campos de información. Luego se almacena en un arreglo de estructuras la información de cada campo, esta luego es interpretada considerando si debe o no ser almacenada, diferenciada para ahorrar espacio en memoria, y finalmente almacenada en la memoria EEPROM.

El Código se encuentra listado en Anexos

Programación del Software para PC

Una de las finalidades de este trabajo es luego poder visualizar los datos almacenados en la memoria EEPROM, para ello, es de gran utilidad confeccionar una herramienta que proporcione acceso al Arduino Mega y lea la memoria EEPROM I2C.

9

Page 10: Data Tracker

Informática II – UTN Facultad Regional Mendoza

Informe de Trabajo Final

Mediante el entorno de desarrollo “Processing”, en lenguaje C, se confeccionó dicha herramienta.

A través de una interfaz para el usuario, simple e intuitiva se logró:

1. Establecer una Conexión Serie con el Arduino Mega2. Poder leer los Datos ya almacenados en memoria3. Almacenarlos en un archivo de Texto4. Cambiar el formato para una posterior importación en Google Earh5. Vaciar la Memoria Eeprom

El Código de este programa es sencillo, se encuentra adjunto en el apartado de Anexos.

Simulador GPS

10