SISTEMA DE GEOREFERENCIACIÓN PARA TRAZABILIDAD EN LA ... · iii Agradecimientos En primer lugar...
Transcript of SISTEMA DE GEOREFERENCIACIÓN PARA TRAZABILIDAD EN LA ... · iii Agradecimientos En primer lugar...
SISTEMA DE GEOREFERENCIACIÓN PARA TRAZABILIDAD
EN LA ENTREGA DE PAQUETES
Autor:
DIEGO MAURICIO FREIRE BASTIDAS
Director:
JOAQUÍN MARTÍNEZ SÁNCHEZ
Proyecto Fin de Máster para el Máster en Geoinformática
Julio de 2016
ii
Resumen Sistema de Georeferenciación para Trazabilidad en la Entrega de Paquetes
Máster en Geoinformática
por Diego Mauricio Freire Bastidas
Elaboración de un sistema georeferenciado para la generar rutas de trazabilidad en el proceso
de recepción, transporte y entrega de paquetes utilizando transmisores de baja potencia. Se
plantea un entorno de pruebas, obteniendo como resultado el diseño de un dispositivo de
trazabilidad que se lo transportara como parte del paquete que se desee entregar. Se elabora
un diseño de cada módulo que tiene incorporado el dispositivo, teniendo en cuenta aspectos de
transmisión, alcance y consumo de energía. Se define el modelo de red de conexión de los
dispositivos, este modelo de red se acopla a las necesidades de un sistema que se propone.
Se explican las definiciones a tomarse en cuenta para que exista un proceso de trazabilidad en
un sistema de entrega de paquetería, considerando factores iniciales que se requieren
implementar para poder realizar el seguimiento de un paquete. Se establecen definiciones de
funcionamiento organizacional como la unicidad de las rutas y la organización de los paquetes
en grupos llamados lotes. Se realiza también una revisión de eventos que pueden suceder en un
entorno de entrega de paquetería.
Como parte del trabajo de fin de máster se realiza también un entorno de pruebas, el cual
incluye un aplicativo de cálculo de rutas referenciales utilizando un servicio web, el cual libera
del coste computacional que implica la generación de rutas, un diseño de un dispositivo de
trazabilidad de pruebas, que está conformado por una placa Arduino UNO, un transmisor XBee
S2, un GPS NEO 6M y una batería de litio de 1300mAh. Se diseña un aplicativo en Microsoft
Visual Studio que maneja las comunicaciones seriales para guardar las rutas generadas por los
dispositivos en un archivo HTML, generando un mapa sobre el cual se despliega la ruta que un
paquete sigue hasta alcanzar su destino final.
Palabras Clave:
SIG, GIS, Sensores, XBee, Arduino, Paquetes, Rastreo, HTML, Trazabilidad.
iii
Agradecimientos
En primer lugar agradezco a Dios por permitirme vivir una experiencia tan bonita estudiando en
las Universidades de Vigo y de La Coruña, experiencia que me ha llenado de grandes enseñanzas
y que me ha dado confianza en el saber que puedo lograr algo.
Un agradecimiento especial para Joaquín Martínez director de este trabajo que sin su ayuda y
confianza no podría estar terminando el proyecto. También al director del máster Higinio
González por estar pendiente de su alumno de Ecuador.
A mis nuevos amigos Elena y Daniel por las horas de ayuda, por estar ahí pendiente y siempre
ser un apoyo, muchas gracias.
A mis padres, suegros, familia, amigos y sobre todo a Paulina, compañera de este hermoso viaje,
gracias a todos por estar aquí.
Diego
iv
Índice de contenidos
Resumen ........................................................................................................................................ ii
Agradecimientos .......................................................................................................................... iii
Índice de contenidos .....................................................................................................................iv
Índice de figuras .......................................................................................................................... viii
Índice de tablas ............................................................................................................................. x
Glosario de términos y abreviaciones ........................................................................................... xi
Introducción .................................................................................................................................. 1
1.1. Motivación .................................................................................................................... 1
1.1.1. Objetivo general .................................................................................................... 1
1.1.2. Objetivos Específicos ............................................................................................. 1
1.2. Organización .................................................................................................................. 2
Fundamentos teóricos .................................................................................................................. 3
2.1. Transmisores de baja potencia ..................................................................................... 3
2.1.1. Modo coordinador ................................................................................................ 4
2.1.2. Modo Router ......................................................................................................... 4
2.1.3. Modo End Point ..................................................................................................... 4
2.1.4. Modos de operación ............................................................................................. 4
2.1.5. Modos de Conexión .............................................................................................. 6
2.2. Plataforma Arduino ....................................................................................................... 8
2.2.1. Razones para usar Arduino ................................................................................... 8
2.2.2. Librerías ................................................................................................................. 9
2.2.3. Núcleos .................................................................................................................. 9
2.3. Sistemas de Información Geográfica ............................................................................ 9
2.3.1. Funcionamiento de un SIG .................................................................................... 9
2.3.2. Creación de datos ................................................................................................ 10
2.3.3. Representación de los datos ............................................................................... 10
2.3.4. Proyecciones, sistemas de coordenadas y re proyección ................................... 10
2.3.5. Superposición de mapas ..................................................................................... 11
2.4. Trazabilidad ................................................................................................................. 11
2.4.1. Dispositivos de rastreo ........................................................................................ 11
2.4.2. Lotes .................................................................................................................... 11
2.4.3. Unicidad............................................................................................................... 11
2.4.4. Almacenamiento de datos .................................................................................. 12
v
Planteamiento ............................................................................................................................. 13
3.1. Información inicial ....................................................................................................... 13
3.1.1. Oficinas ................................................................................................................ 13
3.1.2. Recepción, Tránsito y Entrega ............................................................................. 14
3.1.3. Rutas .................................................................................................................... 15
3.1.4. Dispositivo para la obtención de la trazabilidad ................................................. 15
3.2. Modelamiento del problema ...................................................................................... 16
3.2.1. Rutas .................................................................................................................... 17
3.2.2. Tipos de envío ..................................................................................................... 17
3.2.3. Gestión de rutas .................................................................................................. 18
3.2.4. Precisión en la ubicación ..................................................................................... 18
3.2.5. Obtención de coordenadas ................................................................................. 18
3.2.6. Acción frente a errores ........................................................................................ 19
3.3. Limitaciones de ejecución ........................................................................................... 20
3.3.1. Precisión .............................................................................................................. 20
3.3.2. Cobertura ............................................................................................................ 20
3.3.3. Tipos de paquetes ............................................................................................... 21
3.4. Limitaciones de estudio............................................................................................... 22
3.4.1. Lotes .................................................................................................................... 23
3.4.2. Número de dispositivos ....................................................................................... 23
3.4.3. Sistema SIG .......................................................................................................... 23
3.4.4. Resistencia de materiales .................................................................................... 24
3.4.5. Códigos de TAG ................................................................................................... 24
3.4.6. Precisión .............................................................................................................. 24
3.4.7. Área de cobertura ............................................................................................... 24
Modelo de trazabilidad ............................................................................................................... 25
4.1. Esquema de rastreo .................................................................................................... 27
4.1.1. Tiempo ................................................................................................................. 27
4.1.2. Rastreo ................................................................................................................ 28
4.1.3. Seguimiento ........................................................................................................ 28
4.1.4. Puntos fijos .......................................................................................................... 31
4.1.5. Ruta en el mapa................................................................................................... 31
4.1.6. Esquema de lotes ................................................................................................ 32
4.1.7. Esquema de tramas GPS...................................................................................... 32
4.1.8. Repositorio de rutas ............................................................................................ 33
4.2. Dispositivo de rastreo ................................................................................................. 33
vi
4.2.1. Diseño conceptual ............................................................................................... 34
4.2.2. Resistividad.......................................................................................................... 34
4.2.3. Batería ................................................................................................................. 35
4.2.4. Comunicaciones .................................................................................................. 35
4.2.5. Indicadores .......................................................................................................... 36
4.2.6. Comportamiento ................................................................................................. 36
4.3. Algoritmo de procesamiento de paquetes ................................................................. 36
4.4. Retos a superar ........................................................................................................... 38
4.4.1. Pérdida de cobertura .......................................................................................... 38
4.4.2. Duración de batería ............................................................................................. 38
4.4.3. Facilidad de operación ........................................................................................ 39
4.4.4. Adaptación a cambios ......................................................................................... 39
4.5. Diseño de la aplicación ................................................................................................ 39
4.6. Consideraciones adicionales ....................................................................................... 41
4.6.1. Pérdida de conexión del dispositivo .................................................................... 41
4.6.2. Ahorro de energía ............................................................................................... 41
Trabajo experimental .................................................................................................................. 42
5.1. Entorno de pruebas ..................................................................................................... 42
5.1.1. Módulo de procesamiento .................................................................................. 42
5.1.2. Módulo de ubicación ........................................................................................... 43
5.1.3. Módulo de batería ............................................................................................... 44
5.1.4. Módulo de transmisión ....................................................................................... 44
5.2. Procesamiento de datos .............................................................................................. 45
5.2.1. Diseño y elaboración de una carcasa .................................................................. 45
5.2.2. Servicio web ........................................................................................................ 45
5.2.3. Sistema de recepción y generación de archivo de ruta ...................................... 46
5.3. Recopilación de fallos .................................................................................................. 47
5.3.1. Inicio del GPS ....................................................................................................... 48
5.3.2. Programación del módulo de procesamiento ..................................................... 48
5.3.3. Visualización de rutas .......................................................................................... 48
5.3.4. Configuración de los puertos COM ..................................................................... 48
Conclusiones ............................................................................................................................... 49
6.1. Mejoras futuras ........................................................................................................... 49
6.2. Revisión del trabajo ..................................................................................................... 49
Bibliografía .................................................................................................................................. 51
Anexo A ......................................................................................................................................... 1
vii
Anexo B ......................................................................................................................................... 7
Anexo C ......................................................................................................................................... 8
Anexo D ......................................................................................................................................... 9
Anexo E ........................................................................................................................................ 10
Anexo F ........................................................................................................................................ 11
Anexo G ....................................................................................................................................... 25
Análisis de precios ....................................................................................................................... 27
viii
Índice de figuras
Figura 2. 1 Modos de operación del módulo XBee (Oyarce, 2010) .............................................. 5
Figura 2. 2 Ejemplo comando AT (Oyarce, 2010) .......................................................................... 6
Figura 2. 3 Conexión punto a punto .............................................................................................. 7
Figura 2. 4 Conexión punto a multipunto ..................................................................................... 7
Figura 2. 5 Conexión broadcast ..................................................................................................... 7
Figura 2. 6 Diferentes placas Arduino ........................................................................................... 8
Figura 3. 1 Sistema de entrega de paquetes ............................................................................... 13
Figura 3. 2 Diagrama del proceso de entrega de un paquete ..................................................... 15
Figura 3. 3 Tarjeta de tracking de paquetería ............................................................................. 15
Figura 3. 4 Diagrama ideal de recepción – entrega..................................................................... 16
Figura 3. 5 Diferencia entre ruta real y sugerida......................................................................... 17
Figura 3. 6 Comparación de un punto con una ruta ................................................................... 20
Figura 3. 7 Cobertura basada en radio ........................................................................................ 21
Figura 3. 8 Tipos de empaques utilizados para el transporte de paquetería. Recuperado de:
http://www.uline.com/Cls_04/Boxes-Corrugated ..................................................................... 22
Figura 3. 9 Esquema de diseño de pruebas................................................................................. 23
Figura 4. 1 Diagrama de proceso ................................................................................................. 25
Figura 4. 2 Puntos intermedios en una ruta ................................................................................ 25
Figura 4. 3 Proceso para calcular ruta ......................................................................................... 26
Figura 4. 4 Mapa coroplético de cobertura de una oficina ......................................................... 27
Figura 4. 5 Seguimiento de paquetes durante el transito ........................................................... 27
Figura 4. 6 Calculo del tiempo de lectura de una coordenada ................................................... 28
Figura 4. 7 Funcionamiento de la obtención de coordenadas en un TAG .................................. 28
Figura 4. 8 Proceso de manejo de información de marcadores en el mapa ............................... 29
Figura 4. 9 Ejemplo de uso de clusterización de marcadores ..................................................... 30
Figura 4. 10 Ejemplo de utilización de marcadores sin clusterización ........................................ 30
Figura 4. 11 Ejemplo de búsqueda del elemento más cercano .................................................. 31
Figura 4. 12 Diferencia de transmisión entre esquema individual y de lotes ............................. 32
Figura 4. 13 Formato de transmisión de datos ........................................................................... 32
Figura 4. 14 Diagrama de flujo de entramado en datos de ubicación ........................................ 33
Figura 4. 15 Diagrama modular del TAG ..................................................................................... 34
Figura 4. 16 Configuración tipo cluster ....................................................................................... 35
Figura 4. 17 Comportamiento de un TAG ................................................................................... 36
Figura 4. 18 Algoritmo de comportamiento de un paquete ....................................................... 37
Figura 4. 19 Cambio de indicadores LED ..................................................................................... 37
Figura 4. 20 Perfiles de usuarios en la aplicación ........................................................................ 39
Figura 4. 21 Creación de rutas utilizando un servicio web.......................................................... 40
Figura 5. 1 Esquema de conexiones TAG de pruebas ................................................................. 43
Figura 5. 2 Datos transmitidos por el módulo de procesamiento .............................................. 43
Figura 5. 3 Fotografía del GPS NEO-6M ...................................................................................... 44
ix
Figura 5. 4 Esquema de conexión de XBee en las pruebas ......................................................... 44
Figura 5. 5 Fotografía superior de caja del TAG .......................................................................... 45
Figura 5. 6 Captura de pantalla de DIrections de Mapbox para dos puntos utilizando bicicleta 46
Figura 5. 7 Aplicación de lectura de datos enviados por los TAG ............................................... 46
Figura 5. 8 Mapa HTML generado a partir de los datos obtenidos de la aplicación. .................. 47
x
Índice de tablas
Tabla 1. 1: Topologías de red soportadas por las tecnologías inalámbricas ................................. 3
Tabla 3. 1 Tabla de eventos ......................................................................................................... 19
Tabla 3. 2 Acciones frente a eventos .......................................................................................... 19
Tabla 4. 1 Especificaciones técnicas Arduino UNO. Tomado de
https://www.Arduino.cc/en/Main/ArduinoBoardUno ............................................................... 42
xi
Glosario de términos y abreviaciones Acrónimo Definición
FHSS Tecnología de radio que constantemente altera el patrón de transmisión de datos cambiando las frecuencias de las portadoras. Del inglés Frequency Hopping Spread Spectrum
GNSS Global Navigation Satellite System
GPS Global Positioning System
ISO Organización Internacional de Estandarización (del inglés International Organization for Standardization)
LED Diodo emisor de luz (del inglés ligh-emitting diode)
mAh Medida de carga mili amperios hora.
PAN Redes de Área Personal por sus siglas en inglés (Personal Area Network)
RFID Identificación por radiofrecuencia (del inglés Radio Frequency IDentification)
SIG Sistema de Información Geográfica
TAG Nombre que se le da a la tarjeta para el manejo de la trazabilidad de los paquetes que se va a utilizar en el presente TFM.
TFM Trabajo de Fin de Máster
Término Definición
Buffer Región de incidencia de una ruta generada.
Clusterización Agrupación de varios marcadores en un mapa para mostrarlos como un único elemento.
Comando AT Instrucciones codificadas para comunicarse con un modem.
Coroplético Mapa temático que aporta información espacial mediante el uso de colores
Datasheet Documento de especificaciones técnicas de un dispositivo.
Frames Unidad de transmisión de datos de red que incluye información referente a un protocolo.
Geolocalización Capacidad de obtener una ubicación real de un objeto, utilizando coordenadas esféricas (XYZ)
Nodos Elemento que forma parte de la red de información
PAN ID Identificador de red
Protocolo conjunto de reglas que se definen para que dos entidades puedan intercambiar información
Topologías Mapa físico o lógico de una red para intercambiar datos
Trama Paquete de datos ordenados de acuerdo a una especificación establecida.
Trazabilidad Procedimientos que permiten seguir un objeto en el tiempo
Zoom Efecto de acercar o alejar una imagen.
1
Capítulo 1
Introducción La geolocalización 1de objetos ha generado interés en los campos de estudio, esté concepto de
geolocalización se lo ha utilizado a diferentes clases de objetos.
La trazabilidad 2genera una memoria de los puntos a través del tiempo. Este concepto se ha
usado en diferentes objetos, entre ellos se destacan las líneas alimenticias, de producción y la
que se encuentra en auge es la de la paquetería.
La generación de las rutas en objetos debe contemplar varios aspectos, desde los intervalos de
recopilación de datos, la eficiencia de recursos usados para conseguir la posición de un objeto,
la precisión requerida, los gastos que implica tener la posición.
El presente proyecto presenta un análisis tomando en cuenta diferentes aspectos de
trazabilidad y se expondrá una propuesta de un Sistema de Georeferenciación para Trazabilidad
en la Entrega de Paquetes.
1.1. Motivación El presente proyecto es un Trabajo de Final de Máster para la obtención del título de Máster en
Geoinformática otorgado por la Universidade de Vigo y la Universidade da Coruña.
1.1.1. Objetivo general Caracterizar e implementar una metodología para la trazabilidad espacial de un sistema de
transporte de paquetería a través de tecnologías de navegación global por satélite (GNSS3) y
sistemas de comunicaciones inalámbricos de baja potencia (XBee).
1.1.2. Objetivos Específicos
Obtener en forma periódica la posición de lotes de paquetes, mediante la georeferenciación de solo uno de los paquetes que necesite guardar la posición GPS.
Utilizar sensores GPS y radios de baja potencia XBee para localizar los nodos dentro de la red.
Identificar a cada paquete mediante código con la dirección destino.
Desplegar sobre un mapa la ruta de recorrido y los puntos de salto de lote.
Estudiar el potencial de los transmisores de bajo consumo para aplicaciones de escala
urbana.
Definir una topología de red que se adapte a la solución propuesta.
Analizar un mecanismo de generación automática de rutas.
1 Geolocalización: Capacidad de obtener una ubicación real de un objeto, utilizando coordenadas esféricas (XYZ) 2 Trazabilidad: Procedimientos que permiten seguir un objeto en el tiempo 3 GNSS: Global Navigation Satellite System
2
Definir parámetros de precisión necesarios para la generación de una ruta acorde a la
realidad.
1.2. Organización El presente trabajo se estructura en varios capítulos que separan los diferentes aspectos que se
deben tratar en la elaboración del presente TFM5. El primer capítulo refiere a aspectos generales
como los objetivos que se esperan conseguir con la elaboración del trabajo.
El capítulo 2, Fundamentos teóricos, refiere a la información necesaria para establecer el
enfoque de la teoría necesaria para realizar el TFM, tomando en cuenta el tipo de elementos
necesarios para la elaboración del dispositivo de rastreo.
El capítulo 3, Planteamiento, refiere a la recopilación de los datos, la información necesaria para
establecer los requerimientos y necesidades para realizar la trazabilidad de los paquetes
mediante el modelamiento del problema a resolver, también se establecen las limitaciones
tomadas en cuenta en el estudio.
El capítulo 4, Modelo de Trazabilidad, realiza el enfoque a la solución que se va a llevar a cabo
como parte de la realización de un esquema practico capaz de ejemplificar la ejecución del
modelo de trazabilidad planteado. En este capítulo se determina los componentes necesarios
para la elaboración del dispositivo de rastreo, tomando en cuenta las características de precisión
y de eficiencia requeridos. Se considera también análisis de eventos como la pérdida de
conexión y el ahorro de energía, con la finalidad de establecer la respuesta del modelo ante
estos eventos.
El capítulo 5, Trabajo Experimental, detalla los resultados obtenidos con el proyecto
implementado, recopilando y analizando los datos, también se describen los fallos ocurridos en
el entorno de pruebas.
El capítulo 6, Conclusiones, expone las conclusiones obtenidas con la elaboración del TFM,
además de puntualizar algunas mejoras futuras que se pueden hacer al trabajo, para finalmente
realizar una revisión del trabajo realizado.
Finalmente se cuenta con una sección en la que se agrupan la bibliografía usada en la
elaboración del proyecto y los anexos.
5 TFM: Trabajo de Fin de Máster
3
Capítulo 2
Fundamentos teóricos
2.1. Transmisores de baja potencia En las comunicaciones el aspecto de consumo energético siempre está en un foco de análisis
para que un proyecto se pueda considerar viable, más aun cuando las comunicaciones son
inalámbricas, pues los dispositivos dependen de una batería, la cual tiene un recurso limitado
de energía.
Existen varias tecnologías de bajo consumo energético, las cuales además de tener un consumo
energético menor, también destacan por ser de bajo costo y de un tamaño reducido. (Smith,
2011)
Las tecnologías de baja potencia se encuentran en auge y tienen diversas aplicaciones
dependiendo el tipo de transmisión, el alcance, la velocidad, topología de la red, costo,
confiabilidad, eficiencia energética entre otros. Entre las tecnologías que destacan actualmente
podemos mencionar las siguientes:
Bluetooth LE
ANT
ANT+
Zigbee
WiFi
Nike+
IrDA
NFC
Estas tecnologías inalámbricas están presentes en diferentes mercados, como el de la seguridad,
teléfonos móviles, rastreo, posicionamiento y también en las tecnologías PAN6.
Topologías7 LE A A+ Zi RF Wi Ni Ir NF
Broadcast √ √ √ x x x x x x
Mesh √ √ √ √ √ x x x x
Star √ √ √ √ √ √ x x x
Scanning √ √ √ √ √ x √ x x
Point-to-Point
√ √ √ √ √ √ √ √ √
Tabla 1. 1: Topologías de red soportadas por las tecnologías inalámbricas
La topología que soportan las diferentes tecnologías va a ser un punto en consideración, pues
buscamos una topología capaz de comunicarse con varios nodos al mismo tiempo. La Tabla 1. 1
muestra las diferentes topologías dependiendo el tipo de tecnología.
Otro aspecto a considerar es la eficiencia en la transmisión de los datos, pues este parámetro es
la relación que existe entre los datos de información que deseo transmitir y la cantidad de
6 PAN: Redes de Área Personal por sus siglas en inglés (Personal Area Network) 7 Topologías: Mapa físico o lógico de una red para intercambiar datos
4
información que tengo que enviar adicional, como parte del protocolo8 para poder realizar la
comunicación.
Zigbee es un protocolo de comunicaciones basado en el estándar de comunicaciones para redes
inalámbricas IEEE 802.15.4, útil especialmente para redes de sensores en diferentes entornos
(Oyarce, 2010).
Las comunicaciones Zigbee se realizan en la banda libre de 2.4GHz. La diferencia con Bluetooth
radica en que no utiliza salto de frecuencia (FHSS9).
La comunicación con línea de vista alcanza los 100 metros con una velocidad de 256kbps. Se
define una red de hasta 65535 equipos en una misma red.
Los módulos XBee satisfacen las necesidades de bajo costo, ultra bajo consumo de potencia,
trabaja en las bandas de radio libres sin la necesidad de licencias y las redes son flexibles y
extensibles.
Las aplicaciones de los sensores XBee pueden ir desde las más básicas hasta configuraciones
complejas, gracias a la gran cantidad de dispositivos que pueden estar en una red.
Una red Zigbee tiene tres tipos de elementos, un equipo coordinador único en la red,
dispositivos routers y dispositivos finales.
2.1.1. Modo coordinador Es el nodo de la red que tiene la función de formar la red, establece el PAN ID10, el coordinador
permite a los dispositivos Routers y End Points unirse a la red. También hace las funciones de
enrutador una vez que la red ya está conformada
2.1.2. Modo Router Es un nodo que crea y mantiene la información de la red para definir la mejor ruta para transmitir
la información. El router debe tener el mismo PAN ID para poder unirse a la red y hacer los
trabajos de enrutamiento entre otros routers y los End Points.
2.1.3. Modo End Point No dispone de capacidad de enrutamiento y siempre debe interactuar a través de un nodo
padre, siendo esté un Coordinador o un Router, es decir, dos dispositivos End Point no se pueden
comunicar directamente.
2.1.4. Modos de operación Se establecen 5 modos de operación para los módulos XBee, como se puede apreciar en la Figura
2. 1.
8 Protocolo: un conjunto de reglas que se definen para que dos entidades puedan intercambiar información. 9 FHSS: Tecnología de radio que constantemente altera el patrón de transmisión de datos cambiando las frecuencias de las portadoras. Del inglés Frequency Hopping Spread Spectrum 10 PAN ID: Identificador de red
5
Figura 2. 1 Modos de operación del módulo XBee (Oyarce, 2010)
2.1.4.1. Modo Recibir/Transmitir
Cuando se envía paquetes o se recibe paquetes a través de la antena, la información puede ser
transmitida de forma directa o indirecta, en el modo directo se envía inmediatamente al destino,
en cambio en el modo indirecto, la información es retenida por un periodo de tiempo, y solo es
enviada cuando el destino lo solicita.
2.1.4.2. Modo de bajo consumo (Sleep Mode)
Hace posible que el módulo entre en un modo de bajo consumo de energía cuando este no se
encuentra en uso. Para esto el pin 9 debe estar en alto. Hay una configuración de los ciclos de
sueño que lo establece el ST (Time before Sleep).
También se pueden controlar los modos de sueño por pin y cíclicos. En total existen 4 modos
de operación.
2.1.4.3. Modo Comando
Los módulos XBee responden a comandos AT11, para configurar, ajustar o modificar parámetros.
La comunicación de la realiza con la utilización de un programa que permita comunicación serial.
Pueden ser XCTU, Hyperterminal entre otros.
11 Comando AT: instrucciones codificadas para comunicarse con un modem.
6
Figura 2. 2 Ejemplo comando AT (Oyarce, 2010)
En la Figura 2. 2 se puede observar la sintaxis de un comando AT.
2.1.4.4. Modo Transparente
Es un modo de envío, donde la información que ingresa se almacena en un buffer y es enviada
tan pronto.
Este modo está destinado principalmente a la comunicación punto a punto, donde no se
necesita ningún tipo de control. También se usa para reemplazar una conexión serial por cable.
2.1.4.5. Modo API
Es un modo de operación más complejo, pero permite interactuar con las capacidades de red
del módulo. Pues toda la información que entra y sale es empaquetada en frames12, que definen
operaciones y eventos dentro del módulo.
Un frame de transmisión es diferente a uno de recepción, pues la información que incluye en él,
varía dependiendo, es decir, en transmisión tenemos la información y los comandos, mientras
en recepción las notificaciones de eventos.
El modo API permite transmitir información a múltiples destinatarios, conocer el estado de éxito
o fallo en una transmisión e identificar la dirección de origen de cada paquete.
2.1.4.6. Modo IDLE
Este modo es cuando el modulo no se encuentra en ninguno de los modos antes mencionados.
2.1.5. Modos de Conexión Los módulos XBee permiten ser configurados de diversas formas, adaptándose a las necesidades
que el sistema que se desee implementar. Para lograr una comunicación exitosa existen dos
tipos de direccionamiento de los módulos, el de 16 bits y el de 64 bits, la diferencia entre estos
radica en la cantidad de direcciones disponibles para la red que se desea implementar. Es con
estas direcciones que los módulos se comunican entre sí. (Oyarce, 2010)
A continuación se describe de forma breve los distintos modos de conexión de los dispositivos.
2.1.5.1. Modo de conexión transparente
Existen 4 tipos de configuraciones en el modo de configuración transparente, la conexión Punto
a Punto, Punto a Multipunto, Broadcast y Cable Virtual I/O.
La conexión transparente es la configuración por defecto en los módulos, la diferencia entre
cada una de estas es la forma en que interactúan entre sí y la cantidad de nodos13.
12 Frames: Unidad de transmisión de datos de red que incluye información referente a un protocolo. 13 Nodos: Elemento que forma parte de la red de información.
7
La conexión punto a punto es un reemplazo de la comunicación serial por medio de un cable. Es
la más sencilla, basta con configurar las direcciones en los módulos para que la comunicación se
lleve a cabo. En la Figura 2. 3 se observa que intervienen dos módulos en la conexión.
Figura 2. 3 Conexión punto a punto
La conexión punto multipunto, como se ve en la Figura 2. 4, permite que más nodos estén
involucrados en la red. Difiere de la conexión broadcast en que está permite transmitir
información desde la entrada serial (DIN, pin 3) del módulo. La transmisión puede ser a uno o a
varios módulos, por lo cual se necesitan las direcciones.
Figura 2. 4 Conexión punto a multipunto
La conexión broadcast en cambio distribuye la misma información desde un nodo, a todos los
nodos que están en la red. La información recibida es la misma para todos. Los módulos que
reciban la información con dirección broadcast aceptarán el paquete. (Oyarce, 2010)
Figura 2. 5 Conexión broadcast
8
2.2. Plataforma Arduino Arduino es una plataforma de creación de prototipos basado en hardware y software fácil de
usar. La plataforma Arduino se basa en el uso de las diferentes placas. Cada una de estas placas
permite el desarrollo específico, dichas placas son capaces de leer entradas por ejemplo la luz
de un sensor, un botón y generar una respuesta a una acción (encender un motor). En la Figura
2. 6 se ven las diferentes placas que se encuentran desarrolladas por el grupo de desarrollo de
Arduino, existen diferentes tipos, cada uno de ellos depende de lo que se desee hacer.
Figura 2. 6 Diferentes placas Arduino
Cada placa tiene un microcontrolador, este controlador es el encargado de realizar el
procesamiento de las entradas y generar las respuestas utilizando el lenguaje de programación
Arduino.
Arduino nace en el Instituto de Diseño de Interacción Ivrea como una herramienta para realizar
prototipos de forma fácil y rápida dirigida a estudiantes sin experiencia en electrónica y
programación. Desde su inicio, las placas Arduino han evolucionado adaptándose a los cambios,
respondiendo a los nuevos retos y necesidades. La Figura 2. 6 muestra la oferta actual de las
placas Arduino.
Todas las placas Arduino son código abierto, el software también es de código abierto.
2.2.1. Razones para usar Arduino Arduino es una plataforma sencilla de usar, capaz de responder a las diferentes necesidades,
tanto de usuarios nuevos, por su facilidad de uso y lo suficientemente flexible para usuarios
avanzados.
Se puede usar en MAC, Windows y Linux. Tiene la ventaja de poder usarse y reutilizarse, con lo
cual permiten realizar diversos proyectos de bajo costo. Arduino se podría definir como una
herramienta clave para construir y aprender cosas nuevas. (ArduinoCC, s.f.)
9
Arduino simplifica el proceso de trabajar con microcontroladores. La asequibilidad de las placas.
Una placa Arduino tiene un costo inferior a los 50 Euros.
Es multiplataforma, puesto que el software Arduino (IDE) se ejecuta en Windows, MAC y Linux.
Otros sistemas de microcontroladores están limitados a Windows.
El software de Arduino es fácil de usar para principiantes, pero que se adapta bien a usuarios
avanzados. Se basa en el entorno de programación Processing. También el software Arduino se
publica como herramienta de código abierto.
Las placas de Arduino se encuentran publicadas bajo código abierto, que permite que
diseñadores de circuitos experimentados pueden hacer una versión propia del módulo,
ampliándolo y mejorándolo.
En la página www.arduino.cc se pueden encontrar una gran variedad de proyectos que permiten
un aprendizaje con proyectos básicos y avanzados dependiendo de los usuarios.
2.2.2. Librerías Las librerías son una colección de código que simplifica la conexión de un sensor, una pantalla,
un módulo XBee, etc. Por ejemplo, la librería LiquidCrystal simplifica la conexión y uso de un
display LCD. En Internet existen cientos de librerías disponibles para ser descargadas.
(ArduinoCC, s.f.)
Las librerías adicionales deben ser instaladas para poder ser usadas. Para esto se debe abrir el
Arduino IDE, en el menú Sketch, en la pestaña Include Library en la sección Manage Libraries.
En éste menú de administración de librerías se puede encontrar una lista de librerías que están
instaladas en el IDE.
2.2.3. Núcleos Empezando desde el IDE versión 1.6.2, solo las placas Arduino AVR están instaladas por defecto,
Sin embargo algunas placas Arduino requieren ser instaladas.
Un ejemplo es la Arduino Due, que usa un microcontrolador ARM/SAM. Para que el IDE de
Arduino sea capaz de programar esta placa se debe instalar el núcleo SAM usando el
administrador de Placas.
2.3. Sistemas de Información Geográfica Un Sistema de Información Geográfica (SIG), es una integración organizada de hardware,
software y datos geográficos diseñada para captar, guardar, modificar, analizar y representar en
diversas formas la información geográfica referenciada con la finalidad de resolver problemas
complejos de planificación y gestión.
2.3.1. Funcionamiento de un SIG Un SIG14 trabaja como una base de datos con información geográfica, que tiene información
digital objetos geográficos de un mapa digital. Cuando se señala un objeto se conoce sus
14 SIG: Sistema de Información Geográfica
10
propiedades o atributos, de igual forma cuando se lee un registro en la base de datos, se puede
saber la localización en la cartografía.
Gestionar la información espacial es la razón fundamental para el uso de un SIG. Un SIG permite
realizar la separación de diferentes capas, esta separación se la realiza en base a diferentes
temáticas o atributos de análisis.
Un SIG permite realizar diversas acciones sobre los datos geográficos.
Localización: la ubicación de un lugar
Condición: filtrar de acuerdo a las condiciones establecidas o requeridas
Tendencia: comparar características temporales o espaciales.
Rutas: calcular rutas óptimas entre diferentes puntos, dos o más.
Pautas: detección de pautas espaciales.
Modelos: creación de modelos.
Las SIG presentan mucha versatilidad en su uso, siendo aplicables en la mayoría de actividades
que contengan información espacial.
2.3.2. Creación de datos Las tecnologías SIG trabajan con información digital, en la actualidad, existen varios métodos
que se pueden utilizar para la creación de datos digitales. Uno de los métodos es la digitalización,
el cual, a partir de un mapa impreso o con información de campo, mediante un programa de
Diseño Asistido por Ordenador (DAO o CAD) con capacidad de georeferenciación.
Esta es una de las formas de generación más amplia de información digital, debido a la cantidad
de información existente.
2.3.3. Representación de los datos Los datos SIG son representaciones del mundo real, los mismos que se pueden dividir en dos
grupos, los naturales y los creados por el hombre. De igual forma existen dos formas de
almacenar los datos en un SIG, Vectorial y Raster.
El software especializado para el manejo de datos espaciales suele ser especialista para el
manejo de uno de estos dos tipos de datos, es decir, software especialista en manejo de datos
vectoriales o software especialista en el manejo de datos Raster. En la actualidad existe una
mayor oferta de software especialista en datos vectoriales, no obstante, los SIG Raster son muy
utilizados.
2.3.4. Proyecciones, sistemas de coordenadas y re proyección Para que el análisis de los datos cartográficos en un SIG, todos los datos deben estar en una
misma proyección y sistemas de coordenadas. Para conseguir tal objetivo, algunas ocasiones es
necesario re proyectar las capas de información antes de integrarlas en un SIG.
La representación de la tierra se la puede dar en base a un geoide, del cual dependerá en gran
medida la representación acertada de los datos. Cambiar de una proyección a otra puede hacer
diferir los datos de forma significativa. Por tal motivo es imperativo realizar una adecuada re
proyección.
Según el mapa que se desee crear existen diferentes proyecciones cartográficas que se pueden
usar, ya que se adaptan mejor al tipo de aplicación que se va a generar.
11
2.3.5. Superposición de mapas Cierta información espacial puede crear un nuevo conjunto de datos, combinándola de acuerdo
a las características requeridas. La superposición de mapas se realiza sobre una región que
presente información adicional al mapa base.
Para que las capas adicionales se desplieguen de una forma adecuada, cada capa debe estar en
el mismo sistema de coordenadas.
Es usual que las capas se encuentren con un estilo diferente, con diferentes tipos de
transparencias, para que se puedan observar los detalles que se requieren.
2.4. Trazabilidad La ISO15 define el concepto de trazabilidad como la posibilidad de trazar la producción, uso o
ubicación de un determinado elemento. Cuando se trata de la elaboración de un producto, esto
puede cubrir el origen de los materiales empleados. (Certification, 2010)
Cada elemento debe tener la capacidad de generar una ruta desde cada punto, la intensión es
gestionar cada uno de los puntos o procesos que realiza el elemento hasta cumplir la ruta
asignada.
2.4.1. Dispositivos de rastreo En la búsqueda de generar un sistema de trazabilidad, existen diversas formas de cumplir con
este cometido, pero cada sistema depende de un dispositivo que ayude a identificar el
elemento, la identificación de los elementos es crucial al momento de asociar una ruta de
rastreo al elemento.
Los elementos pueden estar asociados a sistemas simples como un código impreso o más
avanzado como tarjetas RFID16. Sin embargo se pueden asociar a sistemas más complejos, la
complejidad del sistema va a depender del entorno en el que se esté aplicando.
Un sistema puede incluir receptores GPS individuales o también tan solo uno para un
determinado grupo de elementos.
2.4.2. Lotes En trazabilidad los elementos pueden estar agrupados dependiendo alguna característica, por
ejemplo procedencia, destino, peso, empresa, etc.
A esta agrupación se la conoce como lotes, un elemento puede ser miembro de varios lotes a lo
largo de su ruta. Es decir, que un elemento para alcanzar su destino puede haber pertenecido a
varios lotes, sin que esto implique que todos los elementos pertenecientes a un lote inicial van
a ir a un lote de destino igual.
2.4.3. Unicidad La trazabilidad genera una ruta claramente definida, que es capaz de definir la procedencia de
cada elemento por separado, es decir, un sistema de trazabilidad podrá reflejar la ruta completa
15 ISO: Organización Internacional de Estandarización (del inglés International Organization for Standardization) 16 RFID: Identificación por radiofrecuencia (del inglés Radio Frequency IDentification)
12
desde el inicio del proceso de producción, entrega, distribución dependiendo del sistema en el
cual se esté trabajando.
La utilidad es que a través de productos individuales se puede obtener información valiosa del
proceso que se encuentre implementado. Si un producto presenta fallas, se puede analizar los
lotes de transportación, para analizar si los demás productos tienen el mismo defecto.
Otra utilidad es un rastreo de puntos de perdida, tener un sistema bien definido del proceso
mejora las pérdidas de elementos, pues cada punto del proceso se encuentra monitoreado.
2.4.4. Almacenamiento de datos La información correspondiente al proceso involucrado en obtener la ruta que sigue un
elemento debe ser almacenada de forma adecuada, guardando la información relevante para
que se pueda identificar todo el proceso.
En algunos sistemas la información que se guarda sobre el proceso de trazabilidad contiene
incluso el nombre de cada operador que llevo a cabo determinado proceso.
En la industria alimentaria donde la trazabilidad se encuentra desarrollada a profundidad, los
datos que se conservan incluyen información de temperaturas de operación.
Cada uno de los casos en donde se deba aplicar trazabilidad se debe analizar la información que
se va a conservar, teniendo en cuenta que el interés es conocer todo el entorno que de una u
otra forma interviene en el proceso para que los elementos recorran la ruta asignada en el
proceso de producción, distribución o entrega.
13
Capítulo 3
Planteamiento
3.1. Información inicial Se desea obtener la ruta que sigue un paquete en un proceso de entrega, para conocer al detalle
la ruta que sigue, tomando en cuenta los lotes en los que viajó y los puntos que fueron
abordados.
Figura 3. 1 Sistema de entrega de paquetes
3.1.1. Oficinas Un sistema de entrega de paquetes utiliza una serie de oficinas para su operación. Estas oficinas
tienen un delimitado espacio geográfico de operación y, dependiendo de dicho ámbito
geográfico, un paquete podrá encontrarse en un proceso de tránsito o entrega.
Las oficinas tienen la capacidad de recibir los paquetes: una vez que el cliente entrega el
paquete, se asigna un identificador, el cual va a ser único en el sistema. Esta asignación
determina el inicio del proceso de trazabilidad de los paquetes.
Las oficinas pueden ser consideradas como puntos en los cuales un paquete puede cambiar de
lote, es decir, no puede existir un cambio de lote del paquete fuera de las oficinas.
Las oficinas tienen la responsabilidad de agregar la ruta de destino para el paquete, tomando en
cuenta que los paquetes pueden contener en su ruta varias oficinas hasta alcanzar su destino.
14
En la Figura 3. 1 se puede observar que un paquete puede ser enviado a otra oficina o
directamente al proceso de entrega, dependiendo del área geográfica de cobertura que tenga
asignada la oficina en la cual el paquete fue recibido.
3.1.2. Recepción, Tránsito y Entrega En el proceso de entrega de paquetes se han identificado tres estados para un paquete, la
recepción, tránsito y entrega.
El proceso de recepción conlleva tomar toda la información necesaria para tener plenamente
identificado el paquete, de tal forma que pueda cumplir la ruta que se desea. Es decir, un
paquete sin la información de destino no podrá ser correctamente entregado. Sin embargo la
dirección origen y destino no es lo único necesario para que el paquete llegue al destino de
forma segura. A continuación se listan diferentes características tomadas en cuenta al momento
de la recepción de un paquete.
Dirección origen y destino
Remitente
Destinatario
Fragilidad en la transportación
Prioridad
Rapidez
Cuidados especiales
Seguridad
Confidencialidad
Condiciones de almacenaje
No todos los paquetes deben cumplir con el listado anterior e incluso no pueden estar listados
todos los elementos a considerar al momento de recibir un paquete.
El tránsito de los paquetes en cambio, conlleva al proceso de la trazabilidad interna en una
empresa: cómo se consigue llevar el paquete desde la dirección origen hasta la dirección
destino, considerando los requerimientos que se detallaron al momento de realizar la recepción
del paquete. Un paquete se encontrará en tránsito siempre que su destino próximo sea una
oficina. Cuando un paquete se encuentre en una oficina, puede ser reasignado el lote en el cual
se va a transportar, los cambios de lote se efectúan únicamente en las oficinas de acuerdo a la
ruta que deban seguir. Cuando ya no queden más oficinas en la ruta del paquete, se inicia el
proceso de entrega.
El proceso de entrega implica que el paquete debe llegar al destinatario considerando los
aspectos detallados en el momento de recepción del paquete; por ejemplo, si el paquete
requiere confidencialidad, implica que el paquete no puede ser entregado a una persona
diferente al destinatario. En caso de que el paquete no pueda ser entregado, dicho paquete
retornará a la oficina de la que salió por última ocasión.
15
3.1.3. Rutas La ruta que sigue un paquete debe ser interpuesta en base del área de cobertura de las oficinas,
considerando la Figura 3. 2 donde se puede apreciar el proceso que se debería cumplir al
momento de realizar una entrega de un paquete.
Figura 3. 2 Diagrama del proceso de entrega de un paquete
En la Figura 3. 2 se puede ver que un paquete se mantendrá en estado de tránsito cuando la
dirección del paquete que llegó a una oficina no se encuentra en el área de cobertura.
La información de si el paquete sigue en tránsito o no, se la debe realizar realizando un proceso
de intersección entre el área de injerencia de una oficina y las coordenadas del destino del
paquete. Si las coordenadas del destino están en el área de influencia de la oficina, entonces el
paquete se debe poner en estado de entrega.
3.1.4. Dispositivo para la obtención de la trazabilidad Puesto que el objetivo es conseguir una trazabilidad de todo el proceso de entrega, se debe
considerar que el paquete va a estar acompañado de un dispositivo que permita obtener la
ubicación, la misma que va a ser transmitida de forma periódica para la generación de una ruta
especifica.
El dispositivo debe tener autonomía energética, es decir, debe contar con un banco de baterías
capaz de mantener encendidos todos los elementos durante el tiempo que dura el trayecto.
También de un identificador único, para que el paquete asociado al dispositivo también tenga
una ubicación univoca.
Figura 3. 3 Tarjeta de tracking de paquetería
16
El TAG17 debe tener la capacidad de comunicarse de forma inalámbrica con una estación, red o
dispositivo capaz de almacenar la información adquirida sobre la posición.
Es importante incorporar información de carácter lumínico, con el fin de proporcionar
información referente al estado del TAG, de forma inicial se plantea incorporar dos luces LED18,
con el fin de tener una variedad de estados.
Finalmente el dispositivo TAG debe tener un sistema de obtención de coordenadas, el cual va a
registrar las coordenadas, la fecha y hora de la toma de la información, en caso de no poder
tomar la información, debe tener la capacidad de informar que no es posible obtener la
información.
3.2. Modelamiento del problema La necesidad de seguimiento al proceso existente en la entrega - recepción de paquetes,
conlleva el requerir de un sistema capaz de reflejar de forma detallada la ruta que sigue un
paquete en todo instante.
Un sistema ideal debería considerar una actualización de las coordenadas de forma permanente.
Sin embargo, el coste de todo el sistema se incrementaría, pues la frecuencia de actualización
de la información incide de forma directa en los costos operativos, tanto de almacenamiento,
energía, procesamiento…
El sistema debe ser transparente para un usuario, es decir, el usuario no debe tener
preocupación de cómo se va a realizar el envío del paquete, basta con detallar las características
del envío previamente expuestas en el punto 3.1.2 Recepción, Tránsito y Entrega de la página
14.
Figura 3. 4 Diagrama ideal de recepción – entrega
La creación de la ruta está influenciada por el método de entrega a utilizar, es decir, si la entrega
se la va a realizar caminando la ruta va a ser diferente de si se la realiza en un vehículo.
17 TAG: Nombre que se le da a la tarjeta para el manejo de la trazabilidad de los paquetes que se va a utilizar en el presente TFM. 18 LED: Diodo emisor de luz (del inglés ligh-emitting diode)
17
3.2.1. Rutas Se va a definir dos tipos de rutas, la ruta que un paquete sigue para alcanzar su destino, la cual
va a ser el resultado de la toma de coordenadas de posicionamiento por parte del dispositivo
TAG y la ruta definida para la entrega del paquete.
La diferencia entre las dos rutas radica en que la primera ruta, se va creando a medida que el
paquete intenta llegar al destino definido. En cambio, la segunda ruta, es una especie de
sugerencia del camino que debe seguir un paquete con la finalidad de conseguir su destino.
Figura 3. 5 Diferencia entre ruta real y sugerida
En la Figura 3. 5 se trata de ejemplificar la diferencia entre estas rutas, la ruta en negro es la que
el sistema debe presentar como opción para que el paquete pueda ser enviado a su destinatario,
sin embargo, en la ruta se encuentra una prohibición de paso, lo cual impide completar la ruta.
El sistema de trazabilidad basa su funcionamiento, entendiendo como una huella de lo sucedido,
es decir, para el ejemplo de la Figura 3. 5 el sistema de trazabilidad debe guardar la ruta que
esta de color morado, pues está es la ruta por donde el paquete viajó.
Considerando lo anterior expuesto, un sistema de trazabilidad, debe almacenar la ruta real
cursada por el paquete, mas no la ruta recomendada. Esto no exime el poder almacenar la ruta
recomendada, pues guardar la ruta recomendada puede ser de utilidad al momento que se
requiera realizar algún tipo de comparación.
3.2.2. Tipos de envío El tratamiento para algunos paquetes debe ser diferenciado, pues puede contener elementos
frágiles, de envío prioritario o confidencial. Por tal motivo se puede establecer algunos perfiles
de envío, los cuales van a influir en la forma en cómo se envíe, por ejemplo en la conformación
de los lotes.
Un paquete marcado con un envío prioritario debe estar en un lote de envío prioritario. En
cambio un paquete marcado como confidencial, no requiere un lote diferente, lo único que
requiere es ser entregado únicamente a la persona a la cual está dirigido.
En lo posible un sistema debe restringir tener una gran cantidad de tipos de envío, para
conseguir una gestión más ágil, si se tiene más tipos de envío la gestión del proceso de entrega
puede tornarse difícil de manejar.
18
3.2.3. Gestión de rutas Como parte importante de un sistema de trazabilidad es la generación de un SIG que refleje, de
forma clara y con un nivel de precisión acorde a los requerimientos, la ubicación de un paquete
que se encuentre en tránsito o la ruta que se creó de un paquete que ya fue entregado.
En un sistema ideal las rutas que se recomienden para la entrega de paquetes, deben poder
actualizarse en tiempo real, es decir, si por algún motivo se cambia la ruta, el sistema de gestión
de rutas, debe enviar una actualización de la ruta. Sin embargo, se debe plantear un rango de
tolerancia para establecer a un dispositivo como “fuera de ruta”, es decir, debido a la precisión
de los dispositivos que se utilicen, no es prudente identificar a un dispositivo como “fuera de
ruta”, pues se debe procurar evitar falsos positivos.
Por tal motivo, se puede ajustar la ruta sugerida a un buffer19 de injerencia, donde el ancho del
buffer sirva para realizar una intersección entre las coordenadas de un dispositivo y la ruta a
seguir. El ancho del buffer debe estar acorde al rango de precisión del TAG.
Las rutas de tracking en cambio no deben tener opción de modificación, pues son un reflejo de
la ruta real que siguió un paquete en el proceso recepción – entrega. Permitir la opción de alterar
una ruta de tracking rompería el sentido que tiene el sistema de trazabilidad, pues es
precisamente, generar una huella del trayecto seguido por un paquete.
Por tal motivo, es imperativo que el sistema guarde un número adecuado de coordenadas, este
número de coordenadas debe ayudar a reconstruir la ruta efectuada en su totalidad, sin saturar
la cantidad de información enviada al SIG.
3.2.4. Precisión en la ubicación Un sistema ideal debería presentar una precisión equiparable a la realidad, sin embargo, tener
una precisión de este tipo puede significar un aumento considerable en el coste de la aplicación,
sin que esto se traduzca en una mejora sustancial en el sistema.
La precisión dependerá directamente del tipo de aplicación que se esté desarrollando, para el
caso del envío de paquetería en general, no presenta un nivel de precisión exigente.
3.2.5. Obtención de coordenadas La función principal de las coordenadas es poder generar la ruta de tracking, está debe contener
tantos puntos como sean necesarios.
Cuando un dispositivo de obtención de coordenadas se mantiene recibiendo de forma
permanente, se incrementa el consumo de batería, lo cual no es un comportamiento deseado
para un TAG, pues reduce la duración de las baterías.
19 Buffer: Región de incidencia de una ruta generada.
19
Algunos sistemas tienen una variación en el tiempo de toma de coordenadas, el tiempo depende
de factores como por ejemplo los acelerómetros, dichos sistemas incrementan o disminuyen ya
frecuencia de toma de coordenadas con el cambio de la velocidad del dispositivo.
Otra opción que se puede analizar es enviar un conjunto de coordenadas cuando el TAG intente
comunicarse con el SIG, de esta forma se consigue una eficiencia energética en cuanto al número
de transmisiones, la consecuencia de usar este mecanismo radica al momento de ocurrir una
falla, pues se pierden varias coordenadas en lugar de solo una.
3.2.6. Acción frente a errores Un sistema debe presentar cierto nivel de robustez frente a la perdida de información, errores
de ejecución o incapacidad de obtener información.
Los aspectos predeterminados para corregir errores en la entrega de un paquete deben estar
definidos en una tabla de severidad, donde se exponga el tipo de problema al que se puede
enfrentar y el nivel de severidad de la eventualidad.
Evento Severidad Probabilidad
Desconexión momentánea
Baja Media
Incapacidad de obtener coordenadas
Media Baja
Batería baja Alta Media
Apagado fortuito Alta Baja
Perdida de configuración del TAG
Alta Baja
Daños por caída Alta Media
Error en transmisión de información
Media Media
Tabla 3. 1 Tabla de eventos
Evento Acción
Desconexión momentánea
Ninguna
Incapacidad de obtener coordenadas
Encender una luz indicadora en el TAG.
Batería baja Cambio de batería
Apagado fortuito Revisión de batería, conexiones, cambio de batería.
Perdida de configuración del TAG
Asignar un nuevo TAG, manteniendo la información del anterior,
reconfiguración del TAG
Daños por caída Diseño resistente a caídas, que limite los golpes.
Error en transmisión de información
Utilizar un método de transmisión con control de transmisión.
Tabla 3. 2 Acciones frente a eventos
La Tabla 3. 1 muestra una descripción de los eventos que pueden afectar el sistema, la tabla
muestra también la probabilidad de que un evento ocurra, puesto que pese a que la severidad
20
de un evento sea alta, no implica que este evento tenga una probabilidad de ocurrir también
alta.
La Tabla 3. 2 muestra las acciones que se sugieren como parte del correcto funcionamiento de
los dispositivos de tracking.
Los eventos que se deben solucionar de forma prioritaria son los eventos que tienen una
probabilidad alta de ocurrir, pues si no se solucionan pueden entorpecer el correcto
funcionamiento del sistema.
3.3. Limitaciones de ejecución Si bien cumplir cada detalle de un sistema a simple vista podría parecer un propósito a cumplir,
esto no necesariamente es una realidad, pues algunos aspectos no pueden ser necesarios con
el fin de cumplir objetivos.
3.3.1. Precisión El sistema de trazabilidad requiere una precisión que permita detallar en un mapa la ruta que
siguió el paquete hasta llegar al destino. La información debe ser lo suficientemente densa como
para poder mostrar a detalle la información en un mapa. Tomando en cuenta que un vehículo
en un entorno urbano tiene una velocidad promedio.
Tomando en cuenta una calle de un entorno urbano, se tiene que un carril es de
aproximadamente 3 metros, teniendo en cuenta una calle típica de al menos 2 carriles se tiene
una dimensión de 6 metros más las aceras, tomando en cuenta un tamaño de aceras mínimo de
un metro con 50 centímetros, podemos tener una dimensión de 9 metros en total para el
tamaño de una calle tipo.
Con el cálculo anterior podemos decir que si el dispositivo de obtención de coordenadas tiene
una precisión de hasta 5 metros podemos asumir que el dispositivo aún se encuentra en la ruta.
La importancia de definir un parámetro de precisión no muy pequeño busca limitar la generación
de falsas alarmas de “fuera de ruta”.
Figura 3. 6 Comparación de un punto con una ruta
Si el sistema no es capaz de declarar a un dispositivo como “fuera de ruta” de forma adecuada,
va a tener falsos positivos disminuyendo el performance de los procesos. La Figura 3. 6 muestra
dos panoramas, el cuadro que contiene la letra B refleja un problema que implicaría requerir
una precisión elevada, pues la ubicación del dispositivo se encuentra dentro de la ruta como se
lo pone de ejemplo en el recuadro A de la misma figura.
Este proceso de intersección entre la ruta y el dispositivo se lo debe realizar aplicando un
proceso sobre la capa de la ruta.
3.3.2. Cobertura Un sistema de entrega y recepción de paquetes debe estar limitado por un área de cobertura,
que dependerá de la parte administrativa.
21
Una posibilidad consistiría en establecer un perímetro de cobertura de cada oficina en un
sistema Figura 3. 7, sin embargo la superposición de oficinas implicaría que algunas áreas sean
atendidas por 2 o más oficinas o peor aún por ninguna. En la parte central de la Figura 3. 7 se
puede observar que existe un área atendida por tres oficinas.
La solución a este problema es generar elementos geográficos plenamente definidos, con el fin
de lograr la cobertura de todo el sector que se desee.
Es imperativo evidenciar que un sistema de entrega de paquetes producirá un valor diferente
dependiendo la distancia y el alcance. Mediante procesos GIS se pueden establecer cálculos de
algunos parámetros que ayuden a gestionar la generación de los rubros. Como por ejemplo
calcular la distancia entre el origen y destino, en base a alguna tabla preestablecida, en base a
rangos, determinar el valor del envío…
Figura 3. 7 Cobertura basada en radio
3.3.3. Tipos de paquetes Los tipos de paquetes que se puede admitir para el envío es algo que se debe tener en cuenta
al momento de diseñar un sistema.
La limitación de los productos que se transportan como el correcto almacenaje puede hacer que
el sistema sea capaz de generar una solución más adecuada. Es decir el tipo de empaque de los
productos va a influenciar en la facilidad de colocar un TAG y también a transportarlo de forma
conveniente.
Del mismo modo que el empaque importa, el tamaño también, por tal razón es de gran
importancia que se debe realizar una limitación en cuanto a tamaños. En la industria de los
envíos se puede disuadir a los usuarios de enviar paquetes con un tamaño innecesariamente
superior al contenido aplicando tarifas de cobro en base a los tamaños.
22
Figura 3. 8 Tipos de empaques utilizados para el transporte de paquetería. Recuperado de: http://www.uline.com/Cls_04/Boxes-Corrugated
En la Figura 3. 8 se puede ver diferentes tipos de empaques, es suficiente tener una tabla
asociada al tipo de paquete y al tamaño para generar los cargos de envío.
3.4. Limitaciones de estudio El presente TFM busca ejemplificar en una escala menor, un funcionamiento de lo establecido
en el sistema, utilizando algunas herramientas aprendidas en el estudio del Master de
Geoinformática.
La idea del estudio del presente TFM es evidenciar de forma separada en algunos casos las
ventajas y desventajas de usar los sistemas que se van a exponer aquí. Tomando en cuenta las
limitaciones de tiempo y espacio para la realización del trabajo.
23
Capítulo 4
3.4.1. Lotes Se van a plantear un esquema de comprobación de cambios de lotes, para lo cual se va a
realizar la simulación de un paquete cambiando de un lote a otro.
Figura 3. 9 Esquema de diseño de pruebas
La Figura 3. 9 muestra el diseño que se quiere abordar como parte del TFM.
Se ha figurado que los dispositivos TAG están en dos lotes, los cuales se encuentran en tránsito,
al llegar a una oficina en base a su información se agrupan de una forma diferente, comprobando
así el funcionamiento de asignación de lotes.
La asignación de lotes es un punto importante de comprobación puesto que, si los paquetes no
pueden cambiar de lotes a través de un proceso de envío, no tiene ningún sentido el estudio de
la trazabilidad, pues la trazabilidad se plantea como una respuesta al cambio al que están
expuestos los elementos en un proceso de traslado de paquetes.
3.4.2. Número de dispositivos En un entorno real la cantidad de dispositivos llamados TAG que se deben emplear, debe ser lo
suficiente como para atender cada uno de los paquetes que lleguen para ser entregados, sin
embargo, tomando en cuenta que se trata de un entorno de pruebas y la limitación de la
cantidad de dispositivos de transmisión, se ha conseguido elaborar 3 dispositivos TAG.
3.4.3. Sistema SIG Como parte del manejo del sistema, se va a elaborar un sistema que tenga la funcionalidad de
crear rutas entre los el origen y el destino de un paquete, teniendo en cuenta que un paquete
va a tener como origen una ubicación perteneciente a una oficina del sistema. En cambio el
destino es la dirección de entrega.
La dirección de entrega es diferente a una de las direcciones de la oficina, pues se pretende
tener tres estados de un paquete que se muestran en la Figura 3. 1 refiriéndose a la recepción,
tránsito y entrega.
24
El sistema también almacena las rutas de tracking de los paquetes que ya alcanzaron su destino,
una ruta guardada se la despliega en un mapa.
El sistema también preserva la información relacionada al envío de paquetes, es decir, origen,
destino, código de identificación, fecha y toda la información relacionada con la entrega del
paquete.
3.4.4. Resistencia de materiales El diseño definitivo de un programa de trazabilidad debe contemplar un análisis de la resistencia
de los materiales que se deben usar. Sin embargo, el campo de estudio del presente master se
encuentra apartado de la resistividad de materiales, en especial, se debe analizar la resistencia
a impactos.
3.4.5. Códigos de TAG Se debe generar un proceso de identificación de cada TAG en la red de entrega, esto implica que
cada uno de los dispositivos esté unívocamente etiquetado en el sistema.
El proceso de generación de los códigos debe considerar varios elementos, que den información
acorde al proceso que sigue un paquete.
3.4.6. Precisión La precisión del sistema de pruebas se la toma en base a los dispositivos usados, teniendo en
cuenta que son elementos de electrónica de estudio. Es decir, son elemento que su finalidad
es el aprendizaje como objetivo del equipo.
Los equipos de posicionamiento entregan los datos que reciben del satélite, con fecha y hora
de la adquisición, esta información va a ser procesada por el módulo coordinador de las
comunicaciones.
3.4.7. Área de cobertura El área de cobertura que se va a tener en el sistema de pruebas está limitada al rango que
provee el sistema de comunicación inalámbrico.
25
Modelo de trazabilidad El modelo de trazabilidad plantea tener una posición actualizada cada cierto periodo de tiempo,
recopilando la información para al final de la entrega, guardar la ruta que el paquete siguió.
Se plantea tres procesos básicos en el sistema, el primero es la recepción, en la Figura 4. 1 en el
bloque superior se contempla la adquisición de los datos sobre el paquete que se requiere
enviar. Tan pronto como se ingresan los datos, se asigna un dispositivo TAG al paquete.
El dispositivo TAG tiene el número de identificación asociado a un número de único del paquete,
para poder realizar el seguimiento de la ubicación del paquete.
Figura 4. 1 Diagrama de proceso
De los datos que se ingresan al sistema se deben clasificar, algunos de ellos están destinados a
identificación externa, la cual no va a ser utilizada en ningún proceso de georeferenciación, en
cambio, la dirección de destino, va a ser la información mediante la cual se consiga obtener la
ruta que se debe seguir.
En la Figura 4. 3 en una parte del proceso de cálculo de ruta se evidencia el componente de
servicio web que se utiliza. Sin embargo, el proceso de cálculo de ruta implica algunos otros
procesos.
Figura 4. 2 Puntos intermedios en una ruta
El cálculo de ruta inicia con obtener una primera ruta piloto, que sirve para hacer una
intersección del área de cobertura de las oficinas y determinar cuáles son las oficinas por las que
26
debe un paquete pasar en el proceso de envío. Después de que de obtienen las oficinas se añade
las direcciones de las oficinas como puntos intermedios de la ruta y se vuelve a calcular la ruta.
En la Figura 4. 2 se destaca que pueden existir varios puntos intermedios, dependiendo de si la
ruta piloto se interseca con el área de influencia de las oficinas. En esta figura el círculo con el
número, representa la cantidad de oficinas por las que un paquete debe pasar hasta llegar a su
destino y no representa el número asignado a la oficina.
Figura 4. 3 Proceso para calcular ruta
Un esquema que se puede usar es el que se evidencia en la Figura 4. 4, pues mediante el uso de
un mapa coroplético se denota el área de influencia que tiene cada oficina, en éste caso una
oficina tiene una incidencia o área de cobertura grande, pero cada una de las áreas se encuentra
perfectamente delimitada. Cada mapa puede ser usado como una capa diferente, esto ayuda a
gestionar la forma como se despliega la información.
27
Figura 4. 4 Mapa coroplético20 de cobertura de una oficina
4.1. Esquema de rastreo El esquema de rastreo que se sigue está basado en algunos parámetro previamente definidos,
dichos parámetros buscan generar eficiencia de los recursos, optimizando en lo posible los
recursos.
4.1.1. Tiempo El primer parámetro que se define para realizar el seguimiento de los paquetes es la
periodicidad, pues, tomando en cuenta que los dispositivos TAG tienen una batería, el uso
continuo de todos los elementos del TAG reduce el tiempo de duración de la batería.
Figura 4. 5 Seguimiento de paquetes durante el transito
20 Coroplético: Mapa temático que aporta información espacial mediante el uso de colores
28
El esquema de seguimiento que se plantea se lo refleja en la Figura 4. 5, donde cada punto rojo
al interior del mapa, es un lugar donde se ha tomado la ubicación del paquete. La densidad de
los puntos debe ser acorde a la necesidad, para poder hacer una reconstrucción de una ruta de
forma que sea un reflejo de la realidad.
Tomando en cuenta que la distribución urbanística de una ciudad, una manzana comprende
típicamente una dimensión que varía entre los 100 a 150 metros de longitud por cada lado que
conforma la manzana. Un sistema capaz de reflejar una ruta para una ciudad debe tomar al
menos una medición cada 100 metros. Tomando en cuenta la velocidad media diaria de Madrid
España, que se ubica entre los 15 – 20 Km/h utilizando ecuación de la Figura 4. 6 se puede
obtener que el tiempo en segundos requerido para realizar el barrido de coordenadas es de 18
segundos, considerando una distancia de 100 metros y una velocidad de 20 Km/h.
𝑡𝑖𝑒𝑚𝑝𝑜 =𝑑𝑖𝑠𝑡𝑎𝑛𝑐𝑖𝑎𝑃𝑟𝑜𝑚𝑒𝑑𝑖𝑜
𝑣𝑒𝑙𝑜𝑐𝑖𝑑𝑎𝑑𝑃𝑟𝑜𝑚𝑒𝑑𝑖𝑜
Figura 4. 6 Calculo del tiempo de lectura de una coordenada
4.1.2. Rastreo El seguimiento del rastreo va a realizarse por un dispositivo GPS, que va a estar integrado en el
TAG. Las consideraciones a tomarse en cuenta son las propias del correcto funcionamiento de
un GPS.
Figura 4. 7 Funcionamiento de la obtención de coordenadas en un TAG
4.1.3. Seguimiento El seguimiento de un paquete se lo diseña para que tan pronto como los datos llegan al sistema,
estos datos se reflejen en una capa.
La capa base va a ser la misma para todos, en cambio la capa de transito de paquetes debe
mostrar los paquetes en movimiento, de acuerdo al movimiento real de un paquete.
29
Cada paquete está representado por un icono, el icono contiene un elemento desplegable que
se acciona haciendo clic sobre él.
Figura 4. 8 Proceso de manejo de información de marcadores en el mapa
El icono se mantendrá el mismo movimiento que tiene el paquete en la realidad.
30
Para no generar aglomeración de iconos o marcadores en un mapa, el uso de clusterización21
de marcadores evita que una densidad alta de marcadores haga el mapa un elemento difícil de
entender.
Figura 4. 9 Ejemplo de uso de clusterización de marcadores
La Figura 4. 9 muestra un ejemplo del uso de clusterización, la agrupación se la realiza por
elementos de cercanía, la clusterización es sensible al zoom22 en un mapa. Los marcadores
cercanos se unen cuando el zoom se aleja o se separan cuando el zoom se acerca.
Figura 4. 10 Ejemplo de utilización de marcadores sin clusterización
Un mapa que no utiliza clusterización puede limitar la visualización de elementos cuando la
densidad de marcadores es alta. La Figura 4. 10 es un ejemplo de un mapa que despliega varios
marcadores impidiendo visualizar el mapa base.
21 Clusterización: Agrupación de varios marcadores en un mapa para mostrarlos como un único elemento. 22 Zoom: Efecto de acercar o alejar una imagen.
31
4.1.4. Puntos fijos Para el funcionamiento de un sistema de entrega, se establecen áreas de incidencia de una
oficina, las áreas de incidencia deben ser calculadas en torno a parámetros como por ejemplo la
distancia máxima desde una oficina, hasta el borde más lejano del área de incidencia.
La capa de oficinas debe ser fija, pues son puntos que no se encuentran en movimiento, se puede
asociar a los marcadores de las oficinas popups que contengan la información relevante de las
oficinas, como teléfono, dirección, página web, etc.
En una interfaz orientada al usuario, se puede realizar un proceso para buscar la oficina más
cercana para un usuario.
Figura 4. 11 Ejemplo de búsqueda del elemento más cercano
Por ejemplo, vamos a suponer que se necesita encontrar una oficina que pueda transportar
elementos deportivos. Los cuales están representados en el mapa de la Figura 4. 11 con
marcador de una bicicleta, el usuario se encuentra representado por el marcador celeste. La
aplicación pinta de un color diferente el marcador más cercano que permite transportar equipos
deportivos.
El usuario puede mover libremente el marcador que representa su ubicación, sin embargo, no
tiene la capacidad de mover los marcadores de las oficinas.
La información que puede ver un cliente difiere de la información que puede observar un
empleado. Mientras un cliente puede ver las oficinas, un dependiente de la empresa puede
observar los paquetes circulando en el mapa.
4.1.5. Ruta en el mapa La ruta que un paquete recorrió hasta llegar al destino puede ser desplegada en un mapa. La
ruta no puede ser editada después de que sea guardada, pues se altera el proceso de
trazabilidad.
La ruta se muestra como una polilínea conformada por cada uno de los puntos que fueron
tomados, tiene un marcador de inicio y fin del recorrido.
También se puede calcular la distancia recorrida, por el paquete, el tiempo de duración del
transporte, pues se cuenta con una fecha y hora de cada punto recorrido.
32
4.1.6. Esquema de lotes La organización de lotes sirve para manejar una gestión de trazabilidad más rápida, pero
también para utilizar de forma eficiente los recursos.
Figura 4. 12 Diferencia de transmisión entre esquema individual y de lotes
Se debe aprovechar las características presentes en algunos dispositivos, los cuales ofrecen
estados sleep, esto quiere decir que un dispositivo no se mantiene en proceso de transmisión
todo el tiempo. El modo sleep disminuye el consumo de batería.
Un paquete sin embargo, puede cambiar de lotes, dependiendo de las necesidades. En la Figura
3. 9 se puede apreciar el cambio de un paquete de un lote a otro. Cuando un paquete se
encuentre fuera de la oficina, no pueden darse cambios. El único lugar donde un paquete puede
cambiar de lote es en una oficina.
4.1.7. Esquema de tramas GPS Las tramas que contienen la ubicación de los dispositivos TAG obtienen la información del
elemento GPS que se encuentra conectado. Se genera un formato de trama, para que el sistema
de manejo, sea capaz de entender los datos que el GPS le transmite.
La Figura 4. 14 Diagrama de flujo de entramado en datos de ubicación muestra el proceso de la
toma de datos, los datos se los toma de forma periódica, por tal motivo, cuando una trama23 fue
creada. Se realiza una delimitación de la trama, utilizando una palabra o carácter de inicio,
también un delimitador de fin.
Cuando la trama fue creada con éxito, se le agrega el delimitador de fin y se espera un tiempo
predefinido antes de enviar la siguiente trama.
En caso de que no se reciben datos del GPS, la trama no debe der creada, en su lugar se envía
una serie de caracteres, los cuales en el sistema interprete como falta de datos.
Figura 4. 13 Formato de transmisión de datos
La cadena de caracteres se la organiza siguiendo un formado preestablecido, para que en el
receptor los valores puedan ser obtenidos de una forma correcta. La Figura 4. 13 muestra un
detalle de los campos que se establecen como parte de la trama que enviará cada dispositivo
para poder trazar su ruta.
23 Trama: Paquete de datos ordenados de acuerdo a una especificación establecida.
33
Figura 4. 14 Diagrama de flujo de entramado en datos de ubicación
4.1.8. Repositorio de rutas El repositorio de las rutas genera archivos con la información referente a la ruta cursada por el
paquete en su trayecto.
La información que se guarde debe ser la proporcionada por el dispositivo, es decir, pese a que
la ruta recomendada para el transporte del paquete sea igual a la que sigue el paquete, la ruta
que se guarde va a ser la ruta formada por los puntos tomados por el dispositivo TAG.
Es importante en el repositorio guardar información referente a los datos con los cuales se
procedió a enviar el paquete, dado que, si un paquete tiene información de transportar con
cuidado, la información debe haber quedado guardada como parte del repositorio.
4.2. Dispositivo de rastreo El dispositivo de rastreo también llamado TAG en el presente documento, debe cumplir con las
especificaciones requeridas en el diseño del sistema de trazabilidad, entre las cuales cuenta,
tener un dispositivo de obtención de coordenadas, batería, módulo de procesamiento, módulo
de transmisión e indicadores LED.
34
4.2.1. Diseño conceptual El diseño conceptual del dispositivo implica la elaboración de un esquema de diseño, capas de
abarcar las consideraciones. En la Figura 3. 3 Tarjeta de tracking de paquetería se puede
observar un detalle grafico de los módulos que comprenden el dispositivo TAG.
Figura 4. 15 Diagrama modular del TAG
Parámetros generales a considerar al momento del diseño del TAG se exponen en la Figura 4.
15 Diagrama modular del TAG, donde se incluyen los parámetros de precisión del GPS, las
características reprogramables del módulo de procesamiento, esto es algo valioso a considerar,
pues si el dispositivo no cuenta con esta característica no se podría considerar un diseño de
mejoras futuras. Pues un sistema es perfectible en el tiempo, las consideraciones actuales,
pueden diferir a las reales.
Con este diseño conceptual se deja delimitadas líneas de acción capaces de solventar el diseño
establecido y los cambios que se deseen incluir en un futuro.
En cada módulo se establece como parte importante el consumo energético, esta consideración
es vital al momento de delinear el diseño, pues se trata de generar un balance entre las
necesidades requeridas y el consumo requerido. Un sistema de obtención de coordenadas
extremadamente preciso no necesariamente es lo que el sistema de trazabilidad necesita si el
consumo de energía limita el uso del aparato a trayectos pequeños.
4.2.2. Resistividad Al tratarse de un dispositivo que tiene que viajar con los paquetes, se puede decir que es
propenso a caídas, debidas a la manipulación o al proceso de transporte.
Tomando en cuanta una altura promedio de 180 centímetros de una persona, se puede
establecer esa altura, como la altura que un dispositivo deba resistir.
35
La resistencia tampoco puede sacrificar el peso o las dimensiones de la fabricación de la carcasa
que contiene los componentes del dispositivo de trazabilidad que se muestra en la Figura 3. 3
Tarjeta de tracking de paquetería.
El plástico es el material que por sus características de resistividad, peso y resistencia se pueden
acoplar al diseño de la carcasa.
Entre los diferentes tipos de plástico, el polipropileno destaca por sus características de
resistencia a los golpes.
4.2.3. Batería La batería que alimente los componentes electrónicos del TAG debe ser una batería del tipo
recargable de larga duración, por tal motivo se plantea utilizar baterías de Ion-Litio, las cuales
pueden ser recargadas y también tienen un periodo de duración alto.
Se puede tomar como ejemplo el consumo de un teléfono inteligente, que tiene componentes
de procesamiento y ubicación, estos teléfonos usan baterías de tipo recargable.
El amperaje debe ser calculado en base al diseño del circuito que se establezca para el TAG, sin
embargo, el diseño del TAG no es parte del alcance del TFM.
Otro factor importante al momento de encontrar la batería adecuada, es el tiempo promedio
de uso o el tiempo de la recarga. Es decir, limitar la cantidad de veces que se puede o se debe
recargar un dispositivo.
Una batería con un mayor tiempo de duración tiene una incidencia directa en su tamaño y su
precio. Se debe contemplar los dos ámbitos, pues no se desea tener un TAG con un tamaño
grande.
4.2.4. Comunicaciones Las comunicaciones que pueden tener los dispositivos deben cumplir las características de
organización planteadas como Lotes. Las comunicaciones que se lleven a cabo entre dispositivos
deben poder compartir información entre ellos.
Que los dispositivos puedan establecer de forma univoca la pertenencia a un segmento definido
de red, es parte fundamental del presente diseño. Pues sustenta la acción del modo de
funcionamiento cíclico.
La consideración de comunicaciones sirve para poder cumplir con lo que se muestra en la Figura
4. 12 donde en un lote tan solo uno de los dispositivos transmite.
Figura 4. 16 Configuración tipo clúster
La configuración necesaria es la de tipo clúster. Donde se organizan en subgrupos.
36
4.2.5. Indicadores Los indicadores son una parte indispensable en cualquier sistema, sin un correcto sistema de
indicadores sería difícil identificar de forma clara los sucesos que están ocurriendo en el sistema.
Una pantalla que muestre las indicaciones de destino y final de un dispositivo, también
información referente a la ruta e incluso la información de adecuado funcionamiento se puede
ser de mucha ayuda, sin embargo, una pantalla consume una cantidad importante de energía.
La recomendación es usar indicadores tipo LED, los cuales con un correcto código de eventos
puede proporcionar la información adecuada del funcionamiento de la trazabilidad.
En la Figura 3. 3 se puede ver que se establecen 2 indicadores LED, los cuales tienen la función
de reflejar los procesos que se están llevando a cabo en los dispositivos TAG.
4.2.6. Comportamiento El paquete debe mantener un comportamiento acorde al diseño de la trazabilidad, simplificando
procedimientos. Entre los cuales se pueden establecer los siguientes.
Figura 4. 17 Comportamiento de un TAG
El TAG va a tener un funcionamiento acorde al área donde se encuentre, esto quiere decir que,
tal como se muestra en la Figura 4. 17 cuando el paquete está fuera de la oficina puede
encontrarse en dos tipos de funcionamiento, puede estar en fase de tránsito, es decir que en su
ruta aún falta al menos una oficina por recorrer o puede encontrarse en fase de entrega.
4.3. Algoritmo de procesamiento de paquetes El procesamiento de los paquetes que ingresan al proceso de envío sigue un tratamiento que se
detalla de forma gráfica en la Figura 4. 18.
Primero empieza con la recepción del paquete, es la primera comprobación del área de
cobertura que tiene la red de entrega de paquetería. Pues en caso de que el paquete desee ser
enviado a un área que no se encentre en el área de cobertura finaliza el proceso de entrega.
37
Si el paquete es admitido para el proceso de entrega, se recopila la información del paquete,
toda la información ayuda no solo a que el paquete llegue desde el origen a su destino, sino
también, que llegue en las condiciones adecuadas.
Figura 4. 18 Algoritmo de comportamiento de un paquete
Después de que los datos de entrega han sido almacenados de forma correcta, se realiza el
cálculo de la ruta piloto, la cual servirá para conseguir la ruta de oficinas que debe seguir el
paquete. Es decir si un paquete no cruza por el área de incidencia de una oficina no tiene
necesidad de realizar tránsito en esa oficina.
En cada oficina se realiza una nueva asignación de lote, el cambio de lote se puede dar
únicamente cuando el paquete se encuentra en una oficina tal como se detalla en la Figura 4.
17. Y dependerá del área de incidencia.
Figura 4. 19 Cambio de indicadores LED
Cada cambio que suceda en el estado de un TAG debe generar un cambio en los LED indicadores
del TAG, esto es para facilitar el proceso para los dependientes de las oficinas. La cantidad de
38
luces led que contenga el TAG dependerá en gran medida al número de oficinas presentes en la
red. De ser el caso se podría instalar un display numérico de siete segmentos24 para la asignación
visual de los lotes. La Figura 4. 19 nos indica que en cada momento que existe un cambio en el
estado de la transmisión la luz o indicador cambiará. Los estados se encuentran detallados en el
Figura 4. 1 Diagrama de proceso, donde se especifican las fases del proceso de entrega.
Los paquetes se mantendrán en tránsito mientras las coordenadas de destino y el área de
cobertura de la oficina en la que llegue el paquete sean comunes. El proceso de verificación se
lo debe realizar por medio de una intersección entre el área de cobertura de la oficina y el punto
de destino.
Cuando un paquete realizó el cambio de estado, es decir se encuentra en el proceso de entrega,
se requiere realizar el cambio en los indicadores led. El proceso de entrega del paquete en
cambio activa todos los componentes, pues a partir de ese momento la trazabilidad del paquete
se maneja de forma individual.
Se sigue la ruta hasta lograr su entrega, en caso de que la entrega no pueda llevarse a cabo, el
paquete regresa a la oficina de la cual salió por última ocasión en espera de un proceso de
acción.
4.4. Retos a superar La trazabilidad en paquetería cada día está creciendo y los retos que debe superar con el
incremento de su uso son cada vez mayores.
4.4.1. Pérdida de cobertura Cuando se diseña un sistema basado en la georeferenciación un reto a superar siempre son los
lugares con pérdida de cobertura, tales como túneles, edificios.
En tal sentido en la actualidad se puede solventar o mejorar algunos de estas pérdidas de señal
por obstrucción.
Una de ellas sería tener un sistema paralelo individual de recopilación de información, como por
ejemplo un teléfono inteligente, el cual, en base a los sensores de movimiento, como el
acelerómetro y brújula, se puede tener una orientación aproximada de la ruta que sigue el
paquete. Después realizar algún tipo de corrección de la ruta que siguió el paquete, sin embargo
se puede hablar de un error acumulado, el cual se evidenciaría en tramos largos de perdida de
conexión.
4.4.2. Duración de batería Este campo es el que limita varios desarrollos, sin embargo pese al incremento en la capacidad
de duración de las baterías, las mismas no pueden solventar todas las necesidades.
La agregación de elementos electrónicos más precisos o de mejor interactividad con el usuario
incide de forma directa en el consumo de energía.
Por tal motivo su uso puede considerarse restrictivo y antes de añadir un elemento al dispositivo
hay que evaluar el consumo de energía.
24 Display numérico de siete segmentos: es un visualizador que permite representar mediante luces valores numéricos del 0 al 9.
39
4.4.3. Facilidad de operación La trazabilidad es la generación de una ruta que refleje el proceso por el cual un paquete llego
de su origen a su destino, sin embargo si un sistema es difícil de usar el resultado puede no ser
el deseado, llegando incluso a requerir personal especializado lo cual tendrá un impacto en el
coste de operaciones del sistema.
La facilidad de operación debe ser concebida como la relación entre lo necesario y lo
indispensable. Es decir, hay cierto nivel de precisión que basta para generar una ruta, sin
embargo, un sistema de georeferenciación de mejores prestaciones puede generar datos más
precisos, pero para los fines no es útil.
El diseño de la aplicación con la que se implemente la trazabilidad debe ser fácil de manejar,
tanto para el personal dependiente de las oficinas como para el usuario al que se le permita
acceder a los datos del paquete.
4.4.4. Adaptación a cambios El sistema también debe poder adaptarse a cambios, para poder responder a las necesidades
que van apareciendo en el mercado de la entrega de paqueterías, un ejemplo sería si se presenta
la necesidad de cambiar el algoritmo de funcionamiento del TAG. No es eficiente tener que
cambiar de TAG si se requiere hacer un cambio. En cambio sí basta con reenviar la nueva
configuración al dispositivo, esto hace que el sistema pueda mantenerse vigente por un periodo
más amplio de tiempo.
4.5. Diseño de la aplicación La aplicación que se genere para la transmisión de datos, debe contener varios contenidos
diferenciados para los distintos tipos de usuario que pueden acceder.
Figura 4. 20 Perfiles de usuarios en la aplicación
La aplicación va a contener tres perfiles de usuario, para poder gestionar el sistema que se ha
planteado.
40
El perfil con menos privilegios será aquel que se lo ha denominado como Usuario, este perfil va
dirigido al cliente que realiza el envío, por tal motivo no puede observar nada que no sea el
estado del envío de su paquete, el funcionamiento debe ser orientado a la simplicidad pues a
nivel de perfil de usuario se debe considerar la falta de conocimiento específico en manejo
sistemas. El sistema desplegara la posición en un mapa del paquete, indicando cuales y cuantas
oficinas faltan cursar hasta llegar al destino.
El perfil de empleado es un perfil con más permisos, permite gestionar los envíos, visualizar el
estado global de los paquetes, no tiene permitido realizar ninguna configuración sobre los
dispositivos de trazabilidad. Al empleado se le permite visualizar los paquetes que están
cursando en la red, también se le permite gestionar las rutas. No tiene permiso de modificar los
archivos generados en la trazabilidad.
El perfil de administrador es un perfil que engloba los anteriores sistemas. Adicionalmente
también puede realizar cambios en las configuraciones de los dispositivos. Este usuario puede
eliminar los repositorios guardados de los paquetes entregados.
Figura 4. 21 Creación de rutas utilizando un servicio web
En la Figura 4. 21 Creación de rutas utilizando un servicio web, se muestra un aplicativo que
retorna la ruta entre dos puntos, dicha ruta permite escoger el medio de transporte a utilizar,
para en base a ese parámetro tomar las consideraciones necesarias para alcanzar el destino final
que se requiere.
Puesto que se van a utilizar servicios web para el cálculo de las rutas, para el perfil de empleado
y usuario se pueden usar aplicativos web, con la finalidad de hacer fácil el acceso desde cualquier
tipo de dispositivo. Las páginas web pueden ser vistas desde los teléfonos celulares sin necesidad
de realizar ninguna instalación.
Todos los datos de las rutas generadas serán los que por medio de las comunicaciones entre los
TAG asignados a los paquetes envíen al sistema.
41
4.6. Consideraciones adicionales Se deben establecer parámetros de funcionamiento para ciertas condiciones que pueden
suceder en los momentos de ejecución del proceso de entrega. Si bien la idea es utilizar un nuevo
mecanismo de manejo de paquetería, la fase inicial de la entrada en funcionamiento del sistema,
puede coexistir el sistema convencional con el nuevo sistema.
Sin embargo, el sistema debe establecer ciertos procedimientos que se van a ejecutar como
cuando un evento suceda.
4.6.1. Pérdida de conexión del dispositivo El presente debe poder responder a las siguientes preguntas, se las va a responder seguido de
la pregunta:
¿Qué pasa si mi dispositivo se desconecta?
R: En una fase inicial se puede generar un módulo de ingreso de la ruta seguida por otro
paquete en el mismo lote. En caso de que el paquete ya no se encuentre formando parte de
un lote, la información de trazabilidad se completara de forma manual con la información del
empleado que realiza la entrega, indicando que hay pérdida de conexión.
¿Pierde la información de origen o destino?
La información que se tiene como origen y destino es referencial en un punto inicial del
sistema, es decir, como los paquetes no tienen autonomía de direccionamiento no pasa nada
si un paquete pierde la información. Cuando la información no llegue adecuada, se debe
alertar que hay paquetes sin la información completa, los dependientes deben obtener la
información desde los repositorios.
¿Deja de recibir señal GPS?
Existen dos escenarios en este caso, si el dispositivo se encuentra como principal en un lote o
no. En el primer caso, debe alertar al sistema que perdió señal para que el sistema de paso a
activar otro dispositivo. Se recomienda realizar un proceso de búsqueda de señal GPS. En una
mejora del sistema se puede establecer métodos alternativos de generación de ruta cuando
un sistema pierda señal, puesto que la perdida de señal puede ser momentánea.
4.6.2. Ahorro de energía El ahorro de energía se basa en la utilización eficiente de equipos, es decir, considerar que 10
dispositivos todos recibiendo datos y transmitiendo no es eficiente. La solución planteada es
la creación de lotes los cuales tengan una utilización alternada de los dispositivos.
Es decir, si un equipo estuvo un trayecto transmitiendo, cuando llegue a una oficina, el
siguiente trayecto no va a transmitir, ubicándolo al final de una pila de prioridad de asignación
de la transmisión. Con esto evitamos agotar de forma prematura la batería de un solo
dispositivo.
42
Capítulo 5
Trabajo experimental
5.1. Entorno de pruebas En presente TFM pretende establecer un entorno de pruebas para probar algunas de las
características que se plantean en el sistema. En ese sentido se toman en cuenta los factores
que limitan la elaboración de un sistema final. Entre las limitaciones se encuentra el tiempo de
desarrollo, la accesibilidad a dispositivos.
5.1.1. Módulo de procesamiento Para el módulo de procesamiento se ha utilizado un Arduino UNO, que tiene características de
procesamiento adecuadas para realizar proyectos iniciales. También se destaca que el número
de salidas es 14, con lo cual se puede solventar las necesidades, pues se necesitan 4 salidas para
conectar el módulo de transmisión y el módulo de ubicación. Cuenta con una salida de 3.3 V
ideal para poder alimentar tanto al módulo de transmisión y de ubicación.
Microcontroller ATmega328P
Operating Voltage 5V
Input Voltage
(recommended)
7-12V
Input Voltage (limit) 6-20V
Digital I/O Pins 14 (of which 6 provide PWM
output)
PWM Digital I/O Pins 6
Analog Input Pins 6
DC Current per I/O Pin 20 mA
DC Current for 3.3V Pin 50 mA
Flash Memory 32 KB (ATmega328P)
of which 0.5 KB used by
bootloader
SRAM 2 KB (ATmega328P)
EEPROM 1 KB (ATmega328P)
Clock Speed 16 MHz
Length 68.6 mm
Width 53.4 mm
Weight 25 g
Tabla 4. 1 Especificaciones técnicas Arduino UNO. Tomado de https://www.Arduino.cc/en/Main/ArduinoBoardUno
43
El módulo Arduino UNO cumple también con la especificación de ser reutilizable pues cuanta
con un entorno de desarrollo que permite realizar tantas actualizaciones como el usuario desee.
La comunicación con el módulo de transmisión se la realiza mediante la utilización de una librería
desarrollada para Arduino.
Figura 5. 1 Esquema de conexiones TAG de pruebas
En la Figura 5. 1 se puede ver el módulo de procesamiento que está incluido como parte del
diseño del TAG de pruebas. El código que está programado en el Arduino UNO se encuentra en
su totalidad en el Anexo A.
Figura 5. 2 Datos transmitidos por el módulo de procesamiento
El formato de transmisión de la información se encuentra detallado en la Figura 5. 2 Datos
transmitidos por el módulo de procesamiento.
5.1.2. Módulo de ubicación Para la ubicación se ha utilizado un NEO-6M u-blox 6 GPS, que es compatible con Arduino UNO.
Se escoge este GPS por ser compatible con Arduino UNO también se lo considera pues la
precisión horizontal que dispone el equipo es de 2.5 metros. Tomando en cuenta que el sistema
tiene un requerimiento de precisión de 5 metros, el GPS cumple con la precisión requerida.
Las características en detalle del GPS utilizado se las puede encontrar en la web, en el Anexo B
se muestra la primera página de datasheet25 del GPS.
25 Datasheet: Documento de especificaciones técnicas de un dispositivo.
44
Figura 5. 3 Fotografía del GPS NEO-6M
La Figura 5. 3 Fotografía del GPS NEO-6M muestra uno de los dos GPS con los que se desarrolló
el entorno de pruebas.
5.1.3. Módulo de batería Para la batería se usa una alimentación de tres celdas de marca TURNIGY de 1.3 mAh26. Cumple
con las características especificadas en cuando a la durabilidad, capacidad de recarga y está
hecha de iones de Litio.
5.1.4. Módulo de transmisión Para la transmisión de datos se usó los dispositivos XBee S2. Los cuales cumplen con las
características de bajo consumo de energía, configuración tipo clúster con coordinadores,
routers y dispositivos finales, sin embargo no cumple con la característica de alcance.
Se utilizan estos equipos puesto que como se trabaja en un entorno de pruebas la distancia con
la que se va a trabajar en los dispositivos no presenta un problema.
El esquema en el que se conectaron los dispositivos de pruebas se refleja en la Figura 5. 4
Esquema de conexión de XBee en las pruebas.
Figura 5. 4 Esquema de conexión de XBee en las pruebas
La Figura 5. 4 es una captura de pantalla cuando los dispositivos se encuentran conectados y
transmitiendo. La configuración la muestra de forma automática el programa de gestión propio
de los radios XBee. Dicho programa se llama XCTU. En el Anexo C se muestran dos capturas de
pantalla del gráfico usado. En el Anexo D se muestra la primera página del datasheet del
26 mAh: Medida de corriente mili amperios.
45
dispositivo. De ser requerido también se incluye en este anexo la dirección web donde se
encuentra.
5.2. Procesamiento de datos Los datos que el dispositivo de trazabilidad envía a la estación coordinadora son manejados
para crear un archivo capaz de mostrar en un mapa la información recopilada. Entre los
elementos usados como parte del trabajo se encuentran los siguientes que se detallan
5.2.1. Diseño y elaboración de una carcasa Se diseña una carcasa para el entorno de pruebas, la finalidad de está carcasa es cumplir con las
especificaciones de resistencia y almacenamiento de los elementos mostrados en la Figura 5. 1.
Siguiendo la recomendación realizada en el presente TFM, se utilizó plástico como el material
del cual va a estar elaborado. Dado que deben ir todos los elementos protegidos se elabora con
varios puntos de sujeción. Comprende básicamente en una caja como se muestra en la Figura 5.
5.
Figura 5. 5 Fotografía superior de caja del TAG
En el Anexo E se muestran varias fotografías tomadas al TAG con los elementos. Como parte
de una proyección a futuro, el TAG tiene un espacio para una pantalla LED monocromática, la
cual puede servir para desplegar información necesaria.
5.2.2. Servicio web Como parte del TFM se define un servicio web que retorne una ruta entre dos puntos para que
sea tomada como referencia de la ruta que el personal debe seguir hasta alcanzar el destino. Se
utilizó la librería Directions de Mapbox.
Este servicio web proporciona una ruta entre 2 puntos, uno de origen y uno de destino. Se puede
escoger el medio de transporte a utilizar, la ruta retorna las direcciones que permiten llegar de
forma detallada.
46
Figura 5. 6 Captura de pantalla de Directions de Mapbox para dos puntos utilizando bicicleta
Directions de Mapbox tiene planes de pago, sin embargo los gratuitos permiten realizar hasta
60 consultas por minuto, con lo cual es apto para ser utilizado sin incurrir en costos.
En el Anexo F se encuentra el código utilizado para el cálculo de las rutas.
5.2.3. Sistema de recepción y generación de archivo de ruta Se elabora un sistema en Microsoft Visual Studio para la lectura del puerto donde se encuentra
el dispositivo coordinador.
Figura 5. 7 Aplicación de lectura de datos enviados por los TAG
47
Se puede ver como la aplicación recepta la información en el formato de la trama que se
especificó en el documento, se la separa en cada cuadro de texto para poder procesarla.
En el cuadro de la esquina inferior derecha se observa el objeto GeoJSON que se crea a partir de
la información enviada.
La aplicación genera una página HTML con la ruta que siguió un paquete en el proceso de
entrega.
Figura 5. 8 Mapa HTML generado a partir de los datos obtenidos de la aplicación.
La Figura 5. 8 permite ver el mapa creado por la aplicación. El Anexo G muestra el código
utilizado en la aplicación elaborada.
5.3. Recopilación de fallos
48
5.3.1. Inicio del GPS El GPS NEO 6M con el que se trabajó presenta problemas de inicialización, pese a búsqueda de
una solución no se obtiene un resultado positivo. Cuando el GPS se encuentra en interiores
puede pasar un tiempo prolongado hasta que se encienda.
Se intentó cambiar la alimentación del dispositivo por una alimentación directa que cumpla con
el voltaje y corriente especificada en el datasheet que se muestra en el Anexo B sin embargo
tampoco se consigue solucionar.
El problema es el mismo en los dos dispositivos GPS con los que se cuenta, esto significó un
problema al momento de apagar y encender los dispositivos para generar un ahorro de energía.
Se intentó cambiar de dispositivos GPS, se probó con un GPS marca TOMTOM, pero la limitación
de información del dispositivo hizo que no sea factible continuar con esa línea de trabajo.
5.3.2. Programación del módulo de procesamiento La programación del Arduino uno tuvo algunos retos a superar, el primero fue la necesidad de
añadir librerías acorde a los elementos que se van a utilizar.
Las librerías ayudan a facilitar la comunicación con los dispositivos, sin embargo hay que buscar
una librería adecuada.
La programación de los módulos requiere que los pines 0 y 1 de la placa se encuentren
desconectados, en caso de mantenerse conectados, el programa Arduino no consigue crear
subir la programación al módulo.
5.3.3. Visualización de rutas Debido a que el entorno de pruebas es pequeño en cuanto al área en la que se pudo trabajar, el
dispositivo genera ubicaciones muy cercanas, esto complica la visualización de los mapas de las
rutas, pues no se puede reflejar claramente la ruta realizada.
Se prueba la aplicación ingresando rutas con un área de cobertura más extensa y se obtienen
los gráficos adecuados, con lo cual se evidencia que no hay problemas a nivel de la aplicación
generada.
5.3.4. Configuración de los puertos COM La configuración de los puertos tenía la tendencia de generar ciertos problemas, los cuales se
debían al uso de un conector múltiple de puertos USB.
El proceso de solución para este tipo de problemas era un proceso de re-instalación del conector
múltiple de puertos USB.
49
Capítulo 6
Conclusiones El TFM deja varias conclusiones a partir de su elaboración:
Los transmisores de bajo consumo tienen un potencial muy amplio de aplicación para
sistemas que incluyan la georeferenciación. Pues dado su consumo no implica un coste
energético alto y se pueden adaptar fácilmente a otras plataformas de desarrollo.
La precisión de una aplicación dependerá de los resultados que se requieran para el
correcto funcionamiento, la precisión se debe estudiar como un parámetro de cálculo.
Las librerías de Arduino presentan una ayuda en la interpretación de la información que
vienen por parte de los dispositivos, sin las librerías la dimensión del trabajo se tornaría
más difícil de realizar.
La cantidad de dispositivos que pueden conectarse en una red utilizando los
transmisores de baja potencia en una de sus principales fortalezas al momento de
seleccionar una tecnología acorde a un sistema de una escala grande.
El coste de los dispositivos es un tema a tener que evaluarse pues, un sistema como el
que se propone, resulta costoso de forma unitaria.
La trazabilidad es una ruta de los eventos ocurridos y pese a que existe una ruta
planificada, la ruta que se genera simplemente es un reflejo de lo que el paquete realizo
en su proceso de recepción – entrega.
Existen en el mercado transmisores de baja potencia que tienen un mayor alcance, estos
transmisores se pueden conectar a una red de telefonía móvil para extender su alcance.
Existen varios servicios web que pueden dar solución a requerimientos específicos, sin
tener que incurrir en gastos.
Utilizar un servicio web como parte de la generación de rutas tiene la ventaja de que el
costo de procesamiento se lo transfiere al servicio web, esto implica un ahorro en
equipamiento computacional.
6.1. Mejoras futuras En el desarrollo de un proyecto siempre quedan cosas pendientes que se pueden hacer, siempre
con una visión de mejorar el trabajo propuesto.
Entre las mejoras que se pueden pensar para el proyecto está la utilización de dispositivos de
transmisión de baja potencia que tengan un alcance más amplio.
Otra mejora sustancial en cuanto al sistema, sería la integración de los sistemas en un único
sistema de gestión del proceso que se expone en el TFM.
En el entorno de pruebas se puede realizar las pruebas con una versión de Arduino más
compacta, pues eso significa un ahorro en el espacio que requiere el TAG.
6.2. Revisión del trabajo Con el trabajo expuesto se buscó diseñar e implementar una solución real que pueda servir
como una línea base de los elementos a considerar en el momento de dimensionar un sistema
de trazabilidad.
Queda pendiente un estudio más detallado de los servicios web, como una fuente de ahorro de
coste computacional en sistemas georeferenciados.
50
Los entornos de pruebas realizados se los plantea con el objeto de poder evidenciar algunas de
las funcionalidades que se consideran de mayor importancia para el sistema. Deben tenerse en
cuenta las limitaciones que implica la cantidad de elementos necesarios para poder realizar
pruebas a una escala mayor.
51
Bibliografía
Agencia Española de Seguridad Alimentaria y Nutrición. (2009). Guía para la aplicación del
sistema de trazabilidad en la empresa agroalimentaría. Agencia Española de Seguridad
Alimentaria y Nutrición. Madrid: Artes Gráficas Palermo, S.L.
ArduinoCC. (s.f.). Arduino. Recuperado el 2016 de junio de 19, de
https://www.Arduino.cc/en/Guide/Introduction
Certification, I. S. (2010). ISCC 203 Requirements for Traceability.
Ideaspropias Editorial. (2006). Trazabilidad avanzado. Guía práctica para la aplicación de un
sistema de trazabilidad en una empresa alimentaria. Vigo, España: Ideaspropias.
Recuperado el 21 de 06 de 2016, de
https://books.google.com.ec/books?id=gHCV8kW-
HbMC&pg=PA19&dq=trazabilidad&hl=es-
419&sa=X&ved=0ahUKEwi7oLSP_rjNAhXPsB4KHRXZD7AQ6AEIITAB#v=onepage&q=tra
zabilidad&f=false
Mehaffey, J. (26 de julio de 1999). http://www.elgps.com/. (A. Franco, Editor) Recuperado el
25 de 06 de 2016, de http://www.elgps.com/documentos/barras/barras.htm
Oyarce, A. (07 de 2010). www.hmangas.com. Recuperado el 13 de 06 de 2016, de
www.hmangas.com:
http://www.hmangas.com/Electronica/Datasheets/Shield%20XBee%20Arduino/XBee-
Guia_Usuario.pdf
Smith, P. (08 de 08 de 2011). Comparing Low-Power Wireless Technologies. Recuperado el 10
de 06 de 2016, de digikey.com:
http://www.digikey.com/en/articles/techzone/2011/aug/comparing-low-power-
wireless-technologies
Anexo A Código embebido en el Módulo de procesamiento del TAG de pruebas que se muestra en la
Figura 5. 1.
#include <SoftwareSerial.h>
#include <TinyGPS.h>
TinyGPS gps;
SoftwareSerial ss(4, 3);
static void smartdelay(unsigned long ms);
static void print_float(float val, float invalid, int len, int prec);
static void print_int(unsigned long val, unsigned long invalid, int len);
static void print_date(TinyGPS &gps);
static void print_str(const char *str, int len);
void setup()
{
Serial.begin(9600);
Serial.println("Sistema de Georeferenciacion para Trazabilidad en la Entrega de Paquetes");
Serial.println("TFM Diego Freire");
Serial.println("Director: Joaquin Martinez Sanchez");
Serial.print("Libreria TinyGPS version: "); Serial.println(TinyGPS::library_version());
Serial.println("Dispositivo: GPS NEO-6M-0-001");
Serial.println();
Serial.println("Sats HDOP Latitude Longitude Fix Date Time Date Alt Course Speed
Card Distance Course Card Chars Sentences Checksum");
Serial.println(" (deg) (deg) Age (m) --- from GPS ---- ---- to London -
--- RX Fail");
Serial.println("------------------------------------------------------------------------------------------------------
-------------------------------");
ss.begin(9600);
}
void loop()
{
float flat, flon;
unsigned long age, date, time, chars = 0;
unsigned short sentences = 0, failed = 0;
static const double LONDON_LAT = 51.508131, LONDON_LON = -0.128002;
print_str("GPS:",4);
print_int(gps.satellites(), TinyGPS::GPS_INVALID_SATELLITES, 5);
print_str("|",1);
print_int(gps.hdop(), TinyGPS::GPS_INVALID_HDOP, 5);
gps.f_get_position(&flat, &flon, &age);
print_str("|",1);
print_float(flat, TinyGPS::GPS_INVALID_F_ANGLE, 10, 6);
print_str("|",1);
print_float(flon, TinyGPS::GPS_INVALID_F_ANGLE, 11, 6);
print_str("|",1);
print_int(age, TinyGPS::GPS_INVALID_AGE, 5);
print_str("|",1);
print_date(gps);
print_str("|",1);
print_float(gps.f_altitude(), TinyGPS::GPS_INVALID_F_ALTITUDE, 7, 2);
print_str("|",1);
print_float(gps.f_course(), TinyGPS::GPS_INVALID_F_ANGLE, 7, 2);
print_str("|",1);
print_float(gps.f_speed_kmph(), TinyGPS::GPS_INVALID_F_SPEED, 6, 2);
print_str("|",1);
print_str(gps.f_course() == TinyGPS::GPS_INVALID_F_ANGLE ? "*** " :
TinyGPS::cardinal(gps.f_course()), 6);
print_str("|",1);
print_int(flat == TinyGPS::GPS_INVALID_F_ANGLE ? 0xFFFFFFFF : (unsigned
long)TinyGPS::distance_between(flat, flon, LONDON_LAT, LONDON_LON) / 1000,
0xFFFFFFFF, 9);
print_str("|",1);
print_float(flat == TinyGPS::GPS_INVALID_F_ANGLE ? TinyGPS::GPS_INVALID_F_ANGLE :
TinyGPS::course_to(flat, flon, LONDON_LAT, LONDON_LON),
TinyGPS::GPS_INVALID_F_ANGLE, 7, 2);
print_str("|",1);
print_str(flat == TinyGPS::GPS_INVALID_F_ANGLE ? "*** " :
TinyGPS::cardinal(TinyGPS::course_to(flat, flon, LONDON_LAT, LONDON_LON)), 6);
print_str("|",1);
gps.stats(&chars, &sentences, &failed);
print_int(chars, 0xFFFFFFFF, 6);
print_str("|",1);
print_int(sentences, 0xFFFFFFFF, 10);
print_str("|",1);
print_int(failed, 0xFFFFFFFF, 9);
print_str("|ID:01|",7);
print_str(" END",4);
Serial.println();
smartdelay(10000);
}
static void smartdelay(unsigned long ms)
{
unsigned long start = millis();
do
{
while (ss.available())
gps.encode(ss.read());
} while (millis() - start < ms);
}
static void print_float(float val, float invalid, int len, int prec)
{
if (val == invalid)
{
while (len-- > 1)
Serial.print('*');
Serial.print(' ');
}
else
{
Serial.print(val, prec);
int vi = abs((int)val);
int flen = prec + (val < 0.0 ? 2 : 1); // . and -
flen += vi >= 1000 ? 4 : vi >= 100 ? 3 : vi >= 10 ? 2 : 1;
for (int i=flen; i<len; ++i)
Serial.print(' ');
}
smartdelay(0);
}
static void print_int(unsigned long val, unsigned long invalid, int len)
{
char sz[32];
if (val == invalid)
strcpy(sz, "*******");
else
sprintf(sz, "%ld", val);
sz[len] = 0;
for (int i=strlen(sz); i<len; ++i)
sz[i] = ' ';
if (len > 0)
sz[len-1] = ' ';
Serial.print(sz);
smartdelay(0);
}
static void print_date(TinyGPS &gps)
{
int year;
byte month, day, hour, minute, second, hundredths;
unsigned long age;
gps.crack_datetime(&year, &month, &day, &hour, &minute, &second, &hundredths,
&age);
if (age == TinyGPS::GPS_INVALID_AGE)
Serial.print("********** ******** ");
else
{
char sz[32];
sprintf(sz, "%02d/%02d/%02d %02d:%02d:%02d ",
month, day, year, hour, minute, second);
Serial.print(sz);
}
print_int(age, TinyGPS::GPS_INVALID_AGE, 5);
smartdelay(0);
}
static void print_str(const char *str, int len)
{
int slen = strlen(str);
Anexo B Primera página del datasheet del GPS utilizado. Disponible en https://www.u-
blox.com/sites/default/files/products/documents/NEO-6_DataSheet_%28GPS.G6-HW-
09005%29.pdf?utm_source=en%2Fimages%2Fdownloads%2FProduct_Docs%2FNEO-
6_DataSheet_%28GPS.G6-HW-09005%29.pdf
Anexo D Página inicial del datasheet del dispositivo XBee S2. Disponible en:
http://www.farnell.com/datasheets/27606.pdf
Anexo E Caja con todos los elementos utilizados Disposición de la bateria
TAG con los elementos ubicados en posición Disposición interna
Proyección para pantalla LCD monocromática Conector para recargar batería
Anexo F Archivo HTML para el cálculo de una ruta entre dos puntos, con capacidad de seleccionar entre
diferentes tipos de medio de transporte.
<!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <meta name="viewport" content="width=device-width, height=device-height" /> <link rel="stylesheet" type="text/css" href="lib/onsen/css/onsenui.css" /> <link rel="stylesheet" type="text/css" href="lib/onsen/css/onsen-css-components.css" /> <link rel="stylesheet" type="text/css" href="css/index.css" /> <link rel="stylesheet" href="http://cdn.leafletjs.com/leaflet-0.7.1/leaflet.css" /> <script src="http://cdn.leafletjs.com/leaflet-0.7.1/leaflet.js"></script> <script type="text/javascript" src='js/turf.min.js'></script> <link href='https://www.mapbox.com/base/latest/base.css' rel='stylesheet' /> <script src='https://api.mapbox.com/mapbox.js/v2.4.0/mapbox.js'></script> <link href='https://api.mapbox.com/mapbox.js/v2.4.0/mapbox.css' rel='stylesheet' /> <script src='https://api.mapbox.com/mapbox.js/plugins/mapbox-directions.js/v0.4.0/mapbox.directions.js'></script> <link rel='stylesheet' href='https://api.mapbox.com/mapbox.js/plugins/mapbox-directions.js/v0.4.0/mapbox.directions.css' type='text/css' /> <title>Prueba Interfaz Usuario</title> </head> <body onLoad="inicio();"> <ons-page> <ons-modal id="modConexion" var="modal"> <div id="divModal" style="height:100%; width:100%;"> <br><br><br><br><br> <center>No se encuentra conectado!!</center> <br><br> </div> </div> </ons-modal> <ons-toolbar modifier='material'> <div class="center" ><i class="ion-android-walk"></i> Calculo de Ruta </div> </ons-toolbar> <ons-tabbar> <ons-tab page="home.html" active="true"> <ons-icon icon="ion-map" size="30px"></ons-icon> <span id="btnPrincipal" style="font-size: 14px">Principal</span> </ons-tab> <ons-tab page="fav.html"> <ons-icon icon="ion-android-bicycle" size="30px"></ons-icon> <span style="font-size: 14px">Rutas</span>
</ons-tab> <ons-tab page="Interes.html"> <ons-icon icon="ion-ios-game-controller-b-outline" size="30px"></ons-icon> <span style="font-size: 14px">Cool</span> </ons-tab> </ons-tabbar> <ons-template id="home.html"> <div id="map"> <div id="map" style="position:absolute; z-index:1000;"> <fieldset class='with-icon'> A:<span class='icon search'></span> <input id="txtA" type='text' value='' /> </fieldset> <fieldset class='with-icon'> B:<span class='icon search'></span> <input id="txtB" type='text' value='' /> </fieldset> <center><div id="footer"> <div id="modalidad" class='rounded-toggle inline'> <input id='auto' type='radio' name='rtoggle' value='auto' checked='checked'> <label for='auto'>Auto</label> <input id='caminar' type='radio' name='rtoggle' value='caminar'> <label for='caminar'>Caminar</label> <input id='bici' type='radio' name='rtoggle' value='bici'> <label for='bici'>Bici</label> </div> </div></center> <ons-speed-dial id="speed" position="bottom right" direction="up"> <ons-fab> <ons-icon icon="ion-plus-round" size="26px" fixed-width="false" style="vertical-align:middle;"> </ons-icon> </ons-fab> <ons-speed-dial-item><ons-icon id="undo" icon="ion-reply"></ons-icon></ons-speed-dial-item> <ons-speed-dial-item><ons-icon id="car" icon="ion-model-s"></ons-icon></ons-speed-dial-item> <ons-speed-dial-item><ons-icon id="bike" icon="ion-android-bicycle"></ons-icon></ons-speed-dial-item> <ons-speed-dial-item><ons-icon id="walk" icon="ion-android-walk"></ons-icon></ons-speed-dial-item> <ons-speed-dial-item><ons-icon id="save" icon="ion-map"></ons-icon></ons-speed-dial-item> </ons-speed-dial>
</div> <div id="consola"> </div> </div> <div id='inputs'></div> <div id='errors'></div> <ons-modal id="modCalculo" var="modal"> <div id="divModal" style="height:100%; width:100%;"> <br><br><br><br><br> <center>Calculando Ruta!!</center> <br><br> </div> </div> </ons-modal> </ons-template> <ons-template id="Interes.html"> <div id='archivos'> <ons-button modifier="large" ripple="true" id="grabarBt"><a id="btn">iniciar</a></ons-button> </div> <ons-modal id="modRuta" var="modal"> <div id="divModal" style="height:100%; width:100%;"> <div style="position:absolute; z-index:1000;"><center><div id="footer"> <ons-button id='btnModal' onclick='hideModal();' modifier='cta'> <h8 id="txtRuta">OK</h8> </ons-button></div></center></div> </div> </ons-modal> </ons-template> <ons-template id="fav.html"> <div id="rutas"> <div id='directions'> <div id='routes'></div> <div id='instructions'></div> </div> </div> </ons-template> </ons-page> <script type="text/javascript" src="cordova.js"></script> <script type="text/javascript" src="lib/onsen/js/onsenui.min.js"></script>
<script type="text/javascript" src="js/index.js"></script> </body> </html>
Archivo JS para cálculo de rutas entre dos puntos.
function inicio(){ document.addEventListener('deviceready', this.onDeviceReady, false); } function iden(nombre){ return document.getElementById(nombre); } var map = L.map(); var count=0; var waypoints = []; var polyline = L.polyline([]); function makeMarker(e, done) { var marker = L.marker(e.latlng, { draggable: true }).addTo(map); marker.on('dragend', drawRoute); waypoints.push(marker); return done(); } function conexion(){ var conexionType=checkConnection(); if(conexionType=='No tiene conexion'){ iden("modConexion").show(); } else{ iden("modConexion").hide(); } //console.log('Red: ' + conexionType); } function checkConnection() { var networkState = navigator.connection.type; var states = {}; states[Connection.UNKNOWN] = 'Unknown conexión'; states[Connection.ETHERNET] = 'Ethernet conexión'; states[Connection.WIFI] = 'WiFi conexión'; states[Connection.CELL_2G] = 'Cell 2G conexión'; states[Connection.CELL_3G] = 'Cell 3G conexión'; states[Connection.CELL_4G] = 'Cell 4G conexión';
states[Connection.CELL] = 'Cell generic conexión'; states[Connection.NONE] = 'No tiene conexion'; return states[networkState]; } function onDeviceReady(){ L.mapbox.accessToken = 'pk.eyJ1IjoibWF1cml0b2ZyZWQiLCJhIjoiY2ltMXUzMTg0MDk1bXZna3M1cjk1NXR5NiJ9.EOFVgaEF69NbQ4z7_q1zdQ'; L_DISABLE_3D = true; map = L.mapbox.map('map', 'mapbox.streets',{zoomControl:false}) .setView([37.9, -77], 6); centrarMapa(); iden("undo").addEventListener("click",undoBtn); iden("car").addEventListener("click",carBtn); iden("bike").addEventListener("click",bikeBtn); iden("walk").addEventListener("click",walkBtn); iden("save").addEventListener("click",saveBtn); waypoints = []; polyline = L.polyline([]).addTo(map); ocultar(); map.on('clic', function(e) { // Let's add a callback to makeMarker so that it can draw the route only // *after* it's done processing the marker adding. makeMarker(e, drawRoute); }); var intervalo=setInterval(conexion,10000); count=0; //map.on("click",addMarker); /* var directions = L.mapbox.directions(); var directionsLayer = L.mapbox.directions.layer(directions) .addTo(map); var directionsInputControl = L.mapbox.directions.inputControl('inputs', directions) .addTo(map); var directionsErrorsControl = L.mapbox.directions.errorsControl('errors', directions) .addTo(map); var directionsRoutesControl = L.mapbox.directions.routesControl('routes', directions) .addTo(map); var directionsInstructionsControl = L.mapbox.directions.instructionsControl('instructions', directions) .addTo(map); */ //console.log("funcion onDeviceReady");
map.attributionControl.setPosition('bottomleft'); map.removeControl(map.attributionControl); iden("speed").style.display = "none"; iden("modalidad").style.display = "none"; añadirJson(); } function undoBtn(){ map.removeLayer(polyline); for (i=0;i<waypoints.length;i++) { map.removeLayer(waypoints[i]); } map.on('clic', function(e) { // Let's add a callback to makeMarker so that it can draw the route only // *after* it's done processing the marker adding. makeMarker(e, drawRoute); }); waypoints = []; polyline = L.polyline([]).addTo(map); iden("speed").hideItems(); iden("speed").style.display = "none"; iden("modalidad").style.display = "none"; iden("txtA").value=""; iden("txtB").value=""; //console.log("funcion undo") } function carBtn(){ drawRoute(); iden("speed").hideItems(); //console.log("funcion car"); } function bikeBtn(){ drawRouteByc(); iden("speed").hideItems(); //console.log("funcion bike") } function walkBtn(){ drawRouteWalk(); iden("speed").hideItems(); //console.log("funcion walk"); } function saveBtn(){ escribir(); iden("speed").hideItems(); //console.log("funcion save"); } function centrarMapa(){ var opciones={ maximumAge: 0, timeout: 10000, enableHighAccuracy: true }; navigator.geolocation.getCurrentPosition(irCentro, onError, opciones);
} function irCentro(position){ var latlng = L.latLng(position.coords.latitude, position.coords.longitude); //console.log(latlng); map.setView(latlng, 18); } function onError(){ alert("algo salio mal!!"); } var MarkerA=""; var MarkerB=""; var latlngA=""; var latlngB=""; function addMarker(e){ //console.log(count); // Add marker to map at clic location; add popup window switch(count){ case 0: count++; markerA=new L.marker(e.latlng).addTo(map); latlngA=e.latlng; //console.log(latlngA); break; case 1: count++; markerB=new L.marker(e.latlng).addTo(map); latlngB=e.latlng; //console.log(latlngA); direccion(latlngA,latlngB); mostrar(); break; case 2: direccion(latlngA,latlngB); break; default: alert("No se pueden agregar mas destinos"); } } function ocultar(){ iden("speed").style.display="none"; //console.log("funcion ocultar"); } function mostrar(){ iden("speed").style.display="inline"; //console.log("funcion mostrar"); } function direccion(latlngA,latlngB){ //console.log(latlngA,latlngB); //console.log("funcion direccion");
} function url(){ var xhttp = new XMLHttpRequest(); xhttp.onreadystatechange = function() { if (xhttp.readyState == 4 && xhttp.status == 200) { respuesta = xhttp.responseText; } }; xhttp.open("GET", "https://api.mapbox.com/directions/v5/mapbox/driving/13.4301,52.5109;13.4265,52.5080;13.4194,52.5072?radiuses=40;;100&geometries=polyline&access_token=pk.eyJ1IjoibWF1cml0b2ZyZWQiLCJhIjoiY2ltMXUzMTg0MDk1bXZna3M1cjk1NXR5NiJ9.EOFVgaEF69NbQ4z7_q1zdQ", true); xhttp.send(); } function drawRoute() { if (waypoints.length < 2) return; // Directions API request looks like // http://api.tiles.mapbox.com/v4/directions/mapbox.driving/ // -122.42,37.78;-77.03,38.91.json?access_token={access_token} // We'll construct this using latlngs from the markers in waypoints. var points = waypoints.map(function(marker) { var latlng = marker._latlng; return [latlng.lng, latlng.lat].join(','); }).join(';'); var directionsUrl = 'http://api.tiles.mapbox.com/v4/directions/mapbox.driving/' + points + '.json?access_token=' + L.mapbox.accessToken; var route=""; var xhttp = new XMLHttpRequest(); xhttp.onreadystatechange = function() { if (xhttp.readyState == 4 && xhttp.status == 200) { iden("modCalculo").hide(); respuesta = xhttp.responseText; route = JSON.parse(respuesta).routes[0].geometry.coordinates; route = route.map(function(point) { // Turns out if we zoom out we see that the lat/lngs are flipped, // which is why it didn't look like they were being added to the // map. We can invert them here before drawing. var datos=JSON.parse(respuesta); iden("txtA").value=JSON.parse(respuesta).origin.properties.name; iden("txtB").value=JSON.parse(respuesta).destination.properties.name; iden("speed").style.display = "inline"; iden("modalidad").style.display = "inline"; iden("auto").checked="checked"; map.off("clic"); instrucciones(datos); return [point[1], point[0]]; }); polyline.setLatLngs(route); try{map.fitBounds(polyline.getBounds());} catch(e){console.log(e)} } else{
iden("modCalculo").show(); } }; xhttp.open("GET", directionsUrl, true); xhttp.send(); } function drawRouteWalk() { if (waypoints.length < 2) return; // Directions API request looks like // http://api.tiles.mapbox.com/v4/directions/mapbox.driving/ // -122.42,37.78;-77.03,38.91.json?access_token={access_token} // We'll construct this using latlngs from the markers in waypoints. var points = waypoints.map(function(marker) { var latlng = marker._latlng; return [latlng.lng, latlng.lat].join(','); }).join(';'); var directionsUrl = 'http://api.tiles.mapbox.com/v4/directions/mapbox.walking/' + points + '.json?access_token=' + L.mapbox.accessToken; var route=""; var xhttp = new XMLHttpRequest(); xhttp.onreadystatechange = function() { if (xhttp.readyState == 4 && xhttp.status == 200) { iden("modCalculo").hide(); respuesta = xhttp.responseText; route = JSON.parse(respuesta).routes[0].geometry.coordinates; route = route.map(function(point) { // Turns out if we zoom out we see that the lat/lngs are flipped, // which is why it didn't look like they were being added to the // map. We can invert them here before drawing. var datos=JSON.parse(respuesta); iden("txtA").value=JSON.parse(respuesta).origin.properties.name; iden("txtB").value=JSON.parse(respuesta).destination.properties.name; iden("speed").style.display = "inline"; iden("modalidad").style.display = "inline"; iden("caminar").checked="checked"; map.off("click"); instrucciones(datos); return [point[1], point[0]]; }); polyline.setLatLngs(route); try{map.fitBounds(polyline.getBounds());} catch(e){console.log(e)} } else{ iden("modCalculo").show(); } }; xhttp.open("GET", directionsUrl, true); xhttp.send(); } function drawRouteByc() { if (waypoints.length < 2) return; // Directions API request looks like // http://api.tiles.mapbox.com/v4/directions/mapbox.driving/ // -122.42,37.78;-77.03,38.91.json?access_token={access_token}
// We'll construct this using latlngs from the markers in waypoints. var points = waypoints.map(function(marker) { var latlng = marker._latlng; return [latlng.lng, latlng.lat].join(','); }).join(';'); var directionsUrl = 'http://api.tiles.mapbox.com/v4/directions/mapbox.cycling/' + points + '.json?access_token=' + L.mapbox.accessToken; var route=""; var xhttp = new XMLHttpRequest(); xhttp.onreadystatechange = function() { if (xhttp.readyState == 4 && xhttp.status == 200) { iden("modCalculo").hide(); respuesta = xhttp.responseText; route = JSON.parse(respuesta).routes[0].geometry.coordinates; route = route.map(function(point) { // Turns out if we zoom out we see that the lat/lngs are flipped, // which is why it didn't look like they were being added to the // map. We can invert them here before drawing. var datos=JSON.parse(respuesta); iden("txtA").value=JSON.parse(respuesta).origin.properties.name; iden("txtB").value=JSON.parse(respuesta).destination.properties.name; iden("speed").style.display = "inline"; iden("modalidad").style.display = "inline"; iden("bici").checked="checked"; map.off("click"); instrucciones(datos); return [point[1], point[0]]; }); polyline.setLatLngs(route); try{map.fitBounds(polyline.getBounds());} catch(e){console.log(e)} } else{ iden("modCalculo").show(); } }; xhttp.open("GET", directionsUrl, true); xhttp.send(); } function crearItem(item,nombre){ //console.log("CrearItem"); itemRuta = document.createElement("ons-list-item"); itemRuta.setAttribute('modifier','tappable chevron'); gd = ons.GestureDetector(itemRuta); gd.on('click', mostrarRuta); itemRuta.innerHTML = item+") "+nombre; itemRuta.id= item; //console.log(item); itemRuta.modifier="tappable"; itemRuta.className="list__item list__item--tappable" padre = document.getElementById('routes'); primerhijo= padre.lastChild;
if(primerhijo==null) padre.appendChild(itemRuta); else padre.insertBefore(itemRuta,primerhijo.nextSibling) } function instrucciones(respuestas){ var contador=0; var elementos=iden("routes"); while(elementos.lastChild){ elementos.removeChild(elementos.lastChild); } var tiempo=respuestas.routes[0].duration/60; var tiempoDecimal=tiempo.toFixed(2); crearItem("(Distancia",respuestas.routes[0].distance+" m"); crearItem("(Duración",tiempoDecimal+" minutos"); respuestas.routes[0].steps.forEach( function(x){ contador++; crearItem(contador,x.way_name); //console.log(x.way_name); } ); } function mostrarRuta(){} function mostrarRutaJson(){ //console.log("mostrarRutaJson"); var nombre=this.innerHTML.split(" "); obtenerEntry(nombre[1]); } var dibujar=new Object(); function obtenerEntry(nombre){ //console.log("funcion obtenerEntry"); window.resolveLocalFileSystemURL(cordova.file.externalDataDirectory, function(directorio){ directorio.getFile(nombre, {create: false, exclusive: true}, function(fileEntry){ fileEntry.file(function(file){ var reader = new FileReader(); reader.onloadend = function(e) { dibujar=JSON.parse(this.result); //console.log(dibujar); showModal(dibujar); }; reader.readAsText(file); } , function(e){alert(e);}); } , function(e){alert(e);}); }, function(){alert("error")}); }
function showModal(archivoJSON){ document.getElementById("modRuta").show(); mapa = L.map('modRuta').setView([52.04, -0.73], 12); L.tileLayer('http://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png', { maxZoom: 18 }).addTo(mapa); var latlng = L.latLng([dibujar.routes[0].geometry.coordinates[0][1],dibujar.routes[0].geometry.coordinates[0][0]]); mapa.setView(latlng, 15); L.geoJson(dibujar.routes[0].geometry).addTo(mapa); /* tobounds=L.polyline(dibujar.routes[0].geometry); boundss=tobounds.getBounds(); mapa.fitBounds(boundss); var datosProperties=dibujar.properties; var markerInicio = L.marker(new L.LatLng(dibujar.routes[0].geometry.coordinates[0][1],dibujar.routes[0].geometry.coordinates[0][0])).addTo(mapa); var txtPop="<b>Inicio:<b> "+datosProperties.inicio.split(",")[0]+"<br><b>Fin:<b> "+datosProperties.fin.split(",")[0]+" <br><b>Fecha: <b>"+ datosProperties.fecha.split(",")[0]+" <br><b>Distancia:<b> "+datosProperties.distancia+"Km"; markerInicio.bindPopup("<b>Ruta seguida: </b><br>"+txtPop).openPopup(); console.log("funcion showModal");*/ } function hideModal(){ //console.log("funcion hideModal"); mapa.remove(); document.getElementById("modRuta").hide(); } function añadirJson(){ //console.log("funcion añadirJson"); window.resolveLocalFileSystemURL(cordova.file.externalDataDirectory, deboAñadir,function(){alert("escribir");}); } function deboAñadir(directorio) { //console.log("funcion deboAñadir"); var lista =document.getElementById('archivos'); while (lista.lastChild) { lista.removeChild(lista.lastChild) } var numeroArchivo=1; var nombreArchivo="Rutas_1.json"; directorio.createReader().readEntries(function(entries) { entradas=entries; //console.log(entries); entries.forEach(function(x){
if(x.name.includes("Rutas_")){ crearArchivo(numeroArchivo,x.name); //console.log("item: "+x.name+" creado!!"); numeroArchivo++; }}) }) } function crearArchivo(item,nombre){ //console.log("CrearItem"); itemRuta = document.createElement("ons-list-item"); itemRuta.setAttribute('modifier','tappable chevron'); gd = ons.GestureDetector(itemRuta); gd.on('click', mostrarRutaJson); itemRuta.innerHTML = item+") "+nombre; itemRuta.id= item; itemRuta.modifier="tappable"; itemRuta.className="list__item list__item--tappable" padre = document.getElementById('archivos'); primerhijo= padre.lastChild; if(primerhijo==null) padre.appendChild(itemRuta); else padre.insertBefore(itemRuta,primerhijo.nextSibling) } function escribir(){ //console.log("funcion escribir"); window.resolveLocalFileSystemURL(cordova.file.externalDataDirectory, deboEscribir,function(){alert("escribir");}); } var entradas=""; function deboEscribir(directorio) { //console.log("funcion deboEscribir"); var numeroArchivo=1; var nombreArchivo="Rutas_1.json"; directorio.createReader().readEntries(function(entries) { entradas=entries; //console.log(entries); entries.forEach(function(x){ if(x.name.includes("Rutas_")){ numeroArchivo=numeroArchivo+1; nombreArchivo='Rutas_'+numeroArchivo+'.json'; //console.log(nombreArchivo); }}) directorio.getFile(nombreArchivo, {create: true}, escribirFile, function(e){alert("everything is on fire");});
//console.log('Rutas_'+numeroArchivo+'.json'); }) } function escribirFile(fileEntry){ //console.log("funcion escribirFIle"); fileEntry.createWriter(funcionEscribir); } var count=0; function funcionEscribir(fileWriter) { //console.log("funcion Escribir"); count++; fileWriter.onwriteend = function(e) { añadirJson(); //console.log("Termine de escribir"); } fileWriter.onerror=function(e){ alert("Ha ocurrido un error de escritura!!") } var blob = new Blob([respuesta], {type: 'text/plain'}); fileWriter.write(blob); //console.log("escribirFuncion"); }
Anexo G Código utilizado para la creación de la aplicación de lectura de datos
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; using System.IO; using System.IO.Ports; using Newtonsoft.Json; using GeoJSON.Net; using TOMTOM_APP_GPS.logica; namespace TOMTOM_APP_GPS { public partial class Form1 : Form { geoJsonR ggr = new geoJsonR(); public Form1() { InitializeComponent(); } private void Form1_Load(object sender, EventArgs e) { listar_com(); } private void listar_com() { foreach (string ss in SerialPort.GetPortNames()) { comboBox1.Items.Add(ss); } } private void button1_Click(object sender, EventArgs e) { try { serialPort1.DataBits = int.Parse(textBox2.Text); serialPort1.BaudRate = int.Parse(textBox1.Text); serialPort1.PortName = comboBox1.SelectedItem.ToString(); serialPort1.Open(); timer1.Enabled = true; } catch(Exception ex) { MessageBox.Show("No se puede abrir el puerto" + ex.Message); } } private void llenar_datos() { if (!richTextBox1.Text.Equals("") && richTextBox1.Text.Contains("GPS:") && richTextBox1.Text.Contains("END") && richTextBox1.Text.Substring(0,3).Contains("GPS")) { string[] aux2 = richTextBox1.Text.Split('|'); txt_sat.Text = aux2[0].Replace("GPS:",""); txt_dop.Text = aux2[1];
txt_lat.Text = aux2[2]; txt_lon.Text = aux2[3]; txt_fix.Text = aux2[4]; txt_time.Text = aux2[5]; txt_alt.Text = aux2[6]; txt_velocidad.Text = aux2[7]; txt_id.Text = aux2[16]; tojson(); tojson2(); } else { } } private string tojson2() { try { List<double> aux = new List<double>(); aux.Add(double.Parse(txt_lon.Text.Replace(".", ","))); aux.Add(double.Parse(txt_lat.Text.Replace(".", ","))); ggr.geometry.coordinates.Add(aux); } catch { } return ""; } private string tojson() { try { geoJson gg = new geoJson(); gg.type = "Feature"; gg.geometry.type = "Point"; gg.geometry.coordinates.Add(double.Parse(txt_lat.Text.Replace(".", ","))); gg.geometry.coordinates.Add(double.Parse(txt_lon.Text.Replace(".", ","))); gg.properties.name = txt_id.Text; string resultado = JsonConvert.SerializeObject(gg); richTextBox2.Text = resultado; } catch { } return ""; } private void timer1_Tick(object sender, EventArgs e) { richTextBox1.Text = serialPort1.ReadExisting(); llenar_datos(); } private void Form1_FormClosed(object sender, FormClosedEventArgs e) { try { serialPort1.Close(); } catch {
} } private void saveFile() { if (File.Exists(txt_file.Text + "\\file.json")) { File.Delete(txt_file.Text + "\\file.json"); } using (StreamWriter sw = File.AppendText(txt_file.Text+ "\\file.json")) { List<double> aux = ggr.geometry.coordinates.Last(); sw.WriteLine("<!DOCTYPE html><html><head> <meta charset='utf-8' /> <title></title> <meta name='viewport' content='initial-scale=1,maximum-scale=1,user-scalable=no' /> <script src='https://api.tiles.mapbox.com/mapbox-gl-js/v0.20.1/mapbox-gl.js'></script> <link href='https://api.tiles.mapbox.com/mapbox-gl-js/v0.20.1/mapbox-gl.css' rel='stylesheet' /> <style> body { margin:0; padding:0; } #map { position:absolute; top:0; bottom:0; width:100%; } </style></head><body><div id='map'></div><script>mapboxgl.accessToken = 'pk.eyJ1IjoibWF1cml0b2ZyZWQiLCJhIjoiY2ltMXUzMTg0MDk1bXZna3M1cjk1NXR5NiJ9.EOFVgaEF69NbQ4z7_q1zdQ';var map = new mapboxgl.Map({ container: 'map', style: 'mapbox://styles/mapbox/streets-v9', center: "); sw.WriteLine(JsonConvert.SerializeObject(ggr)); } } private void button2_Click(object sender, EventArgs e) { try { serialPort1.Close(); timer1.Enabled = false; saveFile(); } catch { } } private void groupBox1_Enter(object sender, EventArgs e) { } private void button3_Click(object sender, EventArgs e) { if (folderBrowserDialog1.ShowDialog() == DialogResult.OK) { txt_file.Text = folderBrowserDialog1.SelectedPath; } } } }