desarrollo de una pasarela zigbee/802.15.4

Anuncio
!∀#∃%%&∋%∋()∀∗∋∋!∋#+, %#∀#∃%
∋ %∗+∋!(− %∀!∋.∀,%∀∗+(∋%∋!∗)∀∗∋!∀/∋#0∀#+%1 ∗+2+(
344444444444444444444444444444444444444444444444444444444444444
344444444444444444444444444444444444444444444444444444444444444
344444444444444444444444444444444444444444444444444444444444444
2∀(∀5 6&∀(∋!(+7∋#+%∗∋∀((∋(∀ !∀∗+
∗∋!∀! ,%+3∀8∗∋(%9%∗∋6)∋6
∗(&∗+2+(3∗ ∀(∗+∀1!∀(:(∋6
4444444444444444
44444444444444444444444444444444444444444444444444444444444444
72∀(∀; ∋#+%1∋1∋∋.∋%∗∋/(,∀∗∀2+(!+1#+,2+%∋%∋1∗∋!(− %∀!!∀2(∋1∋%∋
∗!&∋%#∀3
9!∀&∀∀4444∗∋44444444444444∗∋
!<∀(∋1∗∋%∋<∀
!<∀∋#(∋∀(+<∀
∗+3444444444444444
∗+3444444444444444
!<∀+#∀!
∗+3444444444444444
∀8∗∋(%9%∗∋6)∋6
∗ ∀(∗+∀1!∀(:(∋6
∋#%+!+&)∀!∋#(∃%#∀3
%&∋%∋()∀∗∋∋!∋#+, %#∀#∃%
=2∀1∀(∋!∀&=∋∋>?≅≅>≅Α
%∋1∋2(+7∋#+1∋(∋∀!6∀ %∋1 ∗+∗∋!∀1#∀(∀#∋()1#∀1∗∋!
#+%5 %+∗∋1+! #+%∋1∋1∀%∗∀(6∀∗∀1&=∋∋<>3?3≅71∋∗∋1∀((+!!∀ %∀
2∀1∀(∋!∀; ∋2+1−!∀!∀(∀%1/∋(∋%#∀∗∋∗∀+1∗∋1∗∋!∀(∋∗#+,2 ∋1∀2+(!+1
1∋%1+(∋1&=∋∋<>3?3≅0∀1∀ %∀1∋(∋∗∋∗(∋##+%∋1∋12∋#/#∀∗∀12+(∋!
1 ∀(+3
9!∀&∀%∋(+∗∋
!∀#∀ ∃%&∋
Acrónimos
AES Advanced Encryption Standard
ANSI American National Standards Institute
ASCII American Standard Code for Information Interchange
ASH A Shell
API Application Programming Interface
APS Application Support Sub-layer
CCA Clear Channel Assessment
CGI Common Gateway Interface
CSMA-CA Carrier Sense Multiple Access-Collision Avoidance
DIN Deutsches Institut für Normung
DSSS Direct Sequence Spread Spectrum
ED Energy Detection
FCS Frame Check Sequence
GPL General Public License
HTML HyperText Markup Language
IEEE Institute of Electrical and Electronics Engineers
i
ii
IP
Internet Protocol
ISM
Industrial, Scientic and Medical
ISO
International Organization for Standardization
Joint Test Action Group
JTAG
Link Quality Indication
LQI
LR-WPAN
Low Rate Wireless Personal Area Network
MAC
Medium Access Control
MIPS
Microprocessor without Interlocked Pipeline Stages
MCU
MicroController Unit
Open Systems Interconnection
OSI
SAP
Service Access Point
SCP
Secure Copy Protocol
SSH File Transfer Protocol
SFTP
Start Of Frame
SOF
SPI
Serial Peripheral Interface
SSH
Secure SHell
SSP
Secure Services Provider
PAN
Personal Area Network
PPDU
RISC
Reduced Instruction Set Computer
UART
UDP
Physical layer conversion Protocol Data Unit
Universal Asynchronous Receiver-Transmitter
User Datagram Protocol
iii
URL
Uniform Resource Locator
USB
Universal Serial Bus
W3C
World Wide Web Consortium
WAN
Wide Area Network
WHATWG
Web Hypertext Application Technology Working Group
WLAN
Wireless Local Area Network
WPAN
Wireless Personal Area Network
ZASA
ZDO
ZigBee Accelerator Sample Application
ZigBee Device Object
iv
Índice general
1. Introducción
1.1.
1.2.
1.3.
1.4.
1.5.
1
Ubicación tecnológica . . . . . . . . . . . . . . . . . . . . . . .
Tecnologías inalámbricas de corto alcance: ZigBee o Bluetooth
El papel de ZigBee/802.15.4 en el futuro de las comunicaciones
Motivación y objetivos del proyecto . . . . . . . . . . . . . . .
Estructura del documento . . . . . . . . . . . . . . . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
2. ZigBee/802.15.4
1
2
5
6
6
9
2.1. Introducción . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2.1.1. Evolución de las redes inalámbricas de área personal . . . .
2.1.2. IEEE 802.15.4 y ZigBee . . . . . . . . . . . . . . . . . . . .
2.1.3. Certicación de un dispositivo ZigBee . . . . . . . . . . . . .
2.1.4. Arquitectura de ZigBee . . . . . . . . . . . . . . . . . . . . .
2.1.5. Versiones de ZigBee . . . . . . . . . . . . . . . . . . . . . . .
2.1.6. Empaquetamiento, direccionamiento y acceso al canal . . . .
2.2. IEEE 802.15.4 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2.2.1. Tipos de dispositivos . . . . . . . . . . . . . . . . . . . . . .
2.2.2. Topología de red . . . . . . . . . . . . . . . . . . . . . . . .
2.2.3. Capa física IEEE 802.15.4 . . . . . . . . . . . . . . . . . . .
2.2.3.1. Detección de energía recibida (ED) . . . . . . . . .
2.2.3.2. Indicador de calidad de enlace (LQI) . . . . . . . .
2.2.3.3. Evaluación de canal libre (CCA) . . . . . . . . . .
2.2.3.4. Formato de PPDU . . . . . . . . . . . . . . . . . .
2.2.3.5. Características que reducen el consumo energético
capa física . . . . . . . . . . . . . . . . . . . . . . .
v
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
en
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
la
. .
9
9
10
12
12
14
15
18
19
20
24
25
25
26
26
26
ÍNDICE GENERAL
vi
2.2.4. Capa MAC IEEE 802.15.4 . . . . . . . . . . . . . . . . . . .
2.2.4.1. Estructura de supertrama (Modo balizado) . . . .
2.2.4.2. Modelo de transferencia de datos . . . . . . . . . .
2.2.4.3. Inicialización y mantenimiento de una PAN . . . .
2.2.4.4. Unión a una red ZigBee . . . . . . . . . . . . . . .
2.2.4.5. Sincronización . . . . . . . . . . . . . . . . . . . .
2.2.4.6. Formato de la trama MAC . . . . . . . . . . . . .
2.2.4.7. Características que reducen el consumo energético
capa MAC . . . . . . . . . . . . . . . . . . . . . .
2.3. ZigBee Alliance . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2.3.1. Capa de Red ZigBee . . . . . . . . . . . . . . . . . . . . . .
2.3.1.1. Reincorporación a la red . . . . . . . . . . . . . . .
2.3.1.2. Enrutamiento ZigBee . . . . . . . . . . . . . . . . .
2.3.1.3. Características que reducen el consumo energético
capa de red . . . . . . . . . . . . . . . . . . . . . .
2.3.2. Capa de Aplicación ZigBee . . . . . . . . . . . . . . . . . . .
2.3.2.1. Perles de aplicación, grupos y endpoints . . . . .
2.4. Seguridad en ZigBee . . . . . . . . . . . . . . . . . . . . . . . . . .
. .
. .
. .
. .
. .
. .
. .
en
. .
. .
. .
. .
. .
en
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
la
. .
. .
. .
. .
. .
la
. .
. .
. .
. .
3. Componentes y tecnologías utilizadas
3.1. Elementos hardware . . . . . . . . . . . . . . . . . . . . . . . . .
3.1.1. Equipo de desarrollo eZ430-RF2480 de Texas Instruments
3.1.2. Conversor TTL-232R-3V3 de FTDI . . . . . . . . . . . . .
3.1.3. Router ASUS WL-500G Premium . . . . . . . . . . . . . .
3.2. Elementos software . . . . . . . . . . . . . . . . . . . . . . . . . .
3.2.1. Herramientas . . . . . . . . . . . . . . . . . . . . . . . . .
3.2.1.1. DD-WRT . . . . . . . . . . . . . . . . . . . . . .
3.2.1.2. Entorno de desarrollo Eclipse . . . . . . . . . . .
3.2.1.3. MSP430 IAR Embedded Workbench . . . . . . .
3.2.1.4. WinSCP . . . . . . . . . . . . . . . . . . . . . . .
3.2.1.5. Putty . . . . . . . . . . . . . . . . . . . . . . . .
3.2.1.6. XVI32 . . . . . . . . . . . . . . . . . . . . . . . .
3.2.2. Programación . . . . . . . . . . . . . . . . . . . . . . . . .
27
28
29
30
31
31
32
32
33
33
33
34
36
36
37
38
41
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
41
41
46
48
51
51
51
55
56
58
59
60
61
ÍNDICE GENERAL
vii
3.2.2.1. C++ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3.2.2.2. CGI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3.2.2.3. HTML . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
4. Desarrollo del sistema
69
4.1. Descripción de objetivos . . . . . . . . . . . . . . . . .
4.1.1. Requisitos del sistema . . . . . . . . . . . . . .
4.2. Conectividad entre dispositivos . . . . . . . . . . . . .
4.3. Desarrollo de la aplicación pasarela . . . . . . . . . . .
4.3.1. Funciones que componen la aplicación pasarela .
4.3.2. Diagramas de ujo . . . . . . . . . . . . . . . .
4.4. Desarrollo de la interfaz . . . . . . . . . . . . . . . . .
4.4.1. Interacción a traves de la interfaz web . . . . .
4.4.2. Interacción a través de comandos . . . . . . . .
4.5. Conguración inicial automatizada . . . . . . . . . . .
4.6. Integración en el sistema operativo DD-WRT . . . . .
4.6.1. Extracción del rmware DD-WRT . . . . . . . .
4.6.2. Modicación del rmware DD-WRT . . . . . .
4.6.3. Reconstrucción del rmware DD-WRT . . . . .
4.7. Aplicación cargada en los sensores ZigBee/802.15.4 . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
5. Fase de pruebas
5.1. Descripción del entorno de pruebas
5.2. Procesos de vericación . . . . . . .
5.2.1. Pruebas unitarias . . . . . .
5.2.2. Pruebas de integración . . .
5.2.3. Pruebas de sistema . . . . .
61
63
67
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
69
69
71
74
74
80
82
83
84
85
86
87
88
89
90
93
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
6. Conclusiones y líneas futuras de trabajo
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
. 93
. 94
. 94
. 100
. 101
103
6.1. Conclusiones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103
6.2. Líneas futuras de trabajo . . . . . . . . . . . . . . . . . . . . . . . . . . . . 104
A. Manual de usuario
107
A.1. Instalación del sistema operativo en el router . . . . . . . . . . . . . . . . . 107
ÍNDICE GENERAL
viii
A.1.1. Actualización desde otra versión de DD-WRT
A.1.2. Instalación en otros casos . . . . . . . . . . .
A.2. Conguración inicial . . . . . . . . . . . . . . . . . .
A.3. Manejo de la interfaz . . . . . . . . . . . . . . . . . .
Bibliografía
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
107
107
107
107
109
Índice de guras
1.1.
Ámbitos de aplicación de distintas tecnologías [30] . . . . . . . . . . . . . .
2.1.
Logotipo ZigBee [21]
2.2.
Arquitectura de la pila ZigBee/802.15.4 [20]
. . . . . . . . . . . . . . . . .
13
2.3.
Tramas y empaquetamiento ZigBee [30] . . . . . . . . . . . . . . . . . . . .
15
2.4.
Topología en estrella [8]
. . . . . . . . . . . . . . . . . . . . . . . . . . . .
21
2.5.
Topología en árbol o jerárquica [8] . . . . . . . . . . . . . . . . . . . . . . .
22
2.6.
Topología en árbol agrupado [8] . . . . . . . . . . . . . . . . . . . . . . . .
22
2.7.
Topología Mallada [8] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
23
2.8.
Canales IEEE 802.15.4 [20] . . . . . . . . . . . . . . . . . . . . . . . . . . .
25
2.9.
Estructura supertrama [11] . . . . . . . . . . . . . . . . . . . . . . . . . . .
28
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2.10. Descubrimiento de ruta [20]
3
12
. . . . . . . . . . . . . . . . . . . . . . . . . .
34
2.11. Encaminamiento jeráquico [20] . . . . . . . . . . . . . . . . . . . . . . . . .
35
3.1.
Contenido eZ430-RF2480 . . . . . . . . . . . . . . . . . . . . . . . . . . . .
42
3.2.
Conexión CC2480-MSP430 . . . . . . . . . . . . . . . . . . . . . . . . . . .
43
3.3.
Distribución de protocolos CC2480-MSP430 [26] . . . . . . . . . . . . . . .
44
3.4.
Formato de trama intercambiada entre CC2480 y MSP430
. . . . . . . . .
44
3.5.
Campo de Comando
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
45
3.6.
FTDI TTL-232R-3V3 [18]
. . . . . . . . . . . . . . . . . . . . . . . . . . .
47
3.7.
Asus WL 500G Frontal . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
49
3.8.
Asus WL 500G Trasera . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
49
3.9.
ASUS WL-500G Premium Interior
. . . . . . . . . . . . . . . . . . . . . .
50
. . . . . . . . . . . . . . . . . . . . . . . . . . . .
54
3.11. Eclipse: Pantalla Principal . . . . . . . . . . . . . . . . . . . . . . . . . . .
55
3.10. DD-WRT: Interfaz Web
ix
ÍNDICE DE FIGURAS
x
3.12. MSP430 IAR Embedded Workbench: Estructura [24]
. . . . . . . . . . . .
58
3.13. Putty: Pantalla Principal . . . . . . . . . . . . . . . . . . . . . . . . . . . .
60
3.14. XVI32: Ejemplo de cambio de formato
61
. . . . . . . . . . . . . . . . . . . .
3.15. Lenguages de Programación: Distribución de uso [29]
. . . . . . . . . . . .
63
4.1.
FTDI TTL-232R-3V3: Pin out [18]
. . . . . . . . . . . . . . . . . . . . . .
72
4.2.
Esquemático de conexión entre MSP430 y CC2480 . . . . . . . . . . . . . .
73
4.3.
Pasarela: Diagrama de Flujo . . . . . . . . . . . . . . . . . . . . . . . . . .
80
4.4.
Lectura y envío: Diagrama de Flujo . . . . . . . . . . . . . . . . . . . . . .
81
Índice de tablas
1.1.
Comparativa de tecnologías inalámbricas [17] . . . . . . . . . . . . . . . . .
4
2.1.
ZigBee 2006 y PRO: Características destacadas [20] . . . . . . . . . . . . .
16
3.1.
Características Asus WL-500G Premium [2]
. . . . . . . . . . . . . . . . .
48
3.2.
DD-WRT: Utilidades principales [1] . . . . . . . . . . . . . . . . . . . . . .
53
4.1.
Interconexión entre conversor y sensor
72
xi
. . . . . . . . . . . . . . . . . . . .
xii
ÍNDICE DE TABLAS
Capítulo 1
Introducción
1.1.
Ubicación tecnológica
Los consumidores descubren día a día que la interconexión de sistemas empotrados
permite un mayor y más exible control sobre su entorno personal y profesional. Esto
tiene como resultado que se esté produciendo una mayor demanda de estos dispositivos.
Las comunicaciones entre distintos tipos de dispositivos comunes en la vida diaria
como cámaras, teléfonos móviles y un largo etcétera son ya una realidad. Por todo ello,
el próximo requisito en estos dispositivos será la posibilidad de comunicarse con objetos
que hasta ahora no poseían esas capacidades de comunicación, como electrodomésticos o
automóviles. Tanto ZigBee, basado en el estándar 802.15.4 del IEEE (Institute of Electrical
and Electronics Engineers ), como Bluetooth, basado en el estándar 802.15.1 del IEEE,
dan respuesta a ésto. Cada estándar IEEE dene una capa física y una pila de protocolos
distinta, operando ambos dentro de la banda ISM (Industrial, Scientic and Medical ).
A pesar de sus similitudes, ZigBee y Bluetooth no son intercambiables como soluciones
tecnológicas y para decidir cual de los dos se ha de elegir, deben tenerse claras las ventajes
y desventajas de cada uno de ellos.
1
2
1.2.
CAPÍTULO 1.
INTRODUCCIÓN
Tecnologías inalámbricas de corto alcance: ZigBee
o Bluetooth
Bluetooth sobrepasa a ZigBee en velocidad de transferencia, posibilidades de interconexión, capacidad para evitar las interferencias en frecuencia y estandarización de perles
de aplicación. Bluetooth es ideal para transferencia de archivos e intercambio de datos, y
más adecuado para la comunicación de ordenadores con periféricos.
En resumen, se puede determinar que si la aplicación necesita de forma predominante
alguna de las siguientes características, se debe elegir un dispositivo Bluetooth:
Imprescindible si se necesita:
• Intercambio de datos en tiempo real (audio o vídeo streaming )
• Calidad de servicio garantizada
Opción más adecuada si se necesita:
• Identicación de compatibilidad entre dispositivos o disponibilidad de servicios
por parte de los sensores.
• Interoperabilidad garantizada entre dispositivos similares de distintos fabrican-
tes.
Por otro lado, ZigBee aventaja a Bluetooth en cuanto a duración de la batería de los
dispositivos y es más robusto en caso de fallos de sensores en la red. ZigBee es la mejor
alternativa para aplicaciones que necesiten la trasferencia de pequeños paquetes sin una
periodicidad denida a través de redes malladas.
En resumen, se puede determinar que si la aplicación necesita de forma predominante
alguna de las siguientes características, se debe elegir un dispositivo ZigBee:
Imprescindible si se necesita:
1.2. TECNOLOGÍAS INALÁMBRICAS DE CORTO ALCANCE: ZIGBEE O BLUETOOTH
• Capacidad para la interconexión simultánea de cientos de dispositivos.
• Enrutamiento multisalto de mensajes hacia un dispositivo localizado más allá
del rango de trasmisión directa del dispositivo transmisor.
Opción más adecuada si se necesita:
• Monitorización de múltiples dispositivos.
El mercado de ambos estándares está creciendo de forma signicativa en los últimos
años, presentando ambas opciones diferentes, pero en parte solapados, dominios de aplicación. A pesar de haberse descritos solo estas dos opciones, se deben mencionar otras
tecnologías que también pueden coincidir parcialmente en cuanto a su dominio de aplicación, tales como Ultra Wide Band, Wi-Fi1 o la red de telefonía móvil. En la gura 1.1
podemos ver reprentado dicho solape entre las tecnologías anteriormente mencionadas.
Figura 1.1: Ámbitos de aplicación de distintas tecnologías [30]
1 Aunque
se pensaba que el término viene de Wireless Fidelity como equivalente a Hi-Fi, High Fidelity,
que se usa en la grabación de sonido, realmente la Wireless Ethernet Compatibility Alliance contrató a
una empresa de publicidad para que le diera un nombre a su estándar, de tal manera que fuera fácil de
identicar y recordar.
3
4
CAPÍTULO 1.
INTRODUCCIÓN
Se muestra a continuación en la tabla 1.1 una comparación entre las tecnologías anteriomente mencionadas:
Estándar
ZigBee
Bluetooth
Ultra Wide
3.0
Band
802.15.4
802.15.1
802.15.3a
802.11a/b/g
Banda de
868/915 MHz;
2.4 GHz
3.1-10.6 GHz
2.4 GHz;5 GHz
Frecuencias
2.4 GHz
Tasa de
250 Kb/s
1 - 24 Mb/s
110 Mb/s
54 Mb/s
Alcance
70m
100m
10m
100m
Número de
1/10; 16
79
(1-15)
14
Ancho de Banda
0.3/0.6 MHz; 2
1 MHz
500MHz-7.5 GHz
22MHz
de Canal
MHz
Tipo de
BPSK
GFSK
BPSK, QPSK
BPSK, QPSK,
Modulación
(+ASK),
COFDM,
O-QPSK
CCK, M-QAM
Especificación
Wi-Fi
IEEE
Transferencia
Máxima
canales
Ensanchamiento
DSSS
FHSS
DS-UWB,
DSS, CCK, OFDM
MB-OFDM
Mecanismo de
Selección
Salto de
Salto de
Selección Dinámica de
Coexistencia
Dinámica de
Frecuencia
Frecuencia
Frecuencia
Frecuencia
Adaptativo
Adaptativo
Control de Potencia
Transmitida (802.11h)
Número Máximo
de sensores
> 65000
8
8
(para una
piconet )
Tabla 1.1: Comparativa de tecnologías inalámbricas [17]
5
1.3. EL PAPEL DE ZIGBEE/802.15.4 EN EL FUTURO DE LAS COMUNICACIONES
1.3.
El papel de ZigBee/802.15.4 en el futuro de las
comunicaciones
En los próximos años es muy probable que ZigBee vea incrementado su uso ya que
sus características se adaptan a los requerimientos necesarios para un amplio rango de
soluciones, destacándose las siguientes:
Automatización de tareas en el hogar
Aplicaciones para el ahorro de energía
Aplicaciones destinadas a las telecomunicaciones
Si se toma como referencia el tamaño de la pila de protocolos, el de ZigBee, en torno
a 32KB, es aproximadamente una tercera parte del tamaño de la pila de otros protocolos
de comunicaciones inalámbricos.
Además, para dispositivos nales, este tamaño puede verse reducido hasta los 4KB.
Esto redunda en un menor coste, tanto por la memoria necesaria para su almacenamiento
como por su mayor simplicidad de funcionamiento y, por lo tanto, el ahorro en otros
componentes hardware.
Igualmente, la sencillez antes mencionada posibilita un rápido desarrollo de aplicaciones y, por lo tanto, una mayor capacidad de adaptación al rápido cambio al que se ven
sometidos los productos tecnológicos.
Por todo lo anterior, junto a otras razones que se detallarán en sucesivos capítulos,
ZigBee/802.15.4 ha sido adoptado ya por multitud de empresas y se prevé que en los
próximos años pueda aprovecharse todo su potencial.
6
1.4.
CAPÍTULO 1.
INTRODUCCIÓN
Motivación y ob jetivos del proyecto
En el contexto de una sociedad en continuo movimiento y con capacidad de conexión
a internet allá donde se encuentre, la posibilidad de poder acceder a información o noticación de eventos concretos en ambientes personales (como puede ser el residencial)
se hace cada vez más útil, necesario e incluso demandado por los consumidores. Por ello,
considerando el tipo de información a noticar como de periodicidad no determinada y con
amplios intervalos de tiempo entre comunicaciones sucesivas, la elección de ZigBee para la
red de control se convierte en una elección acertada. Una vez decidido esto, y teniendo en
cuenta la exibilidad, expansión y cobertura de las redes basadas en IP (Internet Protocol )
en todo el mundo, la combinación de redes de sensores ZigBee con la red IP se vislumbra
como una solución de un gran atractivo con unas posibilidades interesantes.
Por ello, el objetivo de este proyecto es la creación de una pasarela entre una red
ZigBee/802.15.4 e IP, usando un router comercial a modo de ejemplo de aplicación. Se
elige como información a transmitir la temperatura en el lugar de colocación del sensor
ZigBee. La nalidad será conseguir que dicha información pueda llegar hasta una o varias
direcciones IP, congurables mediante una interfaz web.
1.5.
Estructura del documento
El documento que a continuación se presenta está dividido en siete capítulos, quedando
organizado como a continuación se detalla:
Capítulo 1: Introducción
Breve presentación de ZigBee/802.15.4 y comparativa con otras posibilidades para
las comunicaciones inalámbricas. Justicación de la utilidad de este Proyecto Fin de
Carrera
Capítulo 2: ZigBee/802.15.4
1.5.
ESTRUCTURA DEL DOCUMENTO
7
Descripción detallada de ZigBee/802.15.4 por ser considerado el estándar más novedoso y quizás desconocido de los que se usan para este Proyecto Fin de Carrera.
Capítulo 3: Componentes y tecnologías utilizadas
Recopilación de las herramientas hardware y software que se hicieron imprescindibles
para llevar a cabo este desarrollo.
Capítulo 4: Desarrollo del sistema
Detalle de las decisiones adoptadas y desarrolladas así como descripción de todos los
elementos que la integran.
Capítulo 5: Fase de pruebas
Descripción del proceso a través del cual se ha conseguido asegurar el correcto funcionamiento de la solución desarrollada.
Capítulo 6: Conclusiones y líneas futuras de traba jo
Presentación de las conclusiones obtenidas tras la elaboración de este Proyecto Fin
de Carrera, así de como posibles mejoras o líneas distintas de trabajo que pueden
seguirse tomando este desarrollo como punto de partida.
Capítulo 7: Manual de usuario
Breve guía que detalla los pasos a seguir para lograr el correcto funcionamiento de
la pasarela, partiendo de la instalación en el
router
y terminando en la puesta en
marcha y posterior recepción de paquetes de datos en un dispositivo remoto con
acceso a internet.
8
CAPÍTULO 1.
INTRODUCCIÓN
Capítulo 2
ZigBee/802.15.4
Como primer paso, y antes de entrar en la materia principal sobre la que versa este
Proyecto Fin de Carrera, se hará un breve recorrido a través del conjunto de soluciones
estandarizadas ZigBee/802.15.4 para poder entender tanto sus fundamentos básicos, como
las causas que lo han hecho tan prometedor en los últimos años con la llegada de la
domótica.
2.1.
2.1.1.
Introducción
Evolución de las redes inalámbricas de área personal
Las redes celulares pueden ser consideradas la extensión lógica y natural de las redes
telefónicas por cable. Conforme fueron aumentando tanto las necesidades de movilidad
como el coste de instalación de las redes cableadas, la idea de lograr conexiones personales
independientemente de la localización del usuario también progresó.
Durante la década de los 80, se pasó de la búsqueda de células capaces de proporcionar
áreas de cobertura de hasta decenas de kilómetros, al interés por células con menor área de
cobertura a cambio de una mayor capacidad para grandes densidades de usuarios. Es en
9
10
CAPÍTULO 2.
ZIGBEE/802.15.4
este último punto donde se enmarca el grupo de trabajo IEEE 802.11, en la investigación
y estandarización de redes WLAN (Wireless Local Area Network ).
Sin embargo, mientras IEEE 802.11 se centra en proporcionar altas tasas de datos a
distancias típicas de decenas de metros, las WPAN (Wireless Personal Area Network )
tienen como principal objetivo dar servicio en el entorno próximo a una persona u objeto,
buscando ante todo lograr dispositivos de bajo coste, bajo consumo y pequeño tamaño.
El grupo de trabajo IEEE 802.15 surge como respuesta a estos requisitos. Este grupo
ha denido tres clases de WPAN diferenciadas por sus tasas de transferencias de datos,
consumo energético y calidad de servicio. Las WPAN de alta tasa de transferencia de datos,
IEEE 802.15.3, son adecuadas para aplicaciones multimedia que requieren de una calidad
de servicio alta. Las WPAN de tasa de transferencia media, IEEE 802.15.1/Bluetooth,
están destinadas al manejo de un amplio rango de aplicaciones, como las destinadas a
teléfonos móviles, y permiten una calidad de servicio adecuada para comunicaciones por
voz. Por último, se encuentran las WPAN de baja tasa de transferencia de datos, IEEE
802.15.4/LR-WPAN (Low Rate WPAN), indicadas para satisfacer las necesidades de un
amplio rango de aplicaciones en el ámbito industrial, médico o residencial de bajo consumo
de energía y bajo coste.
2.1.2.
IEEE 802.15.4 y ZigBee
ZigBee es un protocolo de interconexión inalámbrico de baja tasa de transferencia
de datos, bajo coste y reducido consumo energético orientado hacia la automatización y
control remoto de aplicaciones. No se trata de una tecnología, sino de un conjunto estandarizado de soluciones que pueden ser implementadas por cualquier fabricante. ZigBee
está promovido por la ZigBee Alliance, asociación creada en 1998 y que, según un informe
reciente de ON World [12], ha sido adoptada por más de 350 fabricantes globales, que
trabajan de forma conjunta para lograr un estándar global y abierto, contando ingresos
anuales que sobrepasan el billon de dólares estadounidenses.
La especicación 1.0 de ZigBee se aprobó el 14 de Diciembre de 2004, estando disponible
para miembros de ZigBee Alliance. Dicha especicación se divide en distintos niveles,
2.1.
INTRODUCCIÓN
11
accesibles según la categoria adoptada por el suscriptor.
Mientras, y en paralelo, el grupo IEEE 802.15.4 había continuado con su trabajo centrado en las WPAN de baja tasa de transferencia de datos el cual comenzó poco tiempo
después de la formación de ZigBee Alliance. Más tarde, ZigBee Alliance e IEEE decidieron unicar esfuerzos y criterios, optándose por ZigBee como nombre comercial para la
solución tecnológica.
Como ya se apuntó anteriormente, ZigBee está indicado como solución de bajo coste y
bajo consumo de energía para la interconexión inalámbrica de dispositivos que necesiten
un largo ciclo de duración de la batería, pudiendo ir de varios meses a varios años. Además,
ZigBee puede ser implementado en redes malladas de un tamaño mayor que las permitidas
por Bluetooth. Los dispositivos ZigBee pueden transmitir en rangos de entre 10 y 70
metros, dependiendo de las condiciones radio y del consumo deseado para una determinada
aplicación, y opera en las bandas ISM1 , que son bandas reservadas internacionalmente para
su uso en campos relacionados con la industria, la ciencia y la medicina, y cuyo acceso es
libre sin necesidad de solicitar licencia. El rango de transferencia de datos va de los 250
kbps a los 20 kbps, dependiendo de la banda ISM usada.
Desde su unión, IEEE y ZigBee Alliance han trabajado en colaboración para especicar
la pila de protocolos. IEEE 802.15.4 se centró en la especicación de las dos capas inferiores
del protocolo, las capas física y MAC (Medium Access Contro l), mientras que ZigBee
Alliance tuvo como objetivo la denición de las capas superiores, desde la capa de red
hasta la capa de aplicación, ambas inclusive. Esta arquitectura puede verse en la gura
2.2. Además, ZigBee Alliance se ocupó de denir una serie de aplicaciones de control
destinadas al ámbito residencial y de la construcción, así como de establecer los requisitos
para determinar la interoperabilidad de los dispositivos, ocuparse de la parte comercial y
determinar las directrices principales en la evolución de ZigBee.
1 2.4
Ghz en todo el mundo, 915 MHz en América y 868 MHz en Europa
12
CAPÍTULO 2.
ZIGBEE/802.15.4
2.1.3. Certicación de un dispositivo ZigBee
Para que un producto pueda llevar el logotipo de ZigBee Alliance (gura 2.1) debe
pasar exitosamente el Programa de Certicación ZigBee. Esto asegura que dicho producto
cumple con el estándar descrito en la especicación ZigBee. Se distinguen dos tipos de
certicaciones:
ZigBee Compliant Platform : se aplica a módulos destinados a ser usados como bloques para la construcción de productos nales.
ZigBee Certied Products : aplicado a productos nales construidos en base a bloques
con certicación ZigBee Compliant Platform.
Figura 2.1: Logotipo ZigBee [21]
Aquellos productos que usan perles de aplicación públicos son probados para asegurar
la interoperabilidad con otros productos nales ZigBee.
Los productos que usan perles de aplicación especícos de un fabricante, y que funcionaran como 'sistemas cerrados', son probados para asegurar que pueden coexistir con otros
sistemas ZigBee, esto es, que no intereren en el buen funcionamiento de otros productos
ZigBee certicados.
2.1.4. Arquitectura de ZigBee
Se presentan a continuación los conceptos esenciales acerca de la arquitectura de la
pila ZigBee, la cual se muestra en la gura 2.2.
Ninguna de las capas de la pila conoce nada de la capa superior. La capa superior
puede ser considerada la 'maestra' que ordena a la capa inferior 'esclava' que realice el
2.1.
INTRODUCCIÓN
13
trabajo. Cada capa añade una mayor complejidad basada en el soporte que prestan las
capas inferiores.
Figura 2.2: Arquitectura de la pila ZigBee/802.15.4 [20]
La arquitectura ZigBee/802.15.4 no cumple de manera exacta con el modelo OSI (Open
Systems Interconnection ) de siete capas, pero coincide en algunos de sus elementos tales
como las capas física, MAC y de red. Las funciones de las capas 4-72 están incluidas en
las capas APS (Application Support Sub-layer ) y ZDO (ZigBee Device Object ) del modelo
ZigBee. Entre cada capa se denen SAP (Service Access Point ). Los SAP proveen los API
(Application Programming Interface ), que permite aislar el trabajo que lleva a cabo una
capa respecto a las capas superior e inferior de ésta. ZigBee incluye dos accesos SAP por
capa, uno de ellos para datos y otro para gestión.
Las dos capas inferiores, física y MAC, están denidas por la especicación IEEE
802.15.4. La capa física simplemente traduce los bits al interfaz aire o viceversa. La capa
MAC provee el concepto de red, incluyendo el identicador de PAN (Personal Area Network ), el descubrimiento y unión a otras redes, y comandos para unirse o formar una red.
2 Transporte,
Sesión Presentación y Aplicación
14
CAPÍTULO 2.
ZIGBEE/802.15.4
La capa MAC no soporta encaminamiento multi salto ni mallado.
Las capas de red y aplicación quedarón denidas por la ZigBee Alliance. La capa de red
es responsable de la administración de redes malladas, lo cual incluye el envío de paquetes
a través de la red, la determinación de rutas para envíos unicast y, de manera general,
el control del envío correcto de los paquetes entre sensores. Esta capa incluye también
una serie de comandos para la administración de la seguridad en la red. Las redes ZigBee
proveen seguridad en la capa de red, tal y como se explicará mas adelante.
La capa de aplicación actúa como ltro para las aplicaciones ejecutadas sobre ella,
simplicando sus interacciones con otros módulos como Applicastion Prole. Se ocupa
también de ltrar mensajes duplicados. Dentro de esta capa se incluye el módulo ZDO,
responsable de la gestión de medio radio, del descubrimiento de otros sensores y servicios
al alcance y del estado del sensor en la red.
Es importante resaltar que no se contempla en la arquitectura ninguna descripción de
interacciones entre dispositivos que no se lleven a cabo a través del interfaz aire. ZigBee
solo dene el protocolo de red y el comportamiento a través de dicho interfaz. Este hecho
permite que todos los mensajes transmitidos a través del interfaz aire por un sensor ZigBee
puedan ser interpretados correctamente por cualquier otro sensor ZigBee, consiguiéndose
así que los fabricantes innoven a la vez que se mantiene la compatibilidad entre ellos.
Todas estas capas serán descritas de manera más detallada en siguientes secciones.
2.1.5.
Versiones de ZigBee
Hasta el día de hoy existen tres versiones de la pila ZigBee/802.15.4: la primera se
denomina ZigBee 2004, la siguiente apareció en Junio de 2006 y se denominó ZigBee
2006 y la última es la versión ZigBee PRO o 2007. El nivel de red de ZigBee 2007 no es
compatible con el de ZigBee 2004-2006, aunque un sensor de funcionalidad reducida puede
unirse a una red 2007 y viceversa. No pueden combinarse dispositivos enrutadores de las
versiones antiguas con un dispositivo coordinador 2007.
2.1.
INTRODUCCIÓN
15
Se muestra en la tabla 2.1 un resumen con las características más destacadas incluidas
en las versiones 2006 y PRO.
2.1.6.
Empaquetamiento, direccionamiento y acceso al canal
El empaquetamiento en ZigBee/802.15.4 se realiza a través cuatro tipos de tramas
básicas: trama de datos, trama ACK o de acuse de recibo, trama MAC y trama baliza.
Podemos ver los campos de estas tramas en la gura 2.3.
Figura 2.3: Tramas y empaquetamiento ZigBee [30]
La trama de datos presenta una zona de carga de hasta 104 bytes y está numerada
para asegurar que todos llegan a su destino. Un campo nos asegura que la trama se
ha recibido sin errores. Con esta estructura se aumenta la abilidad en condiciones
complicadas de transmisión.
La estructura de las tramas ACK permite la realimentación desde el receptor al
emisor, conrmándose que fue recibida sin errores.
La trama MAC se utiliza para el control remoto y la conguración de los distintos
dispositivos.
16
CAPÍTULO 2.
El coordinador selecciona el mejor canal disponible para
evitar interferencias al inicio
Permite el cambio de canal durante la operación para evitar
interferencias
Asignación distribuida de direcciones
Asignación estocástica de direcciones
Los dispositivos pueden ser asignados a grupos para
direccionarlos de forma común
Soporte para dispositivos con función de agregador
Encriptado AES de 128 bits con código de integridad de
mensaje de 32 bits
Contador de tramas para asegurar la no duplicidad
Seguridad en la capa de red por defecto y soportada en capas
superiores
Rotación de la clave de red
Centro de seguridad soportado en el coordinador
Modo de alta seguridad
Centro de seguridad soportado en cualquier dispositivo de la
red
Tamaño del mensaje de hasta 100 bytes dependiendo del
servicio empleado
Soporte para mensajes mayores de 100 bytes, teniendo como
límite los buers de envío y recepción
Algoritmo de enrutamiento tolerante a fallos con capacidad de
respuesta a cambios en la red y en el interfaz radio
Cada dispositivo mantiene información de sus vecinos,
mejorando la abilidad y robustez
ZIGBEE/802.15.4
2006
PRO
NO
SI
SI
NO
SI
NO
SI
SI
NO
SI
SI
SI
SI
SI
SI
SI
SI
SI
NO
NO
SI
SI
SI
SI
SI
SI
NO
SI
SI
NO
NO
SI
SI
Tabla 2.1: ZigBee 2006 y PRO: Características destacadas [20]
SI
2.1.
INTRODUCCIÓN
17
La trama baliza se ocupa de activar a los dispositivos, que escanean el canal y
luego vuelven a pasar a estado inactivo si no reciben nada más. Estas tramas son
importantes para permitir el ahorro de energía de los dispositivos, que esperan el
momento adecuado para mantener a los dispositivos sincronizados sin necesidad de
estar permanentemente en funcionamiento, permitiendo ahorrar energía.
En cuanto al mecanismo de direccionamiento, tanto la capa MAC como la capa de
aplicación forman parte de él. Un dispositivo ZigBee está formado por un transceptor
radio compatible con el estándar 802.15.4, en el que se implementan dos mecanismos de
acceso al canal y una o más descripciones de dispositivos. El transceptor es la base del
direccionamiento mientras que las aplicaciones asociadas a un dispositivo se identican por
medio de un endpoint numerado entre 1 y 240. Los dispositivos se direccionan empleando
64 bits o un direccionamiento corto de 16 bits que puede asignarse usando dos posibles
mecanismos:
Mecanismo distribuido: se basa en la generación de subgrupos de direcciones. El
coordinador asigna un subgrupo de direcciones a cada uno de sus hijos con capacidad
de enrutador. Este proceso de asignación de subgrupos se repite de nuevo en los
dispositivos enrutadores de manera iterativa hasta que se llega a los dispositivos
nales. Para calcular el tamaño de estos subgrupos de direcciones se tienen en cuenta
ciertos parámetros de la red denidos por el coordinador: máximo número de hijos
que un padre puede tener, máxima profundidad de la red (es decir, número máximo
de saltos hacía arriba o abajo) y máximo número de dispositivos enrutadores que un
padre puede tener como hijo.
Mecanismo estocástico (solo disponible para ZigBee PRO): basado en la asignación
aleatoria.
Los dos mecanismos de acceso al canal que se implementan en ZigBee corresponden
a redes con funcionamiento balizado y sin funcionamiento balizado. Para una red sin funcionamiento balizado, el mecanismo CSMA-CA (Carrier Sense Multiple Access-Collision
Avoidance ) ranurado envía, de manera opcional, tramas ACK para los paquetes recibidos
correctamente. En este mecanismo, cada dispositivo es autónomo, pudiendo iniciar una
18
CAPÍTULO 2.
ZIGBEE/802.15.4
conversación, en la que otros pueden interferir. Así, el canal puede estar ocupado o el dispositivo destino puede no recibir la petición. Este sistema se usa en sistemas en los que los
dispositivos pasan la mayor parte del tiempo inactivos. Para que los demás elementos de
la red sigan teniéndolos en cuenta, cada cierto tiempo se activan para anunciar que siguen
en la red. Se debe destacar que los dispositivos que actuan como coordinadores no pueden
pasar a estado inactivo en ningún momento, debiendo permanecer en modo escucha en
todo momento.
Por otro lado, en una red con funcionamiento balizado se usa una estructura de supertrama que se estudiará con detalle en 2.2.4.1.
2.2.
IEEE 802.15.4
A continuación se describirá de forma detallada la parte de ZigBee responsabilidad del
IEEE, sin embargo, se deben tener claras una serie de ideas:
IEEE 802.15.4 es:
• Un estándar WPAN optimizado para aplicaciones con una baja tasa de trans-
ferencia de datos (entre 0.01 y 250 kbit/s) y requisitos mínimos o inexistentes
de calidad de servicio.
• El tipo de WPAN de menor coste y menor consumo.
• Un estándar desarrollado por el IEEE que delega en ZigBee
Alliance
la parte
referente a la mercadotecnia y la conformidad de los dispositivos.
• La parte de ZigBee perteneciente a las capas física y MAC.
En cuanto a los requisitos hardware de la MCU (MicroController
los siguientes:
8 bits
Unit ), se denen
2.2.
IEEE 802.15.4
19
4 MHz
32 kB ROM
8 kB RAM
2.2.1.
Tipos de dispositivos
Las redes ZigBee incluyen los siguientes tipos de dispositivos según el papel que desempeñen en la red:
Coordinador ZigBee: es el dispositivo más completo, solo puede haber uno en cada
red y se encarga de la inicialización y control de la misma. Puede actuar también
como centro de seguridad, siendo el encargado de guardar y distribuir las claves de
cifrado.
Enrutador ZigBee: este dispositivo extiende el área de cobertura, encamina dinámicamente alrededor de obstáculos y proporciona rutas alternativas en caso de congestión
o de fallos de dispositivos. Pueden conectarse tanto al coordinador como a otros enrutadores y soporta también dispositivos hijos. Cabe destacar que ofrece un nivel de
aplicación para la ejecución de código de usuario.
Dispositivo nal ZigBee: debe estar conectado a un coordinador ZigBee o a un enrutador ZigBee y no admite hijos. Posee la funcionalidad necesaria para comunicarse
con su sensor padre pero no puede transmitir información destinada a otros dispositivos ni llevar a cabo ninguna operación de enrutamiento. De esta forma, puede
permanecer inactivo la mayor parte del tiempo, aumentando la vida de sus baterías. Además, y no menos importante, el hecho de no tener que almacenar tablas de
encaminamiento hace que su necesidad de memoria disminuya considerablemente,
haciéndolo signicativamente más barato.
Por otro lado, atendiendo a la capacidad para actuar según qué tipo de los dispositivos
vistos anteriormente, podemos realizar una segunda clasicación:
20
CAPÍTULO 2.
ZIGBEE/802.15.4
Dispositivo de funcionalidad completa (FFD: Full Functionality Device ): es capaz de
recibir mensajes en formato del estándar 802.15.4 y gracias a su memoria adicional
puede actuar como coordinador, enrutador o dispositivo nal ZigBee. Cualquier red
ZigBee debe incluir, al menos, un dispositivo ZigBee FFD.
Dispositivo de funcionalidad reducida (RFD: Reduced Functionality Device ): presenta capacidad y funcionalidad limitadas (especicadas en el estándar) con el propósito
de conseguir bajo coste y simplicidad. Son los sensores/actuadores de la red y, por
lo tanto, solo pueden actuar como dispositivos nales ZigBee.
2.2.2.
Topología de red
En las redes ZigBee pueden encontrarse tres tipos de topologías que se describen a
continuación:
Estrella: se compone de un dispositivo coordinador y varios dispositivos nales, tal
y como se muestra en gura 2.4. En esta topología, el dispositivo nal se comunica
solo con el coordinador. Cualquier intercambio de paquetes entre dispositivos nales
ha de pasar por el coordinador, siendo ésta su principal desventaja ya que la red
depende del buen funcionamiento del coordinador y es fácil la formación de cuellos
de botella. Además no presenta rutas alternativas desde la fuente al destino. Como
ventajas aporta su simplicidad y el hecho de alcanzar cualquier destino con solo dos
saltos.
Posibles aplicaciones beneciarias de esta topología son la automatización residencial, periféricos de ordenadores y juguetes.
2.2.
21
IEEE 802.15.4
Figura 2.4: Topología en estrella [8]
Árbol o jerárquica: en esta topología la red esta compuesta por un sensor central que
actúa como coordinador y varios enrutadores y/o dispositivos nales, tal y como se
muestra en la gura 2.5. La misión de los enrutadores es extender la cobertura de la
red (aunque también tienen capacidad para ejecutar aplicaciones). Los dispositivos
nales conectados a los enrutadores o al coordinador son llamados sensores hijos.
Solo los enrutadores y los coordinadores admiten sensores hijo. Cada dispositivo nal
solo puede comunicarse con su padre (enrutador o coordinador). El coordinador y
los enrutadores pueden tener hijos y, además, son los únicos dispositivos que pueden
ser padres. Un dispositivo nal no puede tener hijos por lo que, consecuentemente,
no puede actuar como padre.
22
CAPÍTULO 2.
ZIGBEE/802.15.4
Figura 2.5: Topología en árbol o jerárquica [8]
Árbol agrupado: este es un caso especial de topología en árbol en la que un padre
con sus hijos es denominado grupo, tal y como se muestra en la gura 2.6. Cada
grupo presenta una identicación única en la red. Esta topología forma parte de la
especicación del IEEE 802.15.4 pero no se incluye dentro de ZigBee por lo que no
se entrará en más detalles.
Figura 2.6: Topología en árbol agrupado [8]
2.2.
23
IEEE 802.15.4
Mallada: consiste en una malla de enrutadores y dispositivos nales interconectados.
Cada enrutador está tipicamente conectado a través de, al menos, dos caminos de
salida y puede transmitir mensajes a sus vecinos. Tal y como se muestra en la
gura 2.7, una red mallada esta compuesta por un único coordinador y múltiples
enrutadores y dispositivos nales.
En este escenario, añadir o eliminar dispositivos es sencillo, pudiénsose evitar
zonas 'muertas', o con señal recibida débil sin más que añadir enrutadores a la red.
Como inconvenientes presenta la necesidad de una cabecera de mayor tamaño y que
el protocolo de enrutamiento es más complejo que en los otros casos, haciendo los
requisitos de memoria y proceso más elevados.
Este concepto de red, conocido también como red nodal, es la aportación de
ZigBee que mayor interés está despertando entre las empresas desarrolladoras de
productos ya que su aplicación hará viable muchas soluciones de domótica vía radio
en viviendas construidas, allí donde las tecnologías radio de anteriores generaciones
estaban limitadas en cuanto a la cobertura o alcance entre dispositivos.
Figura 2.7: Topología Mallada [8]
24
CAPÍTULO 2.
ZIGBEE/802.15.4
Sea cual sea la topología elegida, después de que un dispositivo FFD se activa por
primera vez, puede establecer su propia red y convertirse en el coordinador. Cada vez que
un dispositivo FFD establece una nueva red, elige un identicador PAN que no esté siendo
actualmente utilizado por ninguna otra red ZigBee dentro del alcance de cobertura del
coordinador. Esto permite a cada red trabajar de forma independiente.
2.2.3.
Capa física IEEE 802.15.4
La capa física realiza las funciones de activación/desactivación del transceptor radio,
detección de energía, indicador de calidad del enlace, selección de canal y evaluación de
canal libre, además de ocuparse de la recepción y transmisión de paquetes a través del
interfaz aire.
El estándar proporciona dos opciones determinadas por la banda de frecuencia elegida.
Ambas están basadas en la técnica DSSS (Direct Sequence Spread Spectrum ). La tasa de
transferencia de datos es de 250 kbps en la banda de 2.4 GHz, 40 kbps en la de 915 MHz
y 20 kbps en la de 868 MHz. La tasa de 250 kbps se consigue usando un orden mayor
de modulación. Por otro lado, frecuencias menores proporcionan un mayor alcance en la
cobertura ya que las pérdidas por propagación son menores.
Entre 868 y 868.6 MHz hay un único canal, 10 canales entre 902 y 928 MHz y 16
canales entre 2.4 y 2.4835 GHz, tal y como se muestra en la gura 2.8. El hecho de tener
canales en diferentes bandas permite el realojo dentro del espectro disponible. El estándar
permite también la selección dinámica de canal.
En cuanto a la parte hardware, la sensibilidad mínima del receptor ha de ser de -85
dBm para 2.4 GHz3 y de -95 dBm para 868/915 MHz. Por otro lado, la máxima potencia
de transmisión ha de estar regulada según la regulación local. Un dispositivo certicado
como ZigBee debe indicar su potencia nominal de transmisión indicada en el parámetro
de la capa física phyTransmitPower.
3 Aunque
los dispositivos comerciales alcanzan a menudo sensibilidades muy inferiores, siendo -100 dBm
un valor habitual.
2.2.
25
IEEE 802.15.4
Figura 2.8: Canales IEEE 802.15.4 [20]
2.2.3.1.
Detección de energía recibida (ED)
La medida de la energía recibida es usada por la capa de red en el algoritmo de selección
de canal. Se trata de una estimación de la potencia recibida en el ancho de banda de un
canal IEEE 802.15.4 y no decodica la señal recibida. El tiempo requerido para llevar a
cabo la estimación debe ser igual al de 8 periodos de símbolo (128 ms en la banda de 2.4
GHz).
El resultado de la función ED (Energy Detection ) es noticado como un entero de
8 bits. El valor mínimo indica potencia recibida menor de 10 dB sobre la sensibilidad
especicada para el receptor. La amplitud de los posibles valores indicados debe ser de, al
menos, 40 dB.
2.2.3.2.
Indicador de calidad de enlace (LQI)
LQI (Link Quality Indication ) es una medida de la calidad y/o fuerza de la trama
recibida. Puede ser implementado por medio de un receptor con capacidad ED, una estimación de la relación señal a ruido o una combinación de ambos métodos. El resultado de
LQI será usado por la capa de red o por la de aplicación.
LQI se indica mediante un entero de 8 bits, asociándose el mayor y el menor valor
26
CAPÍTULO 2.
ZIGBEE/802.15.4
posible con la mayor o menor calidad detectable por el receptor, distribuyéndose los valores
de manera uniforme entre estos límites.
2.2.3.3.
Evaluación de canal libre (CCA)
La operación de CCA (Clear
de los siguientes métodos:
Channel Assessment ) se lleva a cabo de acuerdo a uno
Energía por encima del umbral: CCA informará de canal ocupado si detecta cualquier
energía sobre el umbral de ED.
Detección de portadora: CCA informará de canal ocupado solo cuando detecte una
señal con la modulación y ensanchamiento de las características de IEEE 802.15.4.
No tiene en cuenta si la señal esta por encima o por debajo del umbral ED.
Detección de portadora con energía por encima del umbral: se trata de una combinación de los dos métodos anteriores.
2.2.3.4.
Formato de PPDU
La estructura de la PPDU (Physical layer conversion Protocol
en la gura 2.3. Esta fomada por los siguientes componentes:
Data Unit ) se muestra
Cabecera de sincronización: permite al dispositivo receptor sincronizarse.
PHY CAB: contiene información acerca de la longitud de la trama.
Zona de carga variable (SDU física) que incluirá la trama MAC.
2.2.3.5.
Características que reducen el consumo energético en la capa física
Se presentan a continuación las características que posibilitan el bajo consumo energético en la capa física:
2.2.
IEEE 802.15.4
27
Señalización ortogonal multinivel
La baja potencia media usada es lograda gracias a tiempos de funcionamiento
reducidos, acompañados de bajos picos de corriente. En la capa física esto fomenta el
uso de una tasa de transferencia de datos elevada pero con una baja tasa de símbolos
ya que los picos de corriente suelen ir en consonancia con la tasa de símbolos usada
más que con la tasa de datos. Esto implica el uso de señalización multinivel.
Sin embargo, la señalización multinivel produce una pérdida de sensibilidad que
lleva aparejada un aumento del consumo. La solución es el uso de la señalización
ortogonal, intercambiando ancho de banda para mejorar la sensibilidad por medio
de la ganancia de código.
Reducción de la energía usada al activarse
Al ser los periodos activos de los sensores IEEE 802.15.4 muy cortos, una parte
signicativa de la potencia puede perderse si el transceptor tarda mucho en ponerse
a funcionar. El uso de técnicas como DSSS aporta la ventaja de que sus ltros de
canal de gran anchura llevan de forma implícita aparejados una baja latencia.
No se contempla funcionamiento en modo dúplex para así reducir los picos de corriente.
Elección adecuada de la frecuencia de la portadora: por ahora no se contempla el
uso de la banda ISM de 60 GHz.
2.2.4.
Capa MAC IEEE 802.15.4
La Capa MAC realiza las funciones de administración de la baliza, acceso al canal,
administración de las ranuras temporales garantizadas, validación de la trama, acuse de
recibo de trama, asociación y disasociación.
28
2.2.4.1.
CAPÍTULO 2.
ZIGBEE/802.15.4
Estructura de supertrama (Modo balizado)
IEEE 802.15.4 permite el uso de la estructura de supertrama. El formato de esta
supertrama es denido por el coordinador, quedando localizada entre las balizas y dividida
en 16 slots de igual duración. La baliza es enviada en el primer slot de cada supertrama. Si
el coordinador no quiere usar la estructura de supertrama puede desactivar la transmisión
de balizas, que son usadas para sincronizar los dispositivos adheridos a él, identicar la
PAN y describir la estructura de las supertramas.
La supertrama esta compuesta de una parte activa y otra inactiva. Durante la parte
inactiva, el coordinador no tiene que interactuar con su PAN y entra en modo de bajo
consumo. La parte activa consiste en un periodo de acceso contenido (CAP) y otro periodo
libre de contención (CFP). Cualquier dispositivo que desee comunicarse durante CAP
competirá con otros dispositivos haciendo uso del mecanismo CSMA-CA ranurado. Por
otro lado, CFP contiene ranuras temporales reservadas y queda localizado al nal de la
parte activa de la supertrama. El coordinador puede asignar hasta siete de estos time slots
reservados. Además, una ranura temporal garantizada puede ocupar más de un periodo
de ranura. Esta estructura puede verse en la gura 2.9.
Figura 2.9: Estructura supertrama [11]
Esta estructura garantiza el ancho de banda dedicado y el bajo consumo, siendo especialmente adecuado para aquellos casos en los que el coordinador está alimentado mediante baterías. Los dispositivos que componen la red, escuchan dicho coordinador durante el
2.2.
IEEE 802.15.4
29
envío de la baliza4 . Un dispositivo que quiera intervenir, deberá registrarse para el coordinador y luego comprobar si hay paquetes para él. Posteriormente, si no hay paquetes
con él como destinatario, pasará a estado inactivo y se activará de nuevo de acuerdo a un
horario que habrá establecido previamente el coordinador.
2.2.4.2.
Modelo de transferencia de datos
Existen tres tipos de transacciones de datos: entre dos dispositivos iguales, de un coordinador a un dispositivo de otro tipo y viceversa. El mecanismo de transferencia varía
dependiendo de si la red soporta o no funcionamiento en modo balizado.
Cuando un dispositivo desea transmitir al coordinador datos en modo no balizado,
simplemente transmite su trama, usando CSMA-CA no ranurado. Cuando la transmisión hacia el coordinador se realiza mediante modo balizado, primero espera a
detectar la baliza y, cuando lo hace, se sincroniza con la estructura de supertrama y
transmite su trama de datos en el momento adecuado, usando CSMA-CA ranurado.
Puede activarse de manera opcional el acuse de recibo tanto en modo balizado como
en modo no balizado.
Si es el coordinador el que desea transferir datos a un dispositivo dentro de una
red con funcionamiento balizado activado, indica en la baliza que tiene un mensaje
esperando a ser enviado. El dispositivo escuchará periodicamente la baliza y, si hay
un mensaje con él como destinatario, lo solicitará mediante el envío de un comando
MAC haciendo uso de CSMA-CA ranurado. El mensaje será enviado entonces usando
tambien CSMA-CA ranurado y, una vez que lo reciba, el dispostivo enviará un acuse
de recibo y el mensaje será eliminado de la lista de mensajes pendientes en la baliza.
Por otro lado, cuando el mensaje a transmitir por el coordinador se hace en una red
sin funcionamiento balizado activado, el coordinador almacena el mensaje hasta que
el dispositivo entre en contacto con él y solicite el mensaje, mediante la trasmisión de
un comando MAC hacia el coordinador. Este comando MAC de sondeo será enviado
usando CSMA-CA no ranurado y especicando una tasa de datos requerida. Si no
4 El
envío se produce en modo broadcast de forma periódica. Este periodo puede variar, dependiendo
de la conguración, entre 0.015 y 252 segundos
30
CAPÍTULO 2.
ZIGBEE/802.15.4
hay datos pendientes de ser enviados en el coordinador, el coordinador transmitirá
una trama de datos con una zona de carga de longitud cero y el dispositivo conrmará
el recibo de esta trama.
En el caso de la transmisión de datos entre dispositivos del mismo tipo, se presentan
dos opciones. En el primer caso, el sensor escuchará de manera constante y transmitirá sus datos usando CSMA-CA no ranurado. En el segundo caso, los sensores se
sincronizan para poder ahorrar energía.
2.2.4.3.
Inicialización y mantenimiento de una PAN
Una PAN solo puede ser iniciada por dispositivos FFD y una vez que ha llevado a
cabo un escaneo de canal activo y que se ha seleccionado un identicador PAN adecuado.
El escaneo activo de canal permite al dispositivo FFD localizar coordinadores que estén
transmitiendo tramas baliza dentro de su espacio de operación personal.
El escaneo activo de canal se lleva a cabo sobre un conjunto de canales lógicos. Para
cada canal, el dispositivo debe conmutar la trasmisión a dicho canal y y enviar un comando
de solicitud de baliza. Después de esto, el dispositivo activa su receptor durante un tiempo
congurable y almacena la información de todas las balizas PAN distintas que se han
recibido (rechazando en este periodo de tiempo aquellas tramas que no correspondan a
balizas).
Si el comando de solicitud de baliza es recibido por un dispositivo coordinador de
una red con funcionamiento balizado activado, debe ignorar dicho comando y continuar
transmitiendo sus balizas normalmente ya que asume que sus balizas periódicas le acabarán
llegando. Si el comando de solicitud de baliza es recibido por un dispositivo coordinador de
una red no balizada, trasmitirá una única trama de baliza usando CSMA-CA no ranurado.
El escaneo activo de un determinado canal acabará una vez expirado el tiempo especicado o cuando se hayan almacenado el número máximo de identicadores PAN indicados
en la implementación. El escaneo completo nalizará cuando todos los canales del conjunto de canales lógicos disponibles hayan sido escaneados (o cuando se hayan almacenado
2.2.
IEEE 802.15.4
31
el número máximo de identicadores PAN indicados en la implementación si esto ocurre
antes). La elección del identicador de PAN se hará teniendo en cuenta el resultado de las
PAN detectadas durante el escaneo y será responsabilidad exclusiva de la aplicación.
En conjunto con lo visto hasta ahora, para la selección del identicador también se
tendrá en cuenta el resultado de ED en la capa física, pudiéndo ser descartadas ciertas
tramas por parte de la capa MAC. Además de todo lo anterior, cabe destacar que ZigBee dispone de una serie de procedimientos para solucionar conictos relacionados con la
duplicidad de identicadores PAN dentro de su espacio de operación personal.
2.2.4.4.
Unión a una red ZigBee
Hay dos procedimientos para unirse a una red ZigBee: asociación MAC y reasociación
de red (que se describirá más adelante).
La asociación MAC es el procedimiento que todo dispositivo ZigBee debe soportar. En
este caso, un coordinador o un ennrutador que desee permitir a otro dispositivo asociarse
a la red deberá indicarlo mediante la trasmisión del comando correspondiente. Posteriormente, el dispositivo que desee unirse a la red deberá indicarlo mediante otro comando.
Esta última petición causará el inicio de un protocolo de la capa MAC en el que se intercambiarán mensajes entre el dispositivo que desea unirse a la red y el coordinador o el
enrutador, indicándose entre otros detalles la dirección asignada al dispositivo dentro de
la red. Debe destacarse que la asociación MAC es un protocolo inseguro ya que todas las
tramas que se intercambian son enviadas sin tomar medidas de seguridad.
2.2.4.5.
Sincronización
En aquellas redes con funcionamietnto balizado, la sincronización se consigue a través
de la recepción y decodicación de las tramas baliza. En redes sin funcionamiento balizado, la sincronización es llevada a cabo mediante el sondeo del coordinador solicitando
transmitir datos.
32
CAPÍTULO 2.
ZIGBEE/802.15.4
Existen también procedimientos para la recuperación de dispositivos que han perdido
la comunicación con la red, denominados dispositivos huérfanos.
2.2.4.6.
Formato de la trama MAC
El formato general de la trama MAC varía según el tipo de trama que se envíe, las diferentes opciones se muestra en la gura 2.3 e incluyen los siguientes componentes básicos:
MHR: comprende control de trama, número de secuencia e información de direccionamiento.
Zona de carga MAC: de longitud variable, contiene información especíca del tipo
de trama. Las tramas ACK no contienen zona de carga.
MFR: contiene FCS (Frame
2.2.4.7.
Check Sequence ).
Características que reducen el consumo energético en la capa MAC
Se presentan a continuación las características que posibilitan el bajo consumo energético en la capa MAC:
Supertrama MAC: permite el funcionamiento en modo balizado que a su vez deriva
en un menor tiempo de actividad (duty cycle ) de los dispositivos.
CSMA-CA: su uso en lugar del sondeo disminuye signicativamente el consumo.
Efecto de recuperación de las baterías: todos los tipos de baterías presentan un efecto
de recuperación por el cual su duración se extiende si la corriente es extraída de ellas
en ráfagas en lugar de hacerse con el equivalente en corriente constante.
2.3.
ZIGBEE ALLIANCE
2.3.
33
ZigBee Alliance
A continuación se describirá de forma detallada la parte de ZigBee responsabilidad de
ZigBee Alliance, sin embargo, se deben tener claras una serie de ideas:
ZigBee Alliance es:
• Una asociación de empresas que buscan promover IEEE 802.15.4.
• Una asociación de empresas que llevan a cabo la comercialización y certicación
de ZigBee.
• Una asociación de empresas que se ocupan de la denición de las capas supe-
riores de ZigBee.
2.3.1.
Capa de Red ZigBee
La capa de red ZigBee se ocupa del enrutamiento mediante la invocación de acciones en
la capa MAC. Sus tareas incluyen iniciar la red5 , asignar direcciones de red, añadir o eliminar dispositivos en la red, enrutar mensajes, aplicar medidas de seguridad e implementar
el descubrimiento de rutas.
2.3.1.1.
Reincorporación a la red
El procedimiento de reincorporación a la red puede ser, a pesar de su nombre, usado
para unirse a la red por primera vez. Se trata de un protocolo de la capa de red, lo que quiere
decir, por un lado, que no es responsabilidad obligada de la capa MAC permitir la unión
de dispositivos a la red y que, si se hace a nivel de red, la unión de un dispositivo a la red
puede hacerse de forma segura. Esto último es cierto si el dispositivo está reincorporándose
a a red o si el dispositivo esta uniéndose por primera vez pero ha obtenido la clave de red
por medio de algún mecanismo externo.
5 Si
se trata de un dispositivo actuando como coordinador
34
2.3.1.2.
CAPÍTULO 2.
ZIGBEE/802.15.4
Enrutamiento ZigBee
El algoritmo de enrutamiento ZigBee está basado en el concepto de enrutamiento por
vector distancia, en el cual cada enrutador que participa en la transmisión de tramas desde
una fuente a un destino mantiene un registro en su tabla de enrutamiento asociada a esta
comunicación. Este registro, como mínimo, debe almacenar tanto la distancia lógica hasta
el destino como la dirección del siguiente enrutador en el camino hacia dicho destino.
Las rutas son determinadas según van siendo solicitadas usando un proceso de descubrimiento de rutas en el que el dispositivo que desea trasmitir envía un comando de solicitud
de ruta a todos los dispositivos a su alcance, posteriormente, cuando dicho mensaje llegue
al destinatario, tras sucesivas retransmisiones por parte de los enrutadores intermedios,
éste contestará enviando un comando con el dispositivo origen de la petición ahora como
destino. Conforme dicha contestación vaya pasando a través de los distintos enrutadores
que actuarán como intermediadores en la trasmisión, se irá creando en cada uno de ellos el
registro dentro de la tabla de enrutamiento indicado anteriormente. Este procedimiento se
muestra en la gura 2.10. Existen un gran número de optimizaciones al algoritmo básico
descrito que sirven para reducir la memoria RAM dedicada a las tablas de enrutamiento.
Figura 2.10: Descubrimiento de ruta [20]
Una de estas alternativas para reducir las necesidades de memoria es usar el mecanismo
de distribución de direcciones, en el que las direcciones son asignadas siguiendo una cierta
jerarquía, comenzando por el coordinador. Así, los dispositivos con poca o ninguna capacidad de enrutamiento, o dispositivos cuya capacidad haya sido agotada, tienen la opción
de usar el encaminamiento jerárquico para proporcionar un enrutamiento posiblemente
menos eciente pero más sencillo (ya que el paquete es siempre enrutado hacia un padre
2.3.
ZIGBEE ALLIANCE
35
o un hijo, según el rango de la dirección de destino). Este procedimiento se muestra en la
gura 2.11.
Figura 2.11: Encaminamiento jeráquico [20]
Por otro lado, en la mayoría de las aplicaciones empotradas para redes inalámbricas
suele existir un dispositivo denominado sumidero, al que todos los demás dispositivos pertenecientes a la red deben enviar datos de forma regular. Para evitar que cada dispositivo
de la red deba descubrir al sumidero de forma individual, se establece un caso especial
de descubrimiento de ruta en el que una única petición en modo broadcast realizada por
el sumidero establece un registro con él como destino en las tablas de encaminamiento
de cada enrutador de la red. En grandes redes, los problemas pueden darse cuando el
sumidero necesita alcanzar a cada dispositvo de la red de forma separada. El caso de una
red en la que el sumidero tiene pocos vecinos pero mediante los cuales pueden alcanzarse
muchos dispositvos ejemplica este problema. Las tablas de enrutamiento de estos pocos
vecinos se verán sobrecargadas simplemente por su proximidad al sumidero.
La especicación ZigBee PRO introduce otro estilo de enrutamiento, conocido como
enrutamiento fuente, que solventa este problema. Mientras que en el enrutamiento basado
en el algoritmo de vector distancia la información de enrutamiento es almacenada en las
tablas de los dispositivos que participan en la retransmisión de una trama, el enrutamiento
fuente añade la información de enrutado en la propia trama que se transmite. Ahora solo
el origen de la trama necesita almacenar la información para la ruta, pero a costa de que
36
CAPÍTULO 2.
ZIGBEE/802.15.4
el registro sea mayor ya que debe almacenar la ruta completa y no solo el siguiente salto.
2.3.1.3.
Características que reducen el consumo energético en la capa de red
Se presentan a continuación las características que posibilitan el bajo consumo energético en la Capa de Red:
El algoritmo de enrutamiento usado en ZigBee 1.0 emplea como parámetros tanto la
calidad del enlace como el número de saltos, de esta manera disminuye el consumo
de energía al minimizar las retransmisiones de mensajes y evitar la repetición de las
rutinas para el descubrimiento de rutas.
Las implementaciones futuras de ZigBee probablemente incluirán dentro de su función de costes para la eleccion de la ruta adecuada parámetros relacionados con el
consumo energético, tales como energía restante del sensor o fuente de energía usada
por el sensor.
2.3.2.
Capa de Aplicación ZigBee
La capa superior de la pila de protocolos ZigBee esta compuesta por los siguientes
elementos:
Marco de aplicación: proporciona una descripción acerca de cómo denir un perl
en la pila ZigBee. También especica un conjunto de tipos de datos para perles,
descriptores para la asistencia en el servicio de descubrimiento, formatos de trama
para el transporte de datos y un constructor para desarrollar perles básicos.
Dentro del marco de aplicación quedan denidos los objetos de aplicación, que
es un software que actua como endpoint y que sirve para el control del dispositivo
ZigBee. Un dispositivo ZigBee soporta hasta 240 objetos de aplicación, estando el 0
reservado para ZDO.
2.3.
ZIGBEE ALLIANCE
37
ZDO: dene el papel a desempeñar por un dispositivo dentro de la red (coordinador, enrutador o dispositivo nal), inicia y/o responde a peticiones de conexión y
de descubrimiento, y establece una relación segura entre los dispositivos de la red.
También provee un amplio conjunto de comandos para la administración de la red
y el dispositivo. ZDO es siempre el endpoint 0.
En colaboración con ZDO se encuentra el Plano de Administración ZDO, cuya
labor es facilitar la comunicación entre el APS y la capa de red con ZDO. Permite
al ZDO negociar peticiones relacionadas con el acceso a la red o la seguridad.
APS: responsable de proveer el servicio de datos a la aplicación. Se ocupa también
de almacenar la tabla de conexiones.
SSP (Secure Services Provider ): actúa entre APS y la capa de red para proveer los
mecanismos necesarios para el uso de encriptación a ambas. Queda congurado a
través de ZDO.
2.3.2.1. Perles de aplicación, grupos y endpoints
Un perl de aplicación describe una colección de dispositivos empleados para una
aplicación especíca e, implicitamente, el esquema de intercambio de mensajes entre estos
dispositivos. Un identicador de perl es asignado para cada aplicación de manera que
quede identicado de forma unívoca.
Existen dos tipos de perles de aplicación:
Perl de aplicación público: aplicación desarrollada por ZigBee Alliance que realiza
una tarea determinada y puede ser usada en cualquier dispositivo ZigBee.
Perl de aplicación especíco de un fabricante: aplicación privada desarrollada por
una compañía para funcionar en un derteminado dispositivo ZigBee.
Los dispostivos con un perl de aplicación común se comunican entre ellos usando el
concepto de grupos, en el que se describen las posibles entradas o salidas de datos que se
38
CAPÍTULO 2.
ZIGBEE/802.15.4
pueden registrar desde o hasta otros dispositivos. Un identicador de grupo diferencia de
forma unívoca los grupos dentro del rango de un perl determinado.
Un endpoint dene una entidad dentro de un dispositivo a través de la que se realiza
la comunicación con una aplicación especíca, como ya se indicó, pueden existir hasta
240 endpoint s, estando el 0 reservado para ZDO, que proporciona comandos de control y
administración.
2.4.
Seguridad en ZigBee
La seguridad en ZigBee esta basada en el algoritmo 128-bit AES (Advanced Encryption
Standard ) y se añade al modelo de seguridad que provee IEEE 802.15.4. Incluye métodos
para el establecimiento y el transporte de manera cifrada, administración de dispositivos y
protección de la trama. La especicación de ZigBee dene la seguridad para las capas MAC,
de red y de aplicación. La seguridad para las aplicaciones es proporcionada típicamente a
través de los perles de aplicación.
Veamos los elementos más importantes en lo referente a la seguridad:
Centro de Conanza: decide si se permiten o no nuevos dispositivos en la red y puede
actualizar y cambiar de forma periódica la clave de red. Para ello, transmite la nueva
clave encriptada con la anterior. Posteriormente comunicará a los dispositivos que
pasen a utilizar la nueva clave.
El Centro de Conanza es normalmente el coordinador, pero tambien puede ser un
dispositivo dedicado a esta labor. Es responsable de las siguientes tareas de seguridad:
• Autenticación de dispositivos que soliciten unirse a la red.
• Mantenimiento y distribución de las claves de red.
• Habilitar seguridad
end-to-end
entre dispositivos.
Claves de seguridad: ZigBee usa tres tipos de claves, la Clave Maestra, la Clave de
Red y la Clave de Enlace.
2.4.
SEGURIDAD EN ZIGBEE
39
• Clave Maestra: esta clave no es usada para la encriptación de tramas sino como
un secreto inicial compartido entre dos dispositivos cuando se lleva a cabo el
Procedimiento de Establecimiento de Clave para determinar la clave de enlace.
Las claves que se originan en el Centro de Conanza se denominan Claves
Maestras del Centro de Conanza mientras que las demás se denominan Claves
Maestras de la Capa de Aplicación.
• Clave de Red: proporciona la seguridad para la Capa de Red. Todos los dispo-
sitivos en la red ZigBee comparten la misma clave. Las claves de red de alta
seguridad siempre deben ser transmitidas encriptadas mientras que las claves
de red de seguridad estándar pueden ser enviadas con o sin encriptación. La
opción de alta seguridad es solo soportada por ZigBee PRO.
• Clave de Enlace: se trata de una clave opcional, usada para el envio unicast
de mensajes entre dos sipositivos a nivel de la capa de aplicación. Las claves
de red proporcionadas por el Centro de Conanza son denominadas Claves de
Enlace del Centro de Conanza, las demás son denominadas Claves de Enlace
de la Capa de Aplicación.
40
CAPÍTULO 2.
ZIGBEE/802.15.4
Capítulo 3
Componentes y tecnologías utilizadas
En este capítulo se hará una descripción de las herramientas tanto software como
hardware que han sido necesarias para la realización y prueba de este Proyecto Fin de
Carrera.
3.1.
3.1.1.
Elementos hardware
Equipo de desarrollo eZ430-RF2480 de Texas Instruments
El equipo de desarrollo eZ430-RF2480 de Texas Instruments proporciona la red de
sensores ZigBee/802.15.4 que permiten vericar el correcto funcionamiento de la pasarela
a desarrollar en este proyecto. A continuación se hará una descripción de sus elementos centrándonos principalmente en la pastilla contenedora de la pila de protocolos ZigBee/802.15.4 pero sin entrar en grandes detalles ya que no es el objetivo de este proyecto
su estudio. Para conocer más acerca de su funcionamiento se recomienda consultar la guía
para desarrolladores del CC24801 .
1 Disponible
en http://focus.ti.com/lit/an/swra176/swra176.pdf
41
42
CAPÍTULO 3.
COMPONENTES Y TECNOLOGÍAS UTILIZADAS
El equipo de desarrollo que nos ocupa está compuesto de tres motas/sensores ZigBee, un conector USB (Universal Serial Bus ) y dos suministradores de energía mediante
baterías. Todos ellos pueden verse en la gura 3.1.
Figura 3.1: Contenido eZ430-RF2480
El conector USB permite la comunicación de las motas con un ordenador, de esta
manera se pueden recibir datos procedentes de la red y programar las motas haciendo uso
del software IAR Embedded Workbench2 . Por otro lado, el conector también proporciona
la energía necesaría para el correcto funcionamiento de la mota conectada al conversor. En
cuanto a los suministradores de energía mediante baterías, se ha de destacar que permiten
mantener en funcionamiento a las motas conectadas a ellos sin necesidad de depender de
la red eléctrica, funcionando con baterías de tipo AAA.
2 Descrito
en el apartado 3.2.1.3
3.1.
ELEMENTOS HARDWARE
43
Descripción de las motas
Las motas ZigBee contenidas en el equipo de desarrollo eZ430-RF2480 presentan una
arquitectura basada en un procesador que se ocupa de las capas física, MAC y de red y
un microcontrolador que se encarga únicamente de la capa de aplicación. En concreto,
el procesador es un CC2480 y el microcontrolador es un MSP430F2274, comunicándose
ambos mediante interfaz SPI (Serial Peripheral Interface ) o UART (Universal Asynchronous Receiver-Transmitter ) según puede verse en la gura 3.2. La antena se encuentra
integrada en el mismo CC2480.
Figura 3.2: Conexión CC2480-MSP430
La solución incluida en estas motas por Texas Instruments de cara a la implementación
de la pila de protocolos es denominada Z-Accel. Dicha solución consiste en la ejecución de
la versión de la pila de protocolos ZigBee desarrollada por Texas Instruments, denominada
Z-Stack, en el procesador CC2480 y la ejecución de la aplicación en el microcontrolador
MSP430F2274. El CC2480 se ocupa de manejar todas las tareas críticas en tiempo así como
todo aquello relacionado con el protocolo ZigBee/802.15.4 mientras que el microcontrolador está liberado para ocuparse tan solo de la ejecución de la aplicación almacenada. Esta
distribución de capas, y por lo tanto de tareas, entre el procesador y el microcontrolador
queda representada en la gura 3.3. Todo lo anteriormente descrito funciona cumpliendo
el estándar ZigBee-2006. Se debe reseñar que el procesador CC2480 trabaja sólo en modo
no balizado.
44
CAPÍTULO 3.
COMPONENTES Y TECNOLOGÍAS UTILIZADAS
Figura 3.3: Distribución de protocolos CC2480-MSP430 [26]
Trama intercambiada entre procesador y microcontrolador
Un punto importante a la hora de llevar a cabo este proyecto es determinar cúal es el
formato de trama intercambiado entre el microcontrolador MSP430F2274 y el procesador
CC2480 ya que será esta trama la que se tome y posteriormente envíe a través de la red
IP. Dicho formato se muestra en la gura 3.4.
Figura 3.4: Formato de trama intercambiada entre CC2480 y MSP430
El primer campo que nos encontramos en el formato descrito es el byte SOF (Start
Of Frame ) que avisa del comienzo de la trama. El siguiente campo indica la longitud en
bytes del campo de datos. A continuación se encuentran los bytes de datos. Como último
campo encontramos el FCS, que es una función XOR de todos los campos anteriormente
3.1.
ELEMENTOS HARDWARE
45
descritos exceptuando el SOF.
El byte de comando presenta el formato que se muestra en la gura 3.5.
Figura 3.5: Campo de Comando
Los comandos que se intercambian el microcontrolador y el procesador pueden ser de
los siguientes tipos:
Petición Asíncrona: enviada desde el microcontrolador al procesador. No se espera
respuesta.
Petición Síncrona: enviada desde el microcontrolador al procesador. Se espera respuesta.
Respuesta Síncrona: respuesta por parte de procesador a la petición síncrona hecha
por el microcontrolador.
Sondeo: al estar toda comunicación iniciada por el microcontrolador, el sondeo sirve
para preguntar al procesador si tiene alguna petición que realizarle al microcontrolador.
Por otra parte, como ya se mostró anteriormente, la capa de aplicación se compone
de distintas subcapas, indicándose esto mediante el campo subsistema.
Finalmente, los 8 bits nales del campo comando identican a cada uno de los comandos
disponibles.
46
CAPÍTULO 3.
COMPONENTES Y TECNOLOGÍAS UTILIZADAS
Interfaz de aplicación
En cuanto a la interfaz con la capa de aplicación, aparte de la interfaz API propia
de la solución Z-Stack, y las interfaces de sistema y con ZDO, el procesador CC2480
aporta la interfaz Simple API o SAPI. La interfaz SAPI ofrece únicamente diez llamadas a
funciones API, esto facilita enormemente el desarrollo de aplicaciones ZigBee. Esta versión
simplicada está pensada para aquellos dispositivos el los que la pila de protocolos está
cargada en el procesador y, por lo tanto, no se permite un nivel de conguración tan
alto como el que API Z-Stack proporciona por lo que no son necesarias gran parte de las
llamadas que contiene. SAPI contiene lo necesario para formar una red ZigBee, vincular
dispositivos y enviar/recibir datos. Para conocer con mayor profundidad estos aspectos se
recomienda la consulta del documento 'CC2480 Interface Specication'3 .
Microprocesador MSP 430
Como se ha descrito a lo largo de esta sección, el procesador CC2480 se combina
con un microcontrolador MSP430F2274 que gestiona la parte de aplicación. Este microcontrolador tiene como principal característica el bajo consumo energético, lo cual lo hace
ideal para lograr uno de los principales propósitos de ZigBee, la duración de las baterías.
Esto se logra gracias a su arquitectura y a cinco modos de funcionamiento optimizados
para lograr un bajo consumo energético. Presenta una unidad de proceso RISC (Reduced
Instruction Set Computer ) de 16 bits con 16 registros, una memoria ash de 32 Kbytes y
una memoria RAM de 1 Kbyte.
3.1.2.
Conversor TTL-232R-3V3 de FTDI
Los conectores TTL-232R de FTDI son una familia de conversores de UART-TTL a
USB que permiten la gestión de toda la señalización y protocolos asociados al estándar
USB. Cada uno de estos conversores contiene un pequeño circuito impreso interno encapsulado en el propio conector USB incluido al nal del cable. El modelo concreto usado en
3 Disponible
en http://focus.ti.com/lit/er/swra175a/swra175a.pdf
3.1.
ELEMENTOS HARDWARE
47
este proyecto es el TTL-232R-3V3 y puede verse en la gura 3.6.
Figura 3.6: FTDI TTL-232R-3V3 [18]
La parte USB del conversor presenta funcionalidad USB de tipo 2.0. El cable mide 1.8m
de longitud y permite hasta 3 Mbaud de tasa de transferencia de datos. Además, cada
cable incorpora la identicación única desarrollada por FTDI y denominada FTDIChip-ID
que permite proporcionar seguridad a la hora del acceso para la transferencia de archivos
a través del conversor.
El conversor TTL-232R requiere una serie de controladores que le permiten aparecer en
el sistema operativo correspondiente como un puerto virtual, permitiendo de esta manera
la comunicación con este dispositivo mediante los puertos de emulación serie disponibles
en el sistema operativo (como por ejemplo TTY en el caso de Linux). Para el desarrollo
de este proyecto, la existencia de controladores para este conversor destinados a sistemas
operativos basados en el kernel 2.4 de Linux fue esencial para su elección frente a otras
alternativas, como podría haber sido el conversor proporcionado en el equipo de desarrollo
eZ430-RF2480 de Texas Instruments.
48
3.1.3.
CAPÍTULO 3.
COMPONENTES Y TECNOLOGÍAS UTILIZADAS
Router ASUS WL-500G Premium
La programación de nuestra pasarela Zigbee/802.15.4-IP se llevará a cabo sobre un
router ASUS WL-500G Premium. Esta elección se debe a la facilidad para poder instalar
en él un sistema operativo basado en Linux y al hecho de disponer de conexiones USB a
través de las cuales llegará la información procedente de nuestra red de sensores ZigBee.
Se muestra una breve descripción de sus principales características en la tabla 3.1.
Parámetro
Estándar Inalámbrico
Cifrado
Antena
Modulación
Frecuencia de operación
Tasa de transferencia de
datos nominal
Potencia de salida
Sensibilidad
Canales
WAN
LAN
Otras conexiones
Descripción
IEEE 802.11 b/g
WEP, WAP, WPA2
Antena IF interna y antena externa de
dipolo
OFDM, CCK, DQPSK, DBPSK
2.4 - 2.5 GHz
802.11g: 6, 9, 12, 18, 24, 36, 48, 54 Mbps;
802.11b: 1, 2, 5.5, 11Mbps
802.11g: 14~16dBm; 802.11b: 16~18dBm
-74~-75dBm a 54Mbps; -87~-88dBm a
11Mbps; -95~-97dBm a 1Mbps
13 para Europa (ETSI), 11 para Norte
America y 14 para Japón
1 puerto RJ-45 (10/100 BaseT) Fast
Ethernet (10/100 Mb/s)
4 puertos RJ-45 (10/100 BaseT) Fast
Ethernet (10/100 Mb/s)
2 puertos USB2.0
Tabla 3.1: Características Asus WL-500G Premium [2]
El enrutador presenta una serie de indicadores de tipo LED en el frontal que indican
su estado según actuen de una u otra manera. En la gura 3.7 podemos apreciar dichos
indicadores.
Como ya se indicó, una de las grandes ventajas del enrutador elegido es la gran capacidad de conectividad que presenta gracias a sus dos puertos USB 2.0. Además de esto,
presenta 4 puertos para conexiones LAN y otro puerto para conexión WAN, sin olvidar
3.1.
ELEMENTOS HARDWARE
49
Figura 3.7: Asus WL 500G Frontal
las conexiones para la antena (a la derecha) y la alimentación (a la izquierda) tal y como
puede apreciarse en la gura 3.8. Debe destacarse el interruptor restore, imprescindible
para la instalación del sistema operativo deseado como veremos más adelante.
Figura 3.8: Asus WL 500G Trasera
En lo referente a la arquitectura interna, el enrutador está compuesto de dos placas, la
principal y un módulo Wi-Fi. Esta última es una pequeña placa conectada a la principal
a través de una ranura miniPCI. Esta estructura puede apreciarse en la gura 3.9.
En la placa principal destacan dos chips, uno fabricado por Broadcom y denominado BCM4318E y otro denominado SiGe 2521A60. El chip BCM4318E es un controlador
inalámbrico altamente integrado que, entre otras tareas, es capaz de dar soporte a la tecnología propietaria de Broadcom denominada AfterBurner que permite un incremento de
50
CAPÍTULO 3.
COMPONENTES Y TECNOLOGÍAS UTILIZADAS
Figura 3.9: ASUS WL-500G Premium Interior
la tasa de transferencia de datos para 802.11g de hasta un 35 % mediante la compresión
de tramas. Por su parte, el chip SiGe 2521A60 es un módulo de radiofrecuencia para la
gestion de los estándares 802.11b y 802.11g.
Los principales componentes del enrutador, procesador y memoria, se encuentran en
la placa impresa principal bajo la carcasa metálica. El ASUS WL 500g Premium está
equipado con un procesador BCM4704 fabricado por Broadcom. Se trata de un procesador
MIPS4 (Microprocessor without Interlocked Pipeline Stages ) de 32 bits que puede funcionar
a una frecuencia de 300 MHz a pesar de que en este enrutador la frecuencia quede limitada
a 264 MHz.
El sistema operativo se almacena en una memoria ash de 8Mbytes fabricada por
Spansion. Además, cuenta con 32 Mbytes de memoria RAM5 para la ejecución de software.
Otros dos controladores a los que se debe hacer mención son el chip VT6212L fabricado
por VIA y el chip BCM5325E fabricado por Broadcom. El primero es un controlador para
4 Familia
de microprocesadores de arquitectura RISC desarrollados por MIPS Technologies.
5 Concretamente
DDR SDRAM
3.2.
ELEMENTOS SOFTWARE
51
los puertos USB 2.0 y el segundo es un conmutador Fast Ethernet con un buer para
tramas de 128 Mbytes y la capacidad de detectar el tipo de cable conectado al puerto
(ordinario o cruzado).
Para la resolución de problemas, se puede conectar al enrutador ASUS WL-500G Premium a través de un bus de tipo UART. El conector correspondiente se encuentra localizado en el borde derecho de la placa principal.
3.2.
3.2.1.
3.2.1.1.
Elementos software
Herramientas
DD-WRT
El software DD-WRT es un rmware libre con licencia GPL (General Public License) versión 2. Está destinado a una gran variedad de enrutadores inalámbricos IEEE
802.11a/b/g/h/n con arquitectura basada en chips Atheros o Broadcom.
Las versiones hasta la número 22 estaban basadas en el rmware Alchemy de Sveasoft,
que a su vez estaba basado en el rmware original de Linksys con licencia GPL. Desde la
versión 23 en adelante está basado en OpenWrt, que empezó siendo un rmware basado en
el de Linksys pero más tarde cambió a su propio entorno. La idea inicial de crear DD-WRT
surgió debido a la decisión de Sveasoft de comenzar a cobrar por su producto, cerrando
de esta manera la puerta al código abierto. Actualmente DD-WRT puede conseguirse de
manera gratuita en su web pero existen una serie de versiones solo accesibles previo pago.
Para determinar qué versión es adecuada instalar en nuestro enrutador, basta con acceder a la página ocial del rmware DD-WRT6 , una vez ahí acudir a la sección Support y
entrar a Router Database. Especicando nuestro modelo de router en el espacio correspondiente se mostrarán las versiones recomendadas para ser instaladas en nuestro dispositivo,
6 http://www.dd-wrt.com
52
CAPÍTULO 3.
COMPONENTES Y TECNOLOGÍAS UTILIZADAS
en este caso la elección es la versión 24 (build 12188). Es importante asegurarse de que la
versión es la adecuada ya que existen versiones con núcleo 2.6 y otras con núcleo 2.4 de
Linux, la instalación en el dispositivo inadecuado de cualquiera de ellas puede dar como
resultado la inutilización permanente del enrutador.
Además de existir distintas versiones disponibles, también es posible elegir entre varias
tipos de
rmware
dentro de cada versión, diferenciandose entre ellos por las utilidades
que incluyen instaladas por defecto. Esto último es importante ya que de esta elección
dependerán los requisitos, principalmente de memoria, de los que necesitaremos disponer
en nuestro enrutador.
En la tabla 3.2 se describen algunas características que pueden ser incluidas en DDWRT:
3.2.
53
ELEMENTOS SOFTWARE
Utilidad
Asterisk
Monitorización del ancho de banda
Chillispot
Afterburner
IPv6
JFFS2
Soporte de expansión de memoria
MMC/SD
Samba
Wake On LAN
RFlow Collector
Descripción
Aplicación que emula una PBX mediante
software. Permite el manejo de telefonía
sobre IP sin necesidad de añadir hardware
adicional, facilitando la interoperabilidad
con la mayoría de dispositivos estándares
de telefonía.
Monitorización de ancho de banda
consumido por cada usuario, media
temporal...
Aplicación para la autenticación de
usuarios. Permite el ingreso via web que es
el estándar actual para HotSpots públicos.
Incrementa el throughput WiFi a través
de procesos software.
Versión de IP denida en el RFC 2460 y
diseñada para reemplazar a la versión 4
denida en el RFC 79
Área dentro de un dispositivo equipado
con DD-WRT para la re-escritura habitual
de datos.
Permite añadir memoria externa al
enrutador para el almacenamieto de datos
y/o aplicaciones.
Implementación libre del protocolo de
archivos compartidos de Microsoft
Windows (antiguamente llamado SMB,
renombrado recientemente a CIFS) para
sistemas de tipo UNIX.
Permite encender remotamente
ordenadores en estado de hibernación o
apagados.
Permite el envío y almacenamiento de
información relacionada con el tráco de
la red para su posterior estudio.
Tabla 3.2: DD-WRT: Utilidades principales [1]
54
CAPÍTULO 3.
COMPONENTES Y TECNOLOGÍAS UTILIZADAS
La elección de DD-WRT para la realización de este Proyecto Fin de Carrera se basó en
la existencia de controladores para el conversor TTL-232R-3V3 de FTDI, la facilidad de
conguración a través de su interfaz web, cuya pantalla principal puede verse en la gura
3.10, y la posibilidad de incluir el desarrollo software realizado para el funcionamiento de
la pasarela dentro de la estructura del rmware a instalar en el router.
Figura 3.10: DD-WRT: Interfaz Web
El lenguage de programación bajo el que está desarrollado el núcleo de DD-WRT es
C++, existiendo además compiladores cruzados para la creación de aplicaciones dirigidas
a routers con arquitectura MIPS tal y como es el caso del ASUS WL-500G Premium.
En sucesivos capítulos se describirá de una manera detallada el proceso de compilación,
instalación y conguración del rmware para lograr la completa adaptación de éste a los
requerimientos deseados.
3.2.
ELEMENTOS SOFTWARE
3.2.1.2.
55
Entorno de desarrollo Eclipse
Eclipse es una comunidad cuyos objetivos están centrados en la realización de una plataforma de código abierto para el desarrollo de aplicaciones. Se puede mantener el mismo
entorno de desarrollo pero variar el lenguage de programación usado para la aplicación a
desarrollar sin más que añadir distintos módulos. La Fundación Eclipse7 es una asociación
sin ánimo de lucro que busca tanto el mantenimiento del entorno de desarrollo Eclipse
como el crecimiento de una serie de productos y servicios complementarios a éste a la vez
que promueve la comunidad de código abierto surgida entorno a este proyecto.
El Proyecto Eclipse fue creado por IBM en Noviembre de 2001 y apoyado por una
agrupación de desarrolladores de software. La Fundación Eclipse fue creada en Enero de
2004 como medio que permitiese a cualquier empresa neutral y abierta establecerse en
alrededor de todo lo relacionado con Eclipse. Puede apreciarse la estructura de la pantalla
principal de Eclipse en la gura 3.11.
Figura 3.11: Eclipse: Pantalla Principal
Existe la extendida idea de que Eclipse es simplemente una extensión dedicada al
7 http://www.eclipse.org/org/foundation/
56
CAPÍTULO 3.
COMPONENTES Y TECNOLOGÍAS UTILIZADAS
desarrollo de software Java, pero nada más lejos de la realidad ya que Eclipse permite
la adición de módulos para el desarrollo de aplicaciones en lenguages de programación
tan diversos como pueden ser C/C++, PHP, Perl, Ruby y JavaScript. Cada una de estos
módulos se denominan Kits de Desarrollo Software (SDK) y permiten desde la corrección
de la sintaxis utilizada, hasta la depuración y compilación del código, pasando por la
información acerca de las API que pueden utilizarse y como deben ser utilizadas. Otra
interesante característica de Eclipse es su capacidad para ocultar bloques de código que
hacen más fácil la comprensión y manejo del mismo cuando éste crece.
En cuanto a su rendimiento, Eclipse se muestra muy estable, presentando como único inconveniente su consumo de memoría, que lo hace especialmente lento en aquellas
máquinas con pocos recursos de memoria RAM.
En el caso de este Proyecto Fin de Carrera se hace uso de Eclipse en combinación con
el SDK de C++, todo ello ejecutado bajo un sistema operativo Ubuntu 10.04.
3.2.1.3.
MSP430 IAR Embedded Workbench
La aplicación MSP430 IAR Embedded Workbench es un entorno de desarrollo de
C/C++ que integra las funciones necesarias para la realización de aplicaciones empotradas
destinadas a la familia de microcontroladores MSP430. Se muestran a continuación los
elementos más destacados de los que está compuesto:
Editor de textos
Permite la edición de varios archivos en paralelo, además de todas las características básicas exigidas en un editor de textos moderno, como la posibilidad de hacer/rehacer
de forma ilimitada acciones. Provee también características destinadas a facilitar el desarrollo de software como puede ser el resaltado de palabras clave del lenguage C/C++.
3.2.
ELEMENTOS SOFTWARE
57
Compilador IAR C/C++
Incluye las características básicas de un compilador C/C++ además de extensiones
que permiten aprovechar las facilidades que los microcontroladores de la familia MSP430
ofrecen.
Depurador IAR C-SPY
Se trata de un depurador de código de alto nivel destinado a aplicaciones empotradas. Está especialmente diseñado para su uso junto a ensambladores y compiladores
de IAR System. Entre sus características incluye la posibilidad de editar el código fuente
mientras se está depurando éste.
El depurador está compuesto de dos módulos, uno que aporta un conjunto de acciones
para la depuración y otro que actúa como un controlador, permitiendo la comunicación y
control del dispositivo destino de la aplicación desarrollada.
Simulador IAR C-SPY
Este módulo permite simular las funciones del procesador destino mediante software. Así, mediante IAR C-SPY, la aplicación puede ser depurada antes de que sea portado
al dispositivo destino, facilitando la tarea y ahorrando tiempo de forma considerable.
Depurador C-SPY FET
Se trata de una emulador a través de conexión JTAG (Joint Test Action Group ),
incluida en todas las placas de desarrollo de Texas Instruments. Este módulo permite la
descarga de la memoria ash y aprovecha las facilidades de la depuración sobre el chip.
Podemos ver la estructura de MSP430 IAR Embedded Workbench en la gura 3.12:
58
CAPÍTULO 3.
COMPONENTES Y TECNOLOGÍAS UTILIZADAS
Figura 3.12: MSP430 IAR Embedded Workbench: Estructura [24]
Para la ejecución de este Proyecto Fin de Carrera, MSP430 IAR Embedded Workbench
fue utilizado para la modicación del software residente en las motas proporcionadas por
el equipo de desarrollo eZ430-RF2480 de Texas Instruments, usándose la versión de prueba
disponible en su web8 .
3.2.1.4.
WinSCP
WinSCP es una aplicación libre y descargable desde su web9 que se ejecuta bajo sistemas operativos Windows y permite conectarse a un servidor SSH (Secure Shell ) empleando
el protocolo SFTP (SSH File Transfer Protocol ) o el servicio SCP (Secure Copy Protocol ). WinSCP permite efectuar las operaciones básicas con archivos, tales como descargas
y subidas. Tambien es posible renombrar archivos y directorios, crear nuevos directorios,
modicar las propiedades de archivos y carpetas, y crear enlaces simbólicos y accesos
directos.
WinSCP permite la elección entre dos tipos de interfaces, uno denominado 'commander' que consta de dos paneles (el izquierdo dedicado al directorio local y el derecho al
8 http://www.iar.com/website1/1.0.1.0/220/1/
9 http://winscp.net/eng/docs/lang:es
3.2.
ELEMENTOS SOFTWARE
59
directorio remoto) y otro denominado 'explorer' en el que solo se muestra un panel (con
la información referida al directorio remoto). En la gura puede observarse el interfaz
'commander ' de WinSCP.
Esta aplicación fue usada para la transferencia de archivos al router equipado con
DD-WRT para facilitar y agilizar el proceso de prueba de los mismos.
3.2.1.5.
Putty
PuTTY es un cliente SSH, Telnet, rlogin, y TCP raw con licencia MIT. Disponible
originalmente sólo para Windows, ahora también está disponible para varias plataformas
Unix en su web10 . Su característica más importante de cara a su uso en este Proyecto
Fin de Carrera es su soporte para conexiones de puerto serie local, que fue imprescindible
para la comprobación del buen funcionamiento del conversor TTL-232R-3V3 de FTDI
conectado a las motas ZigBee proporcionadas por el equipo de desarrollo eZ430-RF2480
de Texas Instruments, así como para la visualización del formato de trama enviado por
éstas.
La conguración adecuada para una correcta recepción de los datos es: 9600 baudios, 8
bits de datos, 1 bit de parada y ningún control de ujo ni de paridad. Los datos se reciben
en formato ASCII (American Standard Code for Information Interchange ). Se puede ver
la pantalla principal de putty en la gura 3.13.
10 http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html
60
CAPÍTULO 3.
COMPONENTES Y TECNOLOGÍAS UTILIZADAS
Figura 3.13: Putty: Pantalla Principal
3.2.1.6.
XVI32
XVI32 es un editor hexadecimal freeware 11 . Su utilidad viene del hecho de que los
valores recibidos mediante Putty se encuentran en formato ASCII y a través de esta
utilidad podremos pasar del formato ASCII proporcionado a un formato hexadecimal al
que se está más habituado y suele ser más cómodo leer. Para ello, los datos recibidos por
Putty deben ser almacenados en un archivo de texto. Posteriormente bastará ejecutar la
utilidad XVI32 y arrastrar sobre su ventana principal el archivo de texto con los datos en
formato ASCII, mostrándose en pantalla el equivalente en hexadecimal. Se puede ver un
ejemplo de conversión a hexadecimal hecho por XVI32 en la gura 3.14, en ella pueden
apreciarse a la derecha los valores en formato ASCII y a la izquierda su equivalente en
formato hexadecimal.
11 Puede
obternerse en http://www.chmaas.handshake.de/delphi/freeware/xvi32/xvi32.htm
3.2.
ELEMENTOS SOFTWARE
61
Figura 3.14: XVI32: Ejemplo de cambio de formato
3.2.2.
Programación
3.2.2.1. C++
C++ fue una evolución de C, el cual surgió a partir de dos lenguajes de programación
previos, BCPL y B. BCPL fue desarrollado en 1967 por Martin Richards como medio para
escribir software de sistemas operativos y compiladores. Posteriormente, Ken Thompson
creó muchas características de su lenguaje B según sus equivalentes en BCPL, valiéndose
de B para crear las primeras versiones del sistema operativo UNIX. BCPL y B tenían
también en común que eran lenguages sin tipos denidos.
El lenguaje C fue una evolución de B llevada a cabo por Dennis Ritchie en los Laboratorios Bell. C se basa en muchos conceptos básicos de BCPL y de B, añadiendo como gran
novedad los tipos de datos. C se hizo muy popular en sus comienzos por el ser el lenguaje
de desarrollo del sistema operativo UNIX.
62
CAPÍTULO 3.
COMPONENTES Y TECNOLOGÍAS UTILIZADAS
La gran difusión vivida por C tuvo también aspectos negativos, el más destacado fue
que, al estar disponible para muchos tipos de ordenadores, surgieron demasiadas variantes, siendo parecidas entre ellas pero a menudo incompatibles. Surgia de esta manera un
gran roblema para aquellos desarrolladores con necesidades de crear software portable a
distintas plataformas. Como respuesta a este problema, en 1983 se creó el comité técnico
X3J11 bajo el ANSI (American National Standards Institute ), con el objetivo de denir el
lenguaje de manera independiente del equipo. Finalmente, en 1989 se aprobó el estándar
y el ANSI trabajó junto a ISO (International Organization for Standardization ) en su estandarización a nivel mundial, publicándose el documento conjunto del estándar en 1990
bajo el nombre 'ANSI/ISO 9899: 1990'.
Por otro lado, a principios de los 80, Bjarne Stroustrup creó C++, una extensión de C.
C++ añade una serie de características que mejoran el lenguaje C, pero sobre todas ellas,
la más importante fue la inclusión de la capacidad de programación orientada a objetos. El
concepto de objeto surgía novedoso pero traería con él la puerta de acceso denitiva para
la construcción de software de forma rápida y económica. Los objetos son componentes de
software reutilizables capaces de simular elementos reales, permitiendo a los programadores
una mayor facilidad a la hora de entender, corregir y modicar su software que con la
anterior visión de programación estructurada. C++ era y es un lenguage híbrido ya que
es posible programar tanto en estilo C como en estilo orientado a objetos o en ambos.
En 1983 el nombre C++ fue propuesto y aceptado. La primera implementación comercial de C++, cfront 1.0, fue lanzada en 1985, se trataba de un traductor de C++ a C.
C++ está denido y mantenido por el comité ISO, compuesto por delegados de asociaciones nacionales de estandarización como ANSI, DIN (Deutsches Institut für Normung ) y
muchas otras. El primer estándar de C++ fue aprobado en 1998 bajo el nombre ISO/IEC
14882, habiendose publicado hasta hoy dos revisiones de éste. El estándar ISO de C++
dene el lenguaje del núcleo, las librerías incluídas de manera estándar y los requisitos
de implementación. Se espera para próximas fechas el lanzamiento del nuevo estándar de
C++, siendo el nombre no ocial de éste C++0x.
La implantación del uso de C y C++ es mayoritaría entre la comunidad desarrolladora
de software pero su inuencia es aún mayor al ser la base de otros lenguajes de programación ampliamente usados en la actualidad como es Java, de Sun Microsystems. En la
3.2.
ELEMENTOS SOFTWARE
63
gura 3.15 se muestra la distribución de uso de los principales lenguaes de programación
en los últimos díez años.
Figura 3.15: Lenguages de Programación: Distribución de uso [29]
La gura 3.15 muestra como los tres lenguages de programación más usados en la
actualidad y en los últimos años son C, C++ y Java, estando éste último basado en C++.
Podemos de esta manera calibrar la importancia de C++ al tratarse de un lenguage híbrido
y permitir programar tanto en estilo C como en estilo orientado a objetos o en ambos.
En el caso de este Proyecto Fin de Carrera, el uso de C++ viene determinado por ser
el lenguaje bajo el que está desarrollado el sistema operativo DD-WRT.
3.2.2.2.
CGI
CGI (Common Gateway Interface ) es un estándar que permite la comunicación de
aplicaciones externas con servidores. Un programa CGI se ejecuta en tiempo real, por lo
que permite la generación de información de manera dinámica.
64
CAPÍTULO 3.
COMPONENTES Y TECNOLOGÍAS UTILIZADAS
Un ejemplo clásico de uso de CGI es la comunicación de una base de datos con Internet
para permitir su consulta a través de un servidor. Para llevar esto a cabo se necesitará
un programa CGI, al que la página web del servidor llamará cuando el usuario así lo
decida, que permitirá extraer resultados de la base de datos y mostrárselos posteriormente
al usuario.
A la hora de usar CGI no hay límites respecto a lo que se puede realizar pero deberá
tenerse siempre presente que el tiempo de cómputo deberá presentar una baja latencia
para no sobrecargar el servidor en caso de recibir varias peticiones.
Como un programa CGI es un ejecutable, es equivalente a dejar a cualquier usuario
ejecutar un programa en el sistema, decisión que no es la más segura. Por ello existen una
serie de precauciones de seguridad que deben implementarse cuando se usan programas
CGI de las cuales la más importante es que los programas CGI necesitan residir en un
directorio especial. Así el servidor sabe que tiene que ejecutarlo, en vez de simplemente
mostrarlo por pantalla. Este directorio está bajo el control del administrador del servidor,
prohibiendo de esta manera al usuario crear programas CGI. El directorio anteriormente
mencionado suele denominarse /cgi-bin y estar dentro del directorio destinado a almacenar
las páginas web alojadas en el servidor, normalmente /www. El servidor conoce que el
directorio /cgi-bin contiene ejecutables que deberán ser ejecutados y su salida deberá ser
enviada al navegador del cliente.
Un programa CGI puede ser escrito en cualquier lenguage de programación que pueda
ser ejecutado en el sistema, en el caso de este Proyecto Fin de Carrera os programas se han
desarrollado haciendo uso de C++. Se debe hacer mención al hecho de que CGI permite
la ejecución de programas tanto de tipo interpretado como compilado, lo que permite
también el uso de scripts.
Para el paso de datos del servidor al programa CGI, el servidor puede usar tanto líneas
de comando como variables de entorno que se activan cuando se ejecuta el programa CGI.
Se describen a continuación de forma breve estas variables de entorno:
3.2.
ELEMENTOS SOFTWARE
65
SERVER_SOFTWARE
Devuelve el nombre y la versión del software del servidor de información que contesta la petición de usuario.
SERVER_NAME
Devuelve nombre de host del servidor, el alias DNS, o la dirección IP como aparecería en las URL autoreferenciadas.
GATEWAY_INTERFACE
Devuelve la revisión de la especicación CGI con
que el servidor puede trabajar.
Las variables anteriormente mencionadas son activadas en todos los casos por el servidor, con independencia de la información enviada, por otro lado, las que se muestran a
continuación son especícas de la petición hecha por el usuario.
SERVER_PROTOCOL
Devuelve el nombre y revisión del protocolo de información bajo el que se realizó la petición.
SERVER_PORT
Devuelve el número de puerto por el cual fue enviada la peti-
ción.
REQUEST_METHOD
QUERY_STRING
Devuelve el método por el cual la petición fue enviada.
Hace referencia a la parte de la URL con la que se llama
al programa CGI que viene inmediatamente después del símbolo ' ?'. Esta variable de
entorno es usada para pasar una lista de pares variable-valor usando el símbolo '&' como
delimitador de cada uno de los pares y el símbolo '=' como separador entre la variable y su
valor. Para evitar confusiones, algunos caracteres son codicados. Esta variable es usada
principalmente para pasar a los programas CGI información asociada a formularios.
66
CAPÍTULO 3.
COMPONENTES Y TECNOLOGÍAS UTILIZADAS
REMOTE_HOST y REMOTE_ADDR
Devuelven el nombre del host que
realiza la petición y la dirección IP del host remoto que realiza la petición respectivamente.
AUTH_TYPE
Si el servidor soporta autenticación de usuario , y el programa
CGI está protegido, este es el método de autenticación especíco del protocolo para
validar el usuario.
REMOTE_USER
Si el servidor soporta autenticación de usuario , y el script
está protegido, este será el nombre de usuario con el que se ha autenticado.
REMOTE_IDENT
Si el servidor HTTP soporta autenticación RFC 931 , entonces está variable se activará con el nombre del usuario remoto obtenido por el servidor.
Esta varible solo se utilizará durante el login.
CONTENT_TYPE
Para peticiones que tienen información añadida, como HTTP
POST y PUT, este será el tipo de datos contenido.
CONTENT_LENGTH
Devuelve la longitud del contenido tal como es dado por
el cliente.
Para devolver como respuesta una página web, bastará con imprimir ésta en pantalla
usando una función destinada a ello dentro del lenguaje de programación elegido para la
creación del programa CGI, respetando el estándar usado por el servidor para la presentación de webs. En los programas CGI usados en este Proyecto Fin de Carrera se hace uso
de la función printf en combinación con HTML. Un ejemplo de esta combinación podría
ser:
printf("<HTML>\n");
printf("<HEAD>\n");
printf("<TITLE>Ejemplo de página impresa mediante CGI usando HTML\n");
3.2.
67
ELEMENTOS SOFTWARE
printf("</TITLE>\n");
printf("</HEAD>\n");
printf("</HTML>\n");
Lo anterior, al ejecutarse dentro de un programa CGI escrito en C++, daría como
resultado la impresión por pantalla de una página web en blanco con la cabecera Ejemplo
de página impresa mediante CGI usando HTML.
Por último, se debe mencionar también que el código CGI, una vez compilado, deberá
ser guardado en la carpeta cgi-bin anteriormente indicada, con permisos de ejecución y
extensión 'cgi'.
3.2.2.3.
HTML
HTML (
HyperText Markup Language ) es el lenguage de programación básico usado
en la web. El código de HTML hace uso del concepto de etiquetas para permitir a los
navegadores la correcta representación de las páginas web. Para comprender la forma en
la que se estructura un código HTML se puede hacer una similitud con el cuerpo humano,
ya que las etiquetas aparecen según un orden lógico, limitándose qué puede aparecer o no
antes o después de cada una de ellas, si hacemos la similitud con el cuerpo humano, si se
observa éste de arriba abajo y consideramos sus distintas partes como etiquetas, nunca
aparecerá antes la etiqueta 'piernas' que la etiqueta 'cabeza'.
El lenguaje HTML es un estándar, compuesto por recomendaciones publicadas por
World Wide Web Consortium ). Las especicaciones
un consorcio internacional: el W3C (
ociales de HTML describen las "instrucciones" del lenguaje, pero no cómo seguirlas, es
decir, cómo las interpretan los programas informáticos. Esto permite visualizar páginas
Web independientemente del sistema operativo o la arquitectura del equipo del usuario.
Sin embargo, pese a lo detallado de las especicaciones, existe margen para la interpretación por parte del navegador y esta es la razón por la que la misma página puede
aparecer de modo diferente en un navegador u otro. Es más, algunos editores de software
agregan instrucciones HTML exclusivas que no se hallan en las especicaciones de W3C.
68
CAPÍTULO 3.
COMPONENTES Y TECNOLOGÍAS UTILIZADAS
Por este motivo, las páginas Web que contienen dichas instrucciones pueden ser vistas en
un navegador, y ser completa o parcialmente ilegibles en otros. Debido a lo anteriormente
expuesto, las páginas Web deben seguir las recomendaciones de W3C, de forma que lleguen
al público más amplio posible.
Para un aprendizaje detallado acerca de HTML se recomienda consultar la especicación ocial de HTML 4.0112 .
12 Disponible
en http://www.w3.org/TR/html401/
Capítulo 4
Desarrollo del sistema
4.1.
Descripción de ob jetivos
El sistema a desarrollar debe permitir, de manera general, transferir información desde
una red de motas ZigBee/802.15.4 hasta una o varias direcciones IP, usando como elemento
intermedio un dispositivo con capacidad de enrutamiento. En las siguientes secciones se
describirá con detalle las distintas tareas llevadas a cabo para llevar a buen término lo
anteriormente descrito, comenzando por las necesidades puramente hardware necesarias
para la comunicación entre las motas/sensores y el enrutador, pasando por los distintos
elementos software desarrollados y acabando por la integración del software con el sistema
operativo elegido para el enrutador, proporcionandose de esta manera un paquete software
completo con todo lo necesario para su funcionamiento en el enrutador desde el mismo
momento de su instalación sin más que disponer de los elementos hardware necesarios.
4.1.1.
Requisitos del sistema
Para mostrar una visión más clara del sistema desarrollado se enumeran a continuación
los requisitos, tanto funcionales como operacionales, que ejercieron de guía a la hora de
69
70
CAPÍTULO 4.
DESARROLLO DEL SISTEMA
tomar las distintas decisiones que se fueron llevando a cabo en cada una de las fases del
proyecto.
Requisitos operacionales
• Permitir la transferencia de datos procedentes de una red de motas ZigBee/802.15.4,
siendo transparente la información transportada en dichos datos, hacia una serie
de direcciones IP especicadas por el usuario.
• Conseguir la integración del desarrollo en el sistema operativo alojado en el
enrutador, de manera que se facilite la instalación y uso por parte del usuario.
Requisitos funcionales
• La base sobre la que se desarrollará el sistema deberá ser un sistema operativo
Linux.
• Se usará el protocolo UDP.
• La aplicación destinada a ejecutarse en el enrutador para ejercer las tareas de
recogida de datos de la red ZigBee/802.15.4 y, posteriormente, el envío a las
direcciones IP indicadas, deberá funcionar en segundo plano.
• Las direcciones IP que podrán ser introducidas como destinatarias deberán
cumplir con el protocolo IPv4.
• El usuario podrá añadir o eliminar direcciones IP destino en cualquier momento,
independientemente de si el sistema se encuentra en funcionamiento o no.
• El usuario deberá ser capaz de visualizar las direcciones IP que se encuentren
actualmente almacenadas como destinatarias de los datos procedentes de la red
ZigBee/802.15.4.
• Las direcciones IP introducidas por el usuario deberán pasar a través de una
aplicación que las valide, evitándose de esta manera errores en el funcionamiento
derivados de la introducción de direcciones IP incorrectas según el protocolo
IPv4.
• El usuario podrá elegir el puerto a través del cual se enviarán los datos proce-
dentes de la red de sensores y visualizarlo desde la interfaz web.
4.2.
71
CONECTIVIDAD ENTRE DISPOSITIVOS
• Los cheros, carpetas y módulos necesarios para el correcto funcionamiento del
sistema deberán crearse o cargarse al encenderse el enrutador, de manera que
la aplicación pueda ser ejecutada en cualquier momento desde su puesta en
marcha.
• El usuario deberá tener a su disposición una interfaz que le permita conocer el
estado actual de la aplicación en cuanto a su funcionamiento o no.
4.2.
Conectividad entre dispositivos
Como primer paso en el desarrollo de la pasarela ZigBee/802.15.4 - IP se debe conseguir la comunicación entre la red formada por las motas ZigBee/802.15.4 y el router
especicados1 . Para lograr esta comunicación se hace uso, por un lado, de la capacidad
de conexiones vía USB del router y, por otro, de la posibilidad de replicación de los datos
intercambiados entre el microcontrolador MSP430 y el procesador CC2480 a través de la
conexión UART. Gracias a ésto, todos aquellos datos procedentes de los distintos sensores ZigBee/802.15.4 que llegan hasta el dispositivo coordinador pueden ser leídos usando
esta interfaz UART. Usando un conversor que permita la comunicación entre la conexión
UART y la entrada USB del router se conseguirá la transmisión de los datos procedentes
de la red de sensores hacia el mismo.
La característica necesaria para la elección del conversor fué la existencia de controladores adecuados al sistema operativo basado en un kernel 2.4 elegido para funcionar
en el router. La primera opción fué la utilización del conector USB proporcionado por el
equipo de desarrollo eZ420-RF2480 de Texas Instruments, sin embargo, su uso debió ser
rechazado debido a la imposibilidad de compilar adecuadamente los controladores disponibles, pensados para su funcionamiento en un kernel 2.6 o superior. Consultando distintas
alternativas con módulos controladores para un kernel 2.4, nalmente se eligió el coversor
TTL-232R-3V3 de FTDI descrito en la subsección 3.1.2. En la gura 4.1 se muestra el
detalle referente a los distintos pines existentes en el conversor.
1 Tal
y como se indicó en la sección 3.1, se usarán las motas incluidas en el equipo de desarrollo eZ430-
RF2480 de Texas Instruments para la formación de la red ZigBee/802.15.4 y el
Premium como elemento intermedio entre ésta y la red IP.
router
ASUS WL-500G
72
CAPÍTULO 4.
DESARROLLO DEL SISTEMA
Figura 4.1: FTDI TTL-232R-3V3: Pin out [18]
Una vez elegido el conversor se ha de determinar la manera en la que éste ha de ser
interconectado al sensor que actuará como dispositivo coordinador de la red. Para ello se
hace uso del esquemático de conexión entre MSP430 y CC2480 mostrado en la gura 4.2
en el que se especica el signicado de cada uno de los pines de salida del sensor.
Una vez estudiado el esquemático, se determina que los terminales del conversor y del
sensor han de ser interconectados según se indica en la tabla 4.1. Se debe tener en cuenta
que todo aquel terminal o pin no usado debe ser convenientemente conectado para evitar
posibles malos funcionamientos.
Terminal del conversor Pin del sensor
Amarillo
Orange
Black
Red
6
1
5
2
Tabla 4.1: Interconexión entre conversor y sensor
4.2.
CONECTIVIDAD ENTRE DISPOSITIVOS
Figura 4.2: Esquemático de conexión entre MSP430 y CC2480
73
74
4.3.
CAPÍTULO 4.
DESARROLLO DEL SISTEMA
Desarrollo de la aplicación pasarela
En esta sección se presentan los detalles más importantes referidos a la aplicación
principal de este Proyecto Fin de Carrera. Se trata del programa que toma los datos
que llegan al puerto USB y los reenvía a las direcciones IP especicadas en el archivo
correspondiente. Dicho reenvío estará siempre supeditado a que la trama de datos recibida
por el puerto USB cumpla con el formato de trama asociado a nuestra pasarela. Si esta
condición se cumple, los datos serán leídos y pasarán a formar parte de un paquete UDP
(User Datagram Protocol ) que será encaminado a través de la interfaz o de las interfaces
correspondiente del router para así poder alcanzar todos los destinos indicados por el
usuario de la aplicación.
El usuario deberá especicar el puerto a través del cual desea que sean enviados los
datos procedentes de la red de sensores, así como las direcciones IP que actuarán como
destinatarias.
Se debe tener en cuenta que, a la hora de compilar la aplicación pasarela se usaron dos
compiladores distintos, según se desease ejecutarla en un ordenador o en el router. Así,
para su ejecución sobre un ordenador, cualquiera de los compiladores de C++ existentes
para Linux es válido, mientras que para su ejecución en el router se hizo uso del compilador
cruzado 'mipsel-linux-uclibc-c++'.
4.3.1.
Funciones que componen la aplicación pasarela
A continuación se muestran las distintas funciones que componen la aplicación pasarela,
además de una breve descripción de su funcionamiento y sus aspectos más destacados
referentes a la composición del código fuente.
4.3.
DESARROLLO DE LA APLICACIÓN PASARELA
75
void AdecuacionRouter()
Se encarga de la carga de los módulos necesarios para el correcto funcionamiento del conversor, de la creación de la estructura de carpetas en el sistema operativo y
de la creación e inicialización de los archivos que indican el estado, las direcciones IP
destinatarias y la página web que permite la visualización de estas direcciones.
int AbrirPuertoSerie (char *dispositivo)
Establece el vínculo con el puerto USB al que se conectará el conversor TTL-232R3V3 de FTDI, determinándose además su modo de apertura, en este caso de entrada y en
modo binario. Todo lo anterior se establece a través de:
open(dispositivo,std::ios::in | std::ios::binary)
Por último indicar que devuelve un entero con el descriptor de chero asociado a la
apertura previamente realizada.
void CerrarPuertoSerie (int fd, struct termios cong)
Finaliza el vínculo con el puerto USB previamente establecido a través de la función 'AbrirPuertoSerie'. Para ello se le debe pasar como parámetro el descriptor de chero
devuelto por ésta última función. Como actuación complementaria, congura el puerto
USB con los mismos parámetros existentes antes de la ejecución de la aplicación 'pasarela'
mediante el paso del parámetro 'cong'. Este parámetro será obtenido al comienzo de la
ejecución de la pasarela, previamente al cambio de conguración del puerto USB para
lograr el funcionamiento necesario para el correcto desempeño de la aplicación 'pasarela'.
Lo anteriormente explicado se ejecuta mediante el siguiente código:
tcsetattr(fd, TCSANOW, &config);
close(fd);
76
CAPÍTULO 4.
DESARROLLO DEL SISTEMA
La función 'tcsetattr' congura el puerto USB asociado al indicador de chero 'fd' según lo indicado a través del parámetro 'cong'. Por último, 'TCSANOW' es una constante
simbólica denida en la librería <termios.h> que indica que el cambio de conguración se
lleve a cabo de manera inmediata.
struct termios CongurarPuertoSerie (int fd, int baudios, int datos, int parada,
int paridad, int tipo_paridad, int modo, int tamano, int temporizador)
Haciendo uso de esta función se establece la conguración del puerto USB desde el
que se leerán los datos procedentes del conversor. Tal y como se desprende de los nombres
de los parámetros, la conguración queda determinada mediante el número de símbolos
transmitidos por segundo, los bits de parada, la existencia o no de paridad así como su
tipo, el modo de operación (canónico o no canónico), el número de caracteres adquiridos en
cada lectura y un temporizador entre lecturas sucesivas que para este caso será establecido
a cero y por lo tanto quedará desactivado.
Todos los datos anteriormente descritos para lograr la conguración del puerto USB
han de ser introducidos en una estructura especíca para tal n, esta estructura es del
tipo struct termios. Este tipo de estructura aporta una interfaz para la conguración de
los parámetros de comunicación con dispositivos asíncronos. La forma de completar dicha
estructura es la siguiente:
nuevaconfig.c_cflag = baudios|datos|parada|paridad|tipo_paridad|CLOCAL|CREAD;
nuevaconfig.c_lflag = modo;
nuevaconfig.c_cc[VMIN] = tamano;
nuevaconfig.c_cc[VTIME] = temporizador;
Previamente a la ejecución del cambio de conguración del puerto USB de obtendrá la
conguración actual del puerto para después ser devuelto a su estado original una vez terminada la ejecución de la aplicación pasarela. Esta conguración actual es proporcionada
por la función 'CongurarPuertoSerie' para luego ser usada por la 'CerrarPuertoSerie'.
4.3.
DESARROLLO DE LA APLICACIÓN PASARELA
77
La obtención y el cambio de conguración son llevados a cabo por las funciones 'tcgetattr' y 'tcsetattr' respectivamente.
static void Demonizar (void)
Mediante esta función se consigue que la aplicación pasarela sea ejecutada en
background, es decir, como un demonio o servicio. Para ello debe ser invocada al comienzo
de la función main. Su funcionamiento consiste en crear un proceso hijo que tiene su propia
copia de datos y código del padre. Además, redirigirá la salida y entrada estándar hacia
'/dev/null'.
Gracias a esto, la ejecución de la pasarela continuará sigamos o no conectados al router,
sin perjuicio para la ejecución de otras aplicaciones residentes en él.
void Lectura_y_Envio (int puerto_serie)
En esta función se realiza la lectura de la trama recibida en el puerto USB y
posterior reenvío.
Cuando se reciben datos en el puerto USB, se leen los bytes uno a uno. Si el byte
recibido contiene 'FE' se habrá detectado el SOF, de esta manera se puede determinar
que el byte que vendrá tras SOF será la longitud del campo de datos. Sabiendo que además
de los bytes pertenecientes al campo de datos, existen otros tres bytes más enviados por
los sensores, correspondientes a los campos de comando y FCS, se podrá indicar cuantos
bytes deberán leerse a continuación hasta esperar de nuevo a la recepción de un byte con
el contenido del SOF. El formato de la trama se mostró en la gura 3.4. Para la lectura
de los datos llegados al puerto USB se hará uso de la función 'RecibirPorPuertoSerie', que
será explicada a continuación.
Una vez que se tiene almacenada la trama completa, se procede al envío de la misma a
todos los destinatarios especicados por el usuario. Para ello se sigue un proceso iterativo
en el que se lee el chero en el que se almacenan las direcciones IP, hasta llegar al nal
78
CAPÍTULO 4.
DESARROLLO DEL SISTEMA
del mismo. Cada vez que se lea una dirección IP se creará un socket UDP en el que se
incluirá la trama procedente del conversor anteriromente leída y que llevará como destino
la dirección IP recien leída.
El proceso anteriormente descrito de recepción de trama y posterior envío de la misma
a todas las direcciones IP almacenadas como destino será repetido de manera continuada
mientras no se indique la detención de la pasarela u ocurra algún error en su ejecución.
En cuanto al proceso de creación y envío del socket, se aprecian distintas acciones
necesarias para su correcta ejecución. En primer lugar deben reservarse recursos para el
socket mediante:
socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP)
Esta función devuelve un indicador de socket que será utilizado para hacer referencia
a él una vez creado. Como parámetros se le pasan tres constantes simbólicas. La primera
de ellas, AF_INET, indica que el socket está destinado a su envío a través de Internet. La
segunda, SOCK_DGRAM, especica el uso de datagramas en lugar del establecimiento
de un circuito virtual para su envío. La tercera y última constante simbólica pasada como
parámetro, IPPROTO_UDP, indica que se debe usar el protocolo de nivel de transporte
UDP. UDP es el protocolo estándar para el nivel de transporte cuando enviamos datagramas a través de redes IP por lo que también podría haberse pasado como parámetro cero,
de manera que sería el propio sistema operativo el que elegiría el protocolo para el envío
de datagramas más apropiado, que hubiera sido UDP de igual manera.
Una vez que se está seguro de disponer de recursos necesarios para procesar el socket,
se procede a completar la estructura de tipo 'sockaddr_in', especicando en ella la familia
de direcciones a las que podrá ser enviado, en este caso direcciones IP, y el puerto a través
del cual se enviará. Para este propósito se rellena la estructura como sigue:
descr_socket.sin_family = AF_INET;
descr_socket.sin_port = htons(PORT);
4.3.
DESARROLLO DE LA APLICACIÓN PASARELA
79
Como último paso, y si todo lo anterior ha sido realizado de manera correcta y sin
errores, se procede al envio del socket descrito, indicando el descriptor de socket para el
que se reservaron recursos, la dirección IP a la que se envía y la descripción del socket.
Todo se lleva a cabo gracias a:
inet_aton(linea, &descr_socket.sin_addr);
sendto(s, buf, BUFLEN, 0, (struct sockaddr *)&descr_socket, slen);
Siendo la variable 'linea' la dirección IP, 'buf ' la variable donde se almacena el dato
recibido procedente del conversor y 'BUFLEN' su tamaño.
int RecibirPorPuertoSerie (int fd, char *buer, int buer_tamano, int num_car,
int reintentos)
Se ocupa de la lectura y almacenamiento de los datos que llegan al puerto USB.
Es llamada desde la función 'Lectura_y_Envio'. Lee tantos caracteres como se le indique
a través del parámetro, en este caso uno. Devuelve el número de bytes leídos de forma
correcta.
80
CAPÍTULO 4.
DESARROLLO DEL SISTEMA
4.3.2. Diagramas de ujo
El diagrama de ujo asociado a la ejecución completa de la aplicación pasarela se
muestra en la gura 4.3.
Figura 4.3: Pasarela: Diagrama de Flujo
4.3.
DESARROLLO DE LA APLICACIÓN PASARELA
81
En cuanto a la función más importante incluída en la aplicación pasarela, la que realiza
la tarea de lectura y envío de los datos procedentes de la red de sensores, su diagrama de
ujo se muestra en la gura 4.4.
Figura 4.4: Lectura y envío: Diagrama de Flujo
82
4.4.
CAPÍTULO 4.
DESARROLLO DEL SISTEMA
Desarrollo de la interfaz
Para la conguración, puesta en marcha y detención de la aplicación 'pasarela' se
dispone de varios elementos. Por un lado pueden distinguirse aquellos destinados a la vericación del estado y conguración actual de la aplicación y por otro aquellos orientados
a la modicación de lo anterior. Para ello, las opciones disponibles a través de la interfaz
desarrollada permiten el inicio y detención de la aplicación, la adición y eliminación de
direcciones IP destinatarias de los datos procedentes de la red de sensores, la vericación
del estado de funcionamiento de la pasarela, la visualización de las direcciones IP actualmente almacenadas y la introducción y visualización del puerto a través del cual se realiza
la comunicación.
En un principio se desarrolló toda la estructura de interacción con la aplicación 'pasarela' a través de una interfaz web haciendo uso de CGI, sin embargo, una vez se pasó
a la fase de portabilidad para su funcionamiento en el router, surgieron problemas que
imposibilitaron su funcionamiento completo a través de dicha interfaz web. Estos problemas están originados por la limitación, en las versiones actuales disponibles del sistema
operativo DD-WRT, a la hora de usar las variables de entorno asociadas a CGI.
En concreto, para la utilidad que permitía la introducción de direcciones IP destinatarias desde la propia interfaz web, se hacía uso del metodo POST de CGI para el paso
de parámetros. De esta manera, mediante la lectura de STDIN, así como de la lectura de
la variable de entorno CONTENT_LENGTH, que informa del número exacto de bytes
a leer, y el procesado de los datos con la función de descifrado adecuada que también se
desarrolló, se conseguía la adición de la dirección IP al sistema de reenvío de los datos.
Todo lo anteriormente descrito debió ser sustituido por otra solución debido a que la
variable de entorno mencionada se encuentra deshabilitada, como muchas otras de CGI,
por motivos de seguridad. Tan solo están disponibles para la interfaz web incluída en
el sistema operativo. Por este motivo, la interacción se realiza a través de dos sistemas
distintos. Por un lado se encuentran una serie de acciones accesibles a través de la interfaz
web y por otro aquellas acciones llevadas a cabo mediante la ejecución a modo de comando
de distintos programas de tipo shell script.
4.4.
DESARROLLO DE LA INTERFAZ
4.4.1.
83
Interacción a traves de la interfaz web
La interfaz web puede ser accedida a través de internet mediante la introducción de
la URL (Uniform Resource Locator ) correspondiente asociada al router seguida de 'pasarelazb.html'. A modo de ejemplo, y suponiendo que la URL asignada al router sea la
dirección IP 192.168.2.1, el acceso a la página principal se consigue introduciendo en el
navegador:
http://192.168.2.1/pasarelazb.html
Una vez se muestre, la primera página que aparece da la posibilidad de comprobar si
la pasarela se encuentra en funcionamiento o no, esta primera página puede verse en la
FIGURA.
Tras pulsar sobre el enlace que determina el estado de la pasarela, se pasa a la siguiente
página asociada a la interfaz. En ella se presentan las siguientes opciones:
Si la pasarela se encuentra en funcionamiento permite detener su ejecución. Si por el
contrario se encuentra detenida, se nos presenta el enlace y las instrucciones a seguir
para iniciar su ejecución.
Visualización de las direcciones IP que actualmente estan almacenadas como destinatarias de los paquetes procedentes de la red de sensores ZigBee.
Visualización del puerto a través del cual se envían los datos.
En la FIGURA puede apreciarse el aspecto de esta última página para el caso en el
que la aplicación se encuentre en funcionamiento.
Para la realización de esta interfaz se hizo uso de HTML y CGI,de manera que gracias
a las características de CGI se leen y modican los cheros correspondientes para después,
dependiendo de los valores que hayan sido leídos en dichos cheros, mostrar la página web
correspondiente. Por ejemplo, en el caso de la primera pantalla que se muestra, al pinchar
84
CAPÍTULO 4.
DESARROLLO DEL SISTEMA
sobre el enlace que verica el estado de la pasarela, la aplicación CGI se encargará de leer
el archivo 'estado' y, una vez leído su contenido, si almacenaba un uno mostrará la página
que permite detener la pasarela o, en el caso de que al archivo leído almacenara un cero,
mostrará la página con las indicaciones que permiten iniciar la pasarela.
Conviene recordar que, a la hora de compilar los archivos cgi se usaron dos compiladores
distintos, según se desease ejecutarlos en un ordenador o en el router. Así, para su ejecución
sobre un ordenador con un sistema operativo Linux, cualquiera de los compiladores de
C++ existentes para Linux es válido, mientras que para su ejecución en el router se hizo
uso del compilador cruzado 'mipsel-linux-uclibc-c++'.
4.4.2.
Interacción a través de comandos
Como ya fué comentado en anteriores secciones, la limitación en el uso de las variables
de estado asociadas a CGI obligó a buscar alternativas que permitieran la interacción
deseada con la aplicación 'pasarela'. Para ello fue muy útil la utilidad integrada en la
interfaz web proporcionada por el sistema operativo DD-WRT que permite la ejecución de
comandos y que se muestra en la FIGURA. Estas mismas acciones podrían llevarse a cabo
accediendo al router a través de Telnet, sin embargo, la posibilidad de realizarlo todo sin
necesidad de usar más que un navegador web resulta más adecuada para permitir un uso
sencillo a todo tipo de usuarios, independientemente de sus conocimientos informáticos.
Para ello se ponen a disposición del usuario una serie de pequeñas soluciones que complementan aquello mostrado o ejecutado a través del interfaz web asociado a la aplicación
'pasarela'. Se describen estas soluciones a continuación:
Pasarelazb: permite el inicio de la ejecución del programa principal. Está desarrollado
en lenguaje C++.
AnadirIPzb: permite la introducción de una IP destinataria de paquetes de la red
de sensores. Previamente a su almacenamiento se chequeará que la IP introducida
cumple con el estándar IP versión 4. Se trata de un script ejecutado haciendo uso del
intérprete de comandos ASH (A Shell ) contenido en DD-WRT. 'AnadirIPzb' hace
4.5.
CONFIGURACIÓN INICIAL AUTOMATIZADA
85
uso del script 'creacion_web_destinatarios', que actualiza la página a mostrar en
caso de querer visualizar, a través de la interfaz web, las direcciones IP almacenadas.
EliminarIPzb: permite la eliminación de la IP situada en la posición pasada como
parámetro. Dichas posiciones quedan determinadas al visualizar, a través de la interfaz web, las IP destinatarias. Se tratá de un script ejecutado haciendo uso del
intérprete de comandos ASH contenido en DD-WRT. 'EliminarIPzb' hace uso del
ejecutable 'creacion_web_destinatarios', que actualiza la página a mostrar en caso
de querer visualizar, a través de la interfaz web, las direcciones IP almacenadas.
SeleccionPuerto: permite la modicación del puerto a través del cual se envían los
datos procedentes de la red de sensores y con destino a las distintas direcciones IP
almacenadas. 'SeleccionPuerto' hace uso del ejecutable 'creacion_web_puerto', que
actualiza la página a mostrar en caso de querer visualizar, a través de la interfaz
web, el puerto que está siendo usado.
4.5. Conguración inicial automatizada
Para lograr que en cada inicialización del router todo se encuentre congurado de
manera adecuada para usar la aplicación pasarela, es imprescindible la creación de un
script que se ejecute tras cada encendido del router. Hay varias opciones para llevarlo a
cabo, pero en este caso concreto se optó por la creación de un shell script.
El otro método que podía haberse elegido consiste en almacenar los comandos que se
desean ejecutar en la memoria nvram, sin embargo, dicha opcion no es la más adecuada
por el uso de memoria ash que requiere. Además de esta razón, que en este caso no era
crítica pues el script es de pequeño tamaño, se debe tener en cuenta la facilidad para
futuras modicaciones, mucho más accesibles a través de la opción nalmente elegida.
Para que el shell script sea ejecutado en cada inicialización del router, debe elegirse
un nombre seguido de '.startup', en este caso 'pasarelazb.startup', y ser almacenado en el
directorio adecuado, tal y como se detallará en la subsección 4.6.2.
86
CAPÍTULO 4.
DESARROLLO DEL SISTEMA
El shell script desarrollado presenta la estructura que se muestra a continuación:
#! /bin/ash
touch /tmp/destinatarios.txt
touch /tmp/estado.txt
echo 0 >> /tmp/estado.txt
mkdir /tmp/www
/bin/creacion_web_destinatarios
De esta manera se crearán e inicializarán todos los directorios y archivos necesarios
para poder ejecutar la aplicación pasarela una vez se ponga en funcionamiento el router. Se
debe aclarar que para su prueba en el entorno compuesto por un ordenador funcionando
bajo un sistema operativo Ubuntu 10.04 el intérprete de comando utilizado fué bash.
4.6.
Integración en el sistema operativo DD-WRT
Los distintos componentes destinados para funcionar en el router, y que posibilitan
el funcionamiento de la pasarela, han sido compilados junto al sistema operativo DDWRT, de esta manera, bastará instalar en el router el paquete proporcionado y, a falta
de la conexión del conversor al puerto USB, se dispondrá del software necesario para el
funcionamiento de la pasarela. Este paquete compilado, como ya se ha mencionado, está
formado por DD-WRT y todos los componentes necesarios para el correcto funcionamiento
de la pasarela, lo que incluye:
Aplicación principal
Interfaz web
Ejecutables para la interacción con la aplicación pasarela a través de comandos
Módulos necesarios para la correcta detección del conversor
4.6.
INTEGRACIÓN EN EL SISTEMA OPERATIVO DD-WRT
87
Para compilar todos estos componentes junto al sistema operativo y obtener así una
solución global y agrupada fueron necesarios tres pasos. En el primero de ellos se llevó a
cabo la extracción del rmware DD-WRT, en el segundo se realizaron las modicaciones
deseadas y en el tercero y último se compiló todo de nuevo obteniéndose una única solución.
Veamos estos pasos con más detalle.
4.6.1. Extracción del rmware DD-WRT
Antes de proceder a la extracción del rmware se debe disponer de una serie de requisitos mínimos para que sea realizada con exito. Estos requisitos son:
Llevarla a cabo sobre uno de los sistemas operativos soportados por la herramienta
de extracción, a saber: Linux o OS-X. En el caso concreto de este Proyecto Fin
de Carrera, se utilizó como sistema operativo Ubuntu 10.04 ejecutándose sobre un
ordenador portatil DELL Inspiron 1545.
GNU C
GNU C++
Librerías de desarrollo estándar para C y C++
GNU make
Disponiendo de todo lo anterior, se puede pasar a utilizar la herramienta para la extracción del rmware. Dicha herramienta puede conseguirse desde los repositorios ociales
proporcionados por DD-WRT2 . En el paquete que se obtendrá también se encontrarán las
herramientas necesarias para la instalación de paquetes y la posterior reconstrucción del
sistema operativo.
Una vez obtenida la herramienta, se lleva a cabo la extracción mediante el uso del
comando:
2 Mediante
el comando 'svn checkout http://rmware-mod-kit.googlecode.com/svn/trunk/ rmwaremod-kit-read-only'
88
CAPÍTULO 4.
DESARROLLO DEL SISTEMA
./extract_firmware.sh firmware.bin directorio_de_extracción
Debe indicarse que 'rmware.bin' es el sistema operativo DD-WRT que se pretende extraer3 y 'directorio_de_extracción' hace referencia al lugar donde se almacenarán
los archivos resultantes de la extracción. Por útimo, indicar que para ejecución del comando 'extract_rmware.sh' se debe estar dentro del directorio en el que se encuentre la
herramienta.
4.6.2. Modicación del rmware DD-WRT
Una vez extraido el rmware, el sistema de archivos resultante se encontrará almacenado en el directorio indicado anteriormente. Dicho sistema de archivos se compone de los
siguientes directorios principales:
image_parts: aquí se almacenan archivos intermedios necesarios para futuras reconstrucciones.
rootfs: aquí se encuentra el sistema de archivos que compone DD-WRT, con los
directorios habituales que se encuentran en los sistemas operativos Linux (bin, dev,
etc...). Las modicaciones que se introducirán serán llevadas a cabo todas en este
directorio.
installed_packages: destinado a los paquetes que el usuario desea instalar en el sistema operativo DD-WRT para su uso desde el mismo momento de su instalación en el
router y que no se encuentran a su disposición en la versión disponible por defecto.
Para llevar a cabo esto se hace uso de la herramienta 'ipkg_install.sh', obtenida
junto a la herramienta de extracción en el paquete obtenido desde los repositorios
de DD-WRT.
A continuación se detallan las modicaciones llevadas a cabo dentro del sistema de
archivos contenido en la carpeta 'rootfs', indicando aquellos directorios en los que se han
añadido elementos y de qué elementos se tratan para cada caso:
3 En este caso DD-WRT versión 24 (build 12188)
4.6.
INTEGRACIÓN EN EL SISTEMA OPERATIVO DD-WRT
89
bin: se añade el ejecutable destinado a la creación de la página web, los ejecutables
para la interacción con la aplicqación mediante el uso de comandos y la aplicación
principal de la pasarela.
etc/cong: se añade el archivo que se ejecutará en cada encendido del router para
su lograr la adecuada conguración permitiendo así el correcto funcionamiento de la
aplicación pasarela una vez que el router se encuentra inicializado.
lib: añadidos los módulos 'usbserial.o' y 'ftdi_sio.o' para permitir la detección y
posterior manejo del conversor conectado al puerto USB usado en este Proyecto Fin
de Carrera.
www: añadida la pagina html que servirá como inicio del interfaz web de la aplicación
pasarela. Además, se crea dentro la carpeta 'cgi-bin' en la que se almacenarán los
archivos cgi necesarios para la interacción con los archivos que indican el estado
actual de la pasarela en cuanto a funcionamiento y conguración.
4.6.3. Reconstrucción del rmware DD-WRT
Por último, una vez extraido el rmware y realizados los cambios que se desean, se
debe volver a crear un paquete único de manera que pueda ser instalado como un único
elemento en el router. Para esta accción se hará uso de otra de las herramientas obtenidas
desde los repositorios de DD-WRT, en este caso 'build_rmware.sh'. Para su correcto uso
deberá ejecutarse el siguiente comando desde el directorio en el que esté almacenada la
herramienta:
./build_firmware.sh directorio_de_salida/ directorio_de_extracción/
Siendo 'directorio_de_salida' el lugar donde se almacenarán las reconstrucciones del
rmware y 'directorio_de_extracción' el lugar donde está el sistema de archivos extraído
y posteriormente modicado.
90
CAPÍTULO 4.
DESARROLLO DEL SISTEMA
Por último, indicar que la herramienta reconstruirá el rmware y presentará diversas
versiones, diferenciadas entre ellas por el hecho de estar optimizadas para su instalación en
routers de distintos fabricantes. También se incluye una versión reconstruida del rmware
genérica.
4.7.
Aplicación cargada en los sensores ZigBee/802.15.4
Para poder determinar el correcto funcionamiento de la aplicación pasarela desarrollada
para el router, se hace imprescindible la carga en los sensores contenidos en el equipo de
desarrollo eZ430-RF2480 de Texas Instruments de una aplicación que haga uso de la
capacidad de monitorización y posterior envío de los datos monitorizados a través de la
red ZigBee. Dado que la capacidad de los sensores incluidos se basa en la medida de
la temperatura del lugar en el que se encuentren colocados, la aplicación ZASA (ZigBee
Accelerator Sample Application ), aportada por Texas Instruments a modo de ejemplo de
uso, es ideal para el propósito deseado.
La aplicación ZASA puede hacer que los sensores actúen de dos maneras distintas,
como sumideros o como fuentes de infomación. Si indicamos esto desde el punto de vista
de su papel en la red, los sensores pueden actuar como los tipos de dispositivos habituales
descritos por la especicación ZigBee/802.15.4: coordinador, enrutador o dispositivo nal.
De esta manera, los datos recolectados y enviados por aquellos sensores que actúen como
fuente de información serán el voltaje del bus y la temperatura ambiente. La conguración
del papel dentro de la red será determinada en base a la actuación sobre el botón incluido
en el CC2480 e informada a través de un código de colores mediante dos indicadores
luminosos. Los sensores se conguran con dos posibles acciones, pulsando el botón incluido
en CC2480 una o dos veces. Se muestran a continuación las distintas posibilidades:
Si se pulsa el botón una vez en dos segundos intentará congurarse como enrutador
dentro de una red ya existente, actuando además como fuente de datos, si no existe
tal red, pasará a crear una nueva y se establecerá como coordinador, actuando como
sumidero de datos. Lo anteriormente descrito se indicará mostrando el LED rojo
encendido de forma continua en caso de actuar como coordinador o mostrando el
4.7.
APLICACIÓN CARGADA EN LOS SENSORES ZIGBEE/802.15.4
91
LED verde encendido en caso de actuar como enrutador.
Si se pulsa el botón dos veces en dos segundos, el sensor quedará congurado como
un dispositivo nal y, por lo tanto, actuará como fuente de datos. Esto quedará
indicado a través del parpadeo del LED de color verde a una frecuencia de 1Hz.
Para completar el código usado a traves de los LED incluidos, caben destacarse los
siguientes casos:
Ambos LED parpadeando indican que el sensor aún no ha sido congurado.
En el caso de que los sensores actúen como enrutador o dispositivo nal, una vez
que envían un paquete de datos el LED rojo parpadeará.
En el caso de actuar el sensor como coordinador, un parpadeo del LED verde indicará
la correcta recepción de un paquete de datos.
Para adecuar la aplicación ZASA a ciertas características propias del desarrollo llevado
a cabo en este Proyecto Fin de Carrera, se han incluido modicaciones en su código que
a continuación se describen:
El sensor que se conecta al conversor TTL-232R-3V3 de FTDI, y que por lo tanto se
comunica con el router, presenta como única posibilidad de actuación dentro de la
red la de dispositivo coordinador. Esto es así porque dicha función va directamente
ligada a su conexión con el router y por lo tanto no tiene ningún sentido que se
deba determinar, a través de la pulsación del botón, su papel en la red. Además, de
esta manera se prevén posibles fallos derivados de cortes de luz y reinicios del router
puesto que al estar pensado para su funcionamiento autónomo, el hecho de tener
que estar sicamente presente para la conguración de este sensor podría hacerle
perder al conjunto la facilidad y comodidad de uso que se pretende. Para conseguir
esta conguración automática como coordinador anteriormente descrita se modicó
el código incluido en 'sample_app.c', suprimiéndose el funcionamiento de la función
'appBtnPress' para de esta manera deshabilitar la interacción a través del botón e
92
CAPÍTULO 4.
DESARROLLO DEL SISTEMA
incluyéndose la variable 'timerboton' en combinación con otras llamadas a funciones
para conseguir la conguración como coordinador que se desea.
Para los sensores que actúan como fuentes de datos (ya sean enrutadores o dispositivos nales), se añade un campo en la trama enviada que los identica de manera
física, no a través de la dirección de red que asigna el protocolo basada en la asignación distribuida de direcciones. De esta manera, se puede identicar a que sensor
corresponde cada paquete recibido sin necesidad de saber cual se conectó a la red
en primer lugar, proporcionando un método de identicación más claro. Para lograr
este propósito se realizaron los siguientes cambios en 'sample_app.c':
• La constante SRCE_REPORT_SZ fue establecida a un valor de tres
• Se crea la constante SRCE_REPORT_ZBID con un valor de dos
• Por último, estableciendo srceReport[SRCE_REPORT_ZBID] dentro de la
función 'appSrceData', se determina el número que identicará a cada sensor. Por ejemplo, para establecer el número identicativo del sensor a uno, se
debería intoducir en el código:
srceReport[SRCE_REPORT_ZBID] = 1;
Capítulo 5
Fase de pruebas
5.1.
Descripción del entorno de pruebas
Con el objetivo de detectar defectos que causen un funcionamiento no deseado del
desarrollo llevado a cabo en este Proyecto Fin de Carrera se determinaron una serie de
pruebas que los distintos componentes debían ir vericando para de esta manera construir
cada nuevo paso sobre una base sólida en lo referente a su funcionamiento. Como entorno
de prueba se usarón dos elementos para la vericación, variando este entorno según la fase
del proyecto en la que se ejecutaron las pruebas, como se mostrará más adelante.
Se pueden diferenciar dos entornos de pruebas:
Ordenador DELL Inspiron 1545, equipado con 4 Gb de memoria RAM y un procesador Intel Core 2 Duo T6400 y funcionando con un sistema operativo Ubuntu
10.04.
Router ASUS WL-500G Premium, funcionando con un sistema operativo DD-WRT.
Haciendo uso de los dos entornos anteriormente descritos se realizarán una serie de
vericaciones que determinarán si el desarrollo cumple con los requisitos operacionales y
93
94
CAPÍTULO 5.
FASE DE PRUEBAS
funcionales que fueron denidos para el proyecto.
5.2. Procesos de vericación
El objetivo de los procesos de vericación es la búsqueda de defectos en el sistema
debidos a errores en el proceso de desarrollo para así evitar la posterior aparicición de
fallos. Estas actividades de vericación se llevan a cabo mediantte un conjunto de pruebas,
pudiéndose utilizar distintos métodos, para este caso concreto el método usado para la
vericación ha sido el método a través de experimentos, esto es, la prueba del sistema
desarrollado mediante la simulación de las condiciones reales en las que debe desempeñar
su función, observando y analizando su funcionamiento.
Para llevar a cabo el proceso de vericación se determina una secuanciación bottomtop, partiendo del correcto funcionamiento de los elementos unitarios y acabando en la
vericación de la combinación de todos estos elementos unitarios para dar lugar al sistema
global que se desea.
5.2.1.
Pruebas unitarias
Para el caso de las pruebas unitarias se usó el entorno de pruebas constituido por el
ordenador DELL Inspiron 1545, de esta manera, una vez conseguido el correcto funcionamiento de los distintos elementos en este entorno, éstos quedaban validados para su
posterior integración en el sistema mediante la portabiliddad al router ASUS WL-500G
Premium. Igualmente cabe destacar que en este proceso se llevaron a cabo tres tipos de
pruebas:
Pruebas de progresión: la primera prueba que se realiza al elemento.
Pruebas de corrección: repetición de una prueba tras haber sido detectado un error
y haberse realizado un cambio.
5.2.
PROCESOS DE VERIFICACIÓN
95
Pruebas de regresión: volver a ejecutar una prueba que ya se había pasado satisfactoriamente tras realizar un cambio.
Siguiendo la secuenciación temporal llevada a cabo en el desarrollo se exponen a
continuación las pruebas unitarias de cada elemento:
Pasarelazb
Para la vericación de este elemento se hizo uso del ordenador DELL Inspiron
1545 en combinación con el conversor TTL-232R-3V3 de FTDI y los sensores incluidos
en el equipo de desarrollo eZ430-RF2480 de Texas Instruments. La vericación se llevó
a cabo de forma progresiva, añadiendo las distintas funciones de las que se compone de
manera escalonada según el siguiente orden:
1. Funciones para el manejo, conguración y lectura del puerto USB.
2. Función destinada al envío de los datos leídos del puerto USB a una dirección IP y
un puerto jos.
3. Adición de lectura de archivo para indicar la interrupción de la aplicación.
4. Adición de lectura de cheros para permitir la modicación de las direcciones IP de
destino y del puerto a usar.
5. Función que permite la ejecución 'pasarelazb' en background.
Para llevar a cabo la prueba se conectó el conversor al sensor que actua como coordinador por un lado y por el otro se conectó a un puerto USB de los disponibles en el
ordenador. Una vez comprobado el puerto que el sistema operativo Ubuntu le asignaba1 y hecha la correspondiente modicación del mismo en el código fuente se procedía a
la ejecución del programa habiendo previamente congurado los demás sensores para su
funcionamiento como enrutadores o dispositivos nales.
1
De tipo ttyUSB#
96
CAPÍTULO 5.
FASE DE PRUEBAS
Una vez se encontraba el programa en funcionamiento y los dispositivos correctamente
congurados se procedía a la comparación de los datos obtenidos a través de la aplicación
'pasarelazb' con los obtenidos gracias a la herramienta Putty (descrita en 3.2.1.5). Para ver
los datos obtenidos por Putty de una manera más clara se hacía uso de un postprocesado
mediante XVI32 (descrito en 3.2.1.6). De esta manera, se fueron ajustando los parámetros
de conguración asociados al puerto USB hasta conseguir la lectura de los datos tal y
como eran obtenidos a través de Putty.
Así, para poder visualizar los datos leídos a través del conversor se introdujo en el código
fuente del programa 'pasarelazb' las líneas necesarias para la impresión por pantalla de
todos los caracteres que iban siendo leídos del conversor, de manera que pudiera realizarse
la comparación anteriormente mencionada. Estas líneas permitían la lectura y correcta
impresión de los datos en formato hexadecimal. Se muestra a continuación como ejemplo
el código que posibilita la impresión por pantalla del preámbulo del paquete enviado desde
el conversor procedente del sensor que actua como coordinador:
cout<<"PREAMBULO: "<<hex<<int(buf[0])<<endl;
Una vez asegurada la correcta recepción de los datos, se pasó al envío de éstos a
una dirección ja. Para facilitar la vericación de los envíos se decidió que esta dirección
de destino fuese el localhost. Además se desarrollaró una sencilla aplicación que actuara
recepcionando estos datos. Así, haciendo uso de la visualización introducida en 'pasarelazb'
y de esta aplicación de recepción se pudo constatar el correcto envío a la dirección IP
indicada. Se muestra a continuación la parte del código de la aplicación de recepción que
permite visualizar lo enviado por la aplicación 'pasarelazb':
cout<<"Datos procedente de la mota "<<dec<<int(buf[12])<<endl;
cout<<"Temperatura: "<<dec<<int(buf[10])<<" Grados"<<endl;
cout<<"Voltaje: "<<dec<<int(buf[11])<<" V"<<endl;
cout<<"Network address: "<<hex<<int(buf[5])<<hex<<int(buf[4])<<endl;
En este punto se añadió la lectura de un archivo a través del cual se especica si la
aplicación debe seguir ejecutándose o no, su chequeo consistió en la modicación manual
5.2.
PROCESOS DE VERIFICACIÓN
97
de dicho chero para determinar la interrupción de 'pasarelazb' en el momento debido.
Tras lograr la correcta recepción y posterior envío de los paquetes se añadió la posibilidad de lectura de puerto y dirección IP desde un archivo que podía ser modicado. Con
el objetivo de probar esta adición se creó el chero de destinatarios con la dirección IP
127.0.0.1 (localhost ) y se usó la aplicación de recepción anteriormente mencionada de manera que quedara comprobaa la correcta interpretación de la dirección IP introducida en
el chero. De igual manera y siguiendo el mismo proceso se comprobó la correcta lectura
e interpretación del archivo destinado a indicar el puerto a usar para el envío de los datos.
Por último, se añadió la función que permitía la ejecución de todo lo anterior en
background. Comprobando que a pesar de ejecutarse como un demonio seguía cumpliendo
todo lo anteriormente vericado.
Shell scripts
Para la vericación de los shell scripts en el entorno de pruebas indicado se usó
bash, incluido por defecto en la instalación de Ubuntu 10.04, como intérprete de comandos.
Una vez indicado esto, su prueba se basó en comprobar que modicaban, borraban y creaban los directorios y archivos de la manera en la que debian según los distintos requisitos.
Se detallan a continuación las distintas vericaciones realizadas en cada shell script :
AnadirIPzb: la vericación de este script se llevo a cabo comprobando por separado
cada una de las tareas de las que se compone y vericando después su funcionamiento
conjunto, de esta manera, el orden seguido a la hora de vericar e integrar funciones
dentro del script fué el siguiente:
1. Vericación de que la dirección IP introducida se compone de cuatro partes.
Para llevar esto a cabo se introducjeron direcciones IP formadas por una,
dos, tres y cinco partes, separadas todas por puntos, comprobándose que todas
ellas eran detectadas como no válidas. Una vez hecho esto, y tras comprobar que
las direcciones IP formadas por cuatro partes eran clasicadas como válidas,
98
CAPÍTULO 5.
FASE DE PRUEBAS
se procedió a comrpobar que también eran descartadas todas aquellas direcciones formadas por cuatro partes pero no separadas por un punto, vericándose
también este extremo.
2. Vericación de que todas y cada una de las cuatro partes de las que se compone
la dirección IP introducida están compuestas tan solo de valores numéricos.
Para la vericación completa de este punto se introdujeron direcciones
IP formadas por cuatro partes y separadas por puntos. De esta manera se
comprobaron las distintas combinaciones en las que alguna o varias de las partes
constituyentes de la dirección IP contenían un valor no numérico. En todos los
casos fué detectado dicho valor y, por lo tanto, clasicadas como direcciones IP
no válidas.
3. Vericación de que todas y cada una de los cuatro valores numéricos de los
que se compone la dirección IP introducida se encuentran dentro del rango
permitido.
Para la vericación completa de este punto se introdujeron direcciones
IP formadas por cuatro partes y separadas por puntos. De esta manera se
comprobaron las distintas combinaciones en las que alguna o varias de las partes
constituyentes de la dirección IP contenían un valor numérico por encima de
255. En todos los casos fué detectado dicho valor y, por lo tanto, clasicadas
como direcciones IP no válidas.
4. Si todo lo anterior se cumple, almacenamiento en el chero correspondiente de
la dirección IP introducida.
La vericación de este punto consistió en introducir una dirección IP válida
y comprobar su correcto almacenamiento en el chero indicado.
5. Por último, eliminación de posibles direcciones IP repetidas dentro del chero.
La vericación de este punto consistió en introducir de manera consecutiva
dos direcciones IP válidas iguales y la posterior comprobación de que solo se
almacenaba una vez en el chero.
Siguiendo este orden, a medida que un objetivo cumplía con los requisitos de
uno de los puntos anteriores se añadía el siguiente, partiendo de la base de lo que ya
se había desarrollado y vericado.
5.2.
PROCESOS DE VERIFICACIÓN
99
EliminarIPzb: para vericar este script se hizo uso de 'AnadirIPzb', mediante el
cual se almacenaron varias direcciones IP para, posteriormente y tras seleccionar el
número de línea correspondiente a la dirección IP que se deseaba eliminar, hacer uso
de 'EliminarIPzb' y comprobar que se había eliminado la dirección IP que ocupaba
el número de línea seleccionado y que, además, aquellas que ocupaban posiciones
inferiores habían sido desplazadas convenientemente.
SeleccionPuerto: la vericación de este script se llevó a cabo en dos fases que a
continuación se detallan
1. Vericación de detección de valores no permitidos.
Para la comprobación de este requisito se desarrolló el código necesario
para detectar,y en tal caso desechar, toda aquella introducción de puerto que
no se trate de un número dentro de un rango determinado. Con el objetivo
de probar su funcionamiento se introdujeron valores no numericos
además de
valores fuera del rango permitido, habiéndose dettectado en todos los casos y
posibles combinaciones la no validez del valor introducido.
2. Eliminación del anterior valor almacenado y almacenamiento del valor introducido en caso de ser detectado como válido.
En este caso se introducía un valor válido y se comprobaba su correcto almacenamiento. Posteriormente se introducía otro valor también válido, comprobándose que éste último había sustituído de manera adecuada al anteriormente
almacenado.
Ejecutables destinados a la creación de un HTML
Aquí se incluye tanto 'creacion_web_destinatarios' como 'creacion_web_puerto'.
El funcionamiento de los dos es completamente análogo por lo que el proceso de vericación seguido con los dos fué el mismo, consistiendo en la vericación de la correcta
generación de un archivo con extensión HTML partiendo de los datos almacenados en el
chero correspondiente (aquel que almacena las direcciones IP destinatarias o aquel que
almacena el puerto actualmente seleccionado). La vericación consistió en introducir en
los cheros una serie de datos haciendo uso de 'AnadirIPzb' o 'SeleccionPuerto' y abrir
100
CAPÍTULO 5.
FASE DE PRUEBAS
con el explorador Firefox incluido en Ubuntu 10.04 la página creada, determinando si lo
visualizado se corresponde con lo almacenado en cada uno de estos archivos.
Interfaz web
Bajo este punto quedan englobadas tanto la página 'pasarelazb.html' de inicio de la
interfaz como los ejecutables 'Estado.cgi' y 'Detener.cgi'. Veamos el proceso de vericación
de cada uno de ellos:
Pasarelazb.html: la vericación consistió en su visualización haciendo uso del explorador Firefox.
Estado.cgi: dado que este ejecutable debe leer un archivo y según su cobtenido mostrar una página u otra, su prueba consistió en la modicación manual de dicho archivo
y en la vericación de que semostraba por pantalla la página HTML adecuada.
Detener.cgi: este ejecutable debe modicar un archivo y posteriormente mostrar
una página HTML. Para su vericación se comprobó la modicación adecuada del
correspondiente archivo y la visualización correcta de la página HTML.
5.2.2.
Pruebas de integración
A la hora de llevar a cabo la integración de distintos elementos unitarios ya vericados,
se siguió una secuenciación que permitía la detección de posibles fallos en dicha integración
de manera rápida. Las pruebas de integración y su correcta secuenciación están enfocadas
a encontrar problemas de interacción entre los distintos elementos que van integrándose.
Se detalla a continuación el plan seguido para la integración:
1. Lectura por parte de la aplicación 'pasarelazb' de los archivos modicados por
'AnadirIPzb' y 'SeleccionPuerto'.
2. Posterior adición de 'EliminarIPzb', siendo el archivo modicado por este script
aquel modicado por 'AnadirIPzb'.
5.2.
PROCESOS DE VERIFICACIÓN
101
3. Creación de los enlaces entre distintas páginas HTML de la interfaz web.
4. Enlace de los ejecutables 'Estado.cgi' y 'Detener.cgi' con los archivos modicados
y/o leídos por 'pasarelazb'.
5.2.3.
Pruebas de sistema
Una vez integrado el sistema, es decir, construido el último nivel de integración y
realizadas las pruebas de funcionalidad capaces de detectar problemas en los interfaces
entre los distintos elementos unitarios, se pasa a la fase de pruebas del sistema, para
asegurar el cumplimiento de todos los requisitos en el entorno bajo el que debe funcionar.
Una vez hecha la portabilidad de todo lo anteriormente descrito y vericado al router
gracias a la compilación cruzada y a la construcción del rmware DD-WRT con las adiciones desarrolladas en este Proyecto Fin de Carrera, se pasó a la vericación global del
sistema en el entorno bajo el que debe cumplir con los requisitos. Se detallan a continuación
los requisitos funcionales que implicaron pruebas de sistema:
Se usará el protocolo UDP.
Una vez ejecutada la aplicación 'pasarelazb' se hacía uso de la aplicación de
recepción también desarrollada para comprbar el correcto uso del protocolo de transporte UDP.
La aplicación destinada a ejecutarse en el enrutador para ejercer las tareas de recogida de datos de la red ZigBee/802.15.4 y, posteriormente, el envío a las direcciones
IP indicadas, deberá funcionar en segundo plano.
Su vericación consistió en la ejecución del ejecutable 'pasarelazb' y, posteriormente, accediendo a través Telnet comprobación de que se encontraba en ejecución
mediante el comando 'ps'.
El usuario podrá añadir o eliminar direcciones IP destino en cualquier momento,
independientemente de si el sistema se encuentra en funcionamiento o no.
102
CAPÍTULO 5.
FASE DE PRUEBAS
Una vez encontrándose el ejecutable 'pasarelazb' en funcionamiento se añadían
y eliminaban direcciones IP, funcionando en todo momento de manera correcta y
variando adecuadamente su funcionamiento en función de lo introducido.
El usuario deberá ser capaz de visualizar las direcciones IP que se encuentran actualmente almacenadas como destinatarias de los datos procedentes de la red ZigBee/802.15.4.
Su vericación consistió en la visualización de la página correspondiente a través
del acceso remoto al router.
El usuario podrá elegir el puerto a través del cual se enviarán los datos procedentes
de la red de sensores y visualizar el puerto usado desde la interfaz web.
La modicación del puerto quedó vericada haciendo uso de 'SeleccionPuerto'
en combinación con la aplicación de recepción desarrollada, que era programada
para usar el puerto que se introducía y, de esta manera, constatar el correcto uso del
mismo. Posteriormente se procedió a la visualización a través de la interfaz web del
puerto previamente introducido.
Los cheros, carpetas y módulos necesarios para el correcto funcionamiento del sistema deberán crearse o cargarse al encenderse el enrutador, de manera que la aplicación
pueda ser ejecutada en cualquier momento desde su puesta en marcha.
La aplicación WinSCP (descrita en 3.2.1.4) permitió vericar que los archivos
y carpetas eran creados en el router tal y como el shell script 'pasarelazb.startup'
indicaba.
El usuario deberá tener a su disposición una interfaz que le permita conocer el estado
actual de la aplicación en cuanto a su funcionamiento o no.
Esto fue vericado iniciando y deteniendo el ejecutable 'pasarelazb' y conrmando que era mostrado el mensaje correcto según se encontrará o no en funcionamiento.
Capítulo 6
Conclusiones y líneas futuras de trabajo
En el presente capítulo se expondrán las conclusiones deducidas del desarrollo de este
Proyecto Fin de Carrera. Además se mencionarán posibles líneas de investigación y estudio
que permitirían la continuación del mismo, permitiendo a otros proyectandos su uso como
base para futuros desarrollos.
6.1.
Conclusiones
Una vez alcanzado el nal en el desarrollo del presente Proyecto Fin de Carrera, pueden
considerarse como superados los objetivos que en el principio del mismo se marcaron y
que a continuación se detallan:
Realización de una pasarela Zigbee/802.15.4-IP sobre un router comercial.
Posibilidad de seleccionar distintas IP destinatarias así como el puerto a través del
cual se desean enviar los datos procedentes de la red de sensores ZigBee.
Utilización, en el router sobre el cual funcionará el desarrollo, de un sistema operativo
de código abierto.
103
104
CAPÍTULO 6.
CONCLUSIONES Y LÍNEAS FUTURAS DE TRABAJO
Permitir al usuario la interacción con la pasarela a través de una interfaz web, de
manera que no se necesiten conocimientos añadidos a la ya habitual y comunmente
utilizada navegación en Internet.
Integración del desarrollo completo en el sistema operativo elegido, quedando todo
congurado e instalado de la manera más cómoda posible para el usuario.
Además de los objetivos anteriormente expuestos y exigidos, a título personal se deben
mencionar distintos campos en los que se ha adquirido un conocimiento mayor al haber
sido directamente tratados a lo largo de la realización de este Proyecto Fin de Carrera,
estos son:
Estudio del conjunto de soluciones estandarizadas ZigBee/802.15.4.
Manejo y conguración, a través del lenguaje C++, de los puertos disponibles en un
dispositivo equipado con un sistema operativo basado en Linux.
Conocimientos básicos de HTML y scripting.
Aprendizaje de la estructura y de las posibilidades de conguración y modicación
del sistema operativo de código abierto DD-WRT.
Conocimientos acerca de los distintos pasos a seguir a la hora de realizar un proyecto
desde cero, desde la fase de documentación y estudio hasta la realización del plan
de pruebas, pasando por el estudio de distintas alternativas y acabando con este
documento.
6.2.
Líneas futuras de traba jo
Como consecuencia del continuo aumento de necesidades relacionadas con la monitorización tato en el ámbito de la industria, como en el ámbito médico o residencial,
ZigBee/802.15.4, en combinación con el desarrollo llevado a cabo en este Proyecto Fin
6.2.
LÍNEAS FUTURAS DE TRABAJO
105
de Carrera, puede cubrir una amplia variedad de estas necesidades. Se detallan a continuación algunas variantes que, partiendo de este desarrollo, podrían aportar soluciones
interesantes:
Añadir comunicación desde el usuario hacia la red de sensores ZigBee para permitir
cambios en su conguración. Esta posibilidad implicaría casi con total seguridad un
cambio en la elección de los sensores, ya que los usados en este desarrollo admiten
una limitada capacidad de conguración.
Adición de soporte para direcciones IPv6 ya que el agotamiento de las direcciones
IPv4 hará imprescindible su uso en pocos años.
Integración total del interfaz web en la misma estructura añadiendo módulos y utilizando otras opciones de comunicación entre HTML y los ejecutables como podría
ser PHP.
106
CAPÍTULO 6.
CONCLUSIONES Y LÍNEAS FUTURAS DE TRABAJO
Apéndice A
Manual de usuario
A.1. Instalación del sistema operativo en el router
A.1.1.
Actualización desde otra versión de DD-WRT
A.1.2.
Instalación en otros casos
A.2. Conguración inicial
A.3. Manejo de la interfaz
107
108
APÉNDICE A.
MANUAL DE USUARIO
Bibliografía
[1] DD-WRT Ocial Web Page. Disponible en http://www.dd-wrt.com/site/index.
[2] ASUS.
WL-500g
Premium
Features.
Disponible
http://www.asus.es/product.aspx?P _ID=8el2DcrRjLoHNdQ8&templete=2.
[3] BlackCode Magazine. A brief programming
en http://mixter.void.ru/rawip.html.
en
tutorial in C for raw sockets. Disponible
[4] Per
Bothner.
Sockets Tutorial.
http://www.linuxhowtos.org/C_C++/socket.htm.
Disponible
en
Estudio de la tecnología Zigbee y la implementación en la aplicación de sensores remotos, 2010. Disponible en
[5] Dora Castañeda, Diana Bacca, and Gustavo Higuera.
http://www.iiis.org/cds2010/cd2010csc/cisci_2010/PapersPdf/ca371me.pdf.
[6] Cristian Castiblanco.
Programación Shell en Linux.
Disponible en
http://casidiablohost.googlepages.com/ProgramacinenshellLinux.pdf.
[7] H.M. Deitel and P.J. Deitel.
[8] Ata
Elahi
and
Adam
C++ Cómo Programar. Prentice Hall, 1999.
Gschwender.
Bee Wireless Sensor and Control Network,
Introduction to the Zig-
2009.
Disponible
http://www.informit.com/articles/article.aspx?p=1409785&seqNum=4.
en
[9] José Tomás Entrambasaguas Muñoz. Ingeniería de desarrollo de Sistemas de Telecomunicación. Servicio de Publicaciones e Intercambio Cientíco de la Universidad de
Málaga, 2008.
109
BIBLIOGRAFÍA
110
[10] Shahin Farahani.
[11] Drew Gislason.
. Elsevier, 2008.
ZigBee Wireless Networks and Transceivers
. Elsevier, 2008.
ZigBee Wireless Networking
[12] Mareca Hatler, Darryl Gurganious, Charley Chi, and Mike Ritter.
A Market Dyna-
. ON World, 2010.
mics report on IEEE802.15.4 and ZigBee
[13] Janell Armstron. C. Richard Helps.
Comparative Evaluation of ZigBee and Blue-
, 2007.
tooth: Embedded Wireless Network Technologies for Students and Designers.
Disponible en http://icee.usm.edu/icee/conferences/asee2007/papers/ 1242_comparative_evaluation_of_zigbee_and_blu.pdf.
[14] Texas
Instruments.
CC2480
,
Developer
Guide
2008.
Disponible
en
http://focus.ti.com/lit/an/swra176/swra176.pdf.
[15] Jukka Korpela.
, 2010. Disponible en
Getting Started with CGI Programming in C
http://www.cs.tut./jkorpela/forms/cgic.html.
[16] Ed Callaway. Florida Communication Research Lab & Motorola Labs.
Low Power
, November
Consumption Features of the IEEE 802.15.4/ZigBee LR-WPAN Standard.
2003. Disponible en http://www.cens.ucla.edu/sensys03/sensys03-callaway.pdf.
[17] Jin-Shyan Lee, Yu-Wei Su, and Chung-Chou Shen.
Wireless
Protocols:
Bluetooth,
UWB,
ZigBee,
and
A
Comparative
, 2007.
Wi-Fi
Study
of
Disponible en
http://eee.guc.edu.eg/Announcements/Comparaitive_Wireless_Standards.pdf.
[18] Future Technology Devices International Ltd.
TTL-232R-3V3 USB to TTL Serial
, 2006. Disponible en http://eris.liralab.it/viki/images/c/c1/FTDI_-
Converter Cable
_serial_converter_cable_TTL232R.pdf.
[19] Jordi Mayné.
, 2009. Dis-
Estado actual de las Comunicaciones por Radio Frecuencia
ponible en http://www.bairesrobotics.com.ar/data/estado_actual_de_las _comunicaciones_por_radiofrecuencia.pdf.
[20] Daintree Networks.
, 2008. Disponible
Getting Started with ZigBee and IEEE 802.15.4
en http://www.daintree.net/downloads/whitepapers/zigbee_primer.pdf.
[21] Patrice Oehen. ZigBee: An Overview of the Upcoming Standard., October 2005. Disponible en http://www.dcg.ethz.ch/lectures/ws0506/seminar/materials/zb_slides.pdf.
BIBLIOGRAFÍA
[22] Juan
R.
111
Pozo.
Tutorial
de
,
2003.
HTML
Disponible
en
http://html.conclase.net/tutorial/html/.
[23] Michael R. Sweet.
, 2005.
Serial Programming Guide for POSIX Operating Systems
Disponible en http://www.easysw.com/mike/serial/serial.html.
[24] IAR Systems.
, 2006.
MSP430 IAR Embedded Workbench ID
[25] Iñigo Tejedor and Pello Altadill.
. Disponible
Taller Shell, comandos y programación
en http://4party.cuatrovientos.org/les/2007/shell_linux.pdf.
[26] Texas Instruments.
Z-Accel
2.4
GHz
ZigBee
.
Disponible en
Processor
http://focus.ti.com/lit/er/swra175a/swra175a.pdf.
[27] Texas Instruments.
, 2008. Disponi-
eZ430-RF2480 Demonstration Kit: User's Guide
ble en http://focus.ti.com/lit/ug/swru151a/swru151a.pdf.
[28] Texas Instruments.
, 2009. Disponible en
CC2480 Target Board Reference Design 1.4
http://www.ti.com/litv/zip/swru156a.
[29] TIOBE Software.
. Dis-
TIOBE Programming Community Index for December 2010
ponible en http://www.tiobe.com/index.php/content/paperinfo/tpci/index.html.
[30] Jorge Carlos Valverde Rebaza.
, 2007. Disponible en
El Estándar inalámbrico ZigBee
http://www.seccperu.org/les/ZigBee.pdf.
Descargar