“estudio e implementación - dinel.us.es · proyecto final de carrera “estudio e...
TRANSCRIPT
Proyecto Final de Carrera
“Estudio e implementación
de técnicas de localización
basadas en redes de
sensores sobre tecnología
Bluetooth”
Autor: José María Hinojo Montero
Tutor: Federico José Barrero García
1
Índice de contenidos
ÍNDICE DE CONTENIDOS ........................................................................................................... 1
ÍNDICE DE FIGURAS .................................................................................................................. 4
ÍNDICE DE TABLAS .................................................................................................................... 6
ÍNDICE DE ECUACIONES ............................................................................................................ 7
CAPÍTULO 1. INTRODUCCIÓN ................................................................................................... 8
CAPITULO 2. REVISIÓN DEL ESTADO DEL ARTE ...................................................................... 10
2.1. WSN ............................................................................................................................. 11
2.1.1. Componentes ......................................................................................................... 11
2.1.2. Arquitectura de red ................................................................................................ 12
2.1.2.1. Redes en estrella ........................................................................................................... 12
2.1.2.2. Redes Mesh ................................................................................................................... 13
2.1.2.3. Redes Híbridas ............................................................................................................... 14
2.1.3. Área de aplicaciones .............................................................................................. 15
2.1.3.1. Detección de eventos .................................................................................................... 16
2.1.3.2. Estimación de procesos aleatorios temporales y espaciales ......................................... 17
2.1.3.3. Ejemplos de usos ........................................................................................................... 18
2.2. TECNOLOGÍA .................................................................................................................... 19
2.2.1. Bluetooth................................................................................................................ 20
2.2.2. ZigBee ..................................................................................................................... 21
2.2.3. RFID ........................................................................................................................ 22
2.2.4. Ultra Wide Band ..................................................................................................... 24
2.2.5. Wi-fi ........................................................................................................................ 25
2.2.5.1. 802.11a ......................................................................................................................... 25
2.2.5.2. 802.11b ......................................................................................................................... 26
2.2.5.3. 802.11g.......................................................................................................................... 26
2.2.5.4. 802.11n ......................................................................................................................... 27
2.2.6. WiMAX ................................................................................................................... 28
2.2.7. Comparativa ........................................................................................................... 29
2.3. ESTIMACIÓN DE LA POSICIÓN ............................................................................................... 32
2.3.1. Parámetros relacionados ....................................................................................... 33
2.3.1.1. Potencia de señal recibida ............................................................................................ 34
2.3.1.2. Ángulo de llegada .......................................................................................................... 35
2.3.1.3. Tiempo de llegada ......................................................................................................... 36
2.3.1.4. Diferencia de tiempos de llegada .................................................................................. 37
2.3.2. Técnicas para estimar la posición ........................................................................... 38
2
2.3.2.1. Triangulación ................................................................................................................. 38
2.3.2.1.1. Lateración .............................................................................................................. 38
2.3.2.1.2. Angulación ............................................................................................................. 40
2.3.2.1.3. Proximidad ............................................................................................................ 41
2.3.2.2. Análisis de escenas ........................................................................................................ 41
2.4. ELECCIÓN TECNOLÓGICA ..................................................................................................... 42
CAPÍTULO 3 BLUETOOTH COMO TECNOLOGÍA INALÁMBRICA ............................................... 44
3.1. DESCRIPCIÓN GENERAL ...................................................................................................... 44
3.2. ARQUITECTURA BLUETOOTH ............................................................................................... 47
3.2.1. Radio ...................................................................................................................... 48
3.2.2. Banda Base ............................................................................................................. 50
3.2.2.1. Enlaces físicos ................................................................................................................ 50
3.2.2.2. Enlaces físicos ................................................................................................................ 53
3.2.2.3. Transportes lógico ......................................................................................................... 54
3.2.2.4. Enlaces lógicos .............................................................................................................. 56
3.2.2.5. Código de acceso ........................................................................................................... 56
3.2.3. Operación del controlador de enlaces ................................................................... 58
3.2.4. LMP ........................................................................................................................ 67
3.2.4.1. Modos de operación ..................................................................................................... 70
3.2.5. HCI .......................................................................................................................... 72
3.2.5.1. Comandos HCI ............................................................................................................... 73
3.2.6. L2CAP ..................................................................................................................... 74
3.2.6.1. Modo de operación de L2CAP ....................................................................................... 77
3.3. PERFILES ......................................................................................................................... 79
3.3.1. RFCOMM ................................................................................................................ 81
3.3.1.1. Señales de control ......................................................................................................... 83
3.3.1.2. Emulación Módem-Null................................................................................................. 83
3.3.1.3. Puerto serie emulado .................................................................................................... 84
CAPÍTULO 4. DESCRIPCIÓN DE LA ARQUITECTURA PROPUESTA. ............................................. 85
4.1. HARDWARE ..................................................................................................................... 85
4.1.1. Nodo principal ........................................................................................................ 86
4.1.2. Nodo de localización .............................................................................................. 88
4.1.2.1. Microcontrolador ATMEGA 8 ........................................................................................ 89
4.1.2.2. Módulo Bluetooth Bluegiga WT12 ................................................................................ 91
4.1.2.2.1. Configuración del módulo ..................................................................................... 93
4.2. SOFTWARE ...................................................................................................................... 95
4.2.1. Aplicación principal ................................................................................................ 95
4.2.2. Firmware nodo de localización .............................................................................. 99
4.2.3. Matlab .................................................................................................................. 104
4.2.3.1. Caracterización del medio físico de propagación ........................................................ 106
3
4.2.3.2. Algoritmos de estimación de posición ........................................................................ 108
4.2.3.2.1. Multilateración .................................................................................................... 108
4.2.3.2.2. Algoritmo Min-Max ............................................................................................. 111
4.2.3.2.3. Algoritmo Multilateración iterativo ..................................................................... 112
4.2.3.2.4. Aproximación mecánica. Algoritmo de Malguki .................................................. 113
CAPÍTULO 5. RESULTADOS .................................................................................................... 116
5.1. MULTILATERACIÓN .......................................................................................................... 118
5.2. MULTILATERACIÓN ITERATIVA ........................................................................................... 120
5.3. MIN-MAX ..................................................................................................................... 121
5.4. ALGORITMO DE MALGUKI ................................................................................................. 123
5.5. COMPARATIVA ............................................................................................................... 124
CAPÍTULO 6. CONCLUSIONES ................................................................................................ 127
6.1. FUTURAS LÍNEAS DE TRABAJO ............................................................................................ 128
BIBLIOGRAFÍA ....................................................................................................................... 130
APÉNDICE A. PSEUDOCÓDIGOS DEL NODO DE LOCALIZACIÓN ............................................. 133
APÉNDICE B. CÓDIGO FUENTE DEL NODO DE LOCALIZACIÓN .............................................. 141
APÉNDICE C. CÓDIGO FUENTE DE LA APLICACIÓN PRINCIPAL. ............................................. 151
4
Índice de Figuras
FIGURA 2.1.1. REPRESENTACIÓN DE UNA RED WSN MULTISALTO TÍPICA. .................................................................. 11
FIGURA 2.1.2. REPRESENTACIÓN DE UNA TOPOLOGÍA EN ESTRELLA EN REDES WSN. .................................................... 12
FIGURA 2.1.3. REPRESENTACIÓN DE UNA TOPOLOGÍA MESH EN REDES WSN ............................................................. 14
FIGURA 2.1.4. REPRESENTACIÓN DE UNA TOPOLOGÍA HÍBRIDA EN REDES WSN ........................................................... 15
FIGURA 2.2.1. REPRESENTACIÓN DE LAS DIFERENTES TECNOLOGÍAS EN CUANTO A PRECISIÓN Y ESTADO DE DESARROLLO. .... 20
FIGURA 2.2.2. FUNCIONAMIENTO DE UN SISTEMA RFID CON ETIQUETA PASIVA. ......................................................... 24
FIGURA 2.3.1. REPRESENTACIÓN DE UNA ARRAY DE ANTENAS QUE DETERMINAN EL ÁNGULO DE LLEGADA. ....................... 35
FIGURA 2.3.2. EFECTOS DEL MULTITRAYECTO SOBRE LA TRANSMISIÓN DE UNA SEÑAL ................................................... 37
FIGURA 2.3.3. EJEMPLO DE TRIANGULACIÓN POR LATERACIÓN EN UNA SUPERFICIE DE 2D ............................................. 39
FIGURA 2.3.4. EJEMPLO DE TRIANGULACIÓN POR ANGULACIÓN EN UNA SUPERFICIE DE 2D ............................................ 40
FIGURA 3.1.1. PILA DE PROTOCOLOS BLUETOOTH. ................................................................................................ 47
FIGURA 3.2.1. (A) TRANSMISIÓN DE PAQUETES MULTI-INTERVALOS Y (B) CICLO DE TRANSMISIÓN Y RECEPCIÓN DE UN
TRANSCEPTOR MAESTRO EN UN MODO NORMAL DE TRANSMIÓN PARA PAQUETES DE UN SOLO INTERVALO. ............... 52
FIGURA 3.2.2. CICLO RX/TX DE UN TRANSCEPTOR EN MODO PAGE. EN ELLA, SE USA PARA LAS FRECUENCIAS DE LA
SECUENCIA DE SALTO CORRESPONDIENTES A LA TRANSMISIÓN Y , PARA LAS DE RECEPCIÓN. ........................... 53
FIGURA 3.2.3. (A) TEMPORIZACIÓN DE UN PAQUETE DE RESPUESTA AL INQUIRY CON ÉXITO EN LA PRIMERA MITAD DEL
INTERVALO. (B) TEMPORIZACIÓN DE UN PAQUETE DE RESPUESTA AL INQUIRY CON ÉXITO EN LA SEGUNDA MITAD DEL
INTERVALO. ........................................................................................................................................... 53
FIGURA 3.2.4. (A) ESTRUCTURA DE UN PAQUETE GENÉRICO PARA EL MODO BÁSICO Y (B) ESTRUCTURA DE UN PAQUETE
GENÉRICO PARA EL MODO EDR. ................................................................................................................ 56
FIGURA 3.2.5. FORMATO DEL CÓDIGO DE ACCESO. ................................................................................................ 57
FIGURA 3.2.6. PREÁMBULO. ............................................................................................................................. 57
FIGURA 3.2.7. (A) TRAILER EN CAC CUANDO EL BIT MÁS SIGNIFICATIVO ES CERO Y (B) TRAILER EN CAC CUANDO EL BIT MÁS
SIGNIFICATIVO ES UNO. ............................................................................................................................ 58
FIGURA 3.2.8. DIAGRAMA DE ESTADOS DEL CONTROLADOR DE ESTADOS. ................................................................... 58
FIGURA 3.2.9. REPRESENTACIÓN DETALLADA DEL ESTADO CONNECTION. ................................................................... 60
FIGURA 3.2.10. ESQUEMA TEMPORAL DEL FUNCIONAMIENTO DEL MODO SNIFF. ......................................................... 61
FIGURA 3.2.11. INTERCAMBIO DE MENSAJES DURANTE LA FASE INICIAL DE LA CONEXIÓN CUANDO UN ESCLAVO RESPONDE UN
PRIMER MENSAJE PAGE. ........................................................................................................................... 62
FIGURA 3.2.12. TEMPORIZACIÓN DE LOS PAQUETES DE RESPUESTAS EN EL SUBESTADO PAGE. ........................................ 64
FIGURA 3.2.13. FORMATO DEL PAQUETE FHS. ..................................................................................................... 65
FIGURA 3.2.14. OPERACIÓN DEL PROTOCOLO DE GESTIÓN DE ENLACES...................................................................... 68
FIGURA 3.2.15. ESTRUCTURA DE LAS PDU’S INTERCAMBIADAS POR LOS GESTORES DE ENLACE. ...................................... 69
5
FIGURA 3.2.16. INFORMACIÓN GENERAL DE EXTREMO A EXTREMO DE LAS CAPAS DE SOFTWARE INFERIORES UTILIZADAS EN LA
TRANSFERENCIA DE DATOS. ....................................................................................................................... 73
FIGURA 3.2.17. UBICACIÓN DE L2CAP DENTRO DE LA TORRE DE PROTOCOLOS DE BLUETOOTH...................................... 75
FIGURA 3.2.18. DIAGRAMA DE BLOQUES DEL PROTOCOLO L2CAP. .......................................................................... 75
FIGURA 3.2.19. EJEMPLO DEL USO Y SIGNIFICADO DEL CAMPO CID. ......................................................................... 78
FIGURA 3.3.1. MODELO DE REFERENCIA RFCOMM.............................................................................................. 82
FIGURA 4.1.1. REPRESENTACIÓN ORIENTATIVA DEL SISTEMA PROPUESTO. .................................................................. 86
FIGURA 4.1.2. FOTOGRAFÍA DE LA TARJETA PC/104+ USADA COMO NODO PRINCIPAL. ................................................ 87
FIGURA 4.1.3. FOTOGRAFÍA DE UN NODO DE LOCALIZACIÓN. ................................................................................... 88
FIGURA 4.1.4. DIAGRAMA DE BLOQUES DEL NODO DE LOCALIZACIÓN ........................................................................ 89
FIGURA 4.1.5. DIAGRAMAS DE BLOQUE DEL ATMEGA8. ....................................................................................... 90
FIGURA 4.1.6. UBICACIÓN DE IWRAP EN LA TORRE DE PROTOCOLOS BLUETOOTH. ....................................................... 92
FIGURA 4.1.7.CCOMUNICACIÓN HOST-IWRAP-HOST. .......................................................................................... 94
FIGURA 4.1.8. COMUNICACIÓN HOST-IWRAP-DISPOSITIVO REMOTO Y VICEVERSA. .................................................... 94
FIGURA 4.2.1. PASO DE MENSAJES ..................................................................................................................... 96
FIGURA 4.2.2. FORMATO DEL FICHERO DE ALMACENAMIENTO. ................................................................................ 97
FIGURA 4.2.3. DIAGRAMA DE FLUJOS DE LA APLICACIÓN PRINCIPAL. .......................................................................... 98
.FIGURA 4.2.4 DIAGRAMA DE FLUJO DE LAS FUNCIONES SECUNDARIAS DE LA APLICACIÓN PRINCIPAL................................ 99
FIGURA 4.2.5. MÁQUINA DE ESTADOS DEL NODO DE LOCALIZACIÓN. ....................................................................... 101
FIGURA 4.2.6 PROBABILIDAD DE DESCUBRIR A TODOS LOS DISPOSITIVOS EN FUNCIÓN DE LA LONGITUD DEL PROCESO DE
DESCUBRIMIENTO. ................................................................................................................................ 102
FIGURA 4.2.7. REPRESENTACIÓN GRÁFICA DEL MÉTODO MULTILATERACIÓN. ............................................................ 109
FIGURA 4.2.8. CONSTRUCCIÓN DEL RECTÁNGULO FRONTERA. ................................................................................ 111
FIGURA 4.2.9. DEFINICIÓN DE LA FUERZA ELÁSTICA EN EL OBJETIVO A LOCALIZAR EN BASE A DOS NODOS DE LOCALIZACIÓN.114
FIGURA 4.2.10. EJEMPLO DE UN VALOR MAL AJUSTADO Y DE CÓMO EL ALGORITMO NO PUEDE ALCANZAR EL MÍNIMO DE LA
FUNCIÓN DE ERROR. .............................................................................................................................. 115
FIGURA 5.1 FOTOGRAFÍA DE LA SALA UTILIZADA PARA LA PRUEBA. .......................................................................... 116
FIGURA 5.2. REPRESENTACIÓN ESQUEMÁTICA DE LA INSTALACIÓN DEL SISTEMA EN LA SALA. ........................................ 117
FIGURA 5.1.1. RESULTADOS OBTENIDOS DEL PROCESO DE LOCALIZACIÓN. ................................................................ 119
FIGURA 5.1.2. REPRESENTACIÓN DEL ERROR CUADRÁTICO MEDIO. ......................................................................... 120
FIGURA 5.2.1. RESULTADOS OBTENIDOS DEL PROCESO DE LOCALIZACIÓN. ................................................................ 120
FIGURA 5.2.2. REPRESENTACIÓN DEL ERROR CUADRÁTICO MEDIO. ......................................................................... 121
FIGURA 5.3.1. RESULTADOS OBTENIDOS DEL PROCESO DE LOCALIZACIÓN. ................................................................ 122
FIGURA 5.3.2. REPRESENTACIÓN DEL ERROR CUADRÁTICO MEDIO. ......................................................................... 123
FIGURA 5.4.1. RESULTADOS OBTENIDOS DEL PROCESO DE LOCALIZACIÓN. ................................................................ 123
FIGURA 5.4.2. REPRESENTACIÓN DEL ERROR CUADRÁTICO MEDIO. ......................................................................... 124
FIGURA 5.5.1. REPRESENTACIÓN CONJUNTA DE LOS ERRORES CUADRÁTICOS MEDIOS DE LOS DISTINTOS ALGORITMOS ....... 125
6
Índice de tablas
TABLA 2.2.1. COMPARATIVA ENTRE LAS DIFERENTES VERSIONES DE LA ESPECIFICACIÓN WI-FI. .............................. 28
TABLA 2.2.2. TABLA COMPARATIVA DE LAS DIFERENTES TECNOLOGÍAS INALÁMBRICAS. ........................................ 30
TABLA 3.2.1. ESPECIFICACIÓN DE LAS CLASES DE DISPOSITIVOS Y SUS CARACTERÍSTICAS. ....................................... 50
TABLA 3.2.2. RESUMEN DE LOS TIPOS DE CÓDIGOS DE ACCESO DIFERENTES ESPECIFICADOS EN LA NORMA. ............... 57
TABLA 3.2.3. COMANDOS HCI: AGRUPACIÓN Y DESCRIPCIÓN. ........................................................................ 74
TABLA 3.2.4. DESCRIPCIÓN DE LOS DIFERENTES CID QUE SE PUEDEN UTILIZAR.................................................... 78
TABLA 3.3.1. PÉRFILES Y PROTOCOLOS SOPORTADOS POR LA ESPECIFICACIÓN 2.1 DE BLUETOOTH. ......................... 81
TABLA 3.3.2. LÍNEAS RS-232 EMULADAS EN RFCOMM. .............................................................................. 83
TABLA 3.3.3. CORRESPONDENCIA DE LAS SEÑALES DE CONTROL RECOGIDAS EN LA NORMA TS07.10 Y LAS SEÑALES DE
CONTROL RS-232. ................................................................................................................................. 83
TABLA 4.1.1. FORMATO DE TRAMA EN EL MODO MULTIPLEXADO. .................................................................... 93
TABLA 4.2.1. COMANDOS DEL PROTOCOLO UTILIZADO ENTRE EL NODO PRINCIPAL Y LOS NODOS DE LOCALIZACIÓN. ... 97
TABLA 5.1. UBICACIÓN DE LOS DIFERENTES NODOS EN LA HABITACIÓN UTILIZADA. ............................................ 117
TABLA 5.2. COORDENADAS DE LOS DIFERENTES PUNTOS A LOCALIZAR UTILIZADOS DURANTE LA PRUEBA ................ 118
TABLA 5.5.1. VALORES MEDIOS DEL ERROR CUADRÁTICO MEDIO DE CADA ALGORITMO. ..................................... 126
7
Índice de ecuaciones
ECUACIÓN 2.1.1.NÚMERO DE NODOS PARA UNA RED DE UN SOLO SALTO Y UN SUMIDERO. ........................................... 13
ECUACIÓN 2.3.1. ECUACIÓN DE FRIIS. ................................................................................................................ 34
ECUACIÓN 2.3.2. ECUACIÓN DE PROPAGACIÓN QUE CONTEMPLA EL CANAL DE PROPAGACIÓN ........................................ 34
ECUACIÓN 2.3.3. EXPRESIONES PARA DETERMINAR LA DISTANCIA EN FUNCIÓN DEL ÁNGULO DE LLEGADA. ........................ 36
ECUACIÓN 2.3.4. EXPRESIÓN DE LA SEÑAL RECIBIDA. ............................................................................................. 36
ECUACIÓN 3.2.1. EXPRESIÓN QUE PERMITE HALLAR LAS FRECUENCIAS CENTRALES DE LOS CANALES BLUETOOTH. ............... 48
ECUACIÓN 3.2.2. EJEMPLO DE UN ESQUEMA DE MULTIPLEXACIÓN POR DIVISIÓN EN EL TIEMPO EN UNA COMUNICACIÓN
BLUETOOTH. .......................................................................................................................................... 49
ECUACIÓN 4.2.1. EXPRESIÓN PARA EL CÁLCULO DEL ERROR CUADRÁTICO MEDIO. ...................................................... 104
ECUACIÓN 4.2.2. ECUACIÓN DE PROPAGACIÓN QUE CONTEMPLA EL CANAL DE PROPAGACIÓN ...................................... 105
ECUACIÓN 4.2.3. EXPRESIÓN DEL ERROR COMETIDO EN EL PROCESO DE CALIBRACIÓN. ............................................... 107
ECUACIÓN 4.2.4. DEFINICIÓN DE LA NORMA ESPECTRAL DE UNA MATRIZ DADA. ........................................................ 107
ECUACIÓN 4.2.5. DESARROLLO MATEMÁTICO EFECTUADO PARA DERIVAR LA EXPRESIÓN DE LA MATRIZ DE TRANSFORMACIÓN T
......................................................................................................................................................... 108
ECUACIÓN 4.2.6. CÁLCULO DEL VECTOR DE DISTANCIAS ESTIMADO EN BASE A LA MATRIZ DE TRANSFORMACIÓN T. .......... 108
ECUACIÓN 4.2.7. EXPRESIÓN DEL ERROR COMETIDO ENTRE LA POSICIÓN REAL Y EL NODO I-ÉSIMO. ............................... 109
ECUACIÓN 4.2.8. MANIPULACIÓN ALGEBRAICA DE LA EXPRESIÓN DEL ERROR. ........................................................... 110
ECUACIÓN 4.2.9. EXPRESIÓN FINAL DEL ALGORITMO MULTILATERACIÓN. ................................................................. 110
ECUACIÓN 4.2.10. DESARROLLO MATEMÁTICO PARA LA OBTENCIÓN DE LA POSICIÓN ESTIMADA. .................................. 110
ECUACIÓN 4.2.11. EXPRESIÓN FINAL DE LA POSICIÓN ESTIMADA. ........................................................................... 110
ECUACIÓN 4.2.12. EXPRESIÓN DE LAS COORDENADAS DE LOS RECTÁNGULOS FRONTERAS. ........................................... 111
ECUACIÓN 4.2.13. COORDENADAS DEL RECTÁNGULO INTERSECCIÓN....................................................................... 111
ECUACIÓN 4.2.14. EXPRESIÓN DEL ERROR PARCIAL RELATIVO AL NODO DE LOCALIZACIÓN I-ÉSIMO. ............................... 112
ECUACIÓN 4.2.15. EXPRESIÓN DEL ERROR GLOBAL. ............................................................................................. 112
ECUACIÓN 4.2.16. DEFINICIÓN DE LA MATRIZ DE DESPLAZAMIENTO . ................................................................... 112
ECUACIÓN 4.2.17. DEFINICIÓN DE LA MATRIZ B. ................................................................................................. 113
ECUACIÓN 4.2.18. CÁLCULO DE LAS DERIVADAS PARCIALES DE LA MATRIZ B. ............................................................ 113
ECUACIÓN 4.2.19. EXPRESIÓN FINAL DE LA POSICIÓN ESTIMADA. ........................................................................... 113
ECUACIÓN 4.2.20. DEFINICIÓN DE LA FUERZA ELÁSTICA Y DEL CAMPO ESCALAR . ........................................ 114
8
Capítulo 1.
Introducción
Los sistemas de localización son una de las aplicaciones más interesantes de las redes
de sensores inalámbricas, siendo cada vez más demandadas debido a la proliferación de los
sistemas de comunicaciones móviles y dispositivos personales portátiles. En este tipo de
aplicaciones, las redes de sensores recogen del entorno una serie de parámetros físicos que les
permiten posicionar los dispositivos que se encuentran dentro de su alcance. Estas redes son
complementarias a los sistemas de navegación satelitales globales como puede ser la
tecnología GPS. Esto se debe a que este tipo de sistemas sólo son válidos para entornos
exteriores ubicados en campo abierto, debido a que en zonas con sombras (aquellos lugares
donde el receptor no posee visión directa con el emisor, como por ejemplo un receptor GPS
que se ubica en una calle con edificios elevados) o en interiores dejan de funcionar por falta de
visión directa con los satélites.
En esta línea, este proyecto pretende definir un sistema cuyo objetivo final sea la
localización y determinación de la posición de un usuario que porta un terminal móvil
genérico. Con este objetivo, será necesario un estudio de las diferentes tecnologías
inalámbricas existentes en la actualidad así como del funcionamiento de las redes de sensores
inalámbricas. Tras ello, se deberá proceder a comprender y resolver la problemática asociada a
la elección arquitectónica y tecnológica del sistema. Finalmente, como último paso tras definir
los componentes del sistema, se tendrán que analizar los diferentes algoritmos de localización
existentes para determinar aquel que mejor resultado da.
Atendiendo a los objetivos que se pretenden cubrir en este proyecto, el presente
documento se organiza de la siguiente manera:
Capítulo 1. Se presenta el interés de la localización en exteriores y se definen los
objetivos y estructura del presente proyecto.
9
Capítulo 2. En él se efectuar una revisión del estado del arte a nivel de redes de
sensores inalámbricas, de tecnologías inalámbricas y de técnicas de medida y
estimación de la posición.
Capítulo 3. Se corresponde con análisis de la tecnología inalámbrica seleccionada,
en concreto, Bluetooth. Se realiza una descripción de la versión2.1. de la
especificación, incidiendo de manera detallada en aquellos aspectos que serán
útiles para la implementación del sistema.
Capítulo 4. Este capítulo resume la arquitectura del sistema propuesto tanto a nivel
hardware como software. En él se describirán los componentes del sistema y la
misión que deberán desempeñar dentro del mismo. Además, se realiza una
descripción matemática y algorítmica de las diferentes técnicas de localización que
se van a estudiar.
Capítulo 5. Recoge los resultados obtenidos de una prueba de funcionamiento del
sistema.
Capítulo 6. En él se describirán las conclusiones y líneas futuras de investigación y
mejora del sistema propuesto.
Por último, se detallará toda la bibliografía utilizada para el desarrollo de este
proyecto.
10
Capitulo 2.
Revisión del
estado del arte
En este capítulo se pretende dar una visión general de las diferentes tecnologías
usadas en redes inalámbricas de sensores, así como los diferentes algoritmos utilizados para la
localización de un nodo en el interior de una red de sensores. Para ello, será necesario
familiarizarse con el concepto de red inalámbrica de sensores (en inglés, Wireless Sensors
Network, WSN). Este debe ser el punto de partida puesto que permitirá formar una idea de los
requisitos necesarios para poder llevar a cabo la localización de un sujeto en el interior de
edificios.
Por su parte, el desarrollo tecnológico asociado a las comunicaciones inalámbricas ha
sido muy importante en los últimos años, existiendo multitud de protocolos que han sido
adoptados como estándares internacionales por diversos organismos como el IEEE, ZigBee
Alliance o Bluetooth. Esto hace necesario un estudio previo de cada una de las tecnologías
para poder determinar las principales características de las mismas y determinar de esta
manera cuál se adapta mejor a las necesidades establecidas.
Finalmente, la localización se corresponde con un tema ampliamente estudiado en la
literatura científica y, en concreto, la determinación de la posición de un dispositivo en el
interior de una red de sensores inalámbricos. Con esta finalidad, se encuentran diferentes
algoritmos que hacen uso de propiedades tan diversas como la estimación de la distancia a un
nodo baliza mediante la estimación del tiempo de propagación de un dato o del nivel de
potencia recibida del terminal cuya posición queremos estimar.
11
2.1. WSN
Una red de sensores (en adelante WSN, Wireless Sensor Network) puede definirse
como una red de dispositivos denominados nodos que pueden obtener una medida (nivel de
CO2 en el ambiente, la temperatura, la humedad o la potencia de señal recibida desde un
dispositivo remoto) del entorno que los rodea y comunicar dicha información tomada in situ a
un nodo remoto, cuyo nombre se denomina sumidero, a través de un enlace inalámbrico que
puede usarla localmente o transmitirla a una estación de procesamiento ubicada en otra zona
mediante el acceso a otras redes (Internet) a través de una pasarela. Es decir, una red de
sensores inalámbricos, no es más que una red compuesta por una gran cantidad de equipos
terminales que cooperan entre sí para medir y registrar algún parámetro del entorno que los
rodea para transmitirlos de forma inalámbrica a un equipo que los procesará. Estos nodos
pueden encontrarse en movimiento o estar fijados en un punto.
Figura 2.1.1. Representación de una red WSN multisalto típica.
2.1.1. Componentes
Los elementos básicos de las WSN son los nodos, los sumideros y las pasarelas, en
orden creciente de complejidad y coste. La idea de realizar los nodos de la forma más sencilla
posible radica en que el número de estos inmersos en la red de sensores puede ser muy
elevado, mucho mayor que la cantidad de sumideros y pasarelas a utilizar. Por tanto, se hace
necesario intentar contener el precio y tamaño de los nodos lo más bajo posible, reduciendo al
mínimo su coste de producción y la circuitería necesaria en su fabricación.
En cuanto a la estructura de los nodos, estos están compuestos en la mayoría de las
situaciones por un microcontrolador que se encarga de dotar de una cierta inteligencia al
12
dispositivo, un módulo de memoria donde almacenar los información registrada del entorno,
el sensor con la electrónica necesaria para poder realizar el acondicionamiento de la señal
obtenida y un transceptor de radiofrecuencia que dote de una interfaz inalámbrica que
permita al nodo interactuar con su sumidero. Además de los componentes descritos, será
necesaria una etapa de alimentación que suministre la energía necesaria para el correcto
funcionamiento de los diferentes componentes.
2.1.2. Arquitectura de red
En cuanto a la topología de la red podemos distinguir tres casos:
Redes en estrella
Redes Mesh
Redes híbridas
2.1.2.1. Redes en estrella
Las redes en estrella se corresponden con una topología de red compuesta por varios
nodos y un único sumidero, también denominado estación base, cuya misión es recolectar la
información procedente de los sensores. Los nodos remotos pueden solamente enviar o recibir
información del nodo sumidero, prohibiendo el intercambio de mensajes entre los propios
nodos. Por tanto, se corresponde con una red de un único salto, puesto que todos los nodos
están comunicados directamente con la estación base.
Figura 2.1.2. Representación de una topología en estrella en redes WSN.
En función de que la densidad de sensores sea elevada o no, la topología en estrella
podrá ser sostenible o no. El número de nodos que pueda soportar la red se verá limitado por
el ancho de banda del enlace físico disponible y el volumen de información a gestionar. Para
13
ello, basta realizar un pequeño cálculo que permita realizar una estimación del número de
nodos que puede soportar cada red. Si se denota por N el número de nodos sensores de una
red, Rb la tasa de transferencia soportada por el enlace inalámbrico establecido, Tr al tiempo
que se tarda en obtener una medida del entorno y D al tamaño promedio en bytes de los
paquetes generados por la capa de aplicación, se tiene que cumplir la siguiente relación para el
caso de un solo salto
Ecuación 2.1.1.Número de nodos para una red de un solo salto y un sumidero.
En ella se pone de manifiesto que el volumen de datos que se genera en la red debe
ser inferior a la capacidad neta del enlace, es decir, sin tener en cuenta las cabeceras añadidas
por los diferentes protocolos existentes entre el nivel físico y la capa de aplicación.
Por su parte, la principal ventaja de este tipo de topologías es su simplicidad, puesto
que los nodos remotos pueden ser muy simples así como el software de control y gestión de
las comunicaciones. Además, otra de las ventajas que poseen estas redes son que al permitir
únicamente las comunicaciones entre el nodo remoto y el sumidero, los sensores pueden
encontrarse en un modo de bajo consumo hasta que sean reclamados por su estación base.
Esto permite ahorrar en consumo, aspecto muy importante para las redes de sensores
inalámbricas. Como desventajas cabe mencionar la difícil escalabilidad de la red debido al
número limitado de nodos remotos que se pueden conectar al sumidero, así como el hecho de
que todos ellos deban estar en el rango de cobertura de la estación base. Esto se debe al
hecho de no permitirse la interacción entre los nodos remotos. La segunda gran desventaja
que posee esta arquitectura es que no resultan tan robustas como otro tipo de redes debido a
la dependencia existente del nodo sumidero. En el supuesto caso de que éste se cayese, la red
no podría operar.
2.1.2.2. Redes Mesh
Una red Mesh consiste en una arquitectura de red en la que se permite que cualquier
nodo que pertenezca a ésta pueda comunicarse con otro que esté a su alcance. Es decir, no
existe ningún tipo de restricción en el establecimiento de las comunicaciones al igual que con
el envío y recepción de información. Por tanto, en este tipo de topologías se permiten
comunicaciones multisalto que permiten alcanzar el nodo sumidero aunque el nodo remoto
14
no se encuentre en su radio de cobertura. En esta situación, el nodo remoto debería utilizar el
mínimo número posible de nodos intermedios hasta alcanzar un sumidero.
Figura 2.1.3. Representación de una topología Mesh en redes WSN
La gran ventaja de esta topología es la redundancia que se puede conseguir así como la
escalabilidad de la arquitectura debido a que si un nodo intermedio falla, si el nodo remoto
que desea enviar el mensaje dispone de otro nodo a su alcance podrá usar ese para enviar a
un sumidero dicho mensaje. El único requisito que debe satisfacerse es que los nodos remotos
tengan a su alcance a más nodos. Asimismo, el rango de la red se ve aumentado con creces
como consecuencia de que ya no sólo se limita al rango alcanzable por dos nodos únicamente,
sino que ahora se puede extender tanto como el administrador lo desee sin más que satisfacer
el requisito anterior.
La desventaja de las redes Mesh radica en que el incremento del número de saltos
provoca un aumento del tiempo de entrega del mensaje o la información a enviar, pudiéndose
convertir en un problema si se deben cumplir restricciones temporales muy estrictas. En
segundo lugar, se comprueba experimentalmente que el consumo de potencia de los nodos
remotos aumenta en estas situaciones.
2.1.2.3. Redes Híbridas
Se corresponde con una arquitectura que mezcla las dos topologías revisadas en los
epígrafes anteriores. En esta situación se disponen de varias estaciones bases o sumideros,
que pueden comunicarse entre ellas, y, pendiendo de éstas con una configuración en estrella,
varios nodos. En consecuencia, los nodos remotos sólo podrán interactuar con su sumidero
enviándole o recibiendo información de éste. Mientras tanto, el nodo sumidero se encargará
de controlar y gestionar la red para poder determinar aquellas estaciones bases que le pueden
15
permitir alcanzar un determinado destino, bien una pasarela que comunique la red de
sensores con otra red como pueda ser Internet, por ejemplo.
Figura 2.1.4. Representación de una topología híbrida en redes WSN
Se corresponde con un escenario más general, en el que al aumentar el número de
sumideros las probabilidades de que un conjunto de nodos de la red se queden aislado del
resto es más baja que en el caso anterior para una densidad de nodos dada. Esta extensión
genérica presenta una gran escalabilidad puesto que la introducción de diversos sumideros
permite dividir en sectores la red pudiendo dar servicio a muchos más nodos. Sin embargo,
estas redes no son una extensión trivial puesto que la existencia de varios sumideros complica
los protocolos utilizados para recolectar la información procedente de los nodos.
2.1.3. Área de aplicaciones
El área de aplicación de las redes WSN es muy extenso y puede ir desde aplicaciones
industriales tales como dotar de inteligencia una fábrica que permita automatizar diversos
procesos hasta el seguimiento de objetos en el interior de edificios o supervisión de pacientes
16
en sus domicilios. Por tanto, debido a la extensión de usos, se intentará agruparlos en dos
grandes categorías: la detección de sucesos y en la estimación de procesos aleatorios
temporales y espaciales.
Sin embargo, se hace necesario mencionar que las aplicaciones de seguimiento, bien
de objetos o de personas o animales, se pueden considerar un caso especial. Dependiendo de
cómo se diseñe la aplicación puede resultar un caso especial de detección de eventos o, por el
contrario, de estimación de procesos aleatorios. Si se pretende monitorizar de forma periódica
el entorno para localizar el objetivo y seguirlo, entonces se correspondería con una aplicación
del segundo tipo, puesto que se necesita estimar la posición del objetivo en el espacio. En el
supuesto caso de que el seguimiento se base únicamente en la detección del objetivo a su
paso por determinados puntos específicos indicados en el sistema (una puerta, la entrada a un
edificio o un determinado sector de una nave), entonces se correspondería con una aplicación
de tipo detección de eventos.
2.1.3.1. Detección de eventos
En la detección de sucesos se engloban todos aquellos posibles usos que se basan en el
uso de sensores para detectar un determinado suceso como puede ser un incendio, un
terremoto o un escape de gas. En este caso, los nodos remotos deben estar supervisando el
entorno hasta detectar un evento que puede ocurrir en cualquier instante de tiempo y en
cualquier punto del espacio monitorizado por la red WSN. Esto provoca que la capacidad de
computación de los nodos remotos no tenga que ser muy compleja. Su labor será comprobar
los valores obtenidos por parte del sensor con los niveles de disparo, entiéndase aquellos
valores definidos por el usuario como críticos, es decir, a partir de los cuales se consideraría
que se ha producido el suceso, y enviarlos al sumidero correspondiente.
El diseño de la red debe garantizar que el suceso esperado podrá ser detectado con
una probabilidad superior a una dada, por lo que el número de dispositivos deberá ser lo
suficientemente elevado como para poder ofrecer una determinada cobertura, pudiendo
variar en función del rango sensitivo de los nodos y del tipo de suceso. Además, se podrán usar
algoritmos de localización distribuidas para poder determinar el punto exacto donde se ha
producido el evento.
Otro asunto a tratar será la recepción de la información por parte del sumidero. En
este aspecto, se deberá tener en cuenta la probabilidad de que la información reportada
17
llegue al destino. Se hace vital supervisar los asuntos de conectividad para mantenerlos bajo
control, permitiendo a los protocolos de comunicaciones diseñados alcanzar los nodos
sumideros en un tiempo especificado y con una alta probabilidad.
Por tanto, como se puede comprobar de lo descrito anteriormente, los aspectos que se
deben controlar en este tipo de aplicaciones serán:
Cobertura
Localización distribuida
Conectividad
Protocolos de comunicación
En cuanto al diseño de una red WSN con el objetivo de detectar un suceso, se deberán
especificar los siguientes requisitos como mínimo:
Probabilidad de cobertura del suceso mínima
Error de localización máximo
Probabilidad de conectividad mínima
Probabilidad de pérdidas de paquetes máxima
Retraso máximo en la entrega de los paquetes
2.1.3.2. Estimación de procesos aleatorios temporales y espaciales
En este segundo caso, el objetivo consiste en estimar un fenómeno físico o cualquier
otro proceso susceptible de ser modelado como un proceso aleatorio bidimensional,
generalmente no estacionario. Si se considera una aplicación típica, esta estará compuesta por
la recolección de datos de un determinado área de cobertura a través de los nodos remotos y
su posterior envío al sumidero que será el encargado de recolectar toda la información
recopilada por los nodos y estimar el proceso analizado.
A diferencia de la detección de eventos, el envío de la información se realiza de
manera periódica siendo la frecuencia de muestreo establecida un parámetro crítico. Si se
elige una frecuencia demasiada baja puede darse el caso de que no se pueda estimar al
proceso aleatorio debido a que éste varía muy rápidamente. Por otro lado, si la frecuencia es
demasiado alta, se estará sobrecargando la red WSN con un volumen de datos muy elevado.
Los parámetros que caracterizarán estas aplicaciones serán:
18
Procesamiento de señal
Conectividad
Tiempo de sincronización
Protocolos de comunicaciones que deben minimizar el error en la estimación del
proceso aleatorio.
En consecuencia, algunos de los requisitos básicos de la estimación de procesos
aleatorios serán:
Error estimado máximo
Error de localización máximo
Probabilidad de conectividad
Probabilidad de pérdidas de paquetes máxima
2.1.3.3. Ejemplos de usos
A continuación se presentarán algunas posibles aplicaciones de las redes WSN.
a) Detección de incendios en bosques
Se trataría de una aplicación de tipo detección de eventos. En este posible uso, el
objetivo de la red sería detectar un incendio en una determinada área cubierta por los nodos y
dar una alarma que permita actuar a los cuerpos de seguridad pertinentes antes de que el
incendio sea incontrolable. La red WSN debe cubrir todas aquellas zonas susceptibles de poder
sufrir un incendio: áreas de descansos o zonas de tránsito. Cuando se registre el disparo de
una alarma en un sensor el centro de control debe ser alertado inmediatamente con los datos
obtenidos del proceso de monitorización y de la zona aproximada donde se ha generado la
alarma.
b) Monitorización de la integridad estructural
Se correspondería con un uso de tipo detección de eventos. El objetivo de la red es
estimar el estado estructural de edificios, puentes o cualquier estructura. Una red de sensores
podría detectar aquellos cambios en la estructura que puedan desencadenar una alteración de
la estructura. Desde el punto de vista del usuario, el sistema podría valorar el intervalo de
tiempo transcurrido y la gravedad de los cambios. El intervalo de tiempo daría una idea de
19
cómo de rápido suceden los cambios en la estructura y la gravedad, representaría cómo de
severos resultan dichos cambios.
c) Salud
En esta situación se podrían tener aplicaciones como la monitorización de pacientes
graves o el dotar de un sistema de cuidados continuos. En ambas situaciones se estaría en una
aplicación de estimación de procesos aleatorios. La idea sería medir periódicamente las
constantes vitales del paciente o algún parámetro de análisis como el azúcar y transmitirlos a
una estación base para generar una acción en función de los resultados obtenidos tras el
procesamiento de la información recibida.
2.2. Tecnología
En la actualidad, el número de tecnologías inalámbricas a utilizar en un sistema de
localización en entornos interiores es muy elevado a diferencia de lo que sucede en la
localización y el posicionamiento en exteriores. Para esta finalidad, el sistema de
posicionamiento global, conocido por sus siglas en inglés GPS (Global Posicionament System),
se ha establecido como el estándar de referencia debido a la precisión que es capaz de
conseguir cuando el receptor tiene visión directa con varios satélites de forma simultánea.
No obstante, para localización y posicionamiento en interiores, la señal GPS carece de
utilidad; puesto que el techo de los edificios así como las paredes consiguen apantallar la señal
y, por tanto, el receptor no es capaz de sincronizarse con la red. Por esta razón es necesario
recurrir a otras tecnologías inalámbricas como puede ser ZigBee, Bluetooth o Wifi. Cada una
de ellas presenta una serie de ventajas e inconvenientes que las hacen tener mayor o menor
validez. En consecuencia, la elección tecnológica deberá depender de los requisitos de la
aplicación en concreto, es decir, del grado de precisión que se necesite conocer la situación de
un determinado objetivo. En general, cuanto mayor sea el grado de precisión que se requiera,
mayor deberá ser el gasto en infraestructura, puesto que se requerirá un mayor despliegue de
sensores.
20
Figura 2.2.1. Representación de las diferentes tecnologías en cuanto a precisión y estado de desarrollo.
2.2.1. Bluetooth
Se corresponde con un estándar de comunicaciones inalámbricas basado en
radiofrecuencia, de bajo coste y bajo consumo energético. Originariamente, en 1994, Ericsson
lo desarrolló como un mecanismo alternativo que permitiese sustituir paulatinamente los
enlaces cableados de diversos periféricos. No obstante, las características y versatilidad que
presenta Bluetooth han hecho que se pueda utilizar en una gran cantidad de situaciones
diferentes, como pueden ser el establecimiento de conexiones entre dos terminales móviles
inteligentes como puedan ser una PDA o un teléfono móvil, conexionado de periféricos o
dispositivos de audio.
Como se ha mencionado anteriormente, Bluetooth nace de la mano de Ericsson en
1994 junto con otras grandes compañías del sector tecnológico como son Intel, IBM, Nokia y
Toshiba. Este conjunto de multinacionales constituyeron en 1998 el Bluetooth Special Interest
Group, organismo que se encarga de gestionar y desarrollar las distintas versiones del núcleo
de Bluetooth. Más tarde, en 1999, se unirían empresas de la talla de Microsoft, 3Com o
Agilent. El trabajo conjunto de los diferentes miembros del Bluetooth SIG permitió una rápida
aceptación por parte de los fabricantes; así como la compatibilidad entre dispositivos de los
21
diferentes fabricantes. Este hecho, provocó que las redes Wireless Personal Area Network
(WPAN) basadas en Bluetooth estuviesen reguladas por el IEEE bajo la denominación 802.15.
Las principales características de esta forma de comunicación son:
Opera en la banda libre de los 2,4 GHz por lo que no necesitamos adquirir ninguna
licencia de emisión.
Tiene una capacidad máxima de transmisión de hasta 3 Mbps.
Implementa diversos mecanismos de ahorro energético de forma que el dispositivo no
siempre va a consumir la misma potencia con el consiguiente ahorro energético en la
batería del dispositivo.
Posee un precio económico que permite implementarlo en casi cualquier dispositivo
sin encarecerlo desmesuradamente. Un sistema Bluetooth empotrado tiene un precio
cercano a 20€ la unidad.
Alcance de hasta 100 metros en función de la potencia de emisión que posea el
transmisor Bluetooth.
No obstante, se corresponde con protocolo de comunicaciones cuyo uso queda
restringido para enlaces punto a punto, puesto que el sistema de establecimiento de
conexiones hace difícil poder realizar redes punto-multipunto. Esto se debe a que en
un principio estaba destinado para sustituir a los enlaces establecidos mediante un
cable físico.
2.2.2. ZigBee
ZigBee se corresponde con una especificación global creada por un consorcio de
múltiples marcas destinas a la venta de sistemas de control inalámbrico denominados ZigBee
Alliance. Dicha especificación se basa en el estándar 802.15.4 definido por el IEEE donde se
especifica la capa física y de enlace del protocolo. En cuanto a los niveles superiores, la ZigBee
Alliance se encarga de establecer el conjunto de reglas que deben cumplir las capas de red,
aplicación, el framework de aplicación, los perfiles y los mecanismos de seguridad.
La idea principal sobre la que se ha desarrollado ZigBee ha sido la facilidad a la hora de
implementarlo en un sistema de control, o lo que es lo mismo, se busca que de una manera
sencilla y rápida se pueda desarrollar un sistema robusto y duradero fácilmente integrable en
una red inalámbrica destinada a la supervisión y el control. Por este motivo, ZigBee pretende
cumplir los siguientes requisitos:
22
Alta fiabilidad.
Bajo coste.
Muy bajo consumo.
Altamente seguro.
Estándar abierto.
En consecuencia, para poder satisfacer todos estos puntos, ZigBee se va a caracterizar
por las siguientes características:
Baja capacidad de transmisión, en torno a 250 Kbps, que nos permitirá desarrollar
sistemas de muy bajo coste.
Protocolo sencillo, pudiendo ser implementado sin ningún tipo de limitación en
sistemas microcontroladores de 8 bits.
Muy bajo consumo energético permitiendo que la fuente de alimentación del sistema
pueda durar años.
Como gran desventaja, podemos mencionar la baja capacidad de transmisión
adoptada lo que restringe el uso de esta especificación para usos muy concretos y actividades
que requieran poco intercambio de datos, como accionar un interruptor de la luz o monitorizar
un sensor de temperatura o luminosidad.
2.2.3. RFID
La tecnología RFID (RadioFrequency Identification) corresponde con un método de
almacenamiento y recuperación remota de información, basado en el empleo de etiquetas (en
adelante se referenciarán como tags o transpondedores) en las que se almacenan los datos. De
forma que cuando dichos transpondedores entran en el área de cobertura de un lector RFID,
éste envía una señal para que la etiqueta le transmita la información almacenada en su
memoria. Por tanto, una de las principales características de esta tecnología es la posibilidad
de recibir información de las etiquetas dispersas por el entorno a través de radiofrecuencia y
sin necesidad de que exista contacto físico entre el dispositivo lector y el transpondedor. No
obstante, la distancia no podrá superar un cierto valor máximo impuesto por la potencia de
transmisión máxima y la potencia de recepción mínima detectable.
El rango típico de las señales de radiofrecuencia empleadas en RFID son típicamente
125 KHz., 13,56 MHz., 433-860-960 MHz. y 2,45 GHz.
23
Por su parte, los sistemas de identificación por radiofrecuencia están compuestos por
cuatro elementos principalmente:
Una etiqueta RFID: se denomina también tag (procede de la nomenclatura inglesa) o
transpondedor, puesto que combina en un mismo dispositivo el transmisor y el
receptor. La etiqueta se utilizaría para ser distribuida por el entorno donde el objetivo
a localizar se vaya a desplazar. Se compone de tres elementos: chip, antena y sustrato.
El chip y la antena están contenidos en el substrato que puede ser un material rígido
(por ejemplo el sustrato de fibra de vidrio FR4 de los circuitos impresos) o flexible
(película de poliamida DuPont’s Kapton). En cuanto a la realización de la antena, se
realiza de un material metálico como el cobre; mientras que el integrado se realiza
sobre silicio que se une eléctricamente a la antena. Se distinguen dos tipos de tags:
o Pasivos: no poseen ninguna fuente de alimentación, ésta la reciben
directamente del lector. Por este motivo, tan sólo podrán transmitir
información cuando son activados por el lector.
o Activos: contienen una fuente de alimentación que les suministra la energía
necesaria como para poder transmitir la señal de información.
Un lector: es el encargado de transmitir la energía suficiente a la etiqueta para que
ésta le pueda enviar la información que contiene almacenada. Consta de un módulo de
radiofrecuencia (transmisor y receptor), una unidad de control y una antena para
interrogar los tags vía radiofrecuencia. Para el intercambio de información, los lectores
suelen incorporar algún tipo de protocolo específico, como puede ser NFC, que
permita enviar los datos recibidos de la etiqueta a un sistema de procesamiento de
datos.
Un dispositivo controlador: se corresponderá con un dispositivo móvil o un ordenador
que ejecute la aplicación encargada de procesar los datos procedentes de uno o varios
lectores RFID se las transmita al sistema de información. También puede ser capaz de
transmitir órdenes al lector
Middleware: se tratará del software desarrollado para poder recoger, filtrar y manejar
la información procedente de los diferentes controladores.
24
Figura 2.2.2. Funcionamiento de un sistema RFID con etiqueta pasiva.
2.2.4. Ultra Wide Band
Se corresponde con una tecnología de comunicación inalámbrica conocida hace más
de 45 años en el mundo de la investigación y militar. La principal característica de las redes
Ultra Wide Band (UWB) es que permite obtener enlaces con una gran capacidad de
transmisión, consumiendo muy poca potencia. Esto se consigue transmitiendo señales en el
dominio del tiempo de muy corta duración. El periodo de estas señales será del orden de unos
pocos nanosegundos. Esto permite tener grandes anchos de bandas en las señales
transmitidas lo que conlleva considerables beneficios en cuanto al consumo y a la capacidad
de transmisión.
Por su parte, el despegue de esta tecnología se produjo en 2002 cuando el organismo
estadounidense Federal Communications Commission (FCC) permitió el uso de la banda
ubicada entre 3.6GHz y 10.1 GHz. Este acontecimiento provocó que numerosos centros de
investigación, gobiernos, la industria de las telecomunicaciones,… investigasen posibles
aplicaciones. Entre ellas, cabe citar:
Acceso a Internet de banda ancha a muy alta velocidad.
Localización con precisión de centímetros.
Imágenes de radar de alta resolución.
Obtención de imágenes a través de paredes.
Navegación y seguimiento de objetos de forma precisa.
25
Finalmente, el principal inconveniente de esta tecnología es que sólo se puede utilizar
en un corto rango de espacio, cercano a los 10 metros de cobertura. Esto está motivado por
los niveles tan bajo de potencia que la FCC estableció para UWB. En concreto, la máxima
potencia de salida de un transmisor UWB es de 0.0001 mW/MHz lo que supone que para un
ancho de banda típico de 500 Mhz se tenga una potencia de salida de 0.05 mW, valor que se
encuentra muy por debajo de la máxima potencia permitida, por ejemplo, en el estándar
802.11b que es 100 mW. Esto supone 2000 veces menos potencia.
2.2.5. Wi-fi
Se trata de un estándar internacional que implementa los niveles inferiores del modelo
OSI, en concreto, el nivel físico y el de enlace, sobre un canal inalámbrico. En su concepción se
pensó para sustituir a Ethernet (estándar 802.3) en aquellas zonas o puntos donde difícilmente
podríamos llegar con un cable. De ahí que los métodos de acceso al medio físico sean similares
a los usados en Ethernet. Por otro lado, se trata de un estándar que desde que apareciera en
1997 ha sufrido una constante evolución, encontrando varias versiones del mismo:
2.2.5.1. 802.11a
Esta versión del estándar se corresponde con la tercera generación de redes
inalámbricas debido a que apareció en el mercado después de las redes 802.11 y 802.11b.
Aunque en un principio, su desarrollo se había iniciado antes que el estándar 802.11b. A pesar
de ello, se retrasó debido a los requisitos tecnológicos necesarios para poder llevarlo a cabo.
En concreto, las redes inalámbricas 802.11a se caracterizan por operar a una
frecuencia de 5 Ghz. en los EEUU, en la banda de frecuencia conocida como UNII (Universal
Networking Information Infraestructure). Sin embargo, esta forma de comunicación
inalámbrica no está autorizada para su utilización en Europa porque la banda que usa para
operar se encuentra ocupada por el estándar HyperLAN2.
Las principales características que aporta son:
Una capacidad de enlace de 54 Mbps.
Al trabajar en la banda UNII, posee mayor inmunidad frente a las interferencias por
solapamiento puesto que dicha banda contempla el uso de 4 canales para este fin.
Uso de un rango de frecuencias relativamente libre como son los 5 Ghz.
26
2.2.5.2. 802.11b
Este estándar apareció en 1999 con la idea de permitir a los usuarios comunicarse con
sus dispositivos con redes Ethernet a través de transmisores/receptores de radiofrecuencia.
Por este motivo, la institución IEEE se vio obligada a cambiar los mecanismos de acceso a las
redes Ethernet para añadir el soporte de las nuevas capas físicas y de enlace introducidas por
802.11b. En concreto, se optó por usar CSMA/CA (Carrier-Sense Multiple Access with Collision
Avoidance) en la capa de enlace y para la capa física se eligieron tres técnicas:
DSSS (Direct-Sequence Spread Spectrum) usando la banda de los 2,4 GHz.
FHSS (Frecuency-Hopping Spread Spectrum) operando en el rango de los 2,4GHz.
Infrarrojos.
La principal ventaja de este estándar es que ha sido ampliamente usado en todo el
mundo para establecer redes inalámbricas por ser el primero que salió de forma comercial. No
obstante, presenta una serie de inconvenientes que en revisiones posteriores se han intentado
corregir. Entre estas se pueden citar:
Problemas de interferencias debido a que el rango de frecuencias en el que opera se
encuentra saturado al tratarse de una banda libre.
Capacidad de transmisión reducida, admite hasta 11 Mbps.
Requiere de modulaciones que contrarresten los efectos de multitrayectos.
Sensible a la distancia de tal forma que a una distancia a más de 75 metros, la
capacidad del enlace cae a 2 Mbps.
2.2.5.3. 802.11g
Este estándar surgió como una extensión del 802.11b con el que se pretendía mejorar
la capacidad de transmisión del enlace usando el mismo rango de frecuencias, es decir, la
banda de 2,4 Ghz. Para ello, lo que se hizo fue introducir un segundo modo de acceso basado
en OFDM usado ya en las redes 802.11a que permitió aumentar la capacidad del enlace hasta
los 54 Mbps. De esta forma, al disponer de las dos técnicas de modulación, las usadas en
802.11b y la usada en 802.11a, este estándar podía dar servicio a dispositivos que cumpliesen
la normativa 802.11b y a la vez a los nuevos dispositivos compatibles con el estándar 802.11g.
27
Por tanto, la principal ventaja de las redes 802.11g es el aumento considerable de la
capacidad de transmisión, hasta 54 MBPS. No obstante, al compartir la misma banda que
802.11b presenta las mismas desventajas.
2.2.5.4. 802.11n
Se corresponde con una norma todavía en fase de propuesta, es decir, sigue siendo
evaluado por los grupos de trabajo del IEEE. En Junio de 2.009 estaba prevista su publicación
como estándar, pasando a constituir de esta forma la última revisión del estándar 802.11. Se
caracteriza principalmente por conseguir un aumento de la capacidad de transmisión muy
superior a la proporcionada por 802.11a/b/g. Se podrían alcanzar hasta 600 Mbps. Para
poderlo conseguir ha sido necesario emplear dos conceptos claves en la definición de la capa
física: el uso de sistemas MIMO (Multiple In Multiple Out) y un ancho de banda de 40 Mhz.
para los diversos canales existentes. La unión de estas dos decisiones de diseño ha originado
ese aumento de la capacidad de transmisión.
Por su parte, durante la formulación de este estándar se ha mantenido siempre el
carácter compatible del mismo con las revisiones anteriores de 802.11 por lo que permite el
uso de modulaciones OFDM para poder usar dispositivos compatibles con 802.11a/b y las
técnicas de acceso vistas en 802.11b. De esta forma, pueden usarse los más de 250 millones de
dispositivos existentes en el mercado actual de las comunicaciones inalámbricas en este tipo
de redes. Esta característica supone una gran ventaja comercial puesto que el usar un nuevo
estándar de comunicaciones inalámbricas no supone tener que cambiar los dispositivos que el
usuario pueda ya haber adquirido.
En consecuencia, entre las principales ventajas de 802.11n podemos citar:
Mayor capacidad de transmisión, hasta 600 Mbps.
Retrocompatibilidad con los dispositivos 802.11a/b/g.
Uso de modos para ahorrar consumo y mejorar la utilización de los canales.
Aprovechamiento de los rayos multitrayectos para mejorar la capacidad de
transmisión.
28
802.11b 802.11g 802.11a 802.11n
Tasa máxima de datos (Mbps)
11 54 54 300
Tasa real de datos (Mbps)
5 20 22 146
Nº de canales disponibles
3 3 12 3 en 2,4 GHz. 12 en 5 GHz.
Probabilidad de interferencia
Alta Alta Baja Baja
Comportamiento en entornos difíciles
Pobre Medio Bueno Muy bueno
Compatibilidad 802.11b 802.11b/n 802.11a 802.11a/b/g/n Frecuencias (GHz.)
2,4 2,4 5 2,4 y 5
Seguridad WEP/WPA/WPA2
WEP/WPA/WPA2
WEP/WPA/WPA2
WEP/WPA/WPA2
Tabla 2.2.1. Comparativa entre las diferentes versiones de la especificación Wi-fi.
2.2.6. WiMAX
Se trata de una estándar de comunicaciones cuyo principal objetivo consiste en dar
servicios de banda ancha de una forma inalámbrica a áreas metropolitanas, es decir, está
pensado para ser usados en redes MAN. Por este motivo, se desarrolló para cubrir distancias
de hasta 50 Kms. y permitir una capacidad de transmisión de hasta 100 Mbps. Con estas
características, esta tecnología podría hacer frente a otras como DSL y las líneas T1 tendidas en
el bucle de abonado.
WiMAX se corresponde con el nombre con el que se comercializa el estándar 802.16
del IEEE, organismo encargado del desarrollo y mantenimiento del mismo desde que fuese
transferido por el NIST (National Institute of Standards and Technologies) en 1998 a este
organismo.
La idea fundamental de WiMAX se centra en poder dar una gran variedad de servicios,
motivado por el bajo coste de los enlaces, que pueden ir desde actuar como backbone para
redes 802.11, dar servicios de conexión a dispositivos móviles sin hacer uso del estándar
802.11, como red de respaldo de las redes cableadas,…
Entre las principales características de WiMAX, podemos mencionar:
Dos rangos de frecuencias para operar:
29
10GHz-66GHz: se corresponde con la banda asignada en la primera versión del
estándar. El principal problema de este rango es que requiere visión directa entre las
distintas estaciones para poder llevar a cabo la comunicación, provocando el
encarecimiento de la instalación al tener que aumentar el número de estaciones que
coloquemos.
2GHz-11GHz: en esta banda se establecen dos rangos, uno en los 3,5 GHz que requiere
de licencia para poder transmitir y otro en los 5,8 GHz que se halla en la banda libre y,
por tanto, no necesitaríamos ningún tipo de licencia.
Uso de selección dinámica de la frecuencia de utilización. Esta técnica permite
seleccionar la frecuencia de transmisión en base a las interferencias generadas por
otros sistemas en la banda usada y por la interferencia cocanal y ajustar la potencia de
transmisión en base a estos parámetros. De esta forma, consigue mejorar el
rendimiento de la comunicación.
Útil en redes punto-multipunto.
Asignación de una determinada calidad de servicio a cada conexión, lo que permite
poder transportar sobre la capa de enlace de WiMAX protocolos como ATM, Ipv4,
Ipv6, …
Finalmente, cabe mencionar que en 2005, el IEEE aprobó el estándar 802.16e en el que
se definen redes de banda ancha móviles usando WiMAX como capa física y de enlace. Se
prevé que mediante estas redes se pueda dar servicio a vehículos que circulen hasta 120 km/h.
2.2.7. Comparativa
A modo de resumen, se presenta una breve comparativa entre las diversas tecnologías
estudiadas previamente, destacando lo mejor de cada una de ellas a una nivel tecnológico y
cualitativo.
Bluetooth
ZigBee
RFID UWB
802.11b
802.11a
802.11g
802.11n
WiMAX
Tasa de transferencia [Mbps]
1-3 0.25-0.02
0.2·10-3-0.1
200 11 54 54 200 70
Alcance máximo [m]
22.86 10-100
0.1-200
9.144
60.96 45.72 60.96 45.72 50·103
Potencia [mW]
100 30 500 400 750 1500 1000 2000 20000
30
Ancho de banda [MHz]
1 0.6 500 22 20 20 40 5-10
Eficiencia espectral [b/Hz]
1 0.05 0.4 0.5 2.7 2.7 5 3.7
Eficiencia en potencia [mW/Mbps]
100 1000 2 68 27 19 10 2000
Precio [€]
2.20 1.47 0.25-25
5.14 3.67 8.82 6.61 14.70 40
Tabla 2.2.2. Tabla comparativa de las diferentes tecnologías inalámbricas.
A nivel cualitativo, cada una de las tecnologías propuestas aporta las siguientes
características:
Bluetooth
o Está orientada a aplicaciones de voz y datos
o Opera en el espectro de 2,4 GHz.
o Puede operar a una distancia de entre 10 y 100 metros dependiendo de la
clase del dispositivo.
o La tasa máxima de transferencia es de 3 Mbps.
o Puede penetrar objetos sólidos
o Es omnidireccional y no requiere de visión directa para poder trabajar
o Permite hasta tres modos de seguridad.
ZigBee
o Posee una capacidad de hasta 250 Kbps usando las frecuencias de 2,4 GHz., 40
Kbps en 915 MHz. y 20 Kbps en 868 MHz., variando su alcance de los 10 a los
100 metros.
o Pretende ser un estándar en comunicaciones inalámbricas para las
aplicaciones de control remoto en la industria.
o Debido a su objetivo, se explica su bajo consumo, bajo coste, fácil uso y escasa
capacidad de transmisión.
o En la actualidad, existen tres niveles de seguridad aunque en la primera
especificación liberada no se contemplaban mecanismos de seguridad.
RFID
31
o Existen aproximadamente 140 estándares ISO para RFID que regulan un
amplio rango de aplicaciones.
o En RFID, las etiquetas pasivas se deben poder alimentar a distancias por el
lector. Por este motivo, el receptor debe encontrarse relativamente cerca, a
pocos centímetros.
o Las etiquetas activas, por el contrario, se pueden leer a distancias de varios
metros puesto que éstas se encuentran alimentadas y no requieren que el
receptor les aporte energía para su funcionamiento.
o RFID puede operar a bajas frecuencias, por debajo de 100 MHz., y a altas
frecuencias, banda UHF o en la banda libre de los 2,4 GHz. Y 5,8 GHz.
UWB
o Posee un bajo ratio de consumo (~1mW/Mbps) unido a una gran capacidad de
transferencia.
o Idealmente, tendrá un bajo consumo de energía, bajos preciso, alta capacidad
de transferencia de datos, podrá atravesar los obstáculos y usarán una amplia
franja del espectro radioeléctrico.
o Existen dos organismos de estandarización compitiendo por regular esta
tecnología: UWB Forum, que apuestan por el uso de una interfaz radio basada
en la secuencia directa (DS-UWB), y la WiMedia Alliance, que promueven un
sistema basado en la modulación OFDM.
o Para las redes WSN, el estándar ha propuesto que se use la recomendación
IEEE 812.15.4ª basada en IR-UWB, es decir, hacer uso de la tecnología UWB en
el espectro infrarrojo. Esta técnica permite alcanzar hasta 850 Kbps en un
rango de 10 a 50 metros.
Wi-Fi
o Su coste y consumo de potencia son superiores al resto de las tecnologías
inalámbricas presentadas a excepción de WiMAX.
o Existen multitud de especificaciones que regulan los distintos aspectos de este
estándar.
o 802.11a: utiliza OFDM como modulación y opera en el rango de los 5 GHz.
Posee una velocidad máxima de 54 Mbps.
o 802.11b: funciona en el rango de los 2,4 GHz., tiene una tasa máxima de
transferencia de 11 Mbps y usa DSSS. Se corresponde con la primera versión
del estándar Wi-Fi.
32
o 802.11g: funciona en el rango de los 2,4 GHz., tiene una tasa máxima de
transferencia de 54 Mbps y usa OFDM. Es compatible con la versión 802.11b.
o 802.11e: regula la calidad de servicio.
o 802.11h: se corresponde con un complemento de la norma 802.11a en Europa
y proporciona el control de potencia y la gestión del espectro.
o 802.11i: Aumenta la seguridad incluyendo el estándar de cifrado avanzado
(AES). Esta norma no es totalmente compatible con versiones anteriores.
o 802.11k: se encuentra en desarrollo y permitirá una mayor gestión de los
recursos radios en redes 802.11x.
o 802.11n: Se espera que opere en el rango de los 5 GHz. Y ofrecerá una
velocidad máxima de datos de más de 100 Mbps. Está orientada para
aplicaciones multimedia.
o 802.11p: estándar desarrollado para el sector de la automoción. Será la base
para las comunicaciones de corto alcance en EEUU.
o 802.11r: mejora la capacidad de los usuarios para moverse entre los puntos de
acceso o estaciones base.
o 802.11s: se encuentra en desarrollo y se espera que permita la creación de
redes 802.11x con una topología en forma de malla.
WiMAX
o Se trata de una red inalámbrica de área metropolitana.
o Posee un alcance de 50 Km. con tasas de transferencias de hasta 70 Mbps.
o La primera versión del estándar, 802.16, operaba en el rango de frecuencias
que van desde los 10 GHz. Hasta los 66 GHz. Lo que implicaba que debía existir
visión directa entre el transmisor y el receptor.
o El último estándar, 802.16a, opera entre los 2 y 11 GHz. y no necesita línea de
visión.
o Contempla el uso de receptores en vehículos móviles siempre cuando no
superen la velocidad de 100 Km/h.
o Ha sido creado para competir con la tecnología xDSL y el acceso por módem de
cable.
2.3. Estimación de la posición
La estimación de la posición a partir de una red de sensores inalámbricos es un área de
conocimiento importante en la actualidad, se involucran diferentes áreas de estudio como el
33
procesamiento de señal, algoritmia o desarrollo de protocolos, y de gran atractivo
investigador, debido al amplio desarrollo tecnológico existente que ha permitido acelerar el
crecimiento de este tipo de redes rápidamente.
La capacidad de poder localizar un objetivo dentro de una red WSN es una
característica altamente deseable puesto que en aquellos entornos susceptibles de ser
monitorizados o vigilados, puede permitir generar una acción de control o una actuación con
una mayor rapidez, precisión y eficacia ya que se pueden centrar todas estas medidas en un
punto concreto y no en un área de terreno.
Por su parte, los algoritmos de localización en las redes de sensores, generalmente,
infieren la posición del objetivo a partir del conocimiento de las posiciones absolutas de unos
pocos nodos y de ciertas medidas tomadas entre dichos nodos. Algunas de estas medidas
pueden ser la diferencia de tiempos existente entre que se envía un tren de pulsos al objetivo
y éste lo devuelve, o el nivel de potencia de la señal recibida. En este punto, cabe mencionar
que aquellos nodos cuya información de localización es conocida se denominan balizas, en la
literatura inglesa se puede encontrar bajo el nombre de anchors, haciendo referencia a que se
corresponden con nodos anclados en el sistema de referencia y cuya posición no varía. El
mecanismo para determinar la información de localización puede ser tan variado como el uso
de sistemas GPS, siempre y cuando la baliza se encuentre en un punto ubicado en el exterior, o
mediante la instalación de las mismas en puntos ubicados en un sistema de coordenadas
definido por el usuario.
2.3.1. Parámetros relacionados
La señal recibida presenta una serie de parámetros característicos que pueden ser
susceptibles de utilizarse para extraer información sobre la localización del nodo cuya posición
se desconoce. Estos parámetros están relacionados con la energía, el retardo o la dirección de
la señal.
Se describirán los siguientes parámetros:
Potencia de señal recibida
Ángulo de llegada
Tiempo de llegada
Diferencia de tiempos de llegada
34
2.3.1.1. Potencia de señal recibida
La potencia de señal recibida o, por sus siglas inglesas, RSS (Received Signal Strength)
se corresponde con una medida de la potencia de señal presente en el receptor tras la
correspondiente emisión del transmisor. Por tanto, conocida la potencia de transmisión y la
potencia de recepción se puede realizar una estimación de la distancia existente entre ambos a
través del modelo de propagación. Éste modela las pérdidas sufridas por la señal al viajar por
el medio.
En el espacio libre, el RSS varia con el inverso al cuadrado de la distancia que separa el
transmisor del receptor. Si se denota por a la potencia recibida, ésta se puede relacionar
con la distancia d a través de la ecuación de Friis
Ecuación 2.3.1. Ecuación de Friis.
Donde es la potencia transmitida, es la ganancia de la antena de transmisión,
es la ganancia de la antena de recepción y es la longitud de onda de la señal transmitida en
metros.
No obstante, este cálculo supone una idealización debido a que la señal transmitida se
ve afectada por reflexiones, difracciones, desvanecimientos, multitrayectos, atenuaciones y
dispersiones. Por tanto, el valor RSS de la señal se hace dependiente del entorno por donde se
propaga. No obstante, en la comunidad científica está aceptado en base a evidencias empíricas
que parece razonable modelar el RSS para cualquier valor de la distancia en una localización
particular como una variable aleatoria distribuida logarítmico-normal con un valor medio
dependiente de la distancia. En base a este modelo, la ecuación de propagación resultante
quedaría como:
Ecuación 2.3.2. Ecuación de propagación que contempla el canal de propagación
Donde es un valor de potencia de referencia conocida en dBm a una
distancia desde el transmisor, es el exponente de pérdidas en el trayecto que mide el
ratio en el que el RSS disminuye con la distancia y su valor depende del entorno de
35
propagación específico, es una variable aleatoria gaussiana con media acero y desviación
y registra el efecto aleatorio de las zonas sombreadas, es decir, de las zonas carentes de
cobertura.
2.3.1.2. Ángulo de llegada
Este parámetro expresa el ángulo con el que el nodo receptor recibe la señal
procedente del emisor. Para poder utilizarlo con el fin de localizar algún objetivo, es necesario
disponer de un array de antenas que permitan determinar los diferentes ángulos con los que la
señal se recibe. Este hecho permitirá trazar las líneas rectas indicadoras de la dirección de
procedencia de la señal. De tal forma que el punto de intersección de todas ellas darán el
punto del nodo a localizar.
Para ello, es necesario realizar una observación de la diferencia en los tiempos de
llegada en los diferentes elementos de la antena de geometría conocida para hallar el ángulo.
Figura 2.3.1. Representación de una array de antenas que determinan el ángulo de llegada.
La señal incidente en cada uno de los elementos del array de antenas recorre una
distancia diferente y, por lo tanto, el tiempo de llegada será distinto permitiendo determinar el
ángulo de llegada. Analíticamente supone aplicar una sencilla regla de trigonometría:
36
Ecuación 2.3.3. Expresiones para determinar la distancia en función del ángulo de llegada.
Donde d es la distancia adicional que recorre la señal al llegar a cada elemento del
array. Puesto que la diferencia de tiempos existente entre una antena y su vecina se
corresponde con
siendo c la velocidad de la luz. Por tanto, el ángulo de llegada
será
.
2.3.1.3. Tiempo de llegada
Se corresponde con el tiempo que tarda una señal, generada en el transmisor, en
alcanzar el receptor y viceversa. Este tiempo se puede usar para realizar una estimación de la
distancia existente entre ambos dispositivos.
Un factor importante a tener en cuenta en este tipo de parámetros, es la necesidad de
mantener una base de tiempos común que permita conocer el instante en el que se inició la
transmisión. Por este motivo, un requisito imprescindible es la sincronización de la red, de tal
forma que todos los nodos estén perfectamente sincronizados con el nodo emisor, o bien,
sean capaces de intercambiar la información de temporización pertinente mediante algún
protocolo.
A la hora de implementar este tipo de técnicas se hace uso de correladores o filtros
adaptativos. Si se considera una señal transmitida , la señal que llegará al receptor será:
Ecuación 2.3.4. Expresión de la señal recibida.
Donde es el tiempo de llegada, es decir, el tiempo que ha tarda en propagarse la
señal desde el transmisor hasta el receptor, y es el ruido asociado al canal que puede
modelarse como un ruido blanco y gaussiano. En el caso del correlador, el receptor hace la
correlación de la señal con una señal patrón local para diversos retardos ,
seleccionando el que provoca el valor máximo de ésta.
37
Por su parte, hay que considerar que al tratar entornos reales existe el problema del
multitrayecto y, por tanto, el patrón a usar debería considerar todos los caminos de señal
incidentes en el receptor. Al no ser posible conocer a priori todos ellos, los resultados para
determinados entornos pueden ser muy imprecisos. Para conseguir aumentar la precisión de
este tipo de medidas, se usa lo que se denomina detección del primer camino, que consisten
en usar la señal que antes llega al nodo destino, en vez de la que llega con mayor potencia.
Figura 2.3.2. Efectos del multitrayecto sobre la transmisión de una señal
2.3.1.4. Diferencia de tiempos de llegada
Este parámetro se basa en la medida de la diferencia entre los tiempos de llegada de la
señal procedente del objetivo a localizar de las diferentes balizas estáticas que permiten
calcular la posición (o el tiempo de llegada de la señal emitida por las estaciones fijas al
dispositivo móvil, en el caso de que la localización esté asistida por un terminal). Puesto que la
curva cuyos puntos satisfacen la condición de que su distancia a dos referencias es una
constante es una hipérbola, si se calcula esta correlación para varios pares de estaciones, la
intersección de las hipérbolas resultantes muestra el punto donde se encuentra el terminal
móvil.
Al igual que en el tiempo de llegada, la sincronización entre las balizas es muy
importante puesto que una falta de sincronía puede traducirse en errores de precisión
considerables. No obstante, la principal ventaja de usar este parámetro es que elimina la
necesidad de sincronizar el objetivo con la red de balizas.
38
2.3.2. Técnicas para estimar la posición
La finalidad de los algoritmos de posicionamiento es, dado un conjunto de medidas
como pueden ser distancias, ángulos de llegada o tiempos de llegada, localizar la posición de
los nodos cuya situación es desconocida. En consecuencia, el posicionamiento ocurre en dos
etapas. En un primer momento se obtienen las medidas, en ese instante, éstas son
combinadas usando técnicas de posicionamiento para deducir la posición de los nodos a
localizar.
Las técnicas de localización se clasifican habitualmente en la literatura en cuatro
grupos:
Basadas en balizas. Algunos nodos conocen sus posiciones absolutas, de tal forma que
la distancia estimada a las balizas puede obtenerse por interacción directa con éstas,
un solo salto puesto que interviene una única baliza, o indirectamente, denominada
multisalto debido a la colaboración de diversas balizas intermedias.
Balizas libres. Ninguno de los nodos conoce su posición. Por este motivo, sólo se
puede hablar de coordenadas relativas o virtuales, debido a que se desconoce las
posiciones absolutas de las mismas.
Basadas en el rango. Las medidas proporcionan una especie de información sobre la
distancia o ángulo de los nodos.
Rango libre. Sólo aportan información sobre la conectividad.
En este proyecto se analizarán únicamente las técnicas basadas en nodos de
localización de un único salto.
2.3.2.1. Triangulación
La técnica de localización por triangulación se basa en las propiedades geométricas de
los triángulos para calcular la posición de los objetos. Los diferentes algoritmos usados para
efectuar la triangulación pueden ser divididos en tres categorías: lateración, uso de medidas
de distancias, y angulación, utilización de la medida de los ángulos.
2.3.2.1.1. Lateración
Se define la lateración como el cálculo de la posición a partir de las medidas de
distancias efectuadas. Es necesario tener en cuenta que para poder llevar a cabo la localización
39
en una superficie de dos dimensiones, se necesitan al menos tres medidas de distancias no
colineares. Para el caso de tres dimensiones, los requisitos se incrementan en una medida
más, es decir, se requerirán, al menos, cuatro medidas no coplanares. No obstante, el
conocimiento del dominio específico donde se va a efectuar la localización puede reducir el
número de medidas de distancias requeridas.
El dispositivo a localizar envía una señal a todos los nodos fijos a su alcance,
comunicando estos, al sistema que se encarga de ejecutar el algoritmo, las medidas de la
potencia de señal recibida o la diferencia de tiempos de llagada para poder trazar unas
circunferencias con centra en cada uno de los nodos y así, mediante la intersección de dichas
circunferencias, poder hallar la ubicación del objetivo.
Figura 2.3.3. Ejemplo de triangulación por lateración en una superficie de 2D
Hay tres aproximaciones para medir la distancia requerida por la técnica de la
lateración:
Directa. En esta situación la medida de la distancia requiere de un movimiento o una
acción física.
Tiempo de llegada. La medición de la distancia de un objeto a un punto P(x,y) donde
se ubica una baliza se efectúa mediante el cálculo del tiempo que tarda en viajar la
señal emitida, es decir, mediante el tiempo de llegada. Este método permite que el
objeto a localizar se encuentre en movimiento o permanezca en una posición fija.
Atenuación. La intensidad de una señal emitida decrece a medida que la distancia con
respecto la fuente emisora se incrementa. Este decrecimiento con respecto a la
40
intensidad original es lo que se denomina atenuación. En consecuencia, dada una
función de correlación entre la atenuación y la distancia para un tipo de emisión y la
potencia de transmisión, es posible estimar la distancia de un objeto a un punto P(x,y)
sin más que aplicar la ecuación propagación. En entornos con muchos obstáculos,
como puede ser el interior de un edificio, las medidas de distancia utilizando
atenuación son menos precisas que las obtenidas por tiempo de llegada. Esto se debe
a que la señal emitida se ve afectada por fenómenos físicos como la reflexión o la
refracción y por el multitrayecto.
2.3.2.1.2. Angulación
La angulación es un proceso similar al de la lateración salvo que en vez de usar
distancias, se utilizan ángulos para determinar la posición de un objeto. En general, para poder
localizar un objetivo en una superficie de dos dimensiones, la angulación requiere de dos
medidas de ángulos y una medida de longitud, como puede ser la distancia entre los nodos de
referencia. En tres dimensiones, se requiere una medida de longitud, una medida de azimut y
dos ángulos para especificar una posición. En determinadas ocasiones, se decide elegir un
vector de referencia constante como el ángulo de cero grados.
Figura 2.3.4. Ejemplo de triangulación por angulación en una superficie de 2D
Para esta técnica, los arrays de antenas sincronizadas son una excelente tecnología. Al
disponer de múltiples antenas con una separación conocida, el tiempo de llegada puede ser
calculado. Teniendo en cuenta las diferencias en el tiempo de llegada y la geometría del array
receptor, es posible calcular el ángulo del segmento que une el receptor con la fuente de
transmisión. Si hay suficientes elementos en el array y la separación entre ellos es lo
suficientemente grande, los valores obtenidos por el mecanismo de ángulación pueden ser
muy precisos.
41
2.3.2.1.3. Proximidad
La técnica de localización basada en proximidad se caracteriza por determinar la
posición del objetivo en base a la cercanía del mismo a la posición conocida de una baliza del
sistema. La presencia del objeto se detecta por algún fenómeno físico con alcance limitado.
Hay tres aproximaciones para determinar la proximidad del objetivo:
Detección por contacto físico directo. Se corresponde con el mecanismo más simple de
todos, puesto que requiere una interacción física del objetivo con el sistema. La tecnología
para detectar dicha interacción puede ser muy variada, utilizando desde sensores de presión
hasta detectores de campos capacitivos.
Monitorización de un punto de acceso en redes inalámbricas organizadas en celdas. En
esta técnica, se monitorizan cada una de las celdas correspondientes a un punto de acceso. De
forma que cuando el objetivo penetre en una celda, se conocerá su posición por la cercanía ha
dicho punto de acceso.
Observación de sistemas de identificación automáticos. La tercera implementación usa
sistemas de identificación automática como pueden ser tarjetas electrónicas con una etiqueta
identificadora o registros de acceso en ordenadores. Por tanto, observando al sistema de
identificación, se puede inferir la posición del objetivo sin más que asociar cada punto de
control a una posición.
2.3.2.2. Análisis de escenas
La técnica de análisis de la escena utiliza las características de una escena observada
desde un punto de vista en particular, para extraer conclusiones sobre la posición relativa de
los objetos. Habitualmente las escenas observadas se simplifican para obtener características
que son fáciles de representar y comparar. Cuando se produce una diferencia en la escena
observada, podemos determinar el movimiento de un objeto.
Una escena podría ser una o imagen visual (obtenida con una cámara) o cualquier otro
parámetro físico susceptible de ser medido, tal como las características electromagnéticas que
existen cuando un objeto se encuentra en una posición y orientación determinadas.
42
2.4. Elección tecnológica
El análisis realizado en las subsecciones previas de las diferentes tecnologías
inalámbricas utilizadas y de las diferentes técnicas de localización y de posicionamiento
permite al lector hacerse una idea de la gran variedad de elecciones que se pueden efectuar
para tal objetivo. La elección de la tecnología inalámbrica se ha efectuado en base a dos
criterios:
Bajo consumo y gran capacidad de transmisión de datos.
Amplia difusión del estándar.
El primer criterio de decisión viene impuesto por las características que se le
presuponen a una red de sensores inalámbricos, puesto que los nodos que la componen
deberán tener una gran autonomía debido a que en su mayoría son alimentados mediante
baterías cuya capacidad es limitada. Por este motivo, la tecnología inalámbrica utilizada debe
caracterizarse por su bajo consumo. No obstante, se deberá buscar un compromiso entre
eficiencia energética y capacidad de transmisión, debido a que cuanto menor sea el consumo,
menor será la tasa de transferencia.
Con respecto al segundo factor, se ha impuesto como un requisito fundamental el
crear un sistema de localización que pueda ser utilizado por cualquier usuario sin necesidad de
adquirir un terminal electrónico específico que interactúe con el sistema. Esto provoca que la
elección tecnológica se centre en tecnologías inalámbricas ampliamente utilizadas y que se
hayan establecido como un estándar en la industria.
Con el fin de satisfacer dichos criterios, se ha optado por elegir como soporte de la
comunicación la especificación Bluetooth. Como se ha podido comprobar previamente,
Bluetooth es un estándar ampliamente utilizado en la industria y en el sector multimedia.
Cualquier dispositivo comercial moderno dispone de un transceptor Bluetooth, lo que permite
al usuario poder utilizar dicho sistema de localización mediante el uso de una aplicación
software. Por tanto, se evita al usuario el desembolso económico en un dispositivo específico,
además del transporte y uso del mismo. Por otro lado, Bluetooth es un sistema de transmisión
de datos con una gran capacidad y con un consumo muy reducido en comparación con
tecnologías que ofrecen un rendimiento similar. Otra característica de Bluetooth, es que se
corresponde con una especificación que posee un gran apoyo de la industria electrónica, está
43
continuamente en desarrollo y los transceptores poseen un precio muy asequible,
aproximadamente 10€.
44
Capítulo 3
Bluetooth como
tecnología inalámbrica
La tecnología inalámbrica Bluetooth se ha convertido en una especificación global
como mecanismo para establecer una comunicación rápida, fiable y sin cables entre multitud
de dispositivos como pueden ser ordenadores portátiles, teléfonos móviles, periféricos o
manos libres para vehículos motorizados. El principal motivo de su rápida extensión se debe a
la facilidad para transferir datos y sincronizar dispositivos. No obstante, en el ámbito industrial
esta tecnología ha despertado un creciente interés como consecuencia de su bajo coste y gran
capacidad de transmisión, además de su rápida implantación en la mayor parte de los
dispositivos móviles multimedia comerciales.
En el resto del capítulo se analizarán las principales características del estándar en su
versión 2.1, de forma que se pueda obtener una visión general del mismo y se detallarán
aquellos conceptos claves para el desarrollo de este proyecto.
3.1. Descripción general
Bluetooth surge como una especificación para Redes Inalámbricas de Área Personal
(WPANs) que posibilita la transmisión de voz y datos entre diferentes dispositivos mediante un
enlace por radiofrecuencia segura y globalmente libre (2,4 GHz.). Los principales objetivos que
se pretenden conseguir con esta norma son:
Facilitar las comunicaciones entre equipos móviles y fijos.
Eliminar cables y conectores entre éstos.
Ofrecer la posibilidad de crear pequeñas redes inalámbricas y facilitar la sincronización
de datos entre nuestros equipos personales.
45
En 1994, Ericsson inició un estudio para investigar la viabilidad de una nueva interfaz
de bajo costo y consumo para la interconexión vía radio (eliminando así cables) entre
dispositivos como teléfonos móviles y otros accesorios. El estudio partía de un largo proyecto
que investigaba unos multicomunicadores conectados a una red celular, hasta que se llegó a
un enlace de radio de corto alcance, llamado MC link. Conforme este proyecto avanzaba se fue
haciendo claro que éste tipo de enlace podía ser utilizado ampliamente en un gran número de
aplicaciones, ya que tenía como principal virtud que se basaba en un chip de radio.
De esta forma, se creó el protocolo de comunicaciones inalámbricas Bluetooth cuyas
distintas versiones son:
Bluetooth v.1.1 (IEEE Standard 802.15.1-2002)
Bluetooth v.1.2 (IEEE Standard 802.15.1-2005)
Bluetooth v.2.0 (Bluetooth 2.0 + EDR publicada por el SIG)
Bluetooth v.2.1 +EDR(Bluetooth Core Specification Version 2.1 publicada por el SIG el
26 de Julio de 2007)
Bluetooth v.3.0 +HS(Abril de 2009)
La versión 1.2, a diferencia de la 1.1, adopta una solución inalámbrica complementaria
para permitir la coexistencia de sistemas Bluetooth y Wi-Fi en el espectro de los 2.4 GHz, sin
interferencia entre ellos. Para ello, usa la técnica de saltos en frecuencias adaptativos (AFH),
que consigue una transmisión más eficiente y un cifrado más seguro. Para mejorar las
experiencias de los usuarios, esta versión ofrece una calidad de voz con menor ruido
ambiental, y permite una rápida configuración de la comunicación con otros dispositivos
Bluetooth dentro del rango del alcance.
La versión 2.0, fue creada para ser una especificación separada. Se caracteriza por
incorporar la técnica "Enhanced Data Rate" (EDR) que le permite mejorar las velocidades de
transmisión en hasta 3Mbps a la vez que intenta solucionar algunos errores de la
especificación 1.2.
La versión 2.1, simplifica los pasos para crear la conexión entre dispositivos, además el
consumo de potencia es 5 veces menor. No obstante, se han añadido otras mejoras
sustanciales a la especificación como la generación de informes de datos erróneos, la
respuesta extendida al proceso de descubrimiento, eventos de finalización por extinción del
temporizador en la supervisión del enlace o el modo de seguridad 4.
46
Finalmente, la versión 3.0 añade nuevas mejoras al estándar Bluetooth en relación a la
pila de protocolos usada. Se introducido la capa AMP, lo que ha provocado una mejora de la
capa HCI para interactuar con AMP de una forma más óptima así como la seguridad. Se ha
mejorado el protocolo L2CAP con la inclusión de los modos Streaming y de retransmisión
mejorada, se han solucionado problemas en el soporte del canal así como una mejora de la
máquina de estados L2CAP para los canales AMP. Como una característica novedosa, se
encuentra una capa de adaptación del protocolo 802.11.
En relación a los aspectos más tecnológicos, la tecnología inalámbrica Bluetooth utiliza
la banda de radio ISM (Industrial, Science and Medical applications) de 2,4 GHz. que se
encuentra disponible en todo el mundo y que no requiere de una licencia por parte de las
autoridades reguladoras de las telecomunicaciones propias de cada país. Esto permite que los
dispositivos Bluetooth puedan operar en cualquier región del globo terrestre sin necesidad de
cambiar ningún componente hardware del dispositivo.
El sistema emplea un transmisor de salto en frecuencia para contrarrestar las
interferencias y las pérdidas de intensidad de señal, y cuenta con un gran número de
portadoras disponibles para la transmisión de datos debido al uso de una modulación espectro
ensanchado por salto en frecuencia (FHSS). Para minimizar la complejidad del transmisor, se
utiliza una modulación de frecuencia binaria. La tasa de transferencia de símbolos es de
1MSímbolo/s, admitiendo una velocidad de hasta 1 Mbps en el modo de transferencia básica y
una velocidad de transmisión aérea total de 2 a 3 Mbps en el modo de transferencia mejorada
o EDR. Este último modo se corresponde con una especificación incluida en la especificación
2.1 del estándar Bluetooth.
Por su parte, sobre esta interfaz radio, se definen dos tipos de enlaces: físicos y lógicos.
Los enlaces físicos se corresponde con un enlace de comunicación entre dos dispositivos que
se intercambian paquetes, sea cual sea la dirección de estos. No obstante, la norma impide
que todos los dispositivos puedan establecer enlaces con todos, sino que sólo podrán
establecer un enlace físico dentro de una misma red el maestro y un esclavo. De forma que
dos dispositivos que actúen como esclavos en una red no podrán formar un enlace físico
nunca.
Con respecto a los enlaces lógicos, estos son los que permiten soportar las aplicaciones
de voz y datos. Estos se corresponden con enlaces SCO y con enlaces ACL, respectivamente.
Los enlaces ACL, se tratan de enlaces asíncronos no orientados a conexión, por lo que
47
proporcionan un enlace no fiable de tal forma que los paquetes que se envían a través de
estos enlaces no se garantizan que se entreguen al otro extremo del enlace. Por esta razón
este tipo de enlaces son convenientes para servicios basados en conmutación de paquetes. En
relación a los enlaces SCO, su principal característica es que se corresponden con enlaces
síncronos orientados a conexión, por lo que han sido diseñados para soportar voz en tiempo
real y tráfico multimedia. Por ello, son ideales para servicios que requieran un enlace fiable de
transmisión o estén basados en conmutación de circuitos. Tanto la voz como los datos se
transmiten en forma de paquetes y la especificación Bluetooth permite crear enlaces ACL y
SCO al mismo tiempo.
Finalmente, la pila de protocolos que usa Bluetooth se organiza en capas al igual que el
modelo OSI. En la figura 3.1.1 se pueden comprobar los diferentes protocolos de los que hace
uso la especificación para gestionar y controlar los diferentes enlaces y conexiones. Cada uno
de estos protocolos será revisado en secciones posteriores del capítulo.
Figura 3.1.1. Pila de protocolos Bluetooth.
3.2. Arquitectura Bluetooth
La pila de protocolos Bluetooth se basa en el modelo de referencia OSI del organismo
internacional de estandarización ISO para la interconexión de sistemas abiertos. La
especificación Bluetooth utiliza una arquitectura de protocolos que permiten el intercambio
transparente de datos entre aplicaciones diseñadas de acuerdo con dicha especificación y
fomentan la interoperabilidad entre los productos de diferentes fabricantes.
48
Se pueden observar dos áreas en dicha pila de protocolos, que pueden ser
implementadas en distintos sistemas o todos en un mismo sistema. Estas áreas son:
El módulo Bluetooth (periférico hardware), encargado de las tareas relacionadas con
el envío de información a través de la interfaz de radiofrecuencia. Se encargaría de las
tareas asignadas a la capa física y parte de la capa de enlace en el modelo OSI. Esto
supone la codificación de los bits, la modulación utilizada o la potencia con la que se
transmite.
El host Bluetooth (implementación software), relacionado con los protocolos
asociados a las capas superiores como la capa de red o de aplicación.
El nexo de unión entre estas dos zonas diferenciadas es la denominada Interfaz de
Controlador de Host o, por sus siglas en inglés, HCI. Se encarga de suministrar una interfaz
uniforme de acceso a las capacidades del controlador Bluetooth a través de un conjunto de
comandos que afectan a diferentes bloques de la arquitectura de Bluetooth como puede ser el
gestor de enlaces o la banda base.
En las siguientes subsecciones se procederá a detallar el funcionamiento básico de los
bloques que componen la especificación Bluetooth.
3.2.1. Radio
Como se ha comentado anteriormente, los dispositivos Bluetooth operan sobre la
banda ISM de 2.4 GHz. utilizando un transceptor de salto en frecuencias para combatir las
interferencias y los desvanecimientos en la señal causados por el medio físico. En concreto, las
frecuencias operativas de Bluetooth se hallan mediante la expresión 3.1:
Ecuación 3.2.1. Expresión que permite hallar las frecuencias centrales de los canales Bluetooth.
Como se puede comprobar del análisis de la expresión 3.2.1, los canales de
radiofrecuencia están espaciados 1 MHz en el espectro. Además para cumplir con las
regulaciones fuera de banda de cada país, se ha dejado una banda de guardia de 2 MHz en el
límite inferior de la banda y de 3.5 MHz en el superior.
Por su parte, la especificación define dos tipos de modulaciones dependiendo la usada
para transmitir del modo de operación del dispositivo. De esta forma, si se operan en el modo
49
normal denominado Basic Rate y que alcanza una velocidad de transmisión máxima de 1
Mbps, se usa una modulación FM binaria que minimiza la complejidad del transceptor. No
obstante, se define un modo opcional de transmisión que permite alcanzar una mayor
velocidad de transmisión, denominado Enhanced Data Rate, que usa una modulación PSK y
que posee dos variantes a su vez:
-DQPSK, que permite alcanzar los 2 Mbps, y 8DPSK, con la
que se pueden obtener hasta 3 Mbps de tasa de bits. La tasa de símbolos para ambas
modulaciones es de 1 MSímbolo/s.
Para poder efectuar una transmisión full-duplex, se ha optado por usar un esquema de
multiplexación por división en el tiempo (TDD) en ambos modos. Este mecanismo permite
emular un canal de comunicación full dúplex a partir de un enlace de comunicaciones semi-
duplex. Para ello, lo que se hace es dividir el tiempo en ranuras o slots, asignando un cierto
número de ellos al enlace de subida y otros al enlace de bajada. Esto supone una gran ventaja
cuando los enlaces son asimétricos ya que permiten asignar más capacidad al canal que lo
requiera.
Ecuación 3.2.2. Ejemplo de un esquema de multiplexación por división en el tiempo en una comunicación Bluetooth.
El otro aspecto más importante de la interfaz radio se corresponde con la potencia de
transmisión. Según la potencia máxima de salida, en la especificación Bluetooth se distinguen
tres tipos de dispositivos:
50
Clase Potencia máxima de salida (Pmax)
Potencia Nominal
Potencia mínima de salida (Pmin)
Control de potencia
Alcance
1 100 mW (20 dBm)
N/D 1 mW (0 dBm)
Pmin< +4 dBm a Pmax Opcional: Pmin2 a Pmax
~100 m
2 2.5 mW (4 dBm)
1 mW (0 dBm)
0.25 mW (-6 dBm)
Opcional: Pmin2 a Pmax
~10 m
3 1 mW (0 dBm)
N/D N/D Opcional: Pmin2 a Pmax
~1 m
Tabla 3.2.1. Especificación de las clases de dispositivos y sus características.
La clase de dispositivo Bluetooth es un parámetro importante a la hora de usarlo en
una aplicación ya que determinará el alcance máximo del sistema.
3.2.2. Banda Base
La banda base permite el enlace físico de radiofrecuencia entre dispositivos Bluetooth
dentro de una piconet, es decir, dos o más dispositivos Bluetooth que comparten un mismo
enlace físico. Como estos terminales utilizan la expansión de espectro por saltos de frecuencia,
donde los paquetes se transmiten en franjas de tiempo predefinidas por frecuencias
conocidas, este nivel utiliza procedimientos de averiguación y localización para sincronizar la
frecuencia de saltos de transmisión y los relojes de los diferentes dispositivos Bluetooth.
Además se encarga de controlar las operaciones sobre los bits y los paquetes, detectar
y corregir los errores que se produzcan en el medio, así como de la difusión automática de
mensajes a diferentes puntos de la red o del cifrado. También emite confirmaciones y
peticiones de repetición de las transmisiones recibidas. Es decir, efectúa las tareas de la capa
de enlace del modelo OSI.
3.2.2.1. Enlaces físicos
Corresponden con el nivel más bajo de abstracción dentro de la arquitectura
Bluetooth. Se definen cuatro tipos de canales físicos: dos estarán destinados a las
comunicaciones entre dispositivos conectados y asociados dentro de una piconet específica;
mientras que los otros dos, se destinarán al proceso de descubrimiento y al establecimiento de
una conexión. No obstante, los cuatro canales físicos mencionados comparten características
comunes como son:
51
Combinación de una secuencia de saltos en frecuencia pseudo-aleatoria, lo que motiva
la reducción de los efectos nocivos de las interferencias.
Intervalos de tiempos específicos para las transmisiones.
Código de acceso.
Codificación de la cabecera de los paquetes.
Por su parte, un dispositivo Bluetooth puede usar solo uno de estos canales físicos en
un instante de tiempo dado. Sin embargo, en la norma se contempla la existencia concurrente
de múltiples operaciones, es decir, un mismo dispositivo puede encontrarse realizando varias
operaciones tales como transmitir datos y estar a la espera de ser descubierto o de que le
establezcan una conexión. Para ello se ha usado un sistema de multiplexión por división en el
tiempo entre los canales. De esta forma, se consigue transmitir la sensación de que un mismo
equipo puede encontrarse conectado simultáneamente en varias piconets mientras está
siendo descubierto o esperando el establecimiento de una conexión nueva. En este sentido,
algunos dispositivos avanzados pueden ser capaces de conectarse simultáneamente a más de
un canal, aunque este hecho no queda recogido en la norma.
A continuación se muestran los diferentes canales físicos definidos en el estándar
Bluetooth.
Canal físico básico para Piconets. En el estado “Conexión”, este canal se corresponde
con el usado por defecto. Queda definido por el maestro de la piconet que, por
definición, se trata del dispositivo que inicia una conexión mediante paging. Además,
el maestro será quien se encargue de controlar el tráfico de la piconet mediante un
esquema de polling. En este tipo de canales, la secuencia de saltos en frecuencia
pseudo-aleatoria hace uso de las 79 frecuencias de RF disponibles y se determinará
mediante el reloj del maestro y su dirección Bluetooth. En relación a la división en
intervalos de tiempos, estos poseen una duración de 625 microsegundos y son
numerados de acuerdo a los 27 bits más significativos del reloj del maestro. El rango
de numeración va desde 0 a y es una rango periódico con periodo . Por
otro lado, el maestro siempre empezará a transmitir en un intervalo de tiempo par,
quedando a la espera de recibir datos de los esclavos en los instantes impares. En el
caso de usar paquetes cuya transmisión ocupe varias divisiones temporales, se puede
conmutar la transmisión por el proceso de recepción. De tal forma que el maestro
transmitiría en instantes impares y los esclavos en los pares. A su vez, después de
52
efectuar una transmisión, un paquete de respuesta es esperado durante un tiempo
tras el comienzo de la transmisión. El parámetro N es un número entero e
impar mayor que cero y su valor depende del tipo de paquete que se haya transmitido.
Por su parte, en el caso de la recepción, el correlador de acceso buscará un código de
acceso correcto en el canal. Si no se obtiene ningún resultado positivo, entonces el
receptor esperará hasta el siguiente intervalo de recepción. En caso de producirse una
comparación satisfactoria, el receptor quedará pendiente de recibir el resto del
paquete salvo que el destinatario no sea ese dispositivo, haya un error irrecuperable
en la cabecera o este se produzca en la carga del paquete.
Figura 3.2.1. (a) Transmisión de paquetes multi-intervalos y (b) ciclo de transmisión y recepción de un transceptor maestro en un modo normal de transmión para paquetes de un solo intervalo.
Canal físico adaptado para Piconets. Este tipo de canal se diferencia del
anterior en que el número de frecuencias que utiliza es inferior a los 79
definidos por la norma. No obstante, existe un mínimo que canales de RF a
usar y se corresponde con 20. Además de este hecho existen una segunda
diferencia, es que el mismo mecanismo de canal que hace la frecuencia esclava
es el que realiza anteriormente la transmisión maestra.
Canal físico para Page Scan. Estos canales se caracterizan por seguir un patrón de salto
más lento que los canales físicos para Piconets. Este hecho se debe al uso de una
secuencia de salto más pequeña y que es determinada por la dirección Bluetooth del
que busca. En cuanto a la temporización del canal físico para Page Scan, esta será
determinada por el reloj nativo del terminal que busca los dispositivos. Durante el
procedimiento de paging, el maestro transmitirá mensajes relacionados con el
dispositivo al que se quiere conectar. En un único intervalo de transmisión, el mensaje
se transmitirá en dos frecuencias diferentes como se muestra en la figura 3.2.2. Para el
intervalo de recepción, el dispositivo escuchará los mensajes de respuestas en dos
frecuencias diferentes.
53
Figura 3.2.2. Ciclo Rx/Tx de un transceptor en modo Page. En ella, se usa para las frecuencias de la secuencia de salto correspondientes a la transmisión y , para las de recepción.
Canal físico para Inquiry Scan. Estos canales se caracterizan por seguir un patrón de
salto más lento que los canales físicos para Piconets. Este hecho se debe al uso de una
secuencia de salto más pequeña y que es determinada por la dirección Bluetooth del
que busca. En cuanto a la temporización del canal físico para Inquiry Scan, esta será
determinada por el reloj nativo del terminal que busca los dispositivos. Durante el
proceso de Inquiry o de descubrimiento, el maestro transmitirá mensajes con el código
de acceso general o dedicado. Por su parte la temporización para el descubrimiento es
equivalente al explicado para el mecanismo de paging.
Figura 3.2.3. (a) Temporización de un paquete de respuesta al inquiry con éxito en la primera mitad del intervalo. (b) Temporización de un paquete de respuesta al inquiry con éxito en la segunda mitad del intervalo.
3.2.2.2. Enlaces físicos
Un enlace físico representa una conexión a nivel de banda base entre dispositivos. Éste
siempre estará asociado a un solo canal físico.
Por su parte, los enlaces físicos poseen un conjunto de propiedades que son comunes
a todos los mecanismos de transporte lógicos. Estas propiedades resultan ser:
Control de potencia.
54
Supervisión del enlace.
Encriptación.
Cambio de la tasa de transferencia de datos dada según la calidad del canal.
Control de paquetes que ocupen varios intervalos temporales.
De las propiedades anteriores cabe destacar la supervisión del enlace debido a que es
una tarea crítica. Una conexión puede romperse por motivos tales como que uno de los
terminales haya salido fuera de cobertura, existen muchas interferencias en el canal o se haya
producido un fallo en la alimentación de algún equipo. Puesto que alguno de estos fallos se
produce sin previo aviso, es importante monitorizar el enlace tanto del lado del maestro como
del esclavo para evitar posibles colisiones cuando la dirección del transporte lógico o de un
miembro en estado park se reasigne a otro esclavo.
Para poder detectar las pérdidas, tanto el maestro como el esclavo usarán un
temporizador de supervisión del enlace. Una vez recibido una cabecera de paquete válida con
la dirección de un esclavo en el enlace físico, el temporizador se reiniciará. Si en algún instante
durante el estado de conexión, el temporizador alcanza su valor límite, , la
conexión se considerará desconectada. Este mismo temporizador es el usado para los
transportes lógicos ACL, SCO y eSCO.
Finalmente, el valor del temporizador se negocia con el Gestor del enlace, eligiéndose
de tal forma que resulte mayor que los periodos asociados a los estados sniff y hold.
3.2.2.3. Transportes lógico
En este apartado se procederá a describir los mecanismos que la especificación
Bluetooth posee para ofrecer diferentes servicios que cubran las exigencias de los usuarios. En
concreto se definen cinco tipos de transportes lógicos:
Orientado a conexión síncrono (SCO, Synchronous Connection-Oriented). Se
caracteriza por ser un enlace punto a punto simétrico entre el maestro y un esclavo específico.
Este transporte lógico se basa en la reserva de intervalos de tiempos, lo que permite emular
una conexión basada en conmutación de circuitos, ya que dicha reserva es permanente
mientras el enlace exista. El maestro puede soportar hasta tres enlaces SCO a un mismo
esclavo o a varios. Por su parte, un esclavo puede llegar a mantener hasta tres enlaces con un
55
mismo maestro o dos enlaces si estos proceden de maestros diferentes, lo que implicaría que
el dispositivo esclavo estaría inmerso en varias piconets.
Orientado a conexión síncrono extendido (eSCO, extended Synchronous Connection-
Oriented). Este segundo tipo de enlace síncrono se corresponde con un transporte lógico
punto a punto entre el maestro y un esclavo específico. Sin embargo, a diferencia de SCO, el
enlace puede ser simétrico a asimétrico, lo que implicaría que el número de intervalos
temporales reservados no tiene por qué ser igual entre el maestro y el esclavo que entre el
esclavo y el maestro. Este transporte lógico se basa en la reserva de intervalos de tiempos, al
igual que SCO, lo que permite emular una conexión basada en conmutación de circuitos. Por
otro lado, eSCO soporta una ventana de retransmisión inmediatamente después de los
intervalos reservados. La unión de estos intervalos y de la ventana de retransmisión es lo que
se conoce como ventana eSCO.
No orientado a conexión asíncrono (ACL, Asynchronous Connectionless Link). Este tipo
de transporte lógico permite suministrar un mecanismo de transporte basado en conmutación
de paquetes entre el maestro y todos los dispositivos esclavos que constituyan la piconet,
incluidos aquellos que ya poseen un enlace SCO y/o eSCO activo. Para ello hace uso de los
intervalos de tiempo no reservados por los enlaces SCO y eSCO. Por su parte, entre un maestro
y un esclavo tan sólo puede existir un enlace ACL.
Difusión para esclavos activos (ASB, Active Slave Broadcast). Este transporte lógico se
usa cuando el maestro quiere comunicarse con todos los esclavos activos. No existen
asentimientos debido a que el tráfico es unidireccional desde el maestro de la piconet a los
esclavos. Sólo puede ser usado por el tráfico de grupo L2CAP. Nunca se utilizará por los canales
orientados a conexión de L2CAP, señalización de control L2CAP o por la de LMP.
Difusión para esclavos en estado parked (PSB, Parked Slave Broadcast). Este transporte
lógico se usa cuando el maestro quiere comunicarse con los esclavos que han sido puestos en
estado parked. Este mecanismo de transporte resulta más complejo que los anteriores por lo
que se lleva a cabo en varias fases, cada una de las cuales posee una finalidad diferente. Estas
fases son:
Información de control: usada para transportar los enlaces lógicos LMP.
Información de usuario: utilizada para transportar los enlaces lógicos de L2CAP.
Fase de acceso: transporta la señalización de la banda base.
56
3.2.2.4. Enlaces lógicos
Los enlaces lógicos se definen como el nivel de la arquitectura más bajo usado para
ofrecer servicios de transporte de datos a los diferentes usuarios de Bluetooth. En la
especificación se definen cinco tipos de enlaces:
Control del enlace (LC, Link Control). Sirve para transportar información de control del
enlace como ARQ, control de flujo y la caracterización de la carga. Se transporta en
todos los paquetes excepto en el paquete ID que no tiene cabecera.
Control ACL (ACL-C, ACL Control). Se utiliza para transportar la información de control
intercambiada entre el gestor de enlaces del maestro y de los esclavos.
Usuario asíncrono/isócrono (ACL-U, User Asynchronous/Isochronous). Se usa para
transportar los datos de usuario L2CAP asíncrono e isócrono. Estos paquetes pueden
ser transmitidos en uno o más paquetes de la banda base.
Usuario síncrono (SCO-S, User Synchronous). Se emplea para transportar de forma
transparente los datos de usuario síncronos. Sobre el viajan el transporte lógico SCO.
Usuario extendido síncrono (eSCO-S, User Extended Synchronous). Se destina para
transportar de forma transparente los datos de usuario síncronos. Sobre el viajan el
transporte lógico eSCO.
3.2.2.5. Código de acceso
Se corresponde con el primer campo que aparece en todos los paquetes Bluetooth. La
estructura genérica de estos se representa en la figura 3.2.4, tanto para modo básico de
transferencia como para el modo EDR.
Figura 3.2.4. (a) Estructura de un paquete genérico para el modo básico y (b) Estructura de un paquete genérico para el modo EDR.
La misión del código de acceso es identificar todos los paquetes intercambiados en un
canal físico de forma que todos los paquetes que se envíen por el mismo canal físico estén
precedidos del mismo código de acceso. Además, se usa también para sincronización y
compensación del offset de la tensión continua.
57
Figura 3.2.5. Formato del código de acceso.
Existen dos tipos de códigos de accesos, uno corto, que ocupa 68 bits y que está
compuesto únicamente de un preámbulo y una palabra de sincronización, y otro largo, que
añade un tercer campo denominado trailer y cuya longitud se incrementa hasta los 72 bits.
Por otro lado, en la especificación se definen diversos tipos de códigos de accesos. Las
diferencias entre ellos radican en las diferentes formas en las que usan la parte más baja de la
dirección Bluetooth (representada en la norma por sus siglas inglesas: LAP, Lower Address
Part) para construir la palabra de sincronización.
Tipo de código LAP usado Longitud [bits]
CAC Maestro 72
DAC Dispositivo con el que
se ha iniciado una conexión
68/72
GIAC Reservado 68/72
DIAC Dedicado 68/72
Tabla 3.2.2. Resumen de los tipos de códigos de acceso diferentes especificados en la norma.
En relación al preámbulo consiste en un patrón de ceros y unos de 4 símbolos usados
para facilitar la compensación en continua. La secuencia utilizada es 1010 si el bit menos
significativo de la palabra de sincronización comienza por 1 ó 0101, si empieza por cero.
Figura 3.2.6. Preámbulo.
Con respecto a la palabra de sincronización, ésta está compuesta por un código de 64
bits derivado de los 24 bits que componen el LAP. La forma en la que se construye dicha
palabra garantiza una gran distancia de Hamming entre las diferentes palabras
de sincornización generadas a partir de los distintos LAPS.
58
Finalmente, el tráiler es un apéndice a la palabra de sincronización cuando la cabecera
del paquete sigue al código de acceso. Esta suele ser la situación del código de acceso CAC,
aunque también suele darse en el DAC y el IAC cuando estos códigos se usan en los paquetes
FHS intercambiados durante una respuesta de tipo page o inquiry. Está compuesto de un
patrón de ceros y unos de cuatro símbolos. De manera que con los tres bits más significativos
de la palabra de sincronización forman un conjunto de 7 bits de unos y ceros alternos que
puede usarse para extender la compensación de DC.
Figura 3.2.7. (a) Trailer en CAC cuando el bit más significativo es cero y (b) trailer en CAC cuando el bit más significativo es uno.
3.2.3. Operación del controlador de enlaces
En esta sección se procederá a describir cómo se establece una piconet y cómo los
dispositivos pueden sumarse y retirarse de dicha piconet. También se discutirá el
funcionamiento de las scatternets, o redes compuestas con miembros que pertenecen a varias
piconets a la vez.
Figura 3.2.8. Diagrama de estados del controlador de estados.
59
Para moverse de un estado o subestado a otro, se utilizan los comandos del gestor de
enlaces o señales internas del controlador, como puede ser la señal de disparo del correlador y
las señales de vencimiento de los temporizadores.
En relación al estado Standby, este se caracteriza por ser el estado por defecto en el
dispositivo. En él, el terminal puede encontrarse operando en un modo de bajo consumo
donde únicamente se encuentra el reloj en funcionamiento. Este estado puede ser
abandonado para pasar al subestado Page, Page Scan, Inquiry o Inquiry Scan.
Con respecto al estado de conexión, se corresponde con el estado donde la conexión
entre dos dispositivos se ha establecido y el intercambio de paquetes puede comenzar. En
ambos dispositivos se utiliza el código de acceso del canal (CAC, impuesto por el maestro) y el
reloj nativo del maestro. A su vez, en este estado se puede usar la secuencia de salto de canal
básica o adaptada, en cuyo caso se necesitaría el mapa de canales AFH.
El estado de conexión empieza con un paquete POLL enviado por el maestro para
verificar el cambio de la temporización de él y los saltos de canal. El esclavo puede responder
con cualquier tipo de paquete. Si no respondiera o el maestro no recibiese respuesta por parte
del esclavo, ambos dispositivos pasarían al subestado Page o Page Scan.
Por su parte, el primer paquete transmitido en el estado de conexión contiene
información de control que permite caracterizar el enlace y dar más detalles de los dispositivos
conectados. Estos mensajes serán intercambiados entre los gestores de enlaces de ambos
dispositivos.
Para informar de la salida del estado Connection, se usan los comandos detach o reset.
En el caso de que el enlace se haya desconectado de manera normal, se usará el comando
detach. Mientras que el comando reset queda reservado para un reinicio del controlador de
enlaces. Después de que este haya sido completado, la operación que estuviese ejecutándose
se perderá.
Por otro lado, en el estado de conexión, un dispositivo no tiene por qué estar siempre
presente en el canal y puede declararse no disponible a través de los modos de
funcionamiento Sniff o Hold.
60
Figura 3.2.9. Representación detallada del estado Connection.
Por tanto, dentro del estado Connection se pueden encontrar tres modos de
funcionamiento del dispositivo diferentes, como puede observarse en la figura 3.2.9. Estos
modos serán:
Modo activo. En este estado, tanto el maestro como el esclavo participan en el
canal. Hasta siete esclavos pueden encontrarse en el modo activo en un mismo
instante de tiempo. El maestro será quién planifique los tiempos de
transmisión asignados a cada uno según la demanda de tráfico hacia y desde
los distintos esclavos. Además, soporta transmisiones regulares para
almacenar los esclavos sincronizados. Estos dispositivos se conocen como
esclavos activos. Si un esclavo activo no es direccionado, puede retirarse hasta
la próxima nueva transmisión del maestro. Por su parte, cuando un dispositivo
está participando en múltiples piconets, debe escuchar en el intervalo de
tiempo de transmisión del maestro al esclavo correspondiente. Se recomienda
que un dispositivo no abandone una piconet en la que está participando más
de intervalos de tiempo.
Modo Sniff. Durante este modo, el ciclo de actividad del esclavo en la piconet
puede ser reducido. Por ejemplo, se puede pensar en un esclavo que se
encuentra en modo activo sobre un enlace ACL. Él escuchará en todos los
intervalos de tiempos ACL del tráfico del maestro, a menos que se trate de un
enlace perteneciente a una scatternet o esté ausente debido al modo Hold. Si
este dispositivo se encontrase en modo sniff, los intervalos de tiempos que el
esclavo estaría escuchando se verían reducidos, de forma que el maestro solo
transmitiría en unos intervalos específicos. Dichos intervalos estarán
separados por un tiempo .
61
Figura 3.2.10. Esquema temporal del funcionamiento del modo Sniff.
Modo Hold. Cuando un dispositivo entra en modo Hold provoca que,
temporalmente, no se puedan recibir paquetes ACL. No obstante, cualquier
paquete asociado a un enlace síncrono (SCO o eSCO) será soportado. Esto
permite al dispositivo en modo hold, poder realizar otras tareas como
descubrir nuevos dispositivos o atender a otra piconet. También puede ser
utilizado para hacer entrar al dispositivo en un modo de bajo consumo.
Durante este modo, el esclavo almacena su dirección de transporte lógica. Por
otro lado, antes de poder entrar en modo hold, el maestro y el esclavo tiene
que ponerse de acuerdo en la duración del intervalo de tiempo que el esclavo
permanecerá en dicho modo. De esta forma, cuando el esclavo se pase al
modo hold, se iniciará un temporizador con dicho valor. Cuando éste expire, el
esclavo despertará y se sincronizará a la piconet esperando nuevas
transmisiones del maestro.
En la figura 3.2.8 se muestra el diagrama de estados del controlador de enlaces y cómo
se puede acceder a cada uno de ellos. En él se observan tres estados principales denominados
standby, connection y park. Además de estos tres estados, existen siete subestados utilizados
para el establecimiento de conexiones y para el descubrimiento de los dispositivos Bluetooth
existentes en el rango de cobertura. Estos siete subestados se corresponden con:
Page. Se trata de un subestado utilizado por el maestro (fuente) para activar y
conectar a un esclavo (sumidero) en el subestado page scan. El maestro
intenta coincidir con la actividad de exploración del esclavo, transmitiendo
repetidamente los mensajes de paging consistentes en el código de acceso del
dispositivo esclavo en diferentes canales. Puesto que el reloj del maestro y del
esclavo no están sincronizados, el maestro no conoce exactamente cuando el
esclavo despertará ni en que salto de frecuencia. Por tanto, el maestro
62
transmite un tren de idénticos mensajes de page scan en diferentes
frecuencias y escucha entre los intervalos de transmisión hasta que recibe una
respuesta del esclavo.
El maestro comunica la dirección Bluetooth del esclavo al controlador.
Ésta se usará por el maestro para determinar la secuencia de saltos del
subestado page. Para la fase de la secuencia, el maestro usará una estimación
del reloj del esclavo. Aunque el maestro y el esclavo usen la misma secuencia
de saltos, la fase puede ser diferente, de forma que el esclavo y él no se
sincronicen. Por este motivo, el maestro transmite varios mensajes page
durante un intervalo corto de tiempo en un conjunto de frecuencias activas.
Durante cada intervalo de transmisión, el maestro transmitirá
secuencialmente en dos frecuencias diferentes. En el siguiente intervalo de
recepción, el receptor escuchará secuencialmente en dos frecuencias
diferentes.
Figura 3.2.11. Intercambio de mensajes durante la fase inicial de la conexión cuando un esclavo responde un primer mensaje page.
El subestado page se puede acceder desde el estado Standby o
Connection.
Page Scan. Se corresponde con un estado donde un dispositivo puede ser
configurado para usar un procedimiento de exploración estándar o
entrelazado con el fin de establecer una conexión. Durante una exploración
63
normal, el dispositivo escucha durante una ventana de tiempo
(11,25 ms por defecto), mientras que la exploración entrelazada se mejora con
dos exploraciones, una tras otra, de . Por este motivo, si el
intervalo de exploración no es al menos dos veces la ventana de exploración,
el modo entrelazado no se podrá usar. Durante esta ventana, el dispositivo
escuchará en una única frecuencia, mientras su correlador espera encontrar su
código de acceso de dispositivo (DAC). La ventana de exploración deberá ser lo
suficientemente larga como para que dé tiempo a completar la exploración de
16 frecuencias. Cuando el dispositivo entra en este estado, seleccionará la
frecuencia de exploración de acuerdo a la secuencia de saltos determinada por
la dirección Bluetooth del dispositivo. La fase de la secuencia se determinará
por los bits 12, 13, 14, 15 y 16 del reloj nativo del dispositivo. Cada 1.28
segundos se seleccionara una frecuencia diferente. Este estado puede ser
accesible desde los estados Standby, Connection.
Master Response. Se corresponde con el subestado en el que entra el
dispositivo maestro cuando recibe un mensaje de respuesta page por parte del
esclavo. Si se revisa la figura 3.2.11, se podrá comprobar que se corresponde
con el paso 2. En esta situación, se congelará en el maestro el valor actual del
reloj que se usa como entrada en el esquema de selección de salto para el
subestado page. Este valor, se transmitirá en un paquete FHS (véase la figura
3.2.13 para más detalles del contenido del paquete) con destino el terminal
esclavo. En él, se halla todo la información necesaria para construir el código
de acceso al canal (CAC) sin requerir operaciones matemáticas para derivar la
dirección de acceso del dispositivo Bluetooth maestro. El paquete FHS se
transmitirá en el comienzo del siguiente intervalo de tiempo entre el maestro
y el esclavo tras la respuesta del esclavo.
Después de que se haya enviado, se esperará durante un segundo un
mensaje de respuesta por parte del esclavo como asentimiento de la correcta
recepción del paquete FHS. Esta respuesta contendrá el DAC del dispositivo
esclavo. Si no se recibe respuesta, el maestro retransmitirá el paquete FHS con
un valor actualizado del reloj y usando aún los parámetros del esclavo cada vez
hasta que se reciba un segundo mensaje de respuesta o el temporizador
asociado al tiempo de espera de una respuesta cumpla. En este último caso, el
64
maestro volverá al subestado page y enviará un error al gestor de recursos de
la bandabase.
Por su parte, si la respuesta del esclavo se recibe, el maestro usará sus
parámetros, es decir, pasará a utilizar su CAC y su reloj. Finalmente, el maestro
entrará en el estado de Connection.
Slave Response. Este subestado se corresponde con el estado del controlador
de enlaces para responder un mensaje de tipo page. Como se puede observar
en la figura 3.2.11, después de recibir el mensaje page en el paso 1, el esclavo
transmitirá una respuesta que contiene su código de acceso de dispositivo, es
decir, deberá responder con su DAC. Dicho mensaje de respuesta, se generará
después de recibir el mensaje page del paso 1. Acto seguido, el esclavo
activará su receptor transcurridos desde el comienzo del mensaje de
respuesta, a la espera de recibir un paquete FHS.
Figura 3.2.12. Temporización de los paquetes de respuestas en el subestado page.
Si un paquete FHS se recibe en este subestado dentro de los límites
temporales establecidos, el esclavo responderá con mensaje para asentir la
recepción de dicho paquete. En ese instante, el esclavo cambiará al CAC del
maestro y modificará el reloj en base al recibido en el paquete FHS.
Finalmente, el esclavo entrará en el estado Connection, usando el reloj y la
dirección Bluetooth del maestro para determinar la secuencia de salto en
frecuencia y el CAC.
65
Por el contrario, si la configuración de la conexión falla antes de que el
estado Connection sea alcanzado, el esclavo estará escuchando en el canal
siempre y cuando no se haya recibido un paquete FHS o el temporizador
asociado a la recepción de un mensaje de respuesta venza. No obstante, cada
, deberá seleccionar la siguiente secuencia de salto en frecuencia con
dirección maestro-esclavo. Si no se recibe nada después de que se cumpla
nuevamente dicho temporizador, el esclavo deberá devolver al subestado page
scan durante un periodo de búsqueda.
Inquiry. Este subestado se usa para descubrir a nuevos dispositivos. Es muy
similar al subestado Page. En concreto, las temporizaciones asociadas a la
transmisión y a la recepción serán las mismas. Con respecto a las frecuencias
de transmisión y de recepción, éstas seguirán la secuencia de salto de inquiry y
de inquiry response, que se determinarán por el GIAC y el código nativo de
reloj del dispositivo que realiza el proceso de descubrimiento. Por su parte,
entre cada transmisión, se buscarán mensajes de respuestas (paquete FHS).
Cuando una respuesta se reciba, el paquete entero se procesará. Si el bit EIR
del paquete FHS se encuentra fijado a uno, quiere decir, que se tratará de una
respuesta extendida y se deberá esperar tras la recepción de la
respuesta para recibir la respuesta extendida. Todos estos paquetes no se
asentirán.
Figura 3.2.13. Formato del paquete FHS.
Por otro lado, de este subestado tan solo se puede salir de tres formas
diferentes:
o El gestor de recursos de la bandabase genera un comando de parada
tras alcanzar un número de respuestas especificado. En caso de no
especificar dicho valor, el gestor de recursos no podrá solicitar la salida
del subestado.
o El temporizador asociado al tiempo de descubrimiento vence.
o El host que alberga al dispositivo Bluetooth decide cancelar el
descubrimiento mediante el envío de un comando.
66
Al subestado de inquiry se puede acceder desde los estados standby o
connection. No obstante, antes de poder acceder al inquiry desde el estado
Connection, el dispositivo debe liberar tanta capacidad del enlace como le sea
posible para poder llevar a cabo la búsqueda de nuevos terminales. Para
garantizar esta premisa, en la especificación se aconseja utiliza los modos sniff,
hold o park. Sin embargo, los intervalos de tiempos asignados a las conexiones
síncronas no se verán perturbados por el proceso de descubrimiento. De
hecho, se interrumpirá para poder transmitir en los intervalos de tiempo
reservados para los enlaces SCO y eSCO, puesto que son más prioritarios que la
acción de descubrir nuevos dispositivos.
Inquiry Scan. En este subestado se lleva a cabo la tarea de buscar el código de
acceso IAC durante un período lo suficientemente largo como para completar
dicha búsqueda en las 16 frecuencias asignadas. Resulta similar al suestada
page scan, salvo que en vez de buscar dispositivos por el DAC, se hace
mediante el IAC. Existen dos tipos de búsquedas, la normal y la entrelazada. En
el caso de una búsqueda normal, la longitud del período de búsqueda se
denota por y las frecuencias donde realizarla se determinan
por . Para el modo entrelazado de búsqueda, lo que se hace es mejorar
el proceso de búsqueda mediante dos exploraciones en diferentes frecuencias,
una se efectúa en el salto de frecuencia definido por el modo normal y el otro
se realiza en . Para que se pueda ejecutar de forma
correcta, es necesario que el intervalo de búsqueda sea al menos dos veces
. Además, la fase es determinada por el reloj nativo del
dispositivo que se encuentra en este subestado, cambiando cada 1.28
segundos.
Este subestado puede ser accedido desde los estados standby y
connection. Al igual que sucede en el estado inquiry, el dispositivo deberá
reservar toda la capacidad posible.
Inquiry Response. Se trata del subestado de respuesta a los mensajes de
inquiry. No puede enmarcarse dentro del subestado Slave Response, debido a
que este último se aplica sólo como respuesta a los mensajes page. Cuando el
mensaje inquiry se recibe en el subestado inquiry scan, el receptor devolverá
67
un paquete FHS como respuesta conteniendo la dirección Bluetooth del
dispositivo y otros parámetros. En el caso de que el receptor estuviera
esperando una respuesta extendida, se enviaría la respuesta extendida
transcurrido el tiempo necesario tras el paquete FHS de respuesta. El
mecanismo implementado en el esclavo será el siguiente:
o En el primer mensaje inquiry recibido en el subestado inquiry scan, el
esclavo entrará en el subestado inquiry response.
o Si el esclavo está configurado para devolver un mensaje de respuesta
extendida, en el paquete FHS de respuesta, el bit EIR se encontrará
fijado a uno. Pasados , responderá con el mensaje de
respuesta extendida.
o En caso contrario, el dispositivo esclavo responderá únicamente con el
paquete FHS.
o En el caso de que existan muchos dispositivos Bluetooth,
correctamente configurados, en las proximidades del terminal que
está efectuando el proceso de descubrimiento, puede surgir un
problema si todos los dispositivos intentan responder a la vez el
mensaje de inquiry. Sin embargo, debido a que cada dispositivo tiene
un reloj corriendo arbitrariamente, es poco probable que todos ellos
usen la misma fase en la secuencia de salto del proceso de
descubrimiento. Para evitar colisiones repetitivas, se ha implementado
un sistema de espera aleatorio. Si el dispositivo recibe un mensaje
inquiry y responde con un paquete FHS, generará un número aleatorio
entre 0 y un número máximo. Este último puede ser de 1023 para
intervalos de búsquedas mayores que 1.28 segundos o tan pequeño
como 127 si el intervalo es inferior a 1.28 segundos.
Por su parte, tras salir de este subestado, el dispositivo podrá volver al
estado de connection o standby, aunque antes de realizar este paso se permite
la transición hacia el subestado page scan.
3.2.4. LMP
Cuando dos dispositivos Bluetooth son descubiertos en el rango de cobertura de
ambos y deciden establecer una conexión entre ellos, los gestores de enlaces (en inglés, Link
Manager, LM) de ambos dispositivos interactúan entre sí intercambiando una serie de
68
mensajes para gestionar y controlar el la comunicación entre ellos. Al conjunto de mensajes
que intercambian bajo una serie de reglas se conoce como Protocolo de Gestión de Enlaces (en
inglés, Link Manager Protocol, LMP) y se usa para controlar y negociar todos los aspectos de
las conexiones Bluetooth entre dos dispositivos. Esto incluye la configuración y control de
enlaces y transportes lógicos y el control de los enlaces físicos. En este punto cabe destacar
que todos los mensajes LMP se aplicarán exclusivamente al enlace físico y a los enlaces y
transportes lógicos asociados a la comunicación establecida entre el dispositivo emisor y el
receptor, y viceversa.
Figura 3.2.14. Operación del protocolo de gestión de enlaces.
Algunos de los servicios soportados por LMP son:
Transmisión y recepción de datos.
Petición de nombre.
Petición de las direcciones de enlace.
Establecimiento de la conexión.
Autenticación
Negociación del modo del enlace y establecimiento. Esta característica puede
variar en el transcurso de una conexión.
69
Este protocolo está constituido por un conjunto de mensajes, denominados PDU, que
serán intercambiados sobre enlaces lógicos de tipo ACL-C en los transportes lógicos ACL.
Dichos mensajes poseen una prioridad más alta que los datos de usuario, para que un mensaje
que necesite enviar el gestor de enlaces no se vea retrasado por el tráfico de los protocolos
superiores, como L2CAP.Sin embargo, sí que es posible que las PDU’s se vean retrasadas por
las retransmisiones múltiples de paquetes de bandabase individuales. En cualquier caso, el
gestor de enlaces filtra e interpreta estos mensajes en el lado receptor por su entidad par y no
se propaga a los niveles superiores. Las capacidades de detección y corrección del transporte
lógico ACL son, en general, suficientes para los requisitos de LMP. Por tanto, las PDU’s no
contienen ninguna información adicional para informar de la detección de errores más allá de
las que puedan realizarse a través de los controles realizados al contenido de los mensajes de
LMP.
Por su parte, existen 56 PDU’s definidas en la especificación Bluetooth, cada una de las
cuales, se utiliza para llevar a cabo una función diferente. A cada PDU se le asigna un código de
operación de 7 ó 15 bits que permite identificar de forma unívoca los diferentes mensajes. Los
primeros 7 bits del código de operaciones y un identificador de transacción son localizados en
el primer byte de la carga. Si el campo asociado al código de operación tiene un valor
comprendido entre 124 y 127, entonces se le añade un byte adicional en la carga para generar
un código de operación de 15 bits. El resto de parámetros que pueda contener la PDU se
ubicarán en los bytes siguientes.
Figura 3.2.15. Estructura de las PDU’s intercambiadas por los gestores de enlace.
Cada PDU puede ser de carácter obligatorio u opcional. Desde este punto de vista, el
gestor de enlaces no requiere transmitir una PDU opcional, pero deber ser capaz de reconocer
todas las PDU, obligatorias u opcionales, y, si se requiere una respuesta, enviar una
70
contestación válida, incluso cuando se trate de una característica que no esté soportada. No
obstante, es posible solicitar una lista de cuáles de las PDU’s opcionales están soportadas.
Finalmente, LMP opera en términos de transacciones. Una transacción hace referencia
a un conjunto de mensajes intercambiados entre dos dispositivos con una finalidad particular.
Todas las PDU’s que forman parte de la misma transacción deberán tener el mismo
identificador que se almacena como parte del primer byte del código de operaciones. Éste se
encuentra en el bit menos significativo. Valdrá “0” si la PDU forma parte de una transacción
iniciada por el maestro y “1” en caso contrario, es decir, si la transacción fue iniciada por el
esclavo.
3.2.4.1. Modos de operación
Existen tres modos de operación diferentes:
Modo de retención (Hold mode): el transporte lógico ACL de una conexión
entre dos dispositivos Bluetooth se puede poner en modo de retención
durante un tiempo especificado. Durante este tiempo, el maestro no puede
transmitir paquetes. Normalmente, se activa este modo cuando no hay
necesidad de enviar datos durante un período relativamente extenso. Durante
dicho período, se puede apagar el transceptor para ahorrar energía. No
obstante, este modo también se puede utilizar si el dispositivo necesita
descubrir nuevos terminales o ser descubierto por otros dispositivos.
Finalmente, tanto el maestro como el esclavo pueden solicitar entrar en modo
retención.
Modo de escucha selectiva (Sniff mode): se corresponde con otro modo de
funcionamiento que permite ahorrar energía en los dispositivos Bluetooth.
Para entrar en el modo de escucha selectiva, el maestro y el esclavo negocian
un intervalo y un desplazamiento de escucha selectiva, que especifica la
temporización de las franjas de escucha selectiva. Después de eso, las franjas
de escucha selectiva continúan de forma periódica con el intervalo
especificado. Cuando el enlace se encuentra en este modo, el maestro sólo
puede iniciar una transmisión en dicha franja. Por su parte, existen dos
parámetros que controlan la actividad de escucha en el esclavo:
o Duración de la escucha selectiva: determina durante cuántas franjas
debe escuchar el esclavo, comenzando por la de escucha selectiva,
71
incluso si no recibe un paquete con su propia dirección de miembro
activo.
o Fin de escucha selectiva: determina cuántas franjas adicionales debe
escuchar el esclavo si continúa recibiendo sólo paquetes con su propia
dirección de miembro activo.
Finalmente, el maestro puede forzar al esclavo a entrar en modo de
escucha selectiva, pero tanto el maestro como el esclavo pueden solicitar por
propia voluntad entrar en este modo. Al recibir la solicitud, se puede devolver
la misma con los parámetros modificados, o se puede finalizar la negociación.
Modo de aparcamiento (Park mode): si no es necesario que un esclavo
participe en el canal, pero aun así debe mantenerse sincronizado con los saltos
en frecuencias, se puede colocar al esclavo en modo de aparcamiento. En él, el
dispositivo abandona su dirección de miembro activo. Por otro lado, cuando se
coloca un esclavo en modo aparcado, se le asigna una dirección de miembro
aparcado exclusiva, que puede ser utilizada por el maestro para desaparcar
dicho esclavo. Incluso sin su dirección de miembro activo, el dispositivo puede
todavía sincronizarse con el canal despertándose en respuesta a mensajes
emitidos a intervalos predeterminados. El maestro también puede cambiar los
parámetros del modo de aparcamiento, transferir información de difusión o
dejar que el esclavo aparcado solicite acceso al canal.
El maestro puede forzar la entrada en modo aparcamiento. En este
procedimiento, el maestro finaliza la transmisión del mensaje actual y luego
envía la orden para pasar a modo de aparcamiento. Cuando el esclavo la
recibe, finaliza la transmisión que estuviera realizando y responde con un
mensaje aceptando la orden. No obstante, el maestro también puede solicitar
la entrada en dicho modo en vez de forzarla. Para ello, el maestro finaliza la
transmisión y envía una petición de entrada en modo aparcado. Si el esclavo
acepta la solicitud para entrar en modo aparcamiento, finaliza la transmisión
actual y luego responde con un mensaje de aceptación. Si el esclavo rechaza
dicha petición, respondería con una negación. Finalmente, el esclavo puede
solicitar ser colocado en modo aparcado. En ese caso, el esclavo finaliza la
transmisión del mensaje actual y luego envía al maestro una solicitud de
72
entrada en modo aparcado. Si el maestro acepta la petición de modo
aparcado, finaliza la transmisión del mensaje actual y luego envía la orden de
entrada en modo aparcado. Si el maestro rechaza dicho modo, enviaría un
mensaje rechazando dicha petición.
3.2.5. HCI
Las siglas inglesas HCI se corresponden con Host Controller Interface y es la parte de la
especificación Bluetooth que se encarga de suministrar una interfaz de comandos al
controlador de la bandabase y gestor de enlaces, y de acceder al estado del hardware y de los
registros de control. En esencia, esta interfaz da un método homogéneo de acceso a las
capacidades de la bandabase de Bluetooth. Se divide en tres secciones:
HCI Firmware. Se ubica en el controlador del transceptor Bluetooth. Esta sección
implementa los comandos HCI para el hardware Bluetooth mediante acceso a las
órdenes de la bandabase, comandos del gestor de enlace y a los registros de control,
de estado y de eventos.
La capa de transporte. Se corresponde con la sección del HCI encargado de
interconectar al HCI driver con el HCI firmware. Un ejemplo de la capa de transporte
podría ser el conjunto de capas que pueden existir entre el controlador HCI en un PC
(véase, por ejemplo, la pila BlueZ) y el firmware existente en un transceptor Bluetooth.
Todas esas capas intermedias, desde el sistema operativo hasta el mecanismo de
comunicación utilizado, USB, UART o RS-232, deben suministrar la capacidad de
transferir datos sin un conocimiento exhaustivo de los datos que están siendo
transferidos.
HCI driver. Está localizado en el transceptor Bluetooth o puede estar integrado en el
equipo que alberga el transceptor. Esta sección hace referencia a la entidad software.
El equipo recibirá notificaciones asíncronas de eventos HCI, los cuales se usan para
notificar cuando ocurre algún suceso susceptible de ser notificado. Cuando el host
descubre que un evento ha tenido lugar, entonces analizará el paquete recibido para
determinar el tipo de evento acaecido.
73
Figura 3.2.16. Información general de extremo a extremo de las capas de software inferiores utilizadas en la transferencia de datos.
3.2.5.1. Comandos HCI
HCI otorga un método homogéneo de acceso, basado en órdenes o comandos, a las
capacidades de Bluetooth. Para poder efectuar tal tarea, estos se encuentran ordenados en
grupos según la función que realicen. Los diferentes comandos que se pueden encontrar en la
norma son:
Grupo Descripción Ejemplo
Eventos genéricos
Los eventos genéricos pueden ocurrir debido a múltiples comandos o eventos que pueden suceder en cualquier instante
Command Complete Event
Configuración del dispositivo
Se utilizan para ubicar al Controlador en un estado conocido
Reset Command
Control del controlador de flujo
Se usan para controlar los flujos de datos desde el Host al controlador
Read Buffer Size Command
Información del controlador
Permiten que al Host descubrir información local sobre el dispositivo
Read Local Version Information Command
Configuración del controlador
Dejan configurar los parámetros globales de configuración
Read Local Name Command
Descubrimiento de dispositivos
Son comandos o eventos que consienten a un dispositivo descubrir otros dispositivos que se encuentran en su rango de
Inquiry Command
74
cobertura Configuración de conexiones
Permiten a un dispositivo realizar una conexión a otro
Create Connection Command
Información remota Acceden a la información de configuración de un dispositivo remoto que es descubrible
Remote Name Request Command
Conexiones síncronas Se usan para el establecimiento de conexiones síncronas
Setup Synchronous Connection Command
Estado de la conexión Obtienen la configuración de un enlace, especialmente utilizados para los enlaces de bajo consumo
Hold Mode Command
Estructura de la Piconet Permiten descubrir y reconfigurar una piconet
Role Discovery Command
Calidad de servicio Especifican los parámetros para fijar una determinada calidad en el servicio
Flow Specification Command
Enlaces físicos Configuran un enlace físico Read Link Supervision Timeout Command
Control de flujo en el Host Se utilizan para controlar el flujo de datos hacia el Host
Host Buffer Size Command
Información del enlace Obtienen información sobre un enlace particular
Read LMP Handle Command
Autenticación y encriptación
Permiten la autenticación de un dispositivo remoto y la encriptación de un enlace
Authentication Requested Command
Pruebas
Se utilizan para poner a un dispositivo en modo de prueba y verificar el comportamiento del mismo
Read Loopback Mode Command
Tabla 3.2.3. Comandos HCI: agrupación y descripción.
3.2.6. L2CAP
Dentro de la especificación Bluetooth, el protocolo L2CAP (Logical Link Control
Adaptation Protocol, Protocolo de Adaptación y Control de Enlaces Lógicos) se encarga de la
multiplexación de los protocolos de niveles superiores y de las tareas de segmentación y
recomposición de paquetes (ver figura 3.2.18). También se encarga de transportar información
de calidad de servicio entre un dispositivo y otro. Al igual que LMP, L2CAP se halla en un nivel
superior a la bandabase y reside en el nivel de enlace de datos del modelo de referencia OSI.
75
Figura 3.2.17. Ubicación de L2CAP dentro de la torre de protocolos de Bluetooth.
L2CAP permite que las aplicaciones y protocolos de nivel superior transmitan y reciban
paquetes de datos de una longitud máxima de 64 KB de longitud. Además, también contempla
control de flujo por canal y retransmisiones a través de los modos de control de flujo y
retransmisión, respectivamente.
Figura 3.2.18. Diagrama de bloques del protocolo L2CAP.
En otro orden, mientras que en la especificación de la bandabase se definieron dos
tipos de enlaces (enlaces síncronos orientados a conexión, SCO, y enlaces asíncronos no
orientados a conexión, ACL), el protocolo L2CAP está definido únicamente para enlaces de tipo
76
ACL y no puede existir nada más que un enlace de este tipo. Esto se debe a que L2CAP
depende de las comprobaciones de integridad en el nivel de bandabase para proteger la
información transmitida, siendo los enlaces ACL los únicos capaces de satisfacer dichas
exigencias a través de un esquema ARQN/SEQN de un bit.
Entre las características de L2CAP están la sencillez y una baja sobrecarga del enlace, lo
que le hace apropiado para su implementación en dispositivos con recursos de cálculo y
memoria limitados como teléfonos móviles, sistemas empotrados o dispositivos PDA. Estas
características le permiten alcanzar una elevada eficiencia de ancho de banda sin consumir
demasiada energía, de acuerdo con los objetivos de eficiencia energética de la comunicación
establecidos en la interfaz radio Bluetooth. Además de su eficiencia, realiza las siguientes
tareas:
Multiplexación de protocolos y/o canales. El hecho por el que la
multiplexación de los protocolos superiores y de los canales se efectuada por
L2CAP se debe a que la bandabase no posee ningún tipo de campo
identificativo que permita realizar dicha tarea.
Segmentación y reensamblado. Si L2CAP tiene el control sobre la longitud de
las tramas transmitidas, se favorece el funcionamiento de muchas aplicaciones
multiplexadas sobre L2CAP. Esto se debe a:
o La capa de segmentación dejará la separación necesaria entre las
unidades de datos de las aplicaciones para satisfacer los requisitos de
latencia.
o La gestión de la memoria y de los buffers se resulta más sencilla
cuando L2CAP controla el tamaño de los paquetes.
o La corrección de errores mediante retransmisiones se puede efectuar
de manera más eficiente.
o La cantidad de datos que se destruye cuando una PDU del protocolo
L2CAP se corrompe o se pierde puede hacerse más pequeña que la
unidad de datos de la aplicación.
o La aplicación está desacoplada de la segmentación requerida para
encapsular los paquetes de la aplicación en los de las capas inferiores
de la especificación Bluetooth.
Control de flujo por canal L2CAP. Este se implementa debido a que el control
de flujo de tipo stop-and-go que se usa en la bandabase puede no ser
77
suficiente para la mayoría de las aplicaciones. Por este motivo, L2CAP también
provee un servicio de control de flujo para aplicaciones o perfiles que puedan
necesitarlo, sin necesidad que lo implemente estos. El uso de dicho control de
flujo es un aspecto opcional del protocolo.
Control de errores y retransmisiones. Algunas aplicaciones requieren una tasa
de error residual mucho más pequeña que la suministrada por la bandabase.
L2CAP incluye comprobaciones de errores adicionales y retransmisiones de
tramas L2CAP.
Fragmentación y recombinación. Las capas inferiores tiene limitada las
capacidades de transmisión por lo que podrían requerir el uso de fragmentos
de tamaños diferentes a los creados por la subcapa de segmentación de
L2CAP. Por tanto, las capas por debajo de L2CAP pueden fragmentar y
recombinar PDU’s de L2CAP para crear fragmentos que se ajusten a las
capacidades de la capa. Durante una transmisión, muchos niveles diferentes
de fragmentación y recombinación pueden ocurrir en ambos dispositivos.
Calidad de servicio. Durante el proceso de establecimiento de una conexión
L2CAP, se permite el intercambio de información atendiendo a la calidad de
servicio esperada entre los dos dispositivos Bluetooth. Cada implementación
L2CAP monitoriza los recursos usados por el protocolo y se asegura que la
calidad de servicio se satisface.
3.2.6.1. Modo de operación de L2CAP
L2CAP está basada en torno al concepto de canales. A cada una de las terminaciones
de un canal L2CAP se le denomina identificador de canal (Channel Identifier, CID). De esta
forma es como se conoce al nombre que representa a una terminación de un canal lógico en
un dispositivo. Su alcance es local, es decir, únicamente afecta al dispositivo en cuestión. El
conjunto de valores que puede tomar el identificador de canal se representa en la tabla 3.4.
CID Descripción
0x0000 Identificador nulo. Se corresponde con un identificador ilegal y nuca podrá usarse como una terminación destinataria
0x0001 Canal de señalización 0x0002 Recepción de canales no
orientados a conexión
78
0x0003-0x003F Reservados para funciones específicas de L2CAP
0x0040-0xFFFF Asignados dinámicamente
Tabla 3.2.4. Descripción de los diferentes CID que se pueden utilizar.
En relación a la asignación de CID, esta es relativa a un dispositivo en concreto y la
asignación de los mismos puede ser totalmente diferente en otro terminal, salvo que se usen
los CID’s reservados que se muestran en la tabla 3.2.4.
La figura 3.2.19 muestra el uso de varios identificadores CID entre entidades L2CAP
situadas al mismo nivel en dispositivos diferentes. Los canales de datos orientados a conexión
representan una comunicación entre dos dispositivos, donde un CID identifica a cada extremo
del canal. Los canales no orientados a conexión limitan el flujo de datos a una única dirección.
Estos canales se utilizan para soportar un “grupo” de canales, donde el CID del origen
representa a uno o más dispositivos remotos. En una entidad L2CAP, es obligatorio el soporte
de un canal de señalización que permita crear y establecer canales orientados a conexión y
negociar cambios en las características de los canales orientados y no orientados a conexión.
Además de todos estos CID, se reserva uno más para todo el tráfico entrante de canales de
datos no orientados a conexión. En la figura, se utiliza un CID para representar un grupo
formado por los dispositivos 3 y 4. El tráfico que se envía desde este CID se dirige al canal
remoto reservado para el tráfico de datos no orientado a conexión.
Figura 3.2.19. Ejemplo del uso y significado del campo CID.
Con respecto al modo de funcionamiento de L2CAP, este protocolo puede operar de
tres formas diferentes:
79
Modo L2CAP básico.
Modo control de flujo. En este modo, en caso de pérdida no se realizan
retransmisiones, sino que se detecta las PDU’s perdidas y se notifican a las
capas superiores.
Modo retransmisión. Se caracteriza por la utilización de un temporizador que
garantiza que todas las PDU’s son entregadas a la entidad L2CAP par,
retransmitiendo al vencimiento del mismo aquellas que fuesen necesarias. Se
utiliza un mecanismo de tipo go-back-n, gracias al cual se puede simplificar el
protocolo y limitar los requisitos de los buffers.
El modo L2CAP básico es el modo ejecutado por defecto, es decir, cuando el
dispositivo no ha sido configurado previamente para funcionar en alguno de los otros dos.
3.3. Perfiles
Para que un dispositivo pueda utilizar la tecnología inalámbrica Bluetooth, debe saber
interpretar los perfiles Bluetooth, que describen las distintas aplicaciones posibles. Estos
perfiles son guías que indican los procedimientos por los que los dispositivos equipados con
tecnología Bluetooth se comunican entre sí. Existe un amplio abanico de perfiles que detallan
los diferentes tipos de uso y aplicaciones de la tecnología inalámbrica Bluetooth. Al seguir las
directrices proporcionadas en las especificaciones Bluetooth, los desarrolladores pueden crear
aplicaciones compatibles con otros dispositivos que se ajusten a este estándar.
Cada perfil incluye, como mínimo, información sobre las siguientes cuestiones:
Dependencia de otros perfiles
Propuestas de formato de interfaz de usuario
Características concretas de la pila de protocolos Bluetooth utilizada por el
perfil. Para realizar su función, cada perfil se sirve de ciertas opciones y
parámetros en cada capa de la pila. También se puede incluir un breve
resumen de los servicios requeridos si resulta necesario.
En la tabla 3.5, se recogen todos los perfiles soportados por la especificación Bluetooth
v.2.1, así como los protocolos en los que se apoyan estos para hacer uso de las capas inferiores
de la norma.
80
Perfil Descripción
Perfil de distribución de audio avanzado (A2DP)
El perfil A2DP describe cómo transferir sonido estéreo de alta calidad de una fuente de sonido a un dispositivo receptor.
Protocolo de control de audio y vídeo (AVRCP)
El perfil AVRCP proporciona una interfaz estándar para manejar televisiones, equipos de alta fidelidad o cualquier otro equipo electrónico, y permitir así que un único control remoto, o cualquier otro tipo de mando, controle todo el equipo de audio y vídeo al que el usuario tiene acceso.
Perfil básico de imagen (BIP)
El perfil BIP establece cómo puede controlarse remotamente un dispositivo de imagen, así como la forma de enviarle órdenes de impresión y de transferencia de imágenes a un dispositivo de almacenamiento.
Perfil básico de impresión (BPP)
El perfil BPP permite enviar mensajes de texto, de correo electrónico, tarjetas de visita electrónicas e imágenes, entre otras cosas, a las impresoras disponibles dependiendo de las tareas de impresión.
Perfil de acceso RDSI común (CIP)
El perfil CIP establece cómo se deben transferir las señales RDSI a través de una conexión inalámbrica Bluetooth.
Perfil de telefonía inalámbrica (CTP)
El perfil CTP describe la implementación de un teléfono inalámbrico a través de un enlace inalámbrico Bluetooth.
Perfil de red de marcado (DUN)
El perfil DUN proporciona un acceso telefónico estándar a Internet y a otros servicios de marcado a través de una conexión Bluetooth.
Perfil de fax (FAX) El perfil FAX describe cómo un dispositivo terminal puede utilizar a otro como puerta de enlace para la transmisión de faxes.
Perfil de transferencia de archivos (FTP)
El perfil FTP establece los procedimientos de exploración de carpetas y archivos de un servidor a través de un dispositivo cliente.
Perfil de distribución genérica de audio y vídeo (GAVDP)
El perfil GAVDP sienta las bases de los perfiles A2DP y VDP, pilar de los sistemas diseñados para la transmisión de sonido e imagen mediante la tecnología Bluetooth.
Perfil genérico de intercambio de objetos (GOEP)
El GOEP se utiliza para transferir objetos de un dispositivo a otro.
Perfil manos libres (HFP) El perfil HFP describe cómo un dispositivo que actúa como puerta de enlace puede utilizarse para realizar y recibir llamadas a través de un dispositivo manos libres.
Perfil de sustitución de cable de copia impresa (HCRP)
El perfil HCRP describe cómo imprimir archivos mediante un enlace inalámbrico Bluetooth utilizando controladores en el proceso.
Perfil de auricular (HSP) El HSP describe cómo un auricular con tecnología Bluetooth se comunica con otro dispositivo con tecnología Bluetooth.
Perfil de dispositivo de interfaz humana (HID)
El perfil HID recoge los protocolos, procedimientos y características empleados por las interfaces de usuario Bluetooth tales como teclados, dispositivos punteros, consolas o aparatos de control remoto.
Perfil de intercomunicador (ICP)
El perfil ICP establece cómo conectar dos teléfonos móviles con tecnología Bluetooth dentro la misma red sin utilizar la red telefónica pública.
Perfil de introducción de objetos (OPP)
Este perfil distingue entre servidor y cliente de introducción (push) de objetos.
81
Perfil de redes de área personal (PAN)
El perfil PAN describe cómo dos o más dispositivos con tecnología Bluetooth pueden formar una red ad hoc y cómo ese mismo mecanismo permite acceder a la red de forma remota a través de un punto de acceso.
Perfil de aplicación de descubrimiento de servicio (SDAP)
El perfil SDAP detalla cómo una aplicación debe utilizar el perfil SDP para identificar los servicios de un dispositivo remoto.
Perfil de servicio de puerto (SPP)
El perfil SPP describe cómo configurar puertos de serie y conectar dos dispositivos con tecnología Bluetooth.
Perfil de sincronización (SYNC)
El perfil SYNC se utiliza junto al GOEP para sincronizar los elementos del administrador de información personal (PIM), como agendas y datos de contacto, entre dispositivos con tecnología Bluetooth.
Perfil de distribución de vídeo (VDP)
Este perfil dicta los pasos que deben seguir los dispositivos Bluetooth con tecnología Bluetooth para la transferencia de flujos de datos de vídeo.
Protocolo Descripción Protocolo de control de audio y vídeo (AVCTP)
El protocolo AVCTP describe los mecanismos de transferencia para intercambiar mensajes que permitan controlar los dispositivos de audio y vídeo.
Protocolo de distribución de audio y vídeo (AVDTP)
El AVDTP detalla los procedimientos de negociación, establecimiento y transmisión del flujo de audio y vídeo.
Protocolo Bluetooth de encapsulación de red (BNEP)
El protocolo BNEP se utiliza para transportar protocolos de red comunes, como IPv4 o IPv6, entre los distintos medios de transmisión Bluetooth.
Protocolo de intercambio de Objetos (OBEX)
OBEX es un protocolo de transferencia que define los objetos de datos y el protocolo de comunicaciones que deben utilizar dos dispositivos para intercambiar objetos.
Protocolo de control de telefonía (TCP)
Este protocolo establece la señalización para el establecimiento de llamadas de voz y datos en dispositivos con tecnología Bluetooth.
RFCOMM con TS 07.10 El protocolo RFCOMM emula los parámetros de un cable de serie y el estado de un puerto RS-232 para transmitir datos en serie.
Tabla 3.3.1. Perfiles y protocolos soportados por la especificación 2.1 de Bluetooth.
En esta sección se procederá a desarrollar el protocolo RFCOMM exclusivamente
debido a que es el utilizado en la realización del proyecto. Por este motivo, se le recomienda al
lector si está interesado en conocer en detalle algún perfil o protocolo diferente a éste en
mayor profundidad, acuda a la referencia [11] y revise el documento correspondiente.
3.3.1. RFCOMM
El protocolo RFCOMM suministra al dispositivo Bluetooth un mecanismo de emulación
de puerto serie sobre el protocolo L2CAP. Se corresponde con un protocolo de transporte
sencillo que se usa para el transporte de los datos de usuario, de las señales de control de
módem y de los comandos de configuración. Se encuentra basado en la especificación TS07.10
82
de la ETSI, European Telecommunications Standards Institute, organismo que se encarga de la
normalización en la industria de las telecomunicaciones.
Figura 3.3.1. Modelo de referencia RFCOMM.
En la figura 3.3.1 se puede observar los elementos en los que se apoya RFCOMM. De
todos ellos cabe destacar la entidad de emulación de puertos, ubicada por encima de dicho
protocolo y cuya misión radica en traducir la interfaz de comunicación específica de un sistema
en servicios RFCOMM. Sobre dicha capa, se apoyaría la aplicación en cuestión, la cual estaría
contemplando una interfaz de comunicaciones equivalente a un puerto serie. El resto de
elementos se corresponde con protocolos o niveles detallados en secciones anteriores.
Para la finalidad de RFCOMM, se requiere de dos aplicaciones ejecutándose en
dispositivos diferentes que esperan que la comunicación tenga lugar a través de un cable serie,
el cual resultará emulado por este protocolo. No obstante, dichas aplicaciones, al no ser
conscientes de los procedimientos Bluetooth para establecer cables series emulados, pueden
necesitar la ayuda de una aplicación auxiliar que utilice la especificación Bluetooth a ambos
lados del enlace.
Por su parte, existen dos tipos de dispositivos básicos a los que RFCOMM debe dar
servicio:
Dispositivos que actúan como terminaciones de la comunicación, como puede
ser un ordenador o una impresora.
Dispositivos que forman parte del enlace de comunicación como resulta ser un
módem.
83
Aunque RFCOMM no hace distinciones entre estos dos dispositivos, el uso de uno u
otro terminal posee implicaciones en el protocolo, tales como el uso de tramas utilizadas
exclusivamente por un tipo.
3.3.1.1. Señales de control
RFCOMM emula las 9 líneas de una interfaz RS-232. Estas quedan registradas en la
siguiente tabla:
Pin Descripción
102 Señal común
103 Transmisión (TXD)
104 Recepción (RXD)
105 Petición para envío (RTS)
106 Limpiar para enviar (CTS)
107 Conjunto de datos listos (DTS)
108 Terminal de datos listo (DTR)
109 Detección de portadora de datos (CD)
125 Indicador de llamada (RI)
Tabla 3.3.2. Líneas RS-232 emuladas en RFCOMM.
3.3.1.2. Emulación Módem-Null
Como se ha comentado anteriormente, RFCOMM está basado en TS07.10. Esta norma
no distingue entre dispositivos DTE, equipo terminal de datos, y DCE, equipo de comunicación
de datos, cuando se trata de transferir los estados de los circuitos que no son de datos. Para
ello, lo que se hace es enviar las señales de control RS-232 como una serie de señales DTE/DCE
independientes.
Señales TS 07.10 Señales de control RS-232 correspondientes
RTC DSR, DTR RTR RTS, CTS IC RI DV DCD
Tabla 3.3.3. Correspondencia de las señales de control recogidas en la norma TS07.10 y las señales de control RS-232.
84
La forma en la que TS07.10 transfiere las señales de control RS-232 es creando un
enlace modem-null implícito cuando dos dispositivos del mismo tipo se conectan entre sí. Este
sistema previsto por RFCOMM deberá funcionar en la mayoría de las situaciones posibles.
3.3.1.3. Puerto serie emulado
Este protocolo soporta hasta 60 conexiones simultáneas entre dos dispositivos
Bluetooth. No obstante, este número puede variar según la implementación específica del
fabricante. Un identificador de enlace de datos de conexión (DLCI) identifica una conexión
permanente entre un cliente y un servidor de aplicaciones. El DLCI está representado por 6
bits, pero su rango de valores utilizables oscila entre 2 y 61. El identificador de enlaces es único
dentro de una sesión RFCOMM entre dos dispositivos.
Para tener en cuenta el hecho de que tanto el cliente como servidor de aplicaciones
pueden residir en ambos lados de una sesión RFCOMM, con clientes en ambos lados pudiendo
realizar conexiones independientes entre sí, el espacio de valores DLCI se divide entre los dos
dispositivos que se comunican mediante el concepto de servidor RFCOMM canales.
Si un dispositivo Bluetooth soporta múltiples puertos series emulados y se les permite
a las conexiones tener terminaciones en los diferentes dispositivos, la entidad RFCOMM debe
ser capaz de ejecutar múltiples sesiones TS07.10. Esta tarea se lleva a cabo mediante el
multiplexor de sesiones. Para ello, cada sesión es multiplexada utilizando su propio
identificador de canal, CID. La capacidad de ejecutar múltiples sesiones es una característica
opcional del protocolo RFCOMM.
85
Capítulo 4.
Descripción de la
arquitectura propuesta.
En este capítulo se procederá a describir la arquitectura, tanto hardware como
software, propuesta para llevar a cabo el análisis de diferentes algoritmos que permitan la
localización de un dispositivo Bluetooth en un espacio interior como puede ser, por ejemplo,
un centro comercial.
4.1. Hardware
Para poder llevar a cabo la estimación de la posición, se ha optado por la configuración
que puede contemplarse en la figura 4.1. En ella se observan los dispositivos electrónicos
utilizados para la obtención de la información necesaria como para poder ubicar un objetivo
en el interior de un edificio. Estos se corresponden con los siguientes elementos:
Nodo principal: se corresponde con una tarjeta PC104 ejecutando una distribución de
GNU/Linux. En su interior, se encontrará la aplicación encargada de procesar la información
enviada por los nodos de localización así como de gestionar la comunicación con los mismos.
Nodo de localización: está compuesto por un sistema microprocesador de bajo coste
que implementa un módulo Bluetooth serie así como diversos puertos de entrada y salida
digitales.
86
Figura 4.1.1. Representación orientativa del sistema propuesto.
El funcionamiento básico del sistema propuesto se basa en la utilización del parámetro
RSSI obtenido durante el proceso de descubrimiento de la norma Bluetooth para poder hacer
una estimación de la posición del objetivo a localizar. Por tanto, la misión del nodo de
localización será obtener este valor la repetición continuada de ciclos de descubrimientos. Una
vez que dicho valor es conocido, se encapsulará en un paquete para su posterior envío al
servidor. Dicho paquete contendrá, además del valor RSSI, más información necesaria para el
correcto funcionamiento de la estimación de la posición. Una vez que los datos se encuentren
en el servidor, la aplicación principal se encargará de traducirlos a unas coordenadas estimadas
.
4.1.1. Nodo principal
El nodo principal tiene como finalidad la ejecución de una aplicación que permita
obtener una estimación de la posición de un dispositivo en base de los datos recogidos de los
diferentes nodos de localización ubicados a su alrededor. Por tanto, se requiere de un sistema
que presente una gran capacidad de cómputo. Por este motivo, se ha decidido optar por un
ordenador industrial en formato PC/104+. Este dispositivo se adapta perfectamente a las
exigencias de cómputo y, además, posee una gran conectividad al estar dotado de diversos
puertos series y USB. Esto permite establecer una arquitectura base para servicios con diversa
finalidad. En la figura 4.2 se puede observar una imagen del dispositivo.
Las características principales son:
87
Procesador AMD Geode LX800 de bajo consumo y una frecuencia de 500 MHz.
512 MB de memoria DDR-RAM.
4 puertos serie.
4 puertos USB.
Conectividad Bluetooth a través de un dongle.
Puerto Ethernet.
Socket para Compact Flash.
Soporte para sistemas operativos GNU/Linux.
Capacidad para ejecutar complejos algoritmos de procesamiento.
Figura 4.1.2. Fotografía de la tarjeta PC/104+ usada como nodo principal.
Con respecto a la conectividad Bluetooth, esta se aporta a través de un dongle
comercial USB que cumple con la especificación Bluetooth v.2.1. Se ha optado por este diseño
por dos razones. La primera de ellas, es el ahorro económico que supone este tipo de
componentes frente a módulos comerciales con interfaz de conexión serie. El segundo motivo
se debe a que la mayor parte de módulos Bluetooth comerciales utilizan una implementación
propietaria de la torre de protocolos de Bluetooth. Esto limita en gran medida la configuración
y gestión de las comunicaciones. Por el contrario, los dongles USB tan sólo implementan el
controlador radio y la banda base, el resto de capas se implementarán de manera software en
el sistema operativo. Esto permite el poder hacer uso de la torre de protocolos conocida como
BlueZ. Esta se corresponde con un proyecto de código libre que implementa la torre de
protocolos de Bluetooth. Para su utilización, se suministra una biblioteca de funciones que
permiten realizar tareas tales como el cambio de modo de funcionamiento, establecimiento de
conexiones RFCOMM, ejecutar un proceso de descubrimiento o cambiar el rol de un
88
dispositivo en una comunicación. Además, otorga un gran control sobre parámetros
característicos de Bluetooth.
Finalmente, para gobernar el nodo principal se ha optado por una distribución de
GNU/Linux por ser un sistema operativo de libre distribución, con herramientas de desarrollo
libre y por su compatibilidad con la pila BlueZ.
4.1.2. Nodo de localización
El nodo de localización se corresponde con un sistema microcontrolador de bajo coste
cuya tarea radica en realizar continuamente procesos de descubrimiento para determinar el
nivel de señal que le llega desde el objetivo a localizar y desde otros nodos de localización
diferentes. De esta forma se consigue obtener la información necesaria para la estimación de
la posición. Para ello, los datos recogidos de la zona donde se encuentren, se empaquetarán
en una trama y se enviarán al nodo principal para su posterior procesamiento.
Figura 4.1.3. Fotografía de un nodo de localización.
La idea de realizar un sistema microcontrolador de bajo coste radica en el hecho de
que para poder efectuar una estimación de la posición es necesario tener información
diferente con respecto al menos tres puntos diferentes. Por ello, el número de nodos de
localización que se deberán usar en una misma área puede resultar elevado, según la precisión
que se requiera. En consecuencia, el coste económico de producción del nodo debe
89
permanecer lo más bajo posible para así poder usar un mayor número de los mismos en el
despliegue de la arquitectura.
Figura 4.1.4. Diagrama de bloques del nodo de localización
En la figura 4.1.4 se puede observar un diagrama de bloques de los distintos
componentes que forman el nodo de localización. En él se puede comprobar que se han
utilizado los componentes básicos para dotar de funcionalidad al nodo de localización. La
inclusión del zumbador, así como del puerto de entradas y salidas digitales, se ha hecho para
poder dotar de una finalidad secundaria al nodo de localización. Un ejemplo de esta podría ser
la activación del zumbador al detectar que el objetivo localizado se encuentra en una zona
restringida o la inclusión de sensores que permitan registrar datos como la temperatura de la
sala o la detección de humo y transmitir dichos datos al nodo principal para llevar un control
de los mismos.
4.1.2.1. Microcontrolador ATMEGA 8
El ATMEGA8 es un microcontrolador de 8 bits de bajo consumo realizado en tecnología
CMOS y basado en la arquitectura AVR RISC. Además, al ser capaz de ejecutar instrucciones en
un solo ciclo de reloj, logra un rendimiento cercano a 1 MIPS por MHz, lo que permite
optimizar el consumo de energía frente a la velocidad de procesamiento.
90
Figura 4.1.5. Diagramas de bloque del ATMEGA8.
Las principales características que posee son:
Arquitectura RISC.
Memoria:
8 KB de memoria Flash para programa
512 B de EEPROM.
1 HB de RAM interna
Periféricos:
2 temporizadores/contadores de 8 bits.
1 temporizador/contador de 16 bits.
Contador de tiempo real con oscilador externo.
3 canales PWM.
6 canales ADC de 10 bits.
91
Temporizador Watchdog con oscilador separado
Comparador analógico.
Interfaz de conexión:
23 puertos de entradas/salidas digitales.
I2C.
USART programable.
SPI maestro/esclavo.
Características especiales:
Power-on-Reset.
Oscilador interno RC que puede ser calibrado.
5 modos de funcionamiento.
4.1.2.2. Módulo Bluetooth Bluegiga WT12
El Bluegiga WT12 es un módulo Bluetooth que cumple con la versión de la
especificación 2.1. Contiene todo lo necesario para poder implementar una comunicación
Bluetooth: interfaz radio, antena y la torre de protocolos Bluetooth completa. Su principal
función será la de iniciar procesos de descubrimientos detectando el objetivo a localizar así
como a los diversos nodos de localización que puedan existir en su rango de cobertura.
Las principales características del módulo son:
Rango hasta 300 metros.
Antena integrada o conector UFL.
Tasa de transmisión de hasta 3 Mbps.
Cumple RoHS.
Soporte Scatternet.
USB interface (2.0 compatible).
Soporte 802.11.
Memoria Flash 8Mb.
UART con modo bypass.
92
Figura 4.1.6. Ubicación de iWrap en la torre de protocolos Bluetooth.
Otra de las características de este módulo, es que está equipado con un firmware
propietario denominado iWrap que permite abstraer al usuario de la torre de protocolos
Bluetooth. De esta forma, a través de comandos ASCII se pueden efectuar tareas tales como
descubrir dispositivos, establecer una comunicación a nivel RFCOMM o configurar aspectos
como el código de acceso de descubrimiento o IAC. Con esta solución, se evita el usar un
microprocesador que actúe de host para correr la pila de protocolos
Dicha pila posee compatibilidad con los siguientes perfiles Bluetooth:
A2DP: modo fuente y sumidero.
AVRCP.
Identificación de dispositivo.
Puerto Serie, soportando los dos tipos de dispositivos.
Manos libres.
DUN
OPP
FTP
PBAP
93
HDP
SSP
4.1.2.2.1. Configuración del módulo
Para poder llevar a cabo una correcta comunicación, es necesario configurar el módulo
Bluetooth correctamente. Para ello, será necesario enviarle una serie de comandos para su
correcta configuración.
El primer comando que se deberá enviar al módulo será “SET CONTROL MUX 1\n”,
éste permite utilizar un modo de funcionamiento especial del módulo WT-12A que se
caracteriza por no hacer distinción entre el modo comandos y el modo datos que utiliza el
iWRAP. La ventaja de este modo es que permite mantener dos o más conexiones simultáneas
con diferentes dispositivos de un modo sencillo. Para su correcto funcionamiento, es
necesario utilizar el siguiente formato de trama:
Longitud [bits] Nombre Descripción Valor
8 SOF Comienzo de trama 0xBF 8 LINK Identificador del
enlace Enlace de datos: 0x00-0x08 Enlace de control: 0xFF
6 FLAGS Banderas de la trama 0x00 10 LENGTH Tamaño del campo
de datos -
0-800 DATA Datos - 8 nLINK Final de la trama {{LINK} XOR 0xFF}
Tabla 4.1.1. Formato de trama en el modo multiplexado.
Como se puede observar en la tabla4.1.1, todos los comandos que vayan desde el
equipo que actúe como host hacia el módulo, deberán enviarse con el formato de trama
descrito. Por su parte, la respuesta a los diferentes comandos así como los datos recibidos
desde uno o varios equipos remotos, serán enviados con el mismo formato de trama.
La ventaja del modo multiplexado es que no se necesita hacer un intercambio especial
entre el modo comando y el modo datos, sino que todos los datos y comandos son
transmitidos del mismo modo. Esto permite un gran ahorro de tiempo en escenarios
multipuntos, donde, en el peor de los casos, un cambio de modo podría tardar hasta dos
segundos. También supone una gran ventaja en escenarios donde existen muchas conexiones
94
activas recibiendo datos simultáneamente. En estas situaciones, el cambio de modo puede
resultar en la pérdida de datos debido al coste de tiempo que supone.
Figura 4.1.7.Ccomunicación Host-iWRAP-Host.
Figura 4.1.8. Comunicación Host-iWRAP-Dispositivo remoto y viceversa.
El resto de comandos de inicialización deberán enviarse a la pila de protocolos iWRAP
con el formato del modo multiplexado y se corresponderán con:
"SET BT LAP 9e8b05": este comando permite modificar el valor del IAC,
estableciendo un valor reservado para así garantizar que el funcionamiento del
sistema no interfiere con el resto de dispositivos Bluetooth existentes en la
sala. Además permite establecer un nivel de seguridad mayor, debido a que al
colocar un código de descubrimiento limitado, los nodos de localización y el
nodo principal no podrán ser descubiertos por el resto de terminales, salvo
que estos efectúen un descubrimiento con dicho valor.
"SET BT PAGEMODE 3 1000 0": mediante esta orden, se configura el módulo
Bluetooth como visible y conectable. Además, se indica que el valor del
temporizador asociado a un error en el establecimiento de una conexión sea
de 2,56 segundos. Este valor se obtiene de multiplicar el parámetro
por 0.625 ms.
95
"SET BT POWER 3 3 3": fija el nivel de potencia en el proceso de
descubrimiento a 3dBm, que se corresponde con el máximo posible. De esta
forma, se asegura que se puede cubrir el máximo rango de espacio, lo que
posibilitará espaciar los nodos de localización una mayor cantidad.
"SET CONTROL CONFIG 0 001F": Este comando establece el modo entrelazado
de descubrimiento y de establecimiento de conexión.
"SET CONTROL ECHO 4": permite eliminar el “echo” generado por el software
iWRAP al enviarle un comando a través del puerto serie.
Finalmente, mencionar que la comunicación con el microcontrolador se efectuará a
través de un puerto USART, utilizando una velocidad de 115200 bps y un formato de
comunicación 8N1, es decir, 8 bits, sin paridad y un bit de parada.
4.2. Software
Desde el punto de vista del funcionamiento del sistema, se ha dividido en dos partes
diferenciadas la aplicación. Una primera parte, está destinada a la implementación de un
protocolo que permita la obtención de los datos necesarios. Mientras que la segunda parte,
está enfocada al análisis de diferentes algoritmos de estimación de la posición.
4.2.1. Aplicación principal
Este programa será ejecutado en el nodo principal y será el responsable de interactuar
con los nodos de localización, así como de obtener los valores RSSI procedentes del
descubrimiento de dichos nodos. Con el objetivo de minimizar la posible interferencia que
pudieran generar los nodos de localización al efectuar el descubrimiento a la vez, se ha optado
por diseñar un protocolo propio que permita a un nodo en exclusiva efectuar un proceso de
descubrimiento, mientras, los restantes nodos quedan a la espera. Para conseguir este
objetivo, la aplicación principal se encarga de descubrir a todos los terminales que posee en su
rango de cobertura. Tras ello, cederá el turno al primer nodo descubierto mediante el envío
del comando “START”. De esta forma, el nodo de localización que lo reciba, saldrá del reposo,
indicando tal acción mediante el envío de un comando “OK”, e iniciará un proceso de
descubrimiento del que obtendrá los nodos que posee a su alcance y el valor de la potencia
con el que recibe la respuesta de los mismos. Una vez, finalizado el proceso de
descubrimiento, el nodo de localización generará una trama con toda la información necesaria
y se lo enviará de vuelta al nodo principal. Una vez éste haya guardado en un fichero la trama
96
recibida, procederá al envío del comando “OK” para indicar al nodo de localización que la
recepción de la trama ha sido correcta. Cuando el nodo de localización reciba el asentimiento
positivo, este enviará el comando “CIERRE”, indicando que ha finalizado su tarea y que la
aplicación principal puede proceder a preguntar al siguiente nodo de localización. El
intercambio de mensajes puede observarse más claramente en la figura 4.
Figura 4.2.1. Paso de mensajes
97
El protocolo diseñado consta de los siguientes mensajes:
Nombre Formato Descripción
START START Este comando sirve para iniciar un proceso de descubrimiento en un nodo de localización. Actúa como una entrada externa en la máquina de estados que permite sacar al nodo de localización del reposo y llevarlo al estado de búsqueda de dispositivos.
OK OK Indica un asentimiento positivo RSSI RSSI + Nº Dispositivos
descubiertos + Dir_BT Disp_1 + Valor RSSI_1 + Dir_BT Disp_2 + Valor RSSI_2 +
Trama que contiene los datos necesarios para efectuar la localización de un dispositivo. Está compuesta por el número de terminales descubiertos y a la dupla (dirección Bluetooth, valor RSSI) asociados a los dispositivos encontrados.
CIERRE CIERRE Permite cerrar una comunicación con la aplicación principal.
Tabla 4.2.1. Comandos del protocolo utilizado entre el nodo principal y los nodos de localización.
Por tanto, la aplicación principal deberá implementar este protocolo. Con este
objetivo, se ha diseñado como se puede comprobar en la figura 4.2.3, donde se representa el
diagrama de flujo de dicha aplicación.
Con respecto al fichero generado, este presentará el siguiente formato:
Dirección Bluetooth Origen: se corresponde con la dirección Bluetooth del nodo que
ha enviado la trama RSSI.
Trama RSSI: se almacena la trama RSSI enviada por el nodo de localización remoto tal
y como ha sido enviada.
Figura 4.2.2. Formato del fichero de almacenamiento.
Fichero de almacenamiento:
<Dir BT origen> <trama RSSI>
00:07:80:93:9A:FE RSSI 2 00:02:5b:0a:6e:52 -78 00:07:80:93:9a:ff -73
00:07:80:93:9A:FF RSSI 3 00:02:5b:0a:6e:52 -71 00:07:80:93:9a:fe -71 00:07:80:90:c8:1a -84
98
Figura 4.2.3. Diagrama de flujos de la aplicación principal.
99
.Figura 4.2.4 Diagrama de flujo de las funciones secundarias de la aplicación principal.
4.2.2. Firmware nodo de localización
La programación del nodo de localización se ha basado en una máquina de estados
finita que implementa el protocolo especificado en la sección de la aplicación principal.
Además, será necesario un paso previo donde se inicializará el hardware de la tarjeta
correctamente.
Por tanto, el primer paso que deberá efectuar el programa diseñado será la correcta
inicialización de los pines del microcontrolador usado en el nodo de localización. Estos se
corresponderán con los siguientes valores:
Pin PB0: se corresponde con el diodo LED rojo. Se debe configurar como un pin de
salida, si se coloca un cero lógico en dicho pin, el LED estará apagado y si se fija un uno
lógico, el estado del LED será encendido.
100
Pin PB1: está asociado al zumbador existente en la tarjeta. Se tiene que configurar
como un pin de salida, si se coloca un cero lógico en dicho pin, el zumbador estará
apagado y si se fija un uno lógico, pitará.
Pin PD6: está relacionado con el pin de reset del módulo Bluetooth. Este pin es activo
a nivel bajo. Por defecto, los pines del microcontrolador Atmega8 al fijarse como salida
se establecen a nivel bajo, por lo que será necesario inicializar este pin con un uno
lógico. De esta forma, el módulo saldrá del reset hardware y podrá operar con
normalidad. Si fuese necesario dar un reset hardware al módulo durante el
funcionamiento normal del dispositivo, este se debería efectuar como sigue:
El retraso introducido es necesario para permitir al módulo WT12-A detectar
que se ha producido un reset hardware.
A continuación será necesario inicializar los periféricos que se van a utilizar del
microcontrolador y el módulo Bluetooth. La configuración del módulo se realizará en base a los
parámetros de configuración especificados en la sección 4.1.2.2.1 del documento. Tras el
proceso de inicialización y configuración, se podrá iniciar la máquina de estados en el estado
“RESTAURAR”.
PORTD=(0<<PD6);
Delay_ms(10);
PORTD=(1<<PD6);
101
Figura 4.2.5. Máquina de estados del nodo de localización.
Como se puede comprobar en la figura 4.2.5, la máquina de estados del nodo de
localización está compuesta por once estados diferentes. A continuación se describirá cada
uno de estos.
RESTAURAR. Este estado se utiliza para inicializar las variables de memorias utilizadas
durante la ejecución. De esta forma, en la primera y restantes ejecuciones las variables
estarán iniciadas con un valor adecuado.
REPOSO. Se corresponde con un estado donde el microcontrolador la única tarea que
está efectuando es un envío cada segundo del comando de configuración “SET BT
102
PAGEMODE 3 1000 0”, debido a un problema detectado en el módulo Bluetooth. Éste
tras ser detectado, pierde la configuración de la visibilidad, por lo que es necesario
reconfigurar dicho parámetro cada cierto tiempo. Por otro lado, se estará pendiente
de recibir a través de un enlace RFCOMM, por parte de la aplicación principal, el
comando START. La única forma de salir de este estado, es mediante la recepción por
la USART del comando START, que implicaría modificar el estado actual de la máquina
con el valor del estado OK.
OK. Se trata de un estado de transición cuya única misión es transmitir por el enlace
0x00, que se corresponde con el identificador del canal donde ha iniciado la
comunicación el nodo principal, el comando “OK” a modo de asentimiento positivo.
Tras el envío de dicho comando, se procederá a saltar al estado “INQUIRY”.
INQUIRY. Es un estado de transición cuya finalidad radica en transmitir por el enlace
0xFF, destinado al envío de comandos al módulo Bluetooth, el comando “INQUIRY 5”.
Mediante este comando, se le indica a la capa HCI de la pila de protocolos iWRAP que
realice un proceso de descubrimiento con una duración de 5 veces 1,28 segundos. En
consecuencia, el período total de descubrimiento será de 6,4 segundos. Se ha elegido
este valor porque la probabilidad de descubrir a todos los nodos de localización en el
rango de cobertura es próxima al 100%, como puede observarse en la figura4.2.6. Tras
el envío de dicho comando, se procederá a saltar al estado “ESPERA”.
Figura 4.2.6 Probabilidad de descubrir a todos los dispositivos en función de la longitud del proceso de descubrimiento.
0
20
40
60
80
100
120
1 2 3 4 5 6 7 8
Pro
bab
ilid
ad d
e s
er
de
scu
bie
rto
[%
]
Múltiplo del la longitud de descubrimiento
Probabilidad descubrimiento vs Número de Length
Probabilidad
103
ESPERA. Este estado permite esperar a que el módulo WT12-A devuelva todos los
resultados obtenidos durante el proceso de descubrimiento. En esta situación,
mientras se espera a recibir el resultado final, el microcontrolador irá almacenando
cada uno de los resultados parciales devueltos para posteriormente procesarlos. Una
vez se recibe confirmación de que el descubrimiento de dispositivos ha finalizado
mediante la recepción del comando “INQUIRY x”, donde la x representa al número de
dispositivos descubiertos, se procede a pasar al estado ESPERA_INQUIRY.
ESPERA_INQUIRY. Este segundo estado de espera, se introduce para filtrar los
resultados finales devueltos por el módulo Bluetooth. Esto se debe a que estos
resultados tan sólo aportan información sobre la dirección Bluetooth y la clase del
dispositivo remoto descubierto, información que ya ha sido almacenada durante el
estado “ESPERA” gracias a los descubrimientos parciales que devuelve. La condición de
salida de este estado, será que el número de comandos del tipo “INQUIRY
00:11:22:33:44:55 123456” sea igual al número de dispositivos descubiertos
previamente. En ese momento, la máquina de estado evolucionará hacia el estado
PROCESAR.
PROCESAR. En este estado se realiza el procesamiento de los resultados parciales
devueltos por el módulo Bluetooth. La información que se saca de estos se
corresponde con la dirección Bluetooth y el valor RSSI con el que se ha recibido la
señal. Esta información se copia a una matriz donde se almacenan para su posterior
envío. La finalización de este procesamiento conlleva el salto al estado “TRAMA”.
TRAMA. La construcción de la trama se realiza en este estado. Para ello, se añade a un
buffer destinado a la transmisión de órdenes, el comando “RSSI”, seguido del número
de dispositivos descubiertos. A continuación se concatena a dicho buffer la dirección
Bluetooth y el valor RSSI asociado a cada dispositivo remoto. Una vez generada la
trama en el buffer de transmisión, se procede a su envío por el canal RFCOMM
establecido previamente hacia el nodo principal. A continuación, la máquina de estado
evoluciona hacia el estado “ESPERA_FIN”.
ESPERA_FIN. Se corresponde con un estado donde el nodo de localización espera un
asentimiento positivo por parte de la aplicación principal, que indicará que la trama
RSSI ha llegado correctamente y se ha podido almacenar en disco correctamente. Para
ello, cuando se recibe el comando “OK”, la rutina de interrupción lo detectará y
pondrá la variable fin a uno. De esta forma, al volver a la función principal del
firmware, la máquina de estado irá al estado “CIERRE”.
104
CIERRE. Se trata de un estado de transición cuya única misión es transmitir por el
enlace 0xFF, que se corresponde con el identificador del canal donde ha iniciado la
comunicación el nodo principal, el comando “CIERRE” para finalizar la comunicación.
Tras el envío de dicho comando, se procederá a saltar al estado “ESPERA_CIERRE”.
ESPERA_CIERRE. Se corresponde con un estado donde el nodo de localización espera
el cierre de la comunicación por parte del nodo principal. Cuando éste cierre el socket
asociado al canal RFCOMM, el módulo Bluetooth lo detectará y enviará el comando
“NO CARRIER 0 ERROR 0”, indicando que ya no existe conexión disponible y que no se
ha producido ningún tipo de error. La detección de esta orden en la rutina de
interrupción asociada a la recepción de la USART, actualizará la variable fin_cierre,
permitiendo que la máquina de estados pueda ir al estado “RESTAURAR” para
devolver los valores iniciales a las diferentes variables utilizadas y se puede repetir el
proceso nuevamente al recibir un nuevo comando START.
Finalmente, con el objetivo de aclarar el funcionamiento de la máquina de estados
diseñada, en el apéndice A se presentan los pseudocódigos de los diferentes estados así como
de las funciones utilizadas en la programación del microcontrolador.
4.2.3. Matlab
Finalmente, la última parte del software diseñado para la localización de un objetivo
en un recinto ubicado en el interior de un edificio ha sido implementada en Matlab. De esta
forma, tras recolectar la información necesaria mediante los nodos de localización y los nodos
principales, se pueden estudiar diferentes algoritmos de estimación de la posición y comparar
los resultados obtenidos para determinar el algoritmo que mejor se adapta al entorno
estudiado. Este estudio se ha realizado con el objetivo de determinar el algoritmo que
presenta menor error cuadrático medio en la estimación de la distancia. Para llevar a cabo
dicha comparación, se ha utilizado como figura de mérito el error cuadrático medio de la
posición estimada con respecto a la posición real debido a que permite hacerse una idea de lo
bien o mal que se ajusta el algoritmo a la realidad, ecuación 4.2.1. En ella, los términos e ,
representan las coordenadas estimadas, mientras que los términos y , hacen referencia a
las coordenadas reales del objetivo.
Ecuación 4.2.1. Expresión para el cálculo del error cuadrático medio.
105
Con respecto al software diseñado para Matlab es necesario realizar dos distinciones.
Por un lado, es necesario caracterizar el medio físico de propagación para determinar la
atenuación que sufre la señal al viajar por dicho medio. Esto se debe a que en interiores, la
propagación de la señal de radiofrecuencia se puede ver afectada por factores tales como la
propagación multitrayecto, las variaciones de la temperatura o la aparición de sombras
debidas al mobiliario del recinto. Por tanto, el valor RSSI de la señal se hace dependiente del
entorno por donde se propaga. No obstante, en la comunidad científica está aceptado en base
a evidencias empíricas que parece razonable modelar el RSS para cualquier valor de la
distancia en una localización particular como una variable aleatoria distribuida logarítmico-
normal con un valor medio dependiente de la distancia. En base a este modelo, la ecuación de
propagación resultante quedaría como:
Ecuación 4.2.2. Ecuación de propagación que contempla el canal de propagación
Donde es un valor de potencia de referencia conocida en dBm a una
distancia desde el transmisor, es el exponente de pérdidas en el trayecto que mide el
ratio en el que el RSS disminuye con la distancia y su valor depende del entorno de
propagación específico, es una variable aleatoria gaussiana con media acero y desviación
y registra el efecto aleatorio de las zonas sombreadas, es decir, de las zonas carentes de
cobertura.
El principal problema de esta caracterización es que requiere un modelado del entorno
donde se está llevando a cabo la localización, lo que provocaría tener que realizar un estudio
exhaustivo de cada uno de los posibles recintos donde este sistema se aplicase. Para evitar
este problema, se ha realizado un mecanismo de calibración dinámico que será explicado en el
epígrafe 4.2.3.1., denominado “Caracterización del medio físico de propagación”.
En segundo lugar, una vez que se ha podido realizar una correcta conversión entre los
valores RSSI recibidos y un valor de distancia, se puede efectuar la estimación de la posición
del objetivo mediante el uso de alguno de los algoritmos propuestos. El objetivo de estudiar
varios algoritmos radica en comprobar cómo funcionan cada uno de ellos en diferentes
situaciones.
106
4.2.3.1. Caracterización del medio físico de propagación
Como se ha comentado anteriormente, para poder estimar la posición del objetivo es
necesario disponer primeramente de un mecanismo de caracterización del medio. Puesto que
el uso de la ecuación 4.2.2, provoca un estudio detallado de cada uno de los medios, se ha
optado por un sistema de calibración dinámico. Para ello, se necesita disponer de los valores
RSSI entre el objetivo a localizar y los nodos de localización y, además, los valores RSSI entre
los distintos nodos de localización. De esta forma, se pretende realizar una estimación del
medio físico que compense las condiciones de propagación del canal. La ventaja de utilizar este
método es que no se requiere de una etapa previa en la que se realice un proceso de
aprendizaje, como ocurriría en el caso de usar una red neuronal, o de una etapa previa de
caracterización que permita obtener un mapa de valores RSSI en función de la posición. Por
tanto, el sistema podrá calibrar dinámicamente el medio en base a las mediciones obtenidas
desde los nodos de localización, compensando automáticamente loas condiciones observadas
por cada una de ellas.
Por su parte, esta conversión será ejecutada en el lado del nodo principal debido al
elevado coste computacional que conlleva y a la necesidad de minimizar lo máximo posible el
coste económico del nodo de localización. Por este último motivo, no resultaría conveniente
efectuarla en él; puesto que esto implicaría tener que utilizar un microcontrolador con mayor
capacidad de cálculo, lo que provoca un incremento del precio.
Si se considera la disponibilidad de m nodos de localización, todas ellas en el rango de
cobertura de las demás, cuya distancia a un punto tomado como origen de coordenadas de un
sistema cartesiano sea conocida, se pueden definir los siguientes elementos:
Matriz D: se corresponde con una matriz que contiene sobre la distancia que
separa los diferentes nodos de localización. De tal forma que el elemento ,
hace referencia a la distancia existente entre el nodo de localización i y el nodo
j. Cabe destacar que esta matriz deberá ser simétrica, puesto que se cumplirá
que . Además, los elementos de la diagonal principal de la matriz
deberán ser cero, puesto que la distancia de un nodo de localización con
respecto el mismo es cero.
Matriz R: hace referencia a una matriz que almacenará los valores RSSI
recibidos con respecto a cada nodo de localización. Esto supone que el
elemento contenga información sobre la potencia de señal recibida por el
107
nodo de localización i con respecto al nodo j. Debido a la aleatoriedad
presente en el proceso de medida del valor RSSI y a las características
cambiantes del entorno, no tiene por qué cumplirse que el elemento .
Al igual que en el caso de la matriz D, la diagonal principal deberá ser nula.
Matriz T: esta matriz actuará como una matriz de transformación, ya que debe
ser la responsable de convertir los valores RSSI obtenidos durante los procesos
de descubrimientos en medidas de distancias. Por tanto, el elemento de
dicha matriz se corresponderá con el valor que permitirá mapear el valor RSSI
obtenido por el nodo de localización i del nodo j en una medida de la distancia
que separa dichos nodos.
Matriz E: se trata de una matriz que almacenará las diferencias existentes
entre la matriz D, que posee la distancia real entre los diferentes nodos, y la
matriz resultante del producto de .
Con estos elementos definidos, el problema de caracterizar el medio se basaría en
minimizar la expresión del error entre la distancia real y la inferida, es decir, se buscaría hacer
los elementos de la matriz E lo más pequeño posibles, tendiendo a cero en el límite. De forma
general, el error se puede expresar como:
Ecuación 4.2.3. Expresión del error cometido en el proceso de calibración.
Puesto que la norma euclídea de una matriz dada se determina como la raíz
cuadrada del radio espectral de la matriz , es decir:
Ecuación 4.2.4. Definición de la norma espectral de una matriz dada.
Donde el término hace referencia al autovalor máximo de la matriz . Si se
aplica este hecho a la matriz E y se iguala a cero el resultado se obtiene el siguiente resultado:
108
Ecuación 4.2.5. Desarrollo matemático efectuado para derivar la expresión de la matriz de transformación T
Es decir, se puede determinar la matriz de transformación T sin más que resolver un
sistema de ecuaciones lineales. Una vez determinada la matriz T, para transformar en medidas
de distancias los valores RSSI generados por el objetivo en los diferentes nodos de localización
bastará con efectuar la siguiente operación:
Ecuación 4.2.6. Cálculo del vector de distancias estimado en base a la matriz de transformación T.
Donde , se corresponde con el vector de distancias estimado en el instante n y ,
hace referencia a un vector columna con los valores RSSI que el objetivo a localizar ha
generado en los nodos de localización y es recibido por el nodo principal.
4.2.3.2. Algoritmos de estimación de posición
El objetivo último de los algoritmos de estimación de la posición que se van a
presentar a continuación es, dado un conjunto de medidas de distancias obtenidos como se ha
indicado en el epígrafe anterior, encontrar la localización de un nodo objetivo.
En este estudio, la atención recaerá sobre los algoritmos de un único salto, es decir,
aquellos que requieren la interacción del objetivo con un único nodo de localización. Los
algoritmos utilizados para dicho estudio se describirán en las subsecciones posteriores.
4.2.3.2.1. Multilateración
Como se describió en el capítulo 2, la multilateración consiste en un método de
posicionamiento basado en la intersección de, al menos, tres círculos centrados cada uno de
ellos en las coordenadas de los correspondientes nodos de localización, véase la figura
4.2.7. La intersección de estos círculos se corresponderá con la posición del objetivo.
109
Figura 4.2.7. Representación gráfica del método multilateración.
En consecuencia, si se define el parámetro como el error cometido entre la distancia
medida y la distancia resultante de estimación de la posición, se obtiene:
Ecuación 4.2.7. Expresión del error cometido entre la posición real y el nodo i-ésimo.
Donde representa la distancia medida por el nodo de localización i-ésimo con
respecto al objetivo, las coordenadas , la posición estimada del objetivo y las
coordenadas conocidas del i-ésimo nodo de localización.
Puesto que la idea es obtener un estimador de la posición que sea lo más exacto
posible, lo ideal sería que la diferencia existente entre la distancia medida y la distancia
estimada fuese nula. En consecuencia, se puede hacer el término , resultando el
siguiente desarrollo:
110
Ecuación 4.2.8. Manipulación algebraica de la expresión del error.
Tras operar, se ha llegado a una expresión en la que las variables que desean
determinarse no poseen una relación lineal. Éstas se encuentran elevadas al cuadrado, lo que
impide utilizar las técnicas de resolución de sistemas lineales. Este inconveniente, se puede
resolver si referenciamos todas las medidas a un mismo nodo, el cual puede ser el nodo
principal sin pérdida de generalidad. Si denominamos por N mayúscula a dicho nodo, se
obtiene que:
Ecuación 4.2.9. Expresión final del algoritmo multilateración.
Si se reordena la expresión en forma matricial, se observa el siguiente sistema de
ecuaciones lineales:
Ecuación 4.2.10. Desarrollo matemático para la obtención de la posición estimada.
Como se puede comprobar, se consigue obtener una solución en el sentido de los
mínimos cuadrados de dicho sistema de ecuaciones lineales. Esto se debe a que la solución
hallada minimiza la norma del error , que era lo que se buscaba desde un
comienzo. Por su parte, el sistema siempre tendrá solución debido a que el producto ,
siendo A una matriz real, da lugar a una matriz simétrica y, por definición, una matriz simétrica
siempre es invertible.
Por tanto, la posición estimada se hallará mediante el cómputo de la siguiente
expresión:
Ecuación 4.2.11. Expresión final de la posición estimada.
111
4.2.3.2.2. Algoritmo Min-Max
Resolver la ecuación 4.2.11 es bastante costoso debido a las operaciones matriciales
en punto flotante que se requieren. Por este motivo, surge el algoritmo Min-Max, que se
corresponde con una variante de la multilateración. En este caso, la idea consiste en construir
un rectángulo que actúa de frontera para cada nodo de localización. Dicho rectángulo se
encontrará centrado en las coordenadas de cada nodo. En concreto, las esquinas de
cada uno de estos rectángulos coinciderán con el siguiente valor:
Ecuación 4.2.12. Expresión de las coordenadas de los rectángulos fronteras.
di di
di
di
( xi , yi )
( xi +di, yi+di )( xi -di, yi+di )
( xi -di, yi -di) ( xi+di , yi -di)
Figura 4.2.8. Construcción del rectángulo frontera.
La posición estimada se obtiene como el centro de la intersección de estos
rectángulos. Para ello, basta con determinar el mínimo de todas las coordenadas máximas y el
máximo de todas las coordenadas mínimas, es decir:
Ecuación 4.2.13. Coordenadas del rectángulo intersección.
112
En consecuencia, la posición final se obtiene como el promedio de las coordenadas de
las esquinas. La ventaja de este método es que requiere una baja complejidad de cálculo,
puesto que únicamente se realizan operaciones de suma y comparaciones.
4.2.3.2.3. Algoritmo Multilateración iterativo
Se trata de una variante del algoritmo de multilateración. En este caso, lo que se hace
es utilizar éste para una estimación inicial de la posición. Tras dicho cálculo, el valor obtenido
se utiliza como semilla de un proceso iterativo, donde se somete la posición estimada a un
proceso de refinamiento.
Para ello, se define una función de error parcial relativa a cada nodo de localización
tal y como sigue:
Ecuación 4.2.14. Expresión del error parcial relativo al nodo de localización i-ésimo.
Donde representa la distancia estimada mediante la calibración del canal de
propagación, son las coordenadas del nodo de localización i-ésimo y son las
posiciones estimadas mediante el algoritmo de multilateración.
La función global del error será:
Ecuación 4.2.15. Expresión del error global.
Gracias a esta definición, se puede definir un vector de incremento como sigue:
Ecuación 4.2.16. Definición de la matriz de desplazamiento .
Donde B se corresponde con , es decir,
113
Ecuación 4.2.17. Definición de la matriz B.
Ecuación 4.2.18. Cálculo de las derivadas parciales de la matriz B.
Finalmente, el último paso del algoritmo será actualizar la posición inicial estimada con
una versión escalada del desplazamiento indicado por la matriz . Este proceso se repetirá
hasta conseguir que el error global sea inferior a un cierto valor.
Ecuación 4.2.19. Expresión final de la posición estimada.
4.2.3.2.4. Aproximación mecánica. Algoritmo de Malguki
El algoritmo de Malguki está basado en un símil mecánico, los nodos de localización se
consideran como masas que están unidas entre ellas mediante una fuerza elástica similar a la
de un muelle. Por tanto, cada muelle representa una restricción para la posición del nodo y su
fuerza está relacionada con la distancia estimada que une dichos nodos. Cuando los nodos se
ubican en la posición determinada por el conjunto de distancias estimadas, entonces los
muelles no deberán efectuar ningún tipo de fuerza que corrija dicha posición. No obstante, si
el nodo estuviera desplazado con respecto a la posición estimada, entonces los muelles
actuarían ejerciendo una fuerza sobre dicho nodo tal que permitiese trasladarlo hacia la
posición estimada. Para mayor detalle, véase la figura 4.2.9 De esta forma, el error global de la
posición se reducirá al mínimo. Con este proceso, se consigue reducir la energía elástica de
todo el sistema cuando los nodos se encuentran en su posición final.
114
Si se representa por a la posición ocupada por el i-ésimo nodo de localización,
entonces la fuerza elástica producida por todos los muelles se podrá determinar como la
suma de cada una de las fuerzas, es decir:
Ecuación 4.2.20. Definición de la fuerza elástica y del campo escalar .
Los términos que aparecen en la ecuación 4.2.20, se corresponde con:
se corresponde con la fuerza elástica ejercida por el i-ésimo nodo de localización
sobre el nodo objetivo.
distancia estimada del nodo del nodo de localización i-ésimo con respecto al
objetivo que se desea localizar.
módulo de la distancia existente entre el i-ésimo nodo de localización y el
objetivo cuya posición se desea estimar.
vector unitario que marca la dirección relativa del objetivo a posicionar
frente al -ésimo nodo de localización.
se corresponde con una función escalar que depende de la relación
. Para el caso de la fuerza elástica mencionada en el párrafo anterior, esta
función se corresponde con
Figura 4.2.9. Definición de la fuerza elástica en el objetivo a localizar en base a dos nodos de localización.
115
El objetivo principal de este algoritmo es minimizar el error global dado por la suma
de todos los errores parciales . Esta tarea se puede llevar a cabo de una forma eficaz
teniendo en cuenta que la fuerza elástica total tiene la misma dirección y sentido opuesto
que el gradiente de la función del error. En consecuencia, para una posición de la estimación
dada por , la fuerza mostrará en qué dirección debe corregirse ésta para reducir el error
asociado. El vector nuevo de fuerza será indicado mediante un vector desplazamiento ,
usando un parámetro ( ) como factor de conversión. El valor de puede necesitar ser
actualizado durante cada iteración del algoritmo para asegurar la convergencia del mismo.
Este hecho es necesario para evitar los posibles valles que la función de error pueda presentar.
Puesto que en ese caso, si el valor de fuese demasiado elevado, el algoritmo podría saltarse
el mínimo de la función y no llegar a converger nunca.
Figura 4.2.10. Ejemplo de un valor mal ajustado y de cómo el algoritmo no puede alcanzar el mínimo de la función de error.
116
Capítulo 5.
Resultados
En este capítulo se presentarán los resultados obtenidos en base a una prueba
empírica realizada. Para su realización, se instaló la arquitectura presentada en el capítulo 4 de
este documento en una habitación cerrada del Departamento de Ingeniería Electrónica de la
Escuela Superior de Ingenieros de Sevilla. El sistema instalado se ha compuesto de un nodo
principal encargado colocado en el centro de una de las paredes de la habitación y de cuatro
nodos de localización ubicados en las esquinas. Para un mayor detalle, ver la figura 5.1. En este
caso, el nodo objetivo a localizar se ha compuesto de un terminal móvil con transceptor
Bluetooth, al que ha sido necesario configurar de una forma adecuada para su detección.
Figura 5.1 Fotografía de la sala utilizada para la prueba.
En la tabla 5.1, se puede comprobar la ubicación exacta de cada uno de los elementos
que conforman el sistema. Las coordenadas cartesianas de dichos componentes se han
estimado tomando como origen de coordenadas el nodo principal. Esta elección se ha
117
efectuado de esta forma para simplificar los cálculos matemáticos de los algoritmos utilizados,
ya que permiten simplificar las expresiones matemáticas.
Coordenada X [m] Coordenada Y [m] Dirección Bluetooth
Nodo principal 0 0 00:02:5B:0A:6E:52 Nodo de localización 1 -3.575 0 00:07:80:93:9A:FE Nodo de localización 2 -3.425 -3.315 00:07:80:93:9A:FF Nodo de localización 3 3.02 -3.3325 00:07:80:90:C8:1ª Nodo de localización 4 3.02 0 00:07:80:90:C8:1E
Tabla 5.1. Ubicación de los diferentes nodos en la habitación utilizada.
Figura 5.2. Representación esquemática de la instalación del sistema en la sala.
Finalmente, los puntos utilizados para llevar a cabo el procedimiento de localización
fueron seleccionados aleatoriamente, eligiendo un total de 15 puntos. Este número de
posiciones se eligió por ser un número lo suficientemente alto como para poder realizar un
análisis comparativo de los distintos algoritmos. En la tabla 5.2, se recogen las diferentes
posiciones referenciadas al nodo principal.
Posición Coordenada X [m] Coordenada Y [m]
1 0 -1.600 2 -1.645 -1.600
118
3 -3.305 -1.600 4 -2.385 -0.590 5 -1.460 -0.665 6 -3.560 -0.215 7 -3.890 -2.635 8 -0.090 -2.940 9 0.008 -0.400
10 1.275 -0.580 11 0.380 -2.560 12 -0.380 -3.030 13 1.655 -1.600 14 1.425 -2.545 15 2.735 -2.455
Tabla 5.2. Coordenadas de los diferentes puntos a localizar utilizados durante la prueba
A continuación se presentarán los resultados obtenidos para cada uno de los
estimadores de posición utilizados, dejando para el epígrafe 5.5 el análisis de los mismos,
donde se compararán entre ellos.
5.1. Multilateración
A continuación se presentan los resultados obtenidos de aplicar el algoritmo de
multilateración. En la figura 5.1.1, el punto representado por una circunferencia roja
representa la posición real, mientras que la aspa azul representa la posición estimada.
119
Figura 5.1.1. Resultados obtenidos del proceso de localización.
120
Figura 5.1.2. Representación del error cuadrático medio.
5.2. Multilateración iterativa
En las siguientes figuras, se representan los resultados obtenidos de aplicar el
algoritmo de multilateración iterativa. En la figura 5.2.1, el punto representado por una
circunferencia roja representa la posición real, mientras que la aspa azul representa la posición
estimada.
Figura 5.2.1. Resultados obtenidos del proceso de localización.
121
Figura 5.2.2. Representación del error cuadrático medio.
5.3. Min-Max
Seguidamente se muestran los resultados obtenidos de aplicar el algoritmo Min-Max.
En la figura 5.3.1, el punto representado por una circunferencia roja representa la posición
real, mientras que la aspa azul representa la posición estimada.
122
Figura 5.3.1. Resultados obtenidos del proceso de localización.
123
Figura 5.3.2. Representación del error cuadrático medio.
5.4. Algoritmo de Malguki
A continuación se presentan los resultados obtenidos de aplicar el algoritmo de
Malguki. En la figura 5.4.1, el punto representado por una circunferencia roja representa la
posición real, mientras que la aspa azul representa la posición estimada.
Figura 5.4.1. Resultados obtenidos del proceso de localización.
124
Figura 5.4.2. Representación del error cuadrático medio.
5.5. Comparativa
Para llevar a cabo la comparativa de los diferentes algoritmos, se ha representado en una
misma gráfica el error cuadrático medio de todos ellos. Esta puede observarse en la figura
125
5.5.1.
Figura 5.5.1. Representación conjunta de los errores cuadráticos medios de los distintos algoritmos
Al observar dicha figura, el primer resultado que se deriva es que el error en la
posición estimada varía en función de la posición que se ha deseado estimar. De forma que
aquellos puntos que se encuentran más alejados de la zona media de la habitación presentan
un mayor error. Esto hace pensar que el rango de cobertura de los diferentes nodos de
localización es diferente. Algunos de los motivos a los que puede atribuirse dichas diferencias
son:
Diferencias en la ganancia de las antenas de los transceptores Bluetooth.
Obstáculos en la línea de visión entre el nodo de localización y el objetivo a localizar.
Presencia de conductores cerca de la ubicación del nodo que alteren el patrón de
radiación.
Todo ello hace que el rango de cobertura del nodo de localización se aleje del ideal y
no se cubra todo el espacio de la sala. Este efecto, se traduce en la generación de errores al
obtener la distancia a partir del vector RSSI obtenido durante el proceso de descubrimiento.
Con respecto a los algoritmos estudiados, se puede comprobar que el algoritmo
basado en la multilateración iterativa es el que mejor estima la posición. Como se puede ver
126
en la tabla 5.5.1, es el que posee una menor media en el error cuadrático medio. Esto se debe
al proceso de refinamiento al que somete la posición estimada inicial.
No obstante, si se efectúa un promedio del error obtenido para cada una de las
posiciones, como se presenta en la tabla 5.5.1, se puede comprobar que el error medio
cometido por el algoritmo de Malguki es similar al algoritmo de multilateración iterativa. Esto
manifiesta la importancia de someter a la posición estimada a un proceso de corrección.
Puesto que éste permite corregir en gran parte, el error cometido al determinar la distancia a
la que se encuentra el objetivo usando la matriz de transformación obtenida del proceso de
calibración.
Por otro lado, cabe destacar que el método basado en rectángulos es el que peor
resultados nos ofrece, algo lógico teniendo en cuenta que está basado en una simplificación
del método de multilateración. Sin embargo, el ahorro computacional que presenta ese
algoritmo frente a los demás, puede hacerlo una opción recomendable siempre y cuando el
sistema diseñado no requiera una gran precisión en la posición estimada para su
funcionamiento.
Multilateración Multilateración iterativa
Min-Max Malguki
Media 1.8374 1.7171 2.2722 1.7873 Varianza 0.8956 0.9641 1.2143 0.8333
Tabla 5.5.1. Valores medios del error cuadrático medio de cada algoritmo.
127
Capítulo 6.
Conclusiones
En este proyecto se ha presentado una red de sensores inalámbrica cuya finalidad es
poder localizar un objetivo en el interior de edificios. Como se derivan de los resultados
expuestos en el capítulo 5, el sistema propuesto puede ser un candidato adecuado para
resolver dicha problemática, pudiendo competir con otras soluciones comerciales existentes
hoy en día. De esta forma, se demuestra que la tecnología Bluetooth puede ser útil, no sólo
para la transferencia eficaz de datos en distancias cortas, sino que también para tareas de
posicionamiento.
Desde el punto de vista del sistema, este se ha diseñado de forma que se pueda
maximizar el número de dispositivos descubiertos, logrando un porcentaje de descubrimiento
cercano al 100%. Esto permite obtener una mayor población de datos en un tiempo inferior.
Por este motivo, se ha decidido implementar el protocolo de comunicación explicado en el
capítulo 4. En el supuesto caso de que todos los nodos de localización estuvieran descubriendo
dispositivos de manera simultánea, sin establecer esperas, se producirían interferencias entre
ellos por dos razones:
La probabilidad de colisiones de los paquetes de descubrimiento en una misma
frecuencia aumentaría.
Mientras que un nodo se encuentra en un proceso de descubrimiento, el tiempo que
permanece a la espera de recibir los paquetes de otro nodo se ve reducido. Por lo que
la probabilidad de descubrir a todos los dispositivos se vería reducida.
Por otro lado, el estudio realizado sobre los diferentes algoritmos de localización ha
dejado ver la importancia del número de nodos de localización, de la ubicación de los mismos
y de la importancia de la etapa de calibración. En primer lugar, cuanto mayor sea el número de
nodos, más precisa podrá ser la localización. Esto se debe a que existirán un mayor número de
circunferencias que intersecten entre sí delimitando mejor la zona donde se estima que se
encuentra el objetivo. En segundo lugar, la ubicación de los mismos es un factor decisivo
128
puesto que debe evitarse cualquier tipo de objeto que apantalle al nodo de localización. Esto
provocaría un gran error en la estimación de la distancia y, en consecuencia, de la posición.
Finalmente, la calibración del sistema para la conversión de los valores RSSI en distancia es una
etapa crítica, ya que cualquier error que se introduzca en dicha matriz, se arrastrará a lo largo
del proceso de estimación. Esto puede provocar que el error en la posición calculada sea
elevado.
En conclusión, se ha llegado a obtener un sistema que posee una gran versatilidad
comercial debido a la naturaleza de los dos elementos utilizados: el nodo principal y el nodo de
localización. En el caso del nodo principal, al tratarse de un ordenador industrial en formato
PC/104+, además del software asociado al sistema de localización, puede implementar otra
serie de aplicaciones tales como un servidor web, las aplicaciones necesarias para convertirlo
en un punto de acceso a Internet mediante la utilización de una pasarela Bluetooth-Ethernet o
una base de datos donde almacenar las posiciones de los objetivos a localizar para un estudio
posterior. Este carácter polivalente que se le puede asignar al nodo principal hace que la
arquitectura propuesta resulte de interés para los grandes centros comerciales. La principal
utilidad para ese caso, sería ubicar al usuario del dispositivo en un lugar de la planta del centro
comercial y poder enviarle información de interés para el usuario en base a su localización. De
esta forma, el usuario podría recibir un anuncio del comercio más cercano.
6.1. Futuras líneas de trabajo
Para la mejora del sistema propuesto para la localización se podría avanzar en el
desarrollo de las siguientes tareas:
Estudio de mecanismos diferentes para la transformación de los valores RSSI en
medidas de distancias. Por ejemplo, el uso de redes neuronales.
Implementación del seguimiento de objetivos.
Estudio de algoritmos de estimación de la posición basados en funciones
probabilísticas que contemplen la aleatoriedad del proceso de descubrimiento y del
valor RSSI.
Aumentar el número de transceptores Bluetooth en los nodos de localización, de
forma que el número de respuestas de descubrimiento con información de RSSI sea
mayor.
129
Configuración de una base de datos en el nodo principal para almacenar la posición del
objetivo.
Desarrollo de una interfaz web para acceder al sistema y poder ver en tiempo real cada
objetivo.
130
Bibliografía
[1] R. Verdone, D. Dardari, G. Mazzini, A. Conti, “Wireless Sensor and Actuator Networks”
Academic Press.
[2] Lewis, F.L., “Wireless Sensor Networks”, Smart Environments: Technologies, Protocols,
and Applications, ed. D.J. Cook and S.K. Das, John Wiley, New York, 2004. Wireless
sensor network localization techniques. Guoqiang Mao, Baris Fidan, Brian D.o.
Anderson
[3] J. Werb, and C. Lanzl, “Designing a positioning system for finding things and people
indoors,” IEEE Spectrum,Vol. 35 , No. 9, pp. 71-78, Sept. 1998.
[4] M. Vossiek, L. Wiebking, P. Gulden, J. Wieghardt, and C. Hoffmann, “Wireless local
positioning - Concepts, solutions, applications,” Radio and Wireless Conference, 2003,
RAWCON '03, pp. 219 – 224, Aug. 10-13, 2003.
[5] J. Hightower and G. Borriello, “Location systems for ubiquitous computing,”IEEE
Computer, vol. 34, no. 8, pp. 57–66, Aug. 2001
[6] S. Guolin, C. Jie, G. Wei, and K. J. R. Liu, "Signal processing techniques in network-aided
positioning: a survey of state-of-the-art positioning designs," IEEE Signal Processing
Magazine, vol. 22, no. 4, pp. 12-23, 2005.
[7] A. H. Sayed, A. Tarighat, and N. Khajehnouri, "Network-based wireless location:
challenges faced in developing techniques for accurate wireless location information,"
IEEE Signal Processing Magazine, vol. 22, no. 4, pp. 24-40, 2005.
[8] Eva Lagunas Targarona, “Estimación conjunta de TOA y DOA en sistemas UWB”,
Proyecto final de carrera.
[9] J.M. Paés, F. García y A. Férnandez, Seminario Técnico “Tecnologías inalámbricas en
domótica,” Junio, 2004. Tema: propagación y planificación radioeléctrica.
[10] “Seguridad mobile,” http://www.seguridadmobile.com
[11] Bluetooth SIG group,“Especificación Bluetooth v.2.1.”http://www.bluetooth.com
[12] Nathan J.Muller,”Tecnología Bluetooh,”McGraw-Hill, Serie de Telecomunicaciones.
[13] Luis Díaz-Ambrona Tabernilla,”Sistema de localización en interiores,” Proyecto final de
carrera.
[14] Jose A. Costa, Neal Patwari y Alfred O. Hero, “Distributed Weigth-Multidimensional
Scaling for Node Localization in Sensor Networks,”ACM Journal NAmc, Vol V, No. N,
Junio 2005.
131
[15] Jagoba Arias, Aitzol Zuloaga, Jesús Lázaro, Jon Andreu, Armando Astarloa, “Malguki: an
RSSI based ad hoc location algorithm,”Microprocessors and Microsystems, 28, 2004.
[16] Thomas Haenselmann,”Sensor Networks”, Abril, 2006.
[17] L. Doherty, K. S. J. Pister, and L. El Ghaoui. Convex position estimation in wireless
sensor networks. In Proc. IEEE Infocom 2001, Anchorage, AK, USA, April 2001.
[18] T. Adebutu, L. Sacks, and I. Marshall. Simple position estimation for wireless sensor
networks. In London Communications Symposium 2003, London, United Kingdom,
September 2003
[19] Javier I. Portillo García, Ana Belén Bermejo Nieto, Ana M. Bernardos
Barbolla,”Tecnología de identificación por radiofrecuencia (RFID): aplicaciones al
ámbito de la salud,” Informe de vigilancia médica, 2007.
[20] Josef Hallberg, Marcus Nilsson, Käre Synnes,”Bluetooth Positioning”,CSEE, 2002.
[21] Josef Hallberg, Marcus Nilsson, Käre Synnes,”Positioning with Bluetooth, IrDA,
RFID”,CSEE, 2002.
[22] R. L. Moses, D. Krishnamurthy, and R. Patterson. A self-localization method for wireless
sensor networks. Eurasip Journal on Applied Signal Processing, Special Issue on Sensor
Networks,
[23] N. Patwari, A. Hero III, M. Perkins, N. Correal, and R. O'Dea. Relative location
estimation in wireless sensor networks. IEEE Transactions on Signal Processing,
51(8):2137-2148, Aug 2003.
[24] V. Ramadurai and M. L. Sichitiu. Localization in wireless sensor networks: a
probabilistic approach. 2003 International conference on Wireless Networks (ICWN03),
pages 275-281, Las Vegas, NV, June 2003.
[25] N. B. Priyantha, A. Chakraborty, and H. Balakrishnan. The cricket location-support
system. Proc.6th ACM MOBICOM, Boston, MA, Aug 2000
[26] T.S. Rappaport. Wireless Communications Principles and Practice. Prentice Hall, 1996.
[27] Jaime José García Reinoso,”Contribución al desarrollo de aplicaciones alternativas de
Bluetooth: Localización de usuarios y telemando”, Tesis Doctoral, Abril 2003.
[28] F.J. González-Castaño y J.J. García-Reinoso. “Bluetooth location networks,” En Proc.
IEEE Global Telecommunications Conference 2002 (Globecom'02), Taipei, Taiwan, nov.
2002.
[29] F.J. González-Castaño y J.J. García-Reinoso. Survivable Bluetooth location networks. En
Proc. IEEE International Conference on Communications 2003 (ICC 2003), Anchorage,
EEUU, may. 2003.
132
[30] F.J. González-Castaño, J.J. García-Reinoso, F. Gil-Castiñeira, E. Costa- Montenegro y
J.M. Pousada-Carballo. Bluetooth-assisted contextawareness in educational data
networks. Computers & Education.
[31] M. Leopold. Evaluation of Bluetooth communication: Simulation and experiments.
Technical report 02/03. Department of Computer Science, University of Copenhagen.
[32] J. Werb y C. Lanzl. A positioning system for _nding things indoors.IEEE Spectrum,
35(9):71.78, 1998.
[33] José Antonio Cobano Suárez,”Localización y seguimiento de trayectorias con robots
caminantes en entornos naturals,” Tesis doctoral, 2007
[34] Albert Huang,”The use of Bluetooth in Linux and Location Aware Computing”, Master
of Science Thesis, MIT, Mayo 2005.
[35] Brent A. Miller and Chatschik Bisdikian. Bluetooth Revealed. Prentice Hall, Upper
Saddle River, NJ, second edition, 2002.
[36] P. Bahl and V. N. Padmanabhan. RADAR: An in-building RF-based user locationand
tracking system. In IEEE Infocom, March 2000. D. Graumann, J. Hightower, W. Lara,
and G. Borriello. Real-world implementation of the Location Stack: The Universal
Location Framework. In Fifth IEEE Workshop on Mobile Computing Systems and
Applications, October 2003.
[37] F. Naya, H. Noma, R. Ohmura, K. Kogure, ”Bluetooth-based IndoorProximity Sensing for
Nursing Context Awareness”, ISWC’05, 2005.
[38] J. Rodas, T. M. Fernández, D. I. Iglesia, C. J. Escudero, “Sistema de Posicionamiento
Basado en Bluetooth con Calibrado Dinámico”, in Proc. URSI, Santa Cruz de Tenerife,
Spain, September 2007.
[39] O. Fresnedo, D. Iglesia, C. J. Escudero, “Bluetooth Inquiry Procedure: Optimization and
Influence of the Number of Devices”, in Proc. International Conference Communication
Systems and Networks (IASTED-CSN), Palma de Mallorca, Spain, 29-31 August 2007.
[40] J. Rodas, and C. J. Escudero, "Joint Estimation of Position and Channel Propagation
Model Parameters in a Bluetooth Network", in Proc. Synergies in Communications and
Localization (SyCoLo), ICC 2009, Dresden, Germany, 18 June 2009.
[41] Silke Feldmann, Kyandoghere Kyamakya, Ana Zapater, Zighuo Lue,”An indoor
Bluetooth-based positioning system: concept, Implementation and experimental
evaluation”,2003
133
Apéndice A.
Pseudocódigos del nodo de
localización
134
135
136
137
138
139
140
141
Apéndice B.
Código fuente
del nodo de localización
142
#include <stdio.h> #include <stdlib.h> #include <avr/io.h> #include <string.h> #include <avr/interrupt.h> #include <compat/ina90.h> #define F_CPU 7372800 #define BAUDRATE 115200 #define RXBUFFER_SIZE_MAX 55 #define TXBUFFER_SIZE_MAX 150 #define INQUIRY_SIZE_MAX 50 #define NUM_DISPOSITIVOS 5 #define INQUIRY 0 #define ESPERA 1 #define PROCESAR 2 #define RESPUESTA_OK 3 #define TRAMA 4 #define RESTAURAR 5 #define IDLE 6 #define ERROR 7 #define PROCESAR_TRAMA_DATOS 8 #define PROCESAR_TRAMA_CONTROL 9 #define CIERRE 11 #define ESPERA_FIN 12 #define ESPERA_CIERRE 13 #define ESPERA_INQUIRY 15 typedef unsigned char uint8; typedef unsigned int uint16; void ioinit(void); void wt12_init(void); void USART_flush(void); void USART_init(unsigned int baud); void USART_transmit(char data); void timer1Init(void); void EEPROM_write(unsigned int uiAddress, unsigned int data); unsigned char EEPROM_read(unsigned int uiAddress); void delay_ms(double ms); void delay_us(double us); void delay_loop_2(unsigned int count); void delay_loop_1(unsigned int count); void tx_cad(const char *cad); void transmite_cmd(const char *cad, uint8 link); void iniciar_cadena(char *cad,uint8 tam); /****************************/ /* Variables globales */ /****************************/ char TXbuffer[TXBUFFER_SIZE_MAX]; char RXbuffer[RXBUFFER_SIZE_MAX]; uint8 RXbuffer_indice; uint8 estado; static volatile uint8 salir; static volatile uint8 salir_inquiry; static volatile uint8 q; uint8 fin; uint8 fin_cierre; static volatile uint8 num_disp; char inquiry_partial[NUM_DISPOSITIVOS][INQUIRY_SIZE_MAX]; char direccion_bt[NUM_DISPOSITIVOS][18];
143
char rssi[NUM_DISPOSITIVOS][4]; char resp[2]; char trama[50]; const char cmd0[]={"SET CONTROL MUX 1\n"}; //0 const char cmd1[]={"SET BT LAP 9e8b05"}; //1 const char cmd2[]={"SET BT PAGEMODE 3 1000 0"}; //2 const char cmd3[]={"SET BT POWER 3 3 3"}; //3 const char cmd4[]={"SET CONTROL CONFIG 0 001F"}; //4 const char cmd5[]={"SET CONTROL ECHO 4"}; //5 const char cmd6[]={"RESET"}; //6 const char answer0[]={"OK\r"}; const char answer1[]={"INQUIRY 5"}; const char answer2[]={"CIERRE\r"}; uint8 desp_control; uint8 desp_datos; uint8 salir_reposo; /****************************/ /* Funcion principal */ /****************************/ int main(void) { uint8 bit=0; uint8 k=0; uint8 contador=0; cli(); ioinit(); delay_ms(100); sei(); while(1) { /*transmite_cmd(cmd[1],0xFF); delay_ms(5000);*/ /*PORTB=(1<<PB0); delay_ms(1000); PORTB=(0<<PB0); delay_ms(1000);*/ switch(estado) { case RESTAURAR: for(contador=0;contador<NUM_DISPOSITIVOS;contador++) { iniciar_cadena(inquiry_partial[contador],INQUIRY_SIZE_MAX); iniciar_cadena(direccion_bt[contador],18); iniciar_cadena(rssi[contador],4); } iniciar_cadena(TXbuffer,TXBUFFER_SIZE_MAX); iniciar_cadena(RXbuffer,RXBUFFER_SIZE_MAX); RXbuffer_indice=0; salir=0; fin=0; num_disp=0; desp_control=0; desp_datos=0; salir_reposo=0; salir_inquiry=0; q=0; num_disp=0; estado=IDLE;
144
break; case IDLE: while(salir_reposo==0 && estado==IDLE) { delay_ms(1000); transmite_cmd(cmd2,0xFF); }; salir_reposo=0; break; case RESPUESTA_OK: delay_ms(200); transmite_cmd(answer0,0x00); estado=INQUIRY; break; case INQUIRY: delay_ms(200); transmite_cmd(answer1,0xFF);//INQUIRY 3 delay_ms(200); estado=ESPERA; break; case ESPERA: while(salir==0); salir=0; estado=ESPERA_INQUIRY; break; case ESPERA_INQUIRY: while(salir_inquiry==0&&q!=num_disp); salir_inquiry=0; estado=PROCESAR; break; case PROCESAR: for(contador=0;contador<(num_disp);contador++) { bit=16; k=0; while(bit<33) direccion_bt[contador][k++]=inquiry_partial[contador][bit++]; direccion_bt[contador][k]=0x00; bit=44; k=0; while(bit<47) rssi[contador][k++]=inquiry_partial[contador][bit++]; rssi[contador][k]=0x00; } switch(num_disp) { case 0: resp[0]='0'; resp[1]=0x00; break; case 1: resp[0]='1'; resp[1]=0x00; break; case 2: resp[0]='2'; resp[1]=0x00; break; case 3: resp[0]='3'; resp[1]=0x00; break;
145
case 4: resp[0]='4'; resp[1]=0x00; break; case 5: resp[0]='5'; resp[1]=0x00; break; default: break; } estado=TRAMA; break; case TRAMA://f PORTB=(1<<PB0); strcpy(TXbuffer,"RSSI "); strcat(TXbuffer,resp); strcat(TXbuffer," "); contador=0; for(contador=0;contador<num_disp;contador++) { strcat(TXbuffer,direccion_bt[contador]); strcat(TXbuffer," "); strcat(TXbuffer,rssi[contador]); strcat(TXbuffer," "); } strcat(TXbuffer,"\r"); transmite_cmd(TXbuffer,0x00); PORTB=(0<<PB0); estado=ESPERA_FIN; break; case ESPERA_FIN: while(fin==0) { delay_ms(100); }; fin=0; estado=CIERRE; break; case CIERRE: delay_ms(100); transmite_cmd(answer2,0x00); estado=ESPERA_CIERRE; break; case ESPERA_CIERRE: while(fin_cierre==0) { delay_ms(100); }; fin_cierre=0; estado=RESTAURAR; break; default: break; } } return 0; } /****************************/ /* INTERRUPCIONES */
146
/****************************/ ISR(USART_RXC_vect) { uint8 j; uint8 i; cli(); RXbuffer[RXbuffer_indice]=UDR; if(RXbuffer[1]==0xFF&&((RXbuffer[RXbuffer_indice]^RXbuffer[1])==0xFF)&&RXbuffer_indice!=2) { RXbuffer_indice=0; desp_control=RXbuffer[3]; j=0; while(j<desp_control) { trama[j]=RXbuffer[4+j]; j++; } trama[j]=0x00; if(strstr(trama,"INQUIRY_PARTIAL")!=NULL) { strcpy(inquiry_partial[num_disp],trama); num_disp++; estado=ESPERA; } else { if(strstr(trama,"INQUIRY 00:")!=NULL) { q++; estado=ESPERA_INQUIRY; } else { if(strstr(trama,"INQUIRY ")!=NULL) { salir=1; estado=ESPERA; } else { if((strstr(trama,"NO CARRIER 0 ERROR 0")!=NULL)) { fin_cierre=1; estado=ESPERA_CIERRE; } } } } } else { if(RXbuffer[1]==0x00&&((RXbuffer[RXbuffer_indice]^RXbuffer[1])==0xFF)&&RXbuffer_indice!=2) { RXbuffer_indice=0; desp_datos=RXbuffer[3]; i=0; while(i<desp_datos) { trama[i]=RXbuffer[4+i]; i++;
147
} trama[i]=0x00; if(strstr(trama,"START")!=NULL) { salir_reposo=1; estado=RESPUESTA_OK; } else { if(strstr(trama,"OK")!=NULL) { fin=1; estado=ESPERA_FIN; } else { if(strstr(trama,"REPETIR")!=NULL) { estado=TRAMA; } } } } else RXbuffer_indice++; } sei(); } /****************************/ /* Inicialización */ /****************************/ /****************************/ /* Puertos */ /****************************/ void ioinit(void) { DDRB = (1<<PB1)|(1<<PB0); PORTB = (0<<PB1)|(0<<PB0); DDRD = (1<<PD6); PORTD = (1<<PD6); USART_init((unsigned int)((F_CPU/16)/BAUDRATE-1)); // ocillator fq/(16*baud) rate -1 or f_cpu/16/BAUDRATE-1 delay_ms(100); USART_flush(); delay_ms(100); wt12_init(); estado=RESTAURAR; } /****************************/ /* Bluegiga */ /****************************/ void wt12_init(void) { delay_ms(200); tx_cad(cmd0); delay_ms(200); transmite_cmd(cmd1,0xFF); delay_ms(200); transmite_cmd(cmd2,0xFF); delay_ms(200); transmite_cmd(cmd3,0xFF);
148
delay_ms(200); transmite_cmd(cmd4,0xFF); delay_ms(200); transmite_cmd(cmd5,0xFF); delay_ms(200); // transmite_cmd("SET",0xFF); // delay_ms(2000); } void iniciar_cadena(char *cad,uint8 tam) { uint8 byte=0; while(byte<tam) { cad[byte++]=0x00; } } /****************************/ /* Funciones de la USART */ /****************************/ void USART_flush( void ) { uint8 dummy; while ( UCSRA & (1<<RXC) ) dummy = UDR; } void USART_init(unsigned int baud) { UBRRH = 0x02; //Formato de comunicaciones: 8-N-1 UCSRC = (0<<URSEL)|(0<<USBS)|(1<<UCSZ1)|(1<<UCSZ0); //Configuración del baudrate UBRRH = (uint8) baud>>8; UBRRL = (uint8) baud; //Habilitar Recepcion y Transimision UCSRB = (1<<RXEN)|(1<<TXEN)|(1<<RXCIE); } void USART_transmit(char data) { if(data=='\n') { USART_transmit(0x0D); } //Esperar a que el buffer de transmision este vacio while (((UCSRA)&(1<<UDRE))==0); //Transmision del dato UDR=data; } void tx_cad(const char *cad) { uint8 pos=0; while(cad[pos]!=0x00) USART_transmit(cad[pos++]); } void transmite_cmd(const char *cad,uint8 link) { char outbuf[150]={0};
149
// uint8 *outbuf=NULL; uint8 pos=0; uint8 len=strlen(cad); uint8 m=0; outbuf[pos++]=0xBF; outbuf[pos++]=link; outbuf[pos++]=0x00; outbuf[pos++]=len; memmove(outbuf+pos,cad,len); pos+=len; outbuf[pos++]=link^0xFF; while(m<pos) USART_transmit(outbuf[m++]); } /****************************/ /* DELAY */ /****************************/ void delay_loop_1(unsigned int count) /* time delay for us */ { __asm__ volatile ( "1: dec %0" "\n\t" "brne 1b" : "=r" (count) : "0" (count) ); } void delay_loop_2(unsigned int count) { __asm__ volatile ( "1: sbiw %0,1" "\n\t" "brne 1b" : "=w" (count) : "0" (count) ); } void delay_us(double us) { unsigned char ticks; double tmp = ((F_CPU) / 3e6) * us; if ( tmp < 1.0 ) ticks = 1; else if ( tmp > 255) { delay_ms( us / 1000.0); return; } else ticks = (uint8)tmp; delay_loop_1( ticks ); } void delay_ms(double ms) { unsigned int ticks; double tmp = ((F_CPU) / 4e3) * ms;
150
if ( tmp < 1.0 ) ticks = 1; else if ( tmp > 65535 ) { // __ticks = requested delay in 1/10 ms ticks = (unsigned int) ( ms * 10.0); while( ticks ) { // wait 1/10 ms delay_loop_2(((F_CPU) / 4e3) / 10); ticks --; } return; } else ticks = (unsigned int)tmp; delay_loop_2(ticks); }
151
Apéndice C.
Código fuente
de la aplicación principal.
152
#include <stdio.h> #include <stdlib.h> #include <string.h> #include <unistd.h> #include <errno.h> #include <syslog.h> #include <sys/socket.h> #include <sys/stat.h> #include <sys/types.h> #include <bluetooth/bluetooth.h> #include <bluetooth/hci.h> #include <bluetooth/hci_lib.h> #include <bluetooth/rfcomm.h> #include <bluetooth/sdp.h> #include <bluetooth/sdp_lib.h> #define ERROR_LECTURA -1 #define BDADDR_DONGLE "00:02:5B:0A:6E:52" typedef struct param { int dev_id; int dd; char bt_address[19]; uint8_t *lap; uint8_t len_inq; uint8_t max_rsp; uint8_t tipo_inq; uint8_t modo_inq; uint8_t flags; }PARAM; void change_iac(int dd,uint8_t lap[3],uint8_t tipo_inquiry,uint8_t modo_inquiry); void init(PARAM *arg, int dev_id, int dd); int leer_cmd(int s, char *buffer); int main(int argc,char *argv[]) { int dev_id, dd; PARAM parametros; char bd_address[18]={0}; char buffer[128]={0}; char buffer_fichero[128]={0}; int sock[5]; int num_rsp=0; int i=0; int contador=0; int estado=0; int bytes_write=0; int salir_lectura=0; FILE *fd=NULL; char *cmd[]={"START\r\n","OK\r\n","REPITE\r\n"}; char *nodos[]={"00:07:80:90:C8:1E","00:07:80:93:9A:FF","00:07:80:93:9A:FE","00:07:80:90:C8:1A"}; inquiry_info *ii=NULL; struct sockaddr_rc addr; if(argc!=2) { printf("USO: server + nombre_fichero\n"); exit(0); }
153
dev_id=hci_devid(BDADDR_DONGLE); dd=hci_open_dev(dev_id); if(dev_id < 0 || dd < 0){ printf("Error: no se ha podido abrir el dispositivo\n"); exit(1); } init(¶metros,dev_id,dd); change_iac(dd,parametros.lap,parametros.tipo_inq,parametros.modo_inq); while(1){ ii = (inquiry_info*)malloc(parametros.max_rsp * sizeof(inquiry_info)); #ifdef _DEBUG_ printf("Dev_id:0x%2.2x Length:0x%2.2x Max_rsp:0x%2.2x Lap:0x%2.2x%2.2x%2.2x\n",parametros.dev_id,parametros.len_inq,parametros.max_rsp,parametros.lap[2],parametros.lap[1],parametros.lap[0]); #endif num_rsp = hci_inquiry(parametros.dev_id, parametros.len_inq, parametros.max_rsp, parametros.lap, &ii, parametros.flags); if( num_rsp < 0 ){ printf("Error: no hay dispositivos encontrados\n"); //exit(0); } #ifdef _DEBUG_ for(i=0;i<num_rsp;i++){ ba2str(&(ii+i)->bdaddr,bd_address); printf("[%d]\t%s %d %d %d %d %d %d %d\n",i+1,bd_address,(ii+i)->pscan_rep_mode,(ii+i)->pscan_period_mode,(ii+i)->pscan_mode,(ii+i)->dev_class[0],(ii+i)->dev_class[1],(ii+i)->dev_class[2],(ii+i)->clock_offset); memset(bd_address,0,sizeof(bd_address)); } #endif for(i=0;i<num_rsp;i++){ sock[i] = socket(AF_BLUETOOTH, SOCK_STREAM, BTPROTO_RFCOMM); addr.rc_family = AF_BLUETOOTH; addr.rc_channel = (uint8_t) 1; addr.rc_bdaddr=(ii+i)->bdaddr; estado = connect(sock[i], (struct sockaddr *)&addr, sizeof(addr)); if(estado<0 || estado>0){ perror("Error: No se ha podido establecer conexion\n"); close(sock[i]); } else{ bytes_write=write(sock[i],cmd[0],strlen(cmd[0])); if(bytes_write<0){ while(bytes_write<0&&contador<3){ bytes_write=write(sock[i],cmd[0],sizeof(cmd[0])); contador++; } contador=0; salir_lectura=1; printf("Error: No se ha podido enviar %s\n",cmd[0]); } while(salir_lectura!=1){ printf("Lectura OK:\n"); if(leer_cmd(sock[i],buffer)<0) salir_lectura=1; else{ if(strstr(buffer,"OK")!=NULL){ printf("Lectura RSSI:\n"); memset(buffer,0,sizeof(buffer)); if(leer_cmd(sock[i],buffer)<0)
154
salir_lectura=1; else{ if(strstr(buffer,"RSSI")!=NULL){ fd=fopen(argv[1],"a+b"); if(fd==NULL){ printf("Error al abrir el fichero solicitado\n"); exit(1); } ba2str(&addr.rc_bdaddr,buffer_fichero); strcat(buffer_fichero," "); strcat(buffer_fichero,buffer); strcat(buffer_fichero,"\n"); fwrite(buffer_fichero,sizeof(char),strlen(buffer_fichero),fd); memset(buffer_fichero,0,sizeof(buffer_fichero)); memset(buffer,0,sizeof(buffer)); fclose(fd); bytes_write=write(sock[i],cmd[1],strlen(cmd[1])); if(bytes_write<0){ printf("Error: no se ha podido enviar %s",cmd[1]); close(sock[i]); salir_lectura=1; } else{ printf("Lectura CIERRE:\n"); if(leer_cmd(sock[i],buffer)<0) salir_lectura=1; else{ printf("Cierre\n"); if(strstr(buffer,"CIERRE")!=NULL){ memset(buffer,0,sizeof(buffer)); close(sock[i]); salir_lectura=1; } else memset(buffer,0,sizeof(buffer)); } } } } } } } salir_lectura=0; } } printf("Liberando memoria\n"); bt_free(ii);
155
} return 0; } /*! \fn int leer_cmd(int s, char *buffer) * \brief Función que permite leer datos del módulo Bluegiga WT-12 * \param int s: paso por valor del descriptor de ficheros asociado con el socket RFCOMM que soporta la comunicación Bluetooth. * \param char *buffer: paso por referencia de una cadena de caracteres donde se procederá a escribir el comando enviado por * el nodo de localización. */ int leer_cmd(int s, char *buffer) { int error=0; int salir=0; int bytes_read=0; int i=0; char caracter=0x00; while(salir!=1){ bytes_read=recv(s,&caracter,sizeof(caracter),0); if(bytes_read<0){ perror("Error: no se ha podido efectuar la operacion de lectura\n"); salir=1; error=ERROR_LECTURA; } else{ buffer[i++]=caracter; if(buffer[i-1]=='\r'){ buffer[i-1]='\0'; salir=1; #ifdef _DEBUG_ printf("Cadena recibida [%s]\n",buffer); #endif } } } return error; } void init(PARAM *arg, int dev_id, int dd) { arg->dev_id=dev_id; arg->dd=dd; arg->lap=(uint8_t *)malloc(3*sizeof(uint8_t)); arg->lap[0]=0x05; arg->lap[1]=0x8b; arg->lap[2]=0x9e; arg->len_inq=0x05; arg->max_rsp=255; arg->tipo_inq=0x01; arg->modo_inq=0x01; arg->flags=IREQ_CACHE_FLUSH; } void change_iac(int dd,uint8_t lap[3],uint8_t tipo_inquiry,uint8_t modo_inquiry) { int iac_liac; uint8_t iac,type,mode; uint8_t lap_check[3];
156
#ifdef _DEBUG_ iac_liac = hci_read_current_iac_lap(dd, &iac, lap_check, 1000); hci_read_inquiry_mode(dd,&mode,1000); hci_read_inquiry_scan_type(dd, &type,1000); printf("iac = 0x%2.2x\n",iac); printf("lap = 0x%2.2x%2.2x%2.2x\n",lap_check[2],lap_check[1],lap_check[0]); printf("Inquiry:\n\tTipo:\t0x%2.2x\n\tModo:\t0x%2.2x\n",type,mode); #endif iac=0x01; iac_liac = hci_write_current_iac_lap(dd, iac, lap, 1000); if(iac_liac<0) { printf("Error al modificar el valor del iac\n"); exit(1); } if(hci_write_inquiry_scan_type(dd, tipo_inquiry,1000)<0) { printf("Error: no se ha podido escribir el tipo de inquiry\n"); exit(1); } if(hci_write_inquiry_mode(dd, modo_inquiry,1000)<0) { printf("Error: no se ha podido escribir el modo de inquiry\n"); exit(1); } #ifdef _DEBUG_ iac_liac = hci_read_current_iac_lap(dd, &iac, lap_check, 1000); hci_read_inquiry_mode(dd,&mode,1000); hci_read_inquiry_scan_type(dd, &type,1000); printf("iac = 0x%2.2x\n",iac); printf("lap = 0x%2.2x%2.2x%2.2x\n",lap_check[2],lap_check[1],lap_check[0]); printf("Inquiry:\n\tTipo:\t0x%2.2x\n\tModo:\t0x%2.2x\n",type,mode); #endif }