Вы находитесь на странице: 1из 155

Deusto

Facultad de Ingeniera
Universidad de Deusto
Ingeniaritza Fakultatea
Deustuko Unibertsitatea

Grado en Ingeniera en Tecnologas


de Telecomunicacin
Telekomunikazio Teknologien
Ingeniaritzako Gradua
Proyecto fin de grado
Gradu amaierako proiektua
VAV: diseo e implementacin de un sistema
que asiste mediante voz a personas con
deficiencia visual ante semforos,
obstculos, accesos y otros puntos de inters

Iigo Esteban Oleaga

Bilbao, julio de 2015

Deusto

Facultad de Ingeniera
Universidad de Deusto
Ingeniaritza Fakultatea
Deustuko Unibertsitatea

Grado en Ingeniera en Tecnologas


de Telecomunicacin
Telekomunikazio Teknologien
Ingeniaritzako Gradua
Proyecto fin de grado
Gradu amaierako proiektua
VAV: diseo e implementacin de un sistema
que asiste mediante voz a personas con
deficiencia visual ante semforos,
obstculos, accesos y otros puntos de inters

Iigo Esteban Oleaga

Bilbao, julio de 2015

PROYECTO FIN DE GRADO

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

PROYECTO FIN DE GRADO

ndice de Contenido
1.

Introduccin............................................................................................................................ 1

2.

Antecedentes ......................................................................................................................... 5
2.1

Hardware y Software personalizable ............................................................................ 5

2.2

Los Smartphones y sus aplicaciones ............................................................................ 5

2.3

Situacin de las personas con problemas visuales ...................................................... 6

2.3.1

Aplicaciones para personas con problemas visuales ............................................... 6

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

Walking Green Android ........................................................................................... 10

2.5.2

Proyecto InMoBS de Siemens ................................................................................ 11

2.6

Estudio de las tecnologas .......................................................................................... 12

2.6.1

Estudio sobre la comunicacin inalmbrica ............................................................ 12

2.6.2

Estudio sobre el Hardware ...................................................................................... 19

2.7

3.

Otros sistemas para ayudar a los invidentes a cruzar la calle .................................... 10

Estudio de la semafrica para el proyecto VAV .......................................................... 26

2.7.1

Componentes principales de un semforo genrico ............................................... 27

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

Aumento de personas con deficiencia visual en Espaa ........................................ 34

3.4.2

Fcil acceso al diseo de aplicaciones mviles: ..................................................... 34

3.4.3

Inversin constante o intermitente por los ayuntamientos en la adaptacin de las

ciudades a los discapacitados: ............................................................................................ 34


3.4.4

Creciente uso de dispositivos mviles por parte de toda la poblacin, incluidos los

ciegos o de visibilidad reducida: .......................................................................................... 35


4.

5.

6.

Objetivo y alcance ................................................................................................................ 37


4.1

Objetivos ...................................................................................................................... 37

4.2

Alcance ........................................................................................................................ 37

Metodologa .......................................................................................................................... 39
5.1

Fase 0: Elaboracin del Plan de Proyecto .................................................................. 39

5.2

Fase 1: Actividades previas ......................................................................................... 39

5.3

Fase 2: Comienzo general de proyecto ...................................................................... 40

5.4

Fase 3: Desarrollo especfico del proyecto ................................................................. 40

5.5

Fase 4: Experimentacin y depuracin del proyecto .................................................. 40

5.6

Fase 6: Elaboracin del Plan de Negocio ................................................................... 41

Diseo y Desarrollo .............................................................................................................. 43


6.1
6.1.1

El emisor .................................................................................................................. 43

6.1.2

El receptor ............................................................................................................... 45

6.2

vi

Diseo del sistema VAV .............................................................................................. 43

Desarrollo .................................................................................................................... 46

6.2.1

Estudio en profundidad de las conexiones Bluetooth ............................................. 46

6.2.2

Configuracin y funcionamiento del dispositivo emisor........................................... 49

6.2.3

Configuracin y funcionamiento del dispositivo receptor ........................................ 80

PROYECTO FIN DE GRADO

7.

6.2.4

Configuracin del arranque de los dispositivos emisores y receptores ................ 101

6.2.5

Resultados............................................................................................................. 104

6.2.6

Anlisis de situaciones crticas ............................................................................. 108

6.2.7

Versiones del dispositivo receptor ........................................................................ 110

Planificacin ....................................................................................................................... 113


7.1

Diagrama de Gantt del Proyecto ............................................................................... 113

8.

Presupuesto ....................................................................................................................... 115

9.

Conclusiones y lneas futuras ............................................................................................ 117


9.1

Conclusin ................................................................................................................. 117

9.2

Lneas futuras ............................................................................................................ 118

9.2.1

Redes Mesh ........................................................................................................ 118

9.2.2

Mejora del detector de obstculos ........................................................................ 119

9.2.3

Sustitucin de la Raspberry Pi por una placa computacional exclusiva ............... 120

9.2.4

Dotacin de inteligencia independiente al emisor de los semforos .................... 120

10.

Bibliografa .................................................................................................................... 121

10.1

Raspberry Pi .............................................................................................................. 121

10.2

Arduino ...................................................................................................................... 121

10.3

Bluetooth ................................................................................................................... 122

10.4

Wi-Fi .......................................................................................................................... 122

10.5

Python ....................................................................................................................... 123

10.6

Informacin adicional ................................................................................................ 123

10.7

Productos o aplicaciones .......................................................................................... 123

11.

Anexos........................................................................................................................... 125

11.1

Cdigo de Emisor tipo Semforo: enviadortimer.py ............................................. 125

11.2

Cdigo de Emisor tipo Ascensor: ascensor.py .................................................... 127

vii

11.3

Cdigo de Emisor tipo Obstculo: obstaculo.py ..................................................... 128

11.4

Cdigo de Emisor del tipo Dependencia: dependencia.py ..................................... 130

11.5

Cdigo de Receptor en modo recepcin de mensajes: clientecompleto.py ............. 131

11.6

Cdigo de Receptor en modo deteccin de obstculos: distancia.py....................... 134

11.7

Cdigo de Pulsador del receptor: pulsador.py .......................................................... 136

viii

PROYECTO FIN DE GRADO

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

PROYECTO FIN DE GRADO

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

PROYECTO FIN DE GRADO

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

PROYECTO FIN DE GRADO

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

PROYECTO FIN DE GRADO

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

que explicarn las

diferentes funcionalidades del sistema as como algunas lneas de desarrollo posterior.


Con finalidad fundamentalmente demostrativa se han elaborado recreaciones y
prototipos que facilitarn la comprensin del funcionamiento del proyecto. Los
materiales que se han utilizado para ello han sido elegidos atendiendo no tanto a la
idoneidad en un producto final sino a su utilizacin en el trabajo presente. Por ello una
implementacin definitiva del producto conllevara su adecuacin.

INTRODUCCIN

En el proyecto se 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 del semforo, su estado y el tiempo que resta para el cambio de color del
mismo. Asimismo, este sistema permite al usuario identificar puntos de inters como
pueden ser dependencias en el interior de un edificio, accesos a comercios, a servicios
pblicos... o lugares que puedan entraar peligro. Cabe destacar que existe la
posibilidad de dotar al dispositivo receptor de un sensor de distancia ultrasnico con el
fin de detectar obstculos en las proximidades, aumentando as las prestaciones de
utilizacin prctica del mismo.
Tanto el dispositivo emisor como el receptor es una Raspberry Pi. Este dispositivo es
un ordenador de bajo coste que tiene muchas posibilidades de desarrollo. Esta placa
tiene el tamao de una tarjeta de crdito, y esto facilita su integracin en diferentes
elementos sin causar gran impacto.
El dispositivo que permite enlazar emisor con receptor es un adaptador USB Bluetooth.
Este dispositivo es adecuado para el proyecto VAV tanto por su sencilla utilizacin y
conexin como por su precio reducido.
Se utiliza hardware de precio asequible debido a 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.
A continuacin, se desarrolla a grandes rasgos el funcionamiento del sistema:
El emisor busca un receptor constantemente hasta encontrarlo.
El receptor est a la escucha.
Cuando el receptor es localizado por el emisor, se establece una conexin.

PROYECTO FIN DE GRADO

El emisor analiza la potencia de la seal Bluetooth para determinar si el


receptor est a la distancia adecuada.
El emisor enva su identificador seguido de mensajes tiles para el usuario
El receptor captura la informacin recibida, la identifica, la guarda y la
reproduce utilizando un sintetizador de voz.
El receptor enva una confirmacin de la reproduccin de los mensajes.
El emisor recibe la confirmacin y repite el proceso desde el punto nmero 3
hasta que el receptor salga del campo de accin del emisor.
El sistema se reinicia.
En conclusin, el sistema 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.

INTRODUCCIN

PROYECTO FIN DE GRADO

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.

2.1 HARDWARE Y SOFTWARE PERSONALIZABLE


Tan grande es el aumento de las tecnologas de los dispositivos inteligentes que su uso
se ha convertido en cotidiano. Cada vez son ms los usuarios que no tienen suficiente
con lo ya creado que dedican su tiempo en crear nuevos inventos y aplicaciones.
Es por este motivo que ltimamente se hayan puesto muy de moda las tarjetas Arduino3
y Raspberry Pi, que son ordenadores de bajo costo y permiten desarrollar infinidad de
aplicaciones y sistemas si disponemos de conocimientos bsicos de programacin.

2.2 LOS SMARTPHONES Y SUS APLICACIONES


Los datos revelan que el Smartphone se ha consolidado definitivamente en nuestras
vidas de tal modo que ya se puede hablar del mercado espaol como un mercado
maduro. La penetracin del Smartphone alcanza el 80% del total en 2013, frente al 59%
de 2012 y del 39% del ao anterior.4
Adems, el uso del Smartphone alcanza a todos los tramos de edad, si bien su uso est
ms extendido entre las capas ms jvenes de la poblacin.

Del ingls: Personal Digital Assistant. Ordenador de bolsillo.


Del ingls: telfonos inteligentes que tienen mltiples funciones a parte de poder realizar y
recibir llamadas.
3 Ordenador de bajo costo
4 Estudio. Datos poblacin Espaola.
2

ANTECEDENTES

Adicionalmente, una de las tendencias ms relevantes en el uso de los dispositivos


mviles es el espectacular incremento del uso de las aplicaciones. En 2012, con la
penetracin del Smartphone en un 59%, el 41% de los usuarios se conectaba a Internet
a travs de aplicaciones. En el ao 2013, con una penetracin en el mercado del 80%,
esa cifra alcanzaba ya al 71% de los usuarios.

2.3 SITUACIN DE LAS PERSONAS CON PROBLEMAS


VISUALES
Cada da salen nuevas aplicaciones, dispositivos o sistemas que nos facilitan la vida y
se integran con objetos inteligentes. El caso es que, si bien todos estos avances estn
al alcance de la mayora, no es as para algunos. Este es el caso de los ciegos o
personas con deficiencia visual.
Segn los datos de los afiliados a la ONCE (Organizacin Nacional de Ciegos
Espaoles) cada vez hay menos personas con ceguera, es decir, personas que no ven
nada en absoluto o que solo perciben luz. Sin embargo, cada vez hay ms afiliados con
deficiencia visual, que son aquellos que mantienen un resto visual cuantificable.
Los ciegos en Espaa son una minora ya que representan el 0,26% de nuestra
sociedad. Es decir, 1 de cada 400 personas tiene problemas de visin y por lo tanto,
tienen problemas para desenvolverse en la vida cotidiana.

2.3.1

Aplicaciones para personas con problemas visuales

En la actualidad, an con un abanico bastante ms limitado que el resto, los ciegos y


personas con deficiencia visual tambin disponen de aplicaciones tiles para su vida
cotidiana. Un ejemplo de ellas podra ser KNFB Reader, que lee textos escritos en voz
alta, Ariadne GPS, que ubica al usuario en un mapa hablado o LookTel Money Reader,
que es capaz de identificar billetes de todas las divisas.

PROYECTO FIN DE GRADO

Como hemos citado en la introduccin el presente proyecto va a consistir en desarrollar


una aplicacin para este colectivo.

2.4 SISTEMAS PARA AYUDAR A LOS INVIDENTES A


CRUZAR LA CALLE IMPLANTADOS EN CIUDADES
ESPAOLAS.
2.4.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

Cumple la funcin de ayudar a los Seal acstica molesta.


invidentes a cruzar.
Baldosas peligrosas y molestas.
Es un sistema ya implantado en la
mayora de ciudades espaolas.
Tabla 1: aspectos destacables y carencias de las ayudas para cruzar la calle en la ciudad de Bilbao

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

Para la coordinacin con los semforos La seal acstica contina siendo el


solo es preciso realizar un pequeo mismo y son todos los vecinos los que
cambio en la configuracin del terminal.
Bluetooth

detecta

la

presencia

oyen el sonido.

sin El ruido permite conocer el estado del

necesidad de que el invidente haga nada. semforo pero no el tiempo de cambio de


verde a rojo.
Substituible por el aparato de la ONCE.
Tabla 2: aspectos destacables y carencias de las ayudas para cruzar la calle en la ciudad de Vigo

2.4.3

Elche

El Ayuntamiento de Elche, en colaboracin con la Fundacin ONCE, ha implantado


dispositivos para que personas con discapacidad visual activen la acstica de los

PROYECTO FIN DE GRADO

semforos, a travs de un mando a distancia o por el Bluetooth del mvil. Los


dispositivos funcionarn slo cuando el usuario lo requiera para evitar as ruidos
innecesarios.
El proyecto, denominado Pasblue, ha sido desarrollado por una empresa de la
Fundacin ONCE a partir de un procedimiento de aviso acstico para semforos
peatonales que se integra en una ptica de tecnologa LED para que los peatones
puedan cruzar la calzada con seguridad.
La informacin acstica emitida a travs del sistema se basa en tonos de frecuencia y
duracin diferenciadas que permiten al usuario aproximarse y situarse en la zona de
inicio del cruce. El mtodo se activa bien mediante el mando a distancia proporcionado
al usuario por la ONCE o por el Bluetooth del mvil cuando la persona lo precise.
En la actualidad se ha habilitado dicho dispositivo en siete cruces semafricos de Elche,
segn las prioridades de los usuarios con problemas de visin.

Destacable

Carencias

Para la coordinacin con los semforos La seal acstica contina siendo el


solo es preciso realizar un pequeo mismo y son todos los vecinos los que
cambio en la configuracin del terminal.
Bluetooth

detecta

la

presencia

oyen el sonido.

sin El ruido permite conocer el estado del

necesidad de que el invidente haga nada. semforo pero no el tiempo de cambio de


verde a rojo.
Substituible por el aparato de la ONCE.
Tabla 3: aspectos destacables y carencias de las ayudas para cruzar la calle en la ciudad de Elche

ANTECEDENTES

2.5 OTROS SISTEMAS PARA AYUDAR A LOS INVIDENTES


A CRUZAR LA CALLE
2.5.1

Walking Green Android

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

PROYECTO FIN DE GRADO

Destacable
La

locucin

vibracin

Carencias
se

emite Posibles fallos en la deteccin de los

directamente al usuario de la aplicacin.

colores ya que funciona a travs de la


cmara del mvil.

Al usar la cmara y ser esta la que hace el


barrido, no requiere una instalacin Necesaria la cmara que implica un
adicional en los semforos.

consumo alto de batera.


La aplicacin depende de la memoria y la
capacidad del mvil.

Tabla 4: aspectos destacables y carencias de Walking Green Android

Extrado de Tendencias21, http://www.tendencias21.net/Una-app-ayuda-a-los-ciegosa-moverse-por-la-ciudad_a39494.html

2.5.2

Proyecto InMoBS de Siemens

La multinacional alemana Siemens est desarrollando un sistema que ayuda a las


personas ciegas y deficientes visuales a andar de forma segura a travs de las ciudades.
En colaboracin con la Universidad Tcnica de Braunschweig y varios socios, Siemens
est trabajando en un sistema de asistencia integral a las personas con discapacidad
visual, en el marco de un proyecto de investigacin titulado InMoBS (Inner-city mobility
support for the blind and visually impaired).
La solucin se basa en los datos transmitidos entre la infraestructura de trfico y los
dispositivos mviles de las personas ciegas. Las situaciones crticas se producen en las
intersecciones, por ejemplo. Aunque las seales de los semforos por lo general emiten
un pitido para informar a las personas con discapacidad visual, stas no saben cunto
tiempo va a estar la luz en verde o por dnde exactamente es seguro caminar. Para

11

ANTECEDENTES

proporcionar dicha informacin, Siemens integra en los Smartphones su tecnologa


car2x, que se utiliza para transmitir datos entre los coches y las infraestructuras de
trfico. De esta manera proporciona a sus usuarios un planificador de rutas en lnea que
pueden utilizar en casa para encontrar la ruta con menos barreras a sus destinos. La
aplicacin de Smartphone emite seales de vibracin o gua verbalmente a los usuarios
a lo largo de esta ruta.

Destacable

Carencias

Es una aplicacin completsima, con Necesario un sistema especfico tanto en


muchsima

informacin

tanto

conductores como viandantes.

para los coches, como los semforos y por lo


tanto muy caro.
Sistema

poco maduro debido a la

complejidad y el tiempo necesario para


llevarlo a cabo.
Proyecto a largo plazo.
Tabla 5: aspectos destacables y carencias del proyecto InMoBS

2.6 ESTUDIO DE LAS TECNOLOGAS


2.6.1

Estudio sobre la comunicacin inalmbrica

Este proyecto trata de dar solucin a un problema de accesibilidad y movilidad de las


personas con deficiencia visual, por eso, la comunicacin entre dispositivos tiene que
ser wireless5 para tener libertad de movimiento. Para ello se estudiarn los dos tipos
de tecnologas de conexin wireless por excelencia: la tecnologa Bluetooth y la
tecnologa Wi-Fi.

Inalmbrico

12

PROYECTO FIN DE GRADO

2.6.1.1

Tecnologa Bluetooth

2.6.1.1.1

Qu es la tecnologa Bluetooth?

La tecnologa Bluetooth es un estndar inalmbrico que permite conectar dispositivos


y servicios de forma segura. Fue creado por Ericsson en 1994, y la idea principal de
esta tecnologa era ser una alternativa a los cables de datos RS-232. Sin embargo, hoy
en da, esta tecnologa se utiliza para muchos ms tipos de conexiones inalmbricas.
El ncleo del sistema Bluetooth consta de un transceptor de RF, de banda base, y la
pila de protocolo. El sistema ofrece servicios que permiten la conexin de varios
dispositivos y el intercambio de una gran variedad de clases de datos.

2.6.1.1.2

Alcance de la tecnologa Bluetooth

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

Capa de enlace Bluetooth

El Protocolo de Gestin de Enlaces (LMP, Link Manager Protocol) controla y negocia


todos los aspectos de la operacin de la conexin Bluetooth entre dos dispositivos.
Esto incluye la puesta a punto y el control de las comunicaciones lgicas y enlaces
lgicos, y tambin de los enlaces fsicos. El Protocolo de Gestin de Enlaces se utiliza
para la comunicacin entre los gestores de enlace (LM, Link Managers) en los dos
dispositivos conectados por la comunicacin lgica ACL.
Los dispositivos que estn activos dentro de una piconet (red de comunicacin que
crean dos o ms equipos Bluetooth, puede estar compuesta hasta un mximo de siete
unidades) tienen una comunicacin lgica asncrona predeterminada para el transporte
de la sealizacin del protocolo LMP. Es lo que se conoce como comunicacin lgica
ACL. Esta comunicacin es la que se establece cuando un dispositivo se une a una
piconet. Se pueden crear comunicaciones lgicas adicionales si resulta necesario para
transportar el flujo de datos sncronos.

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

Cmo funciona la tecnologa Wi-Fi?

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

PROYECTO FIN DE GRADO

electromagntico asociado con la propagacin de ondas de radio. Cuando una corriente


de RF se suministra a una antena, se crea un campo electromagntico a continuacin
que es capaz de propagarse a travs del espacio.
La pieza clave de cualquier red inalmbrica es un punto de acceso (AP, Access Point).
El trabajo principal de un punto de acceso es transmitir una seal inalmbrica que los
ordenadores pueden detectar y a la que se pueden conectar. Para conectarse a un
punto de acceso y unirse a una red inalmbrica, las computadoras y los dispositivos
deben estar equipados con adaptadores de red inalmbrica.

Ilustracin 1: Esquema de red Wi-Fi

2.6.1.2.3

Servicios de la tecnologa Wi-Fi

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:

Autenticacin Abierta (Open System Authentication), significa que cualquiera


que solicite autenticarse ser aceptado.

Autenticacin de llave compartida (Shared Key Authentication), significa que


para poder autenticarse en la red, el nodo debe conocer la frase de paso.

15

ANTECEDENTES

2.6.1.2.3.2

Deautenticacin

Ocurre cuando el AP o el nodo inalmbrico desea terminar la autenticacin. Implica una


desasociacin.

2.6.1.2.3.3

Privacidad

Est satisfecha en 802.11 con un sistema de encriptacin llamado WEP (Wired


Equivalent Privacy). Cabe destacar que es opcional y que existen otros sistemas de
encriptacin.

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

Capa de enlace Wi-Fi

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

El mtodo de acceso mltiple en IEEE 802.11 es la llamada Funcin de Distribucin


Coordinada (Distributed Cordination Function, DCF) que utiliza el conocido mtodo de
Acceso Mltiple por Censado de Portadora con Prevencin de Colisiones, (Carrier
Sense Multiple Access/ Collision Avoidance, CSMA/CA). Este mtodo requiere que cada
nodo inalmbrico escuche el medio compartido para saber si otros nodos se encuentran

16

PROYECTO FIN DE GRADO

transmitiendo. Si el canal est desocupado, el nodo puede transmitir, caso contrario, el


nodo escucha hasta que la transmisin finalice, y entra en un perodo de espera
aleatorio para luego volver a ejecutar el procedimiento. Esto previene que algunas
estaciones monopolicen el canal al comenzar a transmitir inmediatamente despus que
termine la otra. La recepcin de los paquetes en el DCF requiere de confirmaciones por
parte del destino. Hay un corto perodo de tiempo entre el envo del ACK por parte del
destinatario llamado Short Inter Frame Space, SIFS. En 802.11, los paquetes de
confirmacin ACK tiene prioridad frente a cualquier otro trfico, logrando una de las
caractersticas sobresalientes que es la gran velocidad de las confirmaciones. Cualquier
transmisin distinta a un ACK deber esperar por lo menos un DIFS (DCF Inter Frame
Space) antes de transmitir algn dato. Si el transmisor detecta un medio ocupado
nuevamente, vuelve al tiempo de BackOff pero reduciendo el tiempo de espera. As se
repetir hasta que el tiempo de espera llegue a CERO donde se habilita al nodo a
transmitir, luego de que termine la prxima transmisin.

2.6.1.3

Comparativa entre Bluetooth y Wi-Fi

Ambas tecnologas tienen grandes posibilidades y pueden servir prcticamente para lo


que queramos. Sin embargo, atendiendo a las necesidades de este proyecto, la
tecnologa Bluetooth es la ms adecuada. Apoyndose en la tabla de abajo, se
desarrollan los motivos por los que Bluetooth es la tecnologa elegida.

Caractersticas

Bluetooth

Wi-Fi

Frecuencia

2.4 GHz

2.4 / 3.6 / 5 GHz

Ancho de Banda

24 Mbps

1 Gbps

Seguridad

Baja

Moderada

17

ANTECEDENTES

Rango

30 metros

300 metros

Consumo

Reducido

Elevado

Tabla 6: comparativa entre Bluetooth y Wi-Fi

Si bien es cierto que la frecuencia de transmisin es importante, ambas se encuentran


en el rango de 2.4 GHz, aunque Wi-Fi tenga la posibilidad de usar otros rangos tambin.
Por lo tanto, a nivel de frecuencia no hay grandes diferencias entre las tecnologas.
Sin embargo, el ancho de banda del Bluetooth es bastante ms reducido que el de WiFi. A pesar de que el estndar IEEE 807.11 tenga cuatro veces ms ancho de banda
que el Bluetooth, como la informacin que se transmitir ser poco pesada, es suficiente
con 24 Mbps.
A lo que a seguridad se refiere, esta vez tambin, es la tecnologa Wi-Fi la que ms
avanzada est. Los mensajes que se mandarn contendrn la informacin del color del
semforo y de la calle en la que se encuentra el usuario, por lo que no se necesitar
seguridad en el canal de transmisin. Adems, como se quiere que la conexin se haga
lo ms instantnea posible, el hecho de que haya menos seguridad agilizar bastante
el proceso de conexin.
La tecnologa Bluetooth requiere que los dispositivos que se van a comunicar estn
cerca. Sin embargo Wi-Fi tiene un rango mucho mayor. En el caso de este proyecto,
nos interesa que el usuario est muy cerca del semforo para que la conexin se realice
cuando se est al lado del semforo. La tecnologa Wi-Fi podra acarrear confusiones
ya que podra sincronizar el dispositivo del usuario con un semforo de una calle en la
que el usuario no se encuentra.
Por ltimo, el consumo de las tecnologas es algo muy a tener en cuenta. El proyecto
plantea la utilizacin de dispositivos mviles que no pueden ser conectados a la

18

PROYECTO FIN DE GRADO

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

La tecnologa Wi-Fi tiene mejores caractersticas y por lo tanto ms posibilidades en


materia de Telecomunicaciones de propsito general. Sin embargo, el proyecto no
requiere de grandes recursos ni prestaciones, an ms, la limitacin de recursos puede
considerarse una mejora en ciertos aspectos, tales como el alcance y la autonoma.
Como en muchos otros rdenes la disponibilidad de recursos no es una ventaja en s
misma, sino la optimizacin del uso de dichos recursos. Por ello se entiende como
preferente el uso de la tecnologa Bluetooth que tiene los recursos idneos para este
proyecto.

2.6.2

Estudio sobre el Hardware

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

No obstante, se ha desechado esta opcin debido a que la versatilidad de las funciones


de un Smartphone van en detrimento de las horas de autonoma de la batera, lo cual
es un serio inconveniente si no se puede recargar el telfono. Adems, el sistema del
proyecto VAV utiliza una batera de 10.000 mAh frente a los 2600 mAh que suelen
disponer los Smartphones de gama media. Asimismo, el dispositivo receptor VAV hace
un uso exclusivo de la batera para realizar las funcionalidades para las que ha sido
programado, mientras que un Smartphone est dedicado a mltiples funcionalidades, y
por lo tanto, un conlleva gasto energtico mayor. A todo lo anterior, cabra aadir que la
mayora de usuarios de Smartphone utilizan el mismo sin apagarlo en ningn momento,
haciendo un consumo constante de batera. Por el contrario, el usuario del sistema VAV
enciende el dispositivo nica y exclusivamente durante los tiempos que considera
precisos.
Abundando en la idea de la preferencia de otros dispositivos distintos al Smartphone, el
sistema VAV tiene la posibilidad de aadirle opcionalmente un sensor de distancia
ultrasnico que le confiere la capacidad de detectar obstculos, posibilidad no presente
en un telfono inteligente.
Un aspecto a analizar a la hora de elegir el tipo de dispositivos es el lenguaje de
programacin que utilizan, siendo la opcin ms deseable que el dispositivo emisor y
receptor coincidan. Debido a que no se contempla utilizar un dispositivo Android como
emisor, utilizar un dispositivo Android como receptor dificultara las tareas de
programacin y deteccin de errores, lo cual sita al Smartphone en desventaja con
otras opciones.

20

PROYECTO FIN DE GRADO

2.6.2.2
2.6.2.2.1

Raspberry Pi
Qu es la Raspberry Pi?

La Raspberry Pi es una placa de desarrollo que, desde su aparicin en 2012, no ha


dejado de ganar usuarios y posibilidades.
La Raspberry Pi Foundation es una organizacin sin nimo de lucro que dio sus
primeros pasos como fundacin en 2008, pero que en realidad llevaba gestndose
desde mucho tiempo atrs. En 2011 desarroll la Raspberry Pi como ordenador de bajo
coste para facilitar la enseanza de la informtica en los colegios, pero hasta 2012 no
comenz a fabricarse. La fundacin recibe apoyos del laboratorio de informtica de la
Universidad de Cambridge y de Broadcom.

Ilustracin 2: Raspberry Pi 2 Model B

2.6.2.2.2

Caracteristicas de la Raspberry Pi

La Raspberry Pi 2 (Model B) tiene en su corazn una CPU ARM Cortex-A7 de 4 ncleos


a 900 MHz acompaada de 1 GB de memoria RAM LPDDR2. Muchos mviles son ms
potentes que este miniordenador y tienen hasta tres veces ms memoria RAM, sin
embargo, este nuevo modelo obtiene una puntuacin 6 veces mayor que su antecesora
en los principales test de rendimiento.
En lo referente a puertos, cuenta con 4 USB 2.0 y una ranura MicroSD. La Raspberry Pi
no tiene disco duro propio, por lo que el usuario deber conectarle un Pendrive o un

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.

Ilustracin 3: esquema de la Raspberry Pi 2 Model B

2.6.2.2.3

Sistemas Operativos

Raspberry Pi oferta oficialmente varios sistemas operativos. Adems, para que su


instalacin resulte ms fcil, la fundacin tambin ofrece instaladores que hacen el
trabajo de instalacin automticamente.

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

PROYECTO FIN DE GRADO

esta forma, tengamos muy fcil probar la distribucin que mejor se ajuste a nuestras
necesidades.

2.6.2.2.3.2

Sistema operativo Raspbian

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

Sistema operativo Pidora

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

Sistema operativo Windows 10 Pi 2

El centro de desarrolladores de Microsoft anunci la compatibilidad de Windows 10 con


la Raspberry Pi 2. Se podr instalar una versin de Windows 10 que est diseada para
instalar pequeas aplicaciones que conecten dispositivos. Esta edicin es gratuita y no
ser tan completa como la edicin que puedes aadir a un PC. Windows 10 para
Raspberry Pi est disponible desde finales del 2015.

6
7

Sistemas operativos
Sistema operativo en base Linux

23

ANTECEDENTES

2.6.2.3
2.6.2.3.1

Arduino
Qu es Arduino?

Arduino es una plataforma de electrnica, en la que tanto el Software como el Hardware


son de cdigo abierto. Esto significa que en su pgina oficial puedes encontrar desde
esquemas para montar tu propio dispositivo, hasta ejemplos de funcionamiento de lo
ms complejos, los cuales puedes modificar a tu antojo bien sea por comodidad, mejora
o simple gusto.
Los dispositivos Arduino estn basados en un microcontrolador Atmel, que vara en
funcin del modelo que se adquiera. Este microcontrolador viene ensamblado (o bien lo
ensamblamos nosotros si adquirimos los componentes sueltos) en una placa junto a
otros componentes, tales como resistencias, condensadores, osciladores, pulsadores,
etc y una serie de pines o conectores, a travs de los cuales conectaremos otros
componentes para comunicarnos con el Arduino.

Ilustracin 4: Arduino UNO

24

PROYECTO FIN DE GRADO

Casi la totalidad de dispositivos Arduino se conectan por usb al ordenador, y se emplea


su propio entorno de desarrollo para escribir el cdigo de nuestro programa y cargarlo
al dispositivo.

2.6.2.3.2

Caractersticas de Arduino

Arduino cuenta con 14 entradas/salidas digitales, de las cuales 6 se pueden utilizar


como salidas PWM (Modulacin por ancho de pulsos) y otras 6 son entradas analgicas.
Adems, incluye un resonador cermico de 16 MHz, un conector USB, un conector de
alimentacin, una cabecera ICSP y un botn de reseteado. La placa incluye todo lo
necesario para que el microcontrolador haga su trabajo, basta conectarla a un ordenador
con un cable USB o a la corriente elctrica a travs de un transformador.

Ilustracin 5: esquema de Arduino UNO

2.6.2.4

Comparativa entre Raspberry Pi y Arduino

Arduino es un microcontrolador programable. Es decir, lo conectamos a nuestro


ordenador y le programamos una funcin a sus sensores. Por ejemplo, podemos
programar que una luz parpadee o aadirle un servomotor y crear un robot que se
mueva en crculos o se mueva evitando chocarse gracias a sensores ultrasnicos. La
capacidad de Arduino est limitada a tu imaginacin s, pero los proyectos llevados a
cabo por medio de esta gama de microcontroladores estn enfocados a la electrnica y

25

ANTECEDENTES

la robtica bsica. Arduino no piensa, no cuenta con un sistema operativo, no toma


decisiones y no se conecta a internet salvo que compremos un escudo con Ethernet.
Por otro lado, Raspberry Pi no es ni ms ni menos que un micro ordenador que corre
con Linux. Cuenta con 512 MB o 1 GB de RAM y dispone de entradas y salidas para
teclado, monitor, ratn y un cable Ethernet. Cierto es que Raspberry Pi se ha utilizado
en numerosas ocasiones en combinacin con Arduino para crear proyectos de robtica
pero esta no es su funcin principal.

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.

2.7 ESTUDIO DE LA SEMAFRICA PARA EL PROYECTO


VAV
Se considera oportuno estudiar el funcionamiento y los componentes de los semforos,
ya que se pretende integrar el sistema VAV en ellos. Cierto es que existen en el mercado
diferentes modelos e incluso diferentes tecnologas de control semafrico, pero para
este estudio tomaremos como referencia un modelo genrico.

26

PROYECTO FIN DE GRADO

2.7.1

Componentes principales de un semforo genrico

En el presente apartado se detallan los principales componentes de un semforo


genrico. Se debe tener en cuenta que la informacin que se detalla en los siguientes
subapartados puede no ser del todo exacta dependiendo del modelo de semforo.

2.7.1.1

Armario

El armario contiene el conjunto de elementos necesarios para hacer funcionar un grupo


de semforos. Este armario es resistente a la corrosin y protege los elementos de las
adversidades climatolgicas.

Ilustracin 6: armario donde se encuentra la inteligencia de los semforos

2.7.1.2

Regulador semafrico

El regulador semafrico presenta la arquitectura que se muestra en la siguiente figura:

27

ANTECEDENTES

Diagrama 1: regulador semafrico genrico

A continuacin se describen las caractersticas y funciones de los elementos principales


del regulador semafrico genrico:

2.7.1.2.1

Unidad central (CPU)

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

El regulador se alimentar a la tensin nominal de 230 VAC (directamente de la


acometida elctrica) y debe funcionar correctamente dentro del rango de tensiones de

28

PROYECTO FIN DE GRADO

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

Se dispone de interruptores magnetotrmico y diferencial monobloc con rearme


automtico entre el SAI y el regulador, y entre la acometida elctrica y el SAI, con el
objetivo de garantizar la seguridad en cada etapa del circuito de alimentacin.

Diagrama 2: interruptores magnetotrmicos y diferencial


monobloc

SAI (Sistema de alimentacin ininterrumpida): garantiza el funcionamento del sistema


en caso de corte de suministro elctrico.
El SAI deber ser capaz de alimentar en plenas condiciones de funcionamiento y
constantemente al conjunto regulador-semforos, y opcionalmente a los detectores, a
lo largo de toda la vida del SAI, durante: 2 horas en luminosidad plena 3 horas en
luminosidad atenuada

2.7.1.2.4

Entradas digitales

Entradas para detectores y pulsadores: El regulador dispone al menos de 8


entradas digitales para detectores y pulsadores, activadas mediante contactos
libres de tensin.
Entradas auxiliares: El regulador dispone al menos de 8 entradas auxiliares,
activadas mediante contactos libres de tensin.

29

ANTECEDENTES

2.7.1.2.5

Salidas para control de grupos

El regulador dispondr de un interruptor general de 2 posiciones con la siguiente


funcionalidad:
Posicin normal. Cuando el interruptor est en posicin normal, el estado de
las seales de salida a semforos corresponder a las rdenes dadas por el
regulador.
Posicin de test. Cuando el interruptor pase a la posicin de test, el regulador
entrar en estado de prueba.
2.7.1.2.6

Circuitos de gobierno de las salidas

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

Circuitos de comprobacin de las salidas

El regulador dispone de un mecanismo para detectar si las salidas de grupos de circuito


reciben la tensin que les corresponde. En caso de percibir una anomala, enva un
aviso al centro de control.

2.7.1.2.8

Sincronismo (Coordinacin por cable)

Receptor de sincronismo: el regulador tiene una entrada para sincronizacin.


Emisor de sincronismo: el regulador dispone de una salida para sincronizar con
otros equipos. Esta salida permitir la creacin de reas coordinadas mediante
la conexin de equipos en cascada.

30

PROYECTO FIN DE GRADO

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

El regulador dispone de 4 puertos de comunicacin:


Un puerto Ethernet 10/100Mb.
Un puerto RS232 para la conexin de un terminal porttil de mantenimiento.
Un puerto RS232 de reserva para otros usos.
Un puerto USB de reserva.

2.7.2

Integracin del dispositivo emisor del proyecto VAV en un


semforo comn

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

Colocacin del dispositivo emisor

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

Conexin del dispositivo emisor al semforo

Despus del estudio de los componentes y las funciones de un semforo, se puede


determinar que en la mayora de los modelo, el regulador del cruce tendr una salida
por cada color del semforo.
Para que el dispositivo emisor pueda recoger la informacin de los colores, se conectar
cada salida del regulador a un pin de la Raspberry Pi. Esta salida deber antes ser
adaptada a 3.3V ya que ste es el voltaje que pueden soportar los pines de la Raspberry
Pi. Por otro lado, el dispositivo emisor estar alimentado elctricamente por la misma
fuente que alimenta el semforo, pero nuevamente, adaptando esa alimentacin a 5V,
que es el consumo que tiene la Raspberry Pi.
En caso de que el semforo disponga de un temporizador, que muestra a los peatones
el tiempo que queda para que el semforo cambie de color, se puede conectar una o
varias salidas del regulador (las necesarias para poder obtener el dato del temporizador)
que transmitan esa informacin a la Raspberry Pi. Cabe destacar, que esta salida (o
salidas) tambin deber estar adaptadas a 3.3V.

32

PROYECTO FIN DE GRADO

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

Aumento de personas con deficiencia visual en Espaa

Segn datos proporcionados por la ONCE el nmero de afectados por deficiencias


visuales va aumentando da a da, y esta tendencia se mantendr durante los prximos
aos. Por ello, el alto nmero de beneficiarios de este proyecto le confieren valor al
mismo.

3.4.2

Fcil acceso al diseo de aplicaciones mviles:

La tecnologa utilizada es hoy en da muy accesible y observando la evolucin de los


ltimos aos se prev que su accesibilidad sea an mayor. Por tanto, este proyecto
podr ser mejorado y depurado en el futuro con tecnologas cada vez ms cercanas a
usuarios y desarrolladores.

3.4.3

Inversin constante o intermitente por los ayuntamientos en


la adaptacin de las ciudades a los discapacitados:

En los ltimos tiempos es creciente la sensibilizacin de las instituciones por dar


respuestas a todos los ciudadanos evitando discriminaciones de aquellos grupos que

34

PROYECTO FIN DE GRADO

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

Creciente uso de dispositivos mviles por parte de toda la


poblacin, incluidos los ciegos o de visibilidad reducida:

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

PROYECTO FIN DE GRADO

4. OBJETIVO Y ALCANCE
4.1 OBJETIVOS
Los objetivos perseguidos en la realizacin del presente proyecto son los siguientes:

Construir un prototipo de semforo emisor.

Construir un prototipo de emisor polivalente (emisor de obstculo,


dependencia...)

Construir un prototipo de dispositivo receptor del sistema VAV.

Comunicar una Raspberry Pi con la otra.

Conseguir que en una Raspberry Pi se reproduzcan mensajes utilizando un


sintetizador de voz.

Conseguir una conexin automtica entre Raspberry Pi.

Enviar automtica y constantemente de mensajes Bluetooth.

Detectar obstculos mediante un sensor de distancia ultrasnico

Conseguir determinar si el usuario est a la distancia adecuada del emisor.

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.

Implantacin del sistema en un semforo real de una calle del municipio de


Bilbao.

Reduccin del tamao del dispositivo receptor (Raspberry Pi).

Diseo e implementacin de una aplicacin mvil para poder prescindir de un


dispositivo receptor del sistema.

Comercializacin y venta del sistema.

37

OBJETIVO Y ALCANCE

Implantacin en los semforos de una localidad concreta.

Fusin con algn proyecto de SmartCity8.

Ciudad inteligente y conectada.

38

PROYECTO FIN DE GRADO

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.

Determinar las tareas a llevar a cabo en la realizacin de este proyecto.

Determinar de las duraciones de las tareas

5.1.2

Resultados
Listado de las caractersticas de los productos existentes en el mercado a la
hora de elaborar este proyecto.

Diagrama de Gantt donde se especifican las fechas y duraciones de las tareas


de este proyecto.

5.2 FASE 1: ACTIVIDADES PREVIAS


5.2.1

Objetivos

Analizar el funcionamiento de un semforo genrico.

Comparar las caractersticas de Bluetooth y Wi-Fi.

Comparar las caractersticas de Arduino y Raspberry Pi

5.2.2

Resultados

Diagrama del funcionamineto de un semforo genrico.

Tabla comparativa de las caractersitcas de conectividad entre Bluetooth y WiFi.

Tabla comparativa a nivel econmico, de hardware y de software entre Arduino


y Raspberry Pi.

39

METODOLOGA

5.3 FASE 2: COMIENZO GENERAL DE PROYECTO


5.3.1

Objetivos

Construir un prototipo de semforo.

Configurar de la Raspberry Pi.

5.3.2

Resultados

Prototipo de semforo con leds sobre una protoboard.

Raspberry configurada con el sistema operativo Raspbian y sistema Bluetooth


de comunicacin.

5.4 FASE 3: DESARROLLO ESPECFICO DEL PROYECTO


5.4.1

Objetivos

Enviar y recibir mensajes escritos interpretables mediante Bluetooth.

Relacionar el mensaje Bluetooth recibido con el archivo de sonido a reproducir.

Detectar distancia del usuario mediante el valor de la potencia de recepcin del


Bluetooth.

5.4.2

Resultados

Recepcin coherente con el mensaje enviado.

Tabla de asignacin que relacione los identificadores con los sonidos.

Comportamiento condicional del sistema en funcin de la distancia a la que se


encuentre el usuario.

5.5 FASE 4: EXPERIMENTACIN Y DEPURACIN DEL


PROYECTO
5.5.1

40

Objetivos

Analizar el alcance real del Bluetooth en las condiciones del proyecto.

Analizar la velocidad de conexin entre emisor y receptor.

Experimentar el sistema en condiciones habituales.

PROYECTO FIN DE GRADO

5.5.2

Experimentar el sistema en condiciones excepcionales.

Resultados

Documento de Especificaciones Tcnicas del sistema.

Documento de propuestas de mejora a tener en cuenta en las versiones


posteriores del sistema.

5.6 FASE 6: ELABORACIN DEL PLAN DE NEGOCIO


5.6.1

Objetivos

Calcular el gasto total del prototipo.

Analizar los gastos de implantacin en un semforo.

Contactar con empresas y organismos susceptibles de estar interesadas en el


proyecto.

5.6.2

Resultados

Memoria econmica del presente proyecto.

Presupuesto de implantacin del sistema en un semforo real.

Listado de empresas y organismos con intereses afines al contenido del


proyecto y una toma de contacto con los mismos.

41

METODOLOGA

42

PROYECTO FIN DE GRADO

6. DISEO Y DESARROLLO
En el presente apartado se plasman los elementos de diseo y las lneas de desarrollo
que proporcionan consistencia al proyecto.

6.1 DISEO DEL SISTEMA VAV


El proyecto VAV define un sistema emisor-receptor que utiliza la tecnologa Bluetooth
para transmitir mensajes de texto que posteriormente son convertidos en mensajes de
voz mediante el sintetizador de voz Festival.

Diagrama 3: elementos de Sistema VAV e interrelacin de los mismos

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

El emisor enviar informacin a los dispositivos receptores. Esta informacin hace


referencia a la localizacin de lugares, dependencias, obstculos y semforos. Estos

43

DISEO Y DESARROLLO

ltimos, tambin proveern al usuario de informacin sobre el color y el tiempo que


queda para que ste cambie.

Ilustracin 7: dispositivo emisor del sitema VAV conectado a un simulador de semforo

Ilustracin 8: dispositivo emisor VAV

44

PROYECTO FIN DE GRADO

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 9: dispositivo receptor del Sistema VAV

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

Estudio en profundidad de las conexiones Bluetooth

En el presente apartado se hace referencia al estudio que ha sido necesario realizar


para determinar cul es la mejor forma de comunicar dos dispositivos mediante una
conexin Bluetooth. En dicho estudio se realizaron tres fases:

6.2.1.1

Fase 1: Conexin de dispositivos con perfil GAVDP

El perfil GAVDP (General Audio/Video Distribution Profile) es un perfil de Bluetooth que


establece una conexin preparada para el streaming de audio y vdeo.

Diagrama 4: conexin Bluetooth con el perfil GAVDP

Este perfil pareca atractivo ya que toda la programacin estara concentrada en el


dispositivo emisor, quedando para el receptor la nica funcin de establecer la conexin.
De este modo los mensajes se reproduciran en el dispositivo emisor y el dispositivo
receptor hara de altavoz. Como se puede apreciar en la figura de arriba el dispositivo
emisor adoptara el papel de iniciador mientras que el otro dispositivo adoptara el
papel de aceptador. Baseband, LMP, L2CAP y SDP son protocolos de Bluetooth

46

PROYECTO FIN DE GRADO

necesarios para establecer la conexin. AVDTP es el protocolo de negociacin donde


se definen las caractersticas del streaming.

Diagrama 5: modelo del perfil GAVDP

Esta opcin se desestim debido a que resultaba complicado llevar un control


exhaustivo de la conexin establecida. Debido a esto, no se saba cundo haba
finalizado la reproduccin de un mensaje, o si se haba reproducido este correctamente,
para poder iniciar una nueva emisin del mensaje.

6.2.1.2

Fase 2: Creacin de un socket mediante el protocolo


L2CAP y envo de archivo de audio.

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

Multiplexacin de varias fuentes de paquetes, comprobando el protocolo de las


capas superiores para as adaptarlo antes del reensamblaje.
Proporcionar una buena gestin para la transmisin unidireccional a otros
dispositivos Bluetooth.
Gestin de la calidad de servicio (QoS), del ingls Quality of Service; para los
protocolos de las capas superiores. En esta fase negocia el tamao mximo del
campo de datos de las tramas. Con ello, evita que algn dispositivo enve
paquetes tan grandes que puedan desbordar al receptor.
L2CAP se utiliza para comunicarse sobre el acoplamiento ACL del anfitrin, y su
conexin se establece despus de que el enlace ACL haya sido configurado.
Se pretenda enviar archivos de audio a travs de este protocolo, pero como bien se ha
detallado arriba, este protocolo slo permite paquetes de un tamao mximo de 64 KB,
tamao que se supera con facilidad a la hora de hablar de archivos de audio. Esta
limitacin implicara tener que segmentar todos aquellos paquetes que superasen este
lmite lo que sucedera en la mayora de los casos, provocando una utilizacin de CPU
ms exigente. A la hora de enviar un archivo de audio la segmentacin tambin sera
costosa en trminos de tiempo provocando retrasos importantes en la recepcin de los
mensajes que dificultaran una sincronizacin con los cambios de estado de un
semforo.
Este protocolo funcionaba muy bien pero fue preciso buscar otra solucin que permitiese
enviar archivos ms pequeos para evitar la segmentacin.

6.2.1.3

Fase 3: Creacin de un socket mediante el protocolo


L2CAP y envo de texto plano.

Esta tercera fase proporcion la solucin al problema de la segmentacin de los


paquetes de la segunda fase. La clave fue reducir el tamao de los archivos a enviar y
esto se consigui enviando texto plano y obligando al receptor a asumir la reproduccin

48

PROYECTO FIN DE GRADO

de dicho texto mediante un sintetizador de voz. As se solucionaba de forma aceptable


el problema de la sincronizacin con el cambio de estado de los semforos.

6.2.2

Configuracin y funcionamiento del dispositivo emisor

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.

Cabe recordar que hay 4 tipos de emisores desarrollados por el momento:


Emisor de semforo: proporciona al usuario informacin sobre, la localizacin
de un semforo, su color y del tiempo que resta para cambiar de color (solo si
la informacin del temporizador est disponible)
Emisor de ascensor: proporciona al usuario informacin de la localizacin del
mismo.
Emisor de dependencia o lugar: proporciona al usuario informacin de la
localizacin y de la dependencia o lugar a la que se puede entrar.
Emisor de obstculo: proporciona al usuario la advertencia de un obstculo y le
propone una alternativa para evitar dicho obstculo.
El comportamiento de este tipo de dispositivos se explica en el siguiente diagrama de
estados:

Diagrama 6: estados del dispositivo emisor

49

DISEO Y DESARROLLO

A continuacin se desarrollan en detalle las caractersticas, configuracin y


funcionalidades de cada uno de los tipos de emisor.

6.2.2.1

Emisor de semforo

Este tipo de emisor es el ms complejo de todos debido a que debe capturar la


informacin sobre el estado del semforo y su temporizador.

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

PROYECTO FIN DE GRADO

Diagrama 7: visin general del dispositivo emisor de tipo semforo

51

DISEO Y DESARROLLO

6.2.2.1.2

Explicacin por bloques del script que ejecuta el dispositivo

El script que ejecutar la Raspberry Pi se llama enviadortimer.py y est escrito en


Python. Este programa se encuentra guardado en el directorio raz del dispositivo.

6.2.2.1.2.1

Bloque 1: importacin de libreras necesarias

A continuacin se importan las libreras necesarias para desarrollar el script:


import time: Importa la librera time para poder aadir retardos en el programa.
import Bluetooth: Importa la librera Bluetooth para poder crear sockts y mandar textos.
from subprocess import call: Importa la funcin call de la librera subprocess para poder
ejecutar comandos de Debian (ajenos al lenguaje Python).
from subprocess import check_output: Importa la funcin check_output de la librera
subprocess para ejecutar comandos de Debian y guarda el elemento que devuelvan.

Diagrama 8: importacin de libreras para el emisor del tipo "Semforo

6.2.2.1.2.2

Bloque 2: definicin de variables necesarias

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

PROYECTO FIN DE GRADO

target_name = "raspberrypi-0": El dispositivo que se quiere encontrar se llama raspberrypi-o.


target_address = None: Se declara la variable donde se guardar la MAC del dispositivo
encontrado. De momento no tiene valor, por lo tanto es None.
localizacion = Calle Sendeja con Ayuntamiento : se guarda la localizacin en una variable para
que sea ms sencillo cambiarla si fuera necesario.
lejos = Estas lejos: se guarda una variable con la frase Estas lejos para advertirle al usuario
de que se tiene que acercar ms.

Diagrama 9: declaracin de variables en el emisor del tipo "Semforo"

6.2.2.1.2.3

Bloque 3: bsqueda de dispositivo receptor

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

Diagrama 10: bsqueda de dispositivos receptores en el emisor de tipo "Semforo"

6.2.2.1.2.4

Bloque 4: sacar en pantalla en resultado de la busqueda

Para ayudar al testeo del script se imprime en pantalla lo ocurrido en la bsqueda:


if target_address is not None:: Si la MAC no es None...
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 11: impresin en pantalla del resultado de la bsqueda

6.2.2.1.2.5

Bloque 5: lectura de la informacin a enviar

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

PROYECTO FIN DE GRADO

tiempo = tiempo.read(): se lee la informacin del tiempo

Diagrama 12: apertura y lectura de ficheros en el emisor del


tipo "Semforo

6.2.2.1.2.6

Bloque 6: establecimiento de la conexin

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

Bloque 7: determinacin de la distancia del usuario

Antes de enviar ningn mensaje, se analizar la potencia de la seal para determinar si


el receptor est demasiado lejos o no. En caso de estarlo, el script vuelve a empezar:
value = check_output(["sudo","hcitool","rssi",target_address]): Se llama a la funcin
rsside la herramienta hcitool que devuelve un texto con la potencia en dB de la
conexin establecida.
if value is not 'Not connected.':: Si el valor es NO es Not conected y por tanto haya
detectado la potencia...
value = list(value): ...guarda el mensaje como una lista de caracteres

55

DISEO Y DESARROLLO

i=0: declaracin de una variable auxiliar


while i<=18:: sabiendo que los primeros 18 caracteres son texto intil
value[i]='': Eliminamos dichos caracteres
i=i+1: contamos una vuelta del bucle para quitar los caracteres
value=''.join(value): Convertimos la nueva lista en una cadena de caracteres
print value: Imprimimos el valor de la conexin en dB
value = int(value): convertimos la cadena de caracteres a un nmero

Diagrama 14: determinacin de si el receptor est cerca o no en el emisor del tipo "Semforo"

6.2.2.1.2.8

Bloque 8: envo de mensajes

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

PROYECTO FIN DE GRADO

else:: si la potencia de la conexin no es menos de -5dB


sock.send("S"): se enva el identificador de S de semaforo
sock.send(localizacion): se envia la localizacin
sock.send(color): se enva el color del semforo

Diagrama 15: envo de mensajes dependiendo de la potencia de la conexin en el emisor del tipo
Semforo

6.2.2.1.2.9

Bloque 9: Anlisis del tiempo para cambiar de color

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

Bloque 10: recepcin de la confirmacin

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

PROYECTO FIN DE GRADO

Diagrama 17: espera de recepcin de confirmacin de


reproduccin en el dispositivo receptor

6.2.2.2

Emisor de ascensor

Este tipo de emisor es sencillo. Se coloca a la entrada de un ascensor.


6.2.2.2.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 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

Explicacin por bloques del script que ejecuta el dispositivo

El script que ejecutar la Raspberry se llama ascensor.py y est escrito en Python.


Este programa se encuentra guardado en el directorio raz del dispositivo.

59

DISEO Y DESARROLLO

Diagrama 18: explicacin general del emisor del tipo "Ascensor"

60

PROYECTO FIN DE GRADO

6.2.2.2.2.1

Bloque 1: importacin de libreras necesarias

A continuacin se importan las libreras necesarias para desarrollar el script.


import time: Importa la librera time para poder aadir retardos en el programa.
import Bluetooth: Importa la librera Bluetooth para poder crear sockts y mandar textos.
from subprocess import call: Importa la funcin call de la librera subprocess para poder
ejecutar comandos de Debian (ajenos al lenguaje Python).
from subprocess import check_output: Importa la funcin check_output de la librera
subprocess para ejecutar comandos de Debian y guarda el elemento que devuelvan.

Diagrama 19: importacin de libreras necesarias en el emisor del tipo


"Ascensor"

6.2.2.2.2.2

Bloque 2: definicin de variables necesarias

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

Diagrama 20: declaracin de variables en el emisor del tipo "Ascensor

6.2.2.2.2.3

Bloque 3: bsqueda de dispositivo receptor

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.

Diagrama 21: bsqueda de dispositivos receptores en el emisor del tipo "Ascensor

6.2.2.2.2.4

Bloque 4: sacar en pantalla en resultado de la bsqueda

Para ayudar al testeo del script se imprime en pantalla lo ocurrido en la bsqueda.


if target_address is not None:: Si la MAC no es None...

62

PROYECTO FIN DE GRADO

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

Bloque 5: establecimiento de la conexin

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

Bloque 6: determinacin de la potencia de la conexin

Antes de enviar ningn mensaje, se analizar la potencia de la seal para determinar si


el receptor est demasiado lejos o no. En caso de estarlo, el script vuelve a empezar.

63

DISEO Y DESARROLLO

value = check_output(["sudo","hcitool","rssi",target_address]): Se llama a la funcin


rsside la herramienta hcitool que devuelve un texto con la potencia en dB de la
conexin establecida.
if value is not 'Not connected.':: Si el valor es NO es Not conected y por tanto haya
detectado la potencia...
value = list(value): ...guarda el mensaje como una lista de caracteres
i=0: declaracin de una variable auxiliar
while i<=18:: sabiendo que los primeros 18 caracteres son texto intil
value[i]='': Eliminamos dichos caracteres
i=i+1: contamos una vuelta del bucle para quitar los caracteres
value=''.join(value): Convertimos la nueva lista en una cadena de caracteres
print value: Imprimimos el valor de la conexin en dB
value = int(value): convertimos la cadena de caracteres a un nmero

Diagrama 24: determinacin de si el receptor est lo suficintemente cerca o no en el el emisor de tipo


"Ascensor"

6.2.2.2.2.7

Bloque 7: envo de mensajes

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

PROYECTO FIN DE GRADO

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("A"): se enva el identificador de A de Ascensor
sock.send(localizacion): se enva la localizacin del ascensor
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.
else:: si no estuviera conectado...
break: comenzamos el bucle de nuevo

Diagrama 25: envo de mensaje Bluetooth dependiendo de la posicin del receptor y espera de confirmacin
de reproduccin

6.2.2.3

Emisor de dependencia o lugar

Este tipo de emisor es sencillo. Se coloca a la entrada de una depenciencia o lugar,


como por ejemplo la entrada a una universidad, como la entrada a uno aseos o la
entrada a un comercio.

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

PROYECTO FIN DE GRADO

Diagrama 26: explicacin general del dispositivo emisor del tipo "Dependencia"

67

DISEO Y DESARROLLO

6.2.2.3.2

Explicacin por bloques del script que ejecuta el dispositivo

El script que ejecutar la Raspberry se llama dependencia.py y est escrito en Python.


Este programa se encuentra guardado en el directorio raz del dispositivo.

6.2.2.3.2.1

Bloque 1: importacin de libreras necesarias

A continuacin se importan las libreras necesarias para desarrollar el script.


import time: Importa la librera time para poder aadir retardos en el programa.
import Bluetooth: Importa la librera Bluetooth para poder crear sockts y mandar textos.
from subprocess import call: Importa la funcin call de la librera subprocess para poder
ejecutar comandos de Debian (ajenos al lenguaje Python).
from subprocess import check_output: Importa la funcin check_output de la librera
subprocess para ejecutar comandos de Debian y guarda el elemento que devuelvan.

Diagrama 27: importacin de libreras en el emisor del tipo


"Dependecia"

6.2.2.3.2.2

Bloque 2: definicin de variables necesarias

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

PROYECTO FIN DE GRADO

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 = "Universidad de Deusto ": se guarda la localizacin
auxiliar = Entrada de Padre Arrupe: se guarda un mensaje que oriente con ms precisin al
usuario

Diagrama 28: declaracin de variables en el emisor del tipo "Dependencia"

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

Bloque 3: bsqueda de dispositivo receptor

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

Diagrama 29: declaracin de variables en el emisor del tipo "Dependencia"

6.2.2.3.2.4

Bloque 4: sacar en pantalla en resultado de la busqueda

Para ayudar al testeo del script se imprime en pantalla lo ocurrido en la bsqueda.


if target_address is not None:: Si la MAC no es None...
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 30: impresin en pantalla del resultado de la bsqueda en el emisor del tipo "Dependecia"

6.2.2.3.2.5

Bloque 5: establecimiento de la conexin

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

PROYECTO FIN DE GRADO

Diagrama 31: creacin de socket y peticin de conexin en el emisor del tipo "Dependecia"

6.2.2.3.2.6

Bloque 6: determinacin de la potencia de la conexin

Antes de enviar ningn mensaje, se analizar la potencia de la seal para determinar si


el receptor est demasiado lejos o no. En caso de estarlo, el script vuelve a empezar.
value = check_output(["sudo","hcitool","rssi",target_address]): Se llama a la funcin
rsside la herramienta hcitool que devuelve un texto con la potencia en dB de la
conexin establecida.
if value is not 'Not connected.':: Si el valor es NO es Not conected y por tanto haya
detectado la potencia...
value = list(value): ...guarda el mensaje como una lista de caracteres
i=0: declaracin de una variable auxiliar
while i<=18:: sabiendo que los primeros 18 caracteres son texto intil
value[i]='': Eliminamos dichos caracteres
i=i+1: contamos una vuelta del bucle para quitar los caracteres
value=''.join(value): Convertimos la nueva lista en una cadena de caracteres
print value: Imprimimos el valor de la conexin en dB
value = int(value): convertimos la cadena de caracteres a un nmero

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

Bloque 7: envo de mensajes

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

PROYECTO FIN DE GRADO

sock.close(): se cierra el elemento socket y comienza el bucle de nuevo.


else:: si no estuviera conectado...
break: comenzamos el bucle de nuevo

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

enviados. Pasado un tiempo, si el receptor se encuentra en el rango de accin del


emisor, este ltimo vuelve a mandar los mensajes.

6.2.2.4.2

Explicacin por bloques del script que ejecuta el dispositivo

El script que ejecutar la Raspberry se llama obstaculo.py y est escrito en Python.


Este programa se encuentra guardado en el directorio raz del dispositivo.

74

PROYECTO FIN DE GRADO

Diagrama 34: explicacin general del emisor del tipo "Obstculo"

75

DISEO Y DESARROLLO

6.2.2.4.2.1

Bloque 1: importacin de libreras necesarias

A continuacin se importan las libreras necesarias para desarrollar el script.


import time: Importa la librera time para poder aadir retardos en el programa.
import Bluetooth: Importa la librera Bluetooth para poder crear sockts y mandar textos.
from subprocess import call: Importa la funcin call de la librera subprocess para poder
ejecutar comandos de Debian (ajenos al lenguaje Python).
from subprocess import check_output: Importa la funcin check_output de la librera
subprocess para ejecutar comandos de Debian y guarda el elemento que devuelvan.

Diagrama 35: importacin de libreras en el emisor del tipo "Obstculo"

6.2.2.4.2.2

Bloque 2: definicin de variables necesarias

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

PROYECTO FIN DE GRADO

lejos = "estas lejos ": se guarda el mensaje de ests lejos para informar a usuario si se diera el
caso

Diagrama 36: declaracin de variables en el emisor del tipo "Obstculo"

6.2.2.4.2.3

Bloque 3: bsqueda de dispositivo receptor

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.

Diagrama 37: bsqueda de dispositivo receptor en el emisor del tipo "Obstculo"

77

DISEO Y DESARROLLO

6.2.2.4.2.4

Bloque 4: sacar en pantalla en resultado de la busqueda

Para ayudar al testeo del script se imprime en pantalla lo ocurrido en la bsqueda.


if target_address is not None:: Si la MAC no es None...
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 38: impresin en pantalla del resultado de la bsqueda en el emisor del tipo "Obstculo"

6.2.2.4.2.5

Bloque 5: establecimiento de la conexin

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

Bloque 6: determinacin de la potencia de la conexin

Antes de enviar ningn mensaje, se analizar la potencia de la seal para determinar si


el receptor est demasiado lejos o no. En caso de estarlo, el script vuelve a empezar.

78

PROYECTO FIN DE GRADO

value = check_output(["sudo","hcitool","rssi",target_address]): Se llama a la funcin


rsside la herramienta hcitool que devuelve un texto con la potencia en dB de la
conexin establecida.
if value is not 'Not connected.':: Si el valor NO es Not conected y por tanto haya
detectado la potencia...
value = list(value): ...guarda el mensaje como una lista de caracteres
i=0: declaracin de una variable auxiliar
while i<=18:: sabiendo que los primeros 18 caracteres son texto intil
value[i]='': Eliminamos dichos caracteres
i=i+1: contamos una vuelta del bucle para quitar los caracteres
value=''.join(value): Convertimos la nueva lista en una cadena de caracteres
print value: Imprimimos el valor de la conexin en dB
value = int(value): convertimos la cadena de caracteres a un nmero

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

Bloque 7: envo de mensajes

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

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
else:: si no estuviera conectado...
break: comenzamos el bucle de nuevo

Diagrama 41: envo de mensajes segn la distancia del receptor en el emisor del tipo "Obstculo"

6.2.3

Configuracin y funcionamiento del dispositivo receptor

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

PROYECTO FIN DE GRADO

Diagrama 42: estados del dispositivo receptor

En el segundo, comenzar a funcionar el sensor de distancia que informar al usuario


si tiene algn obstculo cerca. El conmutador servir para cambiar de un modo a otro.
Por ltimo, el pulsador reinicia e servicio Bluetooth e informa al usuario de que el
dispositivo est funcionando. Esta funcionalidad est pensada por si es usuario tiene
dudas de que el dispositivo est funcionando correctamente.

81

DISEO Y DESARROLLO

Diagrama 43: estados del receptor en modo de deteccin de obstculos.

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

Explicacin por bloques del script que escucha los mensajes


de los emisores

82

PROYECTO FIN DE GRADO

Diagrama 44: explicacin general del dispositivo receptor

83

DISEO Y DESARROLLO

6.2.3.1.1

Bloque 1: importacin de libreras necesarias

A continuacin se importan las libreras necesarias para poder desarrollar el sript.


import Bluetooth: Importa la librera Bluetooth para poder crear sockets y mandar textos
from subprocess import call: Importa la funcin call de la librera subprocess para poder
ejecutar comandos de Debian (ajenos al lenguaje Python)
import time: Importa la librera time para poder aadir retardos en el programa
import RPi.GPIO as GPIO: importa la libreara para controlar los pines de la Raspberry

Diagrama 45: importacin de libreras en el dispositivo receptor

6.2.3.1.2

Bloque 2: definicin de la configuracin de los pines GPIO

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

PROYECTO FIN DE GRADO

Diagrama 46: configuracin de los pines GPIO en el dispositivo receptor

6.2.3.1.3

Bloque 3: establecimiento de modo descubrible

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

Diagrama 47: establecimiento del dispositivo


receptor como descubrible

6.2.3.1.4

Bloque 4: definicin de la funcin semaforo()

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

Diagrama 48: definicin de la funcin semaforo ()

6.2.3.1.5

Bloque 5: guardado y reproduccin de la informacin recibida del

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

PROYECTO FIN DE GRADO

Diagrama 49: guardado y reproduccin de los mensajes en la funcin semaforo()

6.2.3.1.6

Bloque 6: definicin de la funcin ascensor()

A continuacin se define la funcin ascensor(), la cual ser la encargada de recibir los


mensajes emitidos por los emisores del tipo ascensor (A).
def ascensor():: comienzo de la funcin semaforo()
print "Ascensor": se imprime la el nombre de la funcin en pantalla
localizacion = client_sock.recv(1024): se espera recibir la localizacin del ascensor
print "received [%s]" % localizacion: se imprime la informacin recibida

Diagrama 50: definicin de la funcin ascensor()

87

DISEO Y DESARROLLO

6.2.3.1.7

Bloque 7: guardado y reproduccin de la informacin recibida del

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

Diagrama 51: guardado y reproduccin de los mensajes en la funcin ascensor()

88

PROYECTO FIN DE GRADO

6.2.3.1.8

Bloque 8: definicin de la funcin obstaculo()

En este bloque se define la funcin obstculo, encargada de recibir aquellos mensajes


de los emisores del tipo obstculo (O).
def obstaculo():: comienzo de la funcin obstaculo()
print "Obstaculo": se imprime el nombre de la funcin
localizacion = client_sock.recv(1024): se espera recibir la localizacin del obstculo
auxiliar = client_sock.recv(1024): se espera recibir informacin auxiliar
alternativa = client_sock.recv(1024): se espera recibir una ruta altenativa al obstculo
print "received [%s]" % localizacion: Se imprime la informacin recibida
print "received [%s]" % auxiliar
print "received [%s]" % alternativa

Diagrama 52: definicin de la funcin obstaculo()

6.2.3.1.9

Bloque 9: guardado y reproduccin de la informacin recibida del

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

file=open(filename,'w'): Se escribe esa variable en otra que se llama file


file.write(localizacion+auxiliar+alternativa): 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
server_sock.close():: cerramas el segundo socket

Diagrama 53: guardado y reproduccin de los mensajes en la funcin obstaculo()

6.2.3.1.10

Bloque 10: definicin de la funcin dependencia()

En este bloque se define la funcin de dependencia. Esta funcin recibir la informacion


proveniente de los emisores del tipo dependencia (D).
def dependencia():: definicin de la funcin dependencia
print "Dependencia": se impirme el nombre de la funcin

90

PROYECTO FIN DE GRADO

localizacion = client_sock.recv(1024): se espera recibir la informacin de la localizacin


auxiliar = client_sock.recv(1024): se espera recibir informacin auxiliar
print "received [%s]" % localizacion: se imprime la informacin recibida
print "received [%s]" % auxiliar

Diagrama 54: definicin de la funcin dependecia()

6.2.3.1.11

Bloque 11: guardado y reproduccin de la informacin recibida de la

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

server_sock.close():: cerramas el segundo socket

Diagrama 55: guardado y reproduccin de los mensajes en la funcin dependecia()

6.2.3.1.12

Bloque 12: declaracin de los indicadores:

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

PROYECTO FIN DE GRADO

Diagrama 56: definicin de identificadores en dispositivo receptor

6.2.3.1.13

Bloque 13: Bucle que establece las conexiones Bluetooth

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

Explicacin del script que reinicia el servicio Bluetooth

A continuacin se escribe el desarrollo del script que reinicia el servicio Bluetooth


cunado el usuario presiona el pulsador del dispositivo receptor. El script se llama
pulsador.py y est alojado en el directorio raz del dispositivo.
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
GPIO.setmode(GPIO.BOARD) : se indica que la numeracin de los GPIOs que se va a utilizar
es la posicin que ocupan en la placa
GPIO.setup(12, GPIO.IN, pull_up_down=GPIO.PUD_DOWN): se establece el pin nmero doce
como una entrada y se dice que por defecto est apagado.
while 1:: se crea un bucle infinito
if GPIO.input(12):: si la entrada detecta algo...
print "pulsando": se imprime en pantalla pulsando
call(["sudo","service","Bluetooth","restart"]): se reinicia el servicio Bluetooth de la
Raspberry Pi

94

PROYECTO FIN DE GRADO

time.sleep(1): se espera un segundo para dejar tiempo a que los cambios se


apliquen
call(["sudo","hciconfig","hci0","piscan"]): se estable el dispositivo en modo
descubrible
data = "Estoy en marcha": se crea un mensaje que informa de que el dispositivo
est en marcha
filenamer = 'txto' : se crea un archivo
filer=open(filename,'w'): se abre para escritura
filer.write(data): se escribe el mensaje informativo
filer.close(): se cierra el archivo
call('festival --tts --language spanish '+filenamer, shell=True): Se reproduce el
archivo mediante el sintetizador de voz Festival
else:: si la entrada no detecta nada...
print "no estas pulsando": se impreme este mensaje en pantalla
time.sleep(0.5): se espera medio segundo para reiniciar el bucle.

Diagrama 58: explicacin general de la funcin de reseteo

6.2.3.3

Explicacin por bloques del script que habilita


dispositivo receptor en modo detector de obstculos

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

posicin, funciona como detector unidireccional de obstculos. El script se llama


distancia.py y est alojado en el directorio raz del dispositivo.

Diagrama 59: explicacin general de la funcin de deteccin de


obstculos del dispositivo receptor

96

PROYECTO FIN DE GRADO

6.2.3.3.1

Bloque 1: importacin de libreras necesarias

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

Diagrama 60: importacin de libreras en la funcin de deteccin de


obstculos en el dispositivo receptor

6.2.3.3.2

Bloque 2: Definicin de las funciones de los pines GPIO

A continuacin se definen qu funciones van a realizar los pines GPIO de la Raspberry


Pi. En este caso necesitaremos habilitar 3 pines, dos para las funciones del sensor, y
otro para detectar la entrada que proporcione el conmutador.

GPIO.setmode(GPIO.BCM): se indica que la numeracin de los GPIOs que se va a utilizar es el


nombre de los mismos y NO la posicin que ocupan en la placa
GPIO_TRIGGER = 25: se usa el pin GPIO 25 como TRIGGER
GPIO_ECHO

= 7: se usa el pin GPIO 7 como ECHO

97

DISEO Y DESARROLLO

GPIO_SWITCH = 23: se usa el pin GPIO 23 como SWITCH


GPIO.setup(GPIO_TRIGGER,GPIO.OUT): se configura el Trigger como salida
GPIO.setup(GPIO_ECHO,GPIO.IN): se configura el Echo como entrada
GPIO.setup(GPIO_SWITCH,GPIO.IN, pull_up_down=GPIO.PUD_DOWN): se configura el
Switch como entrada
GPIO.output(GPIO_TRIGGER,False): se pone el pin 25 en LOW

Diagrama 61: establecimiento de la funcin de los pines GPIO del dispositivo receptor

6.2.3.3.3

Bloque 3: toma de distancia

En este bucle infinito se determina la distancia a la que est el obstculo. El sensor


emite un ultrasonido y lo recibe calculando el tiempo que ha tardado en volver. Ese
tiempo, por la velocidad del sonido y entre dos nos da la distancia a la que est el
obstculo.

while True: se crea un bucle infinito


if GPIO.input(GPIO_SWITCH): si la entrada del switch detecta algo
GPIO.output(GPIO_TRIGGER,True)se enva un pulso de ultrasonidos
time.sleep(0.00001): se hace una pequena pausa
GPIO.output(GPIO_TRIGGER,False): se apaga el pulso
start = time.time(): guarda el tiempo actual en la variable start
while GPIO.input(GPIO_ECHO)==0:: mientras el sensor no reciba seal...

98

PROYECTO FIN DE GRADO

start = time.time(): se mantiene el tiempo actual


while GPIO.input(GPIO_ECHO)==1:: si el sensor recibe seal...
stop = time.time(): se guarda el tiempo actual en otra variable
elapsed = stop-start: as se obtiene el tiempo transcurrido entre envo y recepcin
distance = (elapsed * 34300)/2: la distancia es igual a tiempo por velocidad
partido por 2 D = (T x V)/2
print distance: se imprime la distancia (en centimetros) por pantalla

Diagrama 62: explicacin de cmo se determina la distancia utilizando un sensor de distancia ultrasnico

6.2.3.3.4

Bloque 4: reproduccin de mensajes segn la distancia detectada

En funcin de la distancia detectada, se reproduce un mensaje u otro, siendo estos:


Obstculo a menos de un metros, Obstculo a menos de metro y medio y Obstculo
a menos de dos metros.

99

DISEO Y DESARROLLO

if distance < 100: si la distancia en menor a 100 metros


filename = 'txt': se crea un archivo para poder reproducir el mensaje
filee=open(filename,'w'): se abre para escritura
filee.write("Obstaculo a menos de un metro"): se escribe el mensaje
informativo
filee.close(): se cierra el archivo
call('festival --tts --language spanish '+filename, shell=True): Se
reproduce el archivo mediante el sintetizador de voz Festival
time.sleep(1): se hace una pausa para no saturar el procesador de
la Raspberry Pi
else:
if distance < 150: si la distancia es menor de 150 centmetros...
filename = 'txt': se crea un archivo para poder reproducir el
mensaje
filee=open(filename,'w'): se abre para escritura
filee.write("Obstaculo a menos de un metro y medio"): se
escribe el mensaje informativo
filee.close(): se cierra el archivo
call('festival
--tts
--language
shell=True): Se reproduce el
sintetizador de voz Festival

spanish
'+filename,
archivo mediante el

time.sleep(1): se hace una pausa para no saturar el


procesador de la Raspberry Pi
else:
if distance < 200:: si la distancia es menor de 200
centmetros...
filename = 'txt': se crea un archivo para poder
reproducir el mensaje
filee=open(filename,'w'): se abre para escritura

100

PROYECTO FIN DE GRADO

filee.write("Obstaculo a menos de dos metros"): se


escribe el mensaje informativo
filee.close(): se cierra el archivo
call('festival --tts --language spanish '+filename,
shell=True): Se reproduce el archivo mediante el
sintetizador de voz Festival
time.sleep(1): se hace una pausa para no saturar el
procesador de la Raspberry Pi

Diagrama 63: envo de un mensaje u otro dependiendo la distancia del objeto detectado

6.2.4

Configuracin del arranque de los dispositivos emisores y


receptores

Es interesante que los dispositivos adquieran la configuracin que necesitan nada ms


arrancar y de forma automtica. Para ello se crea una funcin bash que ejecuta los
scripts escritos en Python. Despus, un ejecutador de tareas llamado Cron ejecuta las
funciones bash al arranque de la Raspberry Pi.

101

DISEO Y DESARROLLO

6.2.4.1

Creacin de la funcin bash

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:

sudo nano semaforo

Al abrirse el editor de texto se ha de escribir lo siguiente:


#!/bin/bash
### BEGIN INIT INFO
# Provides:

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

while true; do #bucle infinito


sudo python misriptenpython.py
sudo hciconfig hci0 reset #se vuelve a resetear el dispositivo
sudo hciconfig hci0 piscan #se vuelve a activar el modo descubrible
done #fin del bucle, comienza de nuevo

Nota: las primeras lneas que estn comentadas precedidas por una almohadilla (#) son
necesarias para que la funcin bash funcione.

102

PROYECTO FIN DE GRADO

6.2.4.2

Otorgamiento de permisos

Para poder ejecutar la funcin en el arranque de la mquina hemos de otorgarle los


permisos. Se hace del siguiente modo

sudo chmod 775 elnombredenuestrafuncionbash

6.2.4.3

Configuracin de las tareas que hacer al arrancar la


mquina

Para poder ejecutar las funciones que se creen en el arranque de l amquina se ha de


configurar el programa Cron. Es importante hacerlo como usuario y sin permisos de
administrador:
crontab e

Se abrir el editor de texto y se habr de escribir lo siguiente al final del documento:


@reboot ./elnombredenuestrafuncionbash

Por lo tanto, el documento quedara as:


# Edit this file to introduce tasks to be run by cron.
#
# Each task to run has to be defined through a single line
# indicating with different fields when the task will be run
# and what command to run for the task
#
# To define the time you can provide concrete values for
# minute (m), hour (h), day of month (dom), month (mon),
# and day of week (dow) or use '*' in these fields (for 'any').#
# Notice that tasks will be started based on the cron's system
# daemon's notion of time and timezones.
#
# Output of the crontab jobs (including errors) is sent through
# email to the user the crontab file belongs to (unless redirected).
#
# For example, you can run a backup of all your user accounts
# at 5 a.m every week with:
# 0 5 * * 1 tar -zcf /var/backups/home.tgz /home/

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

Una vez definida la tarea, se ha de guardar el documento. De esta forma, la funcin


bash se ejecutar en el arranque de la mquina.

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

Se realiza el envo de un mensaje de texto variando la distancia entre el dispositivo


emisor y el receptor.

6.2.5.1.1

Resultado

Se considera apto en cuanto al tiempo de respuesta, que es en torno a 1 segundo. Sin


embargo el resultado es muy pobre en lo referente a la estabilidad de la seal, dndose
de forma arbitraria situaciones de fallo. Se decide mejorar las caractersticas del
adaptador Bluetooth actual, aumentando la velocidad de transferencia y el alcance.

6.2.5.2

Prueba 2

Se utiliza un adaptador Bluetooth 4.0 con un alcance nominal mximo de 50 metros y


una velocidad de transferencia de 3 Mbps y se realizan d nuevo pruebas de transmisin
de mensajes de texto.

104

PROYECTO FIN DE GRADO

6.2.5.2.1

Resultado

El resultado mejora claramente con respecto a la prueba 1. Se consigue que el sistema


funcione sin falos, la velocidad es muy buena y el alcance es adecuado aunque se
comprueba que el resultado real en este apartado ronda los 20-25 metros, valor muy
alejado de los 50 metros que indica el fabricante.

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

Tras realizar numerosas pruebas se llega a la conclusin de que el tiempo invertido en


completar la secuencia envo-reproduccin-confirmacin, depende por un lado, de la
longitud del mensaje, pero por otro lado tarda unos 3 segundos de media en devolver la
confirmacin de que ha recibido el mensaje. Este resultado no se considera aceptable
por lo que se realizan nuevas pruebas para mejorarlo, lo que se consigue aumentando
la velocidad de reproduccin del sintetizador de voz Festival.

6.2.5.4

Prueba 4

Se realizan pruebas en

las que hay varios emisores cercanos, para optimizar la

discriminacin de los diferentes emisores y con ello mejorar el comportamiento del


sistema.

6.2.5.4.1

Resultado

Comprobamos que, en un principio, el sistema se conectaba a uno u otro sin ningn


criterio. Se entiende que es un comportamiento anmalo y que por ello este resultado
necesitaba una mejora. Dicha mejora lleg al calcular la potencia de la seal emitida y

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

En las primeras mediciones el tiempo de demora era de 17 segundo. El resultado se


consider no apto y tras reajustes se ha logrado reducirlo a 10 segundos.

6.2.5.6

Prueba 6

Se analiza el comportamiento del sensor de distancia ultrasnico, en relacin a la


calibracin de las distancias y a la influencia de diferentes espacios.

6.2.5.6.1

Resultado

Las pruebas de calibracin de distancia son satisfactorias. El sensor es preciso y tiene


capacidad para medir distancias muy por encima de las que se utilizan en este proyecto.
En cuanto a los diferentes ambientes espaciales se constata que en ambientes muy
cerrados, como pasillos estrechos, las mediciones reflejan en ocasiones resultados
errneos debido a efectos de rebote de las ondas. Sin embargo, exceptuando esos
espacios cerrados y estrechos, en todos los dems espacios interiores as como en
espacios abiertos, el sensor funciona correctamente y las mediciones conseguidas son

106

PROYECTO FIN DE GRADO

fiables. Al realizar las pruebas se ha observado tambin que al tratarse de un sensor


unidireccional, slo detecta aquello que se encuentre enfrente.

6.2.5.7

Prueba 7

Se calcula el tiempo que tarda en resetearse el servicio Blueototh cuando el usuario


hace uso del pulsador de reseteo, que le permite comprobar que el sistema est activo.

6.2.5.7.1

Resultado

El reseteo lo hace muy rpido, prcticamente al instante, pero al hacerlo se elimina la


conexin Bluetooth y el sistema tarda 6 segundos en conectar de nuevo.

Ilustracin 12: prueba de campo junto a un semforo del Ayuntamiento de


Bilbao

Ilustracin 11: prueba de campo. Utilizando el simulador de semforo en una


escenario real

107

DISEO Y DESARROLLO

6.2.6

Anlisis de situaciones crticas

En el funcionamiento del sistema VAV estn previstas dos situaciones crticas.

6.2.6.1

Semforos muy prximos entre s

Se ha contemplado la posibilidad de que dos semforos se encuentren a corta distancia,


con lo que se podra dar la circunstancia de que el dispositivo receptor que porta el
usuario enlace con el semforo no deseado.
Se ha identificado esta situacin crtica con un escenario real de Bilbao, un cruce
cntrico y muy denso en cuanto a la disposicin de semforos, el cruce de la calle Gran
Va con Alameda Mazarredo y Alameda Urquijo. En efecto, en esta localizacin hay un
total de 12 semforos regulando 6 pasos, 4 de ellos transversales a la calzada y dos de
ellos oblicuos a la misma. En el diagrama se puede ver la disposicin y las distancias
que hay entre los semforos y las fotografas corresponden a imgenes reales del
escenario.

Ilustracin 13: distancias entre los semforo de la interseccin de Gran Va con Almeda Urquijo
y Alameda Mazarredo

108

PROYECTO FIN DE GRADO

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

Coincidencia de dos o ms usuarios

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

Versiones del dispositivo receptor

En el presente apartado reseamos brevemente las caractersticas de diferentes


configuraciones que pueda equipar el receptor del sistema VAV.

6.2.7.1

Versin BASIC

La versin BASIC del dispositivo receptor contiene los siguientes elementos:


Tarjeta programable Raspberry Pi 2.
Carcasa proteccin Raspberry.
Memoria SDHC 8GB Clase 4.
Adaptador Bluetooth Dongle de gama bsica con un alcance de hasta 10
metros. Velocidad de transmisin de hasta 3Mbps. Bluetooth Versin 2.0
Batera de 2200 mAh
Puede realizar las siguientes funciones:
Identificacin de semforos: localizacin, estado y tiempo de espera.
Identificacin de dependencias y luegares
Identificacin de obstculos
Identificacin de ascensores
Coste total de los componentes: 50

6.2.7.2

Versin STANDARD

La versin STANDARD del dispositivo receptor contiene los siguientes elementos:


Tarjeta programable Raspberry Pi 2.
Carcasa proteccin Raspberry.
Memoria SDHC 8GB Clase 10.
Adaptador Bluetooth de gama media con un alcance de hasta 50 metros.
Velocidad de transmisin de hasta 3Mbps. Bluetooth V2.0
Batera de 3000 mAh
Puede realizar las siguientes funciones:
Identificacin de semforos: localizacin, estado y tiempo de espera.
Identificacin de dependencias y luegares

110

PROYECTO FIN DE GRADO

Identificacin de obstculos
Identificacin de ascensores
Coste total de los componentes: 57

6.2.7.3

Versin PLUS

La versin PLUS del dispositivo receptor contiene los siguientes elementos:


Tarjeta programable Raspberry Pi 2.
Carcasa proteccin Raspberry.
Memoria SDHC 8GB Clase 10.
Adaptador Bluetooth de gama alta con un alcance de hasta 200 metros.
Velocidad de transmisin de hasta 3Mbps. Bluetooth Versin 4.0
Batera de 12000 mAh
Puede realizar las siguientes funciones:
Identificacin de semforos: localizacin, estado y tiempo de espera.
Identificacin de dependencias y luegares
Identificacin de obstculos
Identificacin de ascensores
Detector de obstculos unidireccional
Coste total de los componentes: 75

111

DISEO Y DESARROLLO

112

PROYECTO FIN DE GRADO

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

Anlisis de las soluciones actuales del


problema que afronta el proyecto
Determinacin las tareas a llevar a
cabo en la realizacin de este proyecto
Determinacin de las duraciones de
las tareas
Anlisis del funcionamiento de un
semforo genrico.
Comparacin de las caractersticas de
Bluetooth y Wi-Fi.
Comparacin de las caractersticas de
Arduino y Raspberry Pi
Construcin de un prototipo de
semforo
Configuracin de la Raspberry Pi
Envo y recepcin de mensajes
escritos interpretables mediante
Bluetooth.
Reproduccin del mensaje recibido
mediante un sintetizador de voz
Deteccin de la distancia del usuario
mediante el valor de la potencia de
recepcin del Bluetooth.
Implantacin de un sensor de distancia
ultrasnica en el dispositivo receptor
Construccin del prototipo de receptor
Anlisis del alcance real del Bluetooth
en las condiciones del proyecto
Anlisis de la velocidad de conexin
entre emisor y receptor.
Experimento el sistema en condiciones
habituales.
Calibrado y ajustes finales del sistema
VAV

113

PLANIFICACIN

Clculo del gasto total del proyecto.


Elaboracin final de la documentacin.
Preparacin de la presentacin de la
defensa del Proyecto VAV

Tabla 7: diagrama de Gantt del Proyecto

114

PROYECTO FIN DE GRADO

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

Bluetooth Dongle Marca


"Coolbox"

9,00

Bluetooth Dongle Marca


"Kloner"

5,00

Bluetooth Dongle Marca


Netway

12,00

Breakout de GPIO para


Raspberry Pi 2

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

Carcasa Metacrilato para


Raspberry Pi 2

19,00

Carcasa Plstico para


Raspberry Pi 2

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

Memoria MicroSD 8GB

8,95

44,75

Mini protoboard
transparente

6,00

Mdulo Bluetooth HC-06

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

Tabla 8: presupuesto de materiales del Proyecto

A continuacin se contemplan los gastos correspondientes al personal:


Labor

Personas

Director de Proyecto (Ingeniero de


Telecomunicaciones)
Programador (Graduado en Ingeniera de
Telecomunicaciones
Total
Tabla 9: gastos de personal del Proyecto

116

Precio por
hora ()

Horas
Costo ()
estimadas

30,00

40

1.200,00

21,00

300

6.300,00
7.500,00

PROYECTO FIN DE GRADO

9. CONCLUSIONES Y LNEAS FUTURAS


9.1 CONCLUSIN
Este proyecto utiliza las tcnicas y tecnologas existentes con el objetivo de crear un
producto basado en componentes sencillos y de bajo coste que sirva de ayuda a las
personas con deficiencia visual.
Los objetivos programados y que se pueden ver en el apartado 4 de esta memoria, se
han cumplido satisfactoriamente.
A lo largo de los 4 meses de elaboracin de este proyecto, he analizado en profundidad
los tipos de conexiones inalmbricas, sobre todo las conexiones Bluetooth, con el
objetivo de enviar los mensajes de la forma ms efectiva posible. Despus de las
pruebas de laboratorio y las pruebas de campo, se puede afirmar que el proyecto VAV
funciona de forma eficaz.
As mismo, para poder implementar los scripts que se ejecutan en las Raspberrys Pi he
tenido que estudiar el lenguaje de programacin conocido como Python. Por otro lado,
el manejo del sistema operativo Raspbian (Linux) desde la lnea de comandos ha
supuesto un reto importante a la hora de llevar a cabo el proyecto.
Paralelamente a la elaboracin del proyecto he descubirto todo un conjunto de
posibilidades de utilizacin de la Raspberry Pi en la vida cotidiana.
A pesar de que el proyecto haya mostrado una eficacia satisfactoria, por el momento no
se puede considerar un proyecto comercializable. Sin embargo, la idea del proyecto
VAV es til y puede ser puesta en prctica con unos medios y unos costes razonables.
Los prototipos creados tienen una finalidad didctica para mostrar los elementos y los

117

CONCLUSIONES Y LNEAS FUTURAS

tipos de conexiones utilizados. Es evidente que cualquier intento de comercializacin


pasara por cambiar de forma considerable su aspecto y parte de los elementos.
El proyecto VAV ha de pasar por un entorno empresarial para poder desarrollar
completamente sus funciones y oportunidades comerciales.
Tambin creo que el proyecto podra formar parte de otro ms grande, un proyecto de
Smartcity, un mundo donde todo est conectado.
Despus de realizar este proyecto mi sentimiento es satisfactorio porque el proyecto
VAV responde a una necesidad de la sociedad. Resulta agradable sentir que se hace
algo que ayuda a las personas.
Por ltimo, he realizado este proyecto apoyndome en todos los conocimientos
adquiridos en la carrera y aplicando las nuevas tecnologas y aprecio que las
telecomunicaciones contribuyen a mejorar la calidad de vida de las personas.

9.2 LNEAS FUTURAS


En las siguientes lneas se detallan posibles mejoras o modificaciones que podra
adoptar el proyecto.

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

PROYECTO FIN DE GRADO

Este enfoque implicara complejos clculos matemticos y estadsticos que permitiran


conocer la localizacin y la trayectoria exacta del usuario. Esta complejidad excede la
que le corresponde al presente proyecto.

Ilustracin 14: Redes "mesh" aplicadas a una Smartcity

9.2.2

Mejora del detector de obstculos

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

CONCLUSIONES Y LNEAS FUTURAS

al suelo cuyo valor permanecera constante hasta encontrar un obstculo.


Posteriormente, haciendo ciertos clculos trigonomtricos, podra indicar la distancia
exacta a la que se encuentra el obstculo.

9.2.3

Sustitucin de la Raspberry Pi por una placa computacional


exclusiva

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

Dotacin de inteligencia independiente al emisor de los


semforos

Esta mejora implicara integrar unas micro-cmaras en el sistema luminario de los


semforos, lo que permitira conocer en tiempo real y sin depender de informacin
externa, el estado del semforo. Con ello se podra detectar si el semforo no est
funcionando correctamente y dar al usuario una informacin acorde a esa situacin.
Adems, se podran monitorizar los estados del semforo pudiendo as calcular cuntos
segundos quedan para que ste cambie de color.

120

PROYECTO FIN DE GRADO

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

PROYECTO FIN DE GRADO

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)

10.6 INFORMACIN ADICIONAL


Mcula-Retina, http://www.macula-retina.es/ultimas-noticias/baja-vision/estadisticasen-espana-ceguera-y-baja-vision.html (Marzo 2015)
El confidencial, http://www.elconfidencial.com/tecnologia/2015-01-22/be-my-eyes-laapp-para-voluntarios-que-quieran-prestar-sus-ojos-a-los-invidentes_625452/ (Marzo
2015)
Once, http://www.once.es/new/servicios-especializados-en-discapacidad-visual
(Marzo 2015)
Universidad de La Rioja,
http://dialnet.unirioja.es/servlet/articulo?codigo=3344626&orden=275293&info=link
(Marzo 2015)

10.7 PRODUCTOS O APLICACIONES


El Smartphone, http://Smartphoneavancetecnologico.blogspot.com.es/p/historia-yevolucion-del-Smartphone.html (Marzo 2015)
Faro de Vigo, http://www.farodevigo.es/gran-vigo/2014/01/04/trafico-adaptasemaforos-senal-invidentes/941994.html (Marzo 2015)

123

BIBLIOGRAFA

Diario Vasco, http://www.diariovasco.com/v/20101002/bajo-deba/semaforos-mandopara-invidentes-20101002.html (Marzo 2015)


Kapsys, http://www.kapsys.com/fr/en/products/ (Marzo 2015)

124

PROYECTO FIN DE GRADO

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)

for bdaddr in nearby_devices:


if target_name == bluetooth.lookup_name( bdaddr ):
target_address = bdaddr
break

call(["hciconfig","hci", "reset"])

125

ANEXOS

if target_address is not None:


print "found target bluetooth device with address ", target_address
else:
print "could not find target bluetooth device nearby"

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

PROYECTO FIN DE GRADO

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)

for bdaddr in nearby_devices:


if target_name == bluetooth.lookup_name( bdaddr ):
target_address = bdaddr
break

call(["hciconfig","hci", "reset"])

if target_address is not None:


print "found target bluetooth device with address ", target_address
else:
print "could not find target bluetooth device nearby"

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:

PROYECTO FIN DE GRADO

import bluetooth
from subprocess import call

port = 0x1001

target_name = "raspberrypi-0"
target_address = None

nearby_devices = bluetooth.discover_devices(duration = 4)

for bdaddr in nearby_devices:


if target_name == bluetooth.lookup_name( bdaddr ):
target_address = bdaddr
break

call(["hciconfig","hci", "reset"])

if target_address is not None:


print "found target bluetooth device with address ", target_address
else:
print "could not find target bluetooth device nearby"

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()

11.4 CDIGO DE EMISOR DEL TIPO DEPENDENCIA:


DEPENDENCIA.PY
import time
import bluetooth
from subprocess import call

port = 0x1001

target_name = "raspberrypi-0"
target_address = None

nearby_devices = bluetooth.discover_devices(duration = 4)

for bdaddr in nearby_devices:


if target_name == bluetooth.lookup_name( bdaddr ):
target_address = bdaddr
break

call(["hciconfig","hci", "reset"])

if target_address is not None:


print "found target bluetooth device with address ", target_address
else:
print "could not find target bluetooth device nearby"

130

PROYECTO FIN DE GRADO

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()

11.5 CDIGO DE RECEPTOR EN MODO RECEPCIN DE


MENSAJES: CLIENTECOMPLETO.PY
import bluetooth
from subprocess import call
import time
import RPi.GPIO as GPIO
GPIO.setmode(GPIO.BCM)
GPIO_SWITCH = 23
GPIO.setup(GPIO_SWITCH,GPIO.IN, pull_up_down=GPIO.PUD_DOWN)

#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

print "received [%s]" % datacalle


print "received [%s]" % datacolor
print "received [%s]" % datatiempo

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

PROYECTO FIN DE GRADO

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]()

11.6 CDIGO DE RECEPTOR EN MODO DETECCIN DE


OBSTCULOS: DISTANCIA.PY
import RPi.GPIO as GPIO
import time
from subprocess import call
GPIO.setmode(GPIO.BCM)
GPIO_TRIGGER = 25
GPIO_ECHO

=7

GPIO_SWITCH = 23

134

PROYECTO FIN DE GRADO

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

import RPi.GPIO as GPIO


import time
GPIO.setmode(GPIO.BOARD)
GPIO.setup(12, GPIO.IN, pull_up_down=GPIO.PUD_DOWN)
from subprocess import call

while 1:
if GPIO.input(12):

136

DEL

RECEPTOR:

PROYECTO FIN DE GRADO

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

Вам также может понравиться