conoce-tec
Transcripción
conoce-tec
SECRETARIA DE EDUCACIÓN PÚBLICA DIRECCIÓN GENERAL DE EDUCACIÓN SUPERIOR TECNOLÓGICA INSTITUTO TECNOLÓGICO DE MÉRIDA “CONOCE-TEC” OPCIÓN TALLER DE INVESTIGACIÓN II PARA OPTAR AL TÍTULO DE: INGENIERO ELECTRÓNICO PRESENTAN: GABRIEL FRANCISCO BARBACHANO PINEDA RODRIGO ALEJANDRO MONTERO DORANTES JOSE MANUEL VAZQUEZ COELLO MÉRIDA, YUCATÁN, MÉXICO 2013 INDICE INTRODUCCION .............................................................................................................................. 1 IMPACTO SOCIAL, TECNOLOGICO, ECONOMICO Y AMBIENTAL ....................................... 2 CRONOGRAMA DE ACTIVIDADES .............................................................................................. 2 CAPITULO I ....................................................................................................................................... 4 1.1 Introducción .............................................................................................................................. 4 1.2 Historia del GPS ........................................................................................................................ 4 1.2.1 Navegación Loran .............................................................................................................. 6 1.2.2 GPS Navstar....................................................................................................................... 7 1.3 Servicios de posicionamiento global (GPS) .............................................................................. 8 1.3.1 Segmentos de Navstar........................................................................................................ 9 1.4 Sistema operativo Android ...................................................................................................... 12 1.5 Historia del sistema operativo Android .................................................................................. 13 1.6 Arquitectura de Android.......................................................................................................... 14 1.7 Versiones de Android .............................................................................................................. 16 1.8 Descripción de Bluetooth. ...................................................................................................... 19 1.9 Antecedentes Bluetooth.......................................................................................................... 21 1.10 La interface área Bluetooth ................................................................................................... 22 1.11 la inmunidad a las interferencias en la tecnología Bluetooth. ............................................... 22 1.12 Arduino. ................................................................................................................................ 23 1.13 Entradas y Salidas del Arduino ............................................................................................. 25 CAPITULO II ................................................................................................................................... 27 2.1 Google Maps........................................................................................................................... 27 2.2 Sistema de navegación automotor .......................................................................................... 27 2.3 UNAM 360 ............................................................................................................................. 30 CAPITULO III .................................................................................................................................. 32 3.1 Definición del problema a resolver ......................................................................................... 32 3.2 Variables de entrada y salida .................................................................................................. 32 3.3 Diagrama de flujo ................................................................................................................... 33 3.4 Etapa I: Aplicación Movil ...................................................................................................... 37 3.4.1 Desarrollo de la aplicación .............................................................................................. 27 3.4.1.1 Acceso al GPS ......................................................................................................... 27 3.4.1.2 Coordenadas geográficas ......................................................................................... 43 3.4.1.3 Candado de inicio .................................................................................................... 48 3.4.1.4 Botón iniciar ............................................................................................................ 49 3.4.1.5 Menú principal ......................................................................................................... 50 3.4.1.5.1 Botón “conexión” ............................................................................................. 51 3.4.1.5.2 Botón “parámetros” .......................................................................................... 53 3.4.1.5.3 Botón “créditos” ............................................................................................... 56 3.5 Etapa II: Interfaz Bluetooth-Microcontrolador ....................................................................... 57 3.5.1 Módulo bluetooth........................................................................................................ 57 3.5.1.1 Características HC-05 ......................................................................................... 58 3.5.2 Arduino ....................................................................................................................... 59 3.5.2.1 Programación ........................................................................................................... 60 3.5.2.2 Pruebas en el Protoboard ......................................................................................... 67 3.6 Etapa III: Arduino Shield........................................................................................................ 68 3.6.1 Diseño de la placa del circuito ........................................................................................ 68 3.7 Etapa IV: Chasis ..................................................................................................................... 76 3.7.1 Detallado de las partes..................................................................................................... 79 3.7.2 Armado del prototipo final .............................................................................................. 82 CAPITULO IV .................................................................................................................................. 89 4.1 Resultados ............................................................................................................................... 89 4.2 Conclusiones ........................................................................................................................... 90 FUENTES BIBLIOGRAFICAS: ...................................................................................................... 91 INDICE DE FIGURAS Fig. 01 Constelación Navstar y posiciones relativas de los satélites ..................................... 9 Fig. 02 Proyección Mercator de las orbitas de satélites Navstar ......................................... 10 Fig. 03 Imagen característica del sistema Android .............................................................. 12 Fig. 04 Arquitectura del sistema Android ........................................................................... 16 Fig. 05 Distribución de Android según su versión .............................................................. 17 Fig. 06 Modelo de conectividad bluetooth . ......................................................................... 21 Fig. 07 Placa del Arduino Duemilanove .............................................................................. 24 Fig. 08 Vista de calle por medio de Google Maps . ............................................................. 28 Fig. 09 Vista de calle por medio de Garmin ........................................................................ 29 Fig.10 Vista de calle por medio de UNAM 360 . ................................................................. 30 Fig.11 Variables de entrada y salida .................................................................................... 32 Fig.12 Diagrama de flujo general. ........................................................................................ 33 Fig.13 Digrama de flujo del candado de inicio . .................................................................. 34 Fig.14 Digrama de flujo de la detección del lugar . ............................................................. 35 Fig.15 Logotipo Basic4Android ........................................................................................... 36 Fig.16 Vista general del área de trabajo en Basic4Android . ............................................... 36 Fig.17 Banner 1 ................................................................................................................... 37 Fig.18 Banner 2 ................................................................................................................... 37 Fig.19 Logo 1 ...................................................................................................................... 37 Fig.20 Logo 2 ...................................................................................................................... 37 Fig.21 Logo DIEE ............................................................................................................... 38 Fig.22 Wallpaper Android ................................................................................................... 38 Fig.23 Icono 1 ...................................................................................................................... 38 Fig.24 Icono 2 ...................................................................................................................... 38 Fig.25 Icono 3 ...................................................................................................................... 38 Fig.26 Icono 4 ...................................................................................................................... 38 Fig.27 Captura de pantalla ................................................................................................... 39 Fig.28 Librería GPS ............................................................................................................. 39 Fig.29 Objetos de la librería ................................................................................................ 42 Fig.30 Candado 1 ................................................................................................................. 48 Fig.31 Candado 2 ................................................................................................................. 48 Fig.32 Candado 3 ................................................................................................................. 48 Fig.33 Inicio de la aplicación .............................................................................................. 49 Fig.34 Pantalla con botones de menú .................................................................................. 50 Fig.35 Botones de menú ...................................................................................................... 51 Fig.36 Menú emergente ....................................................................................................... 52 Fig.37 Mensaje de conexión ................................................................................................ 52 Fig.38 Pantalla parámetros .................................................................................................. 53 Fig.39 Barra de reproducción .............................................................................................. 55 Fig.40 Pantalla créditos ........................................................................................................ 56 Fig.41 Módulo Bluetooth HC-05 ........................................................................................ 57 Fig.42 Placa Arduino Uno .................................................................................................... 59 Fig.43 Conexión de pines entre Arduino y HC-05 .............................................................. 61 Fig.44 Prueba en protoboard ............................................................................................... 67 Fig.45 Esquemático ............................................................................................................. 68 Fig.46 Placa sin enrutamiento ............................................................................................. 69 Fig.47 Placa enrutada .......................................................................................................... 69 Fig.48 Circuito Impreso ....................................................................................................... 70 Fig.49 Planchado del circuito a la placa .............................................................................. 70 Fig.50 Aplicación del cloruro férrico a la placa ................................................................... 71 Fig.51 Placa lista .................................................................................................................. 71 Fig.52 Gráfica de Corriente Forward vs Voltaje Forward ................................................... 72 Fig.53 Fórmula para la polarización de un LED ................................................................. 72 Fig.54 Realización de cálculos para determinar la resistencia del LED .............................. 73 Fig.55 Soldando componentes .............................................................................................. 73 Fig.56 Placa con componentes lista ..................................................................................... 74 Fig.57 Placa conectada al Arduino ...................................................................................... 74 Fig.58 Verficación de la placa ............................................................................................. 75 Fig.59 Diseño del chasis con la medidas a escala ............................................................... 76 Fig.60 Vista frontal del prototipo diseñado .......................................................................... 77 Fig.61 Vista trasera del diseño final del prototipo ............................................................... 77 Fig.62 Elaboración chasis 1 .................................................................................................. 78 Fig.63 Elaboración chasis 2 ................................................................................................. 78 Fig.64 Elaboración chasis 3 ................................................................................................. 79 Fig.65 Elaboración chasis 4 ................................................................................................. 79 Fig.66 Partes moldeadas del prototipo para su ensamblaje final ......................................... 80 Fig.67 Armado chasis 1 ....................................................................................................... 81 Fig.68 Armado chasis 2 ....................................................................................................... 81 Fig.69 Armado chasis 3 ....................................................................................................... 82 Fig.70 Armado chasis 4 ....................................................................................................... 82 Fig.71 Armado chasis 5 ....................................................................................................... 83 Fig.72 Armado chasis 6 ....................................................................................................... 83 Fig.73 Armado chasis 7 ........................................................................................................ 84 Fig.74 Vista del prototipo final 75% acabado ..................................................................... 84 Fig.75 Inserción del escudo del Tecnológico al prototipo ................................................... 85 Fig.76 Colocación del mapa del Instituto ............................................................................ 85 Fig.77 Elaboración de los orificios para los LEDs del mapa .............................................. 86 Fig.78 Prototipo, Arduino con shield y dispositivo móvil .................................................. 86 Fig.79 Vista general del prototipo ....................................................................................... 87 Fig.80 Conexión de los LEDs ............................................................................................. 88 Fig.81 Acoplamiento de los LEDs al chasis ......................................................................... 88 INDICE DE TABLAS Tabla 1 Lugares .................................................................................................................... 43 Tabla 2 Candados ................................................................................................................. 48 OBJETIVO GENERAL Diseñar un dispositivo electrónico que mediante las coordenadas geográficas de distintos lugares encienda diferentes LEDs de un panel indicando la ubicación en donde se encuentre la persona y mediante una grabación dará una pequeña descripción del destino y estará disponible para dar una visita guiada dentro del Instituto Tecnológico de Mérida. OBJETIVOS ESPECIFICOS El dispositivo será compatible con Smartphone que cuente con sistema operativo Android. Se obtendrán las coordenadas geográficas mediante el módulo GPS. Fácil de usar para cualquier tipo de persona. HIPOTESIS Es posible mediante el módulo GPS de un Smartphone Android obtener las coordenadas geográficas de distintos lugares y mediante una conexión bluetooth enlazar el Smartphone con un microcontrolador, el cual indicará mediante un LED lugar en el que te encuentras en ese momento junto con una grabación que lo describirá. JUSTIFICACION Muchas personas no conocen al 100% las instalaciones del Instituto Tecnológico de Mérida, y para agilizar su y estancia y búsqueda de lugares dentro del mismo, el dispositivo será capaz de indicarte tu ubicación en ese momento de manera eficaz y rápida, por ejemplo: departamentos, salones, oficinas, etc. DELIMITACIONES Y LIMITACIONES El dispositivo únicamente te dirá tu ubicación y una grabación te dirá una pequeña descripción del lugar en donde te encuentres con un margen de error. Debe existir una distancia relativa entre los distintos lugares que estarán en el panel de LEDs. Únicamente será compatible con dispositivos con sistema operativo Android que cuenten con módulo GPS, y conexión bluetooth. El dispositivo se presentará como un prototipo portable con entrada de 3.5mm para la parte de audio y tendrá un pequeño espacio para colocar el Smartphone. INTRODUCCION El querer saber dónde estamos o ubicamos es uno de los problemas que más interés ha despertado últimamente en el avance de la tecnología. El saber orientarnos por los lugares por donde pasamos, también tiene un interés muy importante la mayoría de las veces de un modo inconsciente, particularmente podemos enfocarnos sobre nosotros, los estudiantes en nuestra institución, en este caso el Instituto Tecnológico de Mérida, ya que son parte de nuestra vida diaria los desplazamientos entre los edificios de esta institución. El núcleo de nuestra investigación ha sido el montaje y utilización del sistema GPS para poder ubicarnos mejor y saber un poco más sobre el lugar donde estamos en ese momento, específicamente, dentro de nuestra institución (ITM), estudiando al mismo tiempo algunos datos interesantes y llamativos del lugar donde estemos ubicados. El presente proyecto de investigación consiste en la realización de un dispositivo que funcione con sistema GPS, el cual reconocerá lugares en específico que ya tendrá definidos internamente el mismo. El mismo será configurado mediante plataforma de sistema operativo Android. Espero que este trabajo sea del agrado de todos aquellos que tengan la oportunidad de leerlo. 1 IMPACTO SOCIAL, TECNOLOGICO, ECONOMICO Y AMBIENTAL Enseñará de manera interactiva al usuario su localidad en el instituto. Visitas más amigables al instituto. Con el tiempo podría desarrollarse para que otros institutos lo puedan implementar también. Es innovador y modificable para diversos rubros no solo para una institución. Al alcance de cualquier persona que posea un sistema Android. Bajo costo de fabricación y manufactura. No Contaminante. CRONOGRAMA DE ACTIVIDADES ACTIVIDAD DESCRIPCIÓN DE ACTIVIDADES 1 CAPACITACION ANDROID 2 CREACION DE LA APLICACIÓN Y CONECTIVIDAD CON ARDUINO 3 RANGO DE COORDENADAS 4 CREACION SHIELD DE LEDs 5 DISEÑO DEL CHASIS 6 ELABORACION DEL CHASIS 7 ELABORACION DEL SHIELD 8 MONTAJE 9 ULTIMAS PRUEBAS 10 ENTREGA DEL PROYECTO 2 CRONOGRAMA (Favor de marcar las semanas que comprende cada actividad) ACTIVIDAD 1 2 3 4 5 MES 1 MES 2 MES 3 X X X X 7 X 10 MES 6 X X X 9 MES 5 X 6 8 MES 4 X X X 11 12 13 14 15 3 CAPITULO I ANTECEDENTES TEORICOS 1.1 Introducción El Sistema de Posicionamiento Global (“Global Positioning System” - GPS) es un sistema de navegación compuesto de una flotilla de satélites puestos en órbita por el Departamento de Defensa de los Estados Unidos, y sus estaciones en tierra firme. Usando GPS, uno puede determinar automáticamente su posición (latitud y longitud) en la tierra. Funciona continuamente en todas partes del mundo y es disponible a todos libre de cargos. Con orígenes en aplicaciones militares secretas, GPS se ha convertido en parte de nuestra vida cotidiana. [1] 1.2 Historia del GPS Se puede definir a la navegación como el arte o la ciencia de trazar, definir o dirigir el curso de movimientos; en otras palabras, es conocer dónde está uno y poder encontrar el camino. El método más antiguo y rudimentario de navegación es el de vagabundear, que no es más que continuar viajando hasta llegar al destino, suponiendo, naturalmente, que haya destino. El vagabundeo es la técnica de navegación tan frecuente que usan muchos alumnos durante su primera semana de clases en todos los colegios y universidades. Es probable que el primer método efectivo o útil de navegación haya sido la navegación celeste. En ella, se determinan la dirección y la distancia mediante el seguimiento de cuerpos celestes, incluyendo a las estrellas y a la Luna, cronometrados con gran precisión. Es una técnica primitiva que data de hace miles de años. Una desventaja obvia de la navegación celeste es que funciona mejor por la noche y de preferencia con cielo despejado. 4 Otro método bastante rudimentario de la navegación es el pilotaje, que es fijar posición y dirección con respecto a señas importantes, como vías de ferrocarril, tanques elevados, graneros, picos de montaña y cuerpos de agua. El pilotaje deriva su nombre de los primeros pilotos de aviones, que usaron este método de navegación. La navegación a estima es una técnica donde se determina la posición extrapolando una serie de incrementos de velocidad medios. En inglés se llama “dead (o “ded”) reckoning”, y lo de “ded” se deriva de “deducido”. Charles Lindbergh usó con bastante éxito la navegación a estima en 1927, durante su histórico viaje transatlántico de 33 horas, y Amelia Earhart lo usó con bastante fracaso en 1937, durante su intento de volar por primera vez alrededor del mundo. Aunque cada uno de los métodos de navegación que sea han descrito hasta ahora tienen su lugar en el tiempo, sin duda la técnica de navegación más exacta hasta la fecha es la radionavegación, o navegación electrónica. En ella, se determina la posición midiendo el tiempo de recorrido de una onda electromagnética cuando va de un transmisor a un receptor. Hay más o menos 100 tipos distintos de sistemas domésticos de radionavegación que se usan en la actualidad. Algunos usan transmisores terrestres y otros usan transmisores de satélite. Entre los sistemas de radionavegación más exactos y útiles se incluyen los siguientes Decca (emisión en superficie terrestre) Omega (emisión en superficie terrestre) Loran (emisión en superficie terrestre) Sistema de posicionamiento global Navy Transit (emisión de satélite en órbita baja) 5 Sistema de posicionamiento global Navstar (emisión de satélite en órbita intermedia) Los sistemas de posicionamiento global (GPS, de global positioning system) Loran y Navstar son los dos de radionavegación que más se usan hoy. 1.2.1 Navegación Loran Hasta hace poco el Loran (de Long Range Navigation, navegación a larga distancia) era el método más efectivo. Confiable y exacto de radionavegación. El Loran A se desarrolló durante la Segunda Guerra Mundial, y el Loran C, su versión más reciente, salió en 1980. Hoy se usa principalmente en los aviones y barcos recreativos. En el Loran, los receptores adquieren señales codificadas especialmente de dos pares de transmisores de alta potencia, en tierra, cuyas ubicaciones se conocen con precisión. Se mide el tiempo transcurrido entre la recepción de las señales codificadas, y en el receptor se convierten en distancia usando la velocidad de propagación de las ondas electromagnéticas. Al aplicar la geometría básica y la relación entre la distancia d, la velocidad v y el tiempo t (que es d = vt), se puede determinar la ubicación del receptor de tiempo (distancia) según tres fuentes. El Loran es tan preciso como la precisión con que se puedan medir los tiempos de transmisión de las señales codificadas. Los errores del sistema se deben principalmente a problemas de propagación, como el hecho de que la superficie terrestre no es lisa, ni es perfectamente redonda. Las condiciones atmosféricas y las múltiples trayectorias de 6 transmisión también pueden afectar el funcionamiento del Loran. Sin embargo, es probable que la desventaja más notable del Loran sea que no da una cobertura global. Los transmisores en tierra sólo se pueden instalar en tierra, y la tierra es una parte relativamente pequeña de la superficie de la Tierra. En consecuencia, hay lugares donde simplemente no se pueden recibir las señales de Loran (puntos muertos). Sin embargo, no es importante lo bueno o lo malo que haya sido el loran, porque ha emergido una técnica más nueva y mejor de radionavegación, llamada GPS Navstar, que usa transmisores basados en satélites. 1.2.2 GPS Navstar Navstar es acrónimo de Navigation System with Time And Ranging, sistema de navegación con tiempo (horas) y telemetría, y GPS es la abreviatura de Global Positioning System, sistema de posicionamiento global. GPS Navstar es el sistema más reciente y exacto de radionavegación del que se dispone. Está basado en satélites y es abierto, lo cual significa que está a la disposición de quienquiera que tenga un receptor GPS. El Departamento de Defensa de Estados Unidos desarrolló Navstar para tener información continua y muy precisa sobre posición, velocidad y horas para usuarios en tierra, mar, aire y espacio. En esencia, GPS Navstar es un sistema de navegación basado en espacio, de posicionamiento tridimensional y de distribución de tiempo. El propósito del sistema es usar una combinación de estaciones terrestres, satélites en órbita y receptores especiales, para proporcionar casi a todos posibilidades de navegación, en cualquier momento y en cualquier lugar del mundo, independiente de las condiciones del clima. El sistema satelital Navstar se terminó en 1994, y es mantenido por la Fuerza Aérea de E. U. A. 7 1.3 Servicios de posicionamiento global (GPS) GPS proporciona dos niveles de exactitud de servicio; normal y preciso. Servicio de posicionamiento normal (SPS). Éste es un servicio de posicionamiento y hora que está disponible para todos los usuarios de GPS (militares, privados y comerciales) en una base mundial y continua, sin cuota directa. El SPS proporciona una exactitud predecible de posicionamiento que 95% del tiempo queda dentro de 100 m horizontales, 156 m verticales y 185 m en 3 dimensiones, con una exactitud de transferencia de tiempo a la Red Mercator transversal universal (UTC, de Universal Transverse Merctor Grid) de menos de 340 nanosegundos. La exactitud del servicio SPS se puede degradar en épocas de emergencias nacionales. Por razones de seguridad. El Departamento de Defensa de Estados Unidos degrada la exactitud del servicio SPS usando una técnica llamada disponibilidad selectiva (SA, de selective availability), manipulando los datos de mensajes de navegación en órbita (épsilon) y/o la frecuencia del reloj del satélite (temblor). Servicio de posicionamiento preciso (PPS). Éste es un servicio militar de gran exactitud para posicionamiento, velocidad y tiempo, disponible en forma mundial y continua a usuarios autorizados por el Departamento de Defensa de Estados Unidos. El equipo de usuarios PPS proporciona una exactitud predecible de posicionamiento 95% del tiempo de 22 m horizontales, 27.7 m verticales y 34.5 m en 3 dimensiones, y una exactitud de transferencia de tiempo a UTC de menos de 200 nanosegundos. Sólo pueden recibir este servicio usuarios autorizados con equipo y claves criptográficas, así como receptores con equipo especial. El PPS fue diseñado principalmente para usos militares en E. U. A., y los aliados, ciertas agencias gubernamentales de E. U. A., y usuarios civiles seleccionados, aprobados en forma específica por el gobierno de E. U. A. 8 1.3.1 Segmentos de Navstar El GPS Navstar consiste en tres segmentos: espacial, control de tierra y usuario. Segmento espacial. El Comando Espacial de la Fuerza Aérea de E. U. A. (AFSC) declaró formalmente al satélite Navstar GPS como totalmente operativo desde el 27 de abril de 1995. El segmento espacial, llamado a veces segmento satelital consiste en 24 satélites funcionando que giran en torno a la Tierra en seis planos orbitales a unos 60° entre sí, con cuatro satélites en cada plano. Hay 21 satélites activos y 3 reservados como espacios. En caso de falla de un satélite, uno de los de reserva puede ocupar su lugar. En realidad hay ahora más de 24 satélites, porque algunos de los más antiguos reemplazados nuevos con por han sido otros más sistemas más modernos de propulsión y guía. La fig. 1a muestra las órbitas de los 21 satélites funcionales en la constelación Navstar, y la fig. 1b muestra las posiciones relativas de los 24 satélites entre sí. Fig. 01 (a) Constelación Navstar; (b) posiciones relativas de los satélites. [2] 9 Los satélites Navstar no son geosincrónicos. Giran en torno a la Tierra en órbita circulares inclinadas. El ángulo de elevación en el nodo ascendente es 55° con respecto al plano ecuatorial. La elevación promedio de un satélite Navstar es 9476 millas terrestres, unos 20,200 km sobre la Tierra. Estos satélites tardan aproximadamente 12 h en una revolución. Por consiguiente, su posición es aproximadamente la misma a la misma hora sideral cada día; en realidad, se adelantan cuatro minutos cada día. La fig. 19-17 muestra como los satélites describen una espiral en torno a la Tierra en seis planos, y cubren virtualmente toda la superficie del globo. Fig. 02 Proyección Mercator de las orbitas de satélites Navstar. [2] La posición de los satélites Navstar en órbita se ordena de tal modo que haya a la vista de cinco a seis satélites siempre, para cualquier usuario, asegurando así la cobertura mundial continua. Se necesita la información de tres satélites para calcular el lugar horizontal de la unidad navegante en la superficie terrestre (informe bidimensional), pero la información de 10 cuatro satélites permite que un receptor también determine su altitud (informe tridimensional). Es obvio que los informes tridimensionales son más importantes en tierra, porque las superficies en ella no están a altura constante, como sí está la superficie de un gran cuerpo de agua. Los satélites Navstar emiten datos de navegación y del sistema, los datos de corrección atmosférica y la información del reloj del satélite. Segmento del usuario. El segmento del usuario de GPS consiste en todos los receptores de GPS y la comunidad de usuarios. Los receptores GPS convierten las señales recibidas de los vehículos espaciales en estimaciones de posición, velocidad y tiempo. Para calcular las cuatro dimensiones de x, y, z y t (tiempo), se requieren 4 satélites. Los receptores GPS se usan para navegación, posicionamiento, diseminación de la hora, cartografía, sistemas de guía, topografía, fotogrametría, seguridad pública, arqueología, geología, geofísica, vida salvaje, aviación, marina y muchas otras aplicaciones de investigación. [2] Actualmente con el crecimiento exponencial de los teléfonos celulares, muchos dispositivos además de las funciones básicas de transmitir y recibir llamadas, poseen una gran variedad aplicaciones entre las que se encuentra la función de GPS. Específicamente, el sistema operativo de dispositivos móviles de amplia popularidad que permite a los usuarios una gran variedad de servicios relacionados con el GPS se llama Android. 11 1.4 Sistema operativo Android Android es un sistema operativo y una plataforma software, basado en Linux para teléfonos móviles. Además, también usan este sistema operativo (aunque no es muy habitual), tablets, netbooks, reproductores de música e incluso PC’s. Android permite programar en un entorno de trabajo (framework) de Java, aplicaciones sobre una máquina virtual Dalvik (una variación de la máquina de Java con compilación en tiempo de ejecución). Además, lo que le diferencia de otros sistemas operativos, es que cualquier persona que sepa programar puede crear nuevas aplicaciones, widgets1, o incluso, modificar el propio sistema operativo, dado que Android es de código libre, por lo que sabiendo programar en lenguaje Java, va a ser muy fácil comenzar a programar en esta plataforma. [3] Fig. 03 Imagen característica del sistema Android. [4] 12 1.5 Historia del sistema operativo Android Fue desarrollado inicialmente por Android Inc., una firma comprada por Google en 2005. Es el principal producto de la Open Handset Alliance, un conglomerado de fabricantes y desarrolladores de hardware, software y operadores de servicio. Las unidades vendidas de teléfonos inteligentes con Android se ubican en el primer puesto en los Estados Unidos, en el segundo y tercer trimestres de 2010, con una cuota de mercado de 43,6% en el tercer trimestre. A nivel mundial alcanzó una cuota de mercado del 50,9% durante el cuarto trimestre de 2011, más del doble que el segundo sistema operativo (iOS de Apple, Inc.) con más cuota. Tiene una gran comunidad de desarrolladores escribiendo aplicaciones para extender la funcionalidad de los dispositivos. A la fecha, se han sobrepasado las 700.000 aplicaciones (de las cuales, dos tercios son gratuitas) disponibles para la tienda de aplicaciones oficial de Android: Google Play, sin tener en cuenta aplicaciones de otras tiendas no oficiales para Android, como pueden ser la App Store de Amazon o la tienda de aplicaciones Samsung Apps de Samsung. Google Play es la tienda de aplicaciones en línea administrada por Google, aunque existe la posibilidad de obtener software externamente. Los programas están escritos en el lenguaje de programación Java. No obstante, no es un sistema operativo libre de malware, aunque la mayoría de ello es descargado de sitios de terceros. El anuncio del sistema Android se realizó el 5 de noviembre de 2007 junto con la creación de la Open Handset Alliance, un consorcio de 78 compañías de hardware, software y telecomunicaciones dedicadas al desarrollo de estándares abiertos para dispositivos 13 móviles. Google liberó la mayoría del código de Android bajo la licencia Apache, una licencia libre y de código abierto. La estructura del sistema operativo Android se compone de aplicaciones que se ejecutan en un framework Java de aplicaciones orientadas a objetos sobre el núcleo de las bibliotecas de Java en una máquina virtual Dalvik con compilación en tiempo de ejecución. Las bibliotecas escritas en lenguaje C incluyen un administrador de interfaz gráfica (surface manager), un framework OpenCore, una base de datos relacional SQLite, una Interfaz de programación de API gráfica OpenGL ES 2.0 3D, un motor de renderizado WebKit, un motor gráfico SGL, SSL y una biblioteca estándar de C Bionic. El sistema operativo está compuesto por 12 millones de líneas de código, incluyendo 3 millones de líneas de XML, 2,8 millones de líneas de lenguaje C, 2,1 millones de líneas de Java y 1,75 millones de líneas de C++. [5] 1.6 Arquitectura de Android La arquitectura interna de la plataforma Android, está básicamente formada por 4 componentes: APLICACIONES Todas las aplicaciones creadas con la plataforma Android, incluirán como base un cliente de email (correo electrónico), calendario, programa de SMS, mapas, navegador, contactos, y algunos otros servicios mínimos. Todas ellas escritas en el lenguaje de programación Java. 14 FRAMEWORK DE APLICACIONES Todos los desarrolladores de aplicaciones Android, tienen acceso total al código fuente usado en las aplicaciones base. Esto ha sido diseñado de esta forma, para que no se generen cientos de componentes de aplicaciones distintas, que respondan a la misma acción, dando la posibilidad de que los programas sean modificados o reemplazados por cualquier usuario sin tener que empezar a programar sus aplicaciones desde el principio. LIBRERIAS Android incluye en su base de datos un set de librerías C/C++, que son expuestas a todos los desarrolladores a través del framework de las aplicaciones Android System C library, librerías de medios, librerías de gráficos, 3D, SQLite, etc. RUNTIME DE ANDROID Android incorpora un set de librerías que aportan la mayor parte de las funcionalidades disponibles en las librerías base del lenguaje de programación Java. La Máquina Virtual está basada en registros, y corre clases compiladas por el compilador de Java que anteriormente han sido transformadas al formato .dex (Dalvik Executable) por la herramienta ''dx''. 15 Fig. 04 Arquitectura del sistema Android. [3] 1.7 Versiones de Android Existen distintas versiones de Android: las líneas 1.xx, 2.xx, 3.xx y 4.xx. La primera de éstas ya sin actualizaciones desde 2009. La línea 2.xx es la utilizada en dispositivos móviles, mientras que la 3.xx fue pensada específicamente para tablets. Debido al avance en la capacidad de procesamiento de dispositivos móviles (y más específicamente en el caso de los teléfonos inteligentes), la línea 4.xx unifica su uso para cualquier dispositivo. 16 La Fig. 5 muestra la cantidad de dispositivos con Android por versión del sistema operativo, de acuerdo a la información provista por Open Signal Maps en Abril de 2012. En lo que respecta a las políticas de actualización, las mismas pueden llegar a variar dependiendo varios factores, tales como fabricante del dispositivo, proveedora del servicio de telefonía móvil, etc. En ocasiones, las actualizaciones originalmente estipuladas luego no se cumplen por motivos externos a Google. Por ejemplo, el dispositivo Samsung Galaxy SII (originalmente con Android 2.3.3) tiene planificada su actualización a versión 4; la cual ya se efectivizo para equipos liberados. Sin embargo la actualización para dispositivos bajo carriers todavía se encuentra pendiente dado que cada compañía usualmente realiza una adaptación definitiva de la versión. Fig. 05 Distribución de Android según su versión. Información correspondiente al mes de Abril de 2012 según Open Signal Maps. [5] 17 Cupcake: Android Versión 1.5: Características: Widgets, teclado QWERTY virtual, copy & paste, captura de vídeos y poder subirlos a Youtube directamente. Donut: Android Version 1.6 : Características: Añade a la anterior la mejoría de la interfaz de la cámara, búsqueda por voz, y navegación en Google Maps. Eclair: Android Version 2.0/2.1: Características: Mejoras en Google Maps, salvapantallas animado, incluye zoom. Froyo: Android Version 2.2: Características: Incluye hostpot Wifi, mejora de la memoria, más veloz, Microsoft Exchange y video-llamada. Ginger Bread: Android Version 2.3: Características: Mejoras del consumo de batería, el soporte de vídeo online y el teclado virtual, e incluye soporte para pagos mediante NFC2. Honey Comb: Android Version 3.0/3.4: Características: Mejoras para tablets, soporte Flash y Divx, integra Dolphin, multitarea pudiendo cambiar de aplicación dejando las demás en espera en una columna, widgets y home page personalizable. 18 Ice Cream Sandwich: Android Version 4.0: Características: Multiplataforma (tablets, teléfonos móviles y netbooks), barras de estado, pantalla principal con soporte para 3D, widgets redimensionables, soporte usb para teclados, reconocimiento facial y controles para PS3. [3] 1.8 Descripción de Bluetooth. Las redes inalámbricas de área personal WPAN por sus siglas en inglés Wireless Personal Area Network son redes que comúnmente cubren distancias del orden de los 10 metros como máximo, normalmente utilizadas para conectar varios dispositivos portátiles personales sin la necesidad de utilizar cables. Esta comunicación de dispositivos peer-topeer normalmente no requiere de altos índices de transmisión de datos. La tecnología inalámbrica Bluetooth™, por ejemplo, tiene un índice nominal de 10 metros con índices de datos de hasta 1Mbps. El tipo de ámbito y los relativos bajos índices de datos tienen como resultado un bajo consumo de energía haciendo a la tecnología WPAN adecuada para el uso con dispositivos móviles pequeños, que funcionan con baterías, tales como teléfonos celulares, asistentes personales PDAs o cámaras digitales. A continuación se presenta una visión general de la tecnología inalámbrica Bluetooth™. La tecnología inalámbrica Bluetooth es un estándar global abierto para enlaces de radio, que ofrece conexiones inalámbricas económicas para transmisiones de voz y datos entre computadoras portátiles, dispositivos de mano, teléfonos celulares y varios aparatos más mediante un enlace de radiofrecuencia; así como acceso a otros recursos en la red. Está diseñado como remplazo inalámbrico y como tecnología de Red de Área Personal WPAN. 19 La especificación Bluetooth define un enlace de radio de baja potencia, optimizado para conexiones seguras de corto alcance, y define los pasos estándares para la conexión de varios aparatos eliminando cables y conectores entre éstos. Los radios Bluetooth, que pueden ser incorporados en la mayoría de los aparatos electrónicos, ofrecen un enlace inalámbrico de comunicación universal que facilita una interoperabilidad confiable entre dispositivos móviles y fijos de diferentes fabricantes, ofreciendo así la posibilidad de crear pequeñas redes inalámbricas facilitando la sincronización de datos entre dispositivos personales. El nombre de esta tecnología está inspirado en el Rey Danés, Harald Blatand (en inglés Harold Bluetooth), conocido por la unificación de Suecia, Dinamarca y Noruega en el Siglo X, ahora en el siglo XXI, se hace alusión a la unificación de la tecnología inalámbrica Bluetooth, que conecta productos y empresas para los usuarios. La tecnología Bluetooth comprende hardware, software y requerimientos de interoperatibilidad, por lo que para su desarrollo ha sido necesaria la participación de los principales fabricantes de los sectores de las telecomunicaciones y la informática, tales como: Ericsson, Nokia, Toshiba, IBM, Intel y otros. Posteriormente se han ido incorporando otras compañías, y se prevé que otros sectores lo sigan haciendo como: automatización industrial, maquinaria, entretenimiento, fabricantes de juguetes, electrodomésticos, etc., con lo que en poco tiempo el panorama va siendo de conectividad total para aparatos en casa y oficina. [6] 20 Fig. 06 Modelo de Conectividad Bluetooth. [6] 1.9 Antecedentes Bluetooth Para entender el funcionamiento y las habilidades de bluetooth es importante conocer el antecedente de la creación de esta herramienta de comunicación. En 1994 la compañía telefónica Ericsson inició un estudio para investigar la viabilidad de una interfaz vía radio, a un bajo costo y bajo consumo, para la interconexión entre teléfonos móviles y otros accesorios con la intención de eliminar cables entre aparatos. El estudio partía de un largo proyecto que investigaba sobre multicomunicadores conectados a una red celular, hasta que se llegó a un enlace de radio de corto alcance, llamado MC link. Conforme éste proyecto avanzaba se fue viendo claro que éste tipo de enlace podía ser utilizado ampliamente en un gran número de aplicaciones, ya que tenía como principal virtud el que se basaba en un 21 chip de radio relativamente económico. También estaban convencidos de que si se conseguía una solución a bajo costo, ésta abriría el paso de la conectividad inalámbrica a una multitud de nuevas aplicaciones y originaría un sinnúmero de componentes y dispositivos asociados. [6] 1.10 La interface área Bluetooth El primer objetivo para los productos Bluetooth de primera generación eran los entornos de la gente de negocios que viaja frecuentemente. Por lo que se pensó en integrar el chip de radio Bluetooth en equipos como: PCS portátiles, teléfonos móviles, PDAs y auriculares. Esto originó a una serie de características tales como un sistema que opera en todo el mundo, que el emisor de radio debe consumir poca energía ya que debe integrarse en equipos alimentados por baterías, y una conexión que soporta voz, datos y aplicaciones multimedia. El Bluetooth está diseñado para soportar velocidades de transmisión de datos que ofrezcan suficiente ancho de banda para los modelos designados de uso. Actualmente, la tecnología Bluetooth ofrece velocidades brutas de transmisión de datos de hasta 1 Mbps, sin contar los requerimientos de línea visual. [6] 1.11 la inmunidad a las interferencias en la tecnología Bluetooth. Como se mencionó anteriormente Bluetooth opera en una banda de frecuencia que está sujeta a considerables interferencias, por lo que el sistema ha sido optimizado para evitar 22 éstas interferencias. En este caso la técnica de salto de frecuencia es aplicada a una alta velocidad y una corta longitud de los paquetes (1600 saltos/segundo, para ranuras simples). Los paquetes de datos están protegidos por un esquema ARQ (repetición automática de consulta), en el cual los paquetes perdidos son automáticamente retransmitidos, aun así con este sistema, si un paquete de datos no llega a su destino, sólo una pequeña parte de la información se perdería. La voz no se retransmite nunca, sin embargo, se utiliza un esquema de codificación muy robusto. Éste esquema, que está basado en una modulación variable de declive delta (CSVD), que sigue la forma de la onda de audio y es muy resistente a los errores de bits. Estos errores son percibidos como ruido de fondo, que se intensifica si los errores aumentan. [6] 1.12 Arduino. Arduino es una plataforma de hardware libre, basada en una placa con un microcontrolador y un entorno de desarrollo, diseñada para facilitar el uso de la electrónica en proyectos multidisciplinares. El hardware consiste en una placa con un microcontrolador Atmel AVR y puertos de entrada/salida. Los microcontroladores más usados son el Atmega168, Atmega328, Atmega1280, ATmega8 por su sencillez y bajo coste que permiten el desarrollo de múltiples diseños. Por otro lado el software consiste en un entorno de desarrollo que implementa el lenguaje de programación Processing/Wiring y el cargador de arranque (boot loader) que corre en la placa. 23 Arduino se puede utilizar para desarrollar objetos interactivos autónomos o puede ser conectado a software del ordenador (por ejemplo: Macromedia Flash, Processing, Max/MSP, Pure Data). Las placas se pueden montar a mano o adquirirse. El entorno de desarrollo integrado libre se puede descargar gratuitamente. Al ser open-hardware, tanto su diseño como su distribución son libres. Es decir, puede utilizarse libremente para el desarrollo de cualquier tipo de proyecto sin haber adquirido ninguna licencia. [7] Fig. 07 Placa del Arduino Duemilanove. [7] 24 La placa Arduino Standard tiene 14 pines con entradas/salidas digitales (6 de las cuales pueden ser usadas como salidas PWM), 6 entradas analógicas, un cristal oscilador a 16Mhz, conexión USB, entrada de alimentación, una cabecera ISCP, y un botón de reset. Los programas hechos con Arduino se dividen en tres partes principales: estructura, valores (variables y constantes), y funciones. El Lenguaje de programación Arduino se basa en C/C++. 1.13 Entradas y Salidas del Arduino Cada uno de los 14 pines digitales del Arduino puede ser usado como entrada o salida digital, usando funciones pinMode(), digitalWrite() y digitalRead(). Operan a 5 voltios. Cada pin puede proporcionar o recibir un máximo de 40 mA y tiene una resistencia interna “pull-up” (desconectada por defecto) de 20-50 KOhms. Además, algunos pines tienen funciones especiales: Pines serie Rx y Tx: Sirven para recibir transmitir datos (TTL), están conectados al chip FTDI, el cual hace conversión de USB a serie- TTL. Interruptores externos: 2 y 3. Estos pines pueden ser configurados para disparar un interruptor en un valor bajo, un margen creciente o decreciente, o un cambio de valor. Con la función attachInterrupt(). PWM: 3, 5, 6, 9, 10 y 11. Proporcionan salida PWM de 8 bits con la función analogWrite(). I ²C: 4 (SDA) y 5 (SCL): El software Arduino incluye una librería Wire para simplificar el uso del bus I ²C. Son buses para comunicarse con otros dispositivos. Soportan 25 comunicación con librería Wire. Esta librería se utiliza para comunicarse con elementos TWI (Two Wire Interfaces) que tienen más velocidad. SPI: 10 (SS), 11 (MOSI), 12 (MISO), 13 (SCK). Estos pines soportan comunicación SPI, la cual, aunque proporcionada por el hardware subyacente, no está actualmente incluida en el lengua je Arduino. LED: 13. Hay un LED empotrado conectado al pin digital 13. Cuando el pin está a valor HIGH, el LED está encendido, cuando el pin está a LOW, está apagado. Tiene 6 entradas analógicas, cada una de las cuales proporciona 10 bits de resolución (por ejemplo 1024 valores diferentes). Por defecto miden 5 voltios desde tierra, aunque es posible cambiar el valor más alto de su rango usando el pin ARF y algún código de bajo nivel. Además, algunos pines tienen funcionalidad especializada: AREF: Voltaje de referencia para las entradas analógicas. Usado con analogReference (Es para entradas analógicas). Nos permite dar a la placa un voltaje de referencia al suministrarle una alimentación externa. Si queremos medir el voltaje con un rango máximo de 3,3v, alimentaríamos 3,3v en el pin AREF con un regulador de voltaje IC. Entonces el ADC representaría 3,22 mV. http://littlebirdelectronics.com/products/voltage-regulator33v. Reset. Pone esta línea a LOW para resetear el microcontrolador. Típicamente usada para añadir un botón de reset a dispositivos que bloquean a la placa principal. [7] 26 CAPITULO II ANTECEDENTES Y CAUSAS DEL PROBLEMA En el mundo actual es ciertamente notable la manera en que ha evolucionado la tecnología, a medida que hay alguna necesidad hoy por hoy existen soluciones específicas para áreas no tan generales, solo con el hecho de la existencia de la información cualquiera es capaz de empezar desde algo sólido para crecer una idea. CONOCE-TEC viene de bases ya existentes entrelazándolas para crear una herramienta para resolver necesidades en las que nadie más se ocupa. Entre los principales servicios de posicionamiento global que existen actualmente se encuentran: 2.1 Google Maps Es una base de asignación de aplicación de servicios Web y la tecnología proporcionada por Google de forma gratuita. Ofrece mapas de calles, planificación de rutas para viajar a pie, en coche o en transporte público y un localizador de negocios urbanos para numerosos países de todo el mundo. Según uno de sus creadores (Lars Rasmussen), Google Maps es "una forma de organizar la información mundial de forma geográfica". Google Maps nos permite acceder a imágenes satelitales de alta resolución de áreas urbanas en muchos países. Algunos gobiernos han insistido en la posibilidad de que se puedan utilizar estas imágenes en la planificación de ataques terroristas, razón por la cual Google ha borrado algunas áreas de seguridad (principalmente instalaciones gubernamentales y militares en Estados Unidos). No todas las áreas están cubiertas con la misma resolución en 27 las imágenes de satélite, las zonas menos pobladas suelen mostrarse con menos detalle. Cabe destacar que algunas áreas pueden quedar ocultas por las nubes. [8] Fig. 08 Vista de Calle por medio de Google Maps. [9] 2.2 Sistema de navegación automotor Es un GPS diseñado para navegar en vehículos de carretera tales como automóviles, autobuses y camiones. Al contrario de otros GPS, este usa datos de posición para ubicar al usuario en una calle mapeada en un sistema de base de datos. Usando la información de los archivos de calles en esta base, la unidad puede dar direcciones de otros puntos a lo largo de la ciudad. Con cálculos por inferencia, datos de distancia desde sensores estratégicamente instalados en la ciudad, y un sistema de guía inercial con giróscopo de estructura vibratoria puede mejorarse enormemente la seguridad, ya que la señal GPS puede perderse o sufrir múltiples rebotes de multipasos por cañones urbanos o túneles. [10] 28 Entre los sistemas de navegación automotor más importantes se encuentra Garmin, el cual consiste en un dispositivo interactivo para el uso en automóviles normalmente, este es capaz de guiar al usuario al lugar al que quiere ir con el simple hecho de señalarle al lugar al que quiere llegar, este mismo tiene un precio aproximado de $2,000.00 pesos mexicanos. Fig. 09 Vista de Calle por medio de Garmin. [11] 29 2.3 UNAM 360 Es una aplicación para móviles que permite consultar información y ubicarse dentro del campus Ciudad Universitaria de la UNAM mediante el uso de realidad aumentada, sugiere una ruta de traslado y relata algo del pasado de cada edificio y lugar del campus. Fig. 10 Vista de Calle por medio de UNAM 360. [12] 30 Estos servicios han sido creados para dar soluciones geográficas de manera general, a diferencia, CONOCE-TEC existe para resolver la problemática principalmente dentro de edificios en la que coexisten gran variedad de zonas específicas, háblese de escuelas, campus laboral, parques de diversiones, entre otros. Entre las grandes ventajas que trae, CONOCE-TEC está desarrollado a base del Sistema Operativo Android, el cual además de ser un sistema universal e intuitivo, es muy conocido teniendo cerca del 70% del mercado mundial por lo que el software puede ser instalado en casi cualquier dispositivo celular inteligente en el mundo. [13] Los servicios de navegación por automotor se quedan atrás por el simple hecho de tener su sistema operativo específico, mientras que Google Maps se encuentra prácticamente en cualquier dispositivo de telefonía móvil inteligente (iOS, Android, Microsoft Phone, BlackBerry). A pesar de este hecho, Google Maps se diferencia por trabajar su mapeo a nivel calle, mientras que con CONOCE-TEC es posible precisar dentro de la estructura dando información de los lugares existentes dentro la misma. Además del servicio de avisar en el lugar en el que se encuentra la persona dentro de algún campus, CONOCE-TEC tiene la capacidad de dar una pequeña explicación del lugar con una grabación encontrada dentro del software, a menudo que vaya cambiando algún lugar, o se visite un lugar “nunca” antes conocido por el programa, CONOCE-TEC, tiene la facilidad de poder tomar la ubicación geográfica y agregar posteriormente el lugar con su respectiva grabación dependiendo para esto último la edición del programa por medio del creador. 31 CAPITULO III DISEÑO ELECTRÓNICO 3.1 Definición del problema a resolver. Actualmente existe una gran variedad de aplicaciones móviles y dispositivos destinados a la navegación GPS. Desafortunadamente, este tipo de aplicaciones están programadas para describir e informar sobre lugares situados a nivel calle, carreteras o lugares turísticos. Por ello para el siguiente proyecto es necesario un dispositivo que describa los principales puntos que conforman al Instituto Tecnológico de Mérida, adentrándose a esta institución para informar las distintas áreas que la conforman. 3.2 Variables de entrada y salida. Para lograr la correcta ubicación dentro de la Institución escolar es necesario recibir del módulo GPS las coordenadas geográficas así como la información de cada satélite conectado para localizar al usuario correctamente. LATITUD LONGITUD VELOCIDAD SATELITES Aplicación GPS Arduino + Shield UBICACIÓN DENTRO DE LA INSTITUCIÓN AZIMITUH ELEVACIÓN _NN S/N Fig.11 Variables de entrada y salida. 32 3.3 Diagrama de flujo. En la figura de abajo se muestra el diagrama de flujo general de la aplicación GPS. Para un mejor entendimiento se dividió en 3 diagramas de flujo: general, candado de seguridad, y detección de lugar. Inicio CANDADO DE SEGURIDAD NO SI ¿SE RECIBIERON LAS COORDENADAS? NO SI ¿SE ENCUENTRA CONECTADO EL CELULAR AL ARDUINO? DETECCIÓN DE LUGAR Fig. 12 Diagrama de flujo general. 33 En el diagrama de flujo de “candado de seguridad” se observan los pasos a seguir para iniciar correctamente la aplicación, es decir, las distintas situaciones que se puede presentar dependiendo de si tenemos activado o desactivado el módulo bluetooth y/o GPS. CANDADO DE SEGURIDAD NO FIN DE APLICACIÓN ¿PUERTO SERIAL HABLITADO? SI SI ¿GPS ENCENDIDO? NO CONFIGURACIONES CANDADO DE SEGURIDAD Fig. 13 Diagrama de flujo del candado de inicio. 34 En el diagrama de flujo de “candado de seguridad” se observan los pasos a seguir cuando el usuario se encuentre o no en un área específica de la Institución. DETECCIÓN LUGAR ¿COINCIDEN LAS COORDENDAS CON ALGUN LUGAR NO SI GRABACION HABILITADA REGISTRADO? GRABACION DESHABILITADA NO ¿CONTINÚA SI LA GRABACIÓN? DETECCIÓN DE LUGAR Fig. 14 Diagrama de flujo de la detección del lugar. 35 3.4 Etapa I: Aplicación Móvil. ¿Qué es un archivo con formato .apk? Un archivo con extensión .apk es un paquete para el sistema operativo Android. Este formato es una variante del formato JAR de Java y se usa para distribuir e instalar componentes empaquetados para la plataforma Android para smartphones y tablets. [14] El Desarrollo de Programas para Android se hace habitualmente con el lenguaje de programación Java y el conjunto de herramientas de desarrollo (SDK, Software Development Kit ), pero hay otras opciones disponibles, como por ejemplo el software Basic4android. [15] Fig.15 Logotipo Basic4Android. [16] Fig. 16 Vista general del área de trabajo en basic4android. [17] 36 3.4.1 Desarrollo de la aplicación. Para la elaboración de la aplicación se descargaron las siguientes imágenes de la página oficial del Instituto Tecnológico de Mérida y del departamento de Ingeniería Eléctrica y Electrónica. Fig. 17 Banner 1. [18] Fig. 18 Banner 2. [19] Fig. 20 Logo 2. [21] Fig. 19 Logo 1. [20] 37 Fig. 21 Logo DIEE [22] Fig. 22 Wallpaper Android. [23] Fig. 23 Icono 1. [24] Fig. 24 Icono 2. [25] Fig. 25 Icono 3. [26] Fig. 26 Icono 4. [27] 38 3.4.1.1 Acceso al GPS. Para iniciar con el desarrollo de la aplicación se investigó sobre el acceso al módulo GPS para obtener las coordenadas geográficas en el dispositivo android. Fig. 27 Captura de pantalla. [28] La funcionalidad para poder acceder al GPS del dispositivo Android viene dada por la librería GPS, por lo que lo primero que tenemos que hacer es añadir una referencia a la misma. [28] 39 Fig. 28 Librería GPS. [29] Dentro de la librería GPS existen tres objetos relevantes, siendo el más importante de ellos el objeto GPS ya que es el que gestiona la conexión y los eventos del mismo. [28] El segundo de ellos es Location (Posición), es una estructura que contiene los datos de nuestra posición. Los datos que contiene Location principalmente son las coordenadas de Latitud y Longitud, el tiempo y la Altitud a la que nos encontramos, recordando de nuevo que todos ellos dependen de la cobertura GPS que tengamos en ese momento. Con el objeto Location se incluyen también otras funcionalidades con las que podemos calcular la distancia entre dos rutas distintas, entre nuestra posición y otro punto, el cambio de las coordenadas a otros formatos, etc. [28] El tercer y último objeto relevante es GPSSatellite, donde podemos obtener el estado de los satélites. [28] Volviendo al objeto GPS, este debe de ser declarado en Process_Global, ya que si no en caso contrario, deberemos de declararlo cada vez que vayamos a utilizarlo. [28] El primer paso es iniciar el objeto GPS, utilizando el parámetro Initialize. Se utilizó el siguiente código de referencia [28]: Sub Process_Globals Dim GPS1 As GPS End Sub Sub Globals Dim lblLon As Label Dim lblLat As Label Dim lblSpeed As Label Dim lblSatellites As Label End Sub Sub Activity_Create(FirstTime As Boolean) If FirstTime Then GPS1.Initialize("GPS") End If Activity.LoadLayout("1") End Sub 40 Sub Activity_Resume If GPS1.GPSEnabled = False Then ToastMessageShow("Please enable the GPS device.", True) StartActivity(GPS1.LocationSettingsIntent) 'Will open the relevant settings screen. Else GPS1.Start(0, 0) 'Listen to GPS with no filters. End If End Sub Sub Activity_Pause (UserClosed As Boolean) GPS1.Stop End Sub Sub GPS_LocationChanged (Location1 As Location) lblLat.Text = "Lat = " & Location1.ConvertToMinutes(Location1.Latitude) lblLon.Text = "Lon = " & Location1.ConvertToMinutes(Location1.Longitude) lblSpeed.Text = "Speed = " & Location1.Speed End Sub Sub GPS_UserEnabled (Enabled As Boolean) ToastMessageShow("GPS device enabled = " & Enabled, True) End Sub Sub GPS_GpsStatus (Satellites As List) lblSatellites.Text = "Satellites:" & CRLF For i = 0 To Satellites.Size - 1 Dim Satellite As GPSSatellite Satellite = Satellites.Get(i) lblSatellites.Text = lblSatellites.Text & CRLF & Satellite.Prn & _ " " & Satellite.Snr & " " & Satellite.UsedInFix & " " & Satellite.Azimuth _ & " " & Satellite.Elevation Next End Sub [28] El siguiente paso es decirle al GPS que se “ponga a escuchar los datos”, por lo que hemos creado el evento LocatedChanged para ello. Recordar que el GPS activado de continuo puede consumir excesiva batería, y que para ello nos recomiendan utilizar tanto Activity_Resume como Activity_Pause. También nos recuerdan que el usuario ha podido desactivar el GPS bien por temas de consumo, como de privacidad, por lo que nos recomiendan preguntar al usuario en el caso de que se encuentre desactivado si quiere activarlo, esto se hace con el siguiente código de referencia [28]: Sub Activity_Resume If GPS1.GPSEnabled = False Then ToastMessageShow("Please enable the GPS device.", True) StartActivity(GPS1.LocationSettingsIntent) 'Will open the relevant settings screen. 41 Else GPS1.Start(0, 0) 'Listen to GPS with no filters. End If End Sub [28] Si el GPS está activo, éste comenzara a procesar / escuchar los datos, los que obtiene de dos valores, minimum time (milisegundos) y minimum distance (metros), generándose un evento cuando uno de los dos ha cambiado de valor (Cosa que podemos aprovechar para ahorrar batería en nuestro programa de alguna manera). [28] La siguiente imagen muestra un resumen de la librería GPS. Fig 29 Objetos de la librería. [30] 42 3.4.1.2 Coordenadas geográficas. Una vez realizado el acceso con el módulo GPS del dispositivo Android, se establecieron los lugares que la aplicación tendrá guardados para lograr la correcta ubicación dentro de la Institución. NÚMERO LUGAR ENTRADA LATITUD 21.0134˚ a 21.0137˚ LONGITUD -89.6532˚ a -89.6534˚ 1 2 CENTRO DE IDIOMAS 21.0111˚ a 21.0113˚ -89.6223˚ a -89.6227˚ 3 GESTIÓN Y VINCULACIÓN 21.0113˚ a 21.0115˚ -89.6231˚ a -89.6233˚ 4 CAFETERÍA 21.0119˚ a 21.0121˚ -89.6223˚ a -89.6235˚ 5 ING. CIVIL 21.0122˚ a 21.0124˚ -89.6228˚ a -89.6230˚ 6 FUENTE 21.0117˚ a 21.0118˚ -89.6228˚ a -89.6230˚ 7 AUDITORIO 21.0130˚ a 21.0134˚ -89.6235˚ a -89.6237˚ 8 BIBLIOTECA 21.0127˚ a 21.0129˚ -89.6233˚ a -89.6235˚ 9 ING. QUIMICA 21.0126˚ a 21.0128˚ -89.6219˚ a -89.6222˚ 10 ING. INDUSTRIAL 21.0115˚ a 21.0118˚ -89.6214˚ a -89.6221˚ 11 ING. MECANICA 21.0120˚ a 21.0125˚ -89.6218˚ a -89.6221˚ 12 ING. EN SISTEMAS 21.0117˚ a 21.0120˚ -89.6206˚ a -89.6212˚ COMPUTACIONALES 13 ING. ELECTRONICA 21.0121˚ a 21.0126˚ -89.6232˚ a -89.6234˚ 14 AREA DEPORTIVA 21.0120˚ a 21.0129˚ -89.6213˚ a -89.6215˚ 15 ING. BIOMEDICA 21.0134˚ a 21.0137˚ -89.6232˚ a -89.6234˚ Tabla 1 Lugares. 43 Se realizaron recorridos en los lugares mencionados y se establecieron rangos de coordenadas para hacerlos únicos y evitar que la aplicación reconociera más de 1 lugar a la vez. Se agregaron los rangos de cada lugar al código de programación de tal manera que cuando la aplicación detecte un lugar aparecerá en la pantalla una notificación y se reproducirá una grabación describiendo las características más importantes de ese sitio. En la parte de abajo se encuentra la implementación del código: Sub INTERRUPCION_TICK If ((lat >= 21.01340000) AND (lat <= 21.01370000)) AND ((lon <= -89.62320000) AND (lon >= -89.62340000)) Then U.Notify(1) numnotif=9 lbllugar.Text= "BIOMEDICA" TEMPORIZADOR.Enabled=False MP.Load(File.DirAssets, "biomedica.mp3") MP.Play B.Write("a") B.FLUSH End If If ((lat >= 21.01200000) AND (lat <= 21.01290000)) AND ((lon <= -89.62130000) AND (lon >= -89.62150000)) Then A1.Notify(1) numnotif=14 lbllugar.Text= "AREA DEPORTIVA 1" TEMPORIZADOR.Enabled=False MP.Load(File.DirAssets, "deportes.mp3") MP.Play B.Write("b") B.FLUSH End If If ((lat >= 21.01210000) AND (lat <= 21.01260000)) AND ((lon < -89.62320000 AND (lon >= -89.62340000)) Then R.Notify(1) numnotif=6 lbllugar.Text= "DIEE" TEMPORIZADOR.Enabled=False MP.Load(File.DirAssets, "diee.mp3") MP.Play B.Write("c") B.FLUSH End If If ((lat >= 21.01230000) AND (lat <= 21.01240000)) AND ((lon <= -89.62310000) AND (lon >= -89.62320000)) Then A7.Notify(1) numnotif=19 lbllugar.Text= "CUBICULO ING. MARGARITA" TEMPORIZADOR.Enabled=False MP.Load(File.DirAssets, "margarita.mp3") 44 MP.Play B.Write("c") B.FLUSH End If If ((lat >= 21.01170000) AND (lat <= 21.01200000)) AND ((lon <= -89.62060000) AND (lon >= -89.62120000)) Then Q.Notify(1) numnotif=5 lbllugar.Text= "SISTEMAS" TEMPORIZADOR.Enabled=False MP.Load(File.DirAssets, "sistemas.mp3") MP.Play B.Write("d") B.FLUSH End If If ((lat >= 21.01200000) AND (lat <= 21.01250000)) AND ((lon <= -89.62180000) AND (lon >= -89.62210000)) Then Y.Notify(1) numnotif=12 lbllugar.Text= "MECANICA" TEMPORIZADOR.Enabled=False MP.Load(File.DirAssets, "mecanica.mp3") MP.Play B.Write("e") B.FLUSH End If If ((lat >= 21.01150000) AND (lat <= 21.01180000)) AND ((lon <= -89.62140000) AND (lon >= -89.62210000)) Then P.Notify(1) numnotif=4 lbllugar.Text= "INDUSTRIAL" TEMPORIZADOR.Enabled=False MP.Load(File.DirAssets, "industrial.mp3") MP.Play B.Write("f") B.FLUSH End If If ((lat >= 21.01260000) AND (lat <= 21.01280000)) AND ((lon <= -89.62190000) AND (lon >= -89.62220000)) Then Z.Notify(1) numnotif=13 lbllugar.Text= "QUIMICA Y BIOQUIMICA" TEMPORIZADOR.Enabled=False MP.Load(File.DirAssets, "quimica.mp3") MP.Play B.Write("g") B.FLUSH End If If ((lat >= 21.01270000) AND (lat <= 21.01290000)) AND ((lon <= -89.62330000) AND (lon >= -89.62350000)) Then S.Notify(1) numnotif=7 lbllugar.Text= "BIBLIOTECA" TEMPORIZADOR.Enabled=False MP.Load(File.DirAssets, "biblioteca.mp3") MP.Play B.Write("h") B.FLUSH 45 End If If ((lat >= 21.01300000) AND (lat <= 21.01340000)) AND ((lon <= -89.62350000) AND (lon >= -89.62370000)) Then T.Notify(1) numnotif=8 lbllugar.Text= "AUDITORIO" TEMPORIZADOR.Enabled=False MP.Load(File.DirAssets, "auditorio.mp3") MP.Play B.Write("h") B.FLUSH End If If ((lat >= 21.01190000) AND (lat <= 21.01210000)) AND ((lon <= -89.62230000) AND (lon >= -89.62250000)) Then W.Notify(1) numnotif=11 lbllugar.Text= "CAFETERIA" TEMPORIZADOR.Enabled=False MP.Load(File.DirAssets, "cafeteria.mp3") MP.Play B.Write("i") B.FLUSH End If If ((lat >= 21.01173000) AND (lat <= 21.01180000)) AND ((lon <= -89.62280000) AND (lon >= -89.62300000)) Then M.Notify(1) numnotif=2 lbllugar.Text= "FUENTE" TEMPORIZADOR.Enabled=False MP.Load(File.DirAssets, "fuente.mp3") MP.Play B.Write("i") B.FLUSH End If If ((lat >= 21.01220000) AND (lat <= 21.01240000)) AND ((lon <= -89.62280000) AND (lon >= -89.62300000)) Then V.Notify(1) numnotif=10 lbllugar.Text= "CIVIL" TEMPORIZADOR.Enabled=False MP.Load(File.DirAssets, "civil.mp3") MP.Play B.Write("i") B.FLUSH End If If ((lat >= 21.01130000) AND (lat <= 21.011500000)) AND ((lon <= -89.62310000) AND (lon >= -89.62330000)) Then A4.Notify(1) numnotif=16 lbllugar.Text= "GESTION" TEMPORIZADOR.Enabled=False MP.Load(File.DirAssets, "gestion.mp3") MP.Play B.Write("j") B.FLUSH End If 46 If ((lat >= 21.01110000) AND (lat <= 21.01130000)) AND ((lon <= -89.62230000) AND (lon >= -89.62270000)) Then O.Notify(1) numnotif=3 lbllugar.Text= "CENTRO DE IDIOMAS" TEMPORIZADOR.Enabled=False MP.Load(File.DirAssets, "idiomas.mp3") MP.Play B.Write("k") B.FLUSH End If If ((lat >= 21.01170000) AND (lat <= 21.011800000)) AND ((lon <= -89.62340000) AND (lon >= -89.62350000)) Then A5.Notify(1) numnotif=17 lbllugar.Text= "CONTROL ESCOLAR" TEMPORIZADOR.Enabled=False MP.Load(File.DirAssets, "escolar.mp3") MP.Play B.Write("z") B.FLUSH End If If ((lat >= 21.01170000) AND (lat <= 21.01180000)) AND ((lon < -89.62350000) AND (lon >= -89.62370000)) Then A6.Notify(1) numnotif=18 lbllugar.Text= "ENTRADA" B.Write("z") B.FLUSH End If If ((lat >= 21.01260000) AND (lat <= 21.01300000)) AND ((lon <= -89.62270000) AND (lon >= -89.62290000)) Then A3.Notify(1) numnotif=15 lbllugar.Text= "MANTENIMIENTO" TEMPORIZADOR.Enabled=False MP.Load(File.DirAssets, "mantenimiento.mp3") MP.Play End If End Sub 47 3.4.1.3 Candado de inicio. Para iniciar la aplicación es necesario encender previamente el Bluetooth y el GPS de nuestro dispositivo Android. En caso de no haberlo hecho, android no permite a un programa iniciar el GPS o el Bluetooth automáticamente por razones de seguridad, únicamente el usuario puede habilitarlo. La aplicación mandará al usuario a las configuraciones de Ubicación para encender el GPS, siempre y cuando el Bluetooth esté encendido, de lo contrario la aplicación se cerrará. Esto es debido a que la aplicación no permite mandar al usuario a las configuraciones de conectividad. La siguiente Tabla muestra los diferentes comportamientos de inicio de la aplicación: Comportamientos de inicio Bluetooth: Apagado GPS: Apagado Bluetooth: Encendido GPS: Apagado Bluetooth: Encendido GPS: Encendido Fig. 30 Candado 1. Fig. 31 Candado 2. Fig. 32 Candado 3. Se cierra automáticamente la aplicación. La aplicación nos redirige al menú de ubicación GPS. La aplicación inicia de manera correcta. Bluetooth: Apagado GPS: Encendido Tabla 2 Candados. 48 Para lograrlo se implementó el siguiente código: Sub Activity_Resume If (GPS1.GPSEnabled = False) AND (puerto_serial.IsEnabled=True) Then ToastMessageShow("Enciende Tu GPS", True) StartActivity(GPS1.LocationSettingsIntent) Else GPS1.Start(0, 0) End If If puerto_serial.IsEnabled = False Then Answ2=Msgbox2("¡ENCIENDE TU BLUETOOTH!"," A T E N C I Ó N ","OK","","",LoadBitmap(File.DirAssets, "ic_menu_remove.png")) If Answ2 = DialogResponse.POSITIVE Then Activity.Finish End If End If If puerto_serial.IsEnabled=True Then puerto_serial.Listen End If End Sub 3.4.1.4 Botón Iniciar. Una vez que se inicia la aplicación con ambos módulos encendidos, el usuario deberá presionar el botón “¡Iniciar!” y llegará a la zona de espera que dura 3 segundos con un mensaje que dirá “Iniciando aplicación….” Fig. 33 Inicio de la aplicación. 49 Implementación de código: Sub iniciar_Click TEMPORIZADOR3.Enabled=True ProgressDialogShow2("Iniciando....",False) End Sub 3.4.1.5 Menú principal. Después del tiempo de espera, el usuario llegará a la pantalla principal donde se encuentra disponible el menú para interactuar con la aplicación y sus distintas funciones. Fig. 34 Pantalla con botones de menú. Implementación de código: Sub INTERRUPCION3_TICK cuenta=cuenta+1 If cuenta=2 Then ProgressDialogHide iniciar.Enabled=False iniciar.Visible=False Activity.Background = fondo imageview1.Visible=True imageview2.Visible=True Temporizador3.Enabled=False 50 Activity.AddMenuItem2("CONECTAR", "Boton_conectar",LoadBitmap(File.DirAssets, "ic_menu_signal.png")) Activity.AddMenuItem2("CREDITOS", "Boton_CREDITOS",LoadBitmap(File.DirAssets, "ic_menu_android.png")) Activity.AddMenuItem2("PARÁMETROS", "Boton_parametros",LoadBitmap(File.DirAssets, "ic_menu_location.png")) End If End Sub El menú principal se compone de 3 botones, los cuales son: Parámetro s Fig. 35 Botones de menú. Conexión Créditos Descripción: Muestra los Dispositivos Bluetooth Disponibles. Muestra los Créditos de la aplicación. Si se encuentra en los créditos, al presionar se regresa a la pantalla principal. Muestra las coordenadas y la información de los satélites. Si se encuentra en la pantalla de información, al presionar se regresa a la pantalla principal. Al presionar cada uno se ejecutarán las distintas funciones que nos ofrece la aplicación. 51 3.4.1.5.1 Botón “Conexión”. Al presionar el botón “Conexión” se desplegará una lista con los dispositivos Bluetooth que se encuentran vinculados con el dispositivo Android. Previamente, para enlazar la aplicación con el Arduino, se deberá vincular el Módulo Bluetooth HC-05 con el dispositivo. Fig. 36 Menú Emergente. Fig. 37 Mensaje de conexión. Implementación de código: Sub Boton_conectar_Click DISPOSITIVOS_APAREADOS=PUERTO_SERIAL.GetPairedDevices LISTA_DISPOSITIVOS.Initialize For X=0 To DISPOSITIVOS_APAREADOS.SIZE -1 LISTA_DISPOSITIVOS.Add(DISPOSITIVOS_APAREADOS.GetKeyAt(X)) Next A=InputList(LISTA_DISPOSITIVOS, "ENCONTRADOS",-1) If a>=0 Then PUERTO_SERIAL.Connect(DISPOSITIVOS_APAREADOS.GET(LISTA_DISPOSITIVOS.Get(A))) End If End Sub 52 Al realizar la conexión Bluetooth con el Arduino se mostrará un mensaje diciendo que nuestro dispositivo se encuentra conectado. Sub bluetooth_Connected (Success As Boolean) If Success Then ToastMessageShow("Estado Bluetooth: Conectado",False) B.Initialize(PUERTO_SERIAL.OutputStream) RX.Initialize(PUERTO_SERIAL.InputStream) conectado=True TEMPORIZADOR.Enabled=True seguro=1 End If End Sub 3.4.1.5.2 Botón “Parámetros”. Al presionar el botón “Parámetros” se mostrará al usuario la pantalla de coordenadas de información de satélites. Para ello previamente nuestros GPS deberá conectarse correctamente para obtener dicha información. Dependiendo de nuestro dispositivo puede llevar un tiempo dicha conexión. Fig. 38 Pantalla parámetros. 53 Los parámetros que se muestran son: Coordenadas Geográficas: Información de cada satélite: Latitud Identificador Longitud Ángulo de Acimut Velocidad Ángulo de elevación Estado de conexión Relación de Señal a Ruido Implementación de código: Sub GPS_LocationChanged (Location1 As Location) lbllat.Text = "Latitud:" lbllon.Text = "Longitud:" lblspeed.Text = "Velocidad:" latnum.Text= Location1.Latitude & "°" lonnum.Text= Location1.Longitude & "°" spnum.text= Round2((((location1.Speed)*(3.6))),1) & " Km/h" lat = Location1.latitude lon = Location1.Longitude velocidad = Location1.Speed End Sub Sub GPS_GpsStatus (Satellites As List) txt1 = "PRN" txt2 = "Azimuth" txt3 = "Elevation" txt4 = "Used" txt5 = "S/N Ratio" lblSatelites.Text = "N° De Satélites: " & Satellites.Size For i = 0 To Satellites.Size -1 Dim GPSSat As GPSSatellite GPSSat = Satellites.Get(i) txt1 = txt1 & CRLF & GPSsat.Prn txt2 = txt2 & CRLF & GPSSat.Azimuth & "°" txt3 = txt3 & CRLF & GPSSat.Elevation & "°" txt4 = txt4 & CRLF & GPSSat.UsedInFix txt5 = txt5 & CRLF & Round2(GPSSat.Snr, 4) Next lblindex.Text = txt1 lblazimuth.Text = txt2 lblelevation.Text = txt3 lblused.Text = txt4 lblsn.Text = txt5 End Sub 54 La aplicación revisará cada 3 segundos si el usuario se encuentra en una de las diferentes 15 zonas del Instituto Tecnológico de Mérida. De ser así aparecerá una notificación indicándole al usuario la zona en donde se encuentra en ese momento y se iniciará la reproducción de un archivo .mp3 que explicará esa zona y sus características importantes. Fig.39 Barra de reproducción. Cada zona tiene un rango de coordenadas diferente, por lo que el usuario al desplazarse por el Instituto Tecnológico de Mérida recibirá una notificación diferente. Durante la reproducción del audio aparecerá una barra informativa cuyo valor cambiará conforme avance la grabación de voz. Si la aplicación está reproduciendo un archivo de audio y el usuario presiona el botón de créditos o parámetros la barra desaparecerá. Únicamente se hará visible en la pantalla principal. 55 Implementación de Código: Sub INTERRUPCION2_TICK If (mp.IsPlaying = True) AND (seguro>0) Then TEMPORIZADOR.Enabled=False End If If (mp.IsPlaying = False) AND (seguro>0) Then TEMPORIZADOR.Enabled=True End If If (mp.IsPlaying=True) AND ((creditos.Visible=False) AND (latnum.Visible=False) AND (seguro>0)) Then barraduracion.Visible=True barraduracion.Color=Colors.black barraduracion.Max=mp.duration barraduracion.Value=mp.position Else barraduracion.Visible=False End If End Sub 3.4.1.5.3 Botón “Créditos”. Al presionar el botón “Créditos” se mostrará al usuario la pantalla de créditos donde se describen características del desarrollador del programa: Nombre de la aplicación N.° de versión Diseño y Programación URL y e-mail del desarrollador Fig. 40 Pantalla créditos. 56 Implementación de código: If cred=1 Then lbllat.Visible= False lbllon.Visible= False lblsatelites.Visible= False lblindex.visible = False lblazimuth.visible = False lblelevation.visible = False lblused.visible = False lblsn.visible = False lblspeed.Visible= False lbllugar.Visible= False latnum.Visible= False lonnum.Visible= False spnum.Visible= False creditos.Visible= True imageview1.Visible=True end if 3.5 Etapa II: Interfaz Bluetooth-Microcontrolador. Para indicarnos la zona de la Institución en la que nos encontramos se optó por colocar la imagen del mapa del Tecnológico en lo que sería el chasis del prototipo y colocar en cada zona un LED, el cual sería activado por un microcontrolador mediante la conexión bluetooth con la aplicación. 3.5.1 Módulo Bluetooth. Se eligió el módulo Bluetooth HC-05 por ser un dispositivo muy fácil de obtener, económico y sencillo de utilizar. El módulo Bluetooth HC-06 es una de las piezas de mercado más económicas que se pueden encontrar dedicadas a este tipo de conectividad. Fig. 41 Módulo Bluetooth Hc-05. [31] 57 Una de las ventajas principales ventajas del módulo HC-05, además de su pequeño tamaño y sus buenas características de transmisión y recepción que le brindan un alcance muy amplio (por tratarse de un sistema local Bluetooth), es el bajo consumo de corriente que posee tanto en funcionamiento, como en modo de espera, es decir, alimentado con energía, pero sin conexión o enlace a otro dispositivo, por ejemplo, un móvil con SO Android. Otro detalle particular es que su tensión de alimentación de 3,3Volts y su bajo consumo (8mA en transmisión/recepción activa) lo transforman en un dispositivo ideal para trabajar con microcontroladores de la misma tensión de alimentación, logrando de este modo equipos portátiles que pueden ser alimentados durante muchas horas por baterías recargables o alcalinas AA, demostrando características excepcionales en aplicaciones médicas, o para actividades recreativas donde la fuente energética debe ser liviana y portátil. 3.5.1.2 Características HC-05. A continuación se muestran las principales características del HC-05: Wireless transceiver [32] Bluetooth protocol: Bluetooth Specification v2.0+EDR. [32] Frequency: 2.4GHz ISM band. [32] Modulation: GFSK(Gaussian Frequency Shift Keying). [32] Emission power: ≤4dBm, Class 2. [32] Sensitivity: ≤-84dBm at 0.1% BER. [32] Speed: Asynchronous: 2.1Mbps (Max) / 160 kbps. [32] 58 Security: Authentication and encryption. [32] Profiles: Bluetooth serial port. [32] Power supply: Can work at the low voltage (3.1V~4.2V). The current in pairing is in the range of 30~40mA. [32] The current in communication is 8mA. [32] Working temperature: -20 ~ +75 Centigrade. [32] Dimension: 26.9mm x 13mm x 2.2 mm. [32] Has high-performance wireless transceiver system. [32] Low Cost. [32] 3.5.2 Arduino. Se optó por usar Arduino debido su alta compatibilidad con el módulo Bluetooth Hc-05 y su fácil entorno de programación. Fig. 42 Placa Arduino Uno. [33] 59 Además de simplificar el proceso de trabajar con microcontroladores, ofrece algunas ventajas respecto a otros sistemas a profesores, estudiantes y amateurs: Económico: Las placas Arduino son más económicas comparadas con otras plataformas de microcontroladores. [34] Entorno de programación simple y directo: El entorno de programación de Arduino es fácil de usar para principiantes y lo suficientemente flexible para los usuarios avanzados. Pensando en los profesores, Arduino está basado en el entorno de programación de Processing con lo que el estudiante que aprenda a programar en este entorno se sentirá familiarizado con el entorno de desarrollo Arduino. [34] Software ampliable y de código abierto: El software Arduino está publicado bajo una licencia libre y preparado para ser ampliado por programadores experimentados. El lenguaje puede ampliarse a través de librerías de C++, y si se está interesado en profundizar en los detalles técnicos, se puede dar el salto a la programación en el lenguaje AVR C en el que está basado. De igual modo se puede añadir directamente código en AVR C en tus programas si así lo deseas. [34] Hardware ampliable y de Código abierto - Arduino está basado en los microcontroladores ATMEGA168, ATMEGA328 y ATMEGA1280. [34] 3.5.2.1 Programación. El módulo HC-05 se comunica por el puerto serial con el Arduino. Los pines del Hc-05 se conectan de la siguiente manera: 60 VCC: Irá conectado a los 5V del Arduino. GND: Ira al pin GND de Arduino. TXD: Irá conectado al pin RXD del Arduino. RXD: Irá al pin TXD de Arduino. Fig. 43 Conexión de pines entre Arduino y Hc-05. [35] Para la probar la conexión del módulo con el Arduino se utilizó el siguiente código de referencia [38]: //Programa prueba modulo bluetooth GP-GC021 o HC-06 // // // void setup() { //Pin donde conectamos el led para ver el correcto funcionamiento del modulo pinMode(13,OUTPUT); //Configuración de la velocidad del módulo 9600 por defecto, se puede cambiar //mediante comandos AT Serial.begin(9600); } void loop() { //Mientras el puerto serie del módulo bluetooth está disponible while (Serial.available()) 61 { //Guardamos en la variable dato el valor leido por el modulo bluetooth char dato= Serial.read(); //Comprobamos el dato switch(dato) { //Si recibimos una 'w' encendemos el led 13 y enviamos para mostrar //en Blueterm Led encendido case 'w': { digitalWrite(13,HIGH); Serial.println("Led encendido"); break; } //Si recibimos una 'e' apagamos el led 13 y enviamos para mostrar //en Blueterm Led apagado case 'e': { digitalWrite(13,LOW); Serial.println("Led apagado"); break; } //Si recibimos una 'r' encendemos y apagamos el led mediante la secuencia //programa y mostramos en Blueterm Led intermitente case 'r': { digitalWrite(13,HIGH); delay(200); digitalWrite(13,LOW); delay(200); digitalWrite(13,HIGH); delay(100); digitalWrite(13,LOW); delay(100); Serial.println("Led intermitente"); break; } } } } [38] Cada zona de la Institución tendrá su LED correspondiente. En total serán 12 LEDs que colocaran en el mapa para los 15 lugares antes mencionados, debido a que algunos son cercanos entre sí. Para encender cada Led dependiendo de la zona en la que nos encontremos se usó la instrucción Select Case. El código se muestra a continuación: 62 //Programa para la conexión Arduino-Android para el CONOCE-TEC void setup() { //SE CONFIGURAN LOS PINES COMO SALIDAS pinMode(2,OUTPUT); pinMode(3,OUTPUT); pinMode(4,OUTPUT); pinMode(5,OUTPUT); pinMode(6,OUTPUT); pinMode(7,OUTPUT); pinMode(8,OUTPUT); pinMode(9,OUTPUT); pinMode(10,OUTPUT); pinMode(11,OUTPUT); pinMode(12,OUTPUT); pinMode(13,OUTPUT); //Configuración de la velocidad del módulo 9600 por defecto, se puede cambiar //mediante comandos AT Serial.begin(9600); } void loop() { //Mientras el puerto serie del módulo bluetooth está disponible while (Serial.available()) { //Guardamos en la variable dato el valor leído por el modulo bluetooth char dato= Serial.read(); //Comprobamos el dato switch(dato) { //Si recibimos una 'a' encendemos el led 2 en el mapa del chasis del CONOCE-TEC case 'a': { digitalWrite(2,HIGH); digitalWrite(3,LOW); digitalWrite(4,LOW); digitalWrite(5,LOW); digitalWrite(6,LOW); digitalWrite(7,LOW); digitalWrite(8,LOW); digitalWrite(9,LOW); digitalWrite(10,LOW); digitalWrite(11,LOW); digitalWrite(12,LOW); digitalWrite(13,LOW); break; } //Si recibimos una 'b' encendemos el led 3 en el mapa del chasis del CONOCE-TEC case 'b': { digitalWrite(3,HIGH); digitalWrite(2,LOW); digitalWrite(4,LOW); digitalWrite(5,LOW); digitalWrite(6,LOW); digitalWrite(7,LOW); digitalWrite(8,LOW); digitalWrite(9,LOW); digitalWrite(10,LOW); 63 digitalWrite(11,LOW); digitalWrite(12,LOW); digitalWrite(13,LOW); break; } //Si recibimos una 'c' encendemos el led 4 en CONOCE-TEC case 'c': { digitalWrite(4,HIGH); digitalWrite(2,LOW); digitalWrite(3,LOW); digitalWrite(5,LOW); digitalWrite(6,LOW); digitalWrite(7,LOW); digitalWrite(8,LOW); digitalWrite(9,LOW); digitalWrite(10,LOW); digitalWrite(11,LOW); digitalWrite(12,LOW); digitalWrite(13,LOW); break; } //Si recibimos una 'd' encendemos el led 5 en CONOCE-TEC case 'd': { digitalWrite(5,HIGH); digitalWrite(2,LOW); digitalWrite(3,LOW); digitalWrite(4,LOW); digitalWrite(6,LOW); digitalWrite(7,LOW); digitalWrite(8,LOW); digitalWrite(9,LOW); digitalWrite(10,LOW); digitalWrite(11,LOW); digitalWrite(12,LOW); digitalWrite(13,LOW); break; } //Si recibimos una 'e' encendemos el chasis del CONOCE-TEC case 'e': { digitalWrite(6,HIGH); digitalWrite(2,LOW); digitalWrite(3,LOW); digitalWrite(4,LOW); digitalWrite(5,LOW); digitalWrite(7,LOW); digitalWrite(8,LOW); digitalWrite(9,LOW); digitalWrite(10,LOW); digitalWrite(11,LOW); digitalWrite(12,LOW); digitalWrite(13,LOW); break; } //Si recibimos una 'f' encendemos el chasis del CONOCE-TEC case 'f': { el mapa del chasis del el mapa del chasis del led 6 en el mapa del led 7 en el mapa del 64 digitalWrite(7,HIGH); digitalWrite(2,LOW); digitalWrite(3,LOW); digitalWrite(4,LOW); digitalWrite(5,LOW); digitalWrite(6,LOW); digitalWrite(8,LOW); digitalWrite(9,LOW); digitalWrite(10,LOW); digitalWrite(11,LOW); digitalWrite(12,LOW); digitalWrite(13,LOW); break; } //Si recibimos una 'g' encendemos el led 8 en el mapa del chasis del CONOCE-TEC case 'g': { digitalWrite(8,HIGH); digitalWrite(2,LOW); digitalWrite(3,LOW); digitalWrite(4,LOW); digitalWrite(5,LOW); digitalWrite(6,LOW); digitalWrite(7,LOW); digitalWrite(9,LOW); digitalWrite(10,LOW); digitalWrite(11,LOW); digitalWrite(12,LOW); digitalWrite(13,LOW); break; } //Si recibimos una 'h' encendemos el led 9 en el mapa del chasis del CONOCE-TEC case 'h': { digitalWrite(9,HIGH); digitalWrite(2,LOW); digitalWrite(3,LOW); digitalWrite(4,LOW); digitalWrite(5,LOW); digitalWrite(6,LOW); digitalWrite(7,LOW); digitalWrite(8,LOW); digitalWrite(10,LOW); digitalWrite(11,LOW); digitalWrite(12,LOW); digitalWrite(13,LOW); break; } //Si recibimos una 'i' encendemos el led 10 en el mapa del chasis del CONOCE-TEC case 'i': { digitalWrite(10,HIGH); digitalWrite(2,LOW); digitalWrite(3,LOW); digitalWrite(4,LOW); digitalWrite(5,LOW); digitalWrite(6,LOW); digitalWrite(7,LOW); digitalWrite(8,LOW); digitalWrite(9,LOW); 65 digitalWrite(11,LOW); digitalWrite(12,LOW); digitalWrite(13,LOW); break; } //Si recibimos una 'j' encendemos el led 11 en el mapa del chasis del CONOCE-TEC case 'j': { digitalWrite(11,HIGH); digitalWrite(2,LOW); digitalWrite(3,LOW); digitalWrite(4,LOW); digitalWrite(5,LOW); digitalWrite(6,LOW); digitalWrite(7,LOW); digitalWrite(8,LOW); digitalWrite(9,LOW); digitalWrite(10,LOW); digitalWrite(12,LOW); digitalWrite(13,LOW); break; } //Si recibimos una 'k' encendemos el led 12 en el mapa del chasis del CONOCE-TEC case 'k': { digitalWrite(12,HIGH); digitalWrite(2,LOW); digitalWrite(3,LOW); digitalWrite(4,LOW); digitalWrite(5,LOW); digitalWrite(6,LOW); digitalWrite(7,LOW); digitalWrite(8,LOW); digitalWrite(9,LOW); digitalWrite(10,LOW); digitalWrite(11,LOW); digitalWrite(13,LOW); break; } //Si recibimos una 'z' encendemos el led 13 en el mapa del chasis del CONOCE-TEC case 'z': { digitalWrite(13,HIGH); digitalWrite(2,LOW); digitalWrite(3,LOW); digitalWrite(4,LOW); digitalWrite(5,LOW); digitalWrite(6,LOW); digitalWrite(7,LOW); digitalWrite(8,LOW); digitalWrite(9,LOW); digitalWrite(10,LOW); digitalWrite(11,LOW); digitalWrite(12,LOW); break; } } } } 66 3.5.2.2 Pruebas en el Protoboard. Finalmente se realizaron las pruebas en el protoboard en las que se observó que el Arduino y los elementos del circuito funcionaban adecuadamente junto con la aplicación, permitiendo de esta manera avanzar a la siguiente etapa del proyecto. Fig. 44 Prueba en protoboard. 67 3.6 Etapa III: Arduino Shield. 3.6.1. Diseño de la placa del circuito. Para el diseño de la Placa de Circuito Impreso (PCB), se utilizó el programa Eagle 6.1.0 Professional, siendo este un programa confiable y fácil de utilizar. Lo primero que se hizo fue ubicar las librerías que se utilizarían que fueron las de Arduino, de LEDs y resistencias. Una vez teniendo las librerías instaladas, se procedió a la implementación de los componentes a utilizar en el esquemático. Quedando estos de la siguiente manera: Fig. 45 Esquemático. Al haber terminado el esquemático, se procedió a pasarlo a placa para su enrutamiento. 68 Fig. 46 Placa sin enruta. Los componentes se distribuyeron de tal manera que todo se encuentre en una sola cara, tratando que la placa no exceda por mucho el tamaño del Arduino, ya que nos sirve como shield para el mismo. Fig. 47 Placa enrutada. 69 Como se puede ver en la Figura 3.4.1.3, la placa está prácticamente llena del “color azul”, con esto además de ahorrar cloruro férrico a la hora de “quemar” la placa, tenemos un amplio sitio de Tierra. Fig. 48 Circuito Impreso. Teniendo el circuito impreso lito, se optó por pasarlo a placa por el método de plancheo por la facilidad y simplicidad en cierto modo de la placa, ya que no es de doble cara. Fig. 49 Planchado del circuito a la placa. 70 Teniendo ya listo el dibujo del circuito en la placa, se procedió a “quemar” el cobre sobrante con cloruro férrico. Fig. 50 Aplicación de cloruro férrico a la placa. Al haber terminado la placa esta quedó de la siguiente manera Fig. 51 Placa lista. 71 Teniendo la placa lista se pasó a soldar los componentes siendo estos: 12 LEDs Ultrabrillantes (4 rojos, 4 verdes, 4 blancos y 4 azules). 12 Resistencias de 220Ω. 24 cables para los LEDs. 4 Bases para Arduino. Se determinó el uso de LEDs de 220Ω para que estos trabajen a 15mA de la siguiente manera: Figura 52 Gráfica de Corriente Forward vs Voltaje Forward. [37] Tomando como Corriente Forward 15mA, la gráfica nos muestra que el LED consume un Voltaje Forward de 1.9V, entonces se usa la siguiente ecuación para poder saber qué tamaño de resistencia usar cuando se tiene usando una fuente de 5V: Fig. 53 Fórmula para la polarización de un LED. 72 Donde, R = Resistencia de polarización V = Voltaje de la Fuente Vf = Voltaje Forward If = Corriente Forward Entonces despejando la formula con los valores proporcionados: Fig. 54 Realización de Cálculos para determinar la resistencia del LED. Luego de tener los valores resistivos, se procedió a soldar la placa con los componentes Fig. 55 Soldando componentes. 73 Al término de la soldadura de los componentes en la placa, quedó de la siguiente manera. Fig. 56 Placa con componentes lista. Luego se procedió a conectar la placa (Shield) al Arduino para proceder a la siguiente etapa. Fig. 57 Placa conectada al Arduino. 74 Para finalizar se verificó que todos los LEDs encendieran de manera correcta buscando posibles fallos para eliminarlos de manera inmediata sin afectar los procesos siguientes. Fig. 58 Verificación de la placa. 75 3.7 Etapa IV: Chasis. El diseño del prototipo se realizó mediante el programa “AutoCAD”. Se verifico que las medidas sean las correctas para que su aplicación física sea universal a cualquier teléfono celular. La realización del diseño se hizo en base a la ergonomía de los usuarios que podrán tener acceso al prototipo o podrían utilizarlo. Tomamos en cuenta la medida promedio de la mano humana, el tamaño de los dispositivos celulares que podrán ser conectados al prototipo, así como también los ángulos de visión y espacios bien considerados para colocar las partes a ensamblar. Diseño con AutoCAD: Fig. 59 Diseño del chasis con las medidas a escala. 76 Fig. 60 Vista Frontal del prototipo diseñado (vista de ángulos opuestos del mismo diseño). Fig 61. Vista trasera del diseño final del prototipo (vista desde ambos ángulos opuestos). Ahora, el diseño físicamente, se hizo con trovicel, ya que este material tiene la propiedad de ser flexible y resistente al impacto. Se tomaron las medidas, se hicieron cortes y modelados para que se lleve un correcto ensamble en el dispositivo final. El modelado de las piezas se hizo en base a la estética del diseño, de manera que tenga buena presentación y, al mismo tiempo, sea fácil de sostener y manipular para el usuario. 77 Material usado y toma de medidas: Las agarraderas del prototipo fueron diseñadas con las medidas de 9 cm de largo y 3.8 cm de ancho (fue hecho en base a la medida promedio de la mano humana). Fig.62 Elaboración chasis 1. La base para el mapa de LEDs del instituto fue de 8 cm de largo por 5 de ancho (este espacio fue considerado de manera que el mapa sea fácil de observar y tenga espacio para la colocación de los LEDs). Fig. 63 Elaboración chasis 2. 78 La base para el porta móvil fue diseñada con las medidas de 11 cm de largo por 8 cm de ancho (las medidas son en base a el tamaño promedio de los móviles considerados). Fig. 64 Elaboración chasis 3. Partes ya cortadas y listas para ensamblar el prototipo final. Fig. 65 Elaboración chasis 4. 3.7.1 Detallado las partes. Se optó por usar trovicel porque este material es bastante manejable y puede ser moldeado sencillamente ya que en temperaturas normales está en estado sólido, muy parecido a plástico duro, pero al ponerlo en contacto con altas temperaturas este adopta un estado maleable y se le puede dar cualquier forma que sea necesaria. 79 Igualmente se le coloca al dispositivo el mapa del Instituto para el reconocimiento de las áreas geográficas abarcadas. Cada área constara de un LED, el cual nos indicara nuestra ubicación en tiempo real. Para la unión de las partes, utilizamos tornillos; se eligió esta opción, ya que era necesario que las partes estén bien unidas de manera que den seguridad al momento del montaje y sea eficaz al momento de usarlo con el propósito final del proyecto. Ensamblaje del Prototipo: Fig. 66 Partes moldeadas del prototipo para su ensamblaje final. Las partes se moldearon en base a la ergonomía eficaz del usuario. 80 Orificios y cortes a las partes moldeadas para su armado. Fig.67 Armado chasis 1. Antes de ensamblar el prototipo final, nos vimos en la tarea de detallar los bordes e imperfecto de las piezas para una mejor presentación y estética del mismo. Tales detallados fueron lijados de los bordes de las piezas, limpieza o lavado de algunas partes donde quedaron partes quemadas por el calentamiento del trovicel, entre los más importantes. Detallado de los bordes de la base para el mapa de LEDs. Fig.68 Armado chasis 2. 81 3.7.2 Armado del prototipo final. La parte del armado fue la más sencilla, al tener las medidas exactas y las partes ya listas para el ensamblado se nos hizo una tarea bastante fácil de realizar. Se usaron varios tornillos para el aseguramiento de algunas partes, y en otras partes no vimos necesario ponerlos (ya que daban una vista muy ruda al prototipo) y se hizo uso de pegamento para esas uniones. Armado y unión de las partes moldeadas del prototipo final. Fig.69 Armado chasis 3. Para el armado y unión de las partes, se utilizaron tornillos y tuercas de 1/4 pulgadas. Fig.70 Armado chasis 4. 82 Colocación de la base para el mapa de LEDs. Fig.71 Armado 5. Moldeando algunas partes de trovicel para adaptarlas al armado del prototipo. Fig.72 Armado chasis 6. Para no dejar mal la estética del prototipo, se usó pegamento en varias partes, para ponerle accesorios y/o partes necesarias del ensamblado. 83 Fig 73. Armado chasis 7. Varias partes se unieron con pegamento por motivo de estética del prototipo. Ya se habían utilizado bastantes tornillos y se usó este método de pegado. Fig 74 Vista del prototipo 75% acabado. En este punto aún le faltan unos detalles, como los logos y el mapa del instituto. 84 Fig 75. Inserción del escudo del instituto al prototipo. Fig. 76. Colocación del mapa del Instituto (donde van a colocarse los LEDs en áreas específicas). 85 Fig 77. Elaboración de los orificios para colocar los LEDs en las áreas específicas del mapa. Fig. 78 Prototipo, placa de circuito con el Arduino y el dispositivo móvil respectivamente en la imagen de izquierda a derecha 86 Fig 79. Vista general del prototipo ya terminado de ensamblar y detallar. Para la colocación de los LEDs se eligieron de varios colores y se colocaron en áreas específicas del mapa del instituto. Las áreas elegidas fueron: entrada al instituto, gestión y vinculación, edificio de Ingeniería Eléctrica y Electrónica, Auditorio, fuente, centro de idiomas, edificio de Ingeniería Biomédica, edificio de Ingeniera Industrial, edificio de Ingeniería Química y Bioquímica, edificio de Ingeniería Mecánica, centro de cómputo y área deportiva. 87 Fig 80. Conexión de los LEDs a la placa de circuito para su acoplamiento al prototipo. Fig 81. Acoplamiento de los LEDs al prototipo, por medio de los orificios hechos en el mapa del Instituto pegado en el prototipo. 88 CAPITULO IV RESULTADOS Y CONCLUSIONES 4.1 Resultados. Se comprobó que al estar en algún sitio dentro de los rangos de coordenadas definidos, la aplicación es capaz de notificar al usuario su ubicación en la Institución. Sin embargo debido a causas ambientales suele haber un retraso con la respuesta de los satélites hacia el dispositivo Android, retrasando a la par a las notificaciones del teléfono. Otro de los problemas que se presentó durante los recorridos realizados en la Institución para probar el funcionamiento del prototipo fue el de la precisión del sistema GPS del dispositivo Android, cuyo rango es de 5 m a 10 m de margen de error que se presentaba cuando el cielo no estaba totalmente despejado. Una cuestión muy importante a mencionar es la existencia de un retraso con la conexión del módulo GPS del dispositivo Android al momento de iniciar la aplicación, el cual solo se presenta durante el primer uso después de la instalación, y a partir de este primer inicio, el retardo de la conexión del módulo GPS disminuye, es decir, no demora mucho tiempo en buscar y conectarse a los satélites. Una forma de eliminar los problemas mencionados con anterioridad es teniendo en el dispositivo una conexión de datos de Internet. Al momento de dar los recorridos, fue notorio que el chasis implementado satisfacía las necesidades tanto del manejo del prototipo como de la visualización del mapa en la parte superior de este, los tornillos colocados en las distintas partes del chasis aseguraron la 89 correcta colocación del Arduino, la placa de LEDs, la antena bluetooth y las piezas del trovicel. La interfaz Android-Arduino funcionó de manera esperada, cumpliendo el propósito de notificar al usuario el encendido del LED correspondiente a la zona de ubicación cuando la aplicación se lo indicará al Arduino mediante el módulo HC-05, por medio de la conexión Bluetooth. Finalmente el prototipo realizó el objetivo esperado, cumpliendo las metas propuestas al inicio del proyecto 4.2 Conclusiones Actualmente el futuro de las aplicaciones móviles está en crecimiento exponencial dado a la facilidad y versatilidad que se tiene en el mercado de teléfonos inteligentes. La instalación del programa entre otros dispositivos Android, llámese celulares y tabletas, resultó ser compatible y viable a la hora de usar estos en los recorridos hechos en la institución. A pesar de que no todos obtenían el mismo número de satélites de ubicación y diferían las coordenadas geográficas, este no fue un obstáculo ya que los primeros cuatro decimales que definían los rangos del lugar de ubicación se mantenían iguales. Finalmente es importante mencionar que para la elaboración del proyecto se aplicaron materias tales como electrónica analógica, electrónica digital, microcontroladores, programación y optoelectrónica. El proyecto se realizó de manera exitosa. 90 FUENTES BIBLIOGRAFICAS: [1] http://www.alsitel.com/tecnico/gps/historia.htm; “Historia del GPS”, 27/02/2013. [2] TOMASI, Wayne. Sistemas de comunicaciones electrónicas. 4° ed. México, Pearson, 2003. 976p. [3] (PDF) “Introducción a Android”; http://pendientedemigracion.ucm.es/info/tecnomovil/documentos/android.pdf; Manuel Báez, Álvaro Borrego, Jorge Cordero, Luis Cruz, Miguel González, et al; 27/02/2013 [4] http://3.bp.blogspot.com/-Q9YDfycpK2g/UPTThmSa9I/AAAAAAAAAFA/AsTjqPoWc8Y/s1600/Logo_Android.jpg (Imagen android) [5] http://opensignal.com/reports/fragmentation.php (imagen distribución Android) [6] (PDF) “Bluetooth”; http://catarina.udlap.mx/u_dl_a/tales/documentos/lem/valle_i_lf/capitulo3.pdf [7] http://www.andresduarte.com/tutorial-arduino , “Tutorial Arduino”, 21/03/2013 [8] http://www.eskola20.org/formacion/tutoriales/nivel1/earthmaps/modulos/es/content_1_18.h tml ; “Google Maps. Descripción y funcionalidades principales”; 06/03/2013 [9] http://www.poderpda.com/wp-content/uploads/2012/03/Google-Maps-being-offlinedoesnt-mean-being-lost.gif (Imagen Google Maps) [10] http://es.wikipedia.org/wiki/Sistema_de_navegaci%C3%B3n_para_autom%C3%B3viles ; Sistema de Navegación para Automóviles, 06/03/2013 91 [11] http://bimg1.mlstatic.com/gps-garmin-nuvi-30-pantalla-35-nombra-calles-mapascargado_MLA-F-3079421636_082012.jpg (Imagen Garmin) [12] http://a820.phobos.apple.com/us/r1000/114/Purple/35/a1/4f/mzl.rbhavjnt.320x48075.jpg (Imagen UNAM 360) [13] http://www.cnnexpansion.com/tecnologia/2012/08/09/android-derrota-al-ios-enventas; “Android Derrota al iOS en Ventas”, publicado por Julianne Pepitone el 9/08/2012; 27/02/2013 [14] http://es.wikipedia.org/wiki/APK_(formato) ; APK (formato), 08/04/2013 [15] http://es.wikipedia.org/wiki/Desarrollo_de_Programas_para_Android; Desarrollo de Programas para Android, 08/04/2013 [16] http://commons.wikimedia.org/wiki/File:Basic4android-Logo.jpg (Imagen Basic4android) [17] http://www.basic4ppc.com/android/screenshots.html (Área de Trabajo Basic4android) [18] http://itmerida.libri.mx/Images/logo.jpg (Imagen Banner 1) [19] http://www.itmerida.mx/imagenes/banner.png (Imagen Banner 2) [20] http://tecvi.itmerida.mx/file.php/1/logoTec.jpg (Imagen Logo 1) [21] http://edist.itmerida.mx/file.php/1/Logos/LOGO_TEC_OFICIAL.jpg (Imagen Logo 2) [22] http://www.diee.net/logotec.jpg (Imagen Logo DIEE) [23] http://files.myopera.com/Aleksander/albums/5199232/android-wallpaper.jpg (Imagen Wallpaper Android) 92 [24] http://www.mediafire.com/download/2wcx8hlfko9olfi/icolor-android-iconstehkseven.zip; 6/06/13 [25] http://www.mediafire.com/download/2wcx8hlfko9olfi/icolor-android-iconstehkseven.zip; 6/06/13 [26] http://www.mediafire.com/download/2wcx8hlfko9olfi/icolor-android-iconstehkseven.zip; 6/06/13 [27] http://www.mediafire.com/download/2wcx8hlfko9olfi/icolor-android-iconstehkseven.zip; 6/06/13 [28] http://www.basic4ppc.com/forum/spanish-forum/13249-b4a-tutorial-gps.html; 6/06/13 [29] http://www.historiasdeuncazique.com/wp-content/uploads/gps2.png (Imagen librería GPS) [30] http://www.historiasdeuncazique.com/articulo/654/basic4android-tutorial-oficial-gpsen-espanol.html (Imagen Objetos de la librería) [31] (PDF) HC-05 http://www.mcu-turkey.com/wp-content/uploads/2013/01/HC-Serial-Bluetooth-Products201104.pdf 93 [32] http://www.pial.net/post/Using-the-HC-05-Bluetooth-RS232-Serial-module-for-cheapwireless-communication-with-your-uController.aspx; “Using the HC-05 Bluetooth RS232 Serial module for cheap wireless communication between your PC and Arduino”, publicado por Pial el 4/04/2011; 06/06/2013 [33] http://1.bp.blogspot.com/QeVB8_RYWDk/T70JRJb5hiI/AAAAAAAAApQ/a3RLKkJueBc /s1600/arduinounofront.jpg (Imagen Arduino UNO) [34] http://arduino.cc/es/Guide/Introduction; “Introducción a Arduino”, publicado por Creative Commons Attribution-ShareAlike 3.0 License; 06/06/2013 [35] http://robotosh.blogspot.mx/2012/07/arduino-jy-mcu-bluetooth.html; “Arduino - JYMCU Bluetooth”, publicado por roboToSH el 7/07/2012; 06/06/2013 [37] (PDF) “Datasheet Led Ultrabrillante” http://www.vishay.com/docs/81354/tlcry520.pdf [38] http://tallerarduino.wordpress.com/2011/12/06/modulo-bluetooth-hc-06-o-gp-gc021-yarduino. “Módulo Bluetooth y Arduino”, publicado por Regata el 6/12/2011; 06/06/2013 94