Académique Documents
Professionnel Documents
Culture Documents
!#%%&%()!#+, %##%
%+!( %!.,%+(%!)!/#0#+%1 +2+(
344444444444444444444444444444444444444444444444444444444444444
344444444444444444444444444444444444444444444444444444444444444
344444444444444444444444444444444444444444444444444444444444444
2(5 6&(!(+7#+%((( !+
!! ,%+38(%9%6)6
(&+2+(3 (+1!(:(6
4444444444444444
44444444444444444444444444444444444444444444444444444444444444
!<(1%<
!<#((+<
+3444444444444444
+3444444444444444
!<+#!
+3444444444444444
8(%9%6)6
(+1!(:(6
#%+!+&)!#(%#3
%&%()!#+, %##%
=
21(!&=>?>
%12(+7#+1(!6 %1 +!1#(#()1#1!
#+%5 %+1+! #+%11%(61&=<>3?3711((+!! %
21(!; 2+1!!(%1/(%#+11!(#+,2 12+(!+1
1%1+(1&=<>3?301 %1((##+%112#/#12+(!
1 (+3
9!&%(+
!# %&
Acrnimos
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 fr 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
ISO
JTAG
LQI
LR-WPAN
MAC
MIPS
MCU
MicroController Unit
OSI
SAP
SCP
SFTP
Start Of Frame
SOF
SPI
SSH
Secure SHell
SSP
PAN
PPDU
RISC
UART
UDP
iii
URL
USB
W3C
WAN
WHATWG
WLAN
WPAN
ZASA
ZDO
iv
ndice general
1. Introduccin
1.1.
1.2.
1.3.
1.4.
1.5.
Ubicacin tecnolgica . . . . . . . . . . . . . . . . . . . . . . .
Tecnologas inalmbricas de corto alcance: ZigBee o Bluetooth
El papel de ZigBee/802.15.4 en el futuro de las comunicaciones
Motivacin y objetivos del proyecto . . . . . . . . . . . . . . .
Estructura del documento . . . . . . . . . . . . . . . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
2. ZigBee/802.15.4
1
2
5
6
6
9
2.1. Introduccin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2.1.1. Evolucin de las redes inalmbricas de rea personal . . . .
2.1.2. IEEE 802.15.4 y ZigBee . . . . . . . . . . . . . . . . . . . .
2.1.3. Certicacin 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. Topologa de red . . . . . . . . . . . . . . . . . . . . . . . .
2.2.3. Capa fsica IEEE 802.15.4 . . . . . . . . . . . . . . . . . . .
2.2.3.1. Deteccin de energa recibida (ED) . . . . . . . . .
2.2.3.2. Indicador de calidad de enlace (LQI) . . . . . . . .
2.2.3.3. Evaluacin de canal libre (CCA) . . . . . . . . . .
2.2.3.4. Formato de PPDU . . . . . . . . . . . . . . . . . .
2.2.3.5. Caractersticas que reducen el consumo energtico
capa fsica . . . . . . . . . . . . . . . . . . . . . . .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
en
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
la
. .
9
9
10
12
12
14
15
18
19
20
24
25
25
26
26
26
NDICE GENERAL
vi
. .
. .
. .
. .
. .
. .
. .
en
. .
. .
. .
. .
. .
en
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
la
. .
. .
. .
. .
. .
la
. .
. .
. .
. .
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
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
5. Fase de pruebas
61
63
67
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
69
69
71
74
74
80
82
83
84
85
86
87
88
89
90
93
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
. 93
. 94
. 94
. 100
. 101
103
107
NDICE GENERAL
viii
Bibliografa
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
107
107
107
107
109
ndice de guras
1.1.
2.1.
2.2.
. . . . . . . . . . . . . . . . .
13
2.3.
15
2.4.
. . . . . . . . . . . . . . . . . . . . . . . . . . . .
21
2.5.
22
2.6.
22
2.7.
23
2.8.
25
2.9.
28
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3
12
. . . . . . . . . . . . . . . . . . . . . . . . . .
34
35
3.1.
Contenido eZ430-RF2480 . . . . . . . . . . . . . . . . . . . . . . . . . . . .
42
3.2.
Conexin CC2480-MSP430 . . . . . . . . . . . . . . . . . . . . . . . . . . .
43
3.3.
44
3.4.
. . . . . . . . .
44
3.5.
Campo de Comando
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
45
3.6.
. . . . . . . . . . . . . . . . . . . . . . . . . . .
47
3.7.
49
3.8.
49
3.9.
. . . . . . . . . . . . . . . . . . . . . .
50
. . . . . . . . . . . . . . . . . . . . . . . . . . . .
54
55
ix
NDICE DE FIGURAS
x
3.12. MSP430 IAR Embedded Workbench: Estructura [24]
. . . . . . . . . . . .
58
60
61
. . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . .
63
4.1.
. . . . . . . . . . . . . . . . . . . . . .
72
4.2.
73
4.3.
80
4.4.
81
ndice de tablas
1.1.
2.1.
16
3.1.
. . . . . . . . . . . . . . . . .
48
3.2.
53
4.1.
72
xi
. . . . . . . . . . . . . . . . . . . .
xii
NDICE DE TABLAS
Captulo 1
Introduccin
1.1.
Ubicacin tecnolgica
2
1.2.
CAPTULO 1.
INTRODUCCIN
Bluetooth sobrepasa a ZigBee en velocidad de transferencia, posibilidades de interconexin, capacidad para evitar las interferencias en frecuencia y estandarizacin de perles
de aplicacin. Bluetooth es ideal para transferencia de archivos e intercambio de datos, y
ms adecuado para la comunicacin de ordenadores con perifricos.
En resumen, se puede determinar que si la aplicacin necesita de forma predominante
alguna de las siguientes caractersticas, se debe elegir un dispositivo Bluetooth:
Imprescindible si se necesita:
Intercambio de datos en tiempo real (audio o vdeo streaming )
Calidad de servicio garantizada
tes.
Por otro lado, ZigBee aventaja a Bluetooth en cuanto a duracin de la batera de los
dispositivos y es ms robusto en caso de fallos de sensores en la red. ZigBee es la mejor
alternativa para aplicaciones que necesiten la trasferencia de pequeos paquetes sin una
periodicidad denida a travs de redes malladas.
En resumen, se puede determinar que si la aplicacin necesita de forma predominante
alguna de las siguientes caractersticas, se debe elegir un dispositivo ZigBee:
Imprescindible si se necesita:
se pensaba que el trmino viene de Wireless Fidelity como equivalente a Hi-Fi, High Fidelity,
que se usa en la grabacin de sonido, realmente la Wireless Ethernet Compatibility Alliance contrat a
una empresa de publicidad para que le diera un nombre a su estndar, de tal manera que fuera fcil de
identicar y recordar.
CAPTULO 1.
INTRODUCCIN
Se muestra a continuacin en la tabla 1.1 una comparacin entre las tecnologas anteriomente mencionadas:
Estndar
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
Frecuencias
2.4 GHz
Tasa de
250 Kb/s
1 - 24 Mb/s
110 Mb/s
54 Mb/s
Alcance
70m
100m
10m
100m
Nmero 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,
Modulacin
(+ASK),
COFDM,
O-QPSK
CCK, M-QAM
Especificacin
Wi-Fi
IEEE
Transferencia
Mxima
canales
Ensanchamiento
DSSS
FHSS
DS-UWB,
MB-OFDM
Mecanismo de
Seleccin
Salto de
Salto de
Seleccin Dinmica de
Coexistencia
Dinmica de
Frecuencia
Frecuencia
Frecuencia
Frecuencia
Adaptativo
Adaptativo
Control de Potencia
Transmitida (802.11h)
Nmero Mximo
de sensores
> 65000
(para una
piconet )
Tabla 1.1: Comparativa de tecnologas inalmbricas [17]
1.3.
En los prximos aos es muy probable que ZigBee vea incrementado su uso ya que
sus caractersticas se adaptan a los requerimientos necesarios para un amplio rango de
soluciones, destacndose las siguientes:
6
1.4.
CAPTULO 1.
INTRODUCCIN
1.5.
1.5.
Descripcin detallada de ZigBee/802.15.4 por ser considerado el estndar ms novedoso y quizs desconocido de los que se usan para este Proyecto Fin de Carrera.
router
y terminando en la puesta en
CAPTULO 1.
INTRODUCCIN
Captulo 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 travs del conjunto de soluciones
estandarizadas ZigBee/802.15.4 para poder entender tanto sus fundamentos bsicos, como
las causas que lo han hecho tan prometedor en los ltimos aos con la llegada de la
domtica.
2.1.
2.1.1.
Introduccin
Las redes celulares pueden ser consideradas la extensin lgica y natural de las redes
telefnicas por cable. Conforme fueron aumentando tanto las necesidades de movilidad
como el coste de instalacin de las redes cableadas, la idea de lograr conexiones personales
independientemente de la localizacin del usuario tambin progres.
10
CAPTULO 2.
ZIGBEE/802.15.4
este ltimo punto donde se enmarca el grupo de trabajo IEEE 802.11, en la investigacin
y estandarizacin de redes WLAN (Wireless Local Area Network ).
Sin embargo, mientras IEEE 802.11 se centra en proporcionar altas tasas de datos a
distancias tpicas de decenas de metros, las WPAN (Wireless Personal Area Network )
tienen como principal objetivo dar servicio en el entorno prximo a una persona u objeto,
buscando ante todo lograr dispositivos de bajo coste, bajo consumo y pequeo tamao.
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 energtico 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,
estn destinadas al manejo de un amplio rango de aplicaciones, como las destinadas a
telfonos mviles, 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, mdico o residencial de bajo consumo
de energa y bajo coste.
2.1.2.
2.1.
INTRODUCCIN
11
1 2.4
12
CAPTULO 2.
ZIGBEE/802.15.4
2.1.
INTRODUCCIN
13
trabajo. Cada capa aade una mayor complejidad basada en el soporte que prestan las
capas inferiores.
14
CAPTULO 2.
ZIGBEE/802.15.4
2.1.5.
Versiones de ZigBee
2.1.
INTRODUCCIN
15
2.1.6.
16
CAPTULO 2.
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
SI
2.1.
INTRODUCCIN
17
18
CAPTULO 2.
ZIGBEE/802.15.4
conversacin, en la que otros pueden interferir. As, el canal puede estar ocupado o el dispositivo destino puede no recibir la peticin. Este sistema se usa en sistemas en los que los
dispositivos pasan la mayor parte del tiempo inactivos. Para que los dems elementos de
la red sigan tenindolos 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 ningn 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
Alliance
la parte
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 segn el papel que desempeen en la red:
Coordinador ZigBee: es el dispositivo ms completo, solo puede haber uno en cada
red y se encarga de la inicializacin y control de la misma. Puede actuar tambin
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 dinmicamente alrededor de obstculos y proporciona rutas alternativas en caso de congestin
o de fallos de dispositivos. Pueden conectarse tanto al coordinador como a otros enrutadores y soporta tambin dispositivos hijos. Cabe destacar que ofrece un nivel de
aplicacin para la ejecucin de cdigo 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 informacin destinada a otros dispositivos ni llevar a cabo ninguna operacin de enrutamiento. De esta forma, puede
permanecer inactivo la mayor parte del tiempo, aumentando la vida de sus bateras. Adems, y no menos importante, el hecho de no tener que almacenar tablas de
encaminamiento hace que su necesidad de memoria disminuya considerablemente,
hacindolo signicativamente ms barato.
Por otro lado, atendiendo a la capacidad para actuar segn qu tipo de los dispositivos
vistos anteriormente, podemos realizar una segunda clasicacin:
20
CAPTULO 2.
ZIGBEE/802.15.4
Dispositivo de funcionalidad reducida (RFD: Reduced Functionality Device ): presenta capacidad y funcionalidad limitadas (especicadas en el estndar) con el propsito
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.
Topologa de red
En las redes ZigBee pueden encontrarse tres tipos de topologas que se describen a
continuacin:
2.2.
21
IEEE 802.15.4
rbol o jerrquica: en esta topologa la red esta compuesta por un sensor central que
acta como coordinador y varios enrutadores y/o dispositivos nales, tal y como se
muestra en la gura 2.5. La misin de los enrutadores es extender la cobertura de la
red (aunque tambin 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, adems, 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
CAPTULO 2.
ZIGBEE/802.15.4
2.2.
23
IEEE 802.15.4
24
CAPTULO 2.
ZIGBEE/802.15.4
Sea cual sea la topologa elegida, despus 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.
los dispositivos comerciales alcanzan a menudo sensibilidades muy inferiores, siendo -100 dBm
un valor habitual.
2.2.
25
IEEE 802.15.4
2.2.3.2.
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 estimacin de la relacin seal a ruido o una combinacin de ambos mtodos. El resultado de
LQI ser usado por la capa de red o por la de aplicacin.
LQI se indica mediante un entero de 8 bits, asocindose el mayor y el menor valor
26
CAPTULO 2.
ZIGBEE/802.15.4
posible con la mayor o menor calidad detectable por el receptor, distribuyndose los valores
de manera uniforme entre estos lmites.
2.2.3.3.
Energa por encima del umbral: CCA informar de canal ocupado si detecta cualquier
energa sobre el umbral de ED.
Deteccin de portadora: CCA informar de canal ocupado solo cuando detecte una
seal con la modulacin y ensanchamiento de las caractersticas de IEEE 802.15.4.
No tiene en cuenta si la seal esta por encima o por debajo del umbral ED.
Deteccin de portadora con energa por encima del umbral: se trata de una combinacin de los dos mtodos anteriores.
2.2.3.4.
Formato de PPDU
2.2.3.5.
Se presentan a continuacin las caractersticas que posibilitan el bajo consumo energtico en la capa fsica:
2.2.
IEEE 802.15.4
27
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 tcnicas como DSSS aporta la ventaja de que sus ltros de
canal de gran anchura llevan de forma implcita aparejados una baja latencia.
2.2.4.
28
2.2.4.1.
CAPTULO 2.
ZIGBEE/802.15.4
2.2.
IEEE 802.15.4
29
envo 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.
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 vara
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 transmisin 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 envo 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 trasmisin 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
envo se produce en modo broadcast de forma peridica. Este periodo puede variar, dependiendo
de la conguracin, entre 0.015 y 252 segundos
30
CAPTULO 2.
ZIGBEE/802.15.4
2.2.4.3.
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 estn
transmitiendo tramas baliza dentro de su espacio de operacin personal.
El escaneo activo de canal se lleva a cabo sobre un conjunto de canales lgicos. Para
cada canal, el dispositivo debe conmutar la trasmisin a dicho canal y y enviar un comando
de solicitud de baliza. Despus de esto, el dispositivo activa su receptor durante un tiempo
congurable y almacena la informacin 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 peridicas le acabarn
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 nmero mximo de identicadores PAN indicados
en la implementacin. El escaneo completo nalizar cuando todos los canales del conjunto de canales lgicos disponibles hayan sido escaneados (o cuando se hayan almacenado
2.2.
IEEE 802.15.4
31
2.2.4.4.
Hay dos procedimientos para unirse a una red ZigBee: asociacin MAC y reasociacin
de red (que se describir ms adelante).
La asociacin 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 trasmisin del comando correspondiente. Posteriormente, el dispositivo que desee unirse a la red deber indicarlo mediante otro comando.
Esta ltima peticin causar el inicio de un protocolo de la capa MAC en el que se intercambiarn mensajes entre el dispositivo que desea unirse a la red y el coordinador o el
enrutador, indicndose entre otros detalles la direccin asignada al dispositivo dentro de
la red. Debe destacarse que la asociacin MAC es un protocolo inseguro ya que todas las
tramas que se intercambian son enviadas sin tomar medidas de seguridad.
2.2.4.5.
Sincronizacin
32
CAPTULO 2.
ZIGBEE/802.15.4
2.2.4.6.
El formato general de la trama MAC vara segn el tipo de trama que se enve, las diferentes opciones se muestra en la gura 2.3 e incluyen los siguientes componentes bsicos:
MHR: comprende control de trama, nmero de secuencia e informacin de direccionamiento.
Zona de carga MAC: de longitud variable, contiene informacin especca del tipo
de trama. Las tramas ACK no contienen zona de carga.
MFR: contiene FCS (Frame
2.2.4.7.
Check Sequence ).
Se presentan a continuacin las caractersticas que posibilitan el bajo consumo energtico 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 recuperacin de las bateras: todos los tipos de bateras presentan un efecto
de recuperacin por el cual su duracin se extiende si la corriente es extrada de ellas
en rfagas en lugar de hacerse con el equivalente en corriente constante.
2.3.
ZIGBEE ALLIANCE
2.3.
33
ZigBee Alliance
de ZigBee.
Una asociacin de empresas que se ocupan de la denicin de las capas supe-
riores de ZigBee.
2.3.1.
2.3.1.1.
Reincorporacin a la red
34
2.3.1.2.
CAPTULO 2.
ZIGBEE/802.15.4
Enrutamiento ZigBee
Una de estas alternativas para reducir las necesidades de memoria es usar el mecanismo
de distribucin de direcciones, en el que las direcciones son asignadas siguiendo una cierta
jerarqua, comenzando por el coordinador. As, los dispositivos con poca o ninguna capacidad de enrutamiento, o dispositivos cuya capacidad haya sido agotada, tienen la opcin
de usar el encaminamiento jerrquico para proporcionar un enrutamiento posiblemente
menos eciente pero ms sencillo (ya que el paquete es siempre enrutado hacia un padre
2.3.
ZIGBEE ALLIANCE
35
36
CAPTULO 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.
Se presentan a continuacin las caractersticas que posibilitan el bajo consumo energtico en la Capa de Red:
El algoritmo de enrutamiento usado en ZigBee 1.0 emplea como parmetros tanto la
calidad del enlace como el nmero de saltos, de esta manera disminuye el consumo
de energa al minimizar las retransmisiones de mensajes y evitar la repeticin de las
rutinas para el descubrimiento de rutas.
Las implementaciones futuras de ZigBee probablemente incluirn dentro de su funcin de costes para la eleccion de la ruta adecuada parmetros relacionados con el
consumo energtico, tales como energa restante del sensor o fuente de energa usada
por el sensor.
2.3.2.
La capa superior de la pila de protocolos ZigBee esta compuesta por los siguientes
elementos:
Marco de aplicacin: proporciona una descripcin acerca de cmo denir un perl
en la pila ZigBee. Tambin 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 bsicos.
Dentro del marco de aplicacin quedan denidos los objetos de aplicacin, 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 aplicacin, estando el 0
reservado para ZDO.
2.3.
ZIGBEE ALLIANCE
37
ZDO: dene el papel a desempear por un dispositivo dentro de la red (coordinador, enrutador o dispositivo nal), inicia y/o responde a peticiones de conexin y
de descubrimiento, y establece una relacin segura entre los dispositivos de la red.
Tambin provee un amplio conjunto de comandos para la administracin de la red
y el dispositivo. ZDO es siempre el endpoint 0.
En colaboracin con ZDO se encuentra el Plano de Administracin ZDO, cuya
labor es facilitar la comunicacin 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 aplicacin. Se ocupa tambin
de almacenar la tabla de conexiones.
SSP (Secure Services Provider ): acta entre APS y la capa de red para proveer los
mecanismos necesarios para el uso de encriptacin a ambas. Queda congurado a
travs de ZDO.
38
CAPTULO 2.
ZIGBEE/802.15.4
2.4.
Seguridad en ZigBee
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 encriptacin de tramas sino como
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 estndar pueden ser enviadas con o sin encriptacin. La
opcin de alta seguridad es solo soportada por ZigBee PRO.
Clave de Enlace: se trata de una clave opcional, usada para el envio unicast
40
CAPTULO 2.
ZIGBEE/802.15.4
Captulo 3
Componentes y tecnologas utilizadas
En este captulo se har una descripcin de las herramientas tanto software como
hardware que han sido necesarias para la realizacin y prueba de este Proyecto Fin de
Carrera.
3.1.
3.1.1.
Elementos hardware
en http://focus.ti.com/lit/an/swra176/swra176.pdf
41
42
CAPTULO 3.
El equipo de desarrollo que nos ocupa est compuesto de tres motas/sensores ZigBee, un conector USB (Universal Serial Bus ) y dos suministradores de energa mediante
bateras. Todos ellos pueden verse en la gura 3.1.
2 Descrito
en el apartado 3.2.1.3
3.1.
ELEMENTOS HARDWARE
43
44
CAPTULO 3.
3.1.
ELEMENTOS HARDWARE
45
46
CAPTULO 3.
Interfaz de aplicacin
En cuanto a la interfaz con la capa de aplicacin, aparte de la interfaz API propia
de la solucin 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 versin
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 conguracin 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 .
3.1.2.
en http://focus.ti.com/lit/er/swra175a/swra175a.pdf
3.1.
ELEMENTOS HARDWARE
47
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. Adems, cada
cable incorpora la identicacin nica desarrollada por FTDI y denominada FTDIChip-ID
que permite proporcionar seguridad a la hora del acceso para la transferencia de archivos
a travs 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 comunicacin con este dispositivo mediante los puertos de emulacin 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 eleccin frente a otras
alternativas, como podra haber sido el conversor proporcionado en el equipo de desarrollo
eZ430-RF2480 de Texas Instruments.
48
3.1.3.
CAPTULO 3.
Parmetro
Estndar Inalmbrico
Cifrado
Antena
Modulacin
Frecuencia de operacin
Tasa de transferencia de
datos nominal
Potencia de salida
Sensibilidad
Canales
WAN
LAN
Otras conexiones
Descripcin
3.1.
ELEMENTOS HARDWARE
49
50
CAPTULO 3.
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 resolucin de problemas, se puede conectar al enrutador ASUS WL-500G Premium a travs 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) versin 2. Est destinado a una gran variedad de enrutadores inalmbricos IEEE
802.11a/b/g/h/n con arquitectura basada en chips Atheros o Broadcom.
Las versiones hasta la nmero 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
versin 23 en adelante est basado en OpenWrt, que empez siendo un rmware basado en
el de Linksys pero ms tarde cambi a su propio entorno. La idea inicial de crear DD-WRT
surgi debido a la decisin de Sveasoft de comenzar a cobrar por su producto, cerrando
de esta manera la puerta al cdigo 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 versin es adecuada instalar en nuestro enrutador, basta con acceder a la pgina ocial del rmware DD-WRT6 , una vez ah acudir a la seccin Support y
entrar a Router Database. Especicando nuestro modelo de router en el espacio correspondiente se mostrarn las versiones recomendadas para ser instaladas en nuestro dispositivo,
6 http://www.dd-wrt.com
52
CAPTULO 3.
rmware
que incluyen instaladas por defecto. Esto ltimo es importante ya que de esta eleccin
dependern los requisitos, principalmente de memoria, de los que necesitaremos disponer
en nuestro enrutador.
En la tabla 3.2 se describen algunas caractersticas que pueden ser incluidas en DDWRT:
3.2.
53
ELEMENTOS SOFTWARE
Utilidad
Asterisk
Wake On LAN
RFlow Collector
Descripcin
54
CAPTULO 3.
3.2.
ELEMENTOS SOFTWARE
3.2.1.2.
55
Eclipse es una comunidad cuyos objetivos estn centrados en la realizacin de una plataforma de cdigo abierto para el desarrollo de aplicaciones. Se puede mantener el mismo
entorno de desarrollo pero variar el lenguage de programacin usado para la aplicacin a
desarrollar sin ms que aadir distintos mdulos. La Fundacin Eclipse7 es una asociacin
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 cdigo abierto surgida entorno a este proyecto.
El Proyecto Eclipse fue creado por IBM en Noviembre de 2001 y apoyado por una
agrupacin de desarrolladores de software. La Fundacin 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.
56
CAPTULO 3.
desarrollo de software Java, pero nada ms lejos de la realidad ya que Eclipse permite
la adicin de mdulos para el desarrollo de aplicaciones en lenguages de programacin
tan diversos como pueden ser C/C++, PHP, Perl, Ruby y JavaScript. Cada una de estos
mdulos se denominan Kits de Desarrollo Software (SDK) y permiten desde la correccin
de la sintaxis utilizada, hasta la depuracin y compilacin del cdigo, pasando por la
informacin acerca de las API que pueden utilizarse y como deben ser utilizadas. Otra
interesante caracterstica de Eclipse es su capacidad para ocultar bloques de cdigo que
hacen ms fcil la comprensin y manejo del mismo cuando ste crece.
En cuanto a su rendimiento, Eclipse se muestra muy estable, presentando como nico inconveniente su consumo de memora, que lo hace especialmente lento en aquellas
mquinas con pocos recursos de memoria RAM.
En el caso de este Proyecto Fin de Carrera se hace uso de Eclipse en combinacin con
el SDK de C++, todo ello ejecutado bajo un sistema operativo Ubuntu 10.04.
3.2.1.3.
Editor de textos
Permite la edicin de varios archivos en paralelo, adems de todas las caractersticas bsicas exigidas en un editor de textos moderno, como la posibilidad de hacer/rehacer
de forma ilimitada acciones. Provee tambin caractersticas destinadas a facilitar el desarrollo de software como puede ser el resaltado de palabras clave del lenguage C/C++.
3.2.
ELEMENTOS SOFTWARE
57
58
CAPTULO 3.
3.2.1.4.
WinSCP
WinSCP es una aplicacin 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 bsicas 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 simblicos y accesos
directos.
WinSCP permite la eleccin 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 informacin referida al directorio remoto). En la gura puede observarse el interfaz
'commander ' de WinSCP.
Esta aplicacin 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 slo para Windows, ahora tambin est disponible para varias plataformas
Unix en su web10 . Su caracterstica ms 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 comprobacin 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 visualizacin del formato de trama enviado por
stas.
La conguracin adecuada para una correcta recepcin de los datos es: 9600 baudios, 8
bits de datos, 1 bit de parada y ningn 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
CAPTULO 3.
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 travs de esta
utilidad podremos pasar del formato ASCII proporcionado a un formato hexadecimal al
que se est ms habituado y suele ser ms cmodo 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, mostrndose en pantalla el equivalente en hexadecimal. Se puede ver un
ejemplo de conversin 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
3.2.2.
Programacin
3.2.2.1. C++
C++ fue una evolucin de C, el cual surgi a partir de dos lenguajes de programacin
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 caractersticas de su lenguaje B segn sus equivalentes en BCPL, valindose
de B para crear las primeras versiones del sistema operativo UNIX. BCPL y B tenan
tambin en comn que eran lenguages sin tipos denidos.
El lenguaje C fue una evolucin de B llevada a cabo por Dennis Ritchie en los Laboratorios Bell. C se basa en muchos conceptos bsicos de BCPL y de B, aadiendo 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
CAPTULO 3.
La gran difusin vivida por C tuvo tambin aspectos negativos, el ms 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 tcnico
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 estndar
y el ANSI trabaj junto a ISO (International Organization for Standardization ) en su estandarizacin a nivel mundial, publicndose el documento conjunto del estndar en 1990
bajo el nombre 'ANSI/ISO 9899: 1990'.
Por otro lado, a principios de los 80, Bjarne Stroustrup cre C++, una extensin de C.
C++ aade una serie de caractersticas que mejoran el lenguaje C, pero sobre todas ellas,
la ms importante fue la inclusin de la capacidad de programacin orientada a objetos. El
concepto de objeto surga novedoso pero traera con l la puerta de acceso denitiva para
la construccin de software de forma rpida y econmica. 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 visin de programacin estructurada. C++ era y es un lenguage hbrido 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 implementacin 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 estandarizacin como ANSI, DIN (Deutsches Institut fr Normung ) y
muchas otras. El primer estndar de C++ fue aprobado en 1998 bajo el nombre ISO/IEC
14882, habiendose publicado hasta hoy dos revisiones de ste. El estndar ISO de C++
dene el lenguaje del ncleo, las libreras includas de manera estndar y los requisitos
de implementacin. Se espera para prximas fechas el lanzamiento del nuevo estndar de
C++, siendo el nombre no ocial de ste C++0x.
La implantacin del uso de C y C++ es mayoritara entre la comunidad desarrolladora
de software pero su inuencia es an mayor al ser la base de otros lenguajes de programacin ampliamente usados en la actualidad como es Java, de Sun Microsystems. En la
3.2.
ELEMENTOS SOFTWARE
63
3.2.2.2.
CGI
64
CAPTULO 3.
Un ejemplo clsico de uso de CGI es la comunicacin de una base de datos con Internet
para permitir su consulta a travs de un servidor. Para llevar esto a cabo se necesitar
un programa CGI, al que la pgina web del servidor llamar cuando el usuario as lo
decida, que permitir extraer resultados de la base de datos y mostrrselos posteriormente
al usuario.
A la hora de usar CGI no hay lmites respecto a lo que se puede realizar pero deber
tenerse siempre presente que el tiempo de cmputo 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, decisin que no es la ms segura. Por ello existen una
serie de precauciones de seguridad que deben implementarse cuando se usan programas
CGI de las cuales la ms 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 pginas web alojadas en el servidor, normalmente /www. El servidor conoce que el
directorio /cgi-bin contiene ejecutables que debern ser ejecutados y su salida deber ser
enviada al navegador del cliente.
Un programa CGI puede ser escrito en cualquier lenguage de programacin 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 mencin al hecho de que CGI permite
la ejecucin de programas tanto de tipo interpretado como compilado, lo que permite
tambin el uso de scripts.
Para el paso de datos del servidor al programa CGI, el servidor puede usar tanto lneas
de comando como variables de entorno que se activan cuando se ejecuta el programa CGI.
Se describen a continuacin de forma breve estas variables de entorno:
3.2.
ELEMENTOS SOFTWARE
65
SERVER_SOFTWARE
Devuelve el nombre y la versin del software del servidor de informacin que contesta la peticin de usuario.
SERVER_NAME
Devuelve nombre de host del servidor, el alias DNS, o la direccin IP como aparecera en las URL autoreferenciadas.
GATEWAY_INTERFACE
Las variables anteriormente mencionadas son activadas en todos los casos por el servidor, con independencia de la informacin enviada, por otro lado, las que se muestran a
continuacin son especcas de la peticin hecha por el usuario.
SERVER_PROTOCOL
Devuelve el nombre y revisin del protocolo de informacin bajo el que se realiz la peticin.
SERVER_PORT
cin.
REQUEST_METHOD
QUERY_STRING
66
CAPTULO 3.
REMOTE_HOST y REMOTE_ADDR
AUTH_TYPE
REMOTE_USER
REMOTE_IDENT
Si el servidor HTTP soporta autenticacin 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
CONTENT_LENGTH
el cliente.
Para devolver como respuesta una pgina web, bastar con imprimir sta en pantalla
usando una funcin destinada a ello dentro del lenguaje de programacin elegido para la
creacin del programa CGI, respetando el estndar usado por el servidor para la presentacin de webs. En los programas CGI usados en este Proyecto Fin de Carrera se hace uso
de la funcin printf en combinacin con HTML. Un ejemplo de esta combinacin podra
ser:
printf("<HTML>\n");
printf("<HEAD>\n");
printf("<TITLE>Ejemplo de pgina 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++, dara como
resultado la impresin por pantalla de una pgina web en blanco con la cabecera Ejemplo
de pgina impresa mediante CGI usando HTML.
Por ltimo, se debe mencionar tambin que el cdigo CGI, una vez compilado, deber
ser guardado en la carpeta cgi-bin anteriormente indicada, con permisos de ejecucin y
extensin 'cgi'.
3.2.2.3.
HTML
HTML (
en la web. El cdigo de HTML hace uso del concepto de etiquetas para permitir a los
navegadores la correcta representacin de las pginas web. Para comprender la forma en
la que se estructura un cdigo HTML se puede hacer una similitud con el cuerpo humano,
ya que las etiquetas aparecen segn un orden lgico, limitndose qu puede aparecer o no
antes o despus 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'.
ociales de HTML describen las "instrucciones" del lenguaje, pero no cmo seguirlas, es
decir, cmo las interpretan los programas informticos. Esto permite visualizar pginas
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 interpretacin por parte del navegador y esta es la razn por la que la misma pgina puede
aparecer de modo diferente en un navegador u otro. Es ms, algunos editores de software
agregan instrucciones HTML exclusivas que no se hallan en las especicaciones de W3C.
68
CAPTULO 3.
Por este motivo, las pginas 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 pginas Web deben seguir las recomendaciones de W3C, de forma que lleguen
al pblico ms amplio posible.
Para un aprendizaje detallado acerca de HTML se recomienda consultar la especicacin ocial de HTML 4.0112 .
12 Disponible
en http://www.w3.org/TR/html401/
Captulo 4
Desarrollo del sistema
4.1.
Descripcin de ob jetivos
4.1.1.
Para mostrar una visin ms clara del sistema desarrollado se enumeran a continuacin
los requisitos, tanto funcionales como operacionales, que ejercieron de gua a la hora de
69
70
CAPTULO 4.
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,
enrutador, de manera que se facilite la instalacin 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 aplicacin destinada a ejecutarse en el enrutador para ejercer las tareas de
4.2.
71
4.2.
Como primer paso en el desarrollo de la pasarela ZigBee/802.15.4 - IP se debe conseguir la comunicacin entre la red formada por las motas ZigBee/802.15.4 y el router
especicados1 . Para lograr esta comunicacin se hace uso, por un lado, de la capacidad
de conexiones va USB del router y, por otro, de la posibilidad de replicacin de los datos
intercambiados entre el microcontrolador MSP430 y el procesador CC2480 a travs de la
conexin UART. Gracias a sto, todos aquellos datos procedentes de los distintos sensores ZigBee/802.15.4 que llegan hasta el dispositivo coordinador pueden ser ledos usando
esta interfaz UART. Usando un conversor que permita la comunicacin entre la conexin
UART y la entrada USB del router se conseguir la transmisin de los datos procedentes
de la red de sensores hacia el mismo.
La caracterstica necesaria para la eleccin 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 opcin fu la utilizacin 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 mdulos controladores para un kernel 2.4, nalmente se eligi el coversor
TTL-232R-3V3 de FTDI descrito en la subseccin 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 seccin 3.1, se usarn las motas incluidas en el equipo de desarrollo eZ430-
router
ASUS WL-500G
72
CAPTULO 4.
6
1
5
2
4.2.
73
74
4.3.
CAPTULO 4.
4.3.1.
4.3.
75
void AdecuacionRouter()
Se encarga de la carga de los mdulos necesarios para el correcto funcionamiento del conversor, de la creacin de la estructura de carpetas en el sistema operativo y
de la creacin e inicializacin de los archivos que indican el estado, las direcciones IP
destinatarias y la pgina web que permite la visualizacin de estas direcciones.
Por ltimo indicar que devuelve un entero con el descriptor de chero asociado a la
apertura previamente realizada.
76
CAPTULO 4.
La funcin 'tcsetattr' congura el puerto USB asociado al indicador de chero 'fd' segn lo indicado a travs del parmetro 'cong'. Por ltimo, 'TCSANOW' es una constante
simblica denida en la librera <termios.h> que indica que el cambio de conguracin 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 funcin se establece la conguracin del puerto USB desde el
que se leern los datos procedentes del conversor. Tal y como se desprende de los nombres
de los parmetros, la conguracin queda determinada mediante el nmero de smbolos
transmitidos por segundo, los bits de parada, la existencia o no de paridad as como su
tipo, el modo de operacin (cannico o no cannico), el nmero 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 conguracin del puerto USB
han de ser introducidos en una estructura especca para tal n, esta estructura es del
tipo struct termios. Este tipo de estructura aporta una interfaz para la conguracin de
los parmetros de comunicacin con dispositivos asncronos. 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;
4.3.
77
La obtencin y el cambio de conguracin son llevados a cabo por las funciones 'tcgetattr' y 'tcsetattr' respectivamente.
78
CAPTULO 4.
del mismo. Cada vez que se lea una direccin IP se crear un socket UDP en el que se
incluir la trama procedente del conversor anteriromente leda y que llevar como destino
la direccin IP recien leda.
El proceso anteriormente descrito de recepcin de trama y posterior envo de la misma
a todas las direcciones IP almacenadas como destino ser repetido de manera continuada
mientras no se indique la detencin de la pasarela u ocurra algn error en su ejecucin.
En cuanto al proceso de creacin y envo del socket, se aprecian distintas acciones
necesarias para su correcta ejecucin. En primer lugar deben reservarse recursos para el
socket mediante:
Esta funcin devuelve un indicador de socket que ser utilizado para hacer referencia
a l una vez creado. Como parmetros se le pasan tres constantes simblicas. La primera
de ellas, AF_INET, indica que el socket est destinado a su envo a travs de Internet. La
segunda, SOCK_DGRAM, especica el uso de datagramas en lugar del establecimiento
de un circuito virtual para su envo. La tercera y ltima constante simblica pasada como
parmetro, IPPROTO_UDP, indica que se debe usar el protocolo de nivel de transporte
UDP. UDP es el protocolo estndar para el nivel de transporte cuando enviamos datagramas a travs de redes IP por lo que tambin podra haberse pasado como parmetro cero,
de manera que sera el propio sistema operativo el que elegira el protocolo para el envo
de datagramas ms 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 travs
del cual se enviar. Para este propsito se rellena la estructura como sigue:
descr_socket.sin_family = AF_INET;
descr_socket.sin_port = htons(PORT);
4.3.
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 direccin IP a la que se enva y la descripcin 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 direccin IP, 'buf ' la variable donde se almacena el dato
recibido procedente del conversor y 'BUFLEN' su tamao.
int RecibirPorPuertoSerie (int fd, char *buer, int buer_tamano, int num_car,
int reintentos)
80
CAPTULO 4.
4.3.
81
82
4.4.
CAPTULO 4.
Desarrollo de la interfaz
4.4.
DESARROLLO DE LA INTERFAZ
4.4.1.
83
84
CAPTULO 4.
sobre el enlace que verica el estado de la pasarela, la aplicacin CGI se encargar de leer
el archivo 'estado' y, una vez ledo su contenido, si almacenaba un uno mostrar la pgina
que permite detener la pasarela o, en el caso de que al archivo ledo almacenara un cero,
mostrar la pgina con las indicaciones que permiten iniciar la pasarela.
Conviene recordar que, a la hora de compilar los archivos cgi se usaron dos compiladores
distintos, segn se desease ejecutarlos en un ordenador o en el router. As, para su ejecucin
sobre un ordenador con un sistema operativo Linux, cualquiera de los compiladores de
C++ existentes para Linux es vlido, mientras que para su ejecucin en el router se hizo
uso del compilador cruzado 'mipsel-linux-uclibc-c++'.
4.4.2.
4.5.
85
86
CAPTULO 4.
#! /bin/ash
touch /tmp/destinatarios.txt
touch /tmp/estado.txt
echo 0 >> /tmp/estado.txt
mkdir /tmp/www
/bin/creacion_web_destinatarios
4.6.
Aplicacin principal
Interfaz web
4.6.
87
Para compilar todos estos componentes junto al sistema operativo y obtener as una
solucin global y agrupada fueron necesarios tres pasos. En el primero de ellos se llev a
cabo la extraccin del rmware DD-WRT, en el segundo se realizaron las modicaciones
deseadas y en el tercero y ltimo se compil todo de nuevo obtenindose una nica solucin.
Veamos estos pasos con ms detalle.
88
CAPTULO 4.
Debe indicarse que 'rmware.bin' es el sistema operativo DD-WRT que se pretende extraer3 y 'directorio_de_extraccin' hace referencia al lugar donde se almacenarn
los archivos resultantes de la extraccin. Por timo, indicar que para ejecucin del comando 'extract_rmware.sh' se debe estar dentro del directorio en el que se encuentre la
herramienta.
4.6.
89
90
CAPTULO 4.
4.7.
4.7.
91
92
CAPTULO 4.
funcin 'appSrceData', se determina el nmero que identicar a cada sensor. Por ejemplo, para establecer el nmero identicativo del sensor a uno, se
debera intoducir en el cdigo:
srceReport[SRCE_REPORT_ZBID] = 1;
Captulo 5
Fase de pruebas
5.1.
94
CAPTULO 5.
FASE DE PRUEBAS
5.2.1.
Pruebas unitarias
5.2.
PROCESOS DE VERIFICACIN
95
Pruebas de regresin: volver a ejecutar una prueba que ya se haba pasado satisfactoriamente tras realizar un cambio.
Siguiendo la secuenciacin temporal llevada a cabo en el desarrollo se exponen a
continuacin las pruebas unitarias de cada elemento:
Pasarelazb
Para la vericacin de este elemento se hizo uso del ordenador DELL Inspiron
1545 en combinacin con el conversor TTL-232R-3V3 de FTDI y los sensores incluidos
en el equipo de desarrollo eZ430-RF2480 de Texas Instruments. La vericacin se llev
a cabo de forma progresiva, aadiendo las distintas funciones de las que se compone de
manera escalonada segn el siguiente orden:
1. Funciones para el manejo, conguracin y lectura del puerto USB.
2. Funcin destinada al envo de los datos ledos del puerto USB a una direccin IP y
un puerto jos.
3. Adicin de lectura de archivo para indicar la interrupcin de la aplicacin.
4. Adicin de lectura de cheros para permitir la modicacin de las direcciones IP de
destino y del puerto a usar.
5. Funcin que permite la ejecucin '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 modicacin del mismo en el cdigo fuente se proceda a
la ejecucin del programa habiendo previamente congurado los dems sensores para su
funcionamiento como enrutadores o dispositivos nales.
1
De tipo ttyUSB#
96
CAPTULO 5.
FASE DE PRUEBAS
Una vez asegurada la correcta recepcin de los datos, se pas al envo de stos a
una direccin ja. Para facilitar la vericacin de los envos se decidi que esta direccin
de destino fuese el localhost. Adems se desarrollar una sencilla aplicacin que actuara
recepcionando estos datos. As, haciendo uso de la visualizacin introducida en 'pasarelazb'
y de esta aplicacin de recepcin se pudo constatar el correcto envo a la direccin IP
indicada. Se muestra a continuacin la parte del cdigo de la aplicacin de recepcin que
permite visualizar lo enviado por la aplicacin '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;
5.2.
PROCESOS DE VERIFICACIN
97
Shell scripts
Para la vericacin de los shell scripts en el entorno de pruebas indicado se us
bash, incluido por defecto en la instalacin de Ubuntu 10.04, como intrprete 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 segn los distintos requisitos.
Se detallan a continuacin las distintas vericaciones realizadas en cada shell script :
AnadirIPzb: la vericacin de este script se llevo a cabo comprobando por separado
cada una de las tareas de las que se compone y vericando despus su funcionamiento
conjunto, de esta manera, el orden seguido a la hora de vericar e integrar funciones
dentro del script fu el siguiente:
1. Vericacin de que la direccin 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, comprobndose que todas
ellas eran detectadas como no vlidas. Una vez hecho esto, y tras comprobar que
las direcciones IP formadas por cuatro partes eran clasicadas como vlidas,
98
CAPTULO 5.
FASE DE PRUEBAS
se procedi a comrpobar que tambin eran descartadas todas aquellas direcciones formadas por cuatro partes pero no separadas por un punto, vericndose
tambin este extremo.
2. Vericacin de que todas y cada una de las cuatro partes de las que se compone
la direccin IP introducida estn compuestas tan solo de valores numricos.
Para la vericacin 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 direccin IP contenan un valor no numrico. En todos los
casos fu detectado dicho valor y, por lo tanto, clasicadas como direcciones IP
no vlidas.
3. Vericacin de que todas y cada una de los cuatro valores numricos de los
que se compone la direccin IP introducida se encuentran dentro del rango
permitido.
Para la vericacin 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 direccin IP contenan un valor numrico por encima de
255. En todos los casos fu detectado dicho valor y, por lo tanto, clasicadas
como direcciones IP no vlidas.
4. Si todo lo anterior se cumple, almacenamiento en el chero correspondiente de
la direccin IP introducida.
La vericacin de este punto consisti en introducir una direccin IP vlida
y comprobar su correcto almacenamiento en el chero indicado.
5. Por ltimo, eliminacin de posibles direcciones IP repetidas dentro del chero.
La vericacin de este punto consisti en introducir de manera consecutiva
dos direcciones IP vlidas iguales y la posterior comprobacin de que solo se
almacenaba una vez en el chero.
Siguiendo este orden, a medida que un objetivo cumpla con los requisitos de
uno de los puntos anteriores se aada el siguiente, partiendo de la base de lo que ya
se haba desarrollado y vericado.
5.2.
PROCESOS DE VERIFICACIN
99
100
CAPTULO 5.
FASE DE PRUEBAS
Interfaz web
5.2.2.
Pruebas de integracin
5.2.
PROCESOS DE VERIFICACIN
101
5.2.3.
Pruebas de sistema
102
CAPTULO 5.
FASE DE PRUEBAS
Captulo 6
Conclusiones y lneas futuras de trabajo
En el presente captulo se expondrn las conclusiones deducidas del desarrollo de este
Proyecto Fin de Carrera. Adems se mencionarn posibles lneas de investigacin y estudio
que permitiran la continuacin 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 continuacin se detallan:
Realizacin de una pasarela Zigbee/802.15.4-IP sobre un router comercial.
Posibilidad de seleccionar distintas IP destinatarias as como el puerto a travs del
cual se desean enviar los datos procedentes de la red de sensores ZigBee.
Utilizacin, en el router sobre el cual funcionar el desarrollo, de un sistema operativo
de cdigo abierto.
103
104
CAPTULO 6.
6.2.
Como consecuencia del continuo aumento de necesidades relacionadas con la monitorizacin tato en el mbito de la industria, como en el mbito mdico o residencial,
ZigBee/802.15.4, en combinacin con el desarrollo llevado a cabo en este Proyecto Fin
6.2.
105
de Carrera, puede cubrir una amplia variedad de estas necesidades. Se detallan a continuacin algunas variantes que, partiendo de este desarrollo, podran aportar soluciones
interesantes:
Aadir comunicacin desde el usuario hacia la red de sensores ZigBee para permitir
cambios en su conguracin. Esta posibilidad implicara casi con total seguridad un
cambio en la eleccin de los sensores, ya que los usados en este desarrollo admiten
una limitada capacidad de conguracin.
Adicin de soporte para direcciones IPv6 ya que el agotamiento de las direcciones
IPv4 har imprescindible su uso en pocos aos.
Integracin total del interfaz web en la misma estructura aadiendo mdulos y utilizando otras opciones de comunicacin entre HTML y los ejecutables como podra
ser PHP.
106
CAPTULO 6.
Apndice A
Manual de usuario
A.1. Instalacin del sistema operativo en el router
A.1.1.
A.1.2.
107
108
APNDICE A.
MANUAL DE USUARIO
Bibliografa
[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
[4] Per
Bothner.
Sockets Tutorial.
http://www.linuxhowtos.org/C_C++/socket.htm.
Disponible
en
http://www.iiis.org/cds2010/cd2010csc/cisci_2010/PapersPdf/ca371me.pdf.
Elahi
and
Adam
2009.
Disponible
http://www.informit.com/articles/article.aspx?p=1409785&seqNum=4.
en
[9] Jos Toms Entrambasaguas Muoz. Ingeniera de desarrollo de Sistemas de Telecomunicacin. Servicio de Publicaciones e Intercambio Cientco de la Universidad de
Mlaga, 2008.
109
BIBLIOGRAFA
110
[10] Shahin Farahani.
[11] Drew Gislason.
. Elsevier, 2008.
. Elsevier, 2008.
[12] Mareca Hatler, Darryl Gurganious, Charley Chi, and Mike Ritter.
A Market Dyna-
. ON World, 2010.
, 2007.
Instruments.
CC2480
Developer
Guide
2008.
Disponible
en
http://focus.ti.com/lit/an/swra176/swra176.pdf.
[15] Jukka Korpela.
, 2010. Disponible en
http://www.cs.tut./jkorpela/forms/cgic.html.
[16] Ed Callaway. Florida Communication Research Lab & Motorola Labs.
Low Power
, November
Protocols:
Bluetooth,
UWB,
ZigBee,
and
Comparative
, 2007.
Wi-Fi
Study
of
Disponible en
http://eee.guc.edu.eg/Announcements/Comparaitive_Wireless_Standards.pdf.
[18] Future Technology Devices International Ltd.
Converter Cable
_serial_converter_cable_TTL232R.pdf.
[19] Jordi Mayn.
, 2009. Dis-
, 2008. Disponible
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.
BIBLIOGRAFA
[22] Juan
R.
111
Pozo.
Tutorial
de
2003.
HTML
Disponible
en
http://html.conclase.net/tutorial/html/.
[23] Michael R. Sweet.
, 2005.
Disponible en http://www.easysw.com/mike/serial/serial.html.
[24] IAR Systems.
, 2006.
. Disponible
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-
ble en http://focus.ti.com/lit/ug/swru151a/swru151a.pdf.
[28] Texas Instruments.
, 2009. Disponible en
http://www.ti.com/litv/zip/swru156a.
[29] TIOBE Software.
. Dis-
ponible en http://www.tiobe.com/index.php/content/paperinfo/tpci/index.html.
[30] Jorge Carlos Valverde Rebaza.
, 2007. Disponible en
http://www.seccperu.org/les/ZigBee.pdf.