Story Transcript
José Manuel Pérez Ruiz
Sistema de guía para personas invidentes a través de Bluetooth
Sistema de guía para personas invidentes a través de bluetooth
Página 1
Identificación de los datos del proyecto Tema: COMUNICACIONES BLUETOOTH Título: SISTEMA DE GUIA PARA PERSONAS INVIDENTES A TRAVES DE BLUETOOTH Autor: JOSE MANUEL PEREZ RUIZ Titulación: INGENIRIA TECNICA DE TELECOMUNICACIONES ESPECIALIDAD SISTEMAS ELECTRONICOS Tutor: MARIANO RUIZ GONZALEZ Departamento: SEC Tribunal: Presidente: GERARDO BALABASQUER VILLA Vocal: EDUARDO BARRERA LOPEZ DE TURISO Vocal Secretario: MARIANO RUIZ GONZALEZ Fecha de Lectura: 12-OCTUBRE-2013
Resumen proyecto José Manuel Pérez Ruiz Titulo: SISTEMA DE GUIA PARA PERSONAS INVIDENTES A TRAVES DE BLUETOOTH El planteamiento inicial era proveer al individuo invidente de un sistema autónomo capaz de guiarle según sus preferencias.
El resultado obtenido al finalizar este proyecto ha sido un dispositivo autónomo configurable por el usuario mediante una aplicación sw , desarrollada en la plataforma móvil Android capaz de comunicarse con el dispositivo autónomo(móvil personal). La idea de utilizar como plataforma de desarrollo sw Android, se baso fundamentalmente en que es código open source, es gratuito y está presente en el 70 por ciento de los móviles de Europa. La idea inicial era que ambos hubieran sido integrados en un mismo dispositivo, pero una vez comenzado el proyecto y habiendo evaluado los hábitos actuales, decidimos adaptar la idea general del proyecto, a nuestros días. Para ello hicimos uso del dispositivo móvil más usado hoy en día, como es nuestros teléfonos móviles, o más bien los llamado Smartphone, con los cuales podemos desde su aplicación originaria que es llamar, hasta realizar multitud de operaciones al mismo tiempo como puede ser comunicación por internet, posicionamiento via GPS, intercambio de ficheros por bluetooth…..tantas como podamos programar.
Sobre este último atributo, intercambio de información a través de bluetooth, es la interfaz que vamos a aprovechar para la realización de nuestro proyecto.
Hoy en día el 90% de los Smartphone tiene entre sus características de conectividad la posibilidad de intercambiar información vía bluetooth.
Una vez se tiene resuelto el interfaz entre el medio y el usuario se debe solucionar la forma de transformar la información para que los dispositivos móviles recojan la información y sepan discernir entre la información importante y la que no lo es. Para ello hemos desarrollado una tarjeta configurable, con un módulo bluetooth comercial para enviar la información. El resultado final de esta tarjeta proporciona una manera fácil de configurar diferentes mensajes que serán utilizados según la situación.
Project Abstract of Jose Manuel Perez Ruiz Title: GUIDANCE BLUETOOTH SYSTEM FOR BLIND PEOPLE The initial approach consisted of a system that shows the way for blind people to get somewhere or something or provide to them important information, an autonomous system able to guide to their preference. After several analyses the project accomplish is a standalone device configurable by the user via an application sw, developed in Android mobile platform capable of communicating with the standalone device (personal cell phone). The decision of using the sw development platform of Android was due to the open source code concept and the great extent of presence on 70 percent of European mobiles. The first idea was that the sw and the device were integrated into a single device, but once the project had been started and having assessed the current habits, it has changed to be adapted to the present technology to get a better usability on the present-day. To achieve the project goals the most used mobile device today was used, our mobile phones, or rather called Smartphone, which you could use to phone your mother or perform many operations simultaneously such as communication online, positioning via GPS, bluetooth file trading program, etc. On this last attribute, information sharing via bluetooth, is the interface that it has been taken to complete the project. Today 90% of the Smartphone include in its connectivity features the ability to exchange information via bluetooth. Once that it was solved the interface between the environment and the final user, the next step incorporates the transformation of the information that the mobile devices collect from the environment to discern between the information the user configure to be notified or not. The hardware device that makes it possible is a configurable card with a bluetooth module that is able to send the information. The final result of this card provides an easy way to configure different messages, that we could use depending of the situation.
Sistema de guía para personas invidentes a través de bluetooth Este proyecto se lo dedico a mi mujer, compañera y madre de mi hija Emma, por todo su apoyo durante estos años.
Página 2
Sistema de guía para personas invidentes a través de bluetooth 1
2
3
Introducción .......................................................................................................................... 6 1.1
Objetivos conseguidos ........................................................................................... 6
1.2
Estructura del proyecto ......................................................................................... 8
Base teórica ........................................................................................................................... 9 2.1
Diagrama de bloques ............................................................................................. 9
2.2
Especificaciones ................................................................................................... 10
2.3
Descripción diseño PCB (printed circuit board) ................................................... 10
2.4
Descripción módulo alimentación ....................................................................... 11
2.5
Micro controlador................................................................................................ 16
2.6
Elementos auxiliares ............................................................................................ 17
2.7
Módulo Bluetooth ............................................................................................... 19
2.7.1 Teoría Bluetooth .......................................................................................... 19 2.7.2 Especificaciones y diseño de Bluetooth ...................................................... 28 2.7.3 Descripción módulo Bluetooth comercial ................................................... 29 Diseño SW ............................................................................................................................ 36 3.1
Diseño Android .................................................................................................... 36
3.1.1 Descripción .................................................................................................. 36 3.1.2 Usuarios y tareas del sistema ...................................................................... 36 3.1.3 Descripción de bloques principales ............................................................. 40 3.2 Diseño C ............................................................................................................... 61
4
3.2.1 Descripción .................................................................................................. 61 3.2.2 Diagrama de bloques ................................................................................... 61 3.2.3 Descripción del funcionamiento .................................................................. 61 Presupuesto ......................................................................................................................... 63
5
Conclusiones ........................................................................................................................ 65
6
Referencias .......................................................................................................................... 67
7
Bibliografía ........................................................................................................................... 67
ANEXO A ...................................................................................................................................... 68 ANEXO B ...................................................................................................................................... 72 ANEXO C ...................................................................................................................................... 77 ANEXO D ...................................................................................................................................... 83
Página 3
Sistema de guía para personas invidentes a través de bluetooth
Índice de figuras Figura 1 Descripción sistema ................................................................................................. 7 Figura 2 Esquema de bloques ................................................................................................ 9 Figura 3 Dimensiones Exteriores PCB .................................................................................. 10 Figura 4 Esquema eléctrico módulo alimentación .............................................................. 11 Figura 5 Esquema eléctrico DC/DC ...................................................................................... 12 Figura 6 Esquema módulo alimentación Micro ................................................................... 13 Figura 7 Esquema módulo alimentación micro ................................................................... 14 Figura 8 Nota de aplicación regulador lineal ....................................................................... 15 Figura 9 Esquema circuito 3,3v fijos .................................................................................... 15 Figura 10 Prototipo con módulo Bluetooth ........................................................................ 16 Figura 11 Módulo Bluetooth separado de tarjeta de configuración ................................... 17 Figura 12 Descripción física ................................................................................................. 18 Figura 13 Implementación PCB ........................................................................................... 18 Figura 14 Estructura piconet y Scatternet ........................................................................... 21 Figura 15 Pila de protocolos Bluetooth ............................................................................... 23 Figura 16 Service discovery protocol ................................................................................... 28 Figura 17 Módulo bluetooth ............................................................................................... 29 Figura 18 Diagrama de bloques módulo bluetooth............................................................. 30 Figura 19 Esquema eléctrico conexión módulo bluetooth.................................................. 31 Figura 20 Interfaz UART con micro controlador .................................................................. 32 Figura 21 Conector 20 pines ................................................................................................ 32 Figura 22 Pin out módulo bluetooth ................................................................................... 34 Figura 23 Dimensiones y fijaciones mecánicas del módulo bluetooth ............................... 35 Figura 24 Tareas .................................................................................................................. 36 Figura 25 Diagrama actividad: Configuración...................................................................... 37 Figura 26 Diagrama actividad: Activar sistema ................................................................... 39 Figura 27 Flujo de programa Android .................................................................................. 40 Figura 28 Primera pantalla .................................................................................................. 41 Figura 29 Reconocimiento de voz ....................................................................................... 41 Figura 30 Estructura carpetas Android ................................................................................ 43 Figura 31 Carpeta src ........................................................................................................... 43 Figura 32 Carpeta res ........................................................................................................... 52 Figura 33 Carpeta gen.......................................................................................................... 53 Figura 34 Formulario para generar fichero .apk .................................................................. 56 Figura 35 Diagrama de flujo programa C en micro ............................................................. 61 Figura 36 Especificaciones DC/DC R783.3‐1.0A SMD .......................................................... 68 Figura 37 Dimensiones DC/DC R783.3‐1.0A SMD ............................................................... 69 Figura 38 Caracteristicas del D0‐214AC ............................................................................... 69 Figura 39 Dimensiones de Do‐214AC .................................................................................. 70 Figura 40 Especificaciones regulador lineal AP117 ............................................................. 71
Página 4
Sistema de guía para personas invidentes a través de bluetooth Figura 41 Encapsulado AP117 ............................................................................................. 71 Figura 42 Esquema de Bloques ............................................................................................ 72 Figura 43 Fuente alimentación ............................................................................................ 73 Figura 44 Debug ................................................................................................................... 74 Figura 45 Módulo Bluetooth ............................................................................................... 75 Figura 46 Micro‐switch ........................................................................................................ 76 Figura 47 Requerimientos Hardware .................................................................................. 77 Figura 48 Plugin ADT ............................................................................................................ 79 Figura 49 Paquetes Disponibles ........................................................................................... 80 Figura 50 Pantalla AVD ........................................................................................................ 81
Página 5
Sistema de guía para personas invidentes a través de bluetooth
1
Introducción Hoy en día las personas invidentes no tiene acceso a la mayoría de las señales, que para el resto de las personas videntes son normales e incluso si no las tuviéramos, en muchos casos nos veríamos perdidos sin saber que hacer o donde ir. Este proyecto trata de dar una solución a esta falta de información visual que de otra forma nunca estaría al alcance de los invidentes. Nuestra aplicación está diseñada para que una persona invidente con un dispositivo móvil con sistema operativo Android, tenga acceso a toda esta información dejando la libertad a la persona de elegir que información quiere o no quiere recibir mediante una configuración previa, que podrá realizar de forma totalmente autónoma y sin necesidad de manejar complicados menús . Para ello nos apoyamos en el sistema operativo Android y en todas las funciones que nos ofrece la plataforma, para por medio de una conexión Bluetooth punto a punto obtener información pre‐programada en cada momento. El objetivo secundario de este proyecto es desarrollar una plataforma de inicio, que pude seguir evolucionando tanto en funcionalidad como en rendimiento al mismo tiempo que el sistema Android evoluciona.
1.1 Objetivos conseguidos El planteamiento inicial era proveer al individuo invidente de un sistema autónomo capaz de guiarle según sus preferencias. El resultado obtenido al finalizar este proyecto ha sido un dispositivo autónomo configurable por el usuario mediante una aplicación sw , desarrollada en la plataforma móvil Android capaz de comunicarse con el dispositivo autónomo(móvil personal).
Página 6
Sistema de guía para personas invidentes a través de bluetooth La idea inicial era que ambos hubieran sido integrados en un mismo dispositivo, pero una vez comenzado el proyecto y habiendo evaluado los hábitos actuales, decidimos adaptar la idea general del proyecto, a nuestros días. Para ello hicimos uso del dispositivo móvil más usado hoy en día, como es nuestros teléfonos móviles, o más bien los llamado Smartphone, con los cuales podemos desde su aplicación originaria que es llamar, hasta realizar multitud de operaciones al mismo tiempo como puede ser comunicación por internet, posicionamiento via GPS, intercambio de ficheros por bluetooth…..tantas como podamos programar. Sobre este último atributo, intercambio de información a través de bluetooth, es la interfaz que vamos a aprovechar para la realización de nuestro proyecto. Hoy en día el 90% de los Smartphone tiene entre sus características de conectividad la posibilidad de intercambiar información vía bluetooth. Una vez se tiene resuelto el interfaz entre el medio y el usuario se debe solucionar la forma de transformar la información para que los dispositivos móviles recojan la información y sepan discernir entre la información importante y la que no lo es. Para ello hemos desarrollado una tarjeta configurable, con un módulo bluetooth comercial para enviar la información. El resultado final de esta tarjeta proporciona una manera fácil de configurar diferentes mensajes que serán utilizados según la situación.
Figura 1 Descripción sistema
Página 7
Sistema de guía para personas invidentes a través de bluetooth
1.2 Estructura del proyecto
Diseño HW ‐‐> Esta parte consta del diseño de una tarjeta donde se insertará el módulo bluethooth escogido para la realización del diseño. Esta tarjeta estará compuesta de un micro, un conector y una serie de switchs para realizar las diferentes configuraciones de la tarjeta.
Diseño SW ‐‐> Esta parte del proyecto se distinguen dos partes de programación : o
Java(Andorid) ‐‐> Es la parte de diseño sw correspondiente a la programación de una aplicación Android, que ira instalada en el dispositivo móvil , la cual se comunicará con el módulo bluetooth.
o
C ‐‐> Es la parte de diseño sw integrada en el micro controlador. En esta aplicación se deberán de generar los mensajes que el dispositivo móvil deberá interpretar.
Página 8
Sistema de guía para personas invidentes a través de bluetooth
2
Base teórica En esta sección se describirá el proceso de diseño HW de la tarjeta auxiliar que utilizaremos durante el proyecto para controlar la unidad bluethooth.
2.1 Diagrama de bloques 4 DC/DC 3,3V
5
2 Modulo bluetooth
1 3 DC/DC 3,3V
8051F411 Figura 2 Esquema de bloques
1) Micro‐controlador 8051F411 2) Módulo bluetooth ConnectBlue OEM311 3) Convertidor alimentación a 3,3v para alimentar micro 4) Convertidor alimentación a 3,3v para módulo bluetooth 5) Micro‐switchs para configurar mensajes
Página 9
Sistema de guía para personas invidentes a través de bluetooth
2.2 Especificaciones Alimentación: 4,75‐18Vdc Corriente máxima:
No conectado: 20mA
Conectado: 70 mA
Alcance módulo: 10m Dimensiones: 88,5mmx70mm
2.3 Descripción diseño PCB (printed circuit board) Para la realización de este proyecto se utilizará el programa de diseño de PCB Altium en su versión Summer 09. Con dicho sw realizaremos la captura del esquemático y el diseño de PCB. Las medidas finales de la PCB se decidieron teniendo en cuenta el tamaño de la tarjeta Bluetooth y demás componentes, como switchs, micro y fuente de alimentación. Como resultado se obtuvo una tarjeta con las siguientes dimensiones.
70 mm
Bluetooth 88,5 mm
Figura 3 Dimensiones Exteriores PCB
Todos los componentes están ubicados en una sola cara y son de montaje superficial. La fabricación de dicha PCB fue contratada a la empresa PCBCART, través de su página web: Referencia 3. Todos los ficheros Gerber irán incluidos en el cd junto al libro.
Página 10
Sistema de guía para personas invidentes a través de bluetooth
2.4 Descripción módulo alimentación El módulo de alimentación se divide en dos partes diferenciadas. La primera parte es la encarga de la alimentación del micro y una segunda parte encargada de la alimentación del módulo bluetooth
Figura 4 Esquema eléctrico módulo alimentación
Para la alimentación del dispositivo está previsto un conector tipo jack mediante el cual conectaremos un transformador externo, con el cual alimentaremos al módulo desde 220Vac a 5Vdc. También existe la posibilidad de alimentarlo mediante pilas de 9V@1,2Ah la cual nos daría un funcionamiento continuo de 20h.
Página 11
Sistema de guía para personas invidentes a través de bluetooth Módulo alimentación módulo bluetooth Según el diagrama de bloques de la Figura 2 , el bloque 3 se encargará de alimentar al módulo bluetooth. La alimentación la obtenemos de un convertidor DC/DC de 4,75v‐18v, del cual se obtendrá 3,3v. Se ha elegido el módulo R78AA3.3‐1 ASMD, debido a su alta eficiencia del 84% y una corriente máxima de 1 A. Todos los elementos de la tarjeta están escogidos en montaje superficial, para minimizar la superficie de componentes. Las características del regulador se pueden ver en el anexo A. El diseño de componentes asociados al regulador se ha escogido siguiendo las indicaciones del fabricante. En el diseño de la PCB se han implementado las huellas de las resistencias R1 y R2, así como se han incorporado condensadores en la entrada y la salida para estabilizar la tensión del regulador.
Figura 5 Esquema eléctrico DC/DC
Página 12
Sistema de guía para personas invidentes a través de bluetooth VDD VDD
1
VDD1
JP1 1 8 3 7 9
R2 P1 VCC
2 1 3
D3 D Schottky
330 C9 D1
C10
2 10 5 4 6
DC/DC
100nF
R3 Res3 1K
22uF
Header 3 LED3
C11 C12 Cap Pol3 100nF 47uF
R4 Res3 1K GND
Estas resistencias solo montan cuando queremos dar distinta salida,en este caso R4,3K9
Figura 6 Esquema módulo alimentación Micro
A la entrada tenemos un diodo D3 que evita que tensiones en inversa dañen nuestro circuito. Este diodo se eligió dada su rápida respuesta (10000V/µs) y tiene una corriente máxima de 1A. A continuación tenemos un diodo led para indicar que la tarjeta está alimentada junto con su resistencia de limitación de corriente R2.
R2 min
5v 2,6v 80 0,03mA
Se han colocado dos condensadores a la entrada, C9 (22µF@50v) y C10 ( 100nF@50v). Son utilizados como filtro y estabilización de tensión a la entrada del regulador. A la salida del regulador obtenemos 3,3v@1A con la siguiente configuración: R3 no se monta R4 de un valor 3K9Ω con un 1% de precisión. Aunque no se utiliza la huella de R3 en este montaje, se deja la huella por si fuera necesario en un futuro cambiar la tensión de salida del regulador. La resistencias montadas en este prototipo son de tamaño 2512, como se menciona en la sección anterior los encapsulados han sido escogidos con el criterio de facilitar el montaje, más que una decisión tomada por disipación de potencia. A la salida se han incluido dos condensadores, C11 (47µF@16v) y C12 (100nF@16v) para estabilizar la tensión que nos da el regulador a su salida. Con este montaje se obtiene una tensión continua regulada y estable de 3,3v, a partir de una tensión continua de entrada que puede variar entre 4,75v y 18v. Esta alimentación será utilizada para alimentar el micro controlador. Todos los datasheet de los elementos están en el anexo A.
Página 13
Sistema de guía para personas invidentes a través de bluetooth Módulo alimentación micro controlador Como se muestra en la Figura 2, el bloque 4 se encarga de alimentar al micro controlador, que tiene un consumo máximo de 10 mA cuando está en funcionamiento. Para ello se ha montado un regulador lineal ajustable de bajo drop out ,con una corriente de 1 A máximo de salida. El regulador escogido ha sido el AP1117 con una tensión fija a la salida de 3,3v. Para ello se ha tomado como ejemplo la nota de aplicación recomendada por el fabricante en el datasheet. Se ha escogido la opción de implementar en la PCB las resistencias de salida para poder configurar la tensión de salida. Si fuera necesario alimentar a distintos módulos con distintas tensiones, no sería necesario un rediseño de PCB. La entrada de alimentación de este módulo se ha diseñado de tal forma que podemos obtener la alimentación desde el exterior mediante jack, o bien desde el módulo de alimentación de micro a través dos resistencias configurables (R21 y R20) en la PCB.
Figura 7 Esquema módulo alimentación micro
Como se menciona en el párrafo anterior R20 y R21, son dos resistencias para elegir la fuente de alimentación desde donde se va a alimentar el regulador lineal. A continuación tenemos un diodo (D4) para evitar polaridad inversa de la tensión de alimentación provoque daños en el regulador. Siguiendo la nota de aplicación se añaden condensadores a la entrada y a la salida para estabilizar la tensión en el regulador.
Página 14
Sistema de guía para personas invidentes a través de bluetooth Finalmente se tiene a la salida dos resistencias con las cuales podemos fijar tensiones desde 1,5v hasta 5v.
Figura 8 Nota de aplicación regulador lineal
En el diseño R6 corresponde con R2 en la nota de aplicación. Montaremos una resistencia de 0Ω con lo que obtendremos una salida fija de 3,3v.
Figura 9 Esquema circuito 3,3v fijos
Con estos dos módulos se tendrá la alimentación que necesitemos para alimentar nuestra placa auxiliar. El datasheet del regulador está recogido en el anexo A del presente documento.
Página 15
Sistema de guía para personas invidentes a través de bluetooth
2.5 Micro controlador Para este proyecto se ha decidido utilizar un micro‐controlador de la familia C8051 de Silabs . Dispone de los puertos necesarios para la realización de dicha tarjeta y al conocimiento que disponemos de su manejo después de haber trabajado con dispositivos similares durante la carrera. Las características más destacadas del micro por el cual nos hemos decantado por su utilización son: 24 entradas/salidas configurables como push‐pull u open drain Alimentación a 5v UART SPI Memoria o
2304 bytes de memoria RAM
o
16Kbytes de memoria Flash
En nuestro diseño hemos incorporado un cristal a 22118400Hz para generar la velocidad UART que deseemos, en nuestro caso 57600 baudios.
Figura 10 Prototipo con módulo Bluetooth
Página 16
Sistema de guía para personas invidentes a través de bluetooth
Figura 11 Módulo Bluetooth separado de tarjeta de configuración
La programación y depuración de los programas serán introducidas a través de un puerto Jtag preparado en la placa para tal función.
2.6 Elementos auxiliares Para configurar o para controlar el funcionamiento del módulo nos ayudaremos de un set de microswitch. Mediante la selección de estos interruptores se puede indicar al módulo que mande uno u otro mensaje. Estos mensajes estarán predefinidos en una base de datos. Dependiendo de la aplicación para la que se utilice la aplicación buscara dentro de la base de datos que mensaje debe de lanzar al usuario. Previamente el usuario ya habrá definido que mensajes quiere recibir.
Página 17
Sistema de guía para personas invidentes a través de bluetooth Se basa en una codificación binaria que esta relacionada con unos valores en la base de datos. Su interfaz física en la PCB es la siguiente:
Figura 12 Descripción física
Su implementación en la PCB se realizará con resistencias configuradas a Pull‐up:
Figura 13 Implementación PCB
Página 18
Sistema de guía para personas invidentes a través de bluetooth
2.7 Módulo Bluetooth 2.7.1
Teoría Bluetooth
2.7.1.1 Conceptos básicos Con la intención de clarificar lo que realmente significa e implica esta tecnología, se exponen a continuación una serie de definiciones empleadas en entornos Bluetooth: ‐ Piconet: colección de dispositivos (de 2 a 8) conectados por medio de la tecnología Bluetooth. Todos los dispositivos tienen la misma implementación. Sin embargo, al crearse la red una unidad actuará como maestra y el resto como esclavas mientras dure la conexión. ‐ Scatternet: cuando en una misma zona hay varias piconets independientes y no sincronizadas forman lo que se llama una scatternet. ‐ Dirección Mac: el maestro de la piconet asigna a los esclavos una dirección mac de 3 bits para distinguir a los miembros de la piconet, de las otras piconets de la zona que forman la scatternet. ‐ Modo Activo: modo que se produce cuando hay un intercambio de información. ‐ Modo Hold: es un modo de ahorro de energía que mantiene en estado de espera a los esclavos de la piconet cuando no tienen nada que transmitir e incluso puede ser solicitado por los dispositivos esclavos cuando terminan de enviar información. ‐ Modo Sniff: otro modo de ahorro de energía, en el cual el esclavo reduce la frecuencia con que escucha de la red, reduciendo así su consumo. ‐ Parked: un tercer modo de ahorro de energía seria este, en el cual el esclavo pierde su dirección MAC de la piconet, pero sigue sincronizado con esta y solo escucha la red ocasionalmente para mensajes broadcast. 2.7.1.2 Principios de funcionamiento Cada dispositivo Bluetooth deberá estar equipado con un microchip (tranceiver) que transmite y recibe en la frecuencia de 2.45 GHz (2,400 a 2,480 Ghz en saltos de 1 MHz) que esta disponible en todo el mundo (con algunas variaciones de ancho de banda en diferentes países, como pasa en España, Francia y
Página 19
Sistema de guía para personas invidentes a través de bluetooth Japón) y que no necesita licencia. Además de los 7 canales dedicados a la transmisión de datos, están disponibles 3 canales de voz a 64 kbit/s. Cada dispositivo tiene una dirección única de 48 bits, basada en el estándar IEEE 802.11 para LAN inalámbricas, que le permite formar, temporalmente, parte de una piconet. Las conexiones son uno a uno con un rango máximo de 10 metros, aunque actualmente se puede llegar hasta los 100 metros. El bluetooth esta dotado de un esquema de salto de frecuencia. Utiliza un sistema que busca una parte no utilizada del espectro. Éste sistema divide la banda de frecuencia en varios canales de salto, donde, los transceptores, durante la conexión van cambiando de uno a otro canal de salto de manera pseudo‐ aleatoria. Con esto se consigue que el ancho de banda instantáneo sea muy pequeño y también una propagación efectiva sobre el total de ancho de banda. En conclusión, con el sistema FH (Salto de frecuencia), se pueden conseguir transceptores de banda estrecha con una gran inmunidad a las interferencias. Este esquema de "frequency hop" (saltos de frecuencia aleatorios) permite a los dispositivos comunicarse inclusive en áreas donde existe una gran interferencia electromagnética (el hecho de que los paquetes sean más cortos y los saltos más rápidos reducen el impacto nocivo de los hornos de microondas u otros dispositivos que trabajen en la misma banda); además de que se provee de mecanismos de encriptación (con longitud de la clave de hasta 64 bits) y autenticación, para controlar la conexión y evitar que cualquier dispositivo, no autorizado, pueda acceder a los datos y/o modificarlos. Bluetooth se ha diseñado para operar en un ambiente multi‐usuario. Los dispositivos pueden habilitarse para comunicarse entre sí e intercambiar datos de una forma transparente al usuario. Como se utilizan 3 bits para la dirección MAC, hasta ocho usuarios o dispositivos pueden formar una "piconet" y hasta diez "piconets"pueden co‐existir en la misma área de cobertura, cada piconet se identificará por una secuencia de saltos de frecuencia distinta. Bluetooth minimiza la interferencia potencial al emplear saltos rápidos en frecuencia (1600 veces por segundo).
Página 20
Sistema de guía para personas invidentes a través de bluetooth
Figura 14 Estructura piconet y Scatternet
Dado que cada enlace es codificado y protegido contra interferencia y pérdida de enlace, Bluetooth puede considerarse como una red inalámbrica de corto alcance muy segura. El sistema Bluetooth permite conexiones punto a punto y punto a multipunto. Como en cualquier otro tipo de comunicación vía radio, el aspecto de la seguridad es un tema delicado que genera muy diversas opiniones. A continuación se comentan los fundamentos de la seguridad en Bluetooth en lo referente a las capas bajas de esta tecnología. El Perfil de Acceso Genérico Bluetooth, que es un marco en el cual se centran todos los demás perfiles, define tres modos de seguridad: ‐ Modo de seguridad 1: no seguro. ‐ Modo de seguridad 2: seguridad impuesta a nivel de servicio. ‐ Modo de seguridad 3: seguridad impuesta a nivel de enlace. En el modo 1 no se iniciará ningún proceso de seguridad. En el modo de seguridad 2 el dispositivo Bluetooth inicia el procedimiento de seguridad después de que el canal haya sido establecido (capas altas de la pila de protocolos). En el modo de seguridad 3 el dispositivo Bluetooth inicia el procedimiento de seguridad antes de que el canal haya sido establecido (capas bajas de la pila de
Página 21
Sistema de guía para personas invidentes a través de bluetooth protocolos). Además, existen dos posibilidades en el acceso de dispositivos a diferentes servicios: ‐ Dispositivos de confianza ‐ Dispositivos de no confianza Los primeros tienen acceso sin restricción a todos los servicios, mientras que los segundos tienen acceso limitado. Los servicios también pueden ser catalogados en tres niveles de seguridad: ‐ Servicios abiertos, a los cuales puede acceder cualquier dispositivo. ‐ Servicios que requieren sólo autenticación, a los cuales puede acceder cualquier dispositivo que se haya autenticado, puesto que habrá demostrado que comparte una clave de enlace con el proveedor del servicio. ‐ Servicios que requieren autenticación y autorización, a los cuales sólo tendrán acceso aquellos dispositivos que sean de confianza (y así estarán marcados en la base de datos del servidor). El sistema puede proveer seguridad tanto a nivel de aplicación como a nivel de enlace. Para mantener la seguridad a nivel de enlace, los parámetros utilizados son: ‐ La dirección del dispositivo Bluetooth (BD_ADDR). ‐ La clave de usuario privado de autenticación. ‐ La clave de usuario privado de cifrado. ‐ Un número aleatorio (RAND). La BD_ADDR tiene una longitud fija de 48 bits y es única para cada dispositivo Bluetooth, siendo asignada por el IEEE. La clave de autenticación tiene una longitud fija de 128 bits, mientras que la de cifrado, que normalmente se obtiene a partir de la de autenticación, durante el proceso
Página 22
Sistema de guía para personas invidentes a través de bluetooth de autenticación, tiene una longitud variable, entre 1 y 16 octetos, es decir entre 8 y 128 bits. El número aleatorio vendrá derivado de un proceso aleatorio o pseudo‐aleatorio que tendrá lugar en la unidad Bluetooth. Este parámetro puede cambiar frecuentemente. 2.7.1.3 Arquitectura Bluetooth La arquitectura de Bluetooth especifica el conjunto de protocolos con los que pueden operar las distintas aplicaciones. Así, cada aplicación puede operar bajo una estructura de protocolos definida por cada columna que se presentan en la figura, o por un conjunto de ellas. Una nota importante a tener en cuenta es que se han reutilizado los protocolos ya existentes en capas superiores, en lugar de implementar unos nuevos. Además, la especificación es abierta, lo que permite el desarrollo de nuevos protocolos de aplicación en las capas superiores, lo cual se traduce en el desarrollo de una gran variedad de servicios.
Figura 15 Pila de protocolos Bluetooth
Página 23
Sistema de guía para personas invidentes a través de bluetooth 2.7.1.3.1 Bluetooth radio
La capa radio de Bluetooth define las necesidades de los distintos dispositivos Bluetooth que opera en la banda ISM a 2,4GHz. Esta capa se basa en el método de división de espectro conocido como espectro ensanchado, utilizando 79 saltos de frecuencia en cada MHz, comenzando en 2,400GHz y acabando en 2,480GHz. En ambos sistemas se utiliza una banda de guarda entre cada salto, con el fin de respetar las regulaciones de cada país en cuanto al tema de evitar las transmisiones fuera de banda. Se tienen tres clases de dispositivos según la potencia de los mismos: ‐ Potencia Clase 1. Dispositivos de largo alcance (aprox. 100m), con una potencia máxima de salida de 20dBm. ‐ Potencia Clase 2. Dispositivos de medio alcance (aprox. 10m), con una potencia máxima de salida de 4dBm. ‐ Potencia Clase 3. Dispositivos de corto alcance (aprox. 10cm), con una potencia máxima de salida de 0dBm. La interfaz radio Bluetooth se basa en una antena de potencia nominal de 0dBm. Cada dispositivo puede variar su potencia de manera opcional. El equipamiento con control de potencia optimiza la potencia de salida con comandos procedentes del protocolo de enlace. Esto se hace midiendo el RSSI (Receiver Signal Strength Indicator), retornando un mensaje indicando si la potencia debe ser incrementada o decrementada. La modulación utilizada en la interface radio de Bluetooth es GFSK (Gaussian Frequency Shift Keying), donde un uno binario se representa con una desviación positiva de frecuencia, mientras que un cero se expresa como una desviación negativa de la frecuencia. 2.7.1.3.2 BaseBand
El nivel de banda base permite el enlace físico entre unidades dentro de la piconet. A este nivel se utilizan procedimientos de averiguación y de localización para sincronizarse. Además, de estas funciones, el nivel de
Página 24
Sistema de guía para personas invidentes a través de bluetooth banda base se encarga de cuestiones referentes al control de errores y de flujo. Existen dos tipos de enlaces físicos SCO (sincrónico orientado a la conexión) y ASL (asíncrono sin conexión) los cuales se comentan a continuación: SCO (Synchronous Connection‐Oriented). Es un enlace punto a punto simétrico entre el maestro y un esclavo de la piconet. El maestro mantiene el enlace usando slots reservados en intervalos regulares. Este canal básicamente se encarga de transportar la información de voz, ya que está orientado a conexión. Un maestro es capaz de soportar tres enlaces SCO simultáneos, lo que quiere decir tres canales de voz simultáneos a 64Kbps. Por el hecho de ser un enlace orientado a conexión, se supone que los paquetes llegarán siempre íntegros, por lo que en este enlace nunca se darán retransmisiones. ACL (Asynchronous Connection‐Less). Es un enlace punto a multipunto entre el maestro y todos los esclavos pertenecientes a la piconet. Se transmiten sobre los slots no reservados por enlaces SCO, donde el maestro puede establecer un enlace ACL. Al no estar orientado a conexión, se tiene que ante la posibilidad de pérdidas de paquetes se pueden producir retransmisiones. Además de los enlaces físicos descritos del nivel de banda base, existen canales lógicos, teniendo cinco diferentes. LC (Control Channel) y LM (Link Manager) se usan en el nivel de enlace, mientras que los canales UA, UI y US se utilizan para el transporte de información de usuario asíncrona, isosíncrona y síncrona respectivamente. 2.7.1.3.3 Link Manager Protocol(LMP)
El protocolo de administración del enlace (LMP) es el responsable de configurar las conexiones entre los distintos dispositivos Bluetooth mediante la trasmisión de distintos mensajes o PDU´s. Este protocolo tiene diversa funcionalidades entre las que destacan las siguientes: ‐ Calidad de soporte de servicio.
Página 25
Sistema de guía para personas invidentes a través de bluetooth ‐ Autenticación y cifrado, intercambiando las claves de encriptación empleadas en este proceso. ‐ Control y negociación del tamaño de los paquetes de Banda Base. ‐ Estado de los dispositivos en una piconet. ‐ Control de energía de las unidades. ‐ Supervisión del enlace. 2.7.1.4 Host Controller Interface (HCI) El Controlador de Interface del host (HCI) se utiliza para separar las capas Banda base y LMP de los protocolos de transporte con la finalidad de ofrecer a estos una interfaz de comandos estándar para controlar la banda base y el gestor de enlace y acceder al estado del hardware de Bluetooth y a los registros de control. Así pues, utilizando HCI, una aplicación Bluetooth puede acceder al hardware de Bluetooth sin el conocimiento de ciertos detalles como la implementación del hardware.
Página 26
Sistema de guía para personas invidentes a través de bluetooth 2.7.1.5 Logical link control and adaptation layer protocol (L2CAP) El protocolo de Adaptación y control del enlace lógico (L2CAP) está situado sobre el protocolo de banda base, estando residente en la capa de enlace de datos. Este protocolo provee servicios orientados a conexión y no orientados a conexión a los protocolos de niveles superiores, incorporando funcionalidades de multiplexado de datos, segmentación y reensamblaje de los paquetes para poder enviar paquetes de mayor tamaño a través de la conexión Bluetooth (de hasta 64KB ), intercambio de información con respecto a la calidad de la conexión existente entre los dispositivos, reunión y abstracciones de grupo. 2.7.1.6 RFCOM El protocolo RFCOM provee emulación de Puerto serie sobre el protocolo L2PCAP. Además, suministra capacidades de transporte a los niveles superiores que utilizan el puerto serie como mecanismo de transporte (como por ejemplo OBEX). 2.7.1.7 Service Discovery Protocol (SDP) El protocolo de descubrimiento de servicio (SDP) provee un conjunto de aplicaciones con el fin de descubrir qué servicios están disponibles y determinar las características de esos servicios. O lo que es lo mismo, define como una aplicación cliente puede descubrir servicios disponibles y sus características. Debido a la naturaleza móvil de los dispositivos Bluetooth es necesario la integración de un protocolo de este tipo ya que los servicios disponibles varían dinámicamente según la proximidad de los dispositivos.
Página 27
Sistema de guía para personas invidentes a través de bluetooth
Figura 16 Service discovery protocol
2.7.2
Especificaciones y diseño de Bluetooth
‐ Banda de Frecuencia: desde los 2.4 GHz hasta los 2.5 Ghz (Banda libre ISM/Industria Scientific Medical), única banda de frecuencia abierta a cualquier sistema de radio independientemente del lugar del planeta donde nos encontremos. ‐ Potencia del transmisor: 1 mW (0 dBm) para 10 metros, y 100 mW (+20 dBm) para 100 metros. ‐ Tecnología: Espectro Expandido (Spread Spectrum), Secuencia Directa Híbrida y Saltos en Frecuencia (Hybrid Direct sequence and frequency hopping). ‐ Canales máximos de voz: 3 por piconet ‐ Canales máximos de datos: 7 por piconet ‐ Velocidad de datos: hasta 721 kbit/s por piconet ‐ Rango esperado del sistema: 10 metros hasta 100 metros ‐ Número de dispositivos: 8 por piconet y hasta 10 piconets ‐ Seguridad: Si, a nivel de enlace y de aplicación ‐ Alimentación: 2,7 voltios ‐ Consumo de potencia: desde 30 uA aparcado hasta 8‐30 mA transmitiendo ‐ Tamaño del Módulo: 9x9 mm
Página 28
Sistema de guía para personas invidentes a través de bluetooth ‐ Interferencia: Bluetooth minimiza la interferencia potencial al emplear saltos rápidos en frecuencia (1600 veces por segundo). El protocolo banda base que utiliza Bluetooth combina las técnicas de conmutación de circuitos y de paquetes para asegurar que los paquetes llegan en orden, hasta 5 slots (intervalos en los que se divide el canal para el salto de frecuencia) se reservan para las transmisiones síncronas. Un aspecto muy importante, dado lo reducido del chip (9x9mm), ya que va a ir incorporado en dispositivos portátiles alimentado con baterías, es que tenga un consumo de potencia muy reducido (hasta un 97% menos que un teléfono móvil). Para ahorrar energía los dispositivos Bluetooth establecen el modo "hold" en el que no intercambian datos, también pueden activar el modo "sniff" en el que se escucha con un nivel bajo; en el modo standby los dispositivos no conectados en una piconet indagan por mensajes cada segundo y medio. 2.7.3
Descripción módulo Bluetooth comercial
Para el desarrollo de este PFC nos hemos decidido por un módulo comercial de la marca Connect Blue OEM 312. Nuestro modulo está definido dentro de la clase 2, con un alcance de 10m. La conexión que realizaremos entre el módulo bluetooth y nuestro móvil será utilizando el protocolo REFCOM. Se tomo este por tener unas dimensiones reducidas con posibilidad de conectarse con equipos auxiliares mediante diferentes tipos de conectores. El módulo lleva integrada la antena y solo será necesario la utilización de un conector de 20 pines para realizar la conexión con nuestra tarjeta.
Figura 17 Módulo bluetooth
Página 29
Sistema de guía para personas invidentes a través de bluetooth El módulo bluetooth está compuesto por los módulos mostrados en el siguiente esquema de bloques, donde podemos ver los diferentes puertos y funcionalidades asociados a este. En nuestra unidad utilizaremos el conector J1. El módulo estará alimentado mediante el convertidor DC/DC a 3,3v a través del conector JP2.
Figura 18 Diagrama de bloques módulo bluetooth
Página 30
Sistema de guía para personas invidentes a través de bluetooth 2.7.3.1 Interfaz física entre módulo Bluetooth y PCB La comunicación con el módulo bluetooth se realizara mediante mensajes compartidos entre las UART incluidas en el módulo y la UART incluida en el micro controlador. El diseño de esta parte se muestra a continuación: R31 VDD3.3 Res3 390
G
D2 TRILED
R
4
5
6
B
R
B
3
2
1
MODE
JP2
S1
R10 100 GND
1
R7
2
U4
A Y
4
B 3
SW-PB
390
VCC
100nF
14 11 7 8 5 12 10 16 18 20
5
C15
4 3 1 2 9 19 13 6 17 15
POWER SAVING
R9
R8 1K R15 100
MODULO BLUETOOTH
R16 100 TX-RX1 1 TEST_POINT
RX-TX1 1 TEST_POINT
R9 solo se monta si queremos utilizar la entrada de power saving
RX-TX
TX-RX
Figura 19 Esquema eléctrico conexión módulo bluetooth Según recomendaciones del fabricante, cuando el módulo se tiene que comunicar con un host alimentado a 3,3v la interfaz entre el host y el módulo debe hacerse mediante resistencias de 100Ω.
Página 31
Sistema de guía para personas invidentes a través de bluetooth
Figura 20 Interfaz UART con micro controlador La conexión del módulo con la tarjeta se realizara con un conector de 20 pines ubicado de forma estratégica en nuestra tarjeta para evitar chocar con los elementos del resto de la tarjeta.
Figura 21 Conector 20 pines El módulo nos da distintas señales con las cuales podemos monitorizar el estado del módulo. Para ello se ha utilizado un diodo tri led con el cual indicaremos si está comunicando utilizando el diodo azul. Este diodo no está implementado en prototipo. Se propone como mejora.
Página 32
Sistema de guía para personas invidentes a través de bluetooth El diodo rojo nos indicara si el módulo esta en modo de transmisión de datos o en modo comandos AT. Se habilitará una línea con la cual se podrá poner al módulo en modo de stand by. Finalmente se habilitará un reset manual para evitar que el módulo se quede en un estado desconocido donde no responda a mensajes enviados desde el micro. La descripción de cada uno de los pines es la siguiente:
Página 33
Sistema de guía para personas invidentes a través de bluetooth
Figura 22 Pin out módulo bluetooth
Página 34
Sistema de guía para personas invidentes a través de bluetooth Nuestro diseño se utilizará los pines del 15 al 20 para la comunicación con la UART. En estos pines la señales necesitan de niveles entre 0‐3v que son las que nos da nuestro micro controlador. Para comprobar que la comunicación esta activa hemos incluido un led azul (D2). Además dentro de la PCB se han habilitado puntos de test para comprobar las señales de transmisión y recepción. La sujeción mecánica del módulo bluetooth con la tarjeta se realizara mediante dos orificios ubicados en el medio de la tarjeta.
Figura 23 Dimensiones y fijaciones mecánicas del módulo bluetooth Para la configuración del módulo se tienen diferentes mensajes utilizando comandos AT con los cuales se puede configurar vía bluetooth y dejar al módulo preparado para enviar y recibir datos de forma autónoma. En nuestra aplicación esta configuración se realizará con una tarjeta de adaptación USB, facilitada por fabricante como módulo de programación.
Página 35
Sistema de guía para personas invidentes a través de bluetooth
3
Diseño SW 3.1 Diseño Android 3.1.1 Descripción Toda la aplicación puede ser manejada con mensajes de voz y solo será necesaria la actuación sobre el dispositivo móvil en el momento de recibir la notificación. Esta aplicación ha sido testada en un teléfono Samsung SII con diferentes versiones de sistema Android, mínimo requerido es Android 2.3. 3.1.2 Usuarios y tareas del sistema Usuario: persona invidente que podrá realizar tareas de configuración para activar/ desactivar las notificaciones deseadas ha ser proporcionadas por los U suario
agentes externos y activar / desactivar el sistema.
Configuración
ActivarSistema Usuario
Figura 24 Tareas
Página 36
Sistema de guía para personas invidentes a través de bluetooth Dispone de dos tareas: Configuración: La primera parte se encargara de configurar la aplicación, es decir especificar la información la cual el usuario este interesado en ser notificado. Esta se podrá realizar completamente mediante mensajes de voz. La aplicación ira guiando al usuario a través de mensajes sobre las opciones disponibles en cada momento. Se podrá realizar tantas veces como se quiera ya que toda la información quedará registrada en una base de datos donde se almacenaran los datos configurados, así como su significado.
Figura 25 Diagrama actividad: Configuración
Página 37
Sistema de guía para personas invidentes a través de bluetooth Caso de uso: Configuración Nombre caso uso:
Configuración de la aplicación
Autor:
José Manuel Pérez Ruiz
Fecha:
01/09/2013
Descripción: Permite configurar las opciones de las cuales el usuario desea ser notificado Actores:
Usuario
Flujo Normal: 1.
El actor selecciona la aplicación
2.
El sistema presenta una ventana con las opciones iniciales, de forma visual y auditiva
3.
El actor pronuncia la opción “Configuración”
4.
El sistema le presentará una ventada con las opciones que pueden ser activadas tanto con botones como de forma de reconocimiento de voz. Una secuencia de ejemplo de ventanas para activar la notificación de tiempo de transporte sería la siguiente: 4.1.Transporte 4.2.Tiempo 4.3.Último 4.4.Activar
5.
Seguir con más configuraciones o pronunciar Comenzar para activar el sistema con las opciones ya configuradas
Página 38
Sistema de guía para personas invidentes a través de bluetooth Activar sistema: La segunda parte será la función principal de la aplicación, que será escuchar los mensajes enviados por la tarjeta bluetooth e identificar si tienen que ser o no ser informado el usuario del mensaje que se está mandando mediante la consulta de la base de datos previamente actualizada.
Figura 26 Diagrama actividad: Activar sistema Caso de uso : Activar sistema Nombre caso uso:
Activar el sistema
Autor:
José Manuel Pérez Ruiz
Fecha:
01/09/2013
Descripción: Permite activar el sistema para estar a la espera de notificaciones Actores: Usuario Flujo Normal: 1.
El actor selecciona la aplicación
2.
El sistema presenta una ventana con las opciones iniciales, de forma visual y auditiva
3.
El actor pronuncia la opción “Comenzar”
Página 39
Sistema de guía para personas invidentes a través de bluetooth 3.1.3 Descripción de bloques principales APLICACION
PROGRAMA PRINCIPAL
CONFIGURACION
TRANSPORTE
UBICACION
CALLE ESCUCHAR MENSAJES
METRO AUTOBUS CERCANIAS
…..
….
ESTACION NOMBRE TIEMPO
…..
…..
ACTIVAR DES-ACTIVAR
…..
…..
Figura 27 Flujo de programa Android En el esquema de bloques podemos ver lo que sería la estructura de una aplicación. Como podemos ver al principio de la aplicación nos encontraremos con una pantalla donde deberemos de elegir si comenzamos a utilizar la aplicación o deseamos cambiar la configuración.
Página 40
Sistema de guía para personas invidentes a través de bluetooth
Figura 28 Primera pantalla En esta primera pantalla se muestran dos botones a la vez que el sistema TTS (text‐to‐ speach) comienza a lanzarnos indicaciones para utilizar la aplicación. Una vez terminada la explicación sonora de las opciones de cada pantalla, la aplicación lanza el reconocimiento de voz para que el usuario elija entre una de las opciones disponible en esa pantalla.
Figura 29 Reconocimiento de voz
Página 41
Sistema de guía para personas invidentes a través de bluetooth Esta aplicación que es propia del sistema Android reconoce el comando que el usuario pide e inicia la acción pertinente que puede ser ir a la siguiente pantalla o salir para comenzar la aplicación. Una vez tenemos todo configurado como el usuario desea la aplicación se queda en escucha de alguna comunicación Bluetooth para dar indicaciones pertinentes al usuario. Como segunda opción toda la aplicación se puede manejar mediante pulsaciones en las opciones que aparecen en pantalla, pero no es el objetivo de esta aplicación. Cuando hemos lanzado la aplicación esta nos indicara que hay un mensaje disponible y mediante un toque en cualquier parte de la pantalla nos dará la información disponible en el punto bluetooth que esté más cerca. 3.1.3.1 Descripción clases proyecto Android 3.1.3.1.1
Estructura proyecto Android
Para la realización del proyecto Android hemos utilizado la plataforma de desarrollo ANDROID SDK. En el ANEXO C se describe los pasos necesarios para la instalación de dicho
IDE. Una vez instalados todos los sw necesarios así como sus complementos pasamos a describir todos los archivos que vamos a necesitar para la creación de nuestro proyecto así como su implementación en este proyecto. Para empezar a comprender cómo se construye una aplicación Android vamos a echar un vistazo a la estructura general de un proyecto tipo. Cuando creamos un nuevo proyecto Android en Eclipse se genera automáticamente la estructura de carpetas necesaria para poder generar posteriormente la aplicación. Esta estructura será común a cualquier aplicación, independientemente de su tamaño y complejidad.
Página 42
Sistema de guía para personas invidentes a través de bluetooth En la siguiente imagen vemos los elementos creados inicialmente para un nuevo proyecto Android:
Figura 30 Estructura carpetas Android Describamos los elementos principales. Carpeta /src/ Contiene todo el código fuente de la aplicación, código de la interfaz gráfica, clases auxiliares, etc. Inicialmente, Eclipse creará por nosotros el código básico de la pantalla (Activity) principal de la aplicación, siempre bajo la estructura del paquete java definido.
Figura 31 Carpeta src En nuestro proyecto en esta carpeta tenemos recopilados todos los códigos de cada pantalla. En la siguiente tabla se describen cada una de las pantallas y clases necesarias en nuestra aplicación. Nombre Clase
Descripción Clase necesaria para
AdminSQLiteOpenHelper.java
poder generar nuestra base de datos
BluethootActivity.java
Activity para inicializar el servicio Bluetooth
Página 43
Sistema de guía para personas invidentes a través de bluetooth Nombre Clase
Descripción Clase que genera el servicio dentro de la
BluetoothChatService.java
aplicación Android para poder utilizar el bluetooth del dispositivo Clase que no tiene asignada una ventana
ClaseDatos.java
donde podamos actuar. Con esta clase creamos una base de datos Pantalla donde indicamos a la aplicación
Pantalla_Activacion.java
que propiedad se debe activar o desactivar en la base de datos Pantalla que nos permite configurar las diferentes
Pantalla_calle_caracteristicas_cajero.java
características de cajero: Tipo Nombre Estado Pantalla que nos permite configurar los diferentes características de las
Pantalla_calle_caracteristicas_obras.java
obras: Tipo Duración Protecciones
Página 44
Sistema de guía para personas invidentes a través de bluetooth Nombre Clase
Descripción Pantalla que nos permite configurar los diferentes características de los
Pantalla_calle_caracteristicas_semaforo.java
semáforos: Estado Duración Distancia Pantalla que nos permite configurar a que distancias de semáforos
Pantalla_calle_distancia_semaforo.java
queremos que nos informe: Más de diez metros Menos de diez metros Menos de cinco metros Pantalla que nos permite configurar los tiempo de
Pantalla_calle_duracion_obras.java
duración de las obras: Un día Dos días Sin determinar Pantalla que nos permite configurar los tiempo de duración de los
Pantalla_calle_duracion_semaforo.java
semáforos: Un minuto Menos de un minuto Menos de treinta seg.
Página 45
Sistema de guía para personas invidentes a través de bluetooth Nombre Clase
Descripción Pantalla que nos permite configurar las diferentes
Pantalla_calle_estado_cajero.java
características de cajero: Funciona Averiado Otro Pantalla que nos permite configurar los diferentes estados de los
Pantalla_calle_estado_semaforo.java
semáforos: Funciona Averiado Otro Pantalla que nos permite configurar las diferentes
Pantalla_calle_nombre_cajero.java
nombres de cajero: Santander BBVA Otro Pantalla que nos permite configurar las diferentes características de las
Pantalla_calle_protecciones_obras.java
protecciones: Valla Zanja Andamio Pantalla que nos permite configurar las diferentes características del tipo
Pantalla_calle_tipo_cajero.java
de cajero: Interior Exterior Otros
Página 46
Sistema de guía para personas invidentes a través de bluetooth Nombre Clase
Descripción Pantalla que nos permite configurar los diferentes
Pantalla_calle_tipo_obras.java
tipos de obras: Edificio Calle Otros Pantalla que nos permite configurar los diferentes
Pantalla_Destino.java
tipos de destinos: Nombre Horario Incidencia Pantalla que nos permite configurar los diferentes
Pantalla_Estacion.java
tipos de estaciones: Nombre Horario Incidencia Pantalla que nos permite configurar los diferentes tipos horario de apertura
Pantalla_tipo_supermercado.java
en los supermercados: Ocho Doce Veinticuatro Pantalla que nos permite configurar las diferentes características de las
Pantalla_ubicacion_caracteristicas_farmacia.java
farmacias : Tipo Día laboral Horario
Página 47
Sistema de guía para personas invidentes a través de bluetooth Nombre Clase
Descripción Pantalla que nos permite configurar las diferentes características de los
Pantalla_ubicacion_caracteristicas_supermercado.java
supermercados : Tipo Día laboral Horario Pantalla que nos permite configurar las diferentes
Pantalla_ubicacion_día_laboral.java
jornadas de trabajo: Lunes a viernes Fines de semana Todos los días Pantalla que nos permite configurar los diferentes tipos horario de apertura
Pantalla_ubicacion_farmacia.java
en las farmacias: Ocho Doce Veinticuatro Pantalla que nos permite configurar los diferentes tipos horario de
Pantalla_ubicacion_horario.java
apertura: Mañana Tarde Todo el día
Página 48
Sistema de guía para personas invidentes a través de bluetooth Nombre Clase
Descripción Pantalla que nos permite configurar los diferentes tipos horario de apertura
Pantalla_ubicacion_tipo_farmacia.java
en las farmacias: Ocho Doce Veinticuatro Pantalla que nos permite configurar los diferentes
Pantalla_ubicacion_tipo_supermercado.java
tipos de supermercado: Vegetariano Nacional Internacional Pantalla que nos permite configurar los diferentes tipos de opciones en la
PantallaCalle.java
calle: Semáforo Obras Cajero Pantalla donde se nos permite elegir que servicio queremos
PantallaServicios.java
configurar: Transporte Calle Ubicación Pantalla donde configuramos las
PantallaTiempo.java
propiedades de tiempo: Último Siguiente Incidencia
Página 49
Sistema de guía para personas invidentes a través de bluetooth Nombre Clase
Descripción Pantalla que nos permite configurar los diferentes
PantallaTransporte.java
tipos de transporte : Metro Autobús Cercanías Pantalla donde nos permite elegir que factor queremos configurar en
PantallaTransporte2.java
los transportes: Tiempo Estación Destino Pantalla que nos permite configurar los diferentes
PantallaUbicacion.java
tipos de ubicaciones : Restaurantes Supermercados Farmacias Pantalla principal de inicio de aplicación. Aquí
Ventanas.java
se decide que acción se toma si lanzar o configurar.
Carpeta /res/ Contiene todos los ficheros de recursos necesarios para el proyecto: imágenes, vídeos, cadenas de texto, etc. Los diferentes tipos de recursos de deberán distribuir entre las siguientes carpetas:
/res/drawable/. Contienen las imágenes de la aplicación. Se puede dividir en /drawable‐ldpi, /drawable‐mdpi y /drawable‐hdpi para
Página 50
Sistema de guía para personas invidentes a través de bluetooth utilizar diferentes recursos dependiendo de la resolución del dispositivo.
/res/layout/. Contienen los ficheros de definición de las diferentes pantallas de la interfaz gráfica. Se puede dividir en /layout y /layout‐ land para definir distintos layouts dependiendo de la orientación del dispositivo. En nuestra aplicación vamos a definir los siguientes layouts: Descripcion Layouts activity_clase_datos.xml activity_connexion_bluetooth.xml activity_main.xml activity_pantalla__activacion.xml activity_pantalla__destino.xml activity_pantalla__estacion.xml activity_pantalla_calle_caracteristicas_cajero.xml activity_pantalla_calle_caracteristicas_obras.xml activity_pantalla_calle_caracteristicas_semaforo.xml activity_pantalla_calle_distancia_semaforo.xml activity_pantalla_calle_duracion_obras.xml activity_pantalla_calle_duracion_semaforo.xml activity_pantalla_calle_estado_cajero.xml activity_pantalla_calle_estado_semaforo.xml activity_pantalla_calle_nombre_cajero.xml activity_pantalla_calle_protecciones_obras.xml activity_pantalla_calle_tipo_cajero.xml activity_pantalla_calle_tipo_obras.xml activity_pantalla_ubicacion_caracteristicas.xml activity_pantalla_ubicacion_día_laboral.xml activity_pantalla_ubicacion_farmacia.xml activity_pantalla_ubicacion_horario.xml activity_pantalla_ubicacion_restaurante.xml activity_pantallla_ubicacion_supermercado.xml pantalla_ubicacion_tipo_farmacia.xml
Página 51
Sistema de guía para personas invidentes a través de bluetooth
pantallacalle.xml
pantallainicio.xml pantallametro.xml pantallaservicios.xml pantallatiempo.xml pantallatransporte.xml pantallatransporte2.xml pantallaubicacion.xml
/res/anim/. Contiene la definición de las animaciones utilizadas por la aplicación.
/res/menu/. Contiene la definición de los menús de la aplicación.
/res/values/. Contiene otros recursos de la aplicación como por ejemplo cadenas de texto (strings.xml), estilos (styles.xml), colores (colors.xml), etc.
/res/xml/. Contiene los ficheros XML utilizados por la aplicación.
/res/raw/. Contiene recursos adicionales, normalmente en formato distinto a XML, que no se incluyan en el resto de carpetas de recursos.
Figura 32 Carpeta res Carpeta /gen/ Contiene una serie de elementos de código generados automáticamente al compilar el proyecto. Cada vez que generamos nuestro proyecto, la maquinaria de compilación de Android genera por nosotros una serie de ficheros fuente en java dirigido al control de los recursos de la aplicación.
Página 52
Sistema de guía para personas invidentes a través de bluetooth
Figura 33 Carpeta gen El más importante es el que se puede observar en la imagen, el fichero R.java, y la clase R. Esta clase R contendrá en todo momento una serie de constantes con los IDs de todos los recursos de la aplicación incluidos en la carpeta /res/, de forma que podamos acceder fácilmente a estos recursos desde nuestro código a través de este dato. Carpeta /assets/ Contiene todos los demás ficheros auxiliares necesarios para la aplicación (y que se incluirán en su propio paquete), como por ejemplo ficheros de configuración, de datos, etc. La diferencia entre los recursos incluidos en la carpeta /res/raw/ y los incluidos en la carpeta /assets/ es que para los primeros se generará un ID en la clase R y se deberá acceder a ellos con los diferentes métodos de acceso a recursos. Para los segundos sin embargo no se generarán IDs y se podrá acceder a ellos por su ruta como a cualquier otro fichero del sistema. Usaremos uno u otro según las necesidades de nuestra aplicación. Fichero AndroidManifest.xml Contiene la definición en XML de los aspectos principales de la aplicación, como por ejemplo su identificación (nombre, versión, icono, …), sus componentes (pantallas, mensajes, …), o los permisos necesarios para su ejecución. Aparte de otras cosas, AndroidManifest.xml se encarga de :
Página 53
Sistema de guía para personas invidentes a través de bluetooth
Nombra el paquete JAVA. Cada paquete JAVA lleva un identificador único en la aplicación.
Describe cada uno de los componentes de la aplicación — activities, services y broadcast receivers junto con content providers de los que nuestra aplicación hace uso. Nombra las clases que implementan cada uno de sus componentes y publica sus posibles opciones. Si necesitas acceder a una Activity o un Intent, lo declaramos.
Determina que procesos implementa.
Declara los permisos que necesita nuestra aplicación.
Declara, así mismo, que permisos requieren otras partes para interactuar con nuestra aplicación.
Permite definir niveles mínimos y máximo de SDK en los que nuestra aplicación será compatible.
Lista las librerías que son enlazadas a nuestra aplicación.
En nuestra aplicación vamos a solicitar permisos para acceder a internet y tener acceso para activar el bluetooth del dispositivo. ‐‐> Permite a las
aplicaciones abrir sockets de red ‐‐> Permite que
las aplicaciones se conecten a dispositivos con Bluetooth emparejados ‐‐>
Permite a las aplicaciones para descubrir y emparejar dispositivos Bluetooth Otra opción que vamos a definir en nuestro archivo manifest será que todas las pantallas definidas en el layout solo van a tener una posición determinada, es decir no se podrá utilizar la opción de rotar la pantalla que viene predeterminada en la mayoría de los dispositivos móviles. Esto lo implementamos en el archivo manifest incluyendo el siguiente comando: android:screenOrientation="portrait"
Página 54
Sistema de guía para personas invidentes a través de bluetooth 3.1.3.1.2
Subir aplicación a Google Play
Una vez la aplicación esta depurada y sin errores el plugin de Eclipse nos proporciona la herramienta para generar la aplicación, que podremos descargar en nuestro dispositivo y se podrá instalar. Esta aplicación tiene la extensión “.apk”. Básicamente para generar esta aplicación se debe de rellenar los siguientes datos:
Alias: Nombre con el que queremos que se identifique
Password: clave para crear la aplicación
Confirm: Se debe de confirmar el password anterior
Validity(years):Este campo se debe de rellenar con un mínimo de 25 años
First and Last Name: Nombre del responsable del desarrollo
Organizational Unit and Organization: Empresa y unidad empresarial
City or Locality: Ciudad donde se hizo el desarrollo
State or Province: Ciudad donde se hizo el desarrollo
Country Code(XX):
Página 55
Sistema de guía para personas invidentes a través de bluetooth
Figura 34 Formulario para generar fichero .apk
Página 56
Sistema de guía para personas invidentes a través de bluetooth Una vez generada debemos de accede a nuestra cuenta como desarrolladores en la siguiente dirección: https://play.google.com/apps/publish/signup/ Para tener acceso debemos de pagar una cuota de 25$. Tendrás que rellenar la información de tu aplicación que se indica a continuación: Subir recursos: Archivo APK: El tamaño máximo admitido de un único archivo APK es 50 MB. Se puede utilizar archivos de expansión para subir recursos adicionales como, por ejemplo, gráficos. Si un único archivo APK no es suficiente para todos los dispositivos que se desean, se puede subir varios archivos APK en la misma entrada de aplicación para que cada uno se encargue de la configuración de un dispositivo diferente. Hay que tener en cuenta que los nombres de paquetes de los archivos de aplicaciones son únicos y permanentes, por lo que debes elegirlos con cuidado. Los nombres de paquetes no se pueden eliminar ni reutilizar en el futuro. Si se pierde tu almacén de claves, habrá que publicar la aplicación con un nuevo nombre de paquete y una nueva clave. También se debe actualizar la descripción de la aplicación original y eliminar su publicación. Borrador de archivo APK de aplicación Al subir un archivo APK, este se puede guardar como un borrador mientras editas el resto de aspectos de la lista. Habrá un botón para guardar el borrador en el cuadro de diálogo después de subir el archivo APK. Si se necesitara añadir una nueva versión del archivo APK, pero no quieres publicarla, accede de forma inmediata a Google Play, cambia al modo avanzado y guarda tu nuevo archivo APK como borrador. Capturas de pantalla Son obligatorias dos capturas de pantalla y se pueden utilizar otras seis de forma opcional. Especificación de detalles
Página 57
Sistema de guía para personas invidentes a través de bluetooth Idioma: sirve para indicar el idioma de tu aplicación. El idioma predeterminado es el inglés de EE.UU. La lista de idiomas irá aumentando a medida que los dispositivos con la tecnología de Android estén disponibles en más idiomas. Asimismo, se puede incluir traducciones del nombre y de la descripción de la aplicación para promocionarla para usuarios que hablen otros idiomas. Las traducciones se mostrarán en Google Play. Nombre: es el nombre de tu aplicación tal como te gustaría que apareciera en Google Play. Se puede añadir un nombre por idioma. Descripción: es la descripción de tu aplicación que se verá en Google Play. Utiliza la función de traducción para traducir la descripción de tu aplicación a otros idiomas. En este campo, puedes utilizar un máximo de 4.000 caracteres. Cambios recientes: la función de cambios recientes ofrece la oportunidad de añadir notas sobre los cambios específicos de la versión más reciente de tu aplicación. Se utilizara el campo de cambios recientes para informar a tus usuarios sobre los cambios que has hecho en la aplicación. Más información sobre la función de cambios recientes Texto promocional: es el texto situado junto al gráfico promocional en lugares destacados de Google Play. Tipo de aplicación: Google Play se divide en dos tipos principales de aplicaciones: Aplicaciones y Juegos. Categoría: Se debe elegir una categoría para la aplicación. Consulta más información sobre las categorías. Opciones de publicación Ubicaciones: Son las ubicaciones en las que se puede distribuir tus aplicaciones. No todas las ubicaciones de la lista actual tienen usuarios con dispositivos con la tecnología de Android. Se puede seleccionar ubicaciones de forma individual o la opción Todas las ubicaciones actuales y futuras. Esta opción significa que se añadirán más ubicaciones de distribución a medida que las vayamos habilitando para la aplicación. Nota: en este momento, solo puedes vender aplicaciones a usuarios que se encuentren en estas ubicaciones.
Página 58
Sistema de guía para personas invidentes a través de bluetooth Información de contacto Se debe seleccionar un canal de asistencia para tu aplicación (por ejemplo, sitio web, correo electrónico o teléfono). Los usuarios de Google Play verán esta información. Se puede seleccionar varios canales de asistencia. 3.1.3.1.3
Base de datos
Para la realización de este proyecto hemos implementado una pequeña base de datos donde iremos almacenando todos los registros que el usuario quiera que se tengan en cuenta mientras la aplicación está funcionando. En Android tenemos la posibilidad de almacenar esta información de tres maneras distintas:
Preferencias
Fichero
Base de datos SQLite
Decidimos utilizar el método de base de datos, ya que a nivel didáctico el uso de esta herramienta nos permite utilizar los conocimientos adquiridos durante la carrera y aplicarlos en un caso real. 3.1.3.1.4
SQLite
SQLite es una base de datos de código abierto. SQLite compatible con las funciones de base de datos relacionales estándar, como la sintaxis SQL, transacciones y declaraciones preparadas. La base de datos requiere poca memoria en tiempo de ejecución (aprox. 250 Kb), que hace que sea un buen candidato a ser incorporado en otros tiempos de ejecución.
SQLite está integrado en todos los dispositivos Android. Utilizando una base de datos SQLite en Android no requiere un procedimiento de configuración o administración de la base de datos.
Página 59
Sistema de guía para personas invidentes a través de bluetooth Sólo se tiene que definir las instrucciones SQL para crear y actualizar la base de datos.
El acceso a una base de datos SQLite implica el acceso al sistema de archivos. Esto puede ser lento. Por lo tanto, se recomienda llevar a cabo las operaciones de base de datos de forma asíncrona. 3.1.3.1.5
Estructura Base de datos
En nuestra base de datos vamos a crear una tabla de nombre “datos” donde almacenaremos los siguientes datos:
Código
Descripción
Acción
Estado
Frase
La base de datos se crea la primera vez que se lanza la aplicación, carga los datos desde un fichero de texto y queda instalada con todos los valores por defecto. Vamos a crear una tabla simple sin clave primaria, ya que en SQLite para Android esto no pude ser implementado y además la complejidad de esta base de datos no lo requiere. Dentro de la aplicación tenemos la posibilidad de añadir nuevos registros, actualizar, modificar y borrar.
Página 60
Sistema de guía para personas invidentes a través de bluetooth
3.2 Diseño C 3.2.1 Descripción La aplicación programada en C se usa básicamente para controlar las comunicaciones UART del micro y la lectura los datos recibidos por un puerto donde se encuentra, en este caso un sw de micro interruptores de 8bits. 3.2.2 Diagrama de bloques INICIO
INICIALIZAMOS PUERTOS
INICIALIZAMOS UART
LEEMOS PUERTO
ESCRIBIMOS DATO UART
Figura 35 Diagrama de flujo programa C en micro 3.2.3 Descripción del funcionamiento La programación del micro se basa en leer los datos que el usuario ha configurado en los microswitch para identificar un servicio. En un principio cada dispositivo solo podrá mandar un mensaje al mismo tiempo, aunque con un dispositivo puedas mandar hasta 128 mensajes distintos.
Página 61
Sistema de guía para personas invidentes a través de bluetooth Estos mensajes pueden ser redefinidos en cualquier momento ya que el dispositivo bluetooth manda códigos que serán identificados y decodificados por la aplicación móvil. Para cada caso y dependiendo de la aplicación móvil que tengamos activa en ese momento, un código puede significar una cosa u otra. Con esto conseguimos una independencia del hw con respecto al sw, lo cual nos permitiría que el diseño hw nos sirviera para cualquier entorno. Esta filosofía nos permitiría en un hipotético caso de uso masivo, abaratar el producto hw, ya que no necesitaríamos de versiones distintas para entornos distintos. El micro realiza una lectura de los microswitch cada minuto, con lo cual cada minuto enviara un código que será identificado por los móviles que están en su radio de acción. En el ANEXO D se puede ver el código que corresponde con la aplicación C descargada en el micro. Para el desarrollo de la aplicación se ha utilizado el IDE que Silabs nos ofrece así como el USB debuger, que mediante Jtag podemos realizar la descarga y depuración del programa.
Página 62
Sistema de guía para personas invidentes a través de bluetooth
4
Presupuesto
Durante la realización de este proyecto no se parito de ningún coste objetivo. Partiendo de esta base presentamos a continuación una tabla donde se describen el costo de una unidad y lo que costarían 100und COMPONENTE
VALOR
C1
4.7uF
1210
148-070
0,80 €
0,64 €
C2
100n
1210
698‐3780
0,43 €
0,28 €
C3
4.7uF
1210
148-070
0,80 €
0,64 €
C4
100n
1210
698‐3780
0,43 €
0,28 €
C5
20pF
805
698‐3358
0,15 €
0,08 €
C6
20pF
805
698‐3358
0,15 €
0,08 €
C9
22uF
5x6.3
737‐9722
0,18 €
0,15 €
C10
100n
1210
698‐3780
0,43 €
0,28 €
C11
47uF
6.3x5.4
628‐3992
0,23 €
0,20 €
C12
100n
1210
698‐3780
0,43 €
0,28 €
C13
10uF
5x6.3
737‐9659
0,09 €
0,07 €
C14
22uF
5x6.3
737‐9722
0,18 €
0,15 €
C15
100n
1210
698‐3780
0,43 €
0,28 €
C16
100n
1210
698‐3780
0,43 €
0,28 €
C17
1uF
1812
500‐2405
2,99 €
2,30 €
D3
Schottky
DO‐214AC
764‐5543
0,23 €
0,20 €
D4
Schottky
DO‐214AC
764‐5543
0,23 €
0,20 €
R1
10MΩ
603
678‐9692
0,02 €
0,02 €
R2
330Ω
2512
224‐0345
0,18 €
0,09 €
R3
NM
0€
0€
R4
60K4Ω
0,33 €
0,25 €
R5
NM
0€
0€
R6
0Ω
2512
683‐6552
0,60 €
0,51 €
R7
390
2512
224‐0351
0,24 €
0,21 €
R8
100
1206
223‐2120
0,02 €
0,02 €
R9
NM
0€
0€
R10
100
1206
223‐2120
0,02 €
0,02 €
R11
100
1206
223‐2120
0,02 €
0,02 €
HUELLA REFERENCIA precio 1und precio 100und
805
708‐6666
Página 63
Sistema de guía para personas invidentes a través de bluetooth R12
100
1206
223‐2120
0,02 €
0,02 €
R13
100
1206
223‐2120
0,02 €
0,02 €
R14
100
1206
223‐2120
0,02 €
0,02 €
R15
100
1206
223‐2120
0,02 €
0,02 €
R16
100
1206
223‐2120
0,02 €
0,02 €
R17
1KΩ
2512
224‐0395
0,09 €
0,08 €
R18
1KΩ
2512
224‐0395
0,09 €
0,08 €
R19
1KΩ
2512
224‐0395
0,09 €
0,08 €
R20
0Ω
2512
683‐6552
0,60 €
0,51 €
R21
NM
0€
0€
R22
1KΩ
2512
224‐0395
0,09 €
0,08 €
R23
1KΩ
2512
224‐0395
0,09 €
0,08 €
R24
1KΩ
2512
224‐0395
0,09 €
0,08 €
R25
1KΩ
2512
224‐0395
0,09 €
0,08 €
R26
1KΩ
2512
224‐0395
0,09 €
0,08 €
R27
1KΩ
2512
224‐0395
0,09 €
0,08 €
R28
1KΩ
2512
224‐0395
0,09 €
0,08 €
R29
1KΩ
2512
224‐0395
0,09 €
0,08 €
U1
3,3V
TO252
710‐6225
0,30 €
0,23 €
U2
5V
DIP SMD
706‐3963
9,77 €
9,07 €
U3
MICRO
DIP28
C8051F410
10,00 €
8,00 €
JP1
ALIMENT
476‐157
3,29 €
2,89 €
JP2
BLUETOOTH
2x10
673‐7540
2,46 €
2,12 €
JP3
DEBUG
2x5
673‐7332
0,84 €
0,70 €
SW1
SW1
SMD
378‐6325
0,38 €
0,29 €
SW2
SW2
SMD
378‐6325
0,38 €
0,29 €
SW3
SW8
SWx8
534‐764
1,67 €
1,34 €
X1
X1
22184000
547‐6569
0,46 €
0,35 €
PCB
10,00 €
3,00 €
Modulo Bluetooth
45,00 €
35,00 €
TOTAL
96,24 €
72,27 €
Página 64
Sistema de guía para personas invidentes a través de bluetooth
5
Conclusiones
El presente proyecto ha sido diseñado con herramientas de última tecnología y teniendo como uno de los objetivos básicos, presentarse ante los diversos actores, como un sistema de manejo sencillo y amigable. El producto final cumple con esta premisa. También dichas herramientas permitieron cumplir eficientemente con el objetivo principal que ha sido el facilitar a personas con alguna discapacidad tanto física como mental de una aplicación para dotarles de capacidades que antes no disponían permitiendo que se desenvuelvan en un entorno hostil para ellos. Java(Android), el lenguaje elegido para el desarrollo de la aplicación ha sido muy bueno para lograr los objetivos planteados, por su facilidad de uso, sus librerías ya implementadas, etc. Aunque se ha comprobado que no hay que conocer en detalle un lenguaje, sino que sabiendo lenguajes orientados a objetos como los aprendidos en la universidad, uno es capaz de manejar otros lenguajes, no hay duda que una vez familiarizados con Java los tiempos de programación se vieron reducidos enormemente. Java brinda enormes facilidades al programador. Por ejemplo al estar tan extendido existe una comunidad de Java muy grande que escribe y comenta sus problemas por Internet favoreciendo la resolución de problemas. Por otro lado al ser tan extenso el mundo Java uno no pararía de adentrarse nunca por completo en éste lenguaje. Las APIs de Java(Android) me han proporcionado un acceso rápido y sencillo para conocer los métodos de cada objeto con los que he trabajado en el desarrollo de la aplicación. Trabajar con Eclipse no ha sido fácil al comienzo. Eclipse es un entorno integrado libre, en el que aún queda por desarrollar. A lo largo de la realización del proyecto la versión de Eclipse ha cambiado de Release. La última Release utilizada ha sido 4.2.1. La utilización de base de datos ha sido un ejercicio de aplicación de conocimientos adquiridos en la carrera, ya que realmente la pequeña base de datos utilizada en este
Página 65
Sistema de guía para personas invidentes a través de bluetooth proyecto conlleva un sobre esfuerzo, que para la posible expansión de las funcionalidades de la aplicación resultara de gran utilidad el tenerla ya implementada.. La arquitectura implementada en la aplicación ha sido estudiada detalladamente. Ese estudio previo proporcionó una arquitectura flexible capaz de incorporar nuevas funcionalidades con facilidad, y sobretodo capaz de aceptar cambios. A nivel HW el desarrollo de una tarjeta capaz de intercomunicarse con un elemento comercial y de proveer los medios físicos para interactuar con el micro así como con un elemento externo como es en nuestro caso un Smartphone, cumple con las expectativas creadas al inicio del proyecto. La utilización de herramientas profesionales para el diseño de la PCB, como ha sido la utilización de Altium, así como intervenir en todas las fases de producción (concepción, diseño, fabricación y test), ha servido para ver claramente en que aspectos se deben de prestar mayor atención en cada fase. Como por ejemplo en la elección de componentes y fabricante, teniendo en cuenta precios y tiempos de entrega, que llevados al mundo profesional serán los que dictaminen si un proyecto es viable o no.
Página 66
Sistema de guía para personas invidentes a través de bluetooth
6
Referencias
Referencia 1: http://www.eclipse.org/downloads Referencia 2: http://developer.android.com/sdk/index.html Referencia 3: http://www.pcbcart.com/ Referencia 4: http://developer.android.com/sdk/index.html
7
Bibliografía
Learning Android. O´Really. Marco Gargenta. Estados Unidos Mar.2011
Beginning Android™ Application Development. Published by Wiley Publishing, Inc.Copyright © 2011 by Wiley Publishing, Inc., Indianapolis, Indiana
Android Programming Tutorials by Mark L. Murphy. Copyright © 2009‐2011 Printed in the United States of America
Página 67
Sistema de guía para personas invidentes a través de bluetooth
ANEXO A
Figura 36 Especificaciones DC/DC R783.3‐1.0A SMD
Página 68
Sistema de guía para personas invidentes a través de bluetooth
Figura 37 Dimensiones DC/DC R783.3‐1.0A SMD
Figura 38 Caracteristicas del D0‐214AC
Página 69
Sistema de guía para personas invidentes a través de bluetooth
Figura 39 Dimensiones de Do‐214AC
Página 70
Sistema de guía para personas invidentes a través de bluetooth
Figura 40 Especificaciones regulador lineal AP117
Figura 41 Encapsulado AP117
Página 71
ANEXO B
Figura 42 Esquema de Bloques
Sistema de guía para personas invidentes a través de bluetooth
Página 72
Sistema de guía para personas invidentes a través de bluetooth
Figura 43 Fuente alimentación
Página 73
Sistema de guía para personas invidentes a través de bluetooth
Figura 44 Debug
Página 74
Sistema de guía para personas invidentes a través de bluetooth
Figura 45 Módulo Bluetooth
Página 75
Sistema de guía para personas invidentes a través de bluetooth
Figura 46 Micro‐switch
Página 76
ANEXO C
Configuración de Eclipse y Android En este anexo vamos a dar una guía para la instalación del IDE de desarrollo ANDROID SDK, necesario para la realización de este proyecto.
Paso 1: Requerimientos de Android
Sistemas operativos soportados:
Windows XP (32‐bit), Vista (32‐ or 64‐bit), or Windows 7 (32‐ or 64‐bit)
Mac OS X 10.5.8 or later (x86 only)
Linux (tested on Ubuntu Linux, Lucid Lynx) o
GNU C Library (glibc) 2.7 or later is required.
o
On Ubuntu Linux, version 8.04 or later is required.
o
64‐bit distributions must be capable of running 32‐bit applications. For information about how to add support for 32‐bit applications, see the Ubuntu Linux installation notes.
Requerimientos Hardware: Android requiere de almacenamiento en disco para todos sus componentes que deben ser elegidos al instalarlo. La siguiente tabla proporciona una idea aproximada de las necesidades de espacio de disco a esperar, sobre la base de los componentes que va a utilizar.
Figura 47 Requerimientos Hardware
Sistema de guía para personas invidentes a través de bluetooth
Página 77
Sistema de guía para personas invidentes a través de bluetooth
Paso 2: Descarga y Instalación de Eclipse Si aún no se tiene instalado Eclipse, se puede descargar desde la dirección mostrada en la
Referencia 1.Se recomienda descargar la versión "Eclipse IDE for Java Developers". La instalación consiste simplemente en descomprimir el zip en la ubicación deseada.
Paso 3: Descargar el SDK de Android.
Referencia 2 Paso 4: Descargar El Plugin Android Para Eclipse.
Google pone a disposición de los desarrolladores un plugin para Eclipse llamado Android Development Tools (ADT) que facilita en gran medida el desarrollo de aplicaciones para la plataforma. Se debe de descargar mediante las opciones de actualización de Eclipse, siguiendo estos pasos:
1) Ejecutar Eclipse 2) Dirigirse a "Help > Install new software" 3) En el cuadro que aparece, hacer click a "Add.." que está en el lado derecho. 4) En el nuevo cuadro Ingresar "ADT Plugin" en NAME y en LOCATION ingresar este link: “https://dl-ssl.google.com/android/eclipse/”, click OK. 5) En el cuadro de diálogo de software disponible, se debe seleccionar e instalar el paquete completo Developer Tools, formado por Android DDMS y Android Development Tools. 6) En la siguiente ventana, se vera una lista de las herramientas para ser descargadas. Hacer clic en Siguiente. 7) Lea y acepte los acuerdos de licencia, a continuación, se debe hacer clic en Finalizar 8) Cuando se finalice la instalación, reinicie Eclipse. Paso 5: Configurar el Plugin ADT.
Página 78
Sistema de guía para personas invidentes a través de bluetooth Una vez que se haya descargado correctamente ADT como se describe anteriormente, el siguiente paso es modificar sus preferencias de ADT en Eclipse para que apunte al directorio de Android SDK, debemos seguir los siguientes pasos. 1)
Abrir Eclipse, seleccionar Windows> Preferences.
2)
Seleccione Android en el panel izquierdo.
3)
Se debe de agregar la ruta de nuestro SDK. Hacer click en Browse y localizar nuestra carpeta "android-sdk-windows"
4)
Hacer click en Apply, y despues en OK.
Figura 48 Plugin ADT Paso 6: Descargar los targets necesarios. Además del SDK de Android comentado pasos atrás, también debemos descargar los llamados SDK Targets de Android, que no son más que las librerías necesarias para desarrollar en cada una de las versiones concretas de Android. Para ello, debemos de seguir los siguientes pasos:
1)
Abrir Eclipse, acceder a " Windows> Android SDK and AVD Manager".
2)
En el lado izquierdo click a "Available Packages" y seleccionar e instalar todos los paquetes deseados.
Página 79
Sistema de guía para personas invidentes a través de bluetooth
Figura 49 Paquetes Disponibles
(En la imagen, se muestra la seccion "Installed Packages", como ya se instalaron todos del "Available Package", se pasaron ahi.)
Página 80
Sistema de guía para personas invidentes a través de bluetooth
Paso 7: Crear y Configurar un AVD(Emulador de Android)
Figura 50 Pantalla AVD
Todos los proyectos que se hacen para Android se tendrán que ejecutar desde el emulador que proporciona Google, antes de probarlo en un teléfono. Ya que es 'más' rápido instalar la aplicación en él, que en el smartphone. Antes de poder lanzar el emulador, se debe crear. Para crear un AVD desde Eclipse debemos seguir los siguientes pasos: 1) En la opcion 'Window' → 'Android SDK and AVD Manager' 2) En la pestaña 'Virtual Devices', y seleccionamos 'New' 3) Nos aparece un cuadro de diálogo para rellenar los datos de configuración del teléfono virtual. i. En el cuadro 'Name' se le da un nombre al teléfono, por ejemplo 'prueba'. ii. . En el desplegable 'Target' se debe elegir la versión de Android, como la 2.2. que vamos a incluir en el teléfono. Todos los smartphones tiene una versión diferente según el modelo y la compañía que suministra el servicio. En este caso, lo ideal es
Página 81
Sistema de guía para personas invidentes a través de bluetooth elegir la plataforma que no sea la más nueva, pero tampoco muy antigua iii. El resto de campos se pueden ignorar iv. Debemos elegir la 'SD Card' : v. La primera opción es para especificar el tamaño de la Tarjeta SD vi. La segunda opción es para seleccionar una tarjeta ya creada anteriormente. vii. El 'Skin' es el envoltorio de la pantalla en este caso. Nos da a elegir varios modelos de teléfono estándar para realizar las pruebas en distintas resoluciones viii. por último podremos elegir el hardware que va a incorporar el teléfono. Aunque no podamos acceder a todas las funcionalidades de un teléfono físico. 4) Le damos al botón 'Create AVD', y se nos creará el teléfono virtual. Daremos al botón de 'Start' para ver la emulación del teléfono móvil virtual.
Página 82
Sistema de guía para personas invidentes a través de bluetooth
ANEXO D #include #include #include // SFR declarations #define XTAL 24500000 //Frecuencia Oscilador CPU #define baudrate 57600 //Velocidad de comunicación #define OLEN 8 //Tamaño del buffer de transmisión unsigned char ostart; // Índice de comienzo del buffer de transmisión unsigned char oend; // Índice de final del buffer de transmisión char idata outbuf[OLEN]; // Almacén para el buffer de transmisión #define ILEN 8 //Tamaño del buffer de recepción unsigned char istart; //Indice de comienzo del buffer de transmisión unsigned char iend; //Indice de final de transmisión char idata inbuf[ILEN]; //Almacén para el buffer de recepción bit sendfull; //Bandera para indicar buffer de transmisión lleno bit sendactive; //Bandera para indicar transmisión activa unsigned char dato; //para leer una parte del P2 signed char datoP0; sbit puerto = P0^7; sbit puerto6 = P2^6; sbit puerto5 = P2^5; sbit puerto4 = P2^4; sbit puerto3 = P2^3; sbit puerto2 = P2^2; sbit puerto1 = P2^1; sbit puerto0 = P2^0;
Página 83
Sistema de guía para personas invidentes a través de bluetooth /* *Rutina de Servicio de interrupción Serie */ static void com_irs (void) interrupt 4 using 1 {
char c;
/*‐‐‐‐‐‐‐‐‐‐‐‐Interrupción dato recibido‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐*/
if(RI0)
{
c=SBUF0;
RI0=0;
//limpiamos la interrupcion
if(istart + ILEN!= iend)
{
}
}
//Caracter leido
inbuf[iend++ & (ILEN‐1)] = c; //carácter dentro del buffer
/*‐‐‐‐‐‐‐‐‐‐‐‐Interrupción dato enviado‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐*/
if(TI0 != 0)
{
TI0 = 0;
if(ostart != oend) //si hay caracter en el buffer
{
SBUF0=outbuf[ostart++ & (OLEN‐1)]; // transmitir carater
sendfull=0; //limpiamos el flag
}
else
{
sendactive=0;
}
}
//limpiamos la interrupcion
//limpiamos la bandera
//si todos los caracteres han sido enviados
} /* *Funcion para inicialzar el puerto serie y el baudrate de la UART
Página 84
Sistema de guía para personas invidentes a través de bluetooth */
void com_initialize(void) {
istart = 0;
iend = 0;
ostart = 0;
oend = 0;
sendactive = 0;
sendfull = 0;
PCON |=0x80;
TMOD |=0x20; //Ponemos el timer 1 en MODE 2
TH1 = (unsigned char) (256‐(XTAL / (16L*12L*baudrate)));
TR1 = 1;
SCON0 = 0x50;
//puerto serie MODE 1,habilitamos la recepcion serie
ES0 = 1;
}
//limpiamos las banderas
//Configuramos el tiemer 1 como genrador del baud rate
//0x80=SMOD;ponemos el baud rate como doble
//arrancamos el timer 1
//Habilitamos la interrupcion serie
/* * putbuf: Escribimos un caracter en SBUF o transmitimos */
void putbuf( unsigned char c) {
if(!sendfull)
//transmitimos si el buffer no esta
//si el transmisor no está activo
//comenzamos la transmisión
lleno
{
if(!sendactive)
{
sendactive = 1;
SBUF0 = c;
}
else
{
Página 85
Sistema de guía para personas invidentes a través de bluetooth
ES0=0;
//des‐habilitamos la interrupción del
puerto serie durante la actualización
outbuf[oend++ & (OLEN‐1)] = c; //ponemos un carácter en el buffer de
transmision
if(((oend ^ ostart) &(OLEN‐1)) == 0)
{
}
ES0 = 1;
}
}
sendfull = 1;
} void PORT_Init (void) { P2MDOUT |= 0x7F; // Enable UTX as push‐pull output P0MDOUT &= 0x90; P2MDIN |= 0x7F; P0MDIN |= 0x90; XBR0 = 0x01; // Enable UART on P0.4(TX) and P0.5(RX) XBR1 = 0x40; // Enable crossbar and weak pull‐ups } void SYSCLK_Init (void) { TMOD = 0x20; CKCON = 0x08; TH1 = 0x2B; } void retardo(unsigned int i) {
unsigned int s;
Página 86
Sistema de guía para personas invidentes a través de bluetooth
for(s=0;s