Академический Документы
Профессиональный Документы
Культура Документы
Facultad de Ingeniera
Universidad de Deusto
Ingeniaritza Fakultatea
Deustuko Unibertsitatea
Deusto
Facultad de Ingeniera
Universidad de Deusto
Ingeniaritza Fakultatea
Deustuko Unibertsitatea
Resumen
El proyecto Voice Aided Vision (VAV), en castellano, Visin Asistida por Voz, define el
diseo y la implementacin de un sistema emisor-receptor, que tiene por objeto
transmitir informacin valiosa para usuarios con deficiencias visuales. El objetivo
principal del sistema ser informar al usuario, mediante voz, de la localizacin de un
semforo, su estado y el tiempo que resta para que ste cambie de color. Asimismo,
este sistema permite al usuario identificar puntos de inters como pueden ser
dependencias en el interior de un edificio, accesos a comercios y servicios pblicos... o
lugares que puedan entraar peligro. Adems, el dispositivo receptor dispone de un
sensor de distancia ultrasnico con el fin de detectar obstculos en las proximidades del
usuario.
Una Raspberry Pi (placa computacional) y un adaptador USB Bluetooth son los
elementos hardware principales en los que se basa el proyecto. El adaptador USB
Bluetooth proporciona la comunicacin entre el emisor y el receptor mientras que la
Raspberry Pi es la encargada de la gestin de la informacin y las conexiones.
Ambos elementos son hardware de bajo coste, ya que el proyecto tiene vocacin de ser
accesible a todo tipo de usuarios, lo cual facilita tambin, que las entidades pblicas y
privadas puedan mostrar inters por la implantacin del sistema, dando as un paso ms
hacia la construccin de una Smartcity.
El proyecto VAV mejora la autonoma y la capacidad de identificacin del entorno por el
que se mueve el usuario con deficiencia visual, redundando en su calidad de vida.
Descriptores
Visin Asistida por Voz
Bluetooth
Sensor de distancia
Raspberry Pi
Semforo
iii
ndice de Contenido
1.
Introduccin............................................................................................................................ 1
2.
Antecedentes ......................................................................................................................... 5
2.1
2.2
2.3
2.3.1
2.4
Sistemas para ayudar a los invidentes a cruzar la calle implantados en ciudades
espaolas. ................................................................................................................................. 7
2.4.1
Bilbao......................................................................................................................... 7
2.4.2
Vigo ........................................................................................................................... 8
2.4.3
Elche .......................................................................................................................... 8
2.5
2.5.1
2.5.2
2.6
2.6.1
2.6.2
2.7
3.
2.7.1
2.7.2
Integracin del dispositivo emisor del proyecto VAV en un semforo comn ........ 31
Justificacin.......................................................................................................................... 33
3.1
Debilidades .................................................................................................................. 33
3.2
Amenazas ................................................................................................................... 33
3.3
Fortalezas .................................................................................................................... 34
3.4
Oportunidades ............................................................................................................. 34
3.4.1
3.4.2
3.4.3
Creciente uso de dispositivos mviles por parte de toda la poblacin, incluidos los
5.
6.
Objetivos ...................................................................................................................... 37
4.2
Alcance ........................................................................................................................ 37
Metodologa .......................................................................................................................... 39
5.1
5.2
5.3
5.4
5.5
5.6
El emisor .................................................................................................................. 43
6.1.2
El receptor ............................................................................................................... 45
6.2
vi
Desarrollo .................................................................................................................... 46
6.2.1
6.2.2
6.2.3
7.
6.2.4
6.2.5
Resultados............................................................................................................. 104
6.2.6
6.2.7
8.
9.
9.2
9.2.1
9.2.2
9.2.3
9.2.4
10.
10.1
10.2
10.3
10.4
10.5
10.6
10.7
11.
Anexos........................................................................................................................... 125
11.1
11.2
vii
11.3
11.4
11.5
11.6
11.7
viii
ndice de diagramas
Diagrama 1: regulador semafrico genrico ............................................................................... 28
Diagrama 2: interruptores magnetotrmicos y diferencial monobloc .......................................... 29
Diagrama 3: elementos de Sistema VAV e interrelacin de los mismos .................................... 43
Diagrama 4: conexin Bluetooth con el perfil GAVDP ................................................................ 46
Diagrama 5: modelo del perfil GAVDP........................................................................................ 47
Diagrama 6: estados del dispositivo emisor................................................................................ 49
Diagrama 7: visin general del dispositivo emisor de tipo semforo .......................................... 51
Diagrama 8: importacin de libreras para el emisor del tipo "Semforo .................................. 52
Diagrama 9: declaracin de variables en el emisor del tipo "Semforo" .................................... 53
Diagrama 10: bsqueda de dispositivos receptores en el emisor de tipo "Semforo" ............... 54
Diagrama 11: impresin en pantalla del resultado de la bsqueda ............................................ 54
Diagrama 12: apertura y lectura de ficheros en el emisor del tipo "Semforo .......................... 55
Diagrama 13: creacin del socket y espera de recepcin de conexin en el emisor del tipo
"semforo" ................................................................................................................................... 55
Diagrama 14: determinacin de si el receptor est cerca o no en el emisor del tipo "Semforo"
..................................................................................................................................................... 56
Diagrama 15: envo de mensajes dependiendo de la potencia de la conexin en el emisor del
tipo Semforo .............................................................................................................................. 57
Diagrama 16: anlisis del tiempo restante para que el semforo cambie de estado ................. 58
Diagrama 17: espera de recepcin de confirmacin de reproduccin en el dispositivo receptor
..................................................................................................................................................... 59
Diagrama 18: explicacin general del emisor del tipo "Ascensor" .............................................. 60
Diagrama 19: importacin de libreras necesarias en el emisor del tipo "Ascensor" .................. 61
Diagrama 20: declaracin de variables en el emisor del tipo "Ascensor ................................... 62
Diagrama 21: bsqueda de dispositivos receptores en el emisor del tipo "Ascensor ............... 62
ix
Diagrama 22: impresin en pantalla del resultado de la bsqueda en el emisor del tipo "Ascensor"
..................................................................................................................................................... 63
Diagrama 23: creacin de socket y establecimiento de la conexin en el emisor del tipo
"Ascensor ................................................................................................................................... 63
Diagrama 24: determinacin de si el receptor est lo suficintemente cerca o no en el el emisor
de tipo "Ascensor" ....................................................................................................................... 64
Diagrama 25: envo de mensaje Bluetooth dependiendo de la posicin del receptor y espera de
confirmacin de reproduccin ..................................................................................................... 65
Diagrama 26: explicacin general del dispositivo emisor del tipo "Dependencia" ...................... 67
Diagrama 27: importacin de libreras en el emisor del tipo "Dependecia" ................................ 68
Diagrama 28: declaracin de variables en el emisor del tipo "Dependencia" ............................. 69
Diagrama 29: declaracin de variables en el emisor del tipo "Dependencia" ............................. 70
Diagrama 30: impresin en pantalla del resultado de la bsqueda en el emisor del tipo
"Dependecia" ............................................................................................................................... 70
Diagrama 31: creacin de socket y peticin de conexin en el emisor del tipo "Dependecia" ... 71
Diagrama 32: determinacin de si el receptor est lo suficientemente cerca o no en el emisor del
tipo "Dependecia" ........................................................................................................................ 72
Diagrama 33: envo de mensajes dependiendo de la distancia del receptor en el emisor del tipo
"Dependecia" ............................................................................................................................... 73
Diagrama 34: explicacin general del emisor del tipo "Obstculo" ............................................. 75
Diagrama 35: importacin de libreras en el emisor del tipo "Obstculo" ................................... 76
Diagrama 36: declaracin de variables en el emisor del tipo "Obstculo" .................................. 77
Diagrama 37: bsqueda de dispositivo receptor en el emisor del tipo "Obstculo" .................... 77
Diagrama 38: impresin en pantalla del resultado de la bsqueda en el emisor del tipo
"Obstculo" .................................................................................................................................. 78
Diagrama 39: creacin de socket y peticin de conexin en el emisor del tipo "Obstculo" ...... 78
Diagrama 40: determinacin de si el receptor est lo suficientemente cerca o no en el emisor del
tipo "Obstculo" ........................................................................................................................... 79
Diagrama 41: envo de mensajes segn la distancia del receptor en el emisor del tipo "Obstculo"
..................................................................................................................................................... 80
Diagrama 42: estados del dispositivo receptor ........................................................................... 81
Diagrama 43: estados del receptor en modo de deteccin de obstculos. ................................ 82
Diagrama 44: explicacin general del dispositivo receptor ......................................................... 83
Diagrama 45: importacin de libreras en el dispositivo receptor ............................................... 84
Diagrama 46: configuracin de los pines GPIO en el dispositivo receptor ................................. 85
Diagrama 47: establecimiento del dispositivo receptor como descubrible ................................. 85
Diagrama 48: definicin de la funcin semaforo () ..................................................................... 86
Diagrama 49: guardado y reproduccin de los mensajes en la funcin semaforo() .................. 87
Diagrama 50: definicin de la funcin ascensor() ....................................................................... 87
Diagrama 51: guardado y reproduccin de los mensajes en la funcin ascensor() ................... 88
Diagrama 52: definicin de la funcin obstaculo() ...................................................................... 89
Diagrama 53: guardado y reproduccin de los mensajes en la funcin obstaculo() .................. 90
Diagrama 54: definicin de la funcin dependecia() ................................................................... 91
Diagrama 55: guardado y reproduccin de los mensajes en la funcin dependecia() ............... 92
Diagrama 56: definicin de identificadores en dispositivo receptor ............................................ 93
Diagrama 57: aceptacin de conexin del emisor y espera de recepcin del identificador de tipo
de dispositivo ............................................................................................................................... 94
Diagrama 58: explicacin general de la funcin de reseteo ....................................................... 95
Diagrama 59: explicacin general de la funcin de deteccin de obstculos del dispositivo
receptor ....................................................................................................................................... 96
Diagrama 60: importacin de libreras en la funcin de deteccin de obstculos en el dispositivo
receptor ....................................................................................................................................... 97
Diagrama 61: establecimiento de la funcin de los pines GPIO del dispositivo receptor ........... 98
Diagrama 62: explicacin de cmo se determina la distancia utilizando un sensor de distancia
ultrasnico ................................................................................................................................... 99
xi
Diagrama 63: envo de un mensaje u otro dependiendo la distancia del objeto detectado ..... 101
xii
ndice de Tablas
Tabla 1: aspectos destacables y carencias de las ayudas para cruzar la calle en la ciudad de
Bilbao ............................................................................................................................................ 7
Tabla 2: aspectos destacables y carencias de las ayudas para cruzar la calle en la ciudad de
Vigo ............................................................................................................................................... 8
Tabla 3: aspectos destacables y carencias de las ayudas para cruzar la calle en la ciudad de
Elche.............................................................................................................................................. 9
Tabla 4: aspectos destacables y carencias de Walking Green Android ..................................... 11
Tabla 5: aspectos destacables y carencias del proyecto InMoBS .............................................. 12
Tabla 6: comparativa entre Bluetooth y Wi-Fi ............................................................................. 18
Tabla 7: diagrama de Gantt del Proyecto ................................................................................. 114
Tabla 8: presupuesto de materiales del Proyecto ..................................................................... 116
Tabla 9: gastos de personal del Proyecto ................................................................................. 116
xiii
xiv
ndice de Ilustraciones
Ilustracin 1: Esquema de red Wi-Fi ........................................................................................... 15
Ilustracin 2: Raspberry Pi 2 Model B ......................................................................................... 21
Ilustracin 3: esquema de la Raspberry Pi 2 Model B ................................................................ 22
Ilustracin 4: Arduino UNO ......................................................................................................... 24
Ilustracin 5: esquema de Arduino UNO..................................................................................... 25
Ilustracin 6: armario donde se encuentra la inteligencia de los semforos .............................. 27
Ilustracin 7: dispositivo emisor del sitema VAV conectado a un simulador de semforo ......... 44
Ilustracin 8: dispositivo emisor VAV .......................................................................................... 44
Ilustracin 9: dispositivo receptor del Sistema VAV .................................................................... 45
Ilustracin 10: detalle del dispositivo receptor del Sistema VAV (botn de reseteo) ................ 45
Ilustracin 11: prueba de campo. Utilizando el simulador de semforo en una escenario real 107
Ilustracin 12: prueba de campo junto a un semforo del Ayuntamiento de Bilbao ................. 107
Ilustracin 13: distancias entre los semforo de la interseccin de Gran Va con Almeda Urquijo
y Alameda Mazarredo ............................................................................................................... 108
Ilustracin 14: Redes "mesh" aplicadas a una Smartcity .......................................................... 119
xv
1. INTRODUCCIN
En la presente memoria se detallan los procedimientos y recursos empleados en el
diseo de un sistema de asistencia a personas con deficiencias visuales. Es el trabajo
que cierra un ciclo de formacin universitaria y que pretende demostrar que la formacin
recibida es suficientemente madura como para tener valor profesional y social.
Al sistema creado se le ha dado la denominacin Voice Aided Vision (VAV), que en
castellano significa Visin Asistida por Voz, y que da idea ya desde el comienzo de este
documento sobre la utilidad del mismo.
Se ha creado un logotipo que expresa de una manera
visual la finalidad del proyecto. Por un lado se expresa
mediante unas ondas que el proyecto se basa en
telecomunicacin. Por otro lado, los colores rojo y
verde representan el origen de este proyecto, que tena como referente los semforos
aunque en el desarrollo se ha ampliado a otras funcionalidades.
A lo largo de este documento se detallarn profusamente los diferentes pasos dados,
los muchos esfuerzos, pruebas exitosas algunas y otras no tanto, que se han realizado.
Se aportarn evidencias documentales, grficos y
diagramas
INTRODUCCIN
INTRODUCCIN
2. ANTECEDENTES
El crecimiento desmesurado de las tecnologas ha afectado a nuestra vida de una forma
considerable, en gran medida por la evolucin de las tecnologas mviles. En torno al
ao 2000, las PDA1 y los primeros Smartphones2 se hicieron notar y desde aquel
entonces la usabilidad y utilidad de estas tecnologas ha aumentado exponencialmente.
ANTECEDENTES
2.3.1
Bilbao
En el caso de Bilbao, todos los pasos de cebra tienen un embaldosado con sobre
relieves, para que al ser pisados, los ciegos sepan que se encuentran ante un paso de
peatones. No obstante, este tipo de baldosas puede resultar molesto cuando la suela
del zapato que se lleva es fina y lo que es mucho ms importante, son potencialmente
peligrosas cuando estn mojadas, ya que debido a los sobre relieves la superficie de
agarre es mucho menor. A todo lo anterior habra que aadir que este sistema de
embaldosado es caro tanto en su implantacin como en su mantenimiento.
Adems algunos de los semforos disponen de un sistema de sonido que advierte
mediante una seal sonora que el semforo se encuentra en verde. Este sistema es
activado por el propio invidente. Sin embargo, el sonido que emite el semforo, pese a
resultar de gran ayuda para la persona con problemas de visin, es molesto para el resto
de viandantes y vecinos de la zona.
Destacable
Carencias
ANTECEDENTES
2.4.2
Vigo
En enero del 2014, en Vigo, Trfico adapto los semforos con un sistema Bluetooth con
el objetivo de reducir las quejas de los vecinos por el ruido que emitido por los
semforos.
Una vez adaptados los semforos, un mvil con tecnologa Bluetooth es lo nico
necesario para que el mecanismo funcione. La ONCE tiene adems unos dispositivos
especficos para que sus afiliados puedan portar si carecan de mvil.
Para la coordinacin con los semforos solo es preciso realizar un pequeo cambio en
la configuracin del terminal. El funcionamiento es muy sencillo. Cada vez que el
semforo detecte su presencia, la seal acstica funcionar como de costumbre. Una
vez que el peatn atraviese el paso, el pitido se apagar de inmediato sin ni siquiera
esperar a que la luz vuelva a cambiar de verde a rojo.
Destacable
Carencias
detecta
la
presencia
oyen el sonido.
2.4.3
Elche
Destacable
Carencias
detecta
la
presencia
oyen el sonido.
ANTECEDENTES
La Fundacin I+D del Software Libre (Fidesol) ha firmado un convenio con Fundacin
La Caixa para el desarrollo de Walking Green Android, una aplicacin para ayuda a
invidentes, pensada para convertirse en el 'semforo mvil'
Esta aplicacin, diseada para dispositivos mviles con el sistema operativo Android,
permitir a las personas invidentes o con visin reducida detectar si un semforo est
en verde o en rojo. Para ello la cmara del mvil realizar un barrido orientando hacia
el lugar aproximado donde debe encontrarse el semforo. Para ello analizar una serie
de parmetros, como patrones, colores o luminosidad. En caso de que los parmetros
coincidan con los necesarios para saber si el semforo est en verde o en rojo, se
indicar con una locucin o vibracin, pero si no se dan esos parmetros, continuar
con el reconocimiento de la escena.
Los investigadores han utilizado algoritmos establecidos previamente en una biblioteca
de Software Libre de visin artificial (OpenCV) con los cuales van a trabajar para la
mejora del reconocimiento de los colores en tiempo real, pues, por ejemplo, el verde
puede pasar desapercibido para el dispositivo si el semforo est en sombra o en una
zona excesivamente iluminada. Otras partes que mejorar son la adaptacin de la
aplicacin segn la memoria y la capacidad del mvil.
10
Destacable
La
locucin
vibracin
Carencias
se
2.5.2
11
ANTECEDENTES
Destacable
Carencias
informacin
tanto
Inalmbrico
12
2.6.1.1
Tecnologa Bluetooth
2.6.1.1.1
Qu es la tecnologa Bluetooth?
2.6.1.1.2
Los dispositivos Bluetooth funcionan en la banda de 2.4 GHz que es una banda libre
que no requiere de licencia para usarla. Se aplica un transceptor salto de frecuencias
para combatir la interferencia y la decoloracin de la seal.
Se definen dos modos de modulacin. El modo obligatorio, denominado Tasa Bsica
(Basic Rate), utiliza una modulacin FM binaria para minimizar la complejidad
transceptor. El modo opcional, que se llama Velocidad de Datos Mejora (Enchanced
Data Rate) utiliza una modulacin PSK y tiene dos variantes: / 4-QPSK y 8PSK. La
velocidad de smbolo para todos los esquemas de modulacin es 1 Mbps. La velocidad
de datos en bruto es de 1 Mbps para la velocidad bsica, 2 Mbps para la velocidad de
datos mejorada utilizando / 4-DQPSK y 3 Mbps para la velocidad de datos mejorada
utilizando 8DPSK.
En la transmisin, que es full-duplex, se usa el esquema de transmisin por divisin del
tiempo (TDD).
13
ANTECEDENTES
2.6.1.1.3
2.6.1.2
2.6.1.2.1
Tecnologa Wi-Fi
Qu es la tecnologa Wi-Fi?
Wi-Fi es el nombre de la popular tecnologa de red inalmbrica que utiliza ondas de radio
para proporcionar conexiones inalmbricas de Internet y de la red de alta velocidad. Un
error comn es que el trmino Wi-Fi es la abreviatura de "Wireless Fidelity", sin embargo
este no es as. Wi-Fi es simplemente una frase de marca registrada que significa IEEE
802.11x.
2.6.1.2.2
Wi-Fi funciona sin conexin cableada fsica entre el emisor y el receptor mediante el uso
de tecnologa de radio frecuencia (RF), una frecuencia dentro del espectro
14
2.6.1.2.3
2.6.1.2.3.1
Autenticacin
Antes de que un nodo pueda unirse a la red, debe establecer su identidad, para ello
debe superar una serie de tests que permitan saber que quien se quiere conectar es
quien dice ser. 802.11ofrece 2 tipos de servicios de autenticacin:
15
ANTECEDENTES
2.6.1.2.3.2
Deautenticacin
2.6.1.2.3.3
Privacidad
2.6.1.2.3.4
Transporte de unidad de Servicios de capa MAC (MSDU: MAC Service
Data Unit Delivery)
Se ocupa de que la informacin necesaria para operacin de la subcapa MAC sea
transportada entre los distintos AP.
2.6.1.2.4
La capa de enlace de Wi-Fi se divide en dos subcapas: La subcapa LLC (Logical Link
Control) y la subcapa MAC (Media Access Control).
2.6.1.2.4.1
Sucapa LLC
Esta capa es exactamente igual a la capa LLC utilizada por las redes cableadas del
tipo 802.3 con un sistema de direccionamiento de 48 bits idntico (MAC Address). Esto
permite simplificar al extremo los puentes (bridges) entre los dos tipos de red.
2.6.1.2.4.2
Subcapa MAC
16
2.6.1.3
Caractersticas
Bluetooth
Wi-Fi
Frecuencia
2.4 GHz
Ancho de Banda
24 Mbps
1 Gbps
Seguridad
Baja
Moderada
17
ANTECEDENTES
Rango
30 metros
300 metros
Consumo
Reducido
Elevado
18
corriente elctrica cuando se usan. Por este motivo es conveniente utilizar una
tecnologa que consuma poco, como es el caso del Bluetooth.
2.6.1.4
Conclusin
2.6.2
Para desarrollar este proyecto es necesario el uso de unos aparatos que puedan ser
utilizados como emisores y receptores y que adems puedan programarse y
personalizarse. Este es el caso de los ordenadores de bajo costo como Arduino y
Raspberry Pi. No obstante, el Smartphone podra resultar ser una alternativa interesante
como dispositivo receptor.
2.6.2.1
Smartphone
Una de las opciones que ha sido objeto de estudio fue la utilizacin de un Smartphone
como dispositivo receptor. En primera instancia, este tipo de dispositivo pareca ser el
candidato perfecto para cumplir las funciones de receptor ya que est implantado en
gran parte de la sociedad moderna. Adems, los telfonos mviles inteligentes llevan
incorporado un mdulo Bluetooth que facilitara la comunicacin con el emisor. Los
Smartphones destacan por ser dispositivos inalmbricos que disponen de su propia
fuente de alimentacin autnoma.
19
ANTECEDENTES
20
2.6.2.2
2.6.2.2.1
Raspberry Pi
Qu es la Raspberry Pi?
2.6.2.2.2
Caracteristicas de la Raspberry Pi
21
ANTECEDENTES
disco duro externo para almacenar los archivos y una tarjeta MicroSD para dotar a este
pequeo ordenador de un sistema operativo.
Para conectarse a pantallas cuenta con un HDMI 1.4 con una resolucin de hasta
1920x1200 pxeles. Su GPU Broadcom VideoCore IV 250 MHz. OpenGL ES 2.0 es muy
capaz de reproducir contenido Full HD sin saltos ni cortes.
Para conectarse a Internet o a una red local cuenta tambin con un puerto Ethernet de
10/100 Mbps, aunque tambin se le puede aadir conexin Wi-Fi o incluso 3G a travs
de un mdem USB que tambin habra que comprar por separado.
2.6.2.2.3
Sistemas Operativos
2.6.2.2.3.1
Instalador NOOBS
NOOBS es una buena opcin para los que estn empezando y quieren probar varios
Sistemas Operativos. Este instalador ofrece, en el primer arranque, un men de
instalacin de Raspbian, Pidora, varias opciones con XBMC, entre otros, para que, de
22
esta forma, tengamos muy fcil probar la distribucin que mejor se ajuste a nuestras
necesidades.
2.6.2.2.3.2
Con todas las ventajas de una de las distribuciones Linux ms veteranas y utilizadas,
Raspbian se convirti desde los das de la primera Pi en una de las distros6 ms
populares para Raspberry Pi. Sus virtudes son las mismas que tiene Debian7: una
enorme comunidad de usuarios, miles de paquetes preparados desde el primer
momento para ser utilizados -ms de 35.000 en el caso de Raspbian y optimizados para
la Pi.
2.6.2.2.3.3
Pidora es una mezcla con Fedora, una versin personalizada del sistema Fedora tipo
Unix, que se ejecuta en el ordenador Raspberry Pi. Adems es bastante rpido en su
ejecucin. Lanzado por primera vez en 2003, Fedora tiene una larga historia y se
caracteriza por su estabilidad. Teniendo en cuenta que existen miles de paquetes
disponibles en el repositorio para Pidora, se podr encontrar casi cualquier funcionalidad
o servicio que se pueda necesitar para cualquier proyecto.
2.6.2.2.3.4
6
7
Sistemas operativos
Sistema operativo en base Linux
23
ANTECEDENTES
2.6.2.3
2.6.2.3.1
Arduino
Qu es Arduino?
24
2.6.2.3.2
Caractersticas de Arduino
2.6.2.4
25
ANTECEDENTES
2.6.2.5
Conclusin
Tras analizar las tres alternativas a lo que a hardware se refiere, se ha optado por
seleccionar la Raspberry Pi como mejor opcin por las siguientes razones:
1. Es un ordenador con capacidades tcnicas para soportar el proyecto que se
quiere llevar a cabo, as como cualquier ampliacin o mejora.
2. Es un dispositivo de bajo coste.
3. Tanto el dispositivo emisor como el receptor usaran un mismo lenguaje de
programacin.
4. Tiene muchas posibilidades de personalizacin y adicin de complementos.
5. Se puede conectar a un batera independiente de alta capacidad.
6. Tiene un tamao reducido que facilita tanto la integracin en otros elementos
como la comodidad que va a proporcionar al usuario a la hora de portarla.
26
2.7.1
2.7.1.1
Armario
2.7.1.2
Regulador semafrico
27
ANTECEDENTES
2.7.1.2.1
La unidad central del regulador tiene un sistema de vigilancia "watch-dog timer" de modo
que efecte un Reset del equipo si pasa un tiempo sin ser activado por el programa.
Adems, el regulador almacenar los parmetros en memoria no voltil (por ejemplo,
memoria Flash) y no fcilmente extrable. La integridad de los parmetros est
garantizada mediante un cdigo CRC.
2.7.1.2.2
Alimentacin
28
entrada de 184 VAC a 265 VAC (230 VAC, +15% -20%). La fuente de alimentacin del
regulador ser la encargada de suministrar las tensiones necesarias para el
funcionamiento de la electrnica y los 42 VAC para la alimentacin de los semforos
2.7.1.2.3
Acometida elctrica
2.7.1.2.4
Entradas digitales
29
ANTECEDENTES
2.7.1.2.5
Cada grupo tiene circuitos independientes para cada uno de los 3 colores (rojo, mbar
y verde) y cada uno de ellos soporta hasta 5 unidades pticas en paralelo. Cada color
puede gobernar una carga de 100W y est protegido por un fusible en caso de
cortocircuito.
Cada grupo puede tener 2 colores activos. El estado de cada color ser Encendido o
Apagado, donde el estado Encendido para el conjunto del regulador fsico, podr tener
2 niveles: luminosidad plena o luminosidad atenuada
2.7.1.2.7
2.7.1.2.8
30
2.7.1.3
Llave de guardia
El regulador tiene instalada una llave para control manual. Generalmente el uso de esta
llave est reservado a la Polica Municipal. La llave tiene 2 posiciones:
Reposo: la llave no acta sobre el regulador
Intermitente: el cruce se mantiene en intermitente,
2.7.1.4
Comunicaciones
2.7.2
El proyecto VAV pretende implementar un sistema genrico que pueda ser integrado en
la mayora de los semforos. No obstante, se considera que cada semforo puede ser
distinto y que previo a la implantacin del sistema habr que hacer un estudio de
integracin en el tipo de semforo que se requiera.
2.7.2.1
El dispositivo emisor se colocar sobre las lmparas del semforo de peatones. Deber
estar protegido por una cobertura similar a la que protege las lmparas. Adems, el
adaptador Bluetooth que llevar incorporado el dispositivo emisor deber estar
orientado hacia la acera, procurando as establecer una conexin con mayor facilidad
para los usuarios que caminen por la misma. Asimismo, la pared que protege el lado del
dispositivo el adaptador Bluetooth tiene que permitir un envo de seal sin atenuaciones.
En caso de notar atenuaciones en la seal, esta pared deber incluir un pequeo orificio
para permitir el envo de una seal de calidad.
31
ANTECEDENTES
2.7.2.2
32
3. JUSTIFICACIN
Los sistemas implantados actualmente en las ciudades tratan de dar solucin al
problema al que se enfrentan los ciegos o personas con visin reducida al cruzar los
semforos. Sin embargo todos estos sistemas tienen carencias de algn tipo.
Los semforos sonoros implantados en la mayora de las ciudades espaolas ayudan a
los ciegos a cruzar las calzadas. Sin embargo, el sonido que emiten estos semforos
resulta molesto para los vecinos de la zona.
Es conveniente analizar las debilidades, amenazas, fortalezas y oportunidades de este
proyecto para demostrar por qu es un proyecto viable y que cubre una necesidad social
muy importante.
3.1 DEBILIDADES
Es necesario un acuerdo con el ayuntamiento de la ciudad elegida para la
implantacin del sistema.
La implantacin final del sistema requiere de una inversin econmica
adicional.
Dependencia de un dispositivo mvil y otro fijo para que el sistema funcione.
3.2 AMENAZAS
Existencia de aplicaciones que tratan de resolver la misma necesidad.
Existencia de otros sistemas o mecanismos, ya implantados, que dan
respuesta a esa necesidad.
Disminucin del nmero de personas con deficiencia visual severas debido al
avance de la medicina.
33
JUSTIFICACIN
3.3 FORTALEZAS
El desarrollo del sistema no requiere de mucha inversin econmica.
El sistema propuesto responde a debilidades de sistemas similares existentes
en el mercado.
El sistema puede ser actualizado y mejorado sin tener que cambiarlo por
completo.
Flexibilidad de la aplicacin del proyecto en diferentes sistemas semafricos.
Da la respuesta a la necesidad de disminucin de contaminacin acsticas en
las ciudades.
Sistema verstil con aplicaciones en mbitos muy diversos.
3.4 OPORTUNIDADES
3.4.1
3.4.2
3.4.3
34
tengan algn tipo de minusvala. Por ello, las partidas presupuestarias que se dedican
a este fin son cada vez mayores. Con este proyecto se podra dar una solucin ms
eficiente que las que se utilizan en la actualidad ya que conseguira resultados a un
coste mucho menor que el actual.
3.4.4
Dado el alto nmero de usuarios de tecnologa mvil, las empresas han visto rentable
ofertar sistemas adaptados para dar respuesta a diferentes problemticas que puedan
tener dichos usuarios. Aprovechando, por tanto, el uso generalizado y cotidiano de estas
tecnologas se puede implementar la propuesta del presente proyecto sin ser necesaria
una formacin especfica de los usuarios.
35
JUSTIFICACIN
36
4. OBJETIVO Y ALCANCE
4.1 OBJETIVOS
Los objetivos perseguidos en la realizacin del presente proyecto son los siguientes:
4.2 ALCANCE
El alcance directo de este proyecto es la creacin de un prototipo que sea funcional a
nivel de laboratorio. Posteriormente, dedicndole ms tiempo y con un equipo se podra
alcanzar las siguientes metas.
37
OBJETIVO Y ALCANCE
38
5. METODOLOGA
5.1 FASE 0: ELABORACIN DEL PLAN DE PROYECTO
5.1.1
Objetivos
Analizar las soluciones actuales del problema que afronta este proyecto.
5.1.2
Resultados
Listado de las caractersticas de los productos existentes en el mercado a la
hora de elaborar este proyecto.
Objetivos
5.2.2
Resultados
39
METODOLOGA
Objetivos
5.3.2
Resultados
Objetivos
5.4.2
Resultados
40
Objetivos
5.5.2
Resultados
Objetivos
5.6.2
Resultados
41
METODOLOGA
42
6. DISEO Y DESARROLLO
En el presente apartado se plasman los elementos de diseo y las lneas de desarrollo
que proporcionan consistencia al proyecto.
Como puede verse en el Diagrama 3 el sistema est diseado para que el dispositivo
emisor utilice mensajes de diversos mbitos (semforos, dependencias...) y el
dispositivo receptor los reciba mediante tecnologa Bluetooth y los interprete. Al mismo
tiempo, el usuario, interacta con el sistema eligiendo entre dos modos de operacin y
uno de reseteo.
6.1.1
El emisor
43
DISEO Y DESARROLLO
44
6.1.2
El receptor
El receptor ser el dispositivo encargado de recibir los mensajes que envan los
emisores. Sin embargo, este dispositivo tendr otra modalidad en la que el usuario podr
saber a qu distancia estn los objetos y obstculos a los que apunta con el mismo.
Cabe destacar, que el receptor tambin dispone de un pulsador de reseteo del servicio
Bluetooth que le permite asegurarse de que el sistema funciona correctamente.
Ilustracin 10: detalle del dispositivo receptor del Sistema VAV (botn de reseteo)
45
DISEO Y DESARROLLO
6.2 DESARROLLO
En este apartado se explican los diferentes pasos que ha servido para desarrollar el
proyecto en sus diferente fases, as como los resultados que en cada una de ellas se
han obtenido.
6.2.1
6.2.1.1
46
6.2.1.2
El protocolo L2CAP, Logical Link Control and Adaptation Protocol (Protocolo de control
y adaptacin del enlace lgico) es utilizado dentro de la pila de protocolos de Bluetooth,
para pasar paquetes con y sin orientacin a la conexin.
Las funciones de L2CAP son:
Segmentacin y reensamblado de paquetes. Acepta paquetes de hasta 64KB
de sus capas superiores.
47
DISEO Y DESARROLLO
6.2.1.3
48
6.2.2
Todos los dispositivos emisores estn formados por una Raspberry Pi con un adaptador
USB Bluetooth insertado en uno de sus puertos. No obstante, la programacin de cada
dispositivo puede cambiar dependiendo de dnde vaya a estar colocado.
49
DISEO Y DESARROLLO
6.2.2.1
Emisor de semforo
6.2.2.1.1
Funcionamiento
Este dispositivo, al igual que el resto de los emisores, tiene la funcin de buscar un
dispositivo receptor. Durante 4 segundos realiza esa bsqueda y si no encuentra ningn
receptor vuelve a buscar. En caso de que s encuentre un receptor, intenta conectarse
al mismo. Una vez establecida la conexin, le manda un primer mensaje que contiene
un identificador. En este caso, ese identificador ser S. De esta forma el receptor sabr
que debe interpretar los mensajes de un semforo (y no de un ascensor, dependencia
u obstculo). Despus, el emisor manda tres mensajes seguidos, el primero de ellos con
la localizacin de del semforo, el segundo con el color del mismo, y el tercero con el
tiempo que queda para cambiar de color. Despus, el dispositivo se queda a la espera
de recibir una confirmacin de que los mensajes han sido transmitidos al usuario
correctamente. Ese mensaje ser la palabra ok. Cuando este mensaje sea recibido, el
emisor intentar mandar de nuevo una secuencia actualizada de la localizacin del
semforo, el color y el tiempo que queda para el cambio de estado. Por ltimo, a medida
que el usuario se aleje del rango de accin del emisor y ste no pueda establecer
conexin volver al estado inicial, para buscar un nuevo usuario.
50
51
DISEO Y DESARROLLO
6.2.2.1.2
6.2.2.1.2.1
6.2.2.1.2.2
Es importante definir las variables al comienzo del cdigo para poder cambiarlas si fuera
necesario:
port = 0x1001: Asigna el valor 0x1001 a la variable port.
tcruce = 7: tiempo necesario para cruzar el paso de zebra
delay = 3: tiempo de retraso por reproduccin del mensaje en el receptor
52
6.2.2.1.2.3
Este paso consiste en encontrar el dispositivo receptor y guarda su MAC para poder
establecer una conexin:
nearby_devices = Bluetooth.discover_devices(duration = 4): Busca dispositivos cercanos y los
guarda en una variable.
for bdaddr in nearby_devices: Examina la variable recin guardada hasta encontrar lo que busca.
if target_name == Bluetooth.lookup_name( bdaddr ): compara el nombre del dispositivo
encontrado con el que se quiere encontrar. Y si se encuentra...
target_address = bdaddr: ...guarda la MAC en la variable preparada para ello
anteriormente.
break: para el bucle de comparacin una vez encontrado.
call(["hciconfig","hci", "reset"]): resetea el dispositivo Bluetooth para detener cualquier proceso
que se haya podido quedar a medias.
53
DISEO Y DESARROLLO
6.2.2.1.2.4
6.2.2.1.2.5
Este es primero de los bloques de un bucle infinito. En esta primera parte se accede a
la informacin del semforo:
while 1:: comienza el bucle de envo de informacin
color = open('color.txt', 'r'): se recupera la informacin del color guarda en un archivo
color = color.read(): se lee la informacin del color
tiempo = open('tiempo.txt', 'r'): se recupera la informacin del tiempo guarda en un
archivo
54
6.2.2.1.2.6
Para poder enviar los mensajes es precioso crear un socket y conectarlo al receptor:
sock=Bluetooth.BluetoothSocket(Bluetooth.L2CAP): se crea elemento tipo socket
sobre el protocolo L2CAP
sock.connect((target_address, port)): conecta con el dispositivo cuya MAC a encontrado
a travs del puerto declarado anteriormente y espera aceptacin para continuar
Diagrama 13: creacin del socket y espera de recepcin de conexin en el emisor del tipo "semforo"
6.2.2.1.2.7
55
DISEO Y DESARROLLO
Diagrama 14: determinacin de si el receptor est cerca o no en el emisor del tipo "Semforo"
6.2.2.1.2.8
Esta parte del cdigo es la encargada de enviar los mensajes al receptor, enviando un
mensaje u otro dependiendo de si el usuario est lo suficientemente cerca o no:
if value<-5:: si la potencia de la conexin es menor de -5dB
sock.send("S"): se enva el identificador de S de semaforo
sock.send(localizacion): se envia la localizacin
sock.send(lejos): se envia mensaje de que se est lejos
sock.send(" ")
confirmacion = sock.recv(1024): se espera recibir la confirmacin
print(confirmacion): se saca por pantalla la confirmacin
time.sleep(1): se espera 1 segundo antes de continuar
sock.close(): se cierra el objeto socket
time.sleep(3): se espera durante 3 segundos antes de continuar
exit(): salimos del script.
56
Diagrama 15: envo de mensajes dependiendo de la potencia de la conexin en el emisor del tipo
Semforo
6.2.2.1.2.9
Antes de enviar el tiempo que queda para cambiar de color, script analiza si este tiempo
es menor que el tiempo que se necesita para cruzar el paso de cebra. Si es menor,
manda un mensaje que advierte de que el color cambiar inminentemente, si no, manda
el tiempo correspondiente.
num = int(float(tiempo))-delay: Al tiempo se le resta el tiempo que tarda
el mensaje que oye el usuario en reproducirse
57
DISEO Y DESARROLLO
if num <= tcruce:: Se compara ese tiempo con lo que se estima que se
tarda en cruzar el paso de zebra
sock.send("Espere. Cambio de Color inminente"): Si es menor
se le dice al usuario que espere al cambio de color
else:: Si no, se le dice el tiempo que queda para el cambio de color
sock.send(tiempo+" segundos para cambiar de color")
Diagrama 16: anlisis del tiempo restante para que el semforo cambie de estado
6.2.2.1.2.10
Una vez enviados todos los mensajes, se espera recibir una confirmacin que indica que el
receptor ya ha recibido y reproducido los mensajes. Si no se recibe nada es que algo ha ido mal
y se reinicia el script.
confirmacion = sock.recv(1024): Se espera recibir la confirmacin de la
reproduccin de los mensajes enviados
print(confirmacion): Se saca en la pantalla el mensaje Ok
sock.close(): se cierra el objeto socket
else:: Si no se detecta la potencia de la seal...
break: se sale del la condicin y repite la conexin
58
6.2.2.2
Emisor de ascensor
Funcionamiento
Este dispositivo, al igual que el resto de los emisores, tiene la funcin de buscar un
dispositivo receptor. Durante 4 segundos realiza esa bsqueda y si no encuentra ningn
receptor vuelve a buscar. En caso de que s encuentre un receptor, intenta conectarse
al mismo. Una vez establecida la conexin, le manda un primer mensaje que contiene
un identificador. En este caso, ese identificador ser A. De esta forma el receptor sabr
que debe interpretar los mensajes de un ascensor. Despus, el emisor manda un nico
mensaje al receptor indicndole dnde se encuentra incluyendo la planta o el nivel.
Posteriormente el dispositivo emisor queda a la espera de recibir una confirmacin de
la reproduccin del mensaje enviado. Pasado un tiempo, si el receptor se encuentra en
el rango de accin del emisor, este ltimo vuelve a mandar el mensaje.
6.2.2.2.2
59
DISEO Y DESARROLLO
60
6.2.2.2.2.1
6.2.2.2.2.2
Es importante definir las variables al comienzo del cdigo para poder cambiarlas si fuera
necesario.
port = 0x1001: asigna el valor 0x1001 a la variable port
target_name = "raspberrypi-0": el dispositivo que se quiere encontrar se llama raspberrypi-o
target_address = None: es declara la variable donde se guardar la MAC del dispositivo
encontrado. De momento no tiene valor, por lo tanto es None
localizacion = "Ascensor Eside, segunda planta ": se guarda la localizacin del ascensor
lejos = "estas lejos ": se guarda el mensaje de ests lejos para informar a usuario si se diera el
caso
61
DISEO Y DESARROLLO
6.2.2.2.2.3
Este paso consiste en encontrar el dispositivo receptor y guarda su MAC para poder
establecer una conexin.
nearby_devices = Bluetooth.discover_devices(duration = 4): Busca dispositivos cercanos y los
guarda en una variable.
for bdaddr in nearby_devices: Examina la variable recin guardada hasta encontrar lo que busca.
if target_name == Bluetooth.lookup_name( bdaddr ): compara el nombre del dispositivo
encontrado con el que se quiere encontrar. Y si se encuentra...
target_address = bdaddr: ...guarda la MAC en la variable preparada para ello
anteriormente.
break: para el bucle de comparacin una vez encontrado.
call(["hciconfig","hci", "reset"]): resetea el dispositivo Bluetooth para detener cualquier proceso
que se haya podido quedar a medias.
6.2.2.2.2.4
62
print "found target Bluetooth device with address ", target_address: impreme la MAC
else::Si no...
print "could not find target Bluetooth device nearby": Impreme que no ha encontrado la
MAC
Diagrama 22: impresin en pantalla del resultado de la bsqueda en el emisor del tipo "Ascensor"
6.2.2.2.2.5
Para poder enviar los mensajes es precioso crear un socket y conectarlo al receptor.
while 1:: comienza el bucle de envo de informacin
sock=Bluetooth.BluetoothSocket(Bluetooth.L2CAP): se crea elemento tipo socket
sobre el protocolo L2CAP
sock.connect((target_address, port)): conecta con el dispositivo cuya MAC a encontrado
a travs del puerto declarado anteriormente y espera aceptacin para continuar
Diagrama 23: creacin de socket y establecimiento de la conexin en el emisor del tipo "Ascensor
6.2.2.2.2.6
63
DISEO Y DESARROLLO
6.2.2.2.2.7
Esta parte del cdigo es la encargada de enviar los mensajes al receptor, enviando un mensaje
u otro dependiendo de si el usuario est lo suficientemente cerca o no.
if value<-5:: si la potencia de la seal es mejor de 5dB
sock.send("A"): se enva el identificador de A de Ascensor
sock.send(localizacion+lejos): se enva la localizacin del ascensor
indicando tambin que el usuario se encuentra demasiado lejos.
confirmacion = sock.recv(1024): se queda a la espera de recibir una
confirmacin de la reproduccin del mensaje enviado
print(confirmacion): se imprime la confirmacin recibida
64
Diagrama 25: envo de mensaje Bluetooth dependiendo de la posicin del receptor y espera de confirmacin
de reproduccin
6.2.2.3
6.2.2.3.1
Funcionamiento
Este dispositivo, al igual que el resto de los emisores, tiene la funcin de buscar un
dispositivo receptor. Durante 4 segundos realiza esa bsqueda y si no encuentra ningn
receptor vuelve a buscar. En caso de que s encuentre un receptor, intenta conectarse
65
DISEO Y DESARROLLO
al mismo. Una vez establecida la conexin, le manda un primer mensaje que contiene
un identificador. En este caso, ese identificador ser D. De esta forma el receptor sabr
que debe interpretar los mensajes de una dependencia o lugar. Despus, el emisor
manda un dos mensaje al receptor. El primero indicando el lugar o la dependencia
encontrada y el segundo, indicando la localizacin de este lugar o dependencia.
Posteriormente el dispositivo emisor queda a la espera de recibir una confirmacin de
la reproduccin del mensaje enviado. Pasado un tiempo, si el receptor se encuentra en
el rango de accin del emisor, este ltimo vuelve a mandar los mensajes.
66
Diagrama 26: explicacin general del dispositivo emisor del tipo "Dependencia"
67
DISEO Y DESARROLLO
6.2.2.3.2
6.2.2.3.2.1
6.2.2.3.2.2
Es importante definir las variables al comienzo del cdigo para poder cambiarlas si fuera
necesario.
port = 0x1001: asigna el valor 0x1001 a la variable port
target_name = "raspberrypi-0": el dispositivo que se quiere encontrar se llama raspberrypi-o
68
lejos = "estas lejos ": se guarda el mensaje de ests lejos para informar a usuario si se diera el
caso
6.2.2.3.2.3
Este paso consiste en encontrar el dispositivo receptor y guarda su MAC para poder
establecer una conexin.
nearby_devices = Bluetooth.discover_devices(duration = 4): Busca dispositivos cercanos y los
guarda en una variable.
for bdaddr in nearby_devices: Examina la variable recin guardada hasta encontrar lo que busca.
if target_name == Bluetooth.lookup_name( bdaddr ): compara el nombre del dispositivo
encontrado con el que se quiere encontrar. Y si se encuentra...
target_address = bdaddr: ...guarda la MAC en la variable preparada para ello
anteriormente.
break: para el bucle de comparacin una vez encontrado.
call(["hciconfig","hci", "reset"]): resetea el dispositivo Bluetooth para detener cualquier proceso
que se haya podido quedar a medias.
69
DISEO Y DESARROLLO
6.2.2.3.2.4
Diagrama 30: impresin en pantalla del resultado de la bsqueda en el emisor del tipo "Dependecia"
6.2.2.3.2.5
Para poder enviar los mensajes es precioso crear un socket y conectarlo al receptor.
while 1:: comienza el bucle de envo de informacin
sock=Bluetooth.BluetoothSocket(Bluetooth.L2CAP): se crea elemento tipo socket
sobre el protocolo L2CAP
sock.connect((target_address, port)): conecta con el dispositivo cuya MAC a encontrado
a travs del puerto declarado anteriormente y espera aceptacin para continuar
70
Diagrama 31: creacin de socket y peticin de conexin en el emisor del tipo "Dependecia"
6.2.2.3.2.6
71
DISEO Y DESARROLLO
Diagrama 32: determinacin de si el receptor est lo suficientemente cerca o no en el emisor del tipo
"Dependecia"
6.2.2.3.2.7
Esta parte del cdigo es la encargada de enviar los mensajes al receptor, enviando un
mensaje u otro dependiendo de si el usuario est lo suficientemente cerca o no.
if value<-5:: si la potencia de la seal es mejor de 5dB
sock.send("D"): se enva el identificador de D de Dependencia
sock.send(localizacion+lejos): se enva la localizacin del ascensor
indicando tambin que el usuario se encuentra demasiado lejos.
sock.send( ): el envo del mensaje auxiliar se deja en blaco
confirmacion = sock.recv(1024): se queda a la espera de recibir una
confirmacin de la reproduccin del mensaje enviado
print(confirmacion): se imprime la confirmacin recibida
sock.close(): se cierra el elemento socket y comienza el bucle de nuevo
time.sleep(3): se espera durante 3 segundos
exit(): se sale del script para ejecutarlo de nuevo.
else:
sock.send("D"): se enva el identificador de D de Dependencia
sock.send(localizacion): se enva la localizacin del lugar.
sock.send(auxiliar): se enva el mensaje auxiliar.
confirmacion = sock.recv(1024): se queda a la espera de recibir una
confirmacin de la reproduccin del mensaje enviado
print(confirmacion): se imprime la confirmacin recibida.
72
Diagrama 33: envo de mensajes dependiendo de la distancia del receptor en el emisor del tipo
"Dependecia"
6.2.2.4
Emisor de obstculo
Este tipo de emisor es sencillo. Se coloca en algn lugar que pueda conllevar un riesgo
para el usuario, como por ejemplo, una escalera
6.2.2.4.1
Funcionamiento
Este dispositivo, al igual que el resto de los emisores, tiene la funcin de buscar un
dispositivo receptor. Durante 4 segundos realiza esa bsqueda y si no encuentra ningn
receptor vuelve a buscar. En caso de que s encuentre un receptor, intenta conectarse
al mismo. Una vez establecida la conexin, le manda un primer mensaje que contiene
un identificador. En este caso, ese identificador ser O. De esta forma el receptor sabr
que debe interpretar los mensajes de un obstculo. Despus, el emisor manda un tres
mensaje al receptor. El primero advirtiendo del peligro encontrado, el segundo con la
localizacin y el tercero ofrecindole una alternativa. Posteriormente el dispositivo
emisor queda a la espera de recibir una confirmacin de la reproduccin de los mensajes
73
DISEO Y DESARROLLO
6.2.2.4.2
74
75
DISEO Y DESARROLLO
6.2.2.4.2.1
6.2.2.4.2.2
Es importante definir las variables al comienzo del cdigo para poder cambiarlas si fuera
necesario.
port = 0x1001: asigna el valor 0x1001 a la variable port
target_name = "raspberrypi-0": el dispositivo que se quiere encontrar se llama raspberrypi-o
target_address = None: es declara la variable donde se guardar la MAC del dispositivo
encontrado. De momento no tiene valor, por lo tanto es None
localizacion = "Atencion Escaleras ": se guarda la localizacin del lugar
auxiliar = Segunda planta Eside : se aade un mensaje auxiliar
alternativa = Hay un ascensor en el pasillo : se aade un mensaje indicando cmo evitar el
obstculo
76
lejos = "estas lejos ": se guarda el mensaje de ests lejos para informar a usuario si se diera el
caso
6.2.2.4.2.3
Este paso consiste en encontrar el dispositivo receptor y guarda su MAC para poder
establecer una conexin.
nearby_devices = Bluetooth.discover_devices(duration = 4): Busca dispositivos cercanos y los
guarda en una variable.
for bdaddr in nearby_devices: Examina la variable recin guardada hasta encontrar lo que busca.
if target_name == Bluetooth.lookup_name( bdaddr ): compara el nombre del dispositivo
encontrado con el que se quiere encontrar. Y si se encuentra...
target_address = bdaddr: ...guarda la MAC en la variable preparada para ello
anteriormente.
break: para el bucle de comparacin una vez encontrado.
call(["hciconfig","hci", "reset"]): resetea el dispositivo Bluetooth para detener cualquier proceso
que se haya podido quedar a medias.
77
DISEO Y DESARROLLO
6.2.2.4.2.4
Diagrama 38: impresin en pantalla del resultado de la bsqueda en el emisor del tipo "Obstculo"
6.2.2.4.2.5
Para poder enviar los mensajes es precioso crear un socket y conectarlo al receptor.
while 1:: comienza el bucle de envo de informacin
sock=Bluetooth.BluetoothSocket(Bluetooth.L2CAP): se crea elemento tipo socket
sobre el protocolo L2CAP
sock.connect((target_address, port)): conecta con el dispositivo cuya MAC a encontrado
a travs del puerto declarado anteriormente y espera aceptacin para continuar
Diagrama 39: creacin de socket y peticin de conexin en el emisor del tipo "Obstculo"
6.2.2.4.2.6
78
Diagrama 40: determinacin de si el receptor est lo suficientemente cerca o no en el emisor del tipo
"Obstculo"
6.2.2.4.2.7
Esta parte del cdigo es la encargada de enviar los mensajes al receptor, enviando un
mensaje u otro dependiendo de si el usuario est lo suficientemente cerca o no.
if value>-5:: si la potencia de la seal es mayor de 5dB
sock.send("D"): se enva el identificador de D de Dependencia
sock.send(localizacion): se enva la localizacin del obstculo
sock.send(auxiliar): se enva el mensaje auxiliar.
sock.send(alternativa): se enva el mensaje con la alternativa
79
DISEO Y DESARROLLO
Diagrama 41: envo de mensajes segn la distancia del receptor en el emisor del tipo "Obstculo"
6.2.3
El dispositivo receptor estar formado por una Raspberry Pi, un adaptador USB
Bluetooth, un sensor de distancia ultrasnico, un pulsador y un conmutador. Este
dispositivo tiene dos modos de funcionamiento. En el primero de los modos, la
Raspberry Pi recibir y reproducir los mensajes que enven los emisores.
80
81
DISEO Y DESARROLLO
Cabe destacar que este dispositivo ejecutar tres scripts a la vez. Uno de ellos se
encargar de recibir y reproducir los mensajes que enven los emisores. El segundo,
har que cuando el usuario pulse el botn, la aplicacin se reinicie y le informe de que
est en funcionamiento. Por ltimo, se ejecutar un tercer script que har que cuando
se cambie la posicin del conmutador, la informacin de los emisores se silencie y se
oigan los avisos que el sensor de distancia emita.
6.2.3.1
82
83
DISEO Y DESARROLLO
6.2.3.1.1
6.2.3.1.2
Esta parte del cdigo es la encarga de asignar las funciones que tendrn los pines GPIO
de la Raspberry. En este caso necesitamos configurar uno como entrada, para detectar
en qu modo se est.
GPIO.setmode(GPIO.BCM): Se gestionarn la numeracin de los pines ser gestionada por el
nmero que los define y no por el nmero que ocupan en la placa
GPIO_SWITCH = 23: El GPIO que recibir la informacin del switch ser el 23
GPIO.setup(GPIO_SWITCH,GPIO.IN, pull_up_down=GPIO.PUD_DOWN): configuramos ese
pin como entrada y como apagado por defecto
84
6.2.3.1.3
Para que un dispositivo emisor pueda conectar con el receptor, este ltimo tiene que
estar en modo descubrible.
call(["sudo","hciconfig","hci0","piscan"]): se llama a la funcin piscan para que los emisores
puedan encontrar al receptor
time.sleep(1): se retrasa un segundo para que los cambios se apliquen
6.2.3.1.4
Se define la funcin semaforo(), que ser la encargada de recibir los mensajes de los
semforos.
def semaforo():: comienzo de la funcin semaforo()
print "Semaforo": se imprime la el nombre de la funcin en pantalla
datacalle = client_sock.recv(1024): se espera recibir la localizacin del semforo
datacolor = client_sock.recv(1024): se espera recibir la color del semforo
datatiempo = client_sock.recv(1024): se espera recibir la tiempo para que el semforo
cambie de color
print "received [%s]" % datacalle: se imprimen en pantalla la informacin recibida
print "received [%s]" % datacolor
print "received [%s]" % datatiempo
85
DISEO Y DESARROLLO
6.2.3.1.5
semforo
Una vez la funcin haya recibido los mensajes, los guarda para poder reproducirlos con
el sintetizador de voz Festival.
filename = 'texto': se crea una nueva variable con un texto
file=open(filename,'w'): Se escribe esa variable en otra que se llama file
file.write("Semaforo de "+datacalle+datacolor+datatiempo): Se reescribe la informacin
del del semforo junto con otras palabras para crea una oracin
file.close():se cierra el archivo
if not GPIO.input(GPIO_SWITCH):: Si el switch no est pulsado...
call('festival --tts --language spanish '+filename, shell=True): se llama a la funcin
festival que reproducir en espaol el texto recientemente escrito.
client_sock.send("ok"): se manda el mensaje de confirmacin
client_sock.close():: cerramos el primer socket
server_sock.close():: cerramas el segundo socket
Nota: Festival es el sintetizador de voz que transforma textos en voz hablada
86
6.2.3.1.6
87
DISEO Y DESARROLLO
6.2.3.1.7
ascensor
Una vez la funcin haya recibido los mensajes, los guarda para poder reproducirlos con
el sintetizador de voz Festival.
filename = 'texto': se crea una nueva variable con un texto
file=open(filename,'w'): Se escribe esa variable en otra que se llama file
file.write(localizacin): Se reescribe la informacin del semforo junto con otras palabras
para crear una oracin
file.close(): se cierra el archivo
if not GPIO.input(GPIO_SWITCH):: Si el switch no est pulsado...
call('festival --tts --language spanish '+filename, shell=True): se llama a la funcin
festival que reproducir en espaol el texto recientemente escrito.
client_sock.send("ok"): se manda el mensaje de confirmacin
client_sock.close():: cerramos el primer socket
server_sock.close():: cerramas el segundo socket
88
6.2.3.1.8
6.2.3.1.9
obstculo
Una vez la funcin haya recibido los mensajes, los guarda para poder reproducirlos con
el sintetizador de voz Festival.
filename = 'texto': se crea una nueva variable con un texto
89
DISEO Y DESARROLLO
6.2.3.1.10
90
6.2.3.1.11
dependencia
Una vez la funcin haya recibido los mensajes, los guarda para poder reproducirlos con
el sintetizador de voz Festival.
filename = 'texto': se crea una nueva variable con un texto
file=open(filename,'w'): Se escribe esa variable en otra que se llama file
file.write(localizacion+auxiliar): Se reescribe la informacin del semforo junto con otras
palabras para crea una oracin
file.close(): se cierra el archivo
if not GPIO.input(GPIO_SWITCH):: Si el switch no est pulsado...
call('festival --tts --language spanish '+filename, shell=True): se llama a la funcin
festival que reproducir en espaol el texto recientemente escrito.
client_sock.send("ok"): se manda el mensaje de confirmacin
client_sock.close():: cerramos el primer socket
91
DISEO Y DESARROLLO
6.2.3.1.12
Se define una lista que indica qu funcin se debe ejecutar dependiendo del identificador
que se reciba.
identificadores = {
"A": ascensor,
"O": obstaculo,
"D": dependencia,
"S": semaforo
}
92
6.2.3.1.13
En este ltimo bloque se implementa la primera parte de un bucle infininio (la segunda
parte son las definiciones de las funciones). Ser el encargado de recibir el primer
mensaje, el identificador y ejecutar una funcin u otra dependiendo del mismo.
while 1:: comienzo de un bucle infinito
server_sock=Bluetooth.BluetoothSocket( Bluetooth.L2CAP ): se crea un elemento socket
sobre el protocolo L2CAP
port = 0x1001: se define el puerto de la conexin, el mismo que usarn los emisores
server_sock.bind(("",port)): se habilita el puerto para escuchar
server_sock.listen(1): el dispositivo se queda a la espera de recibir una peticin de
conexin
client_sock,address = server_sock.accept(): acepta la conexin recibida
print "Accepted connection from ",address: impreme en pantalla un mensaje indicando la
satisfactoria conexin
identificador = client_sock.recv(1024): recibe el identificador de la conexin
identificadores[identificador](): dependiendo del identificador ejecuta una de las
funciones declaradas antes
93
DISEO Y DESARROLLO
Diagrama 57: aceptacin de conexin del emisor y espera de recepcin del identificador de
tipo de dispositivo
6.2.3.2
94
6.2.3.3
el
El dispositivo tiene un conmutador de dos posiciones. Cuando ste est en una de las
posiciones, el dispositivo funciona como receptor de mensajes. Si est en la otra
95
DISEO Y DESARROLLO
96
6.2.3.3.1
En primer lugar, se importan las libreras necesarias para el desarrollo del script.
import RPi.GPIO as GPIO: se importa la librera para gestionar los pines GPIO de la Raspberry
Pi
import time: se importa la librera de tiempo para poder gestionar ste
from subprocess import call: de la librera subprocess se importa la funcin call que sirve para
hacer llmadas fuera de el compilador Python
6.2.3.3.2
97
DISEO Y DESARROLLO
Diagrama 61: establecimiento de la funcin de los pines GPIO del dispositivo receptor
6.2.3.3.3
98
Diagrama 62: explicacin de cmo se determina la distancia utilizando un sensor de distancia ultrasnico
6.2.3.3.4
99
DISEO Y DESARROLLO
spanish
'+filename,
archivo mediante el
100
Diagrama 63: envo de un mensaje u otro dependiendo la distancia del objeto detectado
6.2.4
101
DISEO Y DESARROLLO
6.2.4.1
Es interesante crear una funcin bash que ejecute los sripts Python en un bucle infinito.
De esta manera se consigue rearrancar los sripts en caso de que fallen. Para ello, se
debe crear un archivo sin extensin:
blabla
# Required-Start:
$syslog
# Required-Stop:
$syslog
# Default-Start:
2345
# Default-Stop:
016
# Short-Description: blabla
# Description:
#
### END INIT INFO
echo Iniciando la aplicacion Semaforo... #Muestra en pantalla un mensaje informando de la
#ejecucin de la funcin
sudo hciconfig hci0 reset #se resetea el dispositivo Bluetooth para cercieorasa de que funciona
sudo hciconfig hci0 piscan #se activa el modo descubrible del dispositivo
Nota: las primeras lneas que estn comentadas precedidas por una almohadilla (#) son
necesarias para que la funcin bash funcione.
102
6.2.4.2
Otorgamiento de permisos
6.2.4.3
103
DISEO Y DESARROLLO
#
# For more information see the manual pages of crontab(5) and cron(8)
#
# m h dom mon dow command
@reboot ./ elnombredenuestrafuncionbash
6.2.5
Resultados
En las diferentes fases de desarrollo del proyecto, se han realizado mltiples pruebas
de control que han permitido ir mejorando y aadiendo funcionalidades al sistema VAV.
La secuencia de resultados obtenidos tras la realizacin de dichas pruebas se relaciona
a continuacin.
6.2.5.1
Prueba 1
6.2.5.1.1
Resultado
6.2.5.2
Prueba 2
104
6.2.5.2.1
Resultado
6.2.5.3
Prueba 3
Se realizan una serie de pruebas para calcular el intervalo de tiempo que transcurre
desde que el dispositivo emisor envia el mensaje hasta que se reproduce en el recptor
y se devuelve la confirmacin de dicha reproduccin.
6.2.5.3.1
Resultado
6.2.5.4
Prueba 4
Se realizan pruebas en
6.2.5.4.1
Resultado
105
DISEO Y DESARROLLO
observarse que -5 db era el umbral para considerar que ambos dispositivos, emisor y
receptor, estaban lo suficientemente cercanos. De esta manera si el emisor rechaza al
receptor por no estar suficientemente cerca, la conexin se reinicia y permite que se
conecte el otro emisor.
6.2.5.5
Prueba 5
Se mide la demora que ocurre cuando el emisor, tras realizar la prueba de la potencia
de seal, para detectar si el receptor est dentro de la distancia de conexin y en caso
de que est demasiado lejano, reinicia el sistema y tiene que volver a establecer la
conexin.
6.2.5.5.1
Resultado
6.2.5.6
Prueba 6
6.2.5.6.1
Resultado
106
6.2.5.7
Prueba 7
6.2.5.7.1
Resultado
107
DISEO Y DESARROLLO
6.2.6
6.2.6.1
Ilustracin 13: distancias entre los semforo de la interseccin de Gran Va con Almeda Urquijo
y Alameda Mazarredo
108
Para resolver esta situacin crtica el sistema realiza una medicin de la potencia de la
seal recibida y y acepta valores inferiores a -5db, que corresponden a distancias entre
dispositivos emisor y receptor menores de 5 m, en cuyo caso acepta el valor y emite
las informaciones correspondientes. En caso de que la potencia de la seal no sea
menor a -5db, avisa de que se encuentra demasiado lejos y el dispositivo emisor se
reinicia permitiendo as que el receptor se conecte a otro emisor diferente. En esta
operacin de reinicio se invierten varios segundos en los que el usuario se desplaza
consiguiendo una localizacin diferente a la anterior.
En cualquier caso, esta situacin crtica solamente se da en caso de dispositivos que
entre s tienen distancias inferiores a 5 metros, lo cual, aunque es posible, ocurre muy
rara vez. Como puede verse en el caso del cruce que se ha tomado como referencia,
slo se da en los pasos oblicuos en los que lo previsible sera no instalar emisor alguno
ya que parece ms razonable y ms seguro cruzar la calzada por los lugares ms cortos.
6.2.6.2
La segunda situacin crtica es que coincidan al mismo tiempo dos usuarios con
deficiencias visuales en el mismo semforo. Esta contingencia se debe contemplar,
aunque sea poco probable. Para dar respuesta a esta situacin se debe proveer a cada
punto de dos sistemas emisores, ambos realizaran la misma funcin y el segundo slo
sera necesario en caso de tener que contactar con dos usuarios simultneamente. Este
sistema de contingencia es similar al utilizado por muchas empresas que disponen de
servicios duplicados para garantizar el servicio en caso de que uno de ellos falle. Cabra
plantearse qu ocurrira si la coincidencia se diese entre tres o ms usuarios, pero se
entiende que es remota la probabilidad de que esto ocurriese sin que esos usuarios
tuvieran relacin entre s y por ello pudieran recibir una nica informacin vlida para
todo el grupo.
109
DISEO Y DESARROLLO
6.2.7
6.2.7.1
Versin BASIC
6.2.7.2
Versin STANDARD
110
Identificacin de obstculos
Identificacin de ascensores
Coste total de los componentes: 57
6.2.7.3
Versin PLUS
111
DISEO Y DESARROLLO
112
7. PLANIFICACIN
7.1 DIAGRAMA DE GANTT DEL PROYECTO
Mediante el presente diagrama se aprecia la secuenciacin temporal de las diferentes
tareas correspondientes a las fases de este proyecto.
SEMANAS
ACTIVIDAD
10 11 12 13 14 15 16 17
113
PLANIFICACIN
114
8. PRESUPUESTO
En la siguiente tabla se muestran los elementos necesarios para llevar a cabo el
proyecto, as como su precio unitario y total. El precio de los elementos puede variar
dependiendo de donde se compren.
PRECIO UNITARIO
PRECIO TOTAL ()
CONCEPTO
CANTIDAD
Arduino UNO
14,45
14,45
Batera externa
18,90
18,90
9,00
5,00
12,00
8,51
Cable Ethernet
2,50
2,50
Cable HDMI
12,00
12,00
Cable Hembra-Hembra
40
0,10
4,00
Cable Macho-Macho
40
0,10
4,00
19,00
6,00
Conmutador
0,15
Cubo de metacrilato
13x13x13 cm
16,50
Embellecedor de diodo
Led
0,05
Fuente de alimentacin 5V
5,50
Gastos de envo y
comisiones
8,20
Led monocromtico
30
0,05
1,50
Material de oficina
15,00
15,00
8,95
44,75
Mini protoboard
transparente
6,00
8,75
Placa de metacrilalato
100x50cm
28,90
Protoboard
4,00
9,00
5,00
36,00
8,51
38,00
6,00
0,30
16,50
0,15
11,00
24,60
6,00
17,50
28,90
8,00
115
PRESUPUESTO
Pulsador
0,15
0,30
Raspberry Pi 2 Model
40,00
80,00
Resistencia 1K
0,05
0,25
Resistencia 330
0,05
0,25
Sensor de distancia
ultrasnico
5,12
5,12
TOTAL
418,48
Personas
116
Precio por
hora ()
Horas
Costo ()
estimadas
30,00
40
1.200,00
21,00
300
6.300,00
7.500,00
117
9.2.1
Redes Mesh
Utilizando tecnologa Wi-Fi en vez de Bluetooth se podran crear redes mesh. Esto
permitira usar solomente 3 dispositivos emisores para gestionar un cruce completo.
Para ello, habra que configurar el protocolo Babel en los dispositivos emisores y
receptores, que permitira localizar la situacin exacta del receptor as como su
trayectoria.
118
9.2.2
Si bien es cierto que el detector de obstculos del proyecto VAV puede sacar de un
apuro al usuario, ste solo detecta obstculos que estn en la lnea de deteccin de
este sensor, que normalmente ser una lnea perpendicular a la cadera del usuario.
Debido a esta limitacin este sensor no sera capaz de detectar obstculos pequeos
como por ejemplo peldaos o escalones.
Con la intencin de mejorar esta caracterstica del proyecto VAV, se contempla la idea
de colocar dos sensores. Ambos estaran orientados al suelo, uno de ellos verticalmente
y el otro con un ngulo.
El dispositivo debera ir colocado siempre a la misma altura en un bolsillo auxiliar del
usuario. De esta manera uno de los sensores detectara la distancia vertical que hay
desde el dispositivo hasta el suelo, mientras que el otro detectara una distancia oblicua
119
9.2.3
Esta mejora permitira reducir el tamao de los dispositivos y optimizarlos para el uso
exclusivo del proyecto VAV con la consecuente mejora para la experiencia del usuario.
La razn de ser de esta mejora reside en poder prescindir de todas las caractersticas
que ofrece una Raspberry Pi que para este proyecto no son necesarias. Esta
simplificacin de la placa conllevara una disminucin de costes.
9.2.4
120
10. BIBLIOGRAFA
10.1 RASPBERRY PI
Raspberry pi Spy, http://www.raspberrypi-spy.co.uk/wpcontent/uploads/2012/06/Raspberry-Pi-GPIO-Layout-Model-B-Plus-rotated2700x900.png (abril 2015)
Xataka Home, http://www.xatakahome.com/ordenadores/raspberry-pi-que-es-comosacarle-partido-y-algunos-de-los-proyectos-mas-interesantes (abril 2015)
Heraldo de Aragn,
http://www.heraldo.es/noticias/sociedad/2015/02/08/raspberry_ordenador_euros_3381
12_310.html
ComputerHoy.com, http://computerhoy.com/listas/software/mejores-distros-estrenartu-raspberry-pi-2-model-b-24013 (Marzo 2015)
Raspberry para torpes, http://raspberryparatorpes.net/raspberry-pi-sistemasoperativos/ (mayo 2015)
Raspberry Pi Shop, http://www.raspberryshop.es/descargas-software-raspberrypi.php (marzo 2015)
Raspberry Pi, https://www.raspberrypi.org/help/quick-start-guide/ (marzo 2015)
10.2 ARDUINO
Arduino,http://www.Arduino.cc/ (Marzo 2015)
Ethek, http://www.ethek.com/Arduino-que-es-y-para-que-sirve/ (Marzo 2015)
121
BIBLIOGRAFA
Rduinostar.com, http://rduinostar.com/documentacion/general/que-es-Arduino/(Marzo
2015)
Menosmedia, http://www.menosmedia.org/spip.php?article43 (Marzo 2015)
Ethek, http://www.ethek.com/raspberry-pi-vs-Arduino-cual-es-la-diferencia/ (Marzo
2015)
10.3 BLUETOOTH
Bluetooth, http://www.Bluetooth.com/Pages/Fast-Facts.aspx (Marzo 2015)
Bluetooth Developer Portal,
https://developer.Bluetooth.org/TechnologyOverview/Pages/Topology.aspx (Marzo
2015)
Profesores.elo,
http://profesores.elo.utfsm.cl/~agv/elo323/2s06/projects/MontoyaToro/ (Mayo 2015)
An Introduction to Bluetooth Programming, http://people.csail.mit.edu/albert/bluezintro/index.html (Mayo 2015)
10.4 WI-FI
ADSLzone, http://www.adslzone.net/2014/11/27/Wi-Fi-vs-Bluetooth-diferenciasventajas-e-inconvenientes/ (Marzo 2015)
Webopedia, http://www.webopedia.com/TERM/W/Wi_Fi.html (Marzo 2015)
Edutecne, http://www.edutecne.utn.edu.ar/monografias/standard_802_11.pdf (Marzo
2015)
122
10.5 PYTHON
Python, https://docs.python.org/3/library/index.html (Mayo 2015)
Python para principiantes, https://librosweb.es/libro/python/(Junio 2015)
Python, https://docs.python.org/3/tutorial/index.html (junio 2015)
Python, https://docs.python.org/2/tutorial (junio 2015)
123
BIBLIOGRAFA
124
11. ANEXOS
En este apartado se incluyen todos los script sin comentarios utilizados para la
elaboracin del proyecto.
11.1 CDIGO
DE
EMISOR
ENVIADORTIMER.PY
TIPO
SEMFORO:
import time
import bluetooth
from subprocess import call
from subprocess import check_output
port = 0x1001
tcruce = 7
delay = 3
target_name = "raspberrypi-0"
target_address = None
localizacion = "Calle Sendeja con Ayuntamiento "
lejos = "Estas lejos "
nearby_devices = bluetooth.discover_devices(duration = 3)
call(["hciconfig","hci", "reset"])
125
ANEXOS
while 1:
color = open('color.txt', 'r')
color = color.read()
tiempo = open('tiempo.txt', 'r')
tiempo = tiempo.read()
sock=bluetooth.BluetoothSocket(bluetooth.L2CAP)
sock.connect((target_address, port))
value = check_output(["sudo","hcitool","rssi",target_address])
if value is not 'Not connected.':
value = list(value)
i=0
while i<=18:
value[i]=''
i=i+1
print value
value=''.join(value)
print value
value = int(value)
if value<-5:
sock.send("S")
sock.send(localizacion)
sock.send(lejos)
sock.send(" ")
confirmacion = sock.recv(1024)
126
print(confirmacion)
time.sleep(1)
sock.close()
time.sleep(3)
exit()
else:
sock.send("S")
sock.send(localizacion)
sock.send(color)
num = int(float(tiempo))-delay
if num <= tcruce:
sock.send("Espere. Cambio de Color inminente")
else:
sock.send("y quedan "+tiempo+" segundos para cambiar de color")
confirmacion = sock.recv(1024)
print(confirmacion)
time.sleep(1)
sock.close()
else:
break
11.2 CDIGO
DE
ASCENSOR.PY
EMISOR
TIPO
ASCENSOR:
import time
import bluetooth
from subprocess import call
port = 0x1001
127
ANEXOS
target_name = "raspberrypi-0"
target_address = None
nearby_devices = bluetooth.discover_devices(duration = 4)
call(["hciconfig","hci", "reset"])
while 1:
sock=bluetooth.BluetoothSocket(bluetooth.L2CAP)
sock.connect((target_address, port))
sock.send("A")
sock.send("Ascensor Eside, planta numero 2")
confirmacion = sock.recv(1024)
print(confirmacion)
sock.close()
11.3 CDIGO
DE
OBSTACULO.PY
import time
128
EMISOR
TIPO
OBSTCULO:
import bluetooth
from subprocess import call
port = 0x1001
target_name = "raspberrypi-0"
target_address = None
nearby_devices = bluetooth.discover_devices(duration = 4)
call(["hciconfig","hci", "reset"])
while 1:
sock=bluetooth.BluetoothSocket(bluetooth.L2CAP)
sock.connect((target_address, port))
sock.send("E")
sock.send("Atencion!, escaleras, ")
sock.send("Te encuentras en la segunda planta de Eside junto al campo de futbol, ")
sock.send("Hay un ascensor en el pasillo ")
129
ANEXOS
confirmacion = sock.recv(1024)
print(confirmacion)
sock.close()
port = 0x1001
target_name = "raspberrypi-0"
target_address = None
nearby_devices = bluetooth.discover_devices(duration = 4)
call(["hciconfig","hci", "reset"])
130
while 1:
sock=bluetooth.BluetoothSocket(bluetooth.L2CAP)
sock.connect((target_address, port))
sock.send("D")
sock.send("Vedeles")
sock.send("Te encuentras en la segunda planta de Eside")
confirmacion = sock.recv(1024)
print(confirmacion)
sock.close()
#call("sudo","hciconfig","hci0","reset")
call(["sudo","hciconfig","hci0","piscan"])
time.sleep(1)
def semaforo():
print "Semaforo"
datacalle = client_sock.recv(1024)
datacolor = client_sock.recv(1024)
datatiempo = client_sock.recv(1024)
131
ANEXOS
filename = 'texto'
file=open(filename,'w')
file.write("Semaforo de "+datacalle+datacolor+datatiempo)
file.close()
if not GPIO.input(GPIO_SWITCH):
call('festival --tts --language spanish '+filename, shell=True)
client_sock.send("ok")
client_sock.close()
server_sock.close()
def ascensor():
print "Ascensor"
localizacion = client_sock.recv(1024)
print "received [%s]" % localizacion
filename = 'texto'
file=open(filename,'w')
file.write(localizacion)
file.close()
if not GPIO.input(GPIO_SWITCH):
call('festival --tts --language spanish '+filename, shell=True)
client_sock.send("ok")
def escalera():
print "Escalera"
132
localizacion = client_sock.recv(1024)
auxiliar = client_sock.recv(1024)
alternativa = client_sock.recv(1024)
print "received [%s]" % localizacion
print "received [%s]" % auxiliar
print "received [%s]" % alternativa
filename = 'texto'
file=open(filename,'w')
file.write(localizacion+auxiliar+alternativa)
file.close()
if not GPIO.input(GPIO_SWITCH):
call('festival --tts --language spanish '+filename, shell=True)
client_sock.send("ok")
def dependencia():
print "Dependencia"
localizacion = client_sock.recv(1024)
auxiliar = client_sock.recv(1024)
print "received [%s]" % localizacion
print "received [%s]" % auxiliar
filename = 'texto'
file=open(filename,'w')
file.write(localizacion+auxiliar)
file.close()
if not GPIO.input(GPIO_SWITCH):
call('festival --tts --language spanish '+filename, shell=True)
client_sock.send("ok")
133
ANEXOS
identificadores = {
"A": ascensor,
"E": escalera,
"D": dependencia,
"S": semaforo
}
while 1:
server_sock=bluetooth.BluetoothSocket( bluetooth.L2CAP )
port = 0x1001
server_sock.bind(("",port))
server_sock.listen(1)
client_sock,address = server_sock.accept()
print "Accepted connection from ",address
identificador = client_sock.recv(1024)
identificadores[identificador]()
=7
GPIO_SWITCH = 23
134
GPIO.setup(GPIO_TRIGGER,GPIO.OUT)
GPIO.setup(GPIO_ECHO,GPIO.IN)
GPIO.setup(GPIO_SWITCH,GPIO.IN, pull_up_down=GPIO.PUD_DOWN)
GPIO.output(GPIO_TRIGGER,False)
try:
while True:
if GPIO.input(GPIO_SWITCH):
GPIO.output(GPIO_TRIGGER,True)
time.sleep(0.00001)
GPIO.output(GPIO_TRIGGER,False)
start = time.time()
while GPIO.input(GPIO_ECHO)==0:
start = time.time()
while GPIO.input(GPIO_ECHO)==1:
stop = time.time()
elapsed = stop-start
distance = (elapsed * 34300)/2 por 2 D = (T x V)/2
print distance
if distance < 100:
filename = 'txt'
filee=open(filename,'w')
filee.write("Obstaculo a menos de un metro")
filee.close()
call('festival --tts --language spanish '+filename, shell=True)
time.sleep(1)
else:
if distance < 150:
135
ANEXOS
filename = 'txt'
filee=open(filename,'w')
filee.write("Obstaculo a menos de un metro y medio")
filee.close()
call('festival --tts --language spanish '+filename, shell=True)
time.sleep(1)
else:
if distance < 200:
filename = 'txt'
filee=open(filename,'w')
filee.write("Obstaculo a menos de dos metros")
filee.close()
call('festival --tts --language spanish '+filename, shell=True)
time.sleep(1)
except KeyboardInterrupt:
print "quit"
GPIO.cleanup()
11.7 CDIGO
PULSADOR.PY
DE
PULSADOR
while 1:
if GPIO.input(12):
136
DEL
RECEPTOR:
print "pulsando"
#call(["sudo","hciconfig","hci0","reset"])
call(["sudo","service","bluetooth","restart"])
time.sleep(1)
call(["sudo","hciconfig","hci0","piscan"])
data = "Estoy en marcha"
filename = 'texto'
file=open(filename,'w')
file.write(data)
file.close()
call('festival --tts --language spanish '+filename, shell=True)
else:
print "no estas pulsando"
time.sleep(0.5)
137