Descarga - Universidad Nacional de San Juan

Anuncio
Universidad Nacional de San Juan
Facultad de Ingeniería
GPS Tracker
Informe Proyecto
Garcia, Jorge
Reg: 23107
Gilyam, Juan Pablo
Reg: 23120
Año: 2012
Índice
Introducción
Aplicaciones
Objetivos
-
Generales
-
Específicos
Descripción modulo GPS
Ordenador PC-104
Sistema operativo
Placa Interfaz
-
Funcionamiento
-
Diseño
Software
API de Google Maps
Pruebas
Conclusiones
Bibliografia
Introducción
Un GPS Tracker es un dispositivo que utiliza el Sistema de Posicionamiento Global para
determinar la ubicación exacta de un vehículo o persona. Los datos de localización
recibidos pueden ser almacenados dentro de la unidad de seguimiento, o pueden ser
transmitidos a una central remota usando algún tipo de comunicación inalámbrica. Los
datos pueden ser analizados en tiempo real o luego de haberse realizado la toma de
los mismos.
Aplicaciones
Este dispositivo puede ser utilizado para:
-
Monitoreo de cargas peligrosas
-
Seguridad y control en vehículos de transporte de media y larga distancia
-
Monitoreo de vehículos de pasajeros
-
Analizar el comportamiento frente al volante de conductores de vehículos de
larga distancia
Objetivo general
Desarrollar el hardware y software necesario para la implementación de un sistema
que sea capaz de leer los datos provenientes de un GPS, almacenarlos y mostrar la
trayectoria en un mapa (Google Maps).
Diagrama en bloques
GPS
Placa Interfaz
Puerto Serie
PC
Software
Google Maps
Objetivos específicos
-
Configurar GPS el envió de las tramas necesarias.
-
Diseñar una placa interfaz entre el usuario y el dispositivo.
-
Instalar un sistema operativo apto para el PC-104.
-
Realizar el software encargado de la lectura y almacenado de los datos.
-
Generar los archivos necesarios que permitan la visualización del recorrido en
un mapa.
Descripción modulo GPS
El modulo GPS utilizado en el proyecto es el GPS 18-5Hz de la firma Garmin.
El mismo exterioriza la información mediante el protocolo de comunicación RS232.
Este modelo en particular no trae un conector estandarizado, sino que dispone en
cables individuales todas las señales que maneja. De la hoja de datos del fabricante se
extrajo el conexionado del dispositivo.
La forma en que el GPS entrega sus datos es a través del protocolo NMEA (National
Marine Electronics Association). Básicamente consiste en tramas de datos separadas
por comas (“,”), donde la primera trama es un descriptor de paquete que indica el tipo
de información de la trama.
Es posible configurar en el GPS que tramas se desean recibir. Esto se realiza mediante
un software proporcionado por el fabricante.
En nuestro caso solo son necesarias dos tramas. De ellas se podrá extraer la siguiente
información.
-
Latitud
-
Longitud
-
Altura
-
Velocidad
-
Señal del GPS.
Mediante este último dato es posible saber si el GPS recibe señal de los satélites. Si no
sucede esto, la información enviada por éste corresponde al último dato válido.
Las tramas enviadas tiene el siguiente formato
Ordenador PC 104
El computador utilizado para el desarrollo del presente trabajo es una PC de
arquitectura 104, modelo PM-LX-800. Este posee las siguientes características
-
Compatible con AMD. Geode™ LX 800 CPU
-
Soporta una velocidad de 500MHz en su bus.
-
DDR 333 SO-DIMM SDRAM arriba de 1GB
-
Compatibilidad completa con IDE, CFII, PCI-104, LAN, y 2 x USB2.0 y x RS-232
-
Soporta 24-bit TTL LCD
PC/104 o PC104 es un estándar de ordenador embebido que define el formato de
la placa base y el bus del sistema.
A diferencia de la clásica arquitectura ATX y bus PCI que son usados en la mayoría de
los ordenadores personales, el PC/104 está diseñado para aplicaciones específicas,
como adquisición de datos o sistemas de control industrial.
La arquitectura de la placa base no es la típica placa de circuitos integrados en el que
van insertados los componentes; en lugar de eso, los componentes se encuentran en
módulos que son apilados unos encima de otros. El tamaño estándar es de 90.17 mm ×
95.89 mm. La altura depende del número de módulos conectados.
Una instalación típica incluye una placa base, conversores analógico-digital y módulos
I/O digitales.
La “PC-104” es una computadora como cualquier otra, solo que mas limitada en
cuanto velocidad de procesamiento y capacidad de manejo de memoria. Es por ellos
que no requiere ningún tratamiento especial. Solo hay que instalarle algún sistema
operativo en una unidad de almacenamiento y esta lista para ser usada como cualquier
otro PC.
Sistema Operativo
Para la elección del sistema operativo a instalar se tuvieron en cuenta varios factores:
-Bajos requerimientos de hardware.
-Libertad para el manejo del hardware.
-Portabilidad.
En una primera instancia se instalo en un disco duro el sistema operativo Windows XP.
La PC funciono correctamente y no hubo mayores complicaciones. Debido a que en
Windows, el acceso a los puertos esta restringido se opto por algún sistema operativo
que contenga un núcleo Linux.
Se examinaron varias distribuciones libres y gratuitas, optándose finalmente por la
distribución Puppy 4.3.1.
Puppy Linux es una minidistribución portátil del sistema operativo GNU/Linux. Consiste
en un CD autoejecutable con un Gestor de ventanas y programas suficientes para
llevar a cabo la mayoría de tareas básicas en un computador. Convierte a la máquina
en una estación de trabajo con aplicaciones para conectar a Internet, navegar
y chatear, proceso de texto, imagen, audio, video y utilidades extras variadas en un
máximo de 48, 64, 128 Megas. Funciona usando la memoria RAM del computador, de
modo que la máquina en donde vaya a ejecutarse debe disponer de 48, 64, 128 megas
o más dependiendo de la versión de Puppy que se quiera usar. Además, permite
instalarse cómodamente en discos duros o pendrives.
Cabe destacar que en esta distribución de Linux siempre se corre bajo la cuenta de
“super-usuario” o “root” por lo que no es necesario ningún tipo de permiso especial.
Dicho sistema operativo es capaz de instalarse en un pen drive y correr de ahí mismo,
característica que lo hace muy atractivo para nuestra aplicación.
Al utilizar un sistema operativo basado en Linux, se debió programar y compilar
nuestro software de aplicación bajo dicho plataforma. Por cuestiones de comodidad la
mayor parte del software fue desarrollado en una PC portátil con Ubuntu 12.04. Los
detalles finales se terminaron en la PC104.
Para realizar la compilación en Puppy Linux se debió adjuntar en el pen drive el archivo
devx_431.sfs, el cual agrega al sistema las herramientas necesarias para la compilación
y edición de código en C/C++.
Se tuvo que configurar al sistema operativo, para que en el arranque ejecutara el
software desarrollado. Esto se realiza de manera sencilla creando un “link simbolico” o
“acceso directo” en la carpeta /root/Startup. Este puede hacer mediante consola o
bien utilizado el gestor de ventanas.
Placa Interfaz
Funcionamiento
Esta placa fue diseñada con la finalidad de proporcionarle al usuario una interfaz con la
PC-104. La misma se comunica con la PC a través del protocolo RS-232.
La placa posee dos botones con las siguientes funciones:
-
Botón 1: Inicia/finaliza la toma de datos provenientes del GPS.
-
Botón 2: Apaga la PC-104 (esta acción no es permitida en el proceso de lectura
de datos)
Además consta de dos led’s que indican en que modo de funcionamiento se encuentra
el sistema. Estos modos se explican a continuación:
-
Modo off: El sistema esta apagado. Ambos led’s se encuentran encendidos.
-
Modo stand-by: Una vez encendida la PC-104 el sistema ingresa a este modo y
se queda esperando la orden de inicio de toma de datos (botón 1). Si se desea
apagar el sistema se presiona el botón 2. En este modo el led azul se encuentra
apagado y el led verde oscilando.
-
Modo lectura: Una vez presionado el botón 1, el sistema comienza la lectura y
almacenado de los datos provenientes del GPS. En este modo el botón de
apagado se encuentra deshabilitado, no permitiendo el apagado del sistema. El
led azul se encuentra apagado si el GPS tiene señal, de lo contrario se enciende
indicando la perdida de la misma (en este caso se debe cambiar la ubicación en
que se encuentra el GPS), el led verde cambia la carencia de oscilación. Para
salir de este modo se debe presionar nuevamente el botón 1.
Diseño
El circuito esquemático de la placa se presenta a continuación:
Básicamente la placa esta compuesta por dos circuitos integrados:
-
MAX232: Se encarga de adaptar los niveles de tensión TTL a RS232 y viceversa.
-
CD 4013: Este integrado posee dos flip-flop D en su interior. Estos se utilizan
para producir un cambio de estado de la señal de salida con solo una pulsación
de la tecla, además sirven para filtar el ruido generado por las mismas.
La placa se alimenta con 5v provistos por el puerto USB de la PC-104. Para ahorrar
espacio se diseño en dos plaquetas separadas que se interconectan por medio de dos
tiras de pines como se observa en la siguiente imagen:
A continuación se presenta una tabla que indica las conexiones entre el puerto RS-232
de la PC-104 y la placa interfaz:
PIN RS232
DTR (out)
RTS (out)
DSR (in)
CTS (in)
TXD (out)
RXD (in)
PLACA INTERFAZ
Led Verde
Led Azul
Botón 1
Botón 2
RX (GPS)
TX (GPS)
Software
A continuación se muestra el diagrama de flujo sintetizado del programa principal:
El programa fue realizado en C++, se utilizo Eclipse como entorno de desarrollo para la
edición, compilación y depuración del mismo.
Para la realización de las tareas necesarias se diseñaron tres clases, las cuales se
describen a continuación
Clase GPS
GPS
void Cargar (string, string)
bool EsValido ()
Esta clase se encarga de guardar los datos provenientes del GPS. Los métodos mas destacados
se muestran en la tabla anterior
-
void Cargar (string, string): Este método no retorna ningún valor y recibe dos string
como argumentos. Estos string son las tramas que entrega el GPS. Se encarga de
realizar el parseo de los datos y guardarlos en memoria.
-
bool EsValido (): Este método no recibe ningún argumento y retorna un “1” lógico si el
dato es valido (el GPS tiene buena señal)
Clase INTUSR
INTUSR
void SetEstadoLed (led,estado)
bool GetEstadoBoton (boton)
string LeerPuerto ()
Esta clase encapsula la placa interfaz de usuario junto con el puerto serie. Para el
manejo del puerto serie se utilizo la librería “libserial”, la cual es de código abierto y
puede descargarse gratuitamente de libserial.sourceforge.net. Hay que tener en
cuenta que esta librería corre solamente en sistemas operativos basados en Linux y
MAC.
A continuación se da una breve explicación de los métodos mas destacados que posee
la clase:
-
void SetEstadoLed (led,estado): Este método no retorna ningun valor y recibe dos
argumentos, en el primero se indica que led se desea manejar (azul/verde) y en el
segundo se establece el estado del mismo (encendido/apagado).
-
bool GetEstadoBoton (boton): Este metodo retorna el estado proveniente de la salida
del flip-flop correspondiente al boton indicado en el argumento que recibe el metodo
(Boton1/Boton2).
-
string LeerPuerto (): Este metodo devuelve la trama enviada por el GPS.
Clase MiTiempo
MiTiempo
bool Existe (directorio)
void Archivo (tipo de archivo)
Básicamente esta clase es la encargada de realizar un ordenamiento a nivel de
directorios de los archivos generados.
-
bool Existe (directorio): Este método retorna un “1” lógico si el directorio enviado
como argumento existe, caso contrario devuelve un “0” y el directorio especificado
debe ser creado.
-
void Archivo (tipo de archivo): Este método no retorna ningún valor y recibe como
argumento el tipo de archivo a crear (datos/html), el nombre de estos archivos esta
compuesto por la hora inicial y final de la toma de datos , por ejemplo “17:35:12 a
17:46:15”
API de Google Maps.
Google Maps es un servidor de aplicaciones de mapas en la Web.
Una API (interfaz de programación de aplicaciones) es el conjunto de funciones y
procedimientos (o métodos) que ofrece cierta biblioteca para ser utilizado por otro
software como una capa de abstracción.
La API de Google Maps permite al usuario insertar funciones más completas y dar una
mayor utilidad a los Mapas de Google en su sitio web y en sus propias aplicaciones, así
como superponer sus propios datos sobre ellas.
JavaScript es un lenguaje de programación interpretado (no compilado), permite
mejorar las interfaces de usuario en los sitios web. Tiene una sintaxis similar al
lenguaje C aunque adopta nombres y convenciones del lenguaje de programación
Java.
En la API de Google Maps, existen varios métodos que permiten personalizar los
mapas proporcionados por google. A partir de dichos métodos y estudiando varios
ejemplos, se desarrollo un archivo .html el cual utiliza la API mediante JavaScript.
Para este trabajo se necesita un método que sea capaz de dibujar líneas entre los
puntos recolectados por el GPS. Para ello se utiliza la función “polyline” a la cual hay
que mandarle como argumento los puntos que queremos unir, para ello antes de
invocar dicho método hay que declarar una variable que contenga los puntos leidos.
El software desarrollado se encarga de realizar esta tarea. A partir de un script
“modelo” (adjuntado) el cual es abierto dentro del programa, se insertan los puntos
leidos por el GPS en el lugar indicado. De esta forma se crea un archivo *.html el cual
puede ser abierto con cualquier navegador web disponible. Al abrirse se observa la
trayectoria en el mapa.
Pruebas
A continuación se observan los mapas generados en las distintas pruebas realizadas.
Primer Prueba
La primera prueba del sistema supero las expectativas propuestas, ya que en esta
primer instancia del proyecto se buscaba una correcta generación del mapa donde se
pudiera ver el recorrido del vehículo, también se buscaba que el sistema respondiera
de forma optima a los controles introducidos por el usuario, como el inicio y
finalización de la lectura de datos.
El problema que se encontró luego de esta primera prueba fue que la trayectoria
dibujada en el mapa no era la esperada, esta presentaba saltos indeseados como se
observa en la siguiente imagen:
Luego de una revisión exhaustiva en el programa se encontró el error, este se producía
cuando se generaba el archivo de los datos leídos, mas precisamente en la precisión
(numero de decimales) con que eran guardados. Si bien el GPS entregaba los datos
correctos, estos al ser grabados en el archivo se truncaban perdiendo la precisión de la
posición. Corregido esto el problema quedo solucionado, consiguiéndose resultados
que se aproximaban más a los esperados. A continuación se observa el mapa generado
una vez corregido el error:
Conclusiones
Se desarrollo en el presente trabajo un sistema capaz de monitorear la trayectoria de
un vehículo móvil. El sistema es capaz de recolectar la información proveniente del
GPS y generar un mapa con la trayectoria recorrida. Además se desarrollo una
pequeña placa interfaz que permite no tener la necesidad de conectar un monitor,
teclado, mouse ni otro periférico para el comando del sistema, transformándolo así en
un sistema portátil. Tampoco es necesaria la colocación de un disco duro ya que el
sistema operativo puede ser cargado en un pen drive o en una compact flash.
Los resultados obtenidos en las pruebas experimentales son satisfactorios ya que se
aproximan a los valores reales. Es por ello que a los fines de monitoreo el sistema
cumple con las condiciones necesarias para hacerlo.
El sistema tiene la gran desventaja de que los datos tomados son a una frecuencia de
5Hz, lo que lo hace poco viable para aquellas aplicaciones de control en las que se
requieran tiempos de muestreo menores. No obstante esto puede solucionarse
cambiando el modelo del modulo GPS ya que es este quien impone dicha limitación.
El proyecto realizado sirvió para investigar y adquirir nuevos conocimientos en
diferentes temas como: sistemas operativos basados en Linux, programación orientada
a objetos (C++), protocolo NMEA, protocolo RS-232, GPS, etc.
Mejoras futuras
-
Permitir que el sistema pueda ser alimentado dentro de un automóvil
(chamuyar mejor)
-
Realizar la transmisión inalámbrica de los datos leidos hacia una central para
permitir monitoreo en tiempo real.
-
Mejorar la interfaz de usuario, el agregado de un display LCD que indique en
que modo de funcionamiento se encuentra y la impresión de errores que
pueden ocurrir en la lectura seria de gran ayuda para el operario.
Bibliografía
-
Manual de usuario del ordenador PC-104.
-
Especificaciones técnicas del modulo GPS Garmin 18-5hz.
-
Datasheet MAX 232 y CD4013
-
www.wikipedia.com
-
www.cplusplus.com
-
https://libseral.sourceforge.net
-
www.puppylinux.org
-
https://developers.google.com/maps/documentation/javascript/
Descargar