Você está na página 1de 170

INSTITUTO POLITECNICO NACIONAL

ESCUELA SUPERIOR DE INGENIERIA


MECANICA Y ELECTRICA

“Implementación de un protocolo de
comunicación inalámbrica para el control de
dispositivos en forma remota de una casa
domótica”

REPORTE TÉCNICO
QUE PARA OBTENER EL TITULO DE:
INGENIERO EN COMUNICACIONES Y
ELECTRÓNICA.

P R E S E N T A:

CASTILLO BAUTISTA BRAULIO ANTONIO

ASESORES:

Ing. Armando Martínez Ríos


Ing. Carlos Barroeta Zamudio

MEXICO, D.F. 2009


I
AGRADECIMIENTOS

Quiero agradecer a la vida y a dios por haberme dado lo que he necesitado, por
haberme puesto dentro de una familia maravillosa, me ha dado la satisfacción de
culminar mis estudios y día con día me da grandes alegrías

A mis padres Braulio Castillo Ortíz y Virginia Bautista Márquez a quienes amo,
respeto y admiro y son quienes me han enseñado a esforzarme por alcanzar mis
metas, gracias por haber estado presentes en todo momento, por su apoyo
incondicional y sacrificios sobrehumanos que con nada pago, los amo.

Agradezco a mi hermana Diana Carolina con quien he compartido grandes


momentos de felicidad, quien me ha tendido la mano apoyándome a lo largo de
mis estudios y en este proyecto aún a costa de mucho esfuerzo, mil gracias.

A mi hermanos José Marcos quien cada día me motiva a seguir adelante para
ser de el un buen ejemplo.

A mis abuelos que en paz descansen quienes con su vida llena de nobleza me
heredaron grandes experiencias.

A mis asesores Carlos Barroeta y Armando Martínez quienes me apoyaron en


la realización de este proyecto.

Al Instituto Politécnico nacional por haberme abierto sus puertas para cumplir
con mi formación y darme grandes herramientas para la vida.

II
ÍNDICE TEMÁTICO

ÍNDICE DE FIGURAS VI
APENDICES IX
ÍNDICE DE TABLAS IX
Objetivo general ii
Objetivos específicos ii
Justificación ii
INTRODUCCIÓN 2
ANTECEDENTES 2
ESTRUCTURA DE LA TESIS 3
PLANTEAMIENTO DEL 4
PROBLEMA 4
Campo de aplicación 7
CAPITULO I 8
LA DOMOTICA Y LAS COMUNICACIÓNES 8
1.1 Domótica y casas inteligentes 9
1.1.1 El ahorro de energía 10
1.1.2 Comunicaciones 11
1.1.3 Seguridad 11
1.2 Definición de vivienda inteligente 12
1.3 Sistemas Domóticos 13
1.4 Técnicas de modulación usualmente usadas en dispositivos de comunicación para domótica
15
1.4.1 Modulación BPSK 15
1.4.1.2 Modulador BPSK 16
1.4.1.3 Demodulación BPSK 17
1.4.1.4 Espectro de la señal BPSK 18
1.4.2 Modulación QPSK 20
1.4.2.1 Modulador QPSK 20
1.4.2.2 Demodulador QPSK 23
1.4.3 Modulación OQPSK 27
1.4 Tecnologáias de comunicación utilizadas en domótica 29
1.4.1 Bus europeo de instalación (EIB) 29
1.4.1.1 Características del sistema EIB (Bus europeo de instalación) 29
1.4.1.2 Ventajas del sistema EIB 30
1.4.2 Protocolo X.10 30
1.4.3 Bluetooth 31
1.4.4 ZigBee 32
1.5 Comparativa general 33
CAPITULO II 34
ZIGBEE 34
2.1 Introducción a ZigBee 35
2.2 Arquitectura 35
III
2.2.1 IEEE 802.15.4 36
2.2.1.1 Capas del estándar IEEE 802.15.4 36
2.2.1.1.1 Nivel físico 36
2.2.1.1.1.1 Medidas de canal 38
2.2.1.1.2 Nivel de enlace de datos 41
2.2.1.2 Especificaciones del estándar IEEE 802.15.4 42
2.2.2 Niveles especificados por ZigBee Alliance 44
2.2.2.1 Nivel de red 44
2.2.2.2 Nivel de aplicación 44
2.3 Dispositivos ZigBee 45
2.4 Topologías de redes ZigBee 46
2.4.1 Topología en estrella 46
2.4.2 Topología en árbol 47
2.4.3 Topología en malla 48
2.5 Módulos ZigBee 49
2.5.1 eZ430-RF2480 Development Tool 49
2.5.2 ATMEL Module 51
2.5.3 EasyBee ZigBee 52
2.5.4 XBee Module 53
CAPITULO III 54
DISEÑO DEL SISTEMA DE COMUNICACIÓN 54
3.1 MODLO XBEE 55
3.1.2 Modos de operación 57
3.1.2.1 Modo recibir y transmitir 57
3.1.2.2 Modo de bajo consumo (Sleep Mode) 58
3.1.2.3 Modo de comandos 58
3.1.2.4 Modo transparente 59
3.1.2.5 Modo IDLE 59
3.2 Microcontroladores 59
3.2.1 Familias de microcontroladores 61
3.2.2 PIC 18F452 61
3.3 Pantalla de LCD de 4 x16 64
3.4 Teclado matricial de 4x4 65
3.5 Comunicación mediante C.I. MAX 232 66
3.6 MPLAB C18 67
3.7 Software X-CTU 68
3.8 Componentes del coordinador 69
3.9 Diseño del sistema terminal inalambrico 1 70
3.9.1 Diseño del programa para el primer microcontrolador 71
3.9.1.1 Lectura del teclado 71
3.9.1.2 Menú mostradopor la pantalla de LCD 73
3.10 Diseño del sistema terminal inalámbrico 2 75
3.11 Acoplamiento óptico entre un sistema digital y una etapa de potencia 80
3.12 Puente H (L293B) 81

IV
CAPITULO IV 82
IMPLEMENTACIÓN DEL PROTOTIPO 82
4.1 Propuesta de implementación en una casa 83
4.2 Configuración de los modulos XBee 85
4.2.1 Configuracion con el software X-CTU 86
4.3 Componentes del sistema terminal 1 89
4.3.1 Configuración con el software XCT-U 92
4.4 Componentes del sistema terminal 2 93
4.4.1 Configuración con el software XCT-U 94
4.5 Componentes del acoplamiento óptico entre en sistema digital y la etapa de potencia 96
4.6 Manipulación de motores de C.A. con C.I. L293B 97
4.7 La transmision serial del PIC 18F452 98
4.8 Programación del primer microcontrolador 100
4.8.1 Control de accesos 101
4.8.2 Control de Ventilación 102
4.8.3 Monitoreo de temperatura 104
4.8.4 Control de iluminación 105
4.9 Programación del 2º microcontrolador 106
4.9.1 Monitoreo de temperatura 107
4.9.2 Control de ventilación e iluminacion 108
4.10 Desarrollo de la interfaz grfáfica 109
4.10.1 Descripción de la aplicación 109
4.10.2 Descripción de la interfaz gráfica 110
CAPITULO V 115
PRUEBAS Y RESULTADOS 115
5.1 Prueba del sistema terminal 1 116
5.2 Prueba del sistema terminal 2 121
5.3 Prueba del software 123
5.4 Rango de alcance 127
5.5 Muestra del estado de la ventilación e iluminación 129
CONCLUSIONES 130
ANEXO I: PROGRAMA DEL PRIMER MICROCONTROLADOR 132
ANEXO II: PROGRAMA DEL SEGUNDO MICROCONTROLADOR 139
ANEXO III: MANUALES DEL FABRICANTE 144
ANEXO IV: DISEÑO DE CIRCUITOS IMPRESOS 151
ANEXO V: ESTRUCTURA DE TRAMAS 153
ANEXO VI: COSTOS DEL SISTEMA CONSTRUIDO 157

V
ÍNDICE DE FIGURAS

Fig. A Dispositivos interconectados por medio de una red PAN. 6


Fig. B Distancias entre dispositivos dentro de una habitación respectivamente uno de otro. 7

CAPITULO I
Fig. 1.1 Modulación PSK: en la parte superior se observa la señal binaria de información
mientras que en la parte inferior la señal modulada BPSK. 16
Fig. 1. 2 Esquema de un Modulador BPSK 17
Fig. 1.3 Demodulador BPSK. 17
Fig. 1.4 Tren de pulsos binario. 18
Fig. 1.5 Espectro de Amplitud de una señal periódica de BPSK. 20
Fig. 1.6 Modulador QPSK. 21
Fig. 1.7 Diagrama de fasores para la modulación QPSK. 22
Fig. 1.8 Demodulador QPSK. 23
Fig. 1.9 Alineación de los bits con el retraso introducido en uno de los canales. 27
Fig. 1.10 Modulador OQPSK. 28
Fig. 1.11 Esquema de Conexión con EIB 29

CAPITULO II

Fig. 2.1 Tasa de error de bit contra relación señal a ruido en los estándares IEEE 802.15.4, IEEE
802.11 e IEEE 805.15.1. 38
Fig. 2.2 RSSI en ambientes internos 39
Fig. 2.3 RSSI en ambientes externos (derecha). 39
Fig. 2.4 PER en ambientes internos. 40
Fig. 2.5 PER para ambientes externos. 41
Fig. 2.6 Capas que controlan el estándar IEEE 802.15.4. 42
Fig. 2.7 Canales del estándar IEEE 802.1.4 42
Fig. 2.8 Capas del Protocolo Zigbee. 45
Fig. 2.9 Diagrama Red ZigBee con topología tipo estrella. 46
Fig. 2.10 Diagrama Red ZigBee con topología tipo árbol. 47
Fig. 2. 11 Diagrama. Red ZigBee con topología tipo malla. 48
Fig. 2.12 Transceiver CC2480 49
Fig. 2.13 eZ430-RF2480 Development Tool 50
Fig. 2.14 Modulo ATMEL 52
Fig. 2. 15 Modulo EasyBee ZigBee 52
Fig. 2.16 Modulos XBee de Maxstream 53

CAPITULO III

Fig. 3.1 Modos de operación de los modulos XBee 57


Fig. 3.2 Esquema de un microcontrolador. 60

VI
Fig. 3.3 Esquema de conexión del PIC al LCD 64
Fig. 3.4 Teclado matricial 65
Fig. 3.5 Rebote generado al oprimir una tecla. 66
Fig. 3.6 Circuito integrado Max232 66
Fig. 3.7 Compilador MPLAB C18 67
Fig. 3.8 Software X-CTU, a la izquierda se encuentra la función de prueba de comunicación, a la
izquierda las opciones a configurar. 68
Fig. 3.9 Componentes de la interzaz con la computadora 69
Fig. 3.10 Diagrama a bloques del sistema terminal 1 70
Fig. 3.11 Diagra de flujo para detectar tecla oprimida en el teclado. 71
Fig. 3.12 Diagrama de flujo del menú principal mostrado por la pantalla de LCD 73
Fig. 3.13 Diagrama de flujo de la opción ACCESOS 74
Fig. 3.14 Diagrama de flujo para Entrada 74
Fig. 3.15 Diagramas de flujo para lectura de temperatura y control de la ventilación. 75
Fig. 3.16 Diagrama a bloques del sistema terminal 2. 76
Fig. 3.17 Diagrama de flijo para el encendido y apagado de lamparas. 77
Fig. 3.18 Diagrama de flijo para el encendido y apagado de lamparas. 77
Fig. 3.19 Diagramas de flujo para la recepción de temperatura y test de conectividad. 78
Fig. 3.20 Diagrama de flijo para el encendido y apagado de ventiladores. 79
Fig. 3.21 Diagrama de flijo para el encendido y apagado de lamparas. 79
Fig. 3.22 Configuración De Un Optoacoplador. 80
Fig. 3.23 Figura y simbolo de un TRIAC 81
Fig. 3.24 Diagrama esquemático para LM293B. 81

CAPITULO IV
Fig. 4.1 Plano de la casa propuesta para la implementación. 83
Fig. 4.2 Diseño en 3D de la Casa propuesta para la implementación. 84
Fig. 4.3 Diagrama esquematico para el coordinador y pruebas. 85
Fig. 4.4 Circuito Impreso del coordinador 86
Fig. 4.5 Captura en pantalla de la ventana principal del software XCT-U 86
Fig. 4.6 A la izquierda se muestra la caprura en pantlla de una comunicación exitosa, a la
derecha se muestra el resultado de una comunicación fallida. 87
Fig. 4.7 Configuracion del modulo central. 88
Fig. 4.8 Elementos configurados dentro de los modulos XBee 89
Fig. 4.9 Diagrama esquematico del nodo terminal 90
Fig. 4.10 Circuito Impreso del nodo terminal. 91
Fig. 4.11 Circuiti impreso del nodo terminal con todos sus componentes. 91
Fig. 4.12 Configuracion del modulo XBee del nodo terminal 1. 92
Fig. 4.13 Diagrama Esquematico del nodo terminal 2. 93
Fig. 4.14 Circuito impreso del nodo terminal 2. 94
Fig. 4.15 Configuracion del modulo XBee para el nodo terminal 2. 95
Fig. 4.16 Montaje Estándar Básico Con Lógica Digital Positiva. 96
Fig. 4.17 Circuito utilizado para la manipulación de elementos de C.A. 96
Fig. 4.18 Diagrama de conexión para el giro en un solo sentido del L293B 97

VII
Fig. 4.19 Conexión al microcontrolador del L293B 97
Fig. 4.20 Se muestra la inicialización del modo de transmision serial. 98
Fig. 4.21 Captura en pantalla del codigo fuente y la declaración de las cadenas para el
despliegue del menu principal 100
Fig. 4.22 Sentencia Switch para la apertura y cierre de la entrada principal. 101
Fig. 4.23 Sentencia Switch para el encendido y apagado de la ventilación. 103
Fig. 4.24 Rutina de adrquisicion de datos de temperatura. 104
Fig. 4.25 Control de iluminación 105
Fig. 4.26 Cadenas mostradas en el menú del nodo terminal 2. 106
Fig. 4.27 Monitoreo de temperatura en el nodo terminal 2. 107
Fig. 4.28 Envio de datos para control de ventilación. 108
Fig. 4.29 Captura en pantalla de la interfaz gráfica 110
Fig. 4.30 Ventana para control de Iluminación 112
Fig. 4.31 Ventana para monitoreo de temperatura. 112
Fig. 4.32 Test de conectividad con los nodos terminales 113
Fig. 4.33 Ventana para el control de ventilación. 114

CAPITULO V

Fig. 5.1 Circuitos impresos de ambos nodos terminales con los dispositivos montados 116
Fig. 5.2 Menu principal del nodo terminal 1 117
Fig. 5.3 Contraseña para ingresar a alguno de los puntos de acceso. 117
Fig. 5.4 Submenú para la opcion “ACCESOS”. 118
Fig. 5.5 Seleccionar la apertura de algún acceso. 118
Fig. 5. 6 Seleccionar el cierre de algun acceso. 119
Fig. 5.7 Monitoreo de temperatura ambiental. 120
Fig. 5.8 Activar o desactivar la iluminación en un espacio. 120
Fig. 5.9 Nodo terminal 2 con todos sus elementos. 121
Fig. 5.10 Primer pantalla presentada por el nodo terminal 2. 122
Fig. 5.11 Pantalla presentada cuando es seleccionada la segunda opción del menú. 122
Fig. 5.12 Cierre de un acceso. 123
Fig. 5.13 Muestra del plano con la ubicación marcada en el lugar del cierre de la entrada
principal. 124
Fig. 5. 14 La imagen muestra el estado de la entada principal y una ventana de alerta también
indica la acción tomada. 124
Fig. 5.15 Muestra del plano en el cual se encuentra el acceso principal. 125
Fig. 5.16 Monitoreo de la temperatura por medio del software. 125
Fig. 5.17 Prueba de conectividad. 126
Fig. 5.18 Datos recibidos en las pruebas mediante el monitoreo de temperatura. 127
Fig. 5.19 Datos recibidos con algunos errores. 128
Fig. 5. 20 Tablilla con bombillas de C.A. y ventiladores de C.D. 129

VIII
APENDICES

Figura A Circuito impreso del sistema terminal 1 151


Figura B Circuito impreso del sistema terminal 2 151
Figura C Circuito impreso del nodo central 152
Figura D Estructura del paquete de la capa fisica IEEE 802.15.4 153
Figura E Estructura de la trama MAC 154
Figura F Formato de Trama de Datos 155
Figura G Formato de la Trama de Acuse de Recibo 156
Figura H Formato de Trama de Comando MAC 156

ÍNDICE DE TABLAS

CAPITULO I

Tabla 1.1 Comparativa general de diferentes tecnologías inalámbricas. 33

CAPITULO II
Tabla 2.1 Frecuencia de trabajo ZigBee 43

CAPITILO III
Tabla 3.1 Comparativa entre los dispositivos ZigBee en el mercado 56
Tabla 3.2 Familia de microcontroladores en el mercado 61
Tabla 3.3 Características del PIC18F45 63
Tabla 3.4 Pines de la LCD 64
Tabla 3.5 Asignación de código para filas del teclado 72
Tabla 3.6 Valores asignados a cada tecla y su equivalencia en ASCII 72

CAPITULO IV
Tabla 4.1 Caracteres utilizados para la inicialización de la transmisión de datos del modo serial
99
Tabla 4.2 Valores hexadecimales enviados para los accesos. 102
Tabla 4.3 Valores hexadecimales enviados para la ventilación. 102
Tabla 4.4 Valores correspondiestes al control de iluminación 106
Tabla 4.5 Descripción de los elementos de la interfaz gráfica. 111

IX
Objetivo general

Determinar los elementos necesarios para la implementación de un sistema de


comunicación inalámbrica para el control y monitoreo de sensores o actuadores en una
casa domótica.

Objetivos específicos

 Investigar un sistema de comunicación inalámbrico que cuente con las


características necesarias para la optimización al máximo de la energía

 Seleccionar el protocolo de comunicación inalámbrico que mejor se adapte a las


características de una vivienda media.

 Implementar el sistema de comunicación utilizando dispositivos capaces de


cubrir un área mínima y máxima respecto a los inmuebles donde estos puedan
ser implementados.

 Crear una interfaz grafica capaz de interactuar con el usuario con el mínimo de
esfuerzo.

Justificación

La evolución de los sistemas de comunicación como en general de la electrónica se


ha hecho a pasos gigantes, motivo por el cual su uso se extiende a muchos sectores
para los cuales se han desarrollado protocolos capaces de satisfacer las necesidades
particulares de éstos.

En el campo de la domótica no es la excepción aunque el campo de ésta es muy


amplio, abarcando desde edificios inteligentes hasta casas habitación, es en este
último rubro donde el avance ha sido un tanto lento ya que se había encontrado
abandonado por las grandes empresas dedicadas al sector. En estos últimos años se
han desencadenado una serie de avances para este sector olvidado, desarrollándose
diferentes aplicaciones que involucran el uso de tecnologías móviles.
ii
Una de las principales necesidades que muchas personas buscan es el confort, la
seguridad, el ahorro de energía y el control de todo su entorno, para esto se requiere
evidentemente de toda una infraestructura de automatización y con ello un sistema que
permita controlar toda esta tecnología con el menor esfuerzo, es decir que la forma de
manejar todo no le represente una pérdida de tiempo.

Existen en el mercado actual tecnologías móviles que se prestan para su uso en


domótica debido a sus características propias, una de estas tecnologías recibe el
nombre de “ZigBee”, la cual se enfoca para aquellas aplicaciones que no requieren una
alta tasa de transferencia, como lo es un sistema de comunicaciones capaz de
transmitir señales de control para monitoreo de sensores y control de dispositivos.

El implementar un sistema domótico en una casa de tipo medio podría representar


un gasto económico considerable, por lo que es de gran ganancia trabajar con
tecnologías que sean de un costo bajo a lo mas que se pueda. ZigBee es una
tecnología que ofrece esta posibilidad, ya que los dispositivos que se encuentran
actualmente en el mercado tienen costos reducidos.

Sin duda una de las principales razones por la que se ha decidido hacer uso de
ZigBee es el tamaño que sus dispositivos poseen y su ultra bajo consumo de energía,
cabe destacar que el tamaño de los dispositivos en este sector es muy importante,
esto debido a que la estética en esta área es siempre importante, por lo que los
dispositivos de tamaño reducido ayudan mucho en la preservación de este aspecto.

iii
INTRODUCCIÓN

1
INTRODUCCIÓN

Pensado en un ámbito de tecnología en el hogar, se pretende hacer uso de


las nuevas tecnologías con el fin de mejorar la calidad de vida mediante la comodidad
que la tecnología ofrece. Para ello, se debe plantear desde un principio los
objetivos que se pretenden alcanzar y los beneficios que con ellos queremos
obtener.

Los sistemas de comunicación en el hogar son una herramienta que brinda


confiabilidad a los usuarios ya que además se encargan de la seguridad. Los
sistemas de seguridad también evolucionan cada día y su sistema de
comunicación alambico ha sido paulatinamente sustituido por sistemas
inalámbricos.

Respecto a la automatización, esta comienza en la industria aeronáutica y la


automotriz, donde comenzaron a utilizar diversas automatizaciones con cierto grado
de integración. Después siguieron los edificios comerciales y administrativos para
finalmente ser las construcciones educacionales y viviendas los sitios en donde se
pretendido introducir procesos cada vez más inclinados hacia la tecnología.

ANTECEDENTES

En nuestros días es esencial utilizar la tecnología para cubrir todas nuestras


necesidades. En ingeniería se debe usar esa tecnología en beneficio de la humanidad
para poderle brindar comodidad y así hacerle la vida más fácil, utilizando a
nuestro entorno y modificarlo para cumplir con el objetivo, sin dañar al medio ambiente
o tratar de hacerle el menor daño posible. Los primeros intentos de crear un conjunto de
normas y protocolos sobre Domótica se remonta a principio de los ochentas donde se
desarrollaron diversos proyectos, en el año de 1984 es lanzado el proyecto “Smart
House” por la NAHB: National Association of Home Builders), el sistema antes
mencionado se basa en la utilización de un cable unificado que sustituye a todos los
diversos sistemas pueden existir en una vivienda como pueden ser electricidad,
periféricos de audio y video, teléfono, alarmas etc. para lo cual posteriormente se
2
crearon tecnologías de comunicación tanto cableadas como inalámbricas con el
fin de facilitar la interacción de dispositivos dentro de una vivienda.

Una de las desventajas de las tecnologías mencionadas era su alto costo que no
era justificado, pues siempre se ha considerado como un lujo, es por eso que las
tecnologías de comunicaciones con un enfoque dirigido a aplicaciones como la que se
pretende en este trabajo no habían sido tan populares. En este trabajo se pretende
hacer uso de una tecnología diferente que no necesite ser alambrada, esto con la
principal meta de crear una aplicación más estética, eficiente y sobretodo económico.

ESTRUCTURA DE LA TESIS

La estructura de este trabajo de tesis contempla el siguiente temario:


Capítulo 1: Se hace énfasis de la teoría sobre la domótica y se da a conocer
teóricamente elementos que forman parte de ella, asimismo se mencionan diversas
tecnologías en comunicaciones que han sido utilizadas para la domótica,

Capitulo 2: En este capítulo se describe la forma en que trabaja la tecnología ZigBee


así como sus características y funciones.

Capítulo 3: Aquí se expone el diseño del proyecto así como los diversos componentes
que intervienen en él, desde como inicio el plan y así mismo todos los pasos que se
siguieron hasta lograr los objetivos.

Capítulo 4: Se mencionan todos los pasos para llevar a cabo el diseño planteado en el
capítulo anterior y se especifica la manera en la que se ha realizado tanto el hardware
como el software.

Capítulo 5: Se muestran los resultados finales obtenidos del proyecto.

3
PLANTEAMIENTO
DEL
PROBLEMA

4
Hoy en día la problemática de comunicaciones en el sector de la domótica se ha
vuelto muy diversa debido a que el principal problema es el costo que genera la
implementación de la tecnología necesaria para la implantación del sistema de
comunicación que controle o monitoree cada una de las actividades del hogar, en gran
medida el costo es generado por la necesidad de instaurar protocolos que ofrezcan
seguridad y por la cantidad de energía que estos consumen, en base a esto se hace
presente encontrar una tecnología y un protocolo capaces de tener un ultra bajo
consumo de energía y de esta manera reducir los costos que esto genera. Una vez
identificado el protocolo a trabajar será necesario aplicarlo a las necesidades que
requiera una casa o edificio en cuanto a la transmisión de datos de control o de
monitoreo de sensores.

La aplicación a desarrollar mediante el protocolo seleccionado deberá ser de


utilidad para el sector domótica y deberá optimizar cada una de las tareas para los
cuales se requiera el sistema de comunicación. A menudo los datos transmitidos
necesitan ser observadas y analizadas por el ser humano, tales como temperatura,
humedad, presencia en una habitación determinada , sobre todo cuando se trata de un
sistema enfocado a seguridad, es por esto que se hace presente la necesidad de
obtener una interfaz grafica que permita llevar a cabo la observación del estado de cada
uno de los sensores monitoreados así como una simulación que permita emular las
diferentes situaciones que podrían hacerse presentes dentro de un hogar o edificio.

Primeramente es necesario definir el tipo de protocolo que se necesita utilizar para


las aplicaciones de comunicación entre los diferentes dispositivos que la domótica
requiere, para lo cual es necesario analizar cuál es el más viable de acuerdo a los
costos y consumo de energía principalmente. La problemática a nivel de aplicación
surge con la necesidad de intercomunicar los diferentes dispositivos de un hogar ya sea
directamente o a manera de sensores según sea el caso, por lo cual se necesita crear
una red que pueda transportar todos los datos de todos los sensores y dispositivos que
existan dentro de una casa o edificio, la figura 1 muestra una posible red instaurada
entre dispositivos existentes en una sala, el objetivo de intercomunicarlos es con el fin

5
de saber fácilmente cuando alguno tiene alguna falla además de poder tener diversos
caminos por los cuales la información pueda viajar.

Fig. A Dispositivos interconectados por medio de una red PAN.

Debido a la gran diversidad que existe en cuanto al tamaño de la habitación a


intercomunicar y así mismo la distancia entre las diferentes habitaciones, surge la
necesidad de verificar si la tecnología a usar soporta satisfactoriamente la distancia de
separación entre ellas, además de esto debe ser muy económico y no decrementar su
potencia de manera considerable para poder realizar el envío y recepción de datos.

La distancia de separación entre cada uno de los dispositivos que se utilicen debe
cubrir al menos 30 metros en interiores para garantizar el envío y recepción de los
datos, para lo cual se ha establecido que una habitación promedio nunca excede de un
volumen máximo de 25 metros cuadrados, es por esto que se pretende encontrar una
tecnología que cumpla con las expectativas.

La distancia requerida entre dispositivos de una habitación a otra es muy corta


debido a que generalmente no tienen más de 5 metros de largo, Por lo tano la
tecnología seleccionada deberá cubrir al menos el largo de 6 habitaciones que pudiera
tener una casa .

6
Fig. B Distancias entre dispositivos dentro de una habitación respectivamente uno de otro.

Campo de aplicación

El campo de aplicación comprende las instalaciones de aquellos sistemas que


realizan una función de automatización para diversos fines, como gestión de la energía,
control y accionamiento de receptores de forma centralizada o remota, sistemas de
emergencia y seguridad en edificios, entre otros, con excepción de aquellos sistemas
independientes e instalados como tales, que puedan ser considerados en su conjunto
como aparatos, por ejemplo, los sistemas automáticos de elevación de puertas,
persianas, toldos, cierres comerciales, sistemas de regulación de climatización, redes
privadas independientes para transmisión de datos exclusivamente y otros aparatos.

No obstante, a las instalaciones excluidas anteriormente, cuando formen parte de


un sistema más complejo de automatización, gestión de la energía o seguridad de
viviendas o edificios, se les aplicarán los requisitos de la presente Instrucción además
los requisitos específicos reglamentarios correspondientes.

7
CAPITULO I

LA DOMOTICA Y LAS
COMUNICACIÓNES

8
1.1 Domótica y casas inteligentes

Una de las principales necesidades del ser humano es la vivienda, debido a esto
todo el tiempo hay una constante búsqueda de un hogar que asegure la comodidad, el
confort y seguridad y así lograr la optimización de las tareas de la casa ha sido siempre
una de las búsquedas del hombre. Este conjunto de necesidades han llevado al ser
humano a una constante búsqueda tecnológica que cubra cada una de estas
exigencias y es así como se ha llevado a la invención de múltiples aparatos eléctricos y
electrónicos para el hogar.

Todos los aparatos que forman parte de nuestra vida cotidiana en algunos casos
son demasiados y debido al ritmo de vida actual las personas deben llevar una vida
más organizada para poder solventar todas sus ocupaciones y ahorrar lo más posible
tiempos. En la antigüedad las personas dedicaban tiempo a tareas que hoy en día no
toman tiempo y pueden efectuarse en tan solo unos minutos, esto da como resultado
final tiempo libre para realizas otro tipo de acciones, y esto continuamente se
transforma en un ciclo en el cual el ser humano busca obtener más tiempo.

Es evidente la evolución de la sociedad a las nuevas tendencias que marcan una


necesidad imponente de una gama de soluciones a problemas relacionados con
actividades simples pero que las personas consideran por su misma simplicidad que
estas ocupen lo menos posible de su tiempo.

La tecnología ha jugado un papel muy importante para la solución de gran parte de


los problemas mencionados, pues ha sido ella quien ha provisto de diversas soluciones
y alternativas que han permitido a lo largo de los años la mejora de múltiples tareas. A
partir de la su evolución, se han ido modificando muchas formas de realizar procesos
en todos los ámbitos ya sea en la industria o en el hogar, y en el caso de la industria
esta posee un centro de atención muy grande por parte de del sector de la
automatización, no así con el hogar, ya que pocos años son los que han transcurrido
desde las primeras innovaciones en este sector, y menos tiempo aún desde que el

9
sector de las comunicaciones ha enfocado aplicaciones enfocados para su uso
domestico.
Dentro de toda esta nueva gama de tecnologías enfocadas al uso domestico
surge un nuevo concepto denominado “casa inteligente” el cual engloba en concreto
cuatro grandes áreas: la electrónica, la informática, la arquitectura y las
telecomunicaciones. Un concepto que está íntimamente relacionado con la tecnología
enfocada al hogar, es conocido como “Domótica”, cuya etimología nos dice el
significado concreto de esta palabra, por un lado “domus” que significa casa, por otro
lado se hace una relación entre este término y la palabra “informática”, esto significa
que el termino. Domótica” hace referencia a todo un conjunto de tecnologías
informáticas y de comunicaciones que permiten automatizar y gestionar diferentes
aplicaciones dentro de una instalación de tipo domestico con el fin de proporcionar una
mejor calidad de vida a las personas.

La domótica surge primeramente con la iniciativa de lograr realizar tareas


concretamente de automatización con el objetivo de reducir el trabajo humano y facilitar
la realización de distintas tareas, sin embargo estas tareas en principio solo habían
representado más gastos a quienes implementaban estas nuevas soluciones, y es en
parte por esta razón que el desarrollo de aplicaciones a la domótica se ha realizado de
una manera lenta, en la actualidad han surgido aplicaciones que buscan además de lo
anterior, lograr realizar acciones que permitan justificar o retribuir de alguna manera el
gasto generado de la instalación de todos los artefactos utilizados en la aplicación de
nuevos procesos. Los campos que la domótica cubre actualmente son: ahorro de
energía, comunicaciones, seguridad.

1.1.1 El ahorro de energía

Hoy en día son muchos los dispositivos que se utilizan en el hogar que consumen
grandes recursos energéticos por lo que este factor se suma a uno de los principales
objetivos de la domótica, se trata de la generación de dispositivos capaces de de
controlar ciertos procesos sin desperdiciar energía, tal es el caso de el control de la
climatización, la regulación de la iluminación de acuerdo a la zona, la iluminación por

10
detección de presencia, la desconexión automática de dispositivos cuando estos no se
usan, todo esto aunado con la construcción de dispositivos con un bajo consumo de
energía constituyen una parte de las características que se pretenden actualmente en
el sector domótica, todo esto con la meta de ahorrar gastos generados a causa del
consumo energético y que puede resultar a mediano y largo plazo un ahorro muy
significativo .

1.1.2 Comunicaciones

En este sector la domótica juega un papel de tipo estratégico ya que sirve como un
vinculo con aplicaciones que posiblemente generen gastos en recursos humanos o en
tiempo, tal es el caso del mano a distancia de diversos servicios como alarmas, control
de acceso, activación de válvulas hidráulicas, etc., algunas de las actividades que se
requieren realizar implican gastos significativos respecto al tiempo en que estas se
ejecutan. Dicho problema se resuelve con un buen sistema de comunicación enfocado
a estas necesidades.
En domótica, todos los servicios tienen que estar comunicados entre sí, basado en
redes de comunicación esto con el fin de asegurar premisas tales como seguridad,
confort y comunicación en la vivienda. Un sistema que es destinado a ser utilizado por
la Domótica, tienen sus bases de funcionamiento en tres objetivos particulares: ahorro
de energía, confort y seguridad.

1.1.3 Seguridad

En materia de seguridad, la domótica ha sido de mucha utilidad, esto debido a que


todo el conjunto de sistemas y dispositivos se configuran siempre siguiendo este
objetivo por lo que la seguridad de los habitantes está siempre presente. Estos
sistemas permiten que el proceso de seguridad sea un trabajo conjunto entre las
actividades de seguridad llevadas a cabo por el habitante y los procesos de seguridad
del sistema inteligente; generando de esta manera en la persona que habita en la casa
inteligente una sensación de seguridad y tranquilidad, lo cual se traduce en confort. La
seguridad es un rubro que necesita ser distribuido muchas veces en diferentes áreas,

11
las principales son aquellas que requieren de cuidados especiales ya que por su
naturaleza podrían resultar peligrosas si son mal manipuladas, o bien la seguridad pone
especial atención a el monitoreo de sensores cuya actividad denota peligro de cualquier
índole. La seguridad en Domótica debe contar entre otros: alarmas de gas, alarmas de
humo, alarmas de fuego, sensores de movimiento, alarmas policíacas y alarmas de
tipo médicas.

1.2 Definición de vivienda inteligente

Este concepto engloba todas aquellas acciones que se realizan comúnmente en el


hogar tales como encender las luces, la climatización, el audio, la TV, sistemas de
riego, sistemas de seguridad domestica, entre otras muchas tareas. El tema principal
de las viviendas inteligentes es la automatización y control de todos estos servicios de
manera inalámbrica. Sin embargo en general todo esto gira en torno a una sola tarea
general que es: la realización con bajo esfuerzo humano, es decir, se trata de hacer por
medio de las diferentes tecnologías el trabajo que el ser humano podría hacer.

Un proyecto de casa inteligente puede ser similar a una actividad como la


decoración de la misma, uno mismo puede comenzar desde lo más básico y
posteriormente agregar más adaptaciones de acuerdo con las necesidades que se
tengan o vayan surgiendo así mismo de acuerdo al presupuesto que se tenga.

Las principales ventajas en general de una vivienda inteligente son:

 Confort: Al permitir al usuario tener el control de dispositivos del hogar de


manera remota o el programar todas las actividades para que estas se realicen
de manera automática, es un beneficio que permitirá realizar tareas de manera
fácil y sobre todo el tiempo podrá ser aprovechado para realizar otras tareas.

 Ahorro de energía: Sin duda este aspecto es primordial en base a que está
directamente relacionado con el costo. Si un dispositivo consume demasiada
energía implicara un costo elevado ya que la energía es uno de los recursos en

12
los cuales se busca siempre ahorrar para que de manera consecuente el gasto
en dinero disminuya. Además de lo anterior mediante este beneficio es posible
que a mediano o largo plazo sea más rentable hacer uso de un sistema
domótico.

 Economía: Un sistema de este tipo puede implementarse de manera gradual, y


es por esto que puede adaptarse a las necesidades especificas que se tengan,
por lo que de este modo se evita tener recursos innecesarios que implican un
gasto mayor, además del ahorro de energía que nos permite obtener constantes
ahorros en cuanto a recursos económicos.

 Seguridad: Uno de los aspectos primordiales que se buscan en todos los


hogares y por supuesto edificios ya que permiten tener el control total de la
vivienda de manera remota haciendo más fácil la manipulación de un sistema de
seguridad, y sobre todo ahorra tiempos al permitir una inspección de todo el
lugar sin tener que ir hasta el físicamente.

1.3 Sistemas Domóticos

Los sistemas domóticos poseen una serie de características que los hace diferentes
de otros tipos de sistemas informáticos. En un sistema domótico, la interacción con el
entorno físico del sistema, es un factor muy importante. En el desarrollo de estos
sistemas es necesario establecer mecanismos, para que éste pueda extraer
información del entorno y realizar acciones sobre él. Debido a esto, en el sistema
domótico existirán dispositivos que no serán computadoras lo cual no es habitual en
otros tipos de sistemas informáticos, como pueden ser las aplicaciones de gestión o los
sistemas puramente informáticos.

Por otra parte, hay que destacar que un aspecto importante de los sistemas
domóticos, es la integración de los distintos tipos de servicios que debe ofrecer:
automatización, seguridad, comunicaciones, multimedia, etc. Para ello se valdrá tanto
de elementos hardware, como elementos software. Por todo esto, es necesario un
lenguaje de modelado específico, que tenga en cuenta estas características. A grandes

13
rasgos un recinto con entorno inteligente posee dos sistemas principales, los cuales
deben de trabajar de manera conjunta: El sistema de administración de toda la casa y el
sistema para la administración de habitaciones.

A) Sistemas de administración de toda la casa: Contempla los sistemas de


gestión y control propios de la casa y de las prestaciones indirectas que la mismo
facilita a los usuarios, entre ellas:

 Control ambiental: alumbrado.


 Control energético.
 Seguridad: Circuito Cerrado de Televisión, alarmas de incendio e intrusos.
 Control de acceso: personas o visitantes.
 Sistema de altavoces-sonido.
 Control de sensores.
 Control de motores.

B) Sistema para la administración de habitaciones: En este caso se incluyen los


elementos necesarios para una adecuada automatización del ambiente
individual, ya sea por prestación directa al usuario o bien teniendo una
instalación lo suficientemente flexible y amplia, para que el usuario pueda instalar
sus propios equipos con posibilidades de interconexión, entre ellas:

 Control de alarmas: Permite gestionar las operaciones relacionadas por las


distintas clases de indicadores.

 Vigilancia de intrusos: Se trata de identificar la presencia de personas en


recintos no autorizados y avisar en el momento en que se detecte.

 Vigilancia mediante cámaras: permite al usuario ver determinados puntos del


recinto de forma local o remota, mediante cámaras distribuidas
estratégicamente. Esto permitirá al usuario vigilar la presencia de extraños,

14
trabajadores, etc., incluyendo la grabación de las imágenes que tome la
cámara. Esta activación podrá realizarse de manera manual en el momento
que el cliente lo crea conveniente, mediante señales de alarmas, o podrá
programarse para que se lleve a cabo en lapsos de tiempo determinados por
el usuario.

Un punto considerado relevante e innerente a los sistemas anteriores, es lo


referente a las soluciones de automatización, entre las principales podemos citar las
siguientes:

 Actuacion remota sobre dispositivos: encendido de boma de agua,


desactivacion selectiva de cargas, sistemas de riego, iluminacion, persinas,
etc
 Alarmas por eventos: deteccion y envio de mensajes por alarmas.
 Programacion de automecanismos: inicio programado de riego, control
automatico temporizado de persianas, etc. [1]

1.4 Técnicas de modulación usualmente usadas en dispositivos de comunicación


para domótica

Dentro del ambiente de comunicaciones en el ambiente domótico se requiere enviar


datos entre transmisor y receptor, dichos datos son manejados de forma digital para su
fácil procesamiento mediante computadoras, microcontroladores o microprocesadores,
debido a lo anterior se hace uso de técnicas de modulación digital. En los siguientes
puntos se explicara la forma en que trabajan las técnicas de modulación PSK (BPSK,
QPSK y OQPSK), las cuales son utilizadas en dispositivos de transmisión inalámbrica
con aplicaciones en domótica incluyendo la tecnología presentada en este trabajo.

1.4.1 Modulación BPSK

Es una técnica de modulación digital que permite que la información se module de


acuerdo a la fase, lo que significa que dependiendo de los valores de la entrada digital,

15
la señal analógica modulada va a tener una u otra fase de salida. Para ejemplificar esta
forma de modulación se considera que la señal de información a transmitir es una
señal binaria con niveles de tensión de +1v. Asimismo la señal portadora:

Fig. 1.1 Modulación PSK: en la parte superior se observa la señal binaria de información mientras que
en la parte inferior la señal modulada BPSK.

La función para la señal que es modulada mediante la técnica BPSK se defino como:

Cuando la entrada al modulador corresponde a un 0 lógico, la fase absoluta de


salida para la señal BPSK es 180º. Si la entrada es un 1 lógico entonces la fase de
salida va a ser 0º, como se muestra en la figura.

1.4.1.2 Modulador BPSK

El modulador BPSK consta de un circuito que integra un modulador balanceado


quien se encarga de multiplicar analógicamente las señales de entrada, asimismo

16
consta de un filtro pasa banda que elimina los armónicos que no son significativos para
la señal BPSK, lo anterior con la finalidad de no interferir con otro tipo de señales que
puedan transmitirse por el mismo canal.

Señal
binaria
Modulador Filtro paso
Balanceado banda

Fig. 1. 2 Esquema de un Modulador BPSK

1.4.1.3 Demodulación BPSK

En la figura siguiente se muestra un demodulador BPSK de detección síncrona. El


recuperador de la señal portadora es un circuito que se encarga de obtener la señal
BPSK recibida.

g1(t) g2(t)
Modulador Filtro pasa
balanceado bajas.

Recuperador de
la Portadora.

Fig. 1.3 Demodulador BPSK.

La demodulación de una señal BPSK se puede representar de la siguiente forma:

Las dos posibles entradas analógicas para este demodulador son:

Para el proceso para obtener la señal digital original es:

17
(1.1)

(1.2)

Para el proceso para obtener la señal digital original es:

(1.3)

(1.4)

1.4.1.4 Espectro de la señal BPSK

Para ejemplificar el espectro de una señal BPSK se tomara para análisis que la
señal digita es una señal periódica por lo que tiene una anchura de bit constante Tb=T/2
y niveles de tensión +A. Esto con el fin de ejemplificar una señal donde nunca se
mantenga contante la información.

Fig. 1.4 Tren de pulsos binario.

La función y transformada de Fourier de este tren de pulsos es el siguiente:

– (1.5)

18
(1.6)

La función de la señal modulada BPSK es:

(1.7)

Por lo tanto la transformada de Fourier es la siguiente:

(1.8)

Aplicando la propiedad de translación en la frecuencia a la ecuación anterior tenemos:

− − ( + ) (1.9)

Dado que Tb=T/2 , y sustituyendo lo anterior se tiene:

19
− − ( + ) (1.10)
De esta forma el espectro de una señal BPSK se representa como se muestra en la
figura:

Fig. 1.5 Espectro de Amplitud de una señal periódica de BPSK.

1.4.2 Modulación QPSK

Quaternary Phase Shift Seying, como se deduce su nombre, es un tipo de modulación


MPSK en la que M=4 , esto significa que la señal portadora de frecuencia puede
tener 4 fases de salida diferentes, esto trae como consecuencia k=2 , entonces
en el esquema de modulación QPSK , los datos de entrada binarios están compuestos
por grupos de 2 bits que reciben el nombre de dibits y que producen 4 posibles
combinaciones: 00,01,10 y 11.

1.4.2.1 Modulador QPSK

El siguiente circuito muestra un modulador QPSK que utiliza una señal portadora
, y en el que entra una señal digital f(t) secuencial con niveles de tensión v.

20
CANAL I Modulador
Balanceado

Convertidor
Serie/Paralelo
Oscilador
Sumador Filtro pasa
Q Generador
I Lineal Banda
de portadora
( )

Desplazador
de fase de 90º

Modulador
Balanceado
CANAL Q

Fig. 1.6 Modulador QPSK.

En un modulador QPSK se distinguen dos canales, CANAL I y CANAL Q, cada uno


de ellos conducirá uno de los bits desde el convertidor serie-paralelo a du modulador
balanceado correspondiente, cabe destacar que un modulador balanceado opera igual
que un multiplicador analógico. El bit I, cuyo nivel de tensión puede ser de +1 o -1 v, es
multiplicado por la señal portadora desplazada en fase 90º, es decir . A la salida
de los dos moduladores balanceados se tiene una suma lineal para obtener así la señal
QPSK.

El filtro pasa banda que es colocado a la salida del modulador QPSK lo que hace es
eliminar los armónicos que no son significativos de la señal modulada para no interferir
con otras señales que pudieran transmitirse por el mismo canal.

21
Los valores que puede tomar la señal de salida son:

Entrada binaria Fase de salida de la


Q I señal QPSK
0 0 -135º

0 1 -45º

1 0 +135º

1 1 +45º

Su diagrama de fasores se muestra a continuación:

Q Q
I I
1 0 1 1
90º

Q Q
I I
0 0 0
1

Fig. 1.7 Diagrama de fasores para la modulación QPSK.

En la modulación QPSK, como se puede observar en la figura, la separación angular


entre fases de salida adyacentes es de 90º. Además para este modulador, cada dibit
difiere del adyacente en un solo bit. Este sistema de codificación recibe el nombre de
Código Gray.

22
1.4.2.2 Demodulador QPSK

En la figura 1.8 se muestra el demodulador QPSK. El separador de potencia triplica


la señal recibida sin que este procedimiento tenga como consecuencia la
perdida de potencia, conduciéndola por el calan I y el canal Q hasta los multiplicadores
analógicos. En el circuito recuperador de portadora se obtiene la portadora a
partir de la señal de QPSK. Las salidas de los multiplicadores analógicos se hacen
pasar por dos filtros de paso de bajas que tienen que tener una frecuencia de corte
menor que .

Filtro pasa
bajos.
CANAL I

Convertidor
Separador Recuperador de la Serie/Paralelo
de Potencia. portadora .
Q I

Desplazador de
fase de 90º.

Filtro pasa
bajos.
CANAL Q

Fig. 1.8 Demodulador QPSK.

De forma matemática el proceso para la demodulación QPSK para los posibles dibits
que se pueden transmitir es el siguiente:

QI=00 para este dibit la señal analógica es la siguiente:


. (1.11)

23
Si analizamos por el canal Q se obtiene:

(1.12)

Para el canal I:

(1.13)

QI=01 para este dibit la señal analógica es la siguiente:

(1.14)

Si analizamos por el canal Q se obtiene:

(1.15)

24
Para el canal I:

(1.16)

QI=10 para este dibit la señal analógica es la siguiente:

. (1.17)

Primeramente se analiza para el canal Q:

(1.18)

Para el canal I:

(1.19)

25
QI=11 para este dibit la señal analógica es la siguiente:

. (1.20)

Primeramente se analiza para el canal Q:

(1.21)

Para el canal I:

(1.22)

26
1.4.3 Modulación OQPSK

La modulación OQPSK es similar a la modulación QPSK de pulsos rectangulares,


en la que se ha limitado la máxima variación de fase instantánea. Así como en la
modulación QPSK se llegan a producir saltos de rad. entre dos símbolos
consecutivos, en la modulación OQPSK dichos saltos de fase instantánea se reducen a
la mitad rad, de este modo se evita que la componente en fase y la componente
en cuadratura cambien simultáneamente su signo.

La limitación del máximo salto de fase instantáneo es útil cuando la señal se


amplifica mediante amplificadores de alta potencia. Para evitar que ambas
componentes cambien de signo simultáneamente en el transmisor, la componente en
cuadratura se retarda temporalmente un tiempo equivalente a medio periodo de
símbolo T/2 y posteriormente en recepción con un filtro pasa bajo, se retarda la
componente en fase temporalmente un tiempo equivalente a medio periodo de símbolo
T/2, de este modo, quedan de nuevo las dos componentes sincronizadas.

Se puede definir como un caso particular de la modulación QPSK en donde uno de


los bits ya se ale canal Q o el canal I se retrasa medio periodo de bit (Tb/2) respecto al
bit del otro canal. En la figura se muestra un ejemplo en el que el bit de información del
canal I es retrasado un tiempo Tb/2 respecto al bit del canal Q.

Fig.1. 9 Alineación de los bits con el retraso introducido en uno de los canales.

27
De acuerdo a la diferencia que se presenta en la figura anterior se modifica también
la forma en la que trabaja un modulador OQPSK respecto del QPSK convencional. Para
este caso se presenta un latch de retraso en uno de los dos canales:

Fig. 1.10 Modulador OQPSK.

Con OQPSK se consigue que no se produzca el cambo en más de 1 bit


simultáneamente en el código del dibit, es decir que nunca se dará la transición de 00 a
11 o de 01 a 10. Esto traerá como consecuencia que no se produzca un
desplazamiento mayor a 90º en la fase de la señal analógica de salida OQPSK, esto
significa que se asegura que la fase nunca pase de -135º a +45º o de -45º a +135º. La
ventaja principal de este tipo de modulación es el mínimo desplazamiento que la fase
realiza en el proceso de modulación.

28
1.4 Tecnologáias de comunicación utilizadas en domótica

1.4.1 Bus europeo de instalación (EIB)

Las instalaciones eléctricas con este protocolo son casi como las instalaciones
tradicionales, sólo que el usuario utiliza unos interruptores para encender y apagar las
luces de su hogar. A los métodos con este esquema de conexión se le llaman Sistemas
de control distribuidos en red.

Fig.1.11 Esquema de Conexión con EIB (Bus europeo de instalación).

1.4.1.1 Características del sistema EIB (Bus europeo de instalación)

 Los elementos del EIB pueden comunicarse entre sí, sin importar el fabricante
del elemento.

 Las señales recibidas por el sensor se envían al actuador correspondiente por la


línea del bus, que es un cable de dos hilos.

 El sistema puede ser ampliado con un máximo de quince áreas como instalación
unitaria. El sistema trabaja de manera descentralizada.

29
 Su estructura puede ser lineal, de estrella o con ramificaciones, sin necesidad de
un control central.

1.4.1.2 Ventajas del sistema EIB

 Ahorro de tiempo: Los tiempos de montaje del sistema pueden reducirse debido
a una planificación e instalación adecuada, con la ayuda de un software y con la
reducción de la cantidad de cables, el montaje es mucho más fácil.

 Flexibilidad: Es posible la ampliación o modificación de funciones gracias a la


reprogramación de los actuadores y sensores, incluso ampliando la instalación
existente.

 Eficiencia en la comunicación: Los componentes del sistema son compatibles


entre sí, creando una comunicación sin problemas o interferencias. Esto
garantiza la utilización racional de la energía.

 Respeto por el medio ambiente: Al aprovecharse al máximo la energía, el


sistema brinda un alto grado de efectividad y mejora el manejo de los recursos
existentes, repercutiendo en ahorro de dinero.[2]

1.4.2 Protocolo X.10

X.10 permite controlar los aparatos electrodomésticos y las luces de la vivienda,


haciendo uso de la instalación eléctrica ya presente en el hogar, evitando la instalación
de cables. Cada aparato posee una dirección a la que responde o envía información,
contando con un total de 256 direcciones.

Debido a su permanencia de más de 20 años en el mercado, al empleo de su


tecnología y a su liderazgo, sus productos, son ampliamente utilizados en algunas
viviendas residenciales o importantes edificios en los Estados Unidos de Norteamérica.
La instalación también es muy accesible, debido a que cualquier persona con un poco
de conocimientos previos en electricidad o incluso los usuarios, pueden ser capaces de
30
elaborar una sencilla instalación domótica. El empleo de X.10 no requiere cableado
especial, pero si se requieren dos dispositivos para la comunicación:

 Un receptor: Se instala para enchufar algún electrodoméstico. En él se especifica


el código de la unidad y el código de la vivienda, ofreciendo un gran número de
posibilidades.

 Un controlador o transmisor: Emite las órdenes de cuándo deben activarse los


aparatos electrodomésticos y con qué intensidad, encontrándose estos en
cualquier otro lugar de la vivienda.

X.10 protege efectivamente la vivienda porque monitorea constantemente el estado


de la casa, ya sea en el lugar o a distancia. Se encarga de encender las luces cuando
se requiere, activa el sistema de alarmas si es requerido también, incorporando también
a sus beneficios el empleo de un guardián electrónico, llamado “perro electrónico” X.10,
un módulo que imita los ladridos de un perro Pastor Alemán [2].

1.4.3 Bluetooth

Bluetooth aparece en el año de 1998 como una norma desarrollada por un grupo
de empresas con el objetivo optimizar la comunicación inalámbrica mediante
radiofrecuencia entre dispositivos de uso domestico como por ejemplo: computadoras,
PDAs, teléfonos celulares, impresoras etc. Esta tecnología puede abastecer hasta 8
dispositivos en una sola WPAN (Wireless Personal Area Network).

Bluetooth opera en la banda de 2,56 GHz y ofrece hasta 1Mbps, que se reducen a
un aproximado de 434 Kbps al descontar la sobrecarga de los protocolos. El alcance
máximo es de entre 10 y 100 metros, aunque los resultados obtenidos de manera
efectiva son diferentes ya que intervienen factores externos como el ruido
electromagnético y los obstáculos.

Las principales características de esta tecnología son:

31
 Una soporta un máximo de 8 nodos dentro una subred Bluetooth.
 Bluetooth maneja una velocidad de intercambio de hasta 1Mbps.
 Frecuencia de 2.4 GHz.
 Potencia de transmisión: 1mW para 10 metros, 100mW para 100 metros.
 Canales máximos de datos: 7 por subred.
 Velocidad de datos: 721 Kbps por subred.
 Cobertura: 10 Metros.
 Bajo consumo de energía: 2.7 Volts. [3]

1.4.4 ZigBee

Las redes ZigBee comenzaron a ser concebidas por el año 1998, el organismo
encargado del desarrollo es la ZigBee Alliance cuyo afán era diseñar redes ad-hoc de
auto organización para radios digitales así como programas de certificación, insignias y
estrategias de comercialización.

El enfoque principal fue desarrollar dispositivos para aplicaciones diferentes, las


cuales proveerán al usuario soluciones inalámbricas que son rentables, fáciles de
utilizar, altamente confiables y seguras. ZigBee ha sido diseñado para soportar una
diversa gama de aplicaciones con conectividad más sofisticada que los anteriores
sistemas inalámbricos. Se enfoca un segmento del mercado no atendido por los
estándares existentes, con baja tasa de transmisión de datos, bajo ciclo de servicio de
conectividad y bajo costo. Las principales características de esta tecnología son:

 Bajo costo en los dispositivos, la instalación y el mantenimiento.

 Los dispositivos ZigBee amplían la vida de las baterías ya que la naturaleza de


ZigBee permite la creación de redes que requieren poco mantenimiento.

 Redes de alta densidad de nodos. ZigBee permite que las redes manejen hasta
65536 dispositivos [4].

32
1.5 Comparativa general

Una vez analizados los distintos medios de transmisión aplicables en Domótica se


presenta un panorama de las diversas ventajas y desventajas que pueden tenerse al
utilizar cualquiera de ellos, sin embargo cada uno de ellos es apto para necesidades
diferentes, para el caso particular de este trabajo es prioritario encontrar una tecnología
que consuma muy pocos recursos tanto económicos como en materia de energía. A
continuación se presenta una comparativa general de las tecnologías antes
mencionadas.

Tabla 1.1 Comparativa general de diferentes tecnologías inalámbricas.

EIB X.10 BLUETOOTH ZIGBEE

Ancho de 20 –
12-96 Mbps 60bps 1Mbps
banda 250kbps

Automatización
Control
y Monitorización
Aplicaciones remoto de Reemplazo
Sistemas de y
dispositivos de cable
control. control
eléctricos

Consumo
alto Alto Medio Bajo
energético

Robustez,
Consumo,
Seguridad, alta Empleo de
Puntos Costo, costo,
velocidad d un guardián
importantes seguridad robustez,
transmisión. electrónico
seguridad

Complejidad
Media Alta Media - alta Baja

Distancia No
300-600 1 - 10 1 - 75
En metros especificado

33
CAPITULO II

ZIGBEE

34
2.1 Introducción a ZigBee

Las tecnologías inalámbricas si bien pudiesen tener algunas desventajas en cuanto


al ancho de banda se refiere respecto a tecnologías alambicas , poseen múltiples
ventajas en el ámbito de la domótica debito en primer lugar a el ahorro de toda la
infraestructura que se requiere para una instalación alámbrica que para el caso práctico
y estético no es muy conveniente ya que en domótica uno de los puntos que más
sobresaltan a la vista es la estética y como en todo también el costo resulta importante.

ZigBee es una tecnología que se presta para esto ya que el estándar se ha hecho a
medida para la monitorización y para tareas de control. Por este motivo, los mercados
tales como la automatización de edificios y hogares, la atención sanitaria, control
industrial, control de alumbrado y control comercial, son las principales áreas bajo las
cuales trabaja la tecnología en cuestión.

2.2 Arquitectura

ZigBee es una tecnología que basa su funcionamiento en el modelo de referencia


OSI (Open System Interconection) y como tal también divide su arquitectura en capas
que definen su funcionamiento, Sien embargo para el caso de las capas de ZigBee
encontraremos una división entre los protocolos encargados de definir dichas capas,
por una parte se encuentra presente la norma IEEE 802.15.4 y por otro lado se
encuentran las normas dictadas por la ZigBee Alliance.

La ZigBee Alliance es el grupo conformado por diversas empresas que se dedican a


la creación de nuevas soluciones en el ámbito inalámbrico principalmente para su uso
en entornos residenciales aunque también hay diversas aplicaciones de uso comercial
e industrial. Esta alianza tecnológica, sin fines de lucro, conformada por más de 100
firmas, la mayoría de ellas fabricantes de semiconductores tienen el objeto de colaborar
con el progreso e implementación de una tecnología inalámbrica de área personal a
bajo costo.

35
2.2.1 IEEE 802.15.4

ZigBee es una tecnología que está basada en el estándar IEEE 802.15.4 que está
enfocado para conexiones inalámbricas de tipo personal PAN con una tasa de
transferencia baja como es el caso de la tecnología de la que se hace uso para la
realización de este trabajo. Para poder estudiar la tecnología ZigBee, será necesario
tratar los niveles definidos por el estándar IEEE 802.15.4 específico para conexiones
inalámbricas tales como ZigBee y bajo la cual esta se basa.

IEEE 802.15.4 es una norma bajo la cual se define la especificación de ZigBee. La


finalidad del estándar IEEE 802.15.4 es definir los niveles de red básicos para dar
servicio a un tipo en particular de red inalámbrica de área personal (WPAN) centrada
para constituir la comunicación entre dispositivos con un bajo costo y baja velocidad.
Se hace énfasis en el bajo precio de los módulos de comunicación y su fácil
reconocimiento con nodos cercanos y sin infraestructura, o con muy poca, así mismo
con esto se favorece al máximo el bajo consumo de recursos materiales y por lo tanto
económicos.

2.2.1.1 Capas del estándar IEEE 802.15.4

La capa de más bajo nivel es la capa física (PHY), que en conjunto con la capa de
acceso al medio (MAC), brindan los servicios de transmisión de datos por el aire, punto
a punto. Estas dos capas esta descritas dentro del estándar IEEE 802.15.4. El estándar
trabaja sobre las bandas ISM de uso no regulado, dónde se definen hasta 16 canales
en el rango de 2.4 GHz, cada una de ellas con un ancho de banda de 5 MHz

2.2.1.1.1 Nivel físico

El nivel físico PHY es quienes encarga de realizar la transmisión de datos sobre el


medio físico, asimismo asigna la interfaz física por medio de la cual se acceden a todos
los servicios proporcionados por las capas superiores, así mismo mediante esta capa
se realiza el control de los dispositivos transceptores encargados de la trasmisión y
recepción de datos y se realiza la selección del canal para este intercambio, dichos

36
transceptores trabajan bajo una de los tres rangos de frecuencias ya anteriormente
mencionados:

 De 868 a 868.8 MHz: Europa. Se permite de uno a tres canales.

 De 902 a 928 MHz: Norte América. Se permite de diez a treinta canales.

 De 2400 a 2483.5 MHz: Uso en todo el mundo. Se permite hasta dieciséis


canales.

La IEEE 802.15.4 maneja dos modos diferentes de modulación y así mismo puede
manejar dos diferentes versiones para el nivel físico (PHY). La primer versión es
denominada PHY a 868/915 MHz y es conocida como la versión PHY de banda baja,
esta versión utiliza modulación por desplazamiento de fase binaria (BPSK) .La segunda
versión PHY a 2.4 GHz es conocida como Banda alta y utiliza una técnica de
modulación llamada OQPSK por sus siglas en ingles “Offset Quadrature Phase-Shift
Keying”.

La grafica que se muestra en la figura 2.2 muestra que la técnica de modulación del
estándar IEEE 802.15.4 es de manera clara más eficiente que el utilizado por Wi-Fi o
Bluetooth ya que obtenemos que es 7 dB o 18 dB mejor que las técnicas utilizaras por
los estándares IEEE802.11 e IEEE 802.15.4 que son quienes definen las tecnologías
Wi-Fi y Bluetooth respectivamente. Es necesario recordar que la relación señal a ruido
es de suma importancia para lograr un enlace inalámbrico que pueda transmitir y recibir
de manera optima, ya que como su nombre lo indica, la relación señal a ruido establece
la relación entre la potencia de la señal recibida y la potencia del ruido presente en el
canal de comunicación [4].

37
Fig. 2.1 Tasa de error de bit contra relación señal a ruido en los estándares IEEE 802.15.4, IEEE 802.11
e IEEE 805.15.1.

2.2.1.1.1.1 Medidas de canal

Dependiendo del tipo de dispositivo utilizado y el consumo de potencia que generan


aplicaciones determinadas, con el estándar IEE 802.15.4 se espera una transmisión
exitosa en un rango de 10 a 75 m con un consumo de potencia aproximado a 1mW. En
las graficas mostradas en la figura 2.4 se analiza la tasa de error de paquete PER
(Packet Error Rate) y el indicador de señal recibida RSSI (Receive Signal Strength
Indication) tanto en ambientes exteriores como en interiores. El estándar IEE 802.15.4
define dentro de sus características una transmisión optima para interiores de hasta 32
metros entre el transmisor y el receptor con PSDU (Physical layer Service Data Unit) de
tamaños de 20, 40,80 y 127 bytes. La grafica 2.3 también muestra la intensidad de
señal recibida arroja que a mayor distancia la intensidad irá disminuyendo de manera
paulatina conforme se aleja el transmisor del receptor, sin embargo esto es solo para el
caso de ambientes internos donde se encuentren obstáculos a cada paso como
sucedería dentro de una casa.

38
Fig. 2.2 RSSI en ambientes internos

Fig. 2.3 RSSI en ambientes externos (derecha).

39
La grafica de la figura 2.4 muestra una relación entre la intensidad de la señal
recibida y la distancia, en este caso a diferencia de la respuesta que se obtiene en
ambientes internos, la señal decae más rápidamente sin embargo a partir de los 30
metros la intensidad de la señal es más constante.

El segundo parámetro al cual se hace referencia en el estándar IEEE 802.15.4 es la


tasa de error de paquete PER, ese parámetro también es manejado en función de la
distancia, el estándar indica que la tasa de error para el caso de ambientes externos se
dispara cuando se rebasa la distancia de 20 metros siendo probable después de esta
distancia la detección de errores. El panorama es diferente cuando se trabaja en
ambientes externos ya que haya los 20 metros la probabilidad de error es muy baja y es
hasta los 50 metros donde esta comienza a elevarse [5].

Fig. 2.4 PER en ambientes internos.

40
Fig. 2.5 PER para ambientes externos.

2.2.1.1.2 Nivel de enlace de datos

En este nivel encontramos la subcapa de Control de Acceso al Medio (MAC). Ésta


se encarga de transmitir tramas MAC. Además del servicio de datos, ofrece una interfaz
de control y regula el acceso al canal físico y al balizado de la red. También se encarga
de controlar la validación de tramas y las asociaciones entre nodos tiempo. Por último,
ofrece puntos de enganche para servicios seguros.

También podemos encontrar en el nivel de enlace de datos la subcapa de control


de Enlace Lógico (LLC) que hace la función de interfaz con los niveles superiores de la
pila de protocolos. En la Figura 2.6 podemos observar los diferentes niveles definidos
por el estándar 802.15.4 y las capas intermedias que hacen posible la comunicación
con los niveles superiores definidos por un tipo de red inalámbrica de área personal
WPAN, como ZigBee.

41
IEEE 802.15.4

ENLACE DE DATOS
CONTROL DE ENLACE DE DATOS
(LLC)
SUBNIVEL DE CONVERGENCIA

CONTROL DE ACCESO AL MEDIO

NIVEL FÍSICO

Fig. 2.6 Capas que controlan el estándar IEEE 802.15.4.

2.2.1.2 Especificaciones del estándar IEEE 802.15.4

El medio de transmisión ZigBee trabaja sobre la banda ISM en concreto se definen


algunas frecuencias dedicadas a su uso, 915 MHz para su uso en Estados Unidos de
Norteamérica, 868 MHz para Europa y 2.4 GHz para el resto del mundo, la razón es
que esta última es libre en gran parte del mundo y por este motivo las empresas
dedicadas a su desarrollo optan por utilizar esta frecuencia. Para el caso de 2.4 GHz se
definen 26 canales y cada uno de ellos los posee un ancho de banda especifico de 5
MHz.

Fig. 2.7 Canales del estándar IEEE 802.1.4

42
 Tres bandas, 27 canales especificados:

Tabla 2.1 Frecuencia de trabajo ZigBee

NUMRO SENSIBILIDAD
TRANSFERENCIA
FRECUENCIA COVERTURA DE DE MODULACION
DE DATOS
CANALES RECEPCION

2405-24800 RESTO DEL


250 Kbps 16 -85 dBm O-QPSK
MHz MUNDO

868.3 A 870
EUROPA 20 Kbps 1 -92 dBm BPSK
MHz

902-828 MHz AMÉRICA 40 Kbps 10 -92 dBm BPSK

 2.4Ghz.- Especificaciones (Disponibles mundialmente):

a) Sensibilidad: -85 dBm @ 1%PER


b) Potencia de salida: 0dB
c) Alcance: Interiores (30m), exteriores libres (75m)

 Características de la comunicación:

a) Estructura simple.
b) Entrega de datos segura ya que se hace uso de :

CSMA/CA (Acceso Múltiple con Detección de Portadora –


Prevención de colisión).
Reconocimiento de mensaje [6].

43
2.2.2 Niveles especificados por ZigBee Alliance

2.2.2.1 Nivel de red

Las funciones principales del nivel de red son dar paso al correcto uso del Subnivel
MAC, definido anteriormente por el estándar IEEE 802.15.4, así como ofrecer una
interfaz ajustada para su uso por parte del nivel superior, el nivel de aplicación.

Por una parte, se realiza el ruteo en base a la topología de la red en la que el


dispositivo se encuentra. Por otra parte, las funciones de control del nivel de red
controlan la configuración de nuevos dispositivos y el establecimiento de nuevas redes;
puede decidir si un dispositivo colindante pertenece a la red e identifica nuevos routers
y vecinos. El control puede detectar así mismo la presencia de receptores, lo que
posibilita la comunicación directa y la sincronización a nivel MAC.

2.2.2.2 Nivel de aplicación

Se trata del nivel más elevado definido por la especificación y, por tanto, la interfaz
efectiva entre el nodo ZigBee y sus usuarios. En él se ubican la mayor parte de los
componentes definidos por la especificación: tanto ZDO’s, (ZigBee Device Objects)
quienes se encargan de definir el papel del dispositivo en la red, si el actuará como
coordinador, router o dispositivo final como sus procedimientos de control y los objetos
de aplicación. El direccionamiento de los dispositivos ZigBee, a su vez, parte del nivel
de aplicación. Un nodo está formado por un transceptor compatible con 802.15.4 y una
o más tipos de dispositivos conformados por un conjunto de atributos que pueden ya
sea monitorearse o controlar por medio de eventos [7].

44
ZIGBEE
NIVEL DE APLICACIÓN

OBJETO DE
OBJETOS DE DISPOSITIVO
APLICACIÓN ZIGBEE

SERVICIO
DE
SEGURIDAD SUBCAPA DE APOYO A LA
APLICACIÓN

NIVEL DE RED

IEEE 802.15.4
CONTROL DE ACCESO AL MEDIO (MAC)

NIVEL FISICO

Fig. 2.8 Capas del Protocolo Zigbee.

2.3 Dispositivos ZigBee

Dentro de una red constituida por esta tecnología se pueden encontrar tres tipos de
dispositivos diferentes que cumplen con funciones diferentes de acuerdo a la posición
en que se encuentran dentro de una red, dichos dispositivos son los que a continuación
se mencionan:

 Coordinador ZigBee ZC (ZigBee Coordinator): Este dispositivo es el que tiene


más funciones dentro de una red ZigBee ya que entre sus funciones se
encuentra controlar y coordinar la red y las diferentes rutas que deben de seguir
cada uno de los dispositivos para comunicarse entre ellos, para poder constituir
una red ZigBee es forzosamente necesario tener por lo menos un Coordinador.

45
 Router ZigBee (ZigBee Router, ZR): Este dispositivo tiene como meta principal
la interconexión de cada uno de los dispositivos que se encuentren separados
dentro de una topología de red del mismo modo este dispositivo ofrece la
posibilidad de obtener un nivel de aplicación para la ejecución de código por
parte de los usuarios.

 Dispositivo Final (ZigBee End Device, ZED): Este tercer dispositivo tiene la
tarea de tener la funcionalidad necesaria para comunicarse con el nodo principal
de una red que bien puede ser un Router ZigBee o un Coordinador ZigBee, este
dispositivo se encarga de transmitir información hacia el router o coordinador al
que se encuentre conectad, sin embargo no puede transmitir directamente a otro
ZED, para esto es necesario atravesar la ruta hacia el por medio de un ZR o ZC,
una de las grandes ventajas de estos dispositivos conectados a una red ZigBee
es su ahorro de energía, pues no se requiere que estén encendidos todo el
tiempo pues es posible mantenerlos en modo de hibernación hasta que se
requiera de ellos.

2.4 Topologías de redes ZigBee

2.4.1 Topología en estrella

En redes en estrella el coordinador se sitúa en el centro, y toda conexión que se


quiera realizar entre los distintos nodos de la red debe pasar por éste.
En la Figura 2.9 vemos ilustrada la típica estructura de una red en estrella.

Coordinador de red.
Dispositivo de función completa (FFD).
Dispositivo de función reducida (RFD).

Fig. 2.9 Diagrama Red ZigBee con topología tipo estrella.

46
En una red estrella se tiene un solo nodo central activo que normalmente es quien
administra la red y evita problemas derivados de una mala distribución de la red , las
ventajas que una red de este tipo puede generar es la facilidad de implementación así
como la facilidad de incrementar los dispositivos conectados a la red, así mismo el fallo
de un nodo periférico no influiría el desempeño de la red completa , otro problema que
resuelve esta topología son las colisiones de datos, las cuales se eliminan al existir una
sola conexión por parte de cada estación al dispositivo central.

2.4.2 Topología en árbol

En esta topología de red en la que los nodos están colocados en forma de árbol el
coordinador será la raíz del árbol. La conexión en árbol es parecida a una serie de
redes en estrella interconectadas, salvo en que no tiene un nodo central. En cambio,
tiene un nodo de enlace troncal, generalmente ocupado por un coordinador, desde el
que se ramifican los demás nodos.

Coordinador de red.
Dispositivo de función completa (FFD).
Dispositivo de función reducida (RFD).

Fig. 2.10 Diagrama Red ZigBee con topología tipo árbol.

47
Los problemas que presentan este tipo de topología radican en que los datos son
recibidos por todas las estaciones no importando para quien vayan dirigidos. Por lo
tanto surge el problema de dotar a la red con un mecanismo que permita identificar al
destinatario de los mensajes.

2.4.3 Topología en malla

La topología más interesante es la topología de malla. Consiste en que al menos


uno de los nodos tendrá más de dos conexiones. Con ello conseguimos que si, en un
momento dado, un nodo del camino falla y se cae, pueda seguir la comunicación entre
todos los demás nodos debido a que se rehacen todos los caminos.

El establecimiento de una red de malla es una manera de encaminar datos, voz e


instrucciones entre los nodos. Las redes de malla se diferencian de otras redes en que
las piezas de la red (los nodos) están conectadas unas con otras por uno u otro camino.
Esta configuración ofrece caminos redundantes por toda la red, de modo que si falla un
cable, otro se hará cargo del tráfico. Esta topología, a diferencia de las vistas en
apartados anteriores, no requiere de un servidor o nodo central, con lo que se reduce el
mantenimiento. Un error en un nodo, no implica la caída de toda la red.

Como ya se ha comentado anteriormente, las redes de malla son autogenerables.


La red puede funcionar incluso cuando un nodo desaparece o la conexión falla, ya que
el resto de nodos evitan el paso por ese punto. Consecuentemente, se forma una red
muy confiable.[8]

Coordinador de red.
Dispositivo de función completa (FFD).
Dispositivo de función reducida (RFD).

Fig. 2. 11 Diagrama. Red ZigBee con topología tipo malla.

48
2.5 Módulos ZigBee

Una vez que se conocen lo dispositivos bajo los cuales se basa esta tecnología y
los lineamientos que deben seguir, corresponde el turno a la búsqueda de módulos
comerciales que trabajen bajo ZigBee. Para este trabajo se ha realizado una búsqueda
de diferentes dispositivos fabricados por empresas diferentes y que perteneces a la
ZigBee Alliance y por tal motivo son quienes se encargan de la distribución de
productos relacionados.

Si bien en esencia el protocolo no cambia, cada fabricante ofrece diversas


soluciones aplicables a él, por lo que en este apartado se detallan diferentes
componentes que han sido analizados para ver sus cualidades y saber cuál es el más
adecuado y cual ofrece mejores soluciones.

2.5.1 eZ430-RF2480 Development Tool

Se tratad e una herramienta de la hempresa Texas instruments, la cual contiene lo


necesario para la implementación de proyectos por medio de ZigBee, asimismo cabe
destacar que este dispositivo es compatible y estrechamente vinculada con
micronoctroladores de la familia MSP430, dicha herramienta contiene:

 Un soporte para las baterías de los módulos.


 2 baterías AAA
 3 Módulos CC2480
 Una interface USB eZ430-RF.

Fig. 2.12 Transceiver CC2480

49
Dentro de esta herramienta son incluidas algunas herramientas de trabajo en
software así como documentación sobre el hardware incluido dentro de este kit, del
mismo modo es posible descargarlas desde la página web del fabricante. Dichos útiles
son los siguientes:

 La guía de usuario de eZ430-RF2480


 Entornos de trabajo Code Composer Essentials (CCE) e IAR Embedded
Workbench.
 Una guía de usuario para la familia de microcontroladores MSP430.

Fig. 2.13 eZ430-RF2480 Development Tool

Este kit contempla todo un entorno de desarrollo así como los dispositivos
necesarios para la implementación de proyectos de tipo inalámbrico, para lo anterior se
utiliza una interfaz incluida dentro de esta herramienta de tipo USB, de esta manera la
creación de nuevas aplicaciones se torna más cómoda por su fácil interacción con las
computadoras ya que muchas veces es utilizada para el alojamiento de interfaces
graficas que ejecutan acciones sobre los diferentes dispositivos utilizadas, también es
posible mediante la presente herramienta realizar simulaciones en tiempo real sobre el
dispositivo por medio de una computadora y el hardware y software subministrado por
la empresa Texas Instruments.

El kit, como ya se ha preciso anteriormente, consta de tarjetas inalámbricas que


trabajan bajo una frecuencia de 2.4 GHz, mismas que incluyen un microcontrolador de

50
la familia MSP430 de ultra bajo consumo. Los proyectos que se realicen con estos
dispositivos pueden gozar de una autonomía gracias a la plataforma de batería que
incluye el kit. Algunas de las características principales del eZ430-RF2480 son:

 Dos LED (rojo/verde) indicadores para el desarrollo de la


Comunicación.
 Una interface USB útil en la programación de los dispositivos.
 Transceiver CC2480 a 2.4GHz.
 UART
 Un microcontrolador MSP430 de ultra-bajo consumo a 16MHz.
 18 pines disponibles para la realización de pruebas.

El eZ430-RF2480 utiliza dos entornos de programación para poder escribir,


descargar y programar diferentes aplicaciones dentro del dispositivo ZigBee. Los
entornos mencionados son:

 Code Composer Essentials (CEE)


 IAR Embedded Workbench Integrated Development Environment (IDE)

2.5.2 ATMEL Module

ATMEL es el nombre del fabricante que proporciona dispositivos compatibles con la


especificación ZigBee. En este caso se nos detalla, por separado, cual es el transceiver
y el microcontrolador utilizados para la implementación del módulo. Como se puede
comprobar en la Figura 2.14, nos encontramos con otra solución completa al integrar en
su PCB todos los componentes requeridos y compatibles con ZigBee, por lo tanto
debemos de analizar dichos componentes para conocer los beneficios que pueden
aportar al proyecto y de este modo llegar a la mejor solución posible.

51
Fig. 2.14 Modulo ATMEL

2.5.3 EasyBee ZigBee

EasyBee se fundamenta en un módulo válido para ZigBee dentro del estándar IEEE
802.15.4. El módulo EasyBee, que se aprecia en la Figura 2.15, contiene todo el
conjunto de circuitos necesarios, integrando una antena integrada. La capa MAC
incluye la generación CRC-16, la evaluación de canal clara, la detección de señal de
energía, la seguridad, encriptación y autentificación. Cabe señalar que este dispositivo
únicamente es un tranceiver, por lo que para su implementación requiere como varios
de los otros módulos un microcontrolador externo.

Fig. 2. 15 Modulo EasyBee ZigBee

A continuación se enuncian las características más resaltantes de este modulo:

 Frecuencia: 2.4GHz.
 Posibilidad de antena integrada o externa.
 Potencia de salida: 1mW (+0dBm).

52
 Temperatura: -40ºC a 85ºC.
 Volate necesario: 2.1 – 3.6V.
 Distancia máxima: 120m. [12]

2.5.4 XBee Module

Es uno de los módulos que hace uso utilización de ZigBee. El dispositivo tiene como
labor principal la transmisión y recepción de datos que son suministrados ya sea por un
microcontrolador o mediante una computadora. Para el este trabajo se utilizarán los
módulos XBee series 1 y series 2, que son módulos de radio frecuencia que trabajan en
la banda de 2.4 GHz por medio del protocolo IEEE 802.15.4 fabricados por
MAXSTREAM. Son utilizados en automatización de casas, sistemas de seguridad,
monitoreo de sistemas remotos, aparatos domésticos, alarmas contra incendio, plantas
tratadoras de agua, etc. Los módulos XBee específicamente tienen un alcance en
interiores de hasta 30 metros, y en exteriores el alcance es de hasta 100 metros. En la
Figura 2.16 se muestran los tres diferentes tipos de XBee.Las principales
especificaciones del módulo XBee son las siguientes:

 Potencia de salida: 50mW


 Consumo de corriente en Rx: 45mA
 Consumo de corriente en Tx: 295mA
 Consumo de voltaje: 3.0 – 3.4V
 Tamaño (cm): 2.43 x 3.29
 Temperatura: -40ºC a 85ºC
 Distancia: Interior: 30m / Exterior: hasta 100 mts. [9]

Fig. 2.16 Modulos XBee de Maxstream

53
CAPITULO III
DISEÑO DEL
SISTEMA DE
COMUNICACIÓN

54
Para la implementación del sistema de comunicación se necesitan los siguientes
módulos o dispositivos:

Modulo XBee
Microcontroladores.
Pantalla de LCD de 4 x16.
Teclado matricial de 4x4.
Comunicación mediante C.I. MAX 232.

3.1 MODLO XBEE

Analizando las diferentes opciones que existen en el mercado podemos observar


las principales características así como sus ventajas y desventajas que ofrecen los
diferentes dispositivos existentes de manera comercial; en base a lo anterior se puede
llegar a la determinación del elemento a emplear así como diferentes observaciones
que permitirán concluir que la mejor opción es la de utilizar los módulo Maxstream.

Observando las diferentes posibilidades se han utilizado diferentes criterios para


llegar al dispositivo a utilizar antes mencionado. Uno de los puntos más importantes en
la abertura del dispositivo para trabajar con múltiples microcontroladores ya que se
desea que el gasto por este dispositivo sea reducido o bien que sea ajustable a las
necesidades que se tengan, de mismo modo es una ventaja si existe una cierta
facilidad para interconectarse con los puertos de una computadora ya que en algún
momento dado puede ser necesario para una interfaz grafica con el usuario por medio
de una computadora. En base a lo anterior se ha creído que no es muy conveniente
utilizar la herramienta eZ430-RF2480 de Texas puesto que es difícil implementar el
transceiver ZigBee con otro microcontrolador diferente al de la familia que se especifica,
así mismo las herramientas proporcionadas y el contenido de aplicaciones ya
implementadas que trae hacen de esta opción muy costosa.

55
Tabla 3.1 Comparativa entre los dispositivos ZigBee en el mercado

Consum Consumo µc Potencia Consumo


Peso Dimensiones
o Rx Tx incluido de salida de voltaje

1.25-
2.1-
Xbee 40mA 40mA 3gr 2.43 x 2.76 no 2mW
3.6V

15.5m
ATMEL 16.5mA 5gr 2.25x2.3 no 4mW 3.6V
A
Texas 13.3m
21.2mA 5gr 3 x 2 x 0.1 si 1mW 3.6V
Instruments A
2.1-
EasyBee 20mA 18mA 3gr 2.6 x 2 no 1mW
3.6V

Otra característica que se ha tomado en cuenta fue la facilidad con que el dispositivo
seleccionado puede ser montada y desmontada ya sea en placa de circuito impreso o
en una tablilla de pruebas para su fácil manejo, por este motivo la utilización de los
dispositivos provistos por ATMEL es considerada no oportuna ya que en sus
herramientas de desarrollo el dispositivo ZigBee se encuentra incrustado en la placa de
circuito impreso por lo que es difícil manipular el dispositivo en su forma independiente.
Una opción alternativa por su tamaño y facilidad de manipulación en forma individual es
el modulo EasyBee sin embargo no es fácil de encontrar en México y la información
presente sobre este modulo aún es limitada por lo que se ha descartado también esta
opción. La solución que se ha considerado ideal es el modulo XBee fabricado por
Maxstream ya que es de bajo costo, y fácil manipulación y compatibilidad con varios
tipos de microcontroladores, así mismo es sencilla la realización de interfaces para la
computadora, por lo anterior se determina que el dispositivo que mas es conveniente es
el modulo XBee. [9]

56
3.1.2 Modos de operación

MODO
TRANSMITIR

MODO SLEEP MODO IDLE MODO


RECIBIR

MODO
COMANDOS

Fig. 3.1 Modos de operación de los modulos XBee

3.1.2.1 Modo recibir y transmitir

El modulo trabaja bajo estos modos cuando recibe algún paquete por medio de la
antena o cuando el buffer de salida tiene algún dato, el cual es transmitido en modo
serial. La información transmitida puede ser de tipo Directa o Indirecta. En el primer
modo la información es enviada inmediatamente a la dirección de destino, mientras que
en el modo Indirecto la información se retiene por el módulo durante un período de
tiempo y es enviada sólo cuando la dirección de destino realiza una petición de envió.
Asimismo es posible enviar información por dos formas diferentes: Unicast y Broadcast.
Por la primera, la comunicación es realizada solo desde un punto a otro, y es el único
modo que permite respuesta de quien recibe el paquete , es decir, quien recibe debe
enviar un ACK (acknowledgement) o acuse de recibo, llamado así ya que indica que
recibió el paquete, el usuario no puede verlo ya que es interno de los módulos.

57
El modulo que ha enviado un paquete recibe este acuse de recibo y en caso
contrario el paquete será reenviado de nuevo en un número máximo de 3 veces, una
vez concluidos estos 3 intentos se incrementa el registro interno de fallas del modulo

3.1.2.2 Modo de bajo consumo (Sleep Mode)

El modo de Bajo Consumo o modo Sleep, es el que utiliza dicho modulo para
desactivarse momentáneamente en un periodo determinado en el cual no existe
intercambio de información esto tiene como consecuencia el ahorro de energía en un
alto o mediano porcentaje dependiendo de la aplicación dada, ya que muchas veces
estas no demandan al modulo estar en modo activo permanentemente ya que solo
requieren la atención por parte del modulo cuando se envíen datos, mismos que en
algunas tareas no son constantes. El ahorro de energía de este modo es configurable y
asimismo depende de la alimentación del modulo de acuerdo a los rangos permitidos, el
consumo de corriente cuando es activado el modo sleep varía entre 10µA y 50µA.

3.1.2.3 Modo de comandos

Este modo permite ingresar comandos de tipo AT las cuales son instrucciones que
sirven para interactuar entre los usuarios y dispositivos terminales modem en este caso
al módulo XBee, con los comandos AT se configura, ajusta o modifica el conjunto de
parámetros tales como la dirección propia o la de algún destino, así como su modo de
operación entre algunos otros. Para ingresar a este modo dentro de los módulos es
necesario un software terminal como por ejemplo Hyperterminal en Windows XP o
cualquier otro similar, la empresa Maxstream ha desarrollado un software propietario
que contiene un software de tipo terminal llamado X-CTU que además incluye otras
aplicaciones.

58
3.1.2.4 Modo transparente

Este modo almacena en el buffer de entrada todo lo que ingresa por el pin 3 para
posteriormente ser transmitido y todo lo que ingresa como paquete es guardado en el
buffer de entrada y luego se envía mediante el pin 2 este modo está enfocado para
cuando únicamente existe una conexión punto a punto . Dependiendo de cómo se
configure el modulo, es posible transmitir la información de manera inmediata en cuanto
la información ingrese o es posible configurar un retardo de tiempo dado sin recibir
ningún carácter serial por el pin 3. Una vez finalizado el tiempo de espera configurado
se procede en ese momento y se toma lo que se encuentre en el buffer de entrada, se
empaqueta, y finalmente transmite.

3.1.2.5 Modo IDLE

Finalmente cuando el modulo se encuentra encendido pero sin configurar alguno de


los modulos anteriors, es decir no envia ningun pauqete de datos ni recibe nada y
asimismo no se encuentra dormido entonces se encuentra en este modo en el que solo
se encuentra energizado pero no realiza ninguna acción.[11]

3.2 Microcontroladores

Un microcontrolador es un dispositivo usualmente utilizado para tareas que


requieren tres unidades funcionales existentes dentro de una computadora las cuales
son: CPU, memoria y Unidades de entrada y salida, asimismo es posible realizar
operaciones aritméticas y lógicas, es decir, se trata de un circuito integrado que
contiene las características de un computador. En la figura 3.2 se muestra el esquema
a bloques de un microcontrolador, el cual contiene elementos primordiales como un
microprocesador, al menos 2 memorias, una RAM y una ROM y puertos para la
conexión de elementos periféricos.

59
PERIFERICO PERIFERICO
1 2 VCC

MICROPROCESADOR

CLK
MEMORIA MEMORIA
GND
1 2

I/O CONTROL

Fig. 3.2 Esquema de un microcontrolador.

Los microcontroladores difieren de un CPU común en la capacidad de manejar en


un solo chip varios periféricos mediante sus puertos de entrada y salida, y sin
necesidad de conectarle memoria RAM y ROM de manera externa, esto a menos que
se requiera más de la que posee el fabricante del chip, sin embargo es por este motivo
que existe en el mercado un amplia gama de microcontroladores con las cantidades de
recursos necesarias para la implementación de las funciones que requieran una
cantidad mayor de memoria o de frecuencia de operación. Cabe destacar que los
microcontroladores son de mucha utilidad cuando se requiere manipular un sistema que
requiera las características de un CPU pero dedicadas exclusivamente a una función en
especifico. El tamaño y las características de este dependen de los recursos que este
pueda manejar, y la selección del más ideal está directamente relacionada con esto ya
que en muchas ocasiones no se requieren grandes recursos y por este motivo no s
necesario invertir en un dispositivo costoso que será mal aprovechado.

60
3.2.1 Familias de microcontroladores

Tabla 3.2 Familia de microcontroladores en el mercado

EMPRESA 8 bits 12 bits 14 bits 16 bits 32 bits


Familia
12Fxx, 18Cxx y
Familia Familia
16Cxx 18Fxx de
Microchip 12Cxx de
y 16Fxx de 16
Pic 32
10f2xx 12 bits
14 bits bits
(PIC16F87X)
68HC05
No No 683xx
68HC08 68HC12
Freescale 68HC11 68HC16
68HCS12
fabricados fabricados 68HCSX12
HCS08
No No No No
Hitachi H8
fabricados fabricados fabricados fabricados
MCS-48
(familia
8048) No No No
MCS96,
Intel MCS51
MXS296
(familia fabricados fabricados fabricados
8051)
8xC251
Nacional No No No No
COP8
Semiconductor fabricados fabricados fabricados fabricados

3.2.2 PIC 18F452

Este dispositivo se encarga de diversas tareas dentro del sistema desarrollado, se


encarga de sincronizar la recepción y envió de datos y de coordinar todas las tareas
que realiza el sistema mencionadas a continuación:

 Adquisición de datos.
 Visualización por pantalla de cristal líquido (LCD).
 Detección de datos introducidos en el teclado matricial.
 Ejecución de algoritmo de identificación por contraseña
 Convertidor ADC para sensores analógicos.
 Control de dispositivos XBee vía EUSART.

61
Se ha decidido utilizar el PIC18F452 por las características técnicas que posee ya
que consta de múltiples herramientas que son necesarias para la realización de este
proyecto entre ellas la cantidad de puertos que se tienen dentro del microcontrolador y
la capacidad para poder manejar dentro de un mismo puerto señales analógicas y
digitales, así mismo el fabricante provee a los usuarios de múltiples ejemplos para la
manipulación de diversas herramientas y funciones existentes dentro del dispositivo.
Las características importantes tomadas en cuenta para selección de este dispositivo
para su implantación dentro de este proyecto son las siguientes:

 Recursos contenidos dentro del PIC:

Memoria RAM suficiente para guardar los valores adquiridos de las señales
tanto de entrada como de salida, de tipo analógicos como digitales

Memoria EEPROM con posibilidad de escribir y borrar cuando se esté


ejecutando el programa.

Memoria de programa FLASH, con una cantidad suficiente para grabar un


programa extenso y posibilidad de borrar y volver a escribir, no estando en
tiempo real.

Un convertidor A/D, útil para la adquisición de datos de diversos sensores sin


la necesidad de utilizar convertidores ADC externos, asimismo se cuenta con
8 canales analógicos para la recepción de datos.

 Se dispone de tres puertos de entrada-salida, de 8 bits, uno de 6 bits y uno de 3 bits.

Comunicación con la pantalla de LCD por medio del puerto C y puerto D.


Monitoreo de sensores analógicos por el puerto A.
Entrada de teclado por medio del puerto B.
Envió y recepción de datos en forma serial por el Puerto C.

62
Uno de los factores más importantes para la selección de este dispositivo han sido
la cantidad de puertos que se tienen dentro del mismo dispositivo, ya que se hace uso
de varios de ellos al mismo tiempo por lo que era necesario utilizar un microcontrolador
con suficientes entradas y salidas para controlar diversos dispositivos, del mismo modo
quedando libres un puerto y algunos pines de entrada y salida, se incrementan las
posibilidades de ampliar las funciones del circuito en algún futuro o así mismo es
posible aumentar la memoria RAM. E importante conocer también lo antes mencionado
sobre la característica que se tiene en el dispositivo de poder multiplicar cuatro veces la
frecuencia de oscilación ya que se reducen interferencias generadas por osciladores de
más alta frecuencia.

En la siguente tabla s emuestran las caracteristicas mas relevantes del PIC18F452:

Tabla 3.3 Características del PIC18F45

PIC18F452
Memoria de programa FLASH (14 bits) 32K

Memoria de datos RAM (8 bits) 1536

Memoria de datos EEPROM 256

Interrupciones 18

Frecuencia de operación Hasta 40MHz


Puertos A, B, C, D, E
Puertos E/S

Timers 4

Modulo A/D de 10 bits 8 canales de entrada

Comunicación serie EUSART

63
3.3 Pantalla de LCD de 4 x16

El display utilizado es el modelo JHD539M2, es una pantalla de cristal líquido


estándar de 4 filas por 16 caracteres y el controlador que utiliza es un KS0066 de la
empresa Samsung. El display puede incorpora luz backlight mediante la activación de
los pines 15 y 16 a VCC y a GND respectivamente, así que el consumo que tiene
puede ser controlado si no se requiere de el uso de la luz de fondo. El dispositivo LCD
se controla a través del puerto C y D, donde tres bits son de control y cuatro son los bits
que se utilizan para enviar datos.

Bits de control

PIC
LCD
18F45
2
Bits de datos

Fig. 3.3 Esquema de conexión del PIC al LCD

Este dispositivo dispone de 16 pines de los cuales dos son para alimentación (VSS
y VDD), 1 para ajuste de contraste (V0), 3 para control (RS, R/W y E) y los restantes 8
para transmisión/recepción de datos (D0-D7). En la tabla 3. Se muestra el aspecto y
posición de los pines de un módulo LCD estándar. Existen también módulos LCD que
disponen de 14 pines, usualmente no contienen pines para la iluminación del LCD
mediante LEDs, comúnmente llamado “backlight” o luz de fondo como se menciona
anteriormente. La forma más sencilla de controlar los módulos LCD es a través de un
microcontrolador. Para ello se seleccionó el PIC18F452 conectado al módulo LCD
como se muestra en la figura 3.3.
Tabla 3.4 Pines de la LCD

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
Vss VDD V0 Rs R/W E DB0 DB1 DB2 DB3 DB4 DB5 DB6 DB7 LEDK LEDA

64
3.4 Teclado matricial de 4x4

El teclado incorpora 16 teclas, las cuales están conectadas de forma matricial, el


teclado funciona de la siguiente manera, todas las teclas se cuentan como activas
cuando en la entrada del PIC, este ve un 0. Por lo tanto la secuencia es la siguiente.
Primero se lee el estado de los primeros pines del puerto B, y se comprueba pin por pin
a ver si hay alguna a 0, en caso afirmativo el dispositivo identifica cual es y mediante
una rutina para convertir el dato a código ASCII se puede enviar al LCD y mostrar dicho
dato.

Fig. 3.4 Teclado matricial

Al hacer uso del teclado matricial se sabe que este estará conformado por
interruptores de tipo push-boton, por lo que cuando este se cierra no hace contacto
inmediatamente con el otro extremo que se conecta con el interruptor, sino que tarda un
instante de tiempo en milisegundos en hacerlo, esto genera un rebote eléctrico que
degenera en respuestas inesperadas por parte de nuestro sistema debido a que la
señal enviada oscila por un instante en un estado alto y bajo de manera intermitente.
Para corregir este problema es posible adicionar filtros al circuito para la atenuación de
este rebote, sin embargo se ha preferido realizar la corrección mediante software. Se
sabe que el tiempo de este rebote es aproximado de 30ms, por lo que si se aumenta

65
un retardo igual a esta cantidad de tiempo cada vez que una tecla es presionada,
entonces estaremos realizando la lectura de la tecla cuando esta envié la señal
deseada y no ruido eléctrico provocado por el rebote.

Fig. 3.5 Rebote generado al oprimir una tecla.

3.5 Comunicación mediante C.I. MAX 232

Este circuito es de gran utilidad cuando se desean ajustar voltajes de comunicación


serial a niveles TTL, en el caso de este trabajo es requerido ya que el modulo XBee
utilizado es manipulado de manera serial por lo que los datos recibidos son enviados
por medio del puerto USB mediante un adaptador RS-232 a USB, por tal motivo es
requerido este circuito que servirá como interfaz para comunicar a la computadora con
el modulo inalámbrico. Del mismo modo es necesario tener una interfaz para realizar
pruebas y configurar los parámetros mediante el software terminal o mediante el X-
CTU, software que provee el fabricante para la manipulación de los módulos por medio
del ordenador.

Fig. 3.6 Circuito integrado Max232

66
3.6 MPLAB C18

MPLAB C18 es un compilador de C, el cual produce código que puede ser


ejecutado por la familia de microcontroladores de Microchip PIC18XXXX. En nuestro
caso, la plataforma utiliza el PIC18f452. MPLAB C18 toma sentencias estándares de C,
como por ejemplo "while (a!=b)", y las convierte en código máquina del PIC18XXXX. El
código fuente es compilado en bloques de código de programa y datos, los cuales son
"enlazados" con otros bloques de código y datos, los cuales luego son puestos en
varias regiones de la memoria del microcontrolador PIC18XXXX; este proceso es
llamado "construir", posteriormente es generado un archivo con extensión .asm, dicho
archivo es el que se introduce dentro del microcontrolador por medio de un
programador.

El compilador C18 y sus herramientas, como el ensamblador o el enlazador, pueden


construir un archivo .HEX, el cual puede ser programado en un microcontrolador
PIC18XXXX, en la figura 3.7 se encuentra la captura en pantalla del compilador.

Fig. 3.7 Compilador MPLAB C18

67
3.7 Software X-CTU

Si bien es cierto que es posible utilizar Hyperteminal de Windows para configurar un


módulo XBee, existe un programa llamado X-CTU, el cual permite realizar estar
operaciones de manera más natural, fácil y rápida. El ejecutable se puede encontrar en
la página de MCI ingeniería o en la página oficial de MAXSTREAM quien es el
fabricante de los módulos XBee, mediante este software es posible configurar a los
módulos y realizar un testeo entre ellos para determinar si fueron configurados de
manera optima, del mismo modo posee 2 maneras de llevar a cabo la configuración,
una de ellas es de manera grafica y otra es mediante comandos AT, la primera es útil si
se realiza una conexión hacia una computadora o si la configuración será estática, sin
embargo si se requieren realizar cambios a la configuración de manera constante o si la
configuración la realizara un microcontrolador es necesario que sea por medio de
comandos AT.

Fig. 3.8 Software X-CTU, a la izquierda se encuentra la función de prueba de comunicación, a la


izquierda las opciones a configurar.

68
3.8 Componentes del coordinador

Los modulos Xbee requieren de una terminal para ser programados, comunmente se
utiliza hyperterminal o algún software similar, para ello es necesario conectar el
dispositivo a uno de los puertos de la computadora, para lo cual comunmente se utiliza
una interfase serial directa o mediante un adaptador para el puerto USB, así mismo son
necesarios una serie de comandos llamados AT quienes son una utilidad cuando se
requiere un mediador entre la terminal y el usuario. La empresa encargada de
desarrollar los modulos Xbee a desarrollado un software con una terminal para la
manipulación de comandos AT, y de igual manera dicho software propietario
denominado X-CTU maneja una interfaz grafica para la definición de parametros en los
modulos. Dicho software se describira mas adelante, ahora corresponde el turno de
describir los componentes necesarios para interactuar el modulo con la computadora,
dicho modulo servira como coordinador de los demas dispositvos que esten enlazados
a el.

Fig. 3.9 Componentes de la interzaz con la computadora

69
3.9 Diseño del sistema terminal inalambrico 1

ALIMENTACION ALIMENTACION
DE 5 v. DE 3.3 v.

Sensor de
Temperatura

PUERTO D
PUERTO A

PIC Tx/Rx
LCD PUERTO C
18F452

1 2 3 A

4 5 6 B

7 8 9 C
PUERTO B MODULO
* 0 # E
XBEE

Fig. 3.10 Diagrama a bloques del sistema terminal 1

El sistema terminal tiene una función de adquisición de datos mediante un sensor


de temperatura el cual envía el dato adquirido hacia el microcontrolador por uno de sus
puertos analógicos, la función de dicho bloque es monitorear temperatura a distancia de
manera inalámbrica por medio de módulos XBee, sin embargo el sistema se encarga
del mismo modo de controlar la apertura y cierre de accesos así como el encendido y
apagado de la ventilación o iluminación. Debido a lo anterior se requiere contar con un
menú que tenga el papel de interfaz de usuario con el sistema, de este modo se podrá
seleccionar mediante un menú la opción que el usuario desee, asimismo para dicha
tarea es de utilidad el colocar un teclado como periférico de entrada hacia el sistema.

70
3.9.1 Diseño del programa para el primer microcontrolador

El microcontrolador la interactuar con el usuario por medio de un teclado y una


pantalla de LCD cuenta con varios puertos de E/S que permiten controlar las funciones
de los dispositivos periféricos y los datos provenientes de manera analógica por parte
de sensores que pudiesen conectarse a él, de este mismo modo son coordinados por el
microcontrolador la transmisión y recepción de datos del modulo XBee que permiten
controlar las funciones implementadas en el hogar tal como el cierre y apertura de
puertas o encendido y apagado de ventilación.

3.9.1.1 Lectura del teclado

INICIO

Verificar se presiona
alguna tecla

No
¿Tecla
INICIO
presionada?

Si

Recorrer renglones para


encontrar la columna
donde se oprimió la tecla.

Convertir en código
ASCII la tecla oprimida.

Fig. 3.11 Diagra de flujo para detectar tecla oprimida en el teclado.

Para esta tarea es utilizado por completo el puerto B, dividido en dos partes, la
primera de ellas formada por 4 bits enfocados a enviar hacia las filas del teclado un
dato que permite identificar mas a delante a la tecla oprimida, la segunda parte del

71
puerto igualmente formada por 4 bits reconoce si ha sido enviado por cualquiera de los
pines un dato diferente de 1, esto es porque inicialmente se envía solo 1’s y un solo
cero hacia las filas y se varia la posición de dicho cero de manera constante. Los datos
enviados hacia las filas para reconocer a la tecla oprimida son llamadas dentro del
programa “código de fila”, y se enuncian a continuación:

Tabla 3.5 Asignación de código para filas del teclado

Numero de Fila Código asignado (hexadecimal)


1 FEh
2 FDh
3 FBh
4 F7h

Una vez asignados los valores a enviar para las filas se rastrea en las columnas de
una en una hasta encontrar aquella que posea un valor de cero a su entrada, esto
significara que se ha encontrado la tecla oprimida, dicho proceso se repite una y otra
vez en cada una de las filas y de manera continua mientras se mande a llamar la
función escrita para lectura de teclado. Por último cuando la tecla oprimida es
encontrada se procede a cargar una variable con un dato en hexadecimal asignado
conforme a cada tecla, de este modo tendremos la lectura de un valor independiente y
diferente en cada caso, si se desea enviar caracteres hacia la LCD o hacia el modulo
XBee es necesario realizar la equivalencia con el código ASCII, en la siguiente tabla se
muestran los datos asignados a cada tecla:

Tabla 3.6 Valores asignados a cada tecla y su equivalencia en ASCII

0 1 2 3 4 5 6 7 8 9 A B C D E F
Tecla

Valor 00h 01h 02h 03h 04h 05h 06h 07h 08h 09h 0Ah 0Bh 0Ch 0Dh 0Eh 0Fh
asignado

código 43h 30h 31h 32h 34h 35h 36h 37h 39h 41h 33h 37h 42h 46h 45h 44h
ASCII

72
3.9.1.2 Menú mostradopor la pantalla de LCD

INICIO

Lectura del teclado

01h? 02h? 03h? 04h?

ACCESOS VENTILACION TEMPERATURA ILUMINACIÓN

FIN

Fig. 3.12 Diagrama de flujo del menú principal mostrado por la pantalla de LCD

El menú se conforma por cuatro opciones principales las cuales contienen a su vez
otro submenú y opciones para seleccionar la acción deseada tal como encender y
apagar la iluminación en una habitación en específico, cada opción contienen el código
parara ejecutar las instrucciones pertinentes a el rubro seleccionado.

Cabe señalar que para efectos de orden se ha provisto realizar un código fuente por
cada una de las opciones, dicho código fuente es introducido dentro de una función en
lenguaje C, la anterior función es llamada cada vez que se decide accesar a una opción
y es entonces cuando se ejecutan. Para ingresar a las opciones es utilizada una
sentencia de tipo “switch” en la cual se introduce la función construida con todas sus
instrucciones.

73
ACCESOS

Lectura del
teclado

01h? 02h? 03h? 04h?

ENTRADA GARAGE CAJA BODEGA


FUERTE

FIN

Fig. 3.13 Diagrama de flujo de la opción ACCESOS

ENTRADA, GARAGE
CAJA FUERTE, BODEGA

Lectura del teclado

01h? 02h? 03h? 04h?

A B C D

¿01h? ¿01h? ¿01h? ¿01h?

Cerrar Cerrar Cerrar Cerrar


Abrir Abrir Abrir Abrir

FIN

Fig. 3.14 Diagrama de flujo para Entrada

74
TEMPERATURA

Seleccionar canal
analógico
VENTILACION

Convertir dato
analógico a digital
Lectura del teclado

Verificar si se ha
finalizado la conversión
OFF ¿01h?

¿Finalizo?
ON

Leer canal ADC


FIN

ºC= Valor leído por


(5/255)*100

FIN

Fig. 3.15 Diagramas de flujo para lectura de temperatura y control de la ventilación.

3.10 Diseño del sistema terminal inalámbrico 2

El sistema terminal inalámbrico 2 se enfoca al control a distancia de la ventilación y


de la iluminación, a diferencia del anterior este se encargara de emitir datos y desplegar
las acciones realizadas por medio de la pantalla de LCD, todo es regulado en este nodo
por una cadena de 8 bits que simbolizan cada uno una acción dentro de este nodo
terminal. El conjunto de datos es enviado y recibido por los módulos inalámbricos XBee.
Los cambios se van desplegando por medio de un menú que tiene el papel de interfaz

75
de usuario con el sistema, de este modo se podrá seleccionar mediante un menú
programado posteriormente desde Visual Basic por medio de el ordenador, asimismo
con dicha tarea se demuestra que se pueden controlar de forma remota diversas
acciones por medio de módulos inalámbricos XBee.

ALIMENTACIO ALIMENTACIO
N DE 5 v. N DE 3.3 v.

PUERTO Tx/Rx
D

PIC
PUERTO C
18F45
LCD
2

PUERTO
B

MODULO
PUERTO XBEE
A

Fig. 3.16 Diagrama a bloques del sistema terminal 2.

Las acciones efectuadas por este nodo son desplegadas en la pantalla, el menú
principal es: Control de iluminación, Control de ventilación y la realización de un test de
conectividad, para cada una de estas opciones se ha designado un código en
hexadecimal que lo identifica inmiscuido en una función dentro del programa del
microcontrolador. Asimismo se requiere del envió de un pulso que active cada uno de
los dispositivos terminales, en este caso ventiladores o lámparas, por ello es que se
encuentran libres 2 puertos del microcontrolador, por medio de los cuales se efectúa el
envió del pulso anteriormente mencionado.

76
ILUMINACIÓN

Lectura de los
datos recibidos por
el modulo XBee

6Bh? 6Ch? 6Dh? 70h? 71h? 73h?

Lámpara 1 Lámpara 2 Lámpara 3 Lámpara 4 Lámpara 5 Lámpara 6

FIN

Fig. 3.17 Diagrama de flijo para el encendido y apagado de lamparas.

Lámpara N

Lectura de los datos


recibidos por el modulo
XBee

OFF ¿6Bh?

ON

Enviar 0’s
Enviar 1’s

FIN

Fig. 3.18 Diagrama de flijo para el encendido y apagado de lamparas.

77
TEMPERATURA TEST

Inicializar USART para Inicializar USART para


recepción de datos. recepción de datos.

Esperar a que finalice Esperar a que finalice


la transmisión. la transmisión.

Leer el dato del buffer de Leer el dato del buffer de


la USART. la USART.

¿Finalizo? ¿Finalizo?

Desplegar en la
pantalla de LCD. ¿70h?

FIN
Enviar por la USART
un 50h

FIN

Fig. 3.19 Diagramas de flujo para la recepción de temperatura y test de conectividad.

78
VENTILACIÓN

Lectura de los
datos recibidos por
el modulo XBee

41h? 42h? 43h? 44h?

Ventilador 1 Ventilador 2 Ventilador 3 Ventilador 4

FIN

Fig. 3.20 Diagrama de flijo para el encendido y apagado de ventiladores.

Ventilador N

Lectura de los datos


recibidos por el modulo
XBee

OFF ¿41h?

ON

Enviar 0’s
Enviar 1’s

FIN

Fig. 3.21 Diagrama de flijo para el encendido y apagado de lamparas.

79
3.11 Acoplamiento óptico entre un sistema digital y una etapa de potencia

El microcontrolador realiza diversas operaciones de control, mismas que


deben enviadas hacia una etapa de potencia, esto por medio dispositivos como
pueden ser los tiristores ya sea triacs, scr, etc. para actuar sobre cargas resistivas
o inductivas, tal es el caso de los sistemas de iluminación, o en el control de la
velocidad de motores, etc. Al manejar potencia, es decir la manipulación de
corrientes altas, es necesario tener en cuenta la seguridad eléctrica para la
operación y protección del microcontrolador utilizado.

La relación entre ambas etapas (la digital y la de potencia) se hace por medio de
un acoplamiento que haga posible aislar eléctricamente los dos sistemas. Esto se logra
con los dispositivos llamados optoacopladores. La figura 3.22 muestra un acoplamiento
óptico y, al mismo tiempo, un aislamiento eléctrico. Por ello también reciben el nombre
de optoaisladores. El acoplamiento se efectúa en el rango del espectro infrarrojo a partir
de dispositivos emisores de luz, comúnmente LED’s, estos realizan la función de un
emisor y por medio de dispositivos optodetectores se implementan los receptores.

Fig. 3.22 Configuración De Un Optoacoplador.

80
Fig. 3.23 Figura y simbolo de un TRIAC

3.12 Puente H (L293B)

Los motores de C.D. Utilizados comúnmente en domótica requieren de cierta


corriente a través de sus bobinas, en el caso de este trabajo son ejemplificados por
medio de ventiladores que contienen motores de corriente directa. Dicha corriente es
muy elevada con respecto a lo que un microcontrolador puede soportar. Dado lo
anterior, es necesario utilizar un puente H por elemento inductivo si fuese el caso
de motores con más de uno de estos elementos. Un puente H es un dispositivo
capaz de soportar el flujo bidireccional de corriente invertida.

El circuito integrado para el puente “H” que se ocupó para el proyecto es un


LM293B y a partir de 2.3 hasta 7 volts se detecta un nivel alto, es decir, un 1 lógico y
un estado bajo, es decir, un 0 lógico, desde 0 hasta 1.5 volts .

Fig. 3.24 Diagrama esquemático para LM293B.

81
CAPITULO IV

IMPLEMENTACIÓN
DEL PROTOTIPO

82
4.1 Propuesta de implementación en una casa

Este proyecto se realiza con la intensión de ser implementado en una casa la cual
tuviera un alto sistema de seguridad en sus accesos donde solo gente autorizada
pudiese entrar. Asimismo se pretende dar un cierto grado de comodidad que en una
casa se debe que tener; agregando diversas funciones que pudieran ser
controladas de forma remota, o bien, que la casa se pudiera controlar, desde
abrir una puerta hasta encender un foco por comunicación inalámbrica. Se ha
propuesto la organización de diversas habitaciones y lugares dentro de una casa donde
sería posible la implementación del proyecto, esto considerando los elementos
principales que todo hogar tiene. (Véase figura 4.1)

Fig. 4.1 Plano de la casa propuesta para la implementación.

83
Fig. 4.2 Diseño en 3D de la Casa propuesta para la implementación.

Esta casa cuenta con los siguientes elementos:

 Puerta principal y puerta para la cochera, puerta para la recamara 1 y 2, puerta para
el baño y la cocina.
 Cochera, 2 recamaras, baño, cocina, comedor.
 Una sala comedor.
 2 recamaras y un baño .
 Un estudio dentro de la sala comedor.
 Una puerta a la cochera.

Cada una de las estancias cuenta con una lámpara incandescente, es decir, la casa
cuenta con 6 lámparas en total y cuatro de las estancias se encontrara ventilada. La
casa cuenta con un sensor de temperatura que monitorea la misma en todo momento.
La casa a escala se puede controlar por un sistema de comunicación inalámbrica.

84
4.2 Configuración de los modulos XBee

Para comunicar el dispositivo ya sea para realizar pruebas con una computadora o
para utilizarla como interfase con un nodo coordinador se utiliza un circuito mediante el
cual se hace uso de la comunicaion serial, para lo anteriormente descrito se utiliza un
circuito integrado que se distribuye comercialmente con el nombre de MAX232, la tarea
de este elemento es transformar señales de tipo digital en rangos TTL a valores que
son reconocidos por las interfaces de tipo RS-232. Es posible hacer uso del puerto
serial de las computadoras para conectarse al circuito integrado, sin embargo resulta
mas practico utulizar un cable adaptador USB-RS-232, esto por el motivo principal de
que todas las computadoras modernas manejan mas este puerto. A si mismo para
comunicar el dispositivo mediante un microcontrolador es necesario manejar
comunicación serial por lo que en la selección del microcontrolador que manejara datos
enviados por el dispositivo coordinador tendra que tomarse en cuanta esta
característica.

Fig. 4.3 Diagrama esquematico para el coordinador y pruebas.

85
Fig. 4.4 Circuito Impreso del coordinador

4.2.1 Configuracion con el software X-CTU

La figura 4.5 mustra la pantalla pruncipal del software XCT-U, cuando el programa
es ejecutado se selecciona de manera predeterminada la pestaña “PC Settings”, en ella
se selecciona el puerto por el cual sera conectado el modulo y la tasa de transmision en
baudios a la cual el modulo envia y recibe datos, dicha tasa de transmision es
seleccionable entre 1200 y 230400 bps, para este proyecto se ha optado por utilizar
9600 bps.

Fig. 4.5 Captura en pantalla de la ventana principal del software XCT-U

86
Para determinar si la conexión de él modulo XBee con la computadora mediante el
circuito mostrado en la figura 4.4 es realizada de manera correcta se utiliza una función
incluida dentro del software llamada “Test/Query”. Una vez realizada la prueba el
programa arroja una ventana indicando que la conexión con el modulo es realizada de
modo exitoso, en caso contrario se muestra una ventana con un mensaje que indicara
que la conexión de la computadora con el dispositivo ha sido fallida, ambos casos se
muestran en la figura 4.5.

Fig. 4.6 A la izquierda se muestra la caprura en pantlla de una comunicación exitosa, a la derecha se
muestra el resultado de una comunicación fallida.

El dispositivo coordinador será el elemento central dentro de la red, y este se


comunicara directamente con una computadora y un software con interfaz con el
usuario, dicho dispositivo se comunicara con módulos XBee configurados como
dispositivos finales, los cuales pueden enviar datos al nodo central, sin embargo en este
caso no se encuentran configurados para enviar mensajes entre ellos directamente sin
pasar antes por el nodo central. Para que se la comunicación antes mencionada es
imprescindible que sea configurada una dirección de 16 bits que representa el
dispositivo con el que se comunicara el nodo central, del mismo modo se configura la

87
dirección propia con la cual otros módulos pueden intercambiar datos. La figura 4.7
muestra la forma de configurar al modulo.

Fig. 4.7 Configuracion del modulo central.

Como se observa en la figura 4.7 las direcciones se introducen mediante comandos


AT, para accesar a este modo lo primero que se ha hecho es colocar “+++” con este
comando se indica al modulo que se introducirán una serie de comandos, al primer
comando mostrado es “ATMY”, este tiene como consecuencia la introducción hacia el
modulo de la dirección propia del modulo, para este caso se ah dispuesto que sea cero.
El comando siguiente es “ATDL”, el cual introduce la dirección de un modulo con el cual
se mantendrá una comunicación saliente del nodo central. Cabe señalar que no en
todos los casos es necesario colocar una dirección de destino, ya que el nodo central
en ocasiones solo se encarga de recolectar datos y no de enviar, en estos casos la
dirección de destino para el coordinador sale sobrando ya que no es de utilidad. Todas
las instrucciones son introducidas en la pestaña “terminal”, y son almacenadas en los

88
módulos de forma permanente hasta que se sobrescriban, la figura 4.8 muestra la
pestaña “Modem Configuration” en la cual se puede ver todos los cambios realizados.

Fig. 4.8 Elementos configurados dentro de los modulos XBee

4.3 Componentes del sistema terminal 1

Como se había mencionado con anterioridad, la construcción del nodo terminal


tiene como objetivo controlar funcione de manera remota dentro de una casa domótica,
el objetivo es que el usuario pueda manipularlas y observar el estado fácilmente, por
tal motivo se cuenta dentro del circuito con un apantalla de LCD que muestra las
acciones realizadas que se ejecutan en base a lo que el usuario desea y del mismo
modo introduce mediante un teclado. En el capitulo anterior se describe a bloques el
diagrama mostrado en la figura 4.9, en la cual se muestran las conexiones entre los
dispositivos utilizados en el nodo terminal.

89
Fig. 4.9 Diagrama esquematico del nodo terminal

En el diagrama esquemático de la figura 4.9 se observa que el corazón de este


sistema es un microcontrolador, quien se encarga de coordinar todos los eventos que
ocurren de manera remota, la función de dicho sistema es controlar la apertura y cierre
de accesos, encendido y apagado de la ventilación, monitoreo de temperatura y el
control de la iluminación. Para el monitoreo de temperatura se ha introducido en el
sistema un sensor LM35, el cual tiene una variación de 10mV /ºC, en base a esta
variación se ha diseñado el programa dentro del microcontrolador el cual nos da una
lectura en grados Celsius.

Cabe señalar que se ha procurado que los componentes de Hardware sean los
menos posibles, por tal motivo se ha hecho uso del sensor LM35 directamente en su
forma analógica conectándolo con un puerto analógico del microcontrolador. Para hacer
lectura del sensor de temperatura es necesario hacer uso de las funciones de
conversión ADC del PIC18F452.

90
Fig. 4.10 Circuito Impreso del nodo terminal.

En la figura 4.10 se muestra el circuito impreso y los elementos montados sobre ella
y en la figura 4.11 se ilustra la manera en que se encuentra el circuito del noto terminal
después de insertar todos sus componentes, cabe señalar que para efectos prácticos
se ha dispuesto de reguladores de voltaje de 5 v. y 3.3 v. con el objetivo de unificar las
fuentes en una sola para todos los dispositivos.

Fig. 4.11 Circuiti impreso del nodo terminal con todos sus componentes.

91
4.3.1 Configuración con el software XCT-U

En la figura 4.12 se muestra la configuración de la dirección del nodo central, cuya


dirección de destino se propuso que fuera “1234”, la dirección antes mencionada
corresponderá ahora a la dirección del dispositivo que se encuentra funcionando en el
nodo terminal, en este caso la dirección de destino es aquella que hemos configurado
en la figura 4.7 como dirección de origen, los comandos introducidos para llevar a cabo
la configuración anterior se muestran en la misma figura. Cabe señalar que cada vez
que se introduce un comando y este es recibido correctamente por el dispositivo se
mostrara un “OK” como respuesta, en caso contrario no existirá dicho resultado.

Fig. 4.12 Configuracion del modulo XBee del nodo terminal 1.

92
4.4 Componentes del sistema terminal 2

El nodo terminal 2 es del mismo modo que el anterior controlado por el nodo
principal tiene como objetivo controlar funcione de manera remota dentro de una casa
domótica, la finalidad es que el usuario pueda manipularlas y observar el estado
fácilmente, por tal motivo se cuenta dentro del circuito con un apantalla de LCD que
muestra las acciones realizadas que se ejecutan en base a la acción ejecutada, a
diferencia del anterior las funciones son seleccionadas desde el nodo principal y no con
un teclado, así mismo son emitidos pulsos que activan o desactivan la iluminación y la
ventilación. En la figura 4.13 se muestra el diagrama esquemático del nodo terminal 2
donde el teclado no es requerido.

Fig. 4.13 Diagrama Esquematico del nodo terminal 2.

93
En la figura 4.14 se aprecia el circuito impreso con sus elementos montados sobre
ella se ilustra la manera en que se encuentra el circuito del noto terminal 2 después de
insertar todos sus componentes, del mismo modo que al nodo terminal 1 ha sido
necesario para efectos prácticos disponer de reguladores de voltaje de 5 v. y 3.3 v. con
el objetivo de unificar las fuentes en una sola para todos los dispositivos. Asimismo se
observa la ausencia de un teclado el cual no es necesario para seleccionar la acción a
realizar.

Fig. 4.14 Circuito impreso del nodo terminal 2.

4.4.1 Configuración con el software XCT-U

Para la configuración del modulo XBee de este nodo es necesario tomar en cuenta
los mismos parámetros que los dos anteriores, del mismo modo es necesario tener una
dirección de origen y una dirección destino, la dirección destino se conservara igual que
la del nodo terminal 1, esto en base a que el nodo principal es el mismo destino para
ambos nodos principales. Para el caso de la dirección propia del dispositivo XBee en
cuestión se ha propuesto “2222”, la dirección antes mencionada corresponderá ahora a
la dirección del dispositivo que se encuentra funcionando en el nodo terminal, en este
94
caso la dirección de destino es aquella que hemos configurado en la figura 4.7 como
dirección de origen. Para este nodo la dirección destino es la dirección “0”, los
comandos introducidos para llevar a cabo la configuración anterior se muestran en la
figura 4.15. Cabe señalar que cada vez que se introduce un comando y este es recibido
correctamente por el dispositivo se mostrara un “OK” como respuesta, en caso contrario
no existirá dicho resultado.

El nodo terminal dos se encargara de enviar datos hacia el nodo principal, sin
embargo, en nodo terminal 1 también podrá enviar datos hacia el nodo terminal 2 a
través del nodo principal, esto es debido a que los tres dispositivos XBee se
encontraran relacionados por medio de las direcciones de destino y de origen.

Fig. 4.15 Configuracion del modulo XBee para el nodo terminal 2.

95
4.5 Componentes del acoplamiento óptico entre en sistema digital y la etapa de
potencia

El principal motivo para llevar a cabo acoplamiento óptico y aislamiento


eléctrico es por protección del microcontrolador ya que si en algún momento
ocurre un corto en la etapa de potencia, o cualquier otro tipo de anomalía
eléctrica, el optoacoplador protege a todo el circuito digital.

Fig. 4.16 Montaje Estándar Básico Con Lógica Digital Positiva.

La figura 4.17 presentará la configuración estándar empleada para hacer


acoplamiento óptico entre sistemas digitales y etapas de potencia. El montaje requerido
se selecciona de acuerdo con las características del sistema a estudiar.

Fig. 4.17 Circuito utilizado para la manipulación de elementos de C.A.

96
4.6 Manipulación de motores de C.A. con C.I. L293B

El movimiento de los ventiladores esta determinado según las instrucciones que


envié el microcontrolador, así, cuando envíe un nivel alto en la pata número 2
del elemento LM293B y al mismo tiempo envíe un nivel bajo a la pata número 7 del
mismo circuito integrado, este componente enviará una señal a un motor desde la pata
3 y 6, el cual hará girar un motor. Hay 4 ventiladores que se activan de acuerdo a la
salida entregada por parte del microcontrolador.

Fig. 4.18 Diagrama de conexión para el giro en un solo sentido del L293B

Fig. 4.19 Conexión al microcontrolador del L293B

97
4.7 La transmision serial del PIC 18F452

Fig. 4.20 Se muestra la inicialización del modo de transmision serial.

La figura 4.20 nos muestra en con la función openUSART la inicialización del


modo de transmision siincrona del microcontrolador. Para el presente trabajo se ha
escogido realizar el envio de datos en seríe ya que es posible manipular mas facilmente
el modulo XBee de este modo, ya que unicamente utilziamos 2 pines del mimo
facilitando enormemete la interconexión entre el microcontrolador y el modulo
inalambrico.

Para la comunicación serial es necesario agregar la librería usart.h a las librerías


manipuladas por el proyecto. Con esta librería se configura el modo de transmisión y
recepción serie del microcontrolador 18F452.

98
Dentro del la función openUSART se configuran parámetros relacionados con el
modo de transmisión de datos que el microcontrolador efectuara, los puntos
importantes que se tienen que configurar son la habilitación de la transmisión o la
recepción, en el caso de este proyecto se ha seleccionado ambos, de este modo el
microcontrolador se encontrara listo para realizar un intercambio de información.

Otro parámetro de gran importancia es la configuración del modo de transmisión ya


sea que este sea síncrono o asíncrono, para nuestro caso se ha seleccionado el
asíncrono debido a que el contenido de información que se transmite no requiere de
mayores atributos, esto es en base a que los bytes intercambiados solo tienen el
propósito de transportar información relativa a sensores y señales para activar o
desactivar dispositivos.

Para la configuración de los parámetros es necesario revisar el manual de usuario


del compilador, el cual nos provee de las cadenas que reconoce la función
openUSART, en base a las cuales se varían los parámetros antes mencionados. La
tabla 8 muestra las cadenas que reconoce la función openUSART.

Tabla 4.1 Caracteres utilizados para la inicialización de la transmisión de datos del modo serial

CADENA DESCRIPCION
USART_TX_INT_ON Activar transmisión de datos.
USART_TX_INT_OFF Desactivar transmisión de datos.
USART_RX_INT_ON Activar recepción de datos.
USART_RX_INT_OFF Desactivar recepción de datos.
USART_ASYNCH_MODE Activar transmisión asíncrona.
USART_SYNCH_MODE Activar transmisión síncrona.
USART_EIGHT_BIT Utilizar 8 para cada trama.
USART_SINGLE_RX Tx / Rx datos con una separación de tiempo.
USART_CONT_RX Transmitir y recibir datos de forma continua.
USART_BRGH_HIGH Alta tasa de transición.
USART_BRGH_LOW Baja tasa de trasmisión.

99
4.8 Programación del primer microcontrolador

El primer microcontrolador se encargara de controlar los accesos de manera remota


para lo cual es necesario que se cuente con una contraseña de entrada que permita
aumentar el nivel de seguridad en la permisión o restricción de los accesos al recinto.
Otra opción es el control de ventilación e iluminación de manera remota. El
microcontrolador se encargara de administrar el envió de los bytes que identifican a
cada una de las acciones antes mencionadas, y del mismo modo este microcontrolador
utiliza un sensor de temperatura LM35 para el monitoreo de la misma. En la figura 4.21
se observan las declaraciones de las funciones a ejecutar y las cadenas que
desplegara la pantalla de LCD.

Fig. 4.21 Captura en pantalla del codigo fuente y la declaración de las cadenas para el despliegue del
menu principal

100
4.8.1 Control de accesos

El uso de la transmisión serial se utiliza para enviar y recibir datos mediante la


computadora a los módulos XBee, los cuales se retransmiten y finalmente un modulo
receptor envía de nuevo mediante transmisión serial hacia el microcontrolador, se ha
definido un valor determinado en hexadecimal para cada una de las acciones
realizadas. Para el control de accesos en el programa diseñado se ha hecho uso de
sentencias “Switch”, en la figura 4.22 se observa parte de dicha sentencia en la cual se
ve la estructura de esta. Los bytes enviados son reconocidos por el nodo principal
conectado a la computadora y de este modo se reconoce la acción requerida.

Fig. 4.22 Sentencia Switch para la apertura y cierre de la entrada principal.

101
Para cada acción requerida dentro de la función de “ACCESOS” se tiene
especificado un código diferente que fue asignado para diferenciarlos entre sí por parte
del nodo terminal, la tabla 9, muestra dichos valores.

Tabla 4.2 Valores hexadecimales enviados para los accesos.

VALOR HEXADECIMAL ACCIÓN


61h Abrir la “Entrada Principal”
62h Cerrar la “Entrada Principal”
63h Abrir la puerta de la “Recamara1”
64h Cerrar la puerta de la “Recamara1”
65h Abrir la puerta de la “Recamara 2”
66h Crrar la puerta de la “Recamara 2”
67h Abrir la puerta del “Garage”
68h Cerrar la Puerta del “Garage”

4.8.2 Control de Ventilación

Para el control de ventilación se ha decidido ejemplificar con el control de 4


ventiladores colocados en la sala, la recamara 1, la recamara 2 y la cocina. En el
software se ejemplifican dichas acciones mediante el despliegue de imágenes como se
explicara más adelante.
Tabla 4.3 Valores hexadecimales enviados para la ventilación.

VALOR HEXADECIMAL ACCIÓN


41h Activar el Ventilador de “la Sala 1”
42h Desacticar el Ventilador de “la Sala 1”
43h Activar el Ventilador de “la Recamara 1”
44h Desacticar el Ventilador de “la Recamara 1”
45h Activar el Ventilador de “la Recamara 2”
46h Desacticar el Ventilador de “la Recamara 2”
47h Activar el Ventilador de “la Cocina”
48h Desacticar el Ventilador de “la Cocina”

102
En la tabla 10 muestra los valores asignados para el caso de el control de la
ventilación, del mismo modo que en el caso del control de accesos se hace uso de
sentencias “Switch” las cuales contienen las instrucciones a realizar en cada uno de
sus casos contenidos en ella, cada caso es seleccionado mediante la identificación de
caracteres enviados por medio del teclado matricial. Para el despliegue del estado “ON”
y “OFF” se ha introducido un lapso de tiempo para borrar y volver a escribir el estado,
esto solo para fines estéticos, ya que se decidió que el estado parpadeara cuando era
cambiado, de este modo es más apreciable el cambio del mismo.

Fig. 4.23 Sentencia Switch para el encendido y apagado de la ventilación.

103
4.8.3 Monitoreo de temperatura

Fig. 4.24 Rutina de adrquisicion de datos de temperatura.

Para el monitoreo de temperatura se ha hecho uso de un canal analógico del


microcontrolador, esto con la finalidad de no realizar un circuito externo, por lo cual al
rutina mostrada en la figura 4.24 contiene las instrucciones pertinentes para la lectura
de un dato analógico, debido a que los datos de temperatura se deben monitorear de
manera constante se ha introducido la rutina dentro de un bucle que permite realizar
lecturas ininterrumpidas sobre la temperatura, para realizar el envío de la información
tanto de unidades como de decimales de una manera más optima se unen ambas en
una sola cifra, de esta forma se envían solamente datos enteros, la conversión se
realiza una vez que la información ha llegado.

104
4.8.4 Control de iluminación

Fig. 4.25 Control de iluminación

Para el control de iluminación se han diseñado dos formas de hacerlo, una de ellas
es la presente. Esta envía datos desde el nodo terminal 1 hacia el nodo principal,
enseguida este retransmitirá la instrucción hacia el nodo terminal 2 para finalmente
emitir la señal que activara al dispositivo luminoso. La segunda es el control directo
mediante el software diseñado en Visual Basic. Se ha dispuesto manipular en
diferentes habitaciones la iluminación, para lo cual se requiere del envío de un código
que diferencie el encendido y el apagado entre dichas habitaciones. Para la emisión de
este conjunto de bytes e han propuesto diferentes bytes en hexadecimal para cada
caso. La tabla 11 muestra los diferentes conjuntos de bits para cada caso.

105
Tabla 4.4 Valores correspondiestes al control de iluminación

VALOR HEXADECIMAL ACCIÓN


6Bh Activar la Iluminación del “Garage”
6Ch Desactivar la Iluminación del “Garage”
6Dh Activar la Iluminación de la “Recamara 1”
6Eh Desactivar la Iluminación de la “Recamara 1”
6Fh Activar la Iluminación de la “Recamara 2”
70h Desactivar la Iluminación de la “Recamara 2”
71h Activar la Iluminación de la “Cocina”
72h Desactivar la Iluminación de la “Cocina”

4.9 Programación del 2º microcontrolador

El segundo microcontrolador tiene la función de recibir e interpretar datos


provenientes del nodo principal a través del modulo XBee conectado directamente al
nodo terminal 2. En este caso el microcontrolador se conecta con el modulo de
transmisión inalámbrica por medio de la USART, en ese caso las funciones son
principalmente implementadas para la recepción de datos ya que este nodo es
destinado a demostrar que la información puede ser enviada y recibida por medio de
tecnología ZigBee en este caso utilizando módulos XBee.

Fig. 4.26 Cadenas mostradas en el menú del nodo terminal 2.

106
4.9.1 Monitoreo de temperatura

Fig. 4.27 Monitoreo de temperatura en el nodo terminal 2.

El nodo terminal 2 recibe la temperatura reenviada por medio del software diseñado
en Visual Basic, cada vez que el estado cambia en el nodo terminal 1 se envía a la
interfaz grafica, está a su vez la reenvía al nodo terminal 2. La particularidad de esta
aplicación es demostrar que los valores sensados de algún parámetro pueden ser
vistos de forma remota desde cualquier punto conectado dentro de la red implementada
mediante módulos XBee. Dentro de la programación propia del microcontrolador se ha
separado el dato en dos partes, una corresponde a las unidades y otra a los decimales,
lo anterior para que pueda ser desplegado de forma clara por la pantalla de LCD.

107
4.9.2 Control de ventilación e iluminacion

Fig. 4.28 Envio de datos para control de ventilación.

Para el control de ventilación e iluminación igualmente se ha previsto el envió de un


código previamente predeterminado que indica los cambios a realizarse en este rubro.
La figura 4.28 muestra la forma en la que se envían dichos valores hexadecimales,
existe una rutina del mismo tipo para cada uno de los ventiladores y lámparas a
controlar.

108
4.10 Desarrollo de la interfaz grfáfica

La interfaz grafica es propiamente una interfaz de tipo hombre –máquina, que


tiene como objetivo crear un mecanismo que permita a un ser humano interactuar con
los dispositivos remotos para así determinar el estado de los mismos y conocer los
cambios registrados en variables físicas tales como temperatura encendido y apagado
de la ventilación o la apertura y cierre de puertas.

4.10.1 Descripción de la aplicación

Como ya se ha mencionado el softwae es indispensable para interactuar con el


usuario, debidoa esto dicha interfaz tiene como host a una computadora por medio de
la cual se puede controlar el sistema de dispositivos remotos, asi mismo se motitorean
los mismos, esta aplizacion se encarga de controlar los puertos sreales o USB del
ordenador , lo anterior con el firme objetovo de enviar informacion necesaria al modulo
XBee, mismo qu a su vez se encargara de enviar informacion al microcontrolador
18F452 quien aminstra las funciones programadas, y se ubica en las subrutinas
programadas en el.

Para la elaboracion de la interfaz hombre maquina se ha seleccionado el entorno


gráfico de Visual Basic 6 ya que tiene la posibilidad de incluir un entorno grafico más
amigable, asi mismo es posible controlar los puertos de la computadora, mismos que
son escenciales para poder diseñar unsistema de adquisicion de datos, del mismo
modo con el control de puertos es posible realizar interación con hardware externo: El
entorno de desarrollo de Visual Basic 6 provee una sere de funciones que permiten
anipular de unamanera mas optima los parametross de los puertos tales como la tasa
de transmision y el tamaño de la trama de bots a recibir. A continuación se describe el
modo de funcionamiento de la interfaz grafica y la descripcion de las ventanas que se
han desarrollado para cada aplicación.

109
4.10.2 Descripción de la interfaz gráfica

1
6 7
5
4
10 11
8 9
2

3
15
12 13 14

Fig. 4.29 Captura en pantalla de la interfaz gráfica

En la figura 4.31 se observa la ventana principal como se puede observar, esta


pantalla invita al usuario a escoger un puerto USB disponible para la comunicación,
la persona que utiliza el software es entonces capaz de elegir por lo tanto el puerto
deseado colocando el cursor sobre el mismo. Cuando se realiza esta acción, es
necesario pulsar el botón “conectar”, con lo anterior el programa habilitará el puerto
escogido y lo abrirá, teniéndolo listo tanto para la transmisión como para la
recepción. Una vez determinado el puerto de comunicaciones, se puede observar
el Menú del Sistema, el cual se encuentra constituido de: “Iluminación”,
“Temperatura”, “Ventilación” y un botón de “Test de Conectividad” que sirve para
realizar una prueba que determine si los módulos envían y reciben datos de manera
correcta. La pantalla principal también cuenta con recuadros donde se muestra el
estado de los accesos y de la ventilación mediante imágenes en movimiento.

110
Los diferentes elementos que conforman la pantalla principal de la interfaz grafica se
muestran en la siguientetabla:
Tabla 4.5 Descripción de los elementos de la interfaz gráfica.

# NOMBRE DESCRIPCIÓN

1 No. De puerto Selecciona el numero de puerto a utilizar dentro de la


computadora.
2 Conectar Habilita el puerto seleccionado para comenzar a enviar y
recibir datos.
3 Desconectar Cierra el puerto seleccionado.

4 Iluminación Abre el panel de control para la iluminación.

5 Temperatura Abre la ventana de monitoreo de temperatura.

6 Ventilación Abre la ventana de control de ventilación.

7 Test de Abre la ventana para realizar prueba de conectividad con


conectividad el modulo XBee.
8 Entrada Principal Muestra el estado mediante una imagen.

9 Puerta 1 Muestra el estado mediante una imagen.

10 Puerta2 Muestra el estado mediante una imagen.

11 Garage Muestra el estado mediante una imagen.

12 Ventilación en Muestra el estado mediante una imagen.


habitación 1
13 Ventilación en Muestra el estado mediante una imagen.
habitación 2
14 Ventlación en la Muestra el estado mediante una imagen.
sala
15 Ventilación en la Muestra el estado mediante una imagen.
cocina

La selección del puerto se ha colocado para poder migrar a algún otro disponible si
fuese necesario debido a que muchos otros dispositivos utilizan este puerto y por lo
tanto es posible que se encuentren ocupados. Dentro del menú, el primer botón india
mediante una etiqueta textual la leyenda “Iluminación”, al pulsar sobre él se abrirá una
nueva ventana. La nueva instancia abierta tendrá la opción de encender o apagar un
conjunto de lámparas existentes en una casa habitación.

111
Fig. 4.30 Ventana para control de Iluminación

Fig. 4.31 Ventana para monitoreo de temperatura.

112
En la figura 4.33 se aprecia la ventana para el monitoreo de la temperatura, dentro
de la cual se despliega el dato enviado a través del modulo XBee dentro del nodo
terminal 1. Del mismo modo se aprecia mediante una barra de termómetro el
incremento o decremento de la temperatura. Tanto el despliegue textual de las
magnitudes de la temperatura como la imagen del termómetro están enlazados de tal
forma que cambian de estado en el mismo instante de tiempo. Dentro de la ventana
mencionada por último se incluye un recuadro donde se mostrará una imagen que
indicará cuando la temperatura sea considerada como excesiva, motivo por el cual la
ventilación se encenderá, y de este modo se pretende que la temperatura ambiental
dentro del recinto disminuya.

Como parte de las funciones del software elaborado mediante el entorno de


desarrollo de Visual Basic se ha considerado que para fines demostrativos era de gran
utilidad el incluir una rutina dentro del programa que verificara el envió y recepción de
datos por medio de los módulos inalámbricos con el objetivo de verificar su
funcionamiento y apreciarlo de forma más gráfica.

Fig. 4.32 Test de conectividad con los nodos terminales

113
Otra de las opciones que nos presenta la ventana principal, es la posibilidad de
seleccionar el elemento de ventilación que se desea activar mediante otro formulario
con los elementos necesarios para encender y apagar de manera remota, sin embargo
a diferencia de la opción presentada en la pantalla de presentación del software, el
mando es tomado desde el ordenador y no por un nodo terminal.

Fig. 4.33 Ventana para el control de ventilación.

Cabe mencionar que el código fuente para cada una de las ventanas se encuentra
dentro del mismo proyecto de visual basic, sin embargo ha sido necesario declarar la
apertura del puerto a utilizar al inicio de cada uno de ellos puesto que no se reconoce la
declaración de este para diferentes formularios, sin embargo esto no interfiere con el
libre y correcto funcionamiento del software.

114
CAPITULO V

PRUEBAS Y
RESULTADOS

115
5.1 Prueba del sistema terminal 1

En el capitulo anterior se presenta la construcción de los nodos terminales y del


nodo central, en la figura 5.1 se aprecian ambos circuitos con todos sus dispositivos
montados. Los circuitos en cuestión funcionan de manera independiente en cada nodo,
es decir que cada circuito se comunica con el nodo central y este se encarga si fuese
necesario de transmitir el mensaje hacia el nodo terminal 2 o nodo terminal 1.

Fig. 5.1 Circuitos impresos de ambos nodos terminales con los dispositivos montados.

116
Fig. 5.2 Menu principal del nodo terminal 1

La figura 5.2, muestra al circuito del nodo terminal 1 funcionando, en la pantalla se


muestran cuatro opciones a elegir mediante el teclado, las cuales son: Accesos,
Ventilación, Temperatura e Iluminación. Una vez que se selecciona la primer opción de
las que se presentan será mostrada una pantalla de un submenú. Sin embargo debido
a que los accesos deben de otorgarse solo a aquellas personas de confianza se
protege mediante contraseña (véase figura 5.3).

Fig. 5.3 Contraseña para ingresar a alguno de los puntos de acceso.

117
Fig. 5.4 Submenú para la opcion “ACCESOS”.

En la figura 5.3 se muestra la pantalla mostrada para pedir el ingreso de una


contraseña configurada dentro del programa introducido en el microcontrolador, si esta
es correcta se mostrara la pantalla siguiente donde se puede seleccionar el elemento al
que se le podrá otorgarle la libertad de dar acceso o restringir dicho ingreso, estas
opciones también son seleccionadas mediante el teclado (véase figura 5.4).

Fig. 5.5 Seleccionar la apertura de algún acceso.

118
Una vez que se accede al submenú de “ACCESOS” es posible permitir el acceso a
un recinto o bloquear el mismo, en la figura 5.5 como ya se menciono se aprecia la
pantalla mostrada cuando se accede a un recinto y en la figura 5.6 se muestra la
contraparte de este, es decir el cierre de un acceso. Para ambos casos anteriormente
señalados se envía un código en hexadecimal que indica al software de control la
acción realizada.

Fig. 5. 6 Seleccionar el cierre de algun acceso.

Una vez seleccionada una de las dos opciones presentadas en la última pantalla
mostrada (véase figura 5.6) se puede retroceder en el menú presionando la tecla “A”, y
de esta manera se pude retroceder y seleccionar otro de los accesos. Sin embargo si lo
que se desea es regresar al inicio el procedimiento es similar, pero en este caso se
debe presionar os veces repetidas la tecla “A”, ahora estando en el menú principal será
posible seleccionar una acción diferente. La figura 5.7 muestra la pantalla que aparece
una vez que se ha seleccionado la segunda opción presentada por el menú principal,
en este caso se trata de “Ventilación” , del mismo modo que en los accesos, para
encender la ventilación se presiona el “1” y para apagar la ventilación se presiona el “2”.

119
Regresando al menú principal seleccionando ahora la tercera de las opciones se
encontrará la pantalla mostrada en la figura 5.8, lo anterior corresponde a el despliegue
de la temperatura ambiental monitoreada por el software programado en Visual Basic,
Cuando se selecciona esta opción el modulo XBee envía la información de manera
constante del dato monitoreado.

Fig. 5.7 Monitoreo de temperatura ambiental.

La última de las opciones presentadas por la pantalla del nodo terminal 1 es la


posibilidad de controlar la iluminación desde un mando remoto, se selecciona alguna de
las cuatro opciones y posteriormente el microcontrolador cambiara la pantalla a la
mostrada en la figura 5.10 dentro de la cual se controla de manera directa el encendido
y apagado.

Fig. 5.8 Activar o desactivar la iluminación en un espacio.

120
5.2 Prueba del sistema terminal 2

El nodo terminal 2 es mostrado en la figura 5.11, en donde se encuentra con sus


componentes, a diferencia con el anterior este dispositivo recibirá completamente datos
y solo enviara cuando se solicite realizar una prueba de conectividad, todas las
peticiones serán visualizadas por medio de la pantalla de LCD. La tablilla de circuito
impreso contiene headers hacia los puertos configurados como salida del
microcontrolador, dichos puerto son el puerto A y el puerto B. Lo anterior se ha
realizado con el objetivo de enlazar el nodo con dispositivos terminales por medio de un
circuito de potencia como pueden ser lámparas y ventiladores.

Fig. 5.9 Nodo terminal 2 con todos sus elementos.

121
Fig. 5.10 Primer pantalla presentada por el nodo terminal 2.

La figura 5.12, ejemplifica al circuito del nodo terminal 2 cuando es encendido, en la


pantalla se muestran cuatro opciones posibles para ser seleccionadas por medio de
mando remoto a través de los módulos XBee, las opciones que componen el menú
están conformadas por: Temperatura, Ventilación, Iluminación y Test. La primea de las
opciones recibe el dato retransmitido por el nodo principal a cerca de la temperatura, y
es mostrada de igual forma que en nodo terminal 1.

Fig. 5.11 Pantalla presentada cuando es seleccionada la segunda opción del menú.

122
5.3 Prueba del software

Una vez que el software comienza a ejecutarse es necesario seleccionar el puerto


por el cual se conectara la computadora con el nodo central, enseguida se presionara
el botón “Conectar” por medio del cual se inicia la apertura del Puerto seleccionado
para la realización del envío de datos a través de él.

Fig. 5.12 Cierre de un acceso.

Cuando se recibe un byte con el código correspondiente a alguno de los accesos


se despliega en el software una imagen con una puerta cerrada o abierta según sea el
caso, también salta una ventana de alerta indicando la acción realizada. Para cada
movimiento realizado en el cual se encuentra involucrado el software después de ser
ejecutado se muestra u instante un plano en donde se marca la posición del elemento
y una imagen del elemento en 3D.

123
Fig. 5.13 Muestra del plano con la ubicación marcada en el lugar del cierre de la entrada principal.

Fig. 5. 14 La imagen muestra el estado de la entada principal y una ventana de alerta también indica la
acción tomada.

124
Fig. 5.15 Muestra del plano en el cual se encuentra el acceso principal.

Fig. 5.16 Monitoreo de la temperatura por medio del software.

125
Fig. 5.17 Prueba de conectividad.

En la figura 5.21 se puede ver que al momento de realizar algún movimiento sobre
la iluminación o apertura de algún acceso se produce un señalamiento dentro de un
pequeño plano de la casa, de este modo es más fácil darse una idea de los eventos
que van sucediendo a causa de las decisiones tomadas de manera remota. En la figura
5.22 se presenta la captura en pantalla del software una vez que ha comenzado a
monitorear la temperatura en tiempo real, donde se activa también una imagen que
muestra un ventilador girando, esto a manera de indicador cuando la temperatura
excede los 28 º C, indicando así que es momento de activar la ventilación. La figura
5.23 se ilustra la ventana que corresponde a la función de “test de conectividad” donde
es posible identificar si las conexiones con los módulos se han llevado a cabo.

126
5.4 Rango de alcance

Se realizaron pruebas con los circuitos impresos y los módulos XBee, esto con el fin
de comprobar el alcance que nos brindan los módulos. De los parámetros más
determinantes en este aspecto se encuentran los obstáculos mismos que pueden ser
las paredes, puertas y ventanas, las cuales son inevitables en las aplicaciones de
redes inalámbricas. En estas condiciones es de gran utilidad especificar el rango de
alcance de los dispositivos.

Primero se experimentó dentro de distancias pequeñas y dentro de una


misma habitación, como es el caso de una sala , en donde se obtuvieron
resultados óptimos en cuánto a funcionamiento y nivel de señal del módulo
remoto, pues éste trabajó de manera adecuada y además captó una buena señal. Los
dos dispositivos se comunicaron sin ningún problema presentando los valores
adquiridos tanto en la pantalla del PC como en el LCD.

Fig. 5.18 Datos recibidos en las pruebas mediante el monitoreo de temperatura.

127
En la figura 5.24 se observan los datos en hexadecimal recibidos por el nodo
principal. Se ha realizado esta prueba con el monitoreo de temperatura ya que esta
opción permite recibir datos de manera continua. Luego se aumentó un poco más la
distancia. El módulo terminal se colocó en una habitación, mientras que el módulo
coordinador junto con el host fue trasladado a otra habitación. Bajo estas condiciones
el prototipo respondió aún de manera óptima, ya que siguió actuando de forma
correcta y con un buen nivel de señal.

Fig. 5.19 Datos recibidos con algunos errores.

Finalmente se procedió a colocar al módulo base en el extremo más apartado con


respecto al módulo terminal; es decir, fueron separadas la mayor distancia posible
entre sí con el fin de comprobar si en estas condiciones existía algún problema.
Realizando las correspondientes pruebas al prototipo, se pudo comprobar que

128
seguía funcionando sin ningún problema a una distancia de hasta 50 metros,
aproximadamente con obstáculos . En la imagen 5.25 se observa en algunas partes
que el dato en hexadecimal no es un numero, en base a que nunca se envían datos
que representen caracteres diferentes de algún numero, se puede afirmar que a partir
de esta distancia se comienzan a recibir perdidas en la transmisión debido a los
variados obstáculos que siempre hay en una casa.

5.5 Muestra del estado de la ventilación e iluminación

Para mostrar el cambio de estado de la ventilación e iluminación se han colocado


dentro del software en Visual Basic imágenes que cambian de acuerdo a la petición
realizada desde los nodos terminales, sin embargo para efectos demostrativos se ha
colocado una tablilla con bombillas y ventiladores de C.D., con lo anterior se demuestra
que es posible agregar al sistema de comunicación de manera sencilla elementos que
requieran cierto nivel de potencia, lo anterior anexando algunos elementos descritos
anteriormente.

Fig. 5. 20 Tablilla con bombillas de C.A. y ventiladores de C.D.

129
CONCLUSIONES

Al finalizar este trabajo de tesis se ha comprobado la posibilidad de implementar un


red con tecnología ZigBee para la adquisición de datos y el control de dispositivos tiene
una buena calidad de enlace, asimismo se ha corroborado que al realizar un prototipo
que sea funcional de manera remota hace más fácil la manipulación de diversas
variables así como permitir la lectura en cualquier momento haciendo uso de una PC o
de un nodo terminal sin necesidad de estar en el lugar preciso. Por lo anterior se puede
afirmar que mediante un prototipo como el construido se facilitan las tareas
relacionadas con la observación y manipulación a distancia de múltiples dispositivos
sensores.

La utilización de diversos aparatos que funcionen bajo rangos de frecuencia


similares no afecta en el desempeño del prototipo pues al estar en contacto con ellos no
se ha presentado fallas en la transmisión. Uno de los beneficios de utilizar la tecnología
ZigBee es la mejora de transmisión de datos entre diversos dispositivos tomando en
cuenta la distancia que ésta puede proporcionar, la cual en zonas abiertas alcanza los
100 metros.

Comparando la distancia mencionada en el párrafo anterior con las distancias


manejadas por otras tecnologías inalámbricas a nivel PAN, ZigBee es capaz de lograr
un mayor alcance y un menor consumo de energía. Los estándares inalámbricos más
populares como por ejemplo el Bluetooth, no
satisfacen las necesidades de la automatización y control ya que no han sido
diseñados considerando estas razones como premisas, tal es el caso de Bluetooth el
cual ha sido diseñado para aplicaciones en las Telecomunicaciones, audio, etc.

Gracias a la ausencia de cableado en la implementación de una red con tecnología


ZigBee es más sencillo realizar la implementación de la misma ya que no es necesario
bajo ninguna circunstancia colocar otros materiales tales como canaletas o conectores,
dichos elementos demoran el proceso de implementación y claramente cambian el

130
aspecto del lugar donde sean implementados, lo anterior no es necesario si lo que se
busca es solo comunicación con fines como el propio de este proyecto: monitoreo de
sensores control de dispositivos en forma remota o algún uso que no requiere de un
ancho de banda muy grande.

Los elementos necesarios para implementar un protocolo de comunicación


inalámbrico en un hogar domótico son un microcontrolador, los modulados de
comunicación, sensores y actuadores acordes a las variables que se desea manipular y
una interfaz gráfica.

El microcontrolador PIC18F452 es un elemento que tiene los elementos y


características necesarias para la implementación de un mando remoto como el
presente en este trabajo. Estas características nos permiten concluir que al
momento de utilizarlo como elemento de procesamiento de datos provee a nuestro
sistema de comunicaciones la inteligencia necesaria para cumplir con las tareas
asignadas.

El uso de una interfaz gráfica facilita la visualización y manipulación de los sensores


o actuadores por parte del usuario ya que este no necesita realizar configuraciones
directas al módulo.

El estándar ZigBee es un conjunto de protocolos de comunicación inalámbrica de


bajo consumo, basado en el estándar 802.15.4 de redes WPANs, este estándar se
caracteriza por haber sido diseñado para funciones y en aplicaciones que requieren una
comunicación segura con una baja tasa de envió de datos, por lo cual de acuerdo a
estas características lo hacen ideal para utilizarlo como sistema de comunicación
entre los dispositivos y elementos de una casa, ya que en ningún caso se requiere de
elevadas tasas de transmisión.

131
ANEXO I: PROGRAMA DEL PRIMER MICROCONTROLADOR
USART_BRGH_HIGH,
25);
/////////////////////////////////////////////////////////////////////////////
while(i!=4){
////////CASTILLO BAUTISTA BRAULIO ANTONIO Delay10TCYx(100);
////////PIC18F452
Comando_LCD(DDRAM_LINEA_1);
////////SISTEMA DE CONTROL DOMOTICO Datos_LCD("================");
/////////////////////////////////////////////////////////////////////////////
Comando_LCD(DDRAM_LINEA_2);
#include <p18f452.h> // Registros del PIC a utilizar Datos_LCD(" I.P.N. " );
#include <portb.h> // Funciones sobre el Puerto B Comando_LCD(DDRAM_LINEA_3);
#include <delays.h> // Rutinas de retardo Datos_LCD(" E.S.I.M.E. " );
#include <LCD16x4_2.h>//ruta del archivo en mi PC Comando_LCD(DDRAM_LINEA_4);
#include <usart.h>
Datos_LCD("================");
#include <adc.h> i++;
#include <stdlib.h>
}
/* Configuración de Bits de Microchip */ menu1:
#pragma config LVP = OFF
Comando_LCD(DDRAM_LINEA_1);
#pragma config WDT = OFF Dato_String_LCD(opcion1);
#pragma config OSC = XT
Comando_LCD(DDRAM_LINEA_2);
//////////////////////////////// Dato_String_LCD(opcion2);
#define Col1 PORTBbits.RB4 // Define la Columna 1
Comando_LCD(DDRAM_LINEA_3);
#define Col2 PORTBbits.RB5 // Define la Columna 2 Dato_String_LCD(opcion3);
#define Col3 PORTBbits.RB6 // Define la Columna 3 Comando_LCD(DDRAM_LINEA_4);
#define Col4 PORTBbits.RB7 // Define la Columna 4 Dato_String_LCD(opcion4);
void Inicializa_Puerto(void); // Prototipo de funcion, incializa Puerto Tecla=0;
void Visualiza_Tecla(void); // Prototipo de funcion, valor de tecla
while(Tecla==0){
void Lee_Teclado(); // Prototipo de funcion, lee el teclado Lee_Teclado();
void transmicion(void);
void accesos(void); //Visualiza_Tecla();
void temperatura(void);
}
void ventilacion(void); switch(Tecla){
void iluminacion(void);
unsigned char Tecla,comandoinc, case 0x01:
/* Teclado matricial */
accesos();
Teclado[4][4] = { 0X01, 0X02, 0X03, 0X0A, goto menu1;
0X04, 0X05, 0X06, 0X0B, break;
0X07, 0X08, 0X09, 0X0C,
0X00, 0X0F, 0X0E, 0X0D case 0x02:
},
ventilacion();
goto menu1;
/* Codigo en ASCII a desplegar en LCD */
break;
Display[16] = { 0X30, 0X31, 0X32, 0X33,
0X34, 0X35, 0X36, 0X37,
case 0x03:
0X38, 0X39, 0X41, 0X42, temperatura();
0X43, 0X44, 0X45, 0X46
goto menu1;
}; break;
char mensaje[]="Tecla oprimida:"; case 0x04:
char opcion1[]="[1] ACCESOS "; iluminacion();
char opcion2[]="[2] VENTILACION "; goto menu1;
char opcion3[]="[3] TEMPERATURA "; break;
char opcion4[]="[4] ILUMINACION ";
}//fin de la estructura switch
char borrar[]=" ";
char mensaje_eco1[]="send",recepcion_eco1[16],recepcion;
while(1){
int i=0,j=1,value,T,dec, pass[6]={0x00,0x00,0x00,0x00,0x00,0x00}; }
unsigned int canal0;
}
float ADCtemp; ////////////fin del programa principal
///////////////////////////////////////////////////////////////////////////////////////////
char String[],cadena[],cadenadec[]; ////////////////////Definición de funciones//////////////////////////////////
///////////////////////////////////////////////////////////////////////////////////////////
//*************************************************************** /* Lee el teclado en busca de alguna tecla oprimida */
//inicio del programa prncipal void Lee_Teclado()
//*************************************************************** {
void main(void) unsigned char Fila,
{
Control[4] = {0xFE, 0xFD,0xFB, 0xF7};
// Codigo de Fila a controlar de F1 a F4
TRISB = 0xF0;
PORTB = 0xFF;// Teclado desconectado
TRISC = 0x80;
PORTC = 0x00;
for(Fila = 0; Fila <= 3; Fila++) // Control de Fila
TRISD = 0x00; {
PORTD = 0x00;
PORTB = Control[Fila];
Tecla=0; Delay1KTCYx(20);
Inicializa_LCD();
if(Col1 == 0) // Columna 1 ?
Comando_LCD(CURSOR_OFF & BLINK_OFF); Tecla = Teclado[Fila][0];
EnablePullups();// Activa resistencias Pull Up if(Col2 == 0) // Columna 2 ?
OpenUSART ( USART_TX_INT_OFF & Tecla = Teclado[Fila][1];
USART_RX_INT_OFF & if(Col3 == 0) // Columna 3 ?
USART_ASYNCH_MODE &
Tecla = Teclado[Fila][2];
USART_EIGHT_BIT & if(Col4 == 0) // Columna 4 ?
USART_CONT_RX &
Tecla = Teclado[Fila][3];

132
}//fin del ciclo for
} Comando_LCD(0XD7);
void Visualiza_Tecla(void) Datos_LCD("*");
{ sigdigito3:
//Comando_LCD(DDRAM_LINEA_2);
Comando_LCD(0XD3); nadatecleado4:
Dato_LCD(Display[Tecla]);//una cadena desde la memoria de datos while(Tecla!=0x04){
}
void accesos(void){ Lee_Teclado();
Comando_LCD(DDRAM_LINEA_1); // Visualiza_Tecla();
Dato_String_LCD(borrar); pass[4]=Tecla;
Comando_LCD(DDRAM_LINEA_2); if(pass[4]==0||pass[4]==1||pass[4]==2||pass[4]==3){goto nadatecleado4;}
Dato_String_LCD(borrar); else{
Comando_LCD(DDRAM_LINEA_3); if((Tecla!=0x04)&&(Tecla!=0)){
Dato_String_LCD(borrar); Comando_LCD(0xD8);
Comando_LCD(DDRAM_LINEA_4); Datos_LCD("*");
Dato_String_LCD(borrar); goto sigdigito4; }
Comando_LCD(DDRAM_LINEA_1); }//fin else
Datos_LCD(" A C C E S O S ");
Comando_LCD(DDRAM_LINEA_2); i++; }//cuarto digito correcto
Datos_LCD("================");
Comando_LCD(DDRAM_LINEA_3); Comando_LCD(0XD8);
Datos_LCD("Password: "); Datos_LCD("*");
salto2: Comando_LCD(0xD3);
sigdigito4:
//*password de acceso*//
Tecla=0; nadatecleado5:
nadatecleado: while(Tecla!=0x05){
while(Tecla!=0x01){
Lee_Teclado(); Lee_Teclado();
//Visualiza_Tecla(); //Visualiza_Tecla();
pass[5]=Tecla;
pass[1]=Tecla;
if(pass[1]==0){goto nadatecleado;} if(pass[5]==0||pass[5]==1||pass[5]==2||pass[5]==3||pass[4]){goto nadatecleado5;}
else{ else{
if((Tecla!=0x01)){ if(Tecla!=0x05&&Tecla!=0){
Comando_LCD(0xD5); Comando_LCD(0xD9);
Datos_LCD("*"); Datos_LCD("*");
goto sigdigito; } goto sigdigito5; }
}//fin else
}
i++; i++; }//quinto digito correcto
}//pprimer digito correcto sigdigito5:
Comando_LCD(0XD5); Comando_LCD(0XD9);
Datos_LCD("*"); Datos_LCD("*");
sigdigito:
nadatecleado2: while(Tecla!=0x06){
while(Tecla!=0x02){ Lee_Teclado();
Lee_Teclado(); // Visualiza_Tecla();
//Visualiza_Tecla(); pass[6]=Tecla;
pass[2]=Tecla;
}//sexto digito correcto
if((pass[2]==0x01)||(pass[2]==0)){goto nadatecleado2;}
else{ Comando_LCD(0XDA);
if((Tecla!=0x02)){ Datos_LCD("*");
Comando_LCD(0xD6);
Datos_LCD("*"); Tecla=0;
goto sigdigito2; } while(Tecla!=0x01){
} Lee_Teclado();}
; } //seg digito correcto
Tecla=0;
Comando_LCD(0XD6); while(Tecla!=0x02){
Datos_LCD("*"); Lee_Teclado();}
sigdigito2:
Tecla=0;
nadatecleado3: while(Tecla!=0x03){
while(Tecla!=0x03){ Lee_Teclado();}
Lee_Teclado(); Tecla=0;
//Visualiza_Tecla(); while(Tecla!=0x04){
pass[3]=Tecla; Lee_Teclado();}
if(pass[3]==0x01||pass[3]==0||pass[3]==0x02){goto Tecla=0;
nadatecleado3;} while(Tecla!=0x05){
else{ Lee_Teclado();}
if((Tecla!=0x03)&&(Tecla!=0)){ Tecla=0;
Comando_LCD(0xD7); while(Tecla!=0x06){
Datos_LCD("*"); Lee_Teclado();}
goto sigdigito3; }
}//else
if((pass[1]==0x01)&&(pass[2]==0x02)&&(pass[3]==0x03)&&(pass[4]==0x04)&&(pa
i++; }//tercer digito correcto ss[5]==0x05)&&(pass[6]==0x06)){

133
Datos_LCD(" ");//Borrado de la linea 3 de la pantalla de LCD
Tecla=0x00; Delay10TCYx(80);// Retaedo para activar parpadeo de la cadena enviada
goto salto; Comando_LCD(DDRAM_LINEA_3);//posicionarse en la linea 3 de la LCD
Datos_LCD(" ABIERTO ");//Enviar la cadena "ABIERTO" a la LCD
}
else{ i++;
i=0; }
while(i!=5){ Tecla=0;
Comando_LCD(DDRAM_LINEA_3); break;
Datos_LCD(" PASSWORD ");
Comando_LCD(DDRAM_LINEA_4); case 0x02:
Datos_LCD(" ERRONEO ");
Delay10TCYx(100); while(BusyUSART());// Esperar a que el bffer de salida este vacio
i++;} WriteUSART(0x62);//enviar un 62h para abrir la entrada principal
Comando_LCD(DDRAM_LINEA_3); i=0;
Dato_String_LCD(borrar); while(i<5){
Comando_LCD(DDRAM_LINEA_4);
Dato_String_LCD(borrar); Delay10TCYx(80);// Retaedo para activar parpadeo de la cadena enviada
goto salto2;} Comando_LCD(DDRAM_LINEA_3);//posicionarse en la linea 3 de la LCD
////////////////esta bien Datos_LCD(" CERRADO ");//Enviar la cadena "CERRADO" a la LCD
//final password
salto: Delay10TCYx(80);// Retaedo para activar parpadeo de la cadena enviada
finaccesos: Comando_LCD(DDRAM_LINEA_3);//posicionarse en la linea 3 de la LCD
Comando_LCD(DDRAM_LINEA_1);
Dato_String_LCD(borrar); Datos_LCD(" ");//Borrado de la linea 3 de la pantalla de LCD
Comando_LCD(DDRAM_LINEA_2); Delay10TCYx(80);// Retaedo para activar parpadeo de la cadena enviada
Dato_String_LCD(borrar); Comando_LCD(DDRAM_LINEA_3);//posicionarse en la linea 3 de la LCD
Comando_LCD(DDRAM_LINEA_3); Datos_LCD(" CERRADO ");//Enviar la cadena "CERRADO" a la LCD
Dato_String_LCD(borrar); i++;
Comando_LCD(DDRAM_LINEA_4);
Dato_String_LCD(borrar); }
Comando_LCD(DDRAM_LINEA_1); Tecla=0;
Datos_LCD(" [1] E.Principal ");
Comando_LCD(DDRAM_LINEA_2); break;
Datos_LCD(" [2] Recamara 1"); case 0x0A: Tecla=0x00;
Comando_LCD(DDRAM_LINEA_3); goto finaccesos;
Datos_LCD(" [3] Recamaea 2");
Comando_LCD(DDRAM_LINEA_4); break;
Datos_LCD(" [4] Garage");
//segunda funcion switch para submenu }//fin switch para entrada
}//fin while infinito
Tecla=0;
while(Tecla==0){Lee_Teclado();} break;
case 0x02:
switch(Tecla){ Comando_LCD(DDRAM_LINEA_1);
case 0x01: Dato_String_LCD(borrar);
Comando_LCD(DDRAM_LINEA_1); Comando_LCD(DDRAM_LINEA_2);
Dato_String_LCD(borrar); Dato_String_LCD(borrar);
Comando_LCD(DDRAM_LINEA_2); Comando_LCD(DDRAM_LINEA_3);
Dato_String_LCD(borrar); Dato_String_LCD(borrar);
Comando_LCD(DDRAM_LINEA_3); Comando_LCD(DDRAM_LINEA_4)
Dato_String_LCD(borrar); Dato_String_LCD(borrar);
Comando_LCD(DDRAM_LINEA_4); Comando_LCD(DDRAM_LINEA_1);
Dato_String_LCD(borrar); Datos_LCD(" [2] Garage ");
Comando_LCD(DDRAM_LINEA_1); Comando_LCD(DDRAM_LINEA_2);
Datos_LCD(" [1] Entrada "); Datos_LCD("================");
Comando_LCD(DDRAM_LINEA_2);
Datos_LCD("================"); Comando_LCD(DDRAM_LINEA_4);
Comando_LCD(DDRAM_LINEA_4); Datos_LCD("[1]A [2]C");
Datos_LCD("[1]A [2]C"); Comando_LCD(DDRAM_LINEA_3);
Comando_LCD(DDRAM_LINEA_3); Datos_LCD(" ABIERTO ");
Datos_LCD(" ABIERTO "); while(1){
Tecla=0;
while(1){ while(Tecla==0){Lee_Teclado();}
Tecla=0; switch(Tecla)
while(Tecla==0){Lee_Teclado();}
switch(Tecla){ case 0x01:
case 0x01: while(BusyUSART())
WriteUSART(0x63);
while(BusyUSART());// Esperar a que el bffer de salida este vacio i=0;
WriteUSART(0x61); //enviar un 61h para abrir la entrada principal while(i<5){
Delay10TCYx(80);
i=0; Comando_LCD(DDRAM_LINEA_3);
while(i<5){ Datos_LCD(" ABIERTO ");
Delay10TCYx(80);// Retaedo para activar parpadeo de la cadena enviada Delay10TCYx(80);
Comando_LCD(DDRAM_LINEA_3);//posicionarse en la linea 3 de la LCD Comando_LCD(DDRAM_LINEA_3);
Datos_LCD(" ABIERTO ");//Enviar la cadena "ABIERTO" a la LCD Datos_LCD(" ");
Delay10TCYx(80);;// Retaedo para activar parpadeo de la cadena enviada Delay10TCYx(80);
Comando_LCD(DDRAM_LINEA_3);//posicionarse en la linea 3 de la LCD Comando_LCD(DDRAM_LINEA_3);
Datos_LCD(" ABIERTO ");

134
i++; break;
case 0x02:
} while(BusyUSART());
WriteUSART(0x66);
break; i=0;
case 0x02: while(i<5){
while(BusyUSART());
WriteUSART(0x64);
i=0; Delay10TCYx(80);
while(i<5){ Comando_LCD(DDRAM_LINEA_3);
Datos_LCD(" CERRADO ");
Delay10TCYx(80);
Comando_LCD(DDRAM_LINEA_3);
Datos_LCD(" CERRADO "); Delay10TCYx(80);
Comando_LCD(DDRAM_LINEA_3);
Delay10TCYx(80);
Comando_LCD(DDRAM_LINEA_3);
Datos_LCD(" ");
Delay10TCYx(80);
Datos_LCD(" "); Comando_LCD(DDRAM_LINEA_3);
Delay10TCYx(80); Datos_LCD(" CERRADO ");
Comando_LCD(DDRAM_LINEA_3);
Datos_LCD(" CERRADO ");
i++; i++;
}
}
break;
case 0x0A: Tecla=0x00; break;
goto finaccesos; case 0x0A: Tecla=0x00;
break; goto finaccesos;
}//fin switch para entrada break;

}//fin while infinito }//fin switch para entrada


break; }//fin while infinito
case 0x03:
break;
Comando_LCD(DDRAM_LINEA_1); case 0x04:
Dato_String_LCD(borrar);
Comando_LCD(DDRAM_LINEA_2); Comando_LCD(DDRAM_LINEA_1);
Dato_String_LCD(borrar); Dato_String_LCD(borrar);
Comando_LCD(DDRAM_LINEA_3); Comando_LCD(DDRAM_LINEA_2);
Dato_String_LCD(borrar); Dato_String_LCD(borrar);
Comando_LCD(DDRAM_LINEA_4); Comando_LCD(DDRAM_LINEA_3);
Dato_String_LCD(borrar); Dato_String_LCD(borrar);
Comando_LCD(DDRAM_LINEA_1); Comando_LCD(DDRAM_LINEA_4);
Datos_LCD(" [3] Caja fuerte "); Dato_String_LCD(borrar);
Comando_LCD(DDRAM_LINEA_2); Comando_LCD(DDRAM_LINEA_1);
Datos_LCD("================"); Datos_LCD(" [4] Bodega ");
Comando_LCD(DDRAM_LINEA_2);
Comando_LCD(DDRAM_LINEA_4); Datos_LCD("================");
Datos_LCD("[1]A [2]C"); Comando_LCD(DDRAM_LINEA_4);
Comando_LCD(DDRAM_LINEA_3); Datos_LCD("[1]A [2]C");
Datos_LCD(" ABIERTO "); Comando_LCD(DDRAM_LINEA_3);
Datos_LCD(" ABIERTO ");
while(1){ while(1){

Tecla=0; Tecla=0;
while(Tecla==0){Lee_Teclado();} while(Tecla==0){Lee_Teclado();}
switch(Tecla){
case 0x01: switch(Tecla){
case 0x01:
while(BusyUSART()); while(BusyUSART());
WriteUSART(0x65); WriteUSART(0x67);

i=0; i=0;
while(i<5){ while(i<5){

Delay10TCYx(80);
Comando_LCD(DDRAM_LINEA_3); Delay10TCYx(80);
Datos_LCD(" ABIERTO "); Comando_LCD(DDRAM_LINEA_3);
Delay10TCYx(80);
Comando_LCD(DDRAM_LINEA_3); Datos_LCD(" ABIERTO ");

Datos_LCD(" ");
Delay10TCYx(80); Delay10TCYx(80);
Comando_LCD(DDRAM_LINEA_3); Comando_LCD(DDRAM_LINEA_3);
Datos_LCD(" ABIERTO "); Datos_LCD(" ");
i++; Delay10TCYx(80);
} Comando_LCD(DDRAM_LINEA_3);

135
Datos_LCD(" ABIERTO ");
//Lapso de tiempo para parpadeo de mensajes

i++; Delay10TCYx(80);
} Comando_LCD(DDRAM_LINEA_3); //Posicionamiento en linea 3
Datos_LCD(" Estado:ON "); // escritura de cadena en la pantalla de LCD

break; Delay10TCYx(80);//Lapso
case 0x02: de tiempo para parpadeo de mensajes
while(BusyUSART()); Comando_LCD(DDRAM_LINEA_3);//Posicionamiento en linea 3
WriteUSART(0x68);
i=0; Datos_LCD(" Estado: ");// escritura de cadena en la pantalla de LCD
while(i<5){ Delay10TCYx(80);//Lapso de tiempo para parpadeo de mensajes
Comando_LCD(DDRAM_LINEA_3);//Posicionamiento en linea 3
Datos_LCD(" Estado:ON ");// escritura de cadena en la pantalla de LCD
Delay10TCYx(80); i++;
Comando_LCD(DDRAM_LINEA_3);
Datos_LCD(" CERRADO "); }

Delay10TCYx(80); break;
Comando_LCD(DDRAM_LINEA_3); case 0x02:
Datos_LCD(" "); while(BusyUSART());// esperar a qeu el biffer de salida se encuentre vacio
Delay10TCYx(80); WriteUSART(0x42);// enviar un 41h para establecer encendido del ventilador
Comando_LCD(DDRAM_LINEA_3); i=0;
Datos_LCD(" CERRADO "); while(i<5){
i++;
}
break; Delay10TCYx(80);// escritura de cadena en la pantalla de LCD
case 0x0A: Tecla=0x00; Comando_LCD(DDRAM_LINEA_3);//Posicionamiento en linea 3
goto finaccesos;
Datos_LCD(" Estado: ");// escritura de cadena en la pantalla de LCD
break; Delay10TCYx(80);// escritura de cadena en la pantalla de LCD
Comando_LCD(DDRAM_LINEA_3);//Posicionamiento en linea 3
}//fin switch para entrada Datos_LCD(" Estado:OFF ");// escritura de cadena en la pantalla de LCD
i++;
}//fin while infinito
}
break; break;
case 0x0A: case 0x0A: Tecla=0x00;
break; goto finventilacion;

;}//fin de la función swithc para el submenu break;


}
}//fin switch para ventilación
void ventilacion(void){ }//fin while infinito
finventilacion:
Comando_LCD(DDRAM_LINEA_1); ;}//fin case2
Dato_String_LCD(borrar);
Comando_LCD(DDRAM_LINEA_2); /////CASO 3 DEL MENU PRINCIPAL
Dato_String_LCD(borrar); void temperatura(void){
Comando_LCD(DDRAM_LINEA_3); /* Comando_LCD(DDRAM_LINEA_1);
Dato_String_LCD(borrar); Dato_String_LCD(borrar);
Comando_LCD(DDRAM_LINEA_4); Comando_LCD(DDRAM_LINEA_2);
Dato_String_LCD(borrar); Dato_String_LCD(borrar);
Comando_LCD(DDRAM_LINEA_1); Comando_LCD(DDRAM_LINEA_3);
Datos_LCD(" VENTILACION "); Dato_String_LCD(borrar);
Comando_LCD(DDRAM_LINEA_2); Comando_LCD(DDRAM_LINEA_4);
Datos_LCD("================"); Dato_String_LCD(borrar);
Comando_LCD(DDRAM_LINEA_4); Comando_LCD(DDRAM_LINEA_1);
Datos_LCD("[1]ON [2]OFF"); Datos_LCD(" TEMPERATURA ");
Comando_LCD(DDRAM_LINEA_3); Comando_LCD(DDRAM_LINEA_2);
Datos_LCD(" Estado:ON "); Datos_LCD("================");
OpenADC( ADC_FOSC_RC &
ADC_RIGHT_JUST &
while(1){ ADC_1ANA_0REF,
ADC_CH0 &
Tecla=0; ADC_INT_OFF );
while(Tecla==0){Lee_Teclado();}
while(1){
switch(Tecla){ SetChanADC(0); //Selección del canal analógico
//retardo para garantizar una lectura en el canal analógico.
case 0x01: Delay10TCYx(2);
ConvertADC();//comenzar la conversión de analógico a digital
// esperar a qu el buffer de salida se encuentre vacio
while(BusyUSART()); while(BusyADC()==1){ //verificar si la conversión ya fue realizada
// enviar un 41eh para establecer encendido del ventilador }
WriteUSART(0x41);
canal0=ReadADC();// si la conversión fue realizada se leerá el canal
i=0;
while(i<5){ ADCtemp=(canal0/1.9607843); //conversión a grados centígrados

136
Comando_LCD(DDRAM_LINEA_3);// situarse en la linea 3 de la LCD fintemperatura:
// Dato_LCD('0x69'); ;}//fin case 3

//ADCtemp=ADCtemp*100; void iluminacion(void){


Comando_LCD(0XDC);//una posición específica en al LCD Comando_LCD(DDRAM_LINEA_1);
Datos_LCD(" 'C");// desplegar el caracter C Dato_String_LCD(borrar);
itoa(ADCtemp, String);// convertir un dato entero auna cadena Comando_LCD(DDRAM_LINEA_2);
T=atoi(String);// almacenar el dato sin concertir en la variable T Dato_String_LCD(borrar);
Comando_LCD(0XD3);//una posición específica en lña LCD Comando_LCD(DDRAM_LINEA_3);
Dato_String_LCD(String);// imprimir las unidades en la pantalal de LCD Dato_String_LCD(borrar);
T=T*100;// vizualizar los decimales como enteros Comando_LCD(DDRAM_LINEA_4);
ADCtemp=ADCtemp*100;//igualar magnitud con los decimales Dato_String_LCD(borrar);
dec=ADCtemp-T;// obtener los decimales a desplegar en la LCD Comando_LCD(DDRAM_LINEA_1);
itoa(dec, cadenadec);// convertir los datos enteros de los decimales a una cadena Datos_LCD(" ILUMINACION ");
Comando_LCD(0XD9);//Una posición específica en la LCD Comando_LCD(DDRAM_LINEA_2);
Dato_String_LCD(cadenadec);// desplegar el dato en la pantalla de LCD Datos_LCD("================");
Comando_LCD(0XD7);// Una posicion especifica en la LCD finABCD:
Datos_LCD("."); Comando_LCD(DDRAM_LINEA_3);
Datos_LCD("[1] A [2] B");
Lee_Teclado(); Comando_LCD(DDRAM_LINEA_4);
// si es precionada la eltra A regresar al menú principal. Datos_LCD("[3] C [4] D");
if(Tecla==0x0A){goto fintemperatura;}
Tecla=0;
}//fin while while(Tecla==0){Lee_Teclado();}
fintemperatura: switch(Tecla){
*/ case 0x01: ///////////////////////habitacion A///////
Comando_LCD(DDRAM_LINEA_1); Comando_LCD(DDRAM_LINEA_4);
Dato_String_LCD(borrar); Datos_LCD("[1]ON [2]OFF");
Comando_LCD(DDRAM_LINEA_2); Comando_LCD(DDRAM_LINEA_3);
Dato_String_LCD(borrar); Datos_LCD(" Espacio A :ON ");
Comando_LCD(DDRAM_LINEA_3);
Dato_String_LCD(borrar); while(1){
Comando_LCD(DDRAM_LINEA_4);
Dato_String_LCD(borrar); Tecla=0;
Comando_LCD(DDRAM_LINEA_1); while(Tecla==0){Lee_Teclado();}
Datos_LCD(" TEMPERATURA "); switch(Tecla){ //opciones de iluminacion de HABITACION A
Comando_LCD(DDRAM_LINEA_2);
Datos_LCD("================"); case 0x01:

OpenADC( ADC_FOSC_RC & // esperar a qeu el buffer de transmision de la uart este disponible
ADC_RIGHT_JUST & while(BusyUSART());
ADC_1ANA_0REF,
ADC_CH0 & //enviar 6B hexadecimal para control de iluminación en habitacion
ADC_INT_OFF ); WriteUSART(0x6B);
while(1){
SetChanADC(0); i=0;
Delay10TCYx(2); while(i<5){
ConvertADC();
while(BusyADC()==1){ Delay10TCYx(80);
} Comando_LCD(DDRAM_LINEA_3);
Datos_LCD(" Espacio A:ON ");
canal0=ReadADC(); Delay10TCYx(80);
ADCtemp=(canal0/2.048); Comando_LCD(DDRAM_LINEA_3);
/*prueba
Comando_LCD(0Xc9); Datos_LCD(" Espacio A: ");
ADCtemp=(ADCtemp)*100; Delay10TCYx(80);
itoa(ADCtemp,cadenadec); Comando_LCD(DDRAM_LINEA_3);
Dato_String_LCD(cadenadec);*/ Datos_LCD(" Espacio A:ON ");
i++;
//putsUSART(String); }

T=T*100; break;
ADCtemp=ADCtemp*100; case 0x02:
dec=ADCtemp-T; WriteUSART(0x6C);
i=0;
itoa(dec, cadenadec); while(i<5){
Comando_LCD(0XD9);
Dato_String_LCD(cadenadec); Delay10TCYx(80);
//putsUSART(cadenadec); Comando_LCD(DDRAM_LINEA_3);
Datos_LCD(" Espacio A:OFF ");
Comando_LCD(0XD7);
Datos_LCD("."); Delay10TCYx(80);
strcat(String , cadenadec); Comando_LCD(DDRAM_LINEA_3);
putsUSART(String); Datos_LCD(" Espacio A: ");
Delay10TCYx(80);
Lee_Teclado(); Comando_LCD(DDRAM_LINEA_3);
if(Tecla==0x0A){goto fintemperatura;} Datos_LCD(" Espacio A:OFF ");
i++;
}//fin while }
while(1){

137
Comando_LCD(DDRAM_LINEA_3);
Tecla=0;
while(Tecla==0){Lee_Teclado();}
Datos_LCD(" Espacio C: ");
switch(Tecla){ //opciones de iluminacion de A Delay10TCYx(80);
case 0x01: Comando_LCD(DDRAM_LINEA_3);
while(BusyUSART()); Datos_LCD(" Espacio C:OFF ");
WriteUSART(0x6D);
i++;
i=0;
while(i<5){ }
Delay10TCYx(80);
Comando_LCD(DDRAM_LINEA_3);
Datos_LCD(" Espacio B:ON "); while(1){

Delay10TCYx(80); Tecla=0;
Comando_LCD(DDRAM_LINEA_3); while(Tecla==0){Lee_Teclado();}
switch(Tecla){ //opciones de iluminacion de A
case 0x01:
Datos_LCD(" Espacio B: "); while(BusyUSART());
Delay10TCYx(80); WriteUSART(0x71);
Comando_LCD(DDRAM_LINEA_3);
Datos_LCD(" Espacio B:ON "); i=0;
i++; while(i<5){
} Delay10TCYx(80);

break; Comando_LCD(DDRAM_LINEA_3);
Datos_LCD(" Espacio D:ON ");
case 0x02: Delay10TCYx(80);
while(BusyUSART()); Comando_LCD(DDRAM_LINEA_3);
WriteUSART(0x6E); Datos_LCD(" Espacio D: ");
i=0; Delay10TCYx(80);
while(i<5){ Comando_LCD(DDRAM_LINEA_3);
Delay10TCYx(80); Datos_LCD(" Espacio D:ON ");
Comando_LCD(DDRAM_LINEA_3); i++;
Datos_LCD(" Espacio B:OFF "); }
Delay10TCYx(80); break;
Comando_LCD(DDRAM_LINEA_3); case 0x02:
Datos_LCD(" Espacio B: "); while(BusyUSART());
Delay10TCYx(80); WriteUSART(0x72);
Comando_LCD(DDRAM_LINEA_3); i=0;
Datos_LCD(" Espacio B:OFF "); while(i<5){
i++;
Delay10TCYx(80);
} Comando_LCD(DDRAM_LINEA_3);
Datos_LCD(" Espacio D:OFF ");
break;
case 0x0A: Delay10TCYx(80);
goto finABCD; Comando_LCD(DDRAM_LINEA_3);
}//fin switch para habitacion B Datos_LCD(" Espacio D: ");
Delay10TCYx(80);
}//fin while infinito
break; while(BusyUSART());
case 0x03: ////////////////////////////////habitacion C//////////////////////////////// //envia caracter
i=0;
Comando_LCD(DDRAM_LINEA_4);
Datos_LCD("[1]ON [2]OFF"); putcUSART('b');
Comando_LCD(DDRAM_LINEA_3); //WriteUSART(0x0B);
Datos_LCD(" Espacio C :ON "); //CloseUSART();
/*Comando_LCD(0X93);//posicion en el LCD
while(1){ for(i=0;i<=12;i++)
Tecla=0; {
while(Tecla==0){Lee_Teclado();} Dato_LCD(mensaje_eco1[i]);
}
switch(Tecla){ //opciones de iluminacion de A //esperar a que el buffer de transmisión
case 0x01: //este vacio o disponible
while(BusyUSART()); while(BusyUSART());
WriteUSART(0x6F); //esperamos caracter del virtual terminal
i++; while(!DataRdyUSART());
} getsUSART(recepcion_eco1,4);
break; Comando_LCD(0XC3);
case 0x02: for(i=0;i<=8;i++)
while(BusyUSART()); {
WriteUSART(0x70); Dato_LCD(recepcion_eco1[i]);
i=0; }
while(i<5){ */
Delay10TCYx(80); while(i!=1);
Comando_LCD(DDRAM_LINEA_3); i++;
Datos_LCD(" Espacio C:OFF ");
Delay10TCYx(80); }

138
ANEXO II: PROGRAMA DEL SEGUNDO MICROCONTROLADOR

OpenUSART(USART_TX_INT_OFF &
//////////////////////////////////////////////////////////////////////////// USART_RX_INT_OFF &
////////CASTILLO BAUTISTA BRAULIO ANTONIO USART_ASYNCH_MODE &
////////PIC18F452 USART_EIGHT_BIT &
////////SISTEMA DE CONTROL DOMOTICO USART_CONT_RX &
////////Aegundo microcontrolador USART_BRGH_HIGH,
///////////////////////////////////////////////////////////////////////////// 25);

#include <p18f452.h> // Registros del PIC a utilizar //INTCON2bits.RBPU = 0; // Similar


#include <portb.h> // Funciones sobre el Puerto B //Datos_LCD("mexico ");//una cadena desde la memoria de programa
#include <delays.h> // Rutinas de retardo
#include <LCD16x4_2.h>//ruta del archivo en mi PC //rutina de lectura para el teclado
#include <usart.h> /* while (1) // Ciclo infinito while
#include <adc.h> {
#include <stdlib.h> Lee_Teclado(); // Busca tecla oprimida
/* Configuración de Bits de Microchip */ Visualiza_Tecla(); // Visualiza la tecla oprimida
#pragma config LVP = OFF } // Ciclo while
#pragma config WDT = OFF //con este comando pasamos a la linea 2 del LCD
#pragma config OSC = XT // Comando_LCD(DDRAM_LINEA_4);
//////////////////////////////// // Datos_LCD("Braulio castillo");*/
#define Col1 PORTBbits.RB4 // Define la Columna 1 while(i!=4){
#define Col2 PORTBbits.RB5 // Define la Columna 2 Delay10TCYx(100);
#define Col3 PORTBbits.RB6 // Define la Columna 3 Comando_LCD(DDRAM_LINEA_1);
#define Col4 PORTBbits.RB7 // Define la Columna 4 Datos_LCD("================");
Comando_LCD(DDRAM_LINEA_2);
void Inicializa_Puerto(void); // Prototipo de funcion, incializa Puerto Datos_LCD(" I.P.N. " );
void transmicion(void); Comando_LCD(DDRAM_LINEA_3);
void case1(void); Datos_LCD(" E.S.I.M.E. " );
void case3(void); Comando_LCD(DDRAM_LINEA_4);
void case2(void); Datos_LCD("================");
void case4(void); i++;
void precencia(void); }
void iluminacion(); i=0;
void contiluminacion(); menu1:
void contiluminacion1(); Comando_LCD(DDRAM_LINEA_1);
void contiluminacion2(); Dato_String_LCD(opcion1);
void contiluminacion3(); Comando_LCD(DDRAM_LINEA_2);
void contiluminacion4(); Comando_LCD(DDRAM_LINEA_3);
void contiluminacion5(); Dato_String_LCD(opcion3);
void contiluminacion6(); Comando_LCD(DDRAM_LINEA_4);
void test(); Dato_String_LCD(opcion4);
unsigned char //iluminacion();
Tecla,comandoinc,Co=0,CoA=0,CoB=0,CoC=0,CoD=0,CoE=0,CoF=0, //case3();
char mensaje[]="Tecla oprimida:"; //Tecla=0;
char opcion1[]="[1] TEMPERATURA "; //while(Tecla==0){
char opcion2[]="[2] VENTILACION "; //Lee_Teclado();
char opcion3[]="[3] ILUMINACION "; //Visualiza_Tecla();
char opcion4[]="[4] TEST "; //}
char borrar[]=" "; while(BusyUSART());
char mensaje_eco1[]="send",recepcion_eco1[16],recepcion; //esperamos caracter del virtual terminal
int i=0,j=1,value,T,dec, while(!DataRdyUSART());
unsigned int canal0; op_lectura = ReadUSART();
double ADCtemp; switch(op_lectura){
case 0x41:
char String[5],cadena[5],cadenadec[]; case3();
//*************************************************************** //
//inicio del programa prncipal
//************************************************************* goto menu1;
void main(void) break;
{ case 0x42:
int op_lectura; //test();
//ADCON1=0x0F; //case3();
//TRISA =0x00; case2;
//PORTA=0XFF; goto menu1;
TRISB = 0x00; break;
PORTB=0XFF;
TRISC = 0x80; case 0x43:
PORTC = 0x00; //test();
TRISD = 0xF0; //case3();
PORTD = 0x00; iluminacion();
Tecla=0; menu1;
Inicializa_LCD(); break;
Comando_LCD(CURSOR_OFF & BLINK_OFF); case 0x44:
EnablePullups(); // Activa resistencias Pull Up //test();
//case3();

139
test(); case 0x0A:
goto menu1; goto finABCD:
break; break;
}//fin switch para habitacion A
}//fin de la estructura switch }//fin while infinit
while(1){ break;
} ////////////////////////////////habitacion B////////////////////////////////
}
////////////fin del programa principal Comando_LCD(DDRAM_LINEA_4);
////////////Definición de funciones//////////////////////////////// Datos_LCD("[1]ON [2]OFF");
} Comando_LCD(DDRAM_LINEA_3);
void case4(void){ Datos_LCD(" Espacio B :ON ");
Comando_LCD(DDRAM_LINEA_1);
Dato_String_LCD(borrar); while(1){
Comando_LCD(DDRAM_LINEA_2); Tecla=0;
Dato_String_LCD(borrar); while(Tecla==0){Lee_Teclado();}
Comando_LCD(DDRAM_LINEA_3);
Dato_String_LCD(borrar); switch(Tecla){ //opciones de iluminacion de
Comando_LCD(DDRAM_LINEA_4); case 0x01:
Dato_String_LCD(borrar); while(BusyUSART());
Comando_LCD(DDRAM_LINEA_1); WriteUSART(0x6D);
Datos_LCD(" ILUMINACION "); i=0;
Comando_LCD(DDRAM_LINEA_2); while(i<5){
Datos_LCD("================"); Delay10TCYx(80);
finABCD: Comando_LCD(DDRAM_LINEA_3);
Datos_LCD("[1] A [2] B"); Datos_LCD(" Espacio B:ON ");
Comando_LCD(DDRAM_LINEA_4); Delay10TCYx(80);
Datos_LCD("[3] C [4] D"); Comando_LCD(DDRAM_LINEA_3);
Tecla=0; Datos_LCD(" Espacio B: ");
while(Tecla==0){Lee_Teclado();} Delay10TCYx(80);
switch(Tecla){ Datos_LCD(" Espacio B:ON ");
case 0x01: ///////////////////////habitacion A///////
Comando_LCD(DDRAM_LINEA_4); i++
Datos_LCD("[1]ON [2]OFF"); }
Comando_LCD(DDRAM_LINEA_3); break;
Datos_LCD(" Espacio A :ON "); case 0x02:
WriteUSART(0x6E);
i=0;
while(1){ while(i<5){
Delay10TCYx(80);
Tecla=0; Comando_LCD(DDRAM_LINEA_3);
while(Tecla==0){Lee_Teclado();} Datos_LCD(" Espacio B:OFF ");

switch(Tecla){ //opciones de iluminacion de A Delay10TCYx(80);


case 0x01: Comando_LCD(DDRAM_LINEA_3);
while(BusyUSART()); Datos_LCD(" Espacio B: ");
WriteUSART(0x6B) Delay10TCYx(80);
i=0; Comando_LCD(DDRAM_LINEA_3);
while(i<5){ Datos_LCD(" Espacio B:OFF ");
Delay10TCYx(80);
Comando_LCD(DDRAM_LINEA_3); i++;
Datos_LCD(" Espacio A:ON "); }
Delay10TCYx(80); break;
Comando_LCD(DDRAM_LINEA_3); case 0x0A:
Datos_LCD(" Espacio A: "); goto finABCD;
Delay10TCYx(80); }//fin switch para habitacion B
Comando_LCD(DDRAM_LINEA_3); }//fin while infinito
Datos_LCD(" Espacio A:ON "); break;
i++; case 0x03: ////////////////////////////////habitacion C////////////////////////////////
} Comando_LCD(DDRAM_LINEA_4);
break; Datos_LCD("[1]ON [2]OFF");
case 0x02: Comando_LCD(DDRAM_LINEA_3);
while(BusyUSART()); Datos_LCD(" Espacio C :ON ");
WriteUSART(0x6C); while(1){
i=0; Tecla=0;
while(i<5){ while(Tecla==0){Lee_Teclado();}
Delay10TCYx(80); switch(Tecla){ //opciones de iluminacion de A
Comando_LCD(DDRAM_LINEA_3); case 0x01:
Datos_LCD(" Espacio A:OFF "); while(BusyUSART());
WriteUSART(0x6F);
Delay10TCYx(80); i=0;
Comando_LCD(DDRAM_LINEA_3) break;
case 0x02:
Datos_LCD(" Espacio A: "); while(BusyUSART());
Delay10TCYx(80); WriteUSART(0x70);
Comando_LCD(DDRAM_LINEA_3); while(i<5){
Datos_LCD(" Espacio A:OFF "); Delay10TCYx(80);
i++; Comando_LCD(DDRAM_LINEA_3);
} Datos_LCD(" Espacio C:OFF ");
break Delay10TCYx(80);

140
Comando_LCD(DDRAM_LINEA_3) USART_BRGH_HIGH,
Datos_LCD(" Espacio C: "); 25);
Delay10TCYx(80); //esperar a que el buffer de transmisión
Comando_LCD(DDRAM_LINEA_3); //este vacio o disponible
Datos_LCD(" Espacio C:OFF "); while(BusyUSART());
i++; //envia caracter
} i=0;
break; putcUSART('b');
case 0x0A: //WriteUSART(0x0B);
goto finABCD; //CloseUSART();
}//fin switch para habitacion B /*Comando_LCD(0X93);//posicion en el LCD
for(i=0;i<=12;i++)
}//fin while infinito {
break; Dato_LCD(mensaje_eco1[i]);
case 0x04:////////////////////////////////habitacion D//////////////////////////////// }
Comando_LCD(DDRAM_LINEA_4); //esperar a que el buffer de transmisión
Datos_LCD("[1]ON [2]OFF"); //este vacio o disponible
Comando_LCD(DDRAM_LINEA_3); while(BusyUSART());
Datos_LCD(" Espacio D :ON "); //esperamos caracter del virtual terminal
while(1){ while(!DataRdyUSART());
Tecla=0; getsUSART(recepcion_eco1,4);
while(Tecla==0){Lee_Teclado();} Comando_LCD(0XC3);
switch(Tecla){ //opciones de iluminacion de A for(i=0;i<=8;i++)
case 0x01: {
while(BusyUSART()); Dato_LCD(recepcion_eco1[i]);
WriteUSART(0x71); }
i=0; */
while(i<5){ while(i!=1);
Delay10TCYx(80); i++;
Comando_LCD(DDRAM_LINEA_3); }
Datos_LCD(" Espacio D:ON "); void iluminacion(){
Delay10TCYx(80); int lectura,sele;
Comando_LCD(DDRAM_LINEA_3); Comando_LCD(DDRAM_LINEA_1);
Datos_LCD(" Espacio D: "); Dato_String_LCD(borrar);
Delay10TCYx(80); Comando_LCD(DDRAM_LINEA_2);
Comando_LCD(DDRAM_LINEA_3); Dato_String_LCD(borrar);
Datos_LCD(" Espacio D:ON "); Comando_LCD(DDRAM_LINEA_3);
i++; Dato_String_LCD(borrar);
} Comando_LCD(DDRAM_LINEA_4);
break; Dato_String_LCD(borrar);
case 0x02: while(i!=4){
while(BusyUSART()); Delay10TCYx(100);
WriteUSART(0x72); Comando_LCD(DDRAM_LINEA_1);
i=0; Datos_LCD(" ILUMINACION ");
while(i<5){ Comando_LCD(DDRAM_LINEA_2);
Delay10TCYx(80); Datos_LCD("================" );
Comando_LCD(DDRAM_LINEA_3); i++;
Datos_LCD(" Espacio D:OFF "); }
Delay10TCYx(80); inicioilu:
Comando_LCD(DDRAM_LINEA_3); Comando_LCD(DDRAM_LINEA_1);
Datos_LCD(" Espacio D: "); Datos_LCD("[1]A [2]B [3]C");
Delay10TCYx(80); Comando_LCD(DDRAM_LINEA_2);
Comando_LCD(DDRAM_LINEA_3); Datos_LCD("[4]D [5]E [6]F" );
Datos_LCD(" Espacio D:OFF "); while(BusyUSART());
i++; //esperamos caracter del virtual terminal
} while(!DataRdyUSART());
break; sele = ReadUSART();
case 0x0A: PORTBbits.RB6=1;
goto finABCD; switch(sele){
}//fin switch para habitacion B
}//fin while infinito case 0x41:
break; Comando_LCD(DDRAM_LINEA_1);
case 0x05: Datos_LCD(" HABITACION A ");
break; Comando_LCD(DDRAM_LINEA_2);
}//switch para seleccionar abitacion a iluminar Datos_LCD(" ");
;} contiluminacion();
void transmicion(void) goto inicioilu;
{ break;
//inicio de la transmición via UART///////// case 0x42:
// configuramos el EUSART para 9.6K baudios Comando_LCD(DDRAM_LINEA_1);
//Comando_LCD(0XC0); Datos_LCD(" HABITACION B ");
//Datos_LCD("tx="); Comando_LCD(DDRAM_LINEA_2);
//Comando_LCD(0X90);//posicion en el LCD Datos_LCD(" ");
//Datos_LCD("rx="); contiluminacion1();
// configuramos el EUSART para 9.6K baudios goto inicioilu;
OpenUSART(USART_TX_INT_OFF & break;
USART_RX_INT_OFF & case 0x43:
USART_ASYNCH_MODE & Comando_LCD(DDRAM_LINEA_1);
USART_EIGHT_BIT & Datos_LCD(" HABITACION C ");
USART_CONT_RX & Comando_LCD(DDRAM_LINEA_2);

141
Datos_LCD(" "); Comando_LCD(DDRAM_LINEA_2);
contiluminacion2(); Datos_LCD(" [APAGADO] ");
goto inicioilu; PORTBbits.RB1=1;
break; CoA=1;
case 0x44: break;
Comando_LCD(DDRAM_LINEA_1);
Datos_LCD(" HABITACION D "); case 0x42:
Comando_LCD(DDRAM_LINEA_2); Comando_LCD(DDRAM_LINEA_2);
Datos_LCD(" "); Datos_LCD(" [ENCENDIDO] ");
contiluminacion3(); PORTBbits.RB1=0;
goto inicioilu; CoA=2;
break; break;
case 0x45: case 0x58: goto saltofin1;
Comando_LCD(DDRAM_LINEA_1); break;
Datos_LCD(" HABITACION E "); }//FIN SWITCH
Comando_LCD(DDRAM_LINEA_2); } //FIN WHILE INFINITO
Datos_LCD(" "); //============fin de el envio de datos para conrtrol de iluminación
contiluminacion4(); saltofin1:
goto inicioilu; ;}
break; void contiluminacion2(){
case 0x46: int lectura;
Comando_LCD(DDRAM_LINEA_1); //=====inicia el envio de datos de control para iluminación
Datos_LCD(" HABITACION F "); while(1){
Comando_LCD(DDRAM_LINEA_2); // Tecla=0;
Datos_LCD(" "); // Lee_Teclado();
contiluminacion5(); while(BusyUSART());
goto inicioilu; //esperamos caracter del virtual terminal
break; while(!DataRdyUSART());
case 0x58: lectura = ReadUSART();
break; switch(lectura){
} case 0x41:
} Comando_LCD(DDRAM_LINEA_2);
void contiluminacion(){ Datos_LCD(" [APAGADO] ");
int lectura; PORTBbits.RB2=1;
//=====inicia el envio de datos de control para iluminación CoB=1;
while(1){ break;
// Tecla=0;
// Lee_Teclado(); case 0x42:
Comando_LCD(DDRAM_LINEA_2);
while(BusyUSART()); Datos_LCD(" [ENCENDIDO] ");
//esperamos caracter del virtual terminal PORTBbits.RB2=0;
while(!DataRdyUSART()); CoB=0;
lectura = ReadUSART(); break;
switch(lectura){
case 0x41: case 0x58: goto saltofin2;
Comando_LCD(DDRAM_LINEA_2); break;
Datos_LCD(" [APAGADO] "); }//FIN SWITCH
//PORTA=0x00; } //FIN WHILE INFINITO
PORTBbits.RB0=1; //============fin de el envio de datos para conrtrol de iluminación
Co=1; saltofin2:
if(CoA==1){PORTBbits.RB1=1;} ;}
if(CoB==1){PORTBbits.RB1=1;} void contiluminacion3(){
break; int lectura;
case 0x42: //=====inicia el envio de datos de control para iluminación
Comando_LCD(DDRAM_LINEA_2); while(1){
Datos_LCD(" [ENCENDIDO] "); // Tecla=0;
//PORTA=0x01; // Lee_Teclado();
PORTBbits.RB0=0; while(BusyUSART());
Co=2; //esperamos caracter del virtual terminal
break; while(!DataRdyUSART());
case 0x58: goto saltofin; lectura = ReadUSART();
break; switch(lectura){
}//FIN SWITCH case 0x41:
} //FIN WHILE INFINITO Comando_LCD(DDRAM_LINEA_2);
//============fin de el envio de datos para conrtrol de Datos_LCD(" [APAGADO] ");
iluminación PORTBbits.RB3=1;
saltofin: CoC=1;
;} break;
void contiluminacion1(){ case 0x42:
int lectura; Comando_LCD(DDRAM_LINEA_2);
//=====inicia el envio de datos de control para iluminación Datos_LCD(" [ENCENDIDO] ");
while(1){ PORTBbits.RB3=0;
// Tecla=0; CoC=2;
// Lee_Teclado(); break;
while(BusyUSART()); case 0x58: goto saltofin3;
//esperamos caracter del virtual terminal break;
while(!DataRdyUSART()); }//FIN SWITCH
lectura = ReadUSART(); } //FIN WHILE INFINITO
switch(lectura){ //============fin de el envio de datos para conrtrol de
case 0x41: iluminación

142
saltofin3:
;} case 0x41:
void contiluminacion4(){ Comando_LCD(DDRAM_LINEA_2);
int lectura; Datos_LCD(" [APAGADO] ");
//=====inicia el envio de datos de control para iluminación PORTBbits.RB6=1;
CoF=1;
while(1){ break;
// Tecla=0; case 0x42:
// Lee_Teclado(); Comando_LCD(DDRAM_LINEA_2);
while(BusyUSART()); Datos_LCD(" [ENCENDIDO] ");
//esperamos caracter del virtual terminal PORTBbits.RB6=0;
while(!DataRdyUSART()); CoF=2;
lectura = ReadUSART(); break;
switch(lectura){ case 0x58: goto saltofin6;
case 0x41: break;
Comando_LCD(DDRAM_LINEA_2); }//FIN SWITCH
Datos_LCD(" [APAGADO] "); } //FIN WHILE INFINITO
PORTBbits.RB4=1; //============fin de el envio de datos para conrtrol de iluminación
CoD=1; saltofin6:
break; ;}
case 0x42: void test(){
Comando_LCD(DDRAM_LINEA_2); int test;
Datos_LCD(" [ENCENDIDO] "); //while(i!=4){
PORTBbits.RB4=0; //Delay10TCYx(100);
CoD=2; Comando_LCD(DDRAM_LINEA_1);
break; Datos_LCD("================");
case 0x58: goto saltofin4; Comando_LCD(DDRAM_LINEA_2);
break; Datos_LCD(" PRUEBA DE ");
}//FIN SWITCH Comando_LCD(DDRAM_LINEA_3);
Datos_LCD(" CONECTIIDAD ");
} //FIN WHILE INFINITO Comando_LCD(DDRAM_LINEA_4);
Datos_LCD("================ " );
//============fin de el envio de datos para conrtrol de //i++;
iluminación //}
saltofin4: /*Comando_LCD(DDRAM_LINEA_1);
;} Dato_String_LCD(borrar);
void contiluminacion5(){ Comando_LCD(DDRAM_LINEA_2);
int lectura; Dato_String_LCD(borrar);
//=====inicia el envio de datos de control para iluminación Comando_LCD(DDRAM_LINEA_3);
while(1){ Dato_String_LCD(borrar);
// Tecla=0; Comando_LCD(DDRAM_LINEA_4);
// Lee_Teclado(); Dato_String_LCD(borrar);*/
while(BusyUSART()); while(1){
//esperamos caracter del virtual terminal while(BusyUSART());
while(!DataRdyUSART()); WriteUSART(0x50);
lectura = ReadUSART(); while(BusyUSART());
switch(lectura){ //esperamos caracter del virtual terminal
case 0x41: while(!DataRdyUSART());
Comando_LCD(DDRAM_LINEA_2); test = ReadUSART();
Datos_LCD(" [APAGADO] "); if(test==0x70){
PORTBbits.RB5=1; Comando_LCD(DDRAM_LINEA_1);
CoE=1; Dato_String_LCD(borrar);
break; Comando_LCD(DDRAM_LINEA_2);
Dato_String_LCD(borrar);
case 0x42: Comando_LCD(DDRAM_LINEA_1);
Comando_LCD(DDRAM_LINEA_2); Datos_LCD(" CONECTIVIDAD: ");
Datos_LCD(" [ENCENDIDO] "); Comando_LCD(DDRAM_LINEA_2);
PORTBbits.RB5=0; Datos_LCD("================");
CoE=2; while(i!=2){
break; Delay10TCYx(100);
Comando_LCD(DDRAM_LINEA_3);
case 0x58: goto saltofin5; Datos_LCD("!");
break; Delay10TCYx(100);
}//FIN SWITCH Comando_LCD(DDRAM_LINEA_3);
} //FIN WHILE INFINITO Datos_LCD("!! ");
//============fin de el envio de datos para conrtrol de Delay10TCYx(100);
iluminación Comando_LCD(DDRAM_LINEA_3);
saltofin5: Datos_LCD("!!! ");
;} Delay10TCYx(100);
void contiluminacion6(){ Comando_LCD(DDRAM_LINEA_3);
int lectura; Datos_LCD("!!!! ");
//=====inicia el envio de datos de control para iluminación Delay10TCYx(100);
while(1){ Comando_LCD(DDRAM_LINEA_3);
// Tecla=0; Datos_LCD("!!!!! ");
// Lee_Teclado(); i++; }
while(BusyUSART()); }
//esperamos caracter del virtual terminal Comando_LCD(DDRAM_LINEA_4);
while(!DataRdyUSART()); Datos_LCD("Prueba exitosa...");
lectura = ReadUSART(); }
switch(lectura){ }

143
ANEXO III: MANUALES DEL FABRICANTE

144
145
146
147
148
149
150
ANEXO IV: DISEÑO DE CIRCUITOS IMPRESOS

Figura A Circuito impreso del sistema terminal 1

Figura B Circuito impreso del sistema terminal 2

151
Figura C Circuito impreso del nodo central

152
ANEXO V: ESTRUCTURA DE TRAMAS
ESTRUCTURA DEL PAQUETE DE DATOS DE LA CAPA FÍSICA

La unidad de datos de protocolo de la capa física (PPDU, PHY Protocol Data Unit)
tiene el trabajo de encapsular todos los datos de los niveles superiores. Se fundamenta
en tres componentes:

 Cabecera de sincronización (syncronization header).


 Cabecera de la capa física (PHY header).
 Carga útil de la capa física (PHY payload).

Figura D Estructura del paquete de la capa fisica IEEE 802.15.4

Cabecera de Sincronización de PPDU

Ésta se encuentra formada por dos campos, el primero de ellos llamado “preámbulo” y
un delimitador de inicio de trama o start-of-frame delimiter por sus siglas en inglés.
El preámbulo esta integrado por 32 bits y permite a los nodos receptores
sincronizar los bits del paquete. Al delimitador de inicio de trama lo conforman 8
bits con los que se permite al receptor identificar el inicio de los bits de datos del
paquete.

153
Cabecera de la capa física

Contiene siete bits para definir la longitud de la carga útil de datos del paquete (en
bytes). La longitud puede tener como máximo de 127 bytes.

Carga útil de la capa física

Se trata de un solo campo y también es conocida como Unidad de Servicio de


Datos (PSDU Physcal Layer Service Data Unit). En la PSDU se encapsula la
trama MAC.

ESTRUCTURA DE LA TRAMA MAC

Se encuentra definida en la IEEE 802.15.4, esta diseñada para demostrar la simplicidad


y flexibilidad del protocolo. La trama MAC consta de tres partes:
 Cabecera de la trama (frame header).
 Carga útil de la trama (frame payload).
 Pie de la trama (frame footer).

Todos los componentes d e la trama MAC toman el nombre de protocolo de unidad de


datos MPDU (MAC Protocol Data Unit) que luego se ensambla en el paquete de la capa
física como el que se muestra en la figura E.

Figura E Estructura de la trama MAC

154
Cabecera de la trama

La cabecera MAC tiene un campo de control de trama y otro campo de


direccionamiento. El campo de control de trama define el tipo de trama, uso de
seguridad y el formato y contenido del campo de dirección. El campo de
direccionamiento contiene tanto direcciones de origen com de destino
especificadas dentro del campo de control de trama.
Carga útil de la trama

La carga útil de la trama contiene información acerca del tipo de trama y éste puede ser
dividido en forma lógica para su uso para las capas superiores.

Cola de la trama

El pie es en este caso el campo FCS (Frame Check Sequence) y sirve para
verificar la integridad de las tramas MAC.

TRAMA DE DATOS PARA LA SUBCAPA MAC

La trama de datos es usada por la subcapa MAC para transmitir datos y su


formato se muestra en la Figura F.

Figura F Formato de Trama de Datos

155
TRAMA DE ACUSE DE RECIBO

La trama de acuse de recibo es enviada por la subcapa MAC para confirmar la


recepción satisfactoria de la trama hacia el origen del mensaje. El formato de esta
trama se muestra en la Figura G.

Figura G Formato de la Trama de Acuse de Recibo

TRAMA DE COMANDOS MAC

La trama de comandos MAC es originada por la subcapa MAC y se encarga de todo


el control de transferencia de la MAC. La carga útil de la MAC (MAC payload)
tiene dos campos, el tipo de comando MAC (MAC command type) y el Valor del
Comando MAC (MAC command payload). EL Valor de Comando MAC contiene
información específica del tipo de comando en uso. La Figura muestra los detalles
del formato de Trama de Comando MAC.

Figura H Formato de Trama de Comando MAC

156
ANEXO VI: COSTOS DEL SISTEMA CONSTRUIDO

COSTO DE CONSTRUCCION DEL SISTEMA TERMINAL 1


ELEMENTO COSTO
Dispositivo XBee 310
Microcontrolador PIC18f452 100
Display de LCD 4x16 200
Teclado matricial 35
Placa fotosensible 75
Elementos electrónicos varios 20
TOTAL $740

COSTO DE CONSTRUCCION DEL SISTEMA TERMINAL 2


ELEMENTO COSTO
Dispositivo XBee 310
Microcontrolador PIC18f452 100
Display de LCD 4x16 200
Placa fotosensible 75
Elementos electrónicos varios 20
TOTAL $705

COSTO DEL NODO CENTRAL


ELEMENTO COSTO
Dispositivo XBee 310
Placa fenolica 30
Elementos electrónicos varios 20
C.I. MAX232 8
TOTAL $368

157
BIBLIOGRAFÍA
[1] Romero, C., Vásquez, F. y De Castro, Domótica e Inmótica: Viviendas y edificios
inteligentes; Ra-Ma; Madrid, 2005.

[2] www.domodesk.com

[3]Tesis
BLUETOOTH
Gonzalez Guillen, Angel
Calzada Flores, Edgar Andres
Ortiz Luna, Ricardo
ESIME-CULHUACAN

[4]ZigBee Wireless Networking


ZigBee Alliance
Drew Gislason

[5] Articulo:
Performance Study of IEEE 802.15.4 Using Measurements and Simulations
Marina Petrova, Janne Riihijarvi, Petri Mahonen and Saverio Labella
Department of Wireless Networks
RWTH Aachen University
Kackertstrasse, Aachen, Germany

[6]Tesis Doctoral
Protocolo de encaminamiento en origen
con identificadores no únicos para redes
Ad-Hoc de dispositivos con recursos limitados
Miguel Angel Ortuno Perez

[7] IEEE 802.15.4 http://standards.ieee.org/getieee802/download/802.15.4-2006.pdf

[8] ZigBee Alliance:


http://www.zigbee.org/en/index.asp

[9] Hands-On Implementing 802.15.4 With microcontrollers


ZigBee Alliance
Fredy Eady

[10]Tesis: ZigBee aplicado a la transmission de datos de sensores biomédicos


Iván Barneda Faudot

[11] XBee
User guide

[12] ATAVRRZ200 Demonstration Kit


User guide

158

Você também pode gostar