Escolar Documentos
Profissional Documentos
Cultura Documentos
“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:
ASESORES:
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.
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.
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
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
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
ÍNDICE DE TABLAS
CAPITULO I
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
Objetivos específicos
Crear una interfaz grafica capaz de interactuar con el usuario con el mínimo de
esfuerzo.
Justificación
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
ANTECEDENTES
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
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.
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.
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.
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.
6
Fig. B Distancias entre dispositivos dentro de una habitación respectivamente uno de otro.
Campo de aplicación
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.
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.
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
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.
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.
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.
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.
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:
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
g1(t) g2(t)
Modulador Filtro pasa
balanceado bajas.
Recuperador de
la Portadora.
17
(1.1)
(1.2)
(1.3)
(1.4)
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.
– (1.5)
18
(1.6)
(1.7)
(1.8)
− − ( + ) (1.9)
19
− − ( + ) (1.10)
De esta forma el espectro de una señal BPSK se representa como se muestra en la
figura:
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
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:
0 1 -45º
1 0 +135º
1 1 +45º
Q Q
I I
1 0 1 1
90º
Q Q
I I
0 0 0
1
22
1.4.2.2 Demodulador QPSK
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
De forma matemática el proceso para la demodulación QPSK para los posibles dibits
que se pueden transmitir es el siguiente:
23
Si analizamos por el canal Q se obtiene:
(1.12)
Para el canal I:
(1.13)
(1.14)
(1.15)
24
Para el canal I:
(1.16)
. (1.17)
(1.18)
Para el canal I:
(1.19)
25
QI=11 para este dibit la señal analógica es la siguiente:
. (1.20)
(1.21)
Para el canal I:
(1.22)
26
1.4.3 Modulación OQPSK
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:
28
1.4 Tecnologáias de comunicación utilizadas en domótica
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.
Los elementos del EIB pueden comunicarse entre sí, sin importar el fabricante
del elemento.
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.
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.
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.
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.
Redes de alta densidad de nodos. ZigBee permite que las redes manejen hasta
65536 dispositivos [4].
32
1.5 Comparativa general
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
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
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.
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
36
transceptores trabajan bajo una de los tres rangos de frecuencias ya anteriormente
mencionados:
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.
38
Fig. 2.2 RSSI en ambientes internos
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.
40
Fig. 2.5 PER para ambientes externos.
41
IEEE 802.15.4
ENLACE DE DATOS
CONTROL DE ENLACE DE DATOS
(LLC)
SUBNIVEL DE CONVERGENCIA
NIVEL FÍSICO
42
Tres bandas, 27 canales especificados:
NUMRO SENSIBILIDAD
TRANSFERENCIA
FRECUENCIA COVERTURA DE DE MODULACION
DE DATOS
CANALES RECEPCION
868.3 A 870
EUROPA 20 Kbps 1 -92 dBm BPSK
MHz
Características de la comunicación:
a) Estructura simple.
b) Entrega de datos segura ya que se hace uso de :
43
2.2.2 Niveles especificados por ZigBee Alliance
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.
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
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:
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.
Coordinador de red.
Dispositivo de función completa (FFD).
Dispositivo de función reducida (RFD).
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.
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).
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.
Coordinador de red.
Dispositivo de función completa (FFD).
Dispositivo de función reducida (RFD).
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.
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:
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.
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:
51
Fig. 2.14 Modulo ATMEL
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.
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]
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:
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.
55
Tabla 3.1 Comparativa entre los dispositivos ZigBee en el mercado
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
COMANDOS
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
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.
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.2 Microcontroladores
59
PERIFERICO PERIFERICO
1 2 VCC
MICROPROCESADOR
CLK
MEMORIA MEMORIA
GND
1 2
I/O CONTROL
60
3.2.1 Familias de microcontroladores
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:
Memoria RAM suficiente para guardar los valores adquiridos de las señales
tanto de entrada como de salida, de tipo analógicos como digitales
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.
PIC18F452
Memoria de programa FLASH (14 bits) 32K
Interrupciones 18
Timers 4
63
3.3 Pantalla de LCD de 4 x16
Bits de control
PIC
LCD
18F45
2
Bits de datos
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
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.
66
3.6 MPLAB C18
67
3.7 Software X-CTU
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.
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
70
3.9.1 Diseño del programa para el primer microcontrolador
INICIO
Verificar se presiona
alguna tecla
No
¿Tecla
INICIO
presionada?
Si
Convertir en código
ASCII la tecla oprimida.
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:
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:
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
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
FIN
ENTRADA, GARAGE
CAJA FUERTE, BODEGA
A B C D
FIN
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
FIN
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
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
FIN
Lámpara N
OFF ¿6Bh?
ON
Enviar 0’s
Enviar 1’s
FIN
77
TEMPERATURA TEST
¿Finalizo? ¿Finalizo?
Desplegar en la
pantalla de LCD. ¿70h?
FIN
Enviar por la USART
un 50h
FIN
78
VENTILACIÓN
Lectura de los
datos recibidos por
el modulo XBee
FIN
Ventilador N
OFF ¿41h?
ON
Enviar 0’s
Enviar 1’s
FIN
79
3.11 Acoplamiento óptico entre un sistema digital y una etapa de potencia
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.
80
Fig. 3.23 Figura y simbolo de un TRIAC
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)
83
Fig. 4.2 Diseño en 3D de la Casa propuesta para la implementación.
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.
85
Fig. 4.4 Circuito Impreso del coordinador
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.
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.
87
dirección propia con la cual otros módulos pueden intercambiar datos. La figura 4.7
muestra la forma de configurar al modulo.
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.
89
Fig. 4.9 Diagrama esquematico del nodo terminal
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
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.
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.
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.
95
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
Fig. 4.18 Diagrama de conexión para el giro en un solo sentido del L293B
97
4.7 La transmision serial del PIC 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.
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
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
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.
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.
103
4.8.3 Monitoreo de temperatura
104
4.8.4 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
106
4.9.1 Monitoreo de temperatura
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
108
4.10 Desarrollo de la interfaz grfáfica
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
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
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
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.
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.
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
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.4 Submenú para la opcion “ACCESOS”.
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.
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.
120
5.2 Prueba del sistema terminal 2
121
Fig. 5.10 Primer pantalla presentada por el nodo terminal 2.
Fig. 5.11 Pantalla presentada cuando es seleccionada la segunda opción del menú.
122
5.3 Prueba del software
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.
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.
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.
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.
129
CONCLUSIONES
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.
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;
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;
136
Comando_LCD(DDRAM_LINEA_3);// situarse en la linea 3 de la LCD fintemperatura:
// Dato_LCD('0x69'); ;}//fin case 3
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);
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 ");
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
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:
É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.
154
Cabecera 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.
155
TRAMA DE ACUSE DE RECIBO
156
ANEXO VI: COSTOS DEL SISTEMA CONSTRUIDO
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
[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
[11] XBee
User guide
158