INSTITUTO POLITECNICO NACIONALESCUELA SUPERIOR DE INGENIERIA MECANICA Y ELECTRICA REPORTE TÉCNICO QUE PARA OBTENER EL TITULO DE: INGENIERO EN COMUNICACIONES Y ELECTRÓNICA. P R E S E N T A: CASTILLO BAUTISTA BRAULIO ANTONIO ASESORES: Ing. Armando Martínez Ríos Ing. Carlos Barroeta Zamudio MEXICO, D.F. 2009 “Implementación de un protocolo de comunicación inalámbrica para el control de dispositivos en forma remota de una casa domótica” I II AGRADECIMIENTOS Quiero agradecer a la vida y a dios por haberme dado lo que he necesitado, por haberme puesto dentro de una familia maravillosa, me ha dado la satisfacción de culminar mis estudios y día con día me da grandes alegrías A mis padres Braulio Castillo Ortíz y Virginia Bautista Márquez a quienes amo, respeto y admiro y son quienes me han enseñado a esforzarme por alcanzar mis metas, gracias por haber estado presentes en todo momento, por su apoyo incondicional y sacrificios sobrehumanos que con nada pago, los amo. Agradezco a mi hermana Diana Carolina con quien he compartido grandes momentos de felicidad, quien me ha tendido la mano apoyándome a lo largo de mis estudios y en este proyecto aún a costa de mucho esfuerzo, mil gracias. A mi hermanos José Marcos quien cada día me motiva a seguir adelante para ser de el un buen ejemplo. A mis abuelos que en paz descansen quienes con su vida llena de nobleza me heredaron grandes experiencias. A mis asesores Carlos Barroeta y Armando Martínez quienes me apoyaron en la realización de este proyecto. Al Instituto Politécnico nacional por haberme abierto sus puertas para cumplir con mi formación y darme grandes herramientas para la vida. III Í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 IV 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 V 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 VI ÍNDICE DE FIGURAS Fig. A Dispositivos interconectados por medio de una red PAN. 6 Fig. B Distancias entre dispositivos dentro de una habitación respectivamente uno de otro. 7 CAPITULO I Fig. 1.1 Modulación PSK: en la parte superior se observa la señal binaria de información mientras que en la parte inferior la señal modulada BPSK. 16 Fig. 1. 2 Esquema de un Modulador BPSK 17 Fig. 1.3 Demodulador BPSK. 17 Fig. 1.4 Tren de pulsos binario. 18 Fig. 1.5 Espectro de Amplitud de una señal periódica de BPSK. 20 Fig. 1.6 Modulador QPSK. 21 Fig. 1.7 Diagrama de fasores para la modulación QPSK. 22 Fig. 1.8 Demodulador QPSK. 23 Fig. 1.9 Alineación de los bits con el retraso introducido en uno de los canales. 27 Fig. 1.10 Modulador OQPSK. 28 Fig. 1.11 Esquema de Conexión con EIB 29 CAPITULO II Fig. 2.1 Tasa de error de bit contra relación señal a ruido en los estándares IEEE 802.15.4, IEEE 802.11 e IEEE 805.15.1. 38 Fig. 2.2 RSSI en ambientes internos 39 Fig. 2.3 RSSI en ambientes externos (derecha). 39 Fig. 2.4 PER en ambientes internos. 40 Fig. 2.5 PER para ambientes externos. 41 Fig. 2.6 Capas que controlan el estándar IEEE 802.15.4. 42 Fig. 2.7 Canales del estándar IEEE 802.1.4 42 Fig. 2.8 Capas del Protocolo Zigbee. 45 Fig. 2.9 Diagrama Red ZigBee con topología tipo estrella. 46 Fig. 2.10 Diagrama Red ZigBee con topología tipo árbol. 47 Fig. 2. 11 Diagrama. Red ZigBee con topología tipo malla. 48 Fig. 2.12 Transceiver CC2480 49 Fig. 2.13 eZ430-RF2480 Development Tool 50 Fig. 2.14 Modulo ATMEL 52 Fig. 2. 15 Modulo EasyBee ZigBee 52 Fig. 2.16 Modulos XBee de Maxstream 53 CAPITULO III Fig. 3.1 Modos de operación de los modulos XBee 57 Fig. 3.2 Esquema de un microcontrolador. 60 VII 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 VIII 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 IX APENDICES Figura A Circuito impreso del sistema terminal 1 151 Figura B Circuito impreso del sistema terminal 2 151 Figura C Circuito impreso del nodo central 152 Figura D Estructura del paquete de la capa fisica IEEE 802.15.4 153 Figura E Estructura de la trama MAC 154 Figura F Formato de Trama de Datos 155 Figura G Formato de la Trama de Acuse de Recibo 156 Figura H Formato de Trama de Comando MAC 156 ÍNDICE DE TABLAS CAPITULO I Tabla 1.1 Comparativa general de diferentes tecnologías inalámbricas. 33 CAPITULO II Tabla 2.1 Frecuencia de trabajo ZigBee 43 CAPITILO III Tabla 3.1 Comparativa entre los dispositivos ZigBee en el mercado 56 Tabla 3.2 Familia de microcontroladores en el mercado 61 Tabla 3.3 Características del PIC18F45 63 Tabla 3.4 Pines de la LCD 64 Tabla 3.5 Asignación de código para filas del teclado 72 Tabla 3.6 Valores asignados a cada tecla y su equivalencia en ASCII 72 CAPITULO IV Tabla 4.1 Caracteres utilizados para la inicialización de la transmisión de datos del modo serial 99 Tabla 4.2 Valores hexadecimales enviados para los accesos. 102 Tabla 4.3 Valores hexadecimales enviados para la ventilación. 102 Tabla 4.4 Valores correspondiestes al control de iluminación 106 Tabla 4.5 Descripción de los elementos de la interfaz gráfica. 111 ii Objetivo general Determinar los elementos necesarios para la implementación de un sistema de comunicación inalámbrica para el control y monitoreo de sensores o actuadores en una casa domótica. Objetivos específicos Investigar un sistema de comunicación inalámbrico que cuente con las características necesarias para la optimización al máximo de la energía Seleccionar el protocolo de comunicación inalámbrico que mejor se adapte a las características de una vivienda media. Implementar el sistema de comunicación utilizando dispositivos capaces de cubrir un área mínima y máxima respecto a los inmuebles donde estos puedan ser implementados. Crear una interfaz grafica capaz de interactuar con el usuario con el mínimo de esfuerzo. Justificación La evolución de los sistemas de comunicación como en general de la electrónica se ha hecho a pasos gigantes, motivo por el cual su uso se extiende a muchos sectores para los cuales se han desarrollado protocolos capaces de satisfacer las necesidades particulares de éstos. En el campo de la domótica no es la excepción aunque el campo de ésta es muy amplio, abarcando desde edificios inteligentes hasta casas habitación, es en este último rubro donde el avance ha sido un tanto lento ya que se había encontrado abandonado por las grandes empresas dedicadas al sector. En estos últimos años se han desencadenado una serie de avances para este sector olvidado, desarrollándose diferentes aplicaciones que involucran el uso de tecnologías móviles. iii Una de las principales necesidades que muchas personas buscan es el confort, la seguridad, el ahorro de energía y el control de todo su entorno, para esto se requiere evidentemente de toda una infraestructura de automatización y con ello un sistema que permita controlar toda esta tecnología con el menor esfuerzo, es decir que la forma de manejar todo no le represente una pérdida de tiempo. Existen en el mercado actual tecnologías móviles que se prestan para su uso en domótica debido a sus características propias, una de estas tecnologías recibe el nombre de “ZigBee”, la cual se enfoca para aquellas aplicaciones que no requieren una alta tasa de transferencia, como lo es un sistema de comunicaciones capaz de transmitir señales de control para monitoreo de sensores y control de dispositivos. El implementar un sistema domótico en una casa de tipo medio podría representar un gasto económico considerable, por lo que es de gran ganancia trabajar con tecnologías que sean de un costo bajo a lo mas que se pueda. ZigBee es una tecnología que ofrece esta posibilidad, ya que los dispositivos que se encuentran actualmente en el mercado tienen costos reducidos. Sin duda una de las principales razones por la que se ha decidido hacer uso de ZigBee es el tamaño que sus dispositivos poseen y su ultra bajo consumo de energía, cabe destacar que el tamaño de los dispositivos en este sector es muy importante, esto debido a que la estética en esta área es siempre importante, por lo que los dispositivos de tamaño reducido ayudan mucho en la preservación de este aspecto. 1 INTRODUCCIÓN 2 INTRODUCCIÓN Pensado en un ámbito de tecnología en el hogar, se pretende hacer uso de las nuevas tecnologías con el fin de mejorar la calidad de vida mediante la comodidad que la tecnología ofrece. Para ello, se debe plantear desde un principio los objetivos que se pretenden alcanzar y los beneficios que con ellos queremos obtener. Los sistemas de comunicación en el hogar son una herramienta que brinda confiabilidad a los usuarios ya que además se encargan de la seguridad. Los sistemas de seguridad también evolucionan cada día y su sistema de comunicación alambico ha sido paulatinamente sustituido por sistemas inalámbricos. Respecto a la automatización, esta comienza en la industria aeronáutica y la automotriz, donde comenzaron a utilizar diversas automatizaciones con cierto grado de integración. Después siguieron los edificios comerciales y administrativos para finalmente ser las construcciones educacionales y viviendas los sitios en donde se pretendido introducir procesos cada vez más inclinados hacia la tecnología. ANTECEDENTES En nuestros días es esencial utilizar la tecnología para cubrir todas nuestras necesidades. En ingeniería se debe usar esa tecnología en beneficio de la humanidad para poderle brindar comodidad y así hacerle la vida más fácil, utilizando a nuestro entorno y modificarlo para cumplir con el objetivo, sin dañar al medio ambiente o tratar de hacerle el menor daño posible. Los primeros intentos de crear un conjunto de normas y protocolos sobre Domótica se remonta a principio de los ochentas donde se desarrollaron diversos proyectos, en el año de 1984 es lanzado el proyecto “Smart House” por la NAHB: National Association of Home Builders), el sistema antes mencionado se basa en la utilización de un cable unificado que sustituye a todos los diversos sistemas pueden existir en una vivienda como pueden ser electricidad, periféricos de audio y video, teléfono, alarmas etc. para lo cual posteriormente se 3 crearon tecnologías de comunicación tanto cableadas como inalámbricas con el fin de facilitar la interacción de dispositivos dentro de una vivienda. Una de las desventajas de las tecnologías mencionadas era su alto costo que no era justificado, pues siempre se ha considerado como un lujo, es por eso que las tecnologías de comunicaciones con un enfoque dirigido a aplicaciones como la que se pretende en este trabajo no habían sido tan populares. En este trabajo se pretende hacer uso de una tecnología diferente que no necesite ser alambrada, esto con la principal meta de crear una aplicación más estética, eficiente y sobretodo económico. ESTRUCTURA DE LA TESIS La estructura de este trabajo de tesis contempla el siguiente temario: Capítulo 1: Se hace énfasis de la teoría sobre la domótica y se da a conocer teóricamente elementos que forman parte de ella, asimismo se mencionan diversas tecnologías en comunicaciones que han sido utilizadas para la domótica, Capitulo 2: En este capítulo se describe la forma en que trabaja la tecnología ZigBee así como sus características y funciones. Capítulo 3: Aquí se expone el diseño del proyecto así como los diversos componentes que intervienen en él, desde como inicio el plan y así mismo todos los pasos que se siguieron hasta lograr los objetivos. Capítulo 4: Se mencionan todos los pasos para llevar a cabo el diseño planteado en el capítulo anterior y se especifica la manera en la que se ha realizado tanto el hardware como el software. Capítulo 5: Se muestran los resultados finales obtenidos del proyecto. 4 PLANTEAMIENTO DEL PROBLEMA 5 Hoy en día la problemática de comunicaciones en el sector de la domótica se ha vuelto muy diversa debido a que el principal problema es el costo que genera la implementación de la tecnología necesaria para la implantación del sistema de comunicación que controle o monitoree cada una de las actividades del hogar, en gran medida el costo es generado por la necesidad de instaurar protocolos que ofrezcan seguridad y por la cantidad de energía que estos consumen, en base a esto se hace presente encontrar una tecnología y un protocolo capaces de tener un ultra bajo consumo de energía y de esta manera reducir los costos que esto genera. Una vez identificado el protocolo a trabajar será necesario aplicarlo a las necesidades que requiera una casa o edificio en cuanto a la transmisión de datos de control o de monitoreo de sensores. La aplicación a desarrollar mediante el protocolo seleccionado deberá ser de utilidad para el sector domótica y deberá optimizar cada una de las tareas para los cuales se requiera el sistema de comunicación. A menudo los datos transmitidos necesitan ser observadas y analizadas por el ser humano, tales como temperatura, humedad, presencia en una habitación determinada , sobre todo cuando se trata de un sistema enfocado a seguridad, es por esto que se hace presente la necesidad de obtener una interfaz grafica que permita llevar a cabo la observación del estado de cada uno de los sensores monitoreados así como una simulación que permita emular las diferentes situaciones que podrían hacerse presentes dentro de un hogar o edificio. Primeramente es necesario definir el tipo de protocolo que se necesita utilizar para las aplicaciones de comunicación entre los diferentes dispositivos que la domótica requiere, para lo cual es necesario analizar cuál es el más viable de acuerdo a los costos y consumo de energía principalmente. La problemática a nivel de aplicación surge con la necesidad de intercomunicar los diferentes dispositivos de un hogar ya sea directamente o a manera de sensores según sea el caso, por lo cual se necesita crear una red que pueda transportar todos los datos de todos los sensores y dispositivos que existan dentro de una casa o edificio, la figura 1 muestra una posible red instaurada entre dispositivos existentes en una sala, el objetivo de intercomunicarlos es con el fin 6 de saber fácilmente cuando alguno tiene alguna falla además de poder tener diversos caminos por los cuales la información pueda viajar. Fig. A Dispositivos interconectados por medio de una red PAN. Debido a la gran diversidad que existe en cuanto al tamaño de la habitación a intercomunicar y así mismo la distancia entre las diferentes habitaciones, surge la necesidad de verificar si la tecnología a usar soporta satisfactoriamente la distancia de separación entre ellas, además de esto debe ser muy económico y no decrementar su potencia de manera considerable para poder realizar el envío y recepción de datos. La distancia de separación entre cada uno de los dispositivos que se utilicen debe cubrir al menos 30 metros en interiores para garantizar el envío y recepción de los datos, para lo cual se ha establecido que una habitación promedio nunca excede de un volumen máximo de 25 metros cuadrados, es por esto que se pretende encontrar una tecnología que cumpla con las expectativas. La distancia requerida entre dispositivos de una habitación a otra es muy corta debido a que generalmente no tienen más de 5 metros de largo, Por lo tano la tecnología seleccionada deberá cubrir al menos el largo de 6 habitaciones que pudiera tener una casa . 7 Fig. B Distancias entre dispositivos dentro de una habitación respectivamente uno de otro. Campo de aplicación El campo de aplicación comprende las instalaciones de aquellos sistemas que realizan una función de automatización para diversos fines, como gestión de la energía, control y accionamiento de receptores de forma centralizada o remota, sistemas de emergencia y seguridad en edificios, entre otros, con excepción de aquellos sistemas independientes e instalados como tales, que puedan ser considerados en su conjunto como aparatos, por ejemplo, los sistemas automáticos de elevación de puertas, persianas, toldos, cierres comerciales, sistemas de regulación de climatización, redes privadas independientes para transmisión de datos exclusivamente y otros aparatos. No obstante, a las instalaciones excluidas anteriormente, cuando formen parte de un sistema más complejo de automatización, gestión de la energía o seguridad de viviendas o edificios, se les aplicarán los requisitos de la presente Instrucción además los requisitos específicos reglamentarios correspondientes. 8 CAPITULO I LA DOMOTICA Y LAS COMUNICACIÓNES 9 1.1 Domótica y casas inteligentes Una de las principales necesidades del ser humano es la vivienda, debido a esto todo el tiempo hay una constante búsqueda de un hogar que asegure la comodidad, el confort y seguridad y así lograr la optimización de las tareas de la casa ha sido siempre una de las búsquedas del hombre. Este conjunto de necesidades han llevado al ser humano a una constante búsqueda tecnológica que cubra cada una de estas exigencias y es así como se ha llevado a la invención de múltiples aparatos eléctricos y electrónicos para el hogar. Todos los aparatos que forman parte de nuestra vida cotidiana en algunos casos son demasiados y debido al ritmo de vida actual las personas deben llevar una vida más organizada para poder solventar todas sus ocupaciones y ahorrar lo más posible tiempos. En la antigüedad las personas dedicaban tiempo a tareas que hoy en día no toman tiempo y pueden efectuarse en tan solo unos minutos, esto da como resultado final tiempo libre para realizas otro tipo de acciones, y esto continuamente se transforma en un ciclo en el cual el ser humano busca obtener más tiempo. Es evidente la evolución de la sociedad a las nuevas tendencias que marcan una necesidad imponente de una gama de soluciones a problemas relacionados con actividades simples pero que las personas consideran por su misma simplicidad que estas ocupen lo menos posible de su tiempo. La tecnología ha jugado un papel muy importante para la solución de gran parte de los problemas mencionados, pues ha sido ella quien ha provisto de diversas soluciones y alternativas que han permitido a lo largo de los años la mejora de múltiples tareas. A partir de la su evolución, se han ido modificando muchas formas de realizar procesos en todos los ámbitos ya sea en la industria o en el hogar, y en el caso de la industria esta posee un centro de atención muy grande por parte de del sector de la automatización, no así con el hogar, ya que pocos años son los que han transcurrido desde las primeras innovaciones en este sector, y menos tiempo aún desde que el 10 sector de las comunicaciones ha enfocado aplicaciones enfocados para su uso domestico. Dentro de toda esta nueva gama de tecnologías enfocadas al uso domestico surge un nuevo concepto denominado “casa inteligente” el cual engloba en concreto cuatro grandes áreas: la electrónica, la informática, la arquitectura y las telecomunicaciones. Un concepto que está íntimamente relacionado con la tecnología enfocada al hogar, es conocido como “Domótica”, cuya etimología nos dice el significado concreto de esta palabra, por un lado “domus” que significa casa, por otro lado se hace una relación entre este término y la palabra “informática”, esto significa que el termino. Domótica” hace referencia a todo un conjunto de tecnologías informáticas y de comunicaciones que permiten automatizar y gestionar diferentes aplicaciones dentro de una instalación de tipo domestico con el fin de proporcionar una mejor calidad de vida a las personas. La domótica surge primeramente con la iniciativa de lograr realizar tareas concretamente de automatización con el objetivo de reducir el trabajo humano y facilitar la realización de distintas tareas, sin embargo estas tareas en principio solo habían representado más gastos a quienes implementaban estas nuevas soluciones, y es en parte por esta razón que el desarrollo de aplicaciones a la domótica se ha realizado de una manera lenta, en la actualidad han surgido aplicaciones que buscan además de lo anterior, lograr realizar acciones que permitan justificar o retribuir de alguna manera el gasto generado de la instalación de todos los artefactos utilizados en la aplicación de nuevos procesos. Los campos que la domótica cubre actualmente son: ahorro de energía, comunicaciones, seguridad. 1.1.1 El ahorro de energía Hoy en día son muchos los dispositivos que se utilizan en el hogar que consumen grandes recursos energéticos por lo que este factor se suma a uno de los principales objetivos de la domótica, se trata de la generación de dispositivos capaces de de controlar ciertos procesos sin desperdiciar energía, tal es el caso de el control de la climatización, la regulación de la iluminación de acuerdo a la zona, la iluminación por 11 detección de presencia, la desconexión automática de dispositivos cuando estos no se usan, todo esto aunado con la construcción de dispositivos con un bajo consumo de energía constituyen una parte de las características que se pretenden actualmente en el sector domótica, todo esto con la meta de ahorrar gastos generados a causa del consumo energético y que puede resultar a mediano y largo plazo un ahorro muy significativo . 1.1.2 Comunicaciones En este sector la domótica juega un papel de tipo estratégico ya que sirve como un vinculo con aplicaciones que posiblemente generen gastos en recursos humanos o en tiempo, tal es el caso del mano a distancia de diversos servicios como alarmas, control de acceso, activación de válvulas hidráulicas, etc., algunas de las actividades que se requieren realizar implican gastos significativos respecto al tiempo en que estas se ejecutan. Dicho problema se resuelve con un buen sistema de comunicación enfocado a estas necesidades. En domótica, todos los servicios tienen que estar comunicados entre sí, basado en redes de comunicación esto con el fin de asegurar premisas tales como seguridad, confort y comunicación en la vivienda. Un sistema que es destinado a ser utilizado por la Domótica, tienen sus bases de funcionamiento en tres objetivos particulares: ahorro de energía, confort y seguridad. 1.1.3 Seguridad En materia de seguridad, la domótica ha sido de mucha utilidad, esto debido a que todo el conjunto de sistemas y dispositivos se configuran siempre siguiendo este objetivo por lo que la seguridad de los habitantes está siempre presente. Estos sistemas permiten que el proceso de seguridad sea un trabajo conjunto entre las actividades de seguridad llevadas a cabo por el habitante y los procesos de seguridad del sistema inteligente; generando de esta manera en la persona que habita en la casa inteligente una sensación de seguridad y tranquilidad, lo cual se traduce en confort. La seguridad es un rubro que necesita ser distribuido muchas veces en diferentes áreas, 12 las principales son aquellas que requieren de cuidados especiales ya que por su naturaleza podrían resultar peligrosas si son mal manipuladas, o bien la seguridad pone especial atención a el monitoreo de sensores cuya actividad denota peligro de cualquier índole. La seguridad en Domótica debe contar entre otros: alarmas de gas, alarmas de humo, alarmas de fuego, sensores de movimiento, alarmas policíacas y alarmas de tipo médicas. 1.2 Definición de vivienda inteligente Este concepto engloba todas aquellas acciones que se realizan comúnmente en el hogar tales como encender las luces, la climatización, el audio, la TV, sistemas de riego, sistemas de seguridad domestica, entre otras muchas tareas. El tema principal de las viviendas inteligentes es la automatización y control de todos estos servicios de manera inalámbrica. Sin embargo en general todo esto gira en torno a una sola tarea general que es: la realización con bajo esfuerzo humano, es decir, se trata de hacer por medio de las diferentes tecnologías el trabajo que el ser humano podría hacer. Un proyecto de casa inteligente puede ser similar a una actividad como la decoración de la misma, uno mismo puede comenzar desde lo más básico y posteriormente agregar más adaptaciones de acuerdo con las necesidades que se tengan o vayan surgiendo así mismo de acuerdo al presupuesto que se tenga. Las principales ventajas en general de una vivienda inteligente son: Confort: Al permitir al usuario tener el control de dispositivos del hogar de manera remota o el programar todas las actividades para que estas se realicen de manera automática, es un beneficio que permitirá realizar tareas de manera fácil y sobre todo el tiempo podrá ser aprovechado para realizar otras tareas. Ahorro de energía: Sin duda este aspecto es primordial en base a que está directamente relacionado con el costo. Si un dispositivo consume demasiada energía implicara un costo elevado ya que la energía es uno de los recursos en 13 los cuales se busca siempre ahorrar para que de manera consecuente el gasto en dinero disminuya. Además de lo anterior mediante este beneficio es posible que a mediano o largo plazo sea más rentable hacer uso de un sistema domótico. Economía: Un sistema de este tipo puede implementarse de manera gradual, y es por esto que puede adaptarse a las necesidades especificas que se tengan, por lo que de este modo se evita tener recursos innecesarios que implican un gasto mayor, además del ahorro de energía que nos permite obtener constantes ahorros en cuanto a recursos económicos. Seguridad: Uno de los aspectos primordiales que se buscan en todos los hogares y por supuesto edificios ya que permiten tener el control total de la vivienda de manera remota haciendo más fácil la manipulación de un sistema de seguridad, y sobre todo ahorra tiempos al permitir una inspección de todo el lugar sin tener que ir hasta el físicamente. 1.3 Sistemas Domóticos Los sistemas domóticos poseen una serie de características que los hace diferentes de otros tipos de sistemas informáticos. En un sistema domótico, la interacción con el entorno físico del sistema, es un factor muy importante. En el desarrollo de estos sistemas es necesario establecer mecanismos, para que éste pueda extraer información del entorno y realizar acciones sobre él. Debido a esto, en el sistema domótico existirán dispositivos que no serán computadoras lo cual no es habitual en otros tipos de sistemas informáticos, como pueden ser las aplicaciones de gestión o los sistemas puramente informáticos. Por otra parte, hay que destacar que un aspecto importante de los sistemas domóticos, es la integración de los distintos tipos de servicios que debe ofrecer: automatización, seguridad, comunicaciones, multimedia, etc. Para ello se valdrá tanto de elementos hardware, como elementos software. Por todo esto, es necesario un lenguaje de modelado específico, que tenga en cuenta estas características. A grandes 14 rasgos un recinto con entorno inteligente posee dos sistemas principales, los cuales deben de trabajar de manera conjunta: El sistema de administración de toda la casa y el sistema para la administración de habitaciones. A) Sistemas de administración de toda la casa: Contempla los sistemas de gestión y control propios de la casa y de las prestaciones indirectas que la mismo facilita a los usuarios, entre ellas: Control ambiental: alumbrado. Control energético. Seguridad: Circuito Cerrado de Televisión, alarmas de incendio e intrusos. Control de acceso: personas o visitantes. Sistema de altavoces-sonido. Control de sensores. Control de motores. B) Sistema para la administración de habitaciones: En este caso se incluyen los elementos necesarios para una adecuada automatización del ambiente individual, ya sea por prestación directa al usuario o bien teniendo una instalación lo suficientemente flexible y amplia, para que el usuario pueda instalar sus propios equipos con posibilidades de interconexión, entre ellas: Control de alarmas: Permite gestionar las operaciones relacionadas por las distintas clases de indicadores. Vigilancia de intrusos: Se trata de identificar la presencia de personas en recintos no autorizados y avisar en el momento en que se detecte. Vigilancia mediante cámaras: permite al usuario ver determinados puntos del recinto de forma local o remota, mediante cámaras distribuidas estratégicamente. Esto permitirá al usuario vigilar la presencia de extraños, 15 trabajadores, etc., incluyendo la grabación de las imágenes que tome la cámara. Esta activación podrá realizarse de manera manual en el momento que el cliente lo crea conveniente, mediante señales de alarmas, o podrá programarse para que se lleve a cabo en lapsos de tiempo determinados por el usuario. Un punto considerado relevante e innerente a los sistemas anteriores, es lo referente a las soluciones de automatización, entre las principales podemos citar las siguientes: Actuacion remota sobre dispositivos: encendido de boma de agua, desactivacion selectiva de cargas, sistemas de riego, iluminacion, persinas, etc Alarmas por eventos: deteccion y envio de mensajes por alarmas. Programacion de automecanismos: inicio programado de riego, control automatico temporizado de persianas, etc. [1] 1.4 Técnicas de modulación usualmente usadas en dispositivos de comunicación para domótica Dentro del ambiente de comunicaciones en el ambiente domótico se requiere enviar datos entre transmisor y receptor, dichos datos son manejados de forma digital para su fácil procesamiento mediante computadoras, microcontroladores o microprocesadores, debido a lo anterior se hace uso de técnicas de modulación digital. En los siguientes puntos se explicara la forma en que trabajan las técnicas de modulación PSK (BPSK, QPSK y OQPSK), las cuales son utilizadas en dispositivos de transmisión inalámbrica con aplicaciones en domótica incluyendo la tecnología presentada en este trabajo. 1.4.1 Modulación BPSK Es una técnica de modulación digital que permite que la información se module de acuerdo a la fase, lo que significa que dependiendo de los valores de la entrada digital, 16 la señal analógica modulada va a tener una u otra fase de salida. Para ejemplificar esta forma de modulación se considera que la señal de información a transmitir es una señal binaria con niveles de tensión de +1v. Asimismo la señal portadora: Fig. 1.1 Modulación PSK: en la parte superior se observa la señal binaria de información mientras que en la parte inferior la señal modulada BPSK. La función para la señal que es modulada mediante la técnica BPSK se defino como: Cuando la entrada al modulador corresponde a un 0 lógico, la fase absoluta de salida para la señal BPSK es 180º. Si la entrada es un 1 lógico entonces la fase de salida va a ser 0º, como se muestra en la figura. 1.4.1.2 Modulador BPSK El modulador BPSK consta de un circuito que integra un modulador balanceado quien se encarga de multiplicar analógicamente las señales de entrada, asimismo 17 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. Fig. 1. 2 Esquema de un Modulador BPSK 1.4.1.3 Demodulación BPSK En la figura siguiente se muestra un demodulador BPSK de detección síncrona. El recuperador de la señal portadora es un circuito que se encarga de obtener la señal BPSK recibida. Fig. 1.3 Demodulador BPSK. La demodulación de una señal BPSK se puede representar de la siguiente forma: Las dos posibles entradas analógicas para este demodulador son: . Para el proceso para obtener la señal digital original es: Modulador Balanceado Filtro paso banda Señal binaria g1(t) g2(t) Recuperador de la Portadora. Modulador balanceado Filtro pasa bajas. 18 (1.1) (1.2) Para el proceso para obtener la señal digital original es: (1.3) (1.4) 1.4.1.4 Espectro de la señal BPSK Para ejemplificar el espectro de una señal BPSK se tomara para análisis que la señal digita es una señal periódica por lo que tiene una anchura de bit constante Tb=T/2 y niveles de tensión +A. Esto con el fin de ejemplificar una señal donde nunca se mantenga contante la información. Fig. 1.4 Tren de pulsos binario. La función y transformada de Fourier de este tren de pulsos es el siguiente: – (1.5) 19 (1.6) La función de la señal modulada BPSK es: (1.7) Por lo tanto la transformada de Fourier es la siguiente: (1.8) Aplicando la propiedad de translación en la frecuencia a la ecuación anterior tenemos: = − − ( + ) (1.9) Dado que Tb=T/2 , y sustituyendo lo anterior se tiene: 20 − − ( + ) (1.10) De esta forma el espectro de una señal BPSK se representa como se muestra en la figura: Fig. 1.5 Espectro de Amplitud de una señal periódica de BPSK. 1.4.2 Modulación QPSK Quaternary Phase Shift Seying, como se deduce su nombre, es un tipo de modulación MPSK en la que M=4 , esto significa que la señal portadora de frecuencia puede tener 4 fases de salida diferentes, esto trae como consecuencia k=2 , entonces en el esquema de modulación QPSK , los datos de entrada binarios están compuestos por grupos de 2 bits que reciben el nombre de dibits y que producen 4 posibles combinaciones: 00,01,10 y 11. 1.4.2.1 Modulador QPSK El siguiente circuito muestra un modulador QPSK que utiliza una señal portadora , y en el que entra una señal digital f(t) secuencial con niveles de tensión v. 21 CANAL I CANAL Q Fig. 1.6 Modulador QPSK. En un modulador QPSK se distinguen dos canales, CANAL I y CANAL Q, cada uno de ellos conducirá uno de los bits desde el convertidor serie-paralelo a du modulador balanceado correspondiente, cabe destacar que un modulador balanceado opera igual que un multiplicador analógico. El bit I, cuyo nivel de tensión puede ser de +1 o -1 v, es multiplicado por la señal portadora desplazada en fase 90º, es decir . A la salida de los dos moduladores balanceados se tiene una suma lineal para obtener así la señal QPSK. El filtro pasa banda que es colocado a la salida del modulador QPSK lo que hace es eliminar los armónicos que no son significativos de la señal modulada para no interferir con otras señales que pudieran transmitirse por el mismo canal. Convertidor Serie/Paralelo Q I Modulador Balanceado Oscilador Generador de portadora ( ) Desplazador de fase de 90º Modulador Balanceado Sumador Lineal Filtro pasa Banda 22 Los valores que puede tomar la señal de salida son: Entrada binaria Fase de salida de la señal QPSK Q I 0 0 -135º 0 1 -45º 1 0 +135º 1 1 +45º Su diagrama de fasores se muestra a continuación: Fig. 1.7 Diagrama de fasores para la modulación QPSK. En la modulación QPSK, como se puede observar en la figura, la separación angular entre fases de salida adyacentes es de 90º. Además para este modulador, cada dibit difiere del adyacente en un solo bit. Este sistema de codificación recibe el nombre de Código Gray. 90º Q I 1 0 Q I 1 1 Q I 0 0 Q I 0 1 23 CANAL I CANAL Q 1.4.2.2 Demodulador QPSK En la figura 1.8 se muestra el demodulador QPSK. El separador de potencia triplica la señal recibida sin que este procedimiento tenga como consecuencia la perdida de potencia, conduciéndola por el calan I y el canal Q hasta los multiplicadores analógicos. En el circuito recuperador de portadora se obtiene la portadora a partir de la señal de QPSK. Las salidas de los multiplicadores analógicos se hacen pasar por dos filtros de paso de bajas que tienen que tener una frecuencia de corte menor que . Fig. 1.8 Demodulador QPSK. De forma matemática el proceso para la demodulación QPSK para los posibles dibits que se pueden transmitir es el siguiente: QI=00 para este dibit la señal analógica es la siguiente: . (1.11) Separador de Potencia. Recuperador de la portadora . Desplazador de fase de 90º. Filtro pasa bajos. Filtro pasa bajos. Convertidor Serie/Paralelo Q I 24 Si analizamos por el canal Q se obtiene: (1.12) Para el canal I: (1.13) QI=01 para este dibit la señal analógica es la siguiente: (1.14) Si analizamos por el canal Q se obtiene: (1.15) 25 Para el canal I: (1.16) QI=10 para este dibit la señal analógica es la siguiente: . (1.17) Primeramente se analiza para el canal Q: (1.18) Para el canal I: (1.19) 26 QI=11 para este dibit la señal analógica es la siguiente: . (1.20) Primeramente se analiza para el canal Q: (1.21) Para el canal I: (1.22) 27 1.4.3 Modulación OQPSK La modulación OQPSK es similar a la modulación QPSK de pulsos rectangulares, en la que se ha limitado la máxima variación de fase instantánea. Así como en la modulación QPSK se llegan a producir saltos de rad. entre dos símbolos consecutivos, en la modulación OQPSK dichos saltos de fase instantánea se reducen a la mitad rad, de este modo se evita que la componente en fase y la componente en cuadratura cambien simultáneamente su signo. La limitación del máximo salto de fase instantáneo es útil cuando la señal se amplifica mediante amplificadores de alta potencia. Para evitar que ambas componentes cambien de signo simultáneamente en el transmisor, la componente en cuadratura se retarda temporalmente un tiempo equivalente a medio periodo de símbolo T/2 y posteriormente en recepción con un filtro pasa bajo, se retarda la componente en fase temporalmente un tiempo equivalente a medio periodo de símbolo T/2, de este modo, quedan de nuevo las dos componentes sincronizadas. Se puede definir como un caso particular de la modulación QPSK en donde uno de los bits ya se ale canal Q o el canal I se retrasa medio periodo de bit (Tb/2) respecto al bit del otro canal. En la figura se muestra un ejemplo en el que el bit de información del canal I es retrasado un tiempo Tb/2 respecto al bit del canal Q. Fig.1. 9 Alineación de los bits con el retraso introducido en uno de los canales. 28 De acuerdo a la diferencia que se presenta en la figura anterior se modifica también la forma en la que trabaja un modulador OQPSK respecto del QPSK convencional. Para este caso se presenta un latch de retraso en uno de los dos canales: Fig. 1.10 Modulador OQPSK. Con OQPSK se consigue que no se produzca el cambo en más de 1 bit simultáneamente en el código del dibit, es decir que nunca se dará la transición de 00 a 11 o de 01 a 10. Esto traerá como consecuencia que no se produzca un desplazamiento mayor a 90º en la fase de la señal analógica de salida OQPSK, esto significa que se asegura que la fase nunca pase de -135º a +45º o de -45º a +135º. La ventaja principal de este tipo de modulación es el mínimo desplazamiento que la fase realiza en el proceso de modulación. 29 1.4 Tecnologáias de comunicación utilizadas en domótica 1.4.1 Bus europeo de instalación (EIB) Las instalaciones eléctricas con este protocolo son casi como las instalaciones tradicionales, sólo que el usuario utiliza unos interruptores para encender y apagar las luces de su hogar. A los métodos con este esquema de conexión se le llaman Sistemas de control distribuidos en red. Fig.1.11 Esquema de Conexión con EIB (Bus europeo de instalación). 1.4.1.1 Características del sistema EIB (Bus europeo de instalación) Los elementos del EIB pueden comunicarse entre sí, sin importar el fabricante del elemento. Las señales recibidas por el sensor se envían al actuador correspondiente por la línea del bus, que es un cable de dos hilos. El sistema puede ser ampliado con un máximo de quince áreas como instalación unitaria. El sistema trabaja de manera descentralizada. 30 Su estructura puede ser lineal, de estrella o con ramificaciones, sin necesidad de un control central. 1.4.1.2 Ventajas del sistema EIB Ahorro de tiempo: Los tiempos de montaje del sistema pueden reducirse debido a una planificación e instalación adecuada, con la ayuda de un software y con la reducción de la cantidad de cables, el montaje es mucho más fácil. Flexibilidad: Es posible la ampliación o modificación de funciones gracias a la reprogramación de los actuadores y sensores, incluso ampliando la instalación existente. Eficiencia en la comunicación: Los componentes del sistema son compatibles entre sí, creando una comunicación sin problemas o interferencias. Esto garantiza la utilización racional de la energía. Respeto por el medio ambiente: Al aprovecharse al máximo la energía, el sistema brinda un alto grado de efectividad y mejora el manejo de los recursos existentes, repercutiendo en ahorro de dinero.[2] 1.4.2 Protocolo X.10 X.10 permite controlar los aparatos electrodomésticos y las luces de la vivienda, haciendo uso de la instalación eléctrica ya presente en el hogar, evitando la instalación de cables. Cada aparato posee una dirección a la que responde o envía información, contando con un total de 256 direcciones. Debido a su permanencia de más de 20 años en el mercado, al empleo de su tecnología y a su liderazgo, sus productos, son ampliamente utilizados en algunas viviendas residenciales o importantes edificios en los Estados Unidos de Norteamérica. La instalación también es muy accesible, debido a que cualquier persona con un poco de conocimientos previos en electricidad o incluso los usuarios, pueden ser capaces de 31 elaborar una sencilla instalación domótica. El empleo de X.10 no requiere cableado especial, pero si se requieren dos dispositivos para la comunicación: Un receptor: Se instala para enchufar algún electrodoméstico. En él se especifica el código de la unidad y el código de la vivienda, ofreciendo un gran número de posibilidades. Un controlador o transmisor: Emite las órdenes de cuándo deben activarse los aparatos electrodomésticos y con qué intensidad, encontrándose estos en cualquier otro lugar de la vivienda. X.10 protege efectivamente la vivienda porque monitorea constantemente el estado de la casa, ya sea en el lugar o a distancia. Se encarga de encender las luces cuando se requiere, activa el sistema de alarmas si es requerido también, incorporando también a sus beneficios el empleo de un guardián electrónico, llamado “perro electrónico” X.10, un módulo que imita los ladridos de un perro Pastor Alemán [2]. 1.4.3 Bluetooth Bluetooth aparece en el año de 1998 como una norma desarrollada por un grupo de empresas con el objetivo optimizar la comunicación inalámbrica mediante radiofrecuencia entre dispositivos de uso domestico como por ejemplo: computadoras, PDAs, teléfonos celulares, impresoras etc. Esta tecnología puede abastecer hasta 8 dispositivos en una sola WPAN (Wireless Personal Area Network). Bluetooth opera en la banda de 2,56 GHz y ofrece hasta 1Mbps, que se reducen a un aproximado de 434 Kbps al descontar la sobrecarga de los protocolos. El alcance máximo es de entre 10 y 100 metros, aunque los resultados obtenidos de manera efectiva son diferentes ya que intervienen factores externos como el ruido electromagnético y los obstáculos. Las principales características de esta tecnología son: 32 Una soporta un máximo de 8 nodos dentro una subred Bluetooth. Bluetooth maneja una velocidad de intercambio de hasta 1Mbps. Frecuencia de 2.4 GHz. Potencia de transmisión: 1mW para 10 metros, 100mW para 100 metros. Canales máximos de datos: 7 por subred. Velocidad de datos: 721 Kbps por subred. Cobertura: 10 Metros. Bajo consumo de energía: 2.7 Volts. [3] 1.4.4 ZigBee Las redes ZigBee comenzaron a ser concebidas por el año 1998, el organismo encargado del desarrollo es la ZigBee Alliance cuyo afán era diseñar redes ad-hoc de auto organización para radios digitales así como programas de certificación, insignias y estrategias de comercialización. El enfoque principal fue desarrollar dispositivos para aplicaciones diferentes, las cuales proveerán al usuario soluciones inalámbricas que son rentables, fáciles de utilizar, altamente confiables y seguras. ZigBee ha sido diseñado para soportar una diversa gama de aplicaciones con conectividad más sofisticada que los anteriores sistemas inalámbricos. Se enfoca un segmento del mercado no atendido por los estándares existentes, con baja tasa de transmisión de datos, bajo ciclo de servicio de conectividad y bajo costo. Las principales características de esta tecnología son: Bajo costo en los dispositivos, la instalación y el mantenimiento. Los dispositivos ZigBee amplían la vida de las baterías ya que la naturaleza de ZigBee permite la creación de redes que requieren poco mantenimiento. Redes de alta densidad de nodos. ZigBee permite que las redes manejen hasta 65536 dispositivos [4]. 33 1.5 Comparativa general Una vez analizados los distintos medios de transmisión aplicables en Domótica se presenta un panorama de las diversas ventajas y desventajas que pueden tenerse al utilizar cualquiera de ellos, sin embargo cada uno de ellos es apto para necesidades diferentes, para el caso particular de este trabajo es prioritario encontrar una tecnología que consuma muy pocos recursos tanto económicos como en materia de energía. A continuación se presenta una comparativa general de las tecnologías antes mencionadas. Tabla 1.1 Comparativa general de diferentes tecnologías inalámbricas. EIB X.10 BLUETOOTH ZIGBEE Ancho de banda 12-96 Mbps 60bps 1Mbps 20 – 250kbps Aplicaciones Automatización y Sistemas de control. Control remoto de dispositivos eléctricos Reemplazo de cable Monitorización y control Consumo energético alto Alto Medio Bajo Puntos importantes Robustez, Seguridad, alta velocidad d transmisión. Empleo de un guardián electrónico Costo, seguridad Consumo, costo, robustez, seguridad Complejidad Media Alta Media - alta Baja Distancia En metros 300-600 No especificado 1 - 10 1 - 75 34 CAPITULO II ZIGBEE 35 2.1 Introducción a ZigBee Las tecnologías inalámbricas si bien pudiesen tener algunas desventajas en cuanto al ancho de banda se refiere respecto a tecnologías alambicas , poseen múltiples ventajas en el ámbito de la domótica debito en primer lugar a el ahorro de toda la infraestructura que se requiere para una instalación alámbrica que para el caso práctico y estético no es muy conveniente ya que en domótica uno de los puntos que más sobresaltan a la vista es la estética y como en todo también el costo resulta importante. ZigBee es una tecnología que se presta para esto ya que el estándar se ha hecho a medida para la monitorización y para tareas de control. Por este motivo, los mercados tales como la automatización de edificios y hogares, la atención sanitaria, control industrial, control de alumbrado y control comercial, son las principales áreas bajo las cuales trabaja la tecnología en cuestión. 2.2 Arquitectura ZigBee es una tecnología que basa su funcionamiento en el modelo de referencia OSI (Open System Interconection) y como tal también divide su arquitectura en capas que definen su funcionamiento, Sien embargo para el caso de las capas de ZigBee encontraremos una división entre los protocolos encargados de definir dichas capas, por una parte se encuentra presente la norma IEEE 802.15.4 y por otro lado se encuentran las normas dictadas por la ZigBee Alliance. La ZigBee Alliance es el grupo conformado por diversas empresas que se dedican a la creación de nuevas soluciones en el ámbito inalámbrico principalmente para su uso en entornos residenciales aunque también hay diversas aplicaciones de uso comercial e industrial. Esta alianza tecnológica, sin fines de lucro, conformada por más de 100 firmas, la mayoría de ellas fabricantes de semiconductores tienen el objeto de colaborar con el progreso e implementación de una tecnología inalámbrica de área personal a bajo costo. 36 2.2.1 IEEE 802.15.4 ZigBee es una tecnología que está basada en el estándar IEEE 802.15.4 que está enfocado para conexiones inalámbricas de tipo personal PAN con una tasa de transferencia baja como es el caso de la tecnología de la que se hace uso para la realización de este trabajo. Para poder estudiar la tecnología ZigBee, será necesario tratar los niveles definidos por el estándar IEEE 802.15.4 específico para conexiones inalámbricas tales como ZigBee y bajo la cual esta se basa. IEEE 802.15.4 es una norma bajo la cual se define la especificación de ZigBee. La finalidad del estándar IEEE 802.15.4 es definir los niveles de red básicos para dar servicio a un tipo en particular de red inalámbrica de área personal (WPAN) centrada para constituir la comunicación entre dispositivos con un bajo costo y baja velocidad. Se hace énfasis en el bajo precio de los módulos de comunicación y su fácil reconocimiento con nodos cercanos y sin infraestructura, o con muy poca, así mismo con esto se favorece al máximo el bajo consumo de recursos materiales y por lo tanto económicos. 2.2.1.1 Capas del estándar IEEE 802.15.4 La capa de más bajo nivel es la capa física (PHY), que en conjunto con la capa de acceso al medio (MAC), brindan los servicios de transmisión de datos por el aire, punto a punto. Estas dos capas esta descritas dentro del estándar IEEE 802.15.4. El estándar trabaja sobre las bandas ISM de uso no regulado, dónde se definen hasta 16 canales en el rango de 2.4 GHz, cada una de ellas con un ancho de banda de 5 MHz 2.2.1.1.1 Nivel físico El nivel físico PHY es quienes encarga de realizar la transmisión de datos sobre el medio físico, asimismo asigna la interfaz física por medio de la cual se acceden a todos los servicios proporcionados por las capas superiores, así mismo mediante esta capa se realiza el control de los dispositivos transceptores encargados de la trasmisión y recepción de datos y se realiza la selección del canal para este intercambio, dichos 37 transceptores trabajan bajo una de los tres rangos de frecuencias ya anteriormente mencionados: De 868 a 868.8 MHz: Europa. Se permite de uno a tres canales. De 902 a 928 MHz: Norte América. Se permite de diez a treinta canales. De 2400 a 2483.5 MHz: Uso en todo el mundo. Se permite hasta dieciséis canales. La IEEE 802.15.4 maneja dos modos diferentes de modulación y así mismo puede manejar dos diferentes versiones para el nivel físico (PHY). La primer versión es denominada PHY a 868/915 MHz y es conocida como la versión PHY de banda baja, esta versión utiliza modulación por desplazamiento de fase binaria (BPSK) .La segunda versión PHY a 2.4 GHz es conocida como Banda alta y utiliza una técnica de modulación llamada OQPSK por sus siglas en ingles “Offset Quadrature Phase-Shift Keying”. La grafica que se muestra en la figura 2.2 muestra que la técnica de modulación del estándar IEEE 802.15.4 es de manera clara más eficiente que el utilizado por Wi-Fi o Bluetooth ya que obtenemos que es 7 dB o 18 dB mejor que las técnicas utilizaras por los estándares IEEE802.11 e IEEE 802.15.4 que son quienes definen las tecnologías Wi-Fi y Bluetooth respectivamente. Es necesario recordar que la relación señal a ruido es de suma importancia para lograr un enlace inalámbrico que pueda transmitir y recibir de manera optima, ya que como su nombre lo indica, la relación señal a ruido establece la relación entre la potencia de la señal recibida y la potencia del ruido presente en el canal de comunicación [4]. 38 Fig. 2.1 Tasa de error de bit contra relación señal a ruido en los estándares IEEE 802.15.4, IEEE 802.11 e IEEE 805.15.1. 2.2.1.1.1.1 Medidas de canal Dependiendo del tipo de dispositivo utilizado y el consumo de potencia que generan aplicaciones determinadas, con el estándar IEE 802.15.4 se espera una transmisión exitosa en un rango de 10 a 75 m con un consumo de potencia aproximado a 1mW. En las graficas mostradas en la figura 2.4 se analiza la tasa de error de paquete PER (Packet Error Rate) y el indicador de señal recibida RSSI (Receive Signal Strength Indication) tanto en ambientes exteriores como en interiores. El estándar IEE 802.15.4 define dentro de sus características una transmisión optima para interiores de hasta 32 metros entre el transmisor y el receptor con PSDU (Physical layer Service Data Unit) de tamaños de 20, 40,80 y 127 bytes. La grafica 2.3 también muestra la intensidad de señal recibida arroja que a mayor distancia la intensidad irá disminuyendo de manera paulatina conforme se aleja el transmisor del receptor, sin embargo esto es solo para el caso de ambientes internos donde se encuentren obstáculos a cada paso como sucedería dentro de una casa. 39 Fig. 2.2 RSSI en ambientes internos Fig. 2.3 RSSI en ambientes externos (derecha). 40 La grafica de la figura 2.4 muestra una relación entre la intensidad de la señal recibida y la distancia, en este caso a diferencia de la respuesta que se obtiene en ambientes internos, la señal decae más rápidamente sin embargo a partir de los 30 metros la intensidad de la señal es más constante. El segundo parámetro al cual se hace referencia en el estándar IEEE 802.15.4 es la tasa de error de paquete PER, ese parámetro también es manejado en función de la distancia, el estándar indica que la tasa de error para el caso de ambientes externos se dispara cuando se rebasa la distancia de 20 metros siendo probable después de esta distancia la detección de errores. El panorama es diferente cuando se trabaja en ambientes externos ya que haya los 20 metros la probabilidad de error es muy baja y es hasta los 50 metros donde esta comienza a elevarse [5]. Fig. 2.4 PER en ambientes internos. 41 Fig. 2.5 PER para ambientes externos. 2.2.1.1.2 Nivel de enlace de datos En este nivel encontramos la subcapa de Control de Acceso al Medio (MAC). Ésta se encarga de transmitir tramas MAC. Además del servicio de datos, ofrece una interfaz de control y regula el acceso al canal físico y al balizado de l a red. También se encarga de controlar la validación de tramas y las asociaciones entre nodos tiempo. Por último, ofrece puntos de enganche para servicios seguros. También podemos encontrar en el nivel de enlace de datos la subcapa de control de Enlace Lógico (LLC) que hace la función de interfaz con los niveles superiores de la pila de protocolos. En la Figura 2.6 podemos observar los diferentes niveles definidos por el estándar 802.15.4 y las capas intermedias que hacen posible la comunicación con los niveles superiores definidos por un tipo de red inalámbrica de área personal WPAN, como ZigBee. 42 IEEE 802.15.4 Fig. 2.6 Capas que controlan el estándar IEEE 802.15.4. 2.2.1.2 Especificaciones del estándar IEEE 802.15.4 El medio de transmisión ZigBee trabaja sobre la banda ISM en concreto se definen algunas frecuencias dedicadas a su uso, 915 MHz para su uso en Estados Unidos de Norteamérica, 868 MHz para Europa y 2.4 GHz para el resto del mundo, la razón es que esta última es libre en gran parte del mundo y por este motivo las empresas dedicadas a su desarrollo optan por utilizar esta frecuencia. Para el caso de 2.4 GHz se definen 26 canales y cada uno de ellos los posee un ancho de banda especifico de 5 MHz. Fig. 2.7 Canales del estándar IEEE 802.1.4 NIVEL FÍSICO ENLACE DE DATOS CONTROL DE ACCESO AL MEDIO SUBNIVEL DE CONVERGENCIA CONTROL DE ENLACE DE DATOS (LLC) 43 Tres bandas, 27 canales especificados: Tabla 2.1 Frecuencia de trabajo ZigBee FRECUENCIA COVERTURA TRANSFERENCIA DE DATOS NUMRO DE CANALES SENSIBILIDAD DE RECEPCION MODULACION 2405-24800 MHz RESTO DEL MUNDO 250 Kbps 16 -85 dBm O-QPSK 868.3 A 870 MHz EUROPA 20 Kbps 1 -92 dBm BPSK 902-828 MHz AMÉRICA 40 Kbps 10 -92 dBm BPSK 2.4Ghz.- Especificaciones (Disponibles mundialmente): a) Sensibilidad: -85 dBm @ 1%PER b) Potencia de salida: 0dB c) Alcance: Interiores (30m), exteriores libres (75m) Características de la comunicación: a) Estructura simple. b) Entrega de datos segura ya que se hace uso de : CSMA/CA (Acceso Múltiple con Detección de Portadora – Prevención de colisión). Reconocimiento de mensaje [6]. 44 2.2.2 Niveles especificados por ZigBee Alliance 2.2.2.1 Nivel de red Las funciones principales del nivel de red son dar paso al correcto uso del Subnivel MAC, definido anteriormente por el estándar IEEE 802.15.4, así como ofrecer una interfaz ajustada para su uso por parte del nivel superior, el nivel de aplicación. Por una parte, se realiza el ruteo en base a la topología de la red en la que el dispositivo se encuentra. Por otra parte, las funciones de control del nivel de red controlan la configuración de nuevos dispositivos y el establecimiento de nuevas redes; puede decidir si un dispositivo colindante pertenece a la red e identifica nuevos routers y vecinos. El control puede detectar así mismo la presencia de receptores, lo que posibilita la comunicación directa y la sincronización a nivel MAC. 2.2.2.2 Nivel de aplicación Se trata del nivel más elevado definido por la especificación y, por tanto, la interfaz efectiva entre el nodo ZigBee y sus usuarios. En él se ubican la mayor parte de los componentes definidos por la especificación: tanto ZDO’s, (ZigBee Device Objects) quienes se encargan de definir el papel del dispositivo en la red, si el actuará como coordinador, router o dispositivo final como sus procedimientos de control y los objetos de aplicación. El direccionamiento de los dispositivos ZigBee, a su vez, parte del nivel de aplicación. Un nodo está formado por un transceptor compatible con 802.15.4 y una o más tipos de dispositivos conformados por un conjunto de atributos que pueden ya sea monitorearse o controlar por medio de eventos [7]. 45 ZIGBEE IEEE 802.15.4 NIVEL DE APLICACIÓN Fig. 2.8 Capas del Protocolo Zigbee. 2.3 Dispositivos ZigBee Dentro de una red constituida por esta tecnología se pueden encontrar tres tipos de dispositivos diferentes que cumplen con funciones diferentes de acuerdo a la posición en que se encuentran dentro de una red, dichos dispositivos son los que a continuación se mencionan: Coordinador ZigBee ZC (ZigBee Coordinator): Este dispositivo es el que tiene más funciones dentro de una red ZigBee ya que entre sus funciones se encuentra controlar y coordinar la red y las diferentes rutas que deben de seguir cada uno de los dispositivos para comunicarse entre ellos, para poder constituir una red ZigBee es forzosamente necesario tener por lo menos un Coordinador. NIVEL DE RED SUBCAPA DE APOYO A LA APLICACIÓN SERVICIO DE SEGURIDAD OBJETOS DE APLICACIÓN OBJETO DE DISPOSITIVO ZIGBEE CONTROL DE ACCESO AL MEDIO (MAC) NIVEL FISICO 46 Router ZigBee (ZigBee Router, ZR): Este dispositivo tiene como meta principal la interconexión de cada uno de los dispositivos que se encuentren separados dentro de una topología de red del mismo modo este dispositivo ofrece la posibilidad de obtener un nivel de aplicación para la ejecución de código por parte de los usuarios. Dispositivo Final (ZigBee End Device, ZED): Este tercer dispositivo tiene la tarea de tener la funcionalidad necesaria para comunicarse con el nodo principal de una red que bien puede ser un Router ZigBee o un Coordinador ZigBee, este dispositivo se encarga de transmitir información hacia el router o coordinador al que se encuentre conectad, sin embargo no puede transmitir directamente a otro ZED, para esto es necesario atravesar la ruta hacia el por medio de un ZR o ZC, una de las grandes ventajas de estos dispositivos conectados a una red ZigBee es su ahorro de energía, pues no se requiere que estén encendidos todo el tiempo pues es posible mantenerlos en modo de hibernación hasta que se requiera de ellos. 2.4 Topologías de redes ZigBee 2.4.1 Topología en estrella En redes en estrella el coordinador se sitúa en el centro, y toda conexión que se quiera realizar entre los distintos nodos de la red debe pasar por éste. En la Figura 2.9 vemos ilustrada la típica estructura de una red en estrella. Coordinador de red. Dispositivo de función completa (FFD). Dispositivo de función reducida (RFD). Fig. 2.9 Diagrama Red ZigBee con topología tipo estrella. 47 En una red estrella se tiene un solo nodo central activo que normalmente es quien administra la red y evita problemas derivados de una mala distribución de la red , las ventajas que una red de este tipo puede generar es la facilidad de implementación así como la facilidad de incrementar los dispositivos conectados a la red, así mismo el fallo de un nodo periférico no influiría el desempeño de la red completa , otro problema que resuelve esta topología son las colisiones de datos, las cuales se eliminan al existir una sola conexión por parte de cada estación al dispositivo central. 2.4.2 Topología en árbol En esta topología de red en la que los nodos están colocados en forma de árbol el coordinador será la raíz del árbol. La conexión en árbol es parecida a una serie de redes en estrella interconectadas, salvo en que no tiene un nodo central. En cambi o, tiene un nodo de enlace troncal, generalmente ocupado por un coordinador, desde el que se ramifican los demás nodos. Coordinador de red. Dispositivo de función completa (FFD). Dispositivo de función reducida (RFD). Fig. 2.10 Diagrama Red ZigBee con topología tipo árbol. 48 Los problemas que presentan este tipo de topología radican en que los datos son recibidos por todas las estaciones no importando para quien vayan dirigidos. Por lo tanto surge el problema de dotar a la red con un mecanismo que permita identificar al destinatario de los mensajes. 2.4.3 Topología en malla La topología más interesante es la topología de malla. Consiste en que al menos uno de los nodos tendrá más de dos conexiones. Con ello conseguimos que si, en un momento dado, un nodo del camino falla y se cae, pueda seguir la comunicación entre todos los demás nodos debido a que se rehacen todos los caminos. El establecimiento de una red de malla es una manera de encami nar datos, voz e instrucciones entre los nodos. Las redes de malla se diferencian de otras redes en que las piezas de la red (los nodos) están conectadas unas con otras por uno u otro camino. Esta configuración ofrece caminos redundantes por toda la red, de modo que si falla un cable, otro se hará cargo del tráfico. Esta topología, a diferencia de las vistas en apartados anteriores, no requiere de un servidor o nodo central, con lo que se reduce el mantenimiento. Un error en un nodo, no implica la caída de toda la red. Como ya se ha comentado anteriormente, las redes de malla son autogenerables. La red puede funcionar incluso cuando un nodo desaparece o la conexión falla, ya que el resto de nodos evitan el paso por ese punto. Consecuentemente, se forma una red muy confiable.[8] Coordinador de red. Dispositivo de función completa (FFD). Dispositivo de función reducida (RFD). Fig. 2. 11 Diagrama. Red ZigBee con topología tipo malla. 49 2.5 Módulos ZigBee Una vez que se conocen lo dispositivos bajo los cuales se basa esta tecnología y los lineamientos que deben seguir, corresponde el turno a la búsqueda de módulos comerciales que trabajen bajo ZigBee. Para este trabajo se ha realizado una búsqueda de diferentes dispositivos fabricados por empresas diferentes y que perteneces a la ZigBee Alliance y por tal motivo son quienes se encargan de la distribución de productos relacionados. Si bien en esencia el protocolo no cambia, cada fabricante ofrece diversas soluciones aplicables a él, por lo que en este apartado se detallan diferentes componentes que han sido analizados para ver sus cualidades y saber cuál es el más adecuado y cual ofrece mejores soluciones. 2.5.1 eZ430-RF2480 Development Tool Se tratad e una herramienta de la hempresa Texas instruments, la cual contiene lo necesario para la implementación de proyectos por medio de ZigBee, asimismo cabe destacar que este dispositivo es compatible y estrechamente vinculada con micronoctroladores de la familia MSP430, dicha herramienta contiene: Un soporte para las baterías de los módulos. 2 baterías AAA 3 Módulos CC2480 Una interface USB eZ430-RF. Fig. 2.12 Transceiver CC2480 50 Dentro de esta herramienta son incluidas algunas herramientas de trabajo en software así como documentación sobre el hardware incluido dentro de este kit, del mismo modo es posible descargarlas desde la página web del fabricante. Dichos útiles son los siguientes: La guía de usuario de eZ430-RF2480 Entornos de trabajo Code Composer Essentials (CCE) e IAR Embedded Workbench. Una guía de usuario para la familia de microcontroladores MSP430. Fig. 2.13 eZ430-RF2480 Development Tool Este kit contempla todo un entorno de desarrollo así como los dispositivos necesarios para la implementación de proyectos de tipo inalámbrico, para lo anterior se utiliza una interfaz incluida dentro de esta herramienta de tipo USB, de esta manera la creación de nuevas aplicaciones se torna más cómoda por su fácil interacción con las computadoras ya que muchas veces es utilizada para el alojamiento de interfaces graficas que ejecutan acciones sobre los diferentes dispositivos utilizadas, también es posible mediante la presente herramienta realizar simulaciones en tiempo real sobre el dispositivo por medio de una computadora y el hardware y software subministrado por la empresa Texas Instruments. El kit, como ya se ha preciso anteriormente, consta de tarjetas inalámbricas que trabajan bajo una frecuencia de 2.4 GHz, mismas que incluyen un microcontrolador de 51 la familia MSP430 de ultra bajo consumo. Los proyectos que se realicen con estos dispositivos pueden gozar de una autonomía gracias a la plataforma de batería que incluye el kit. Algunas de las características principales del eZ430-RF2480 son: Dos LED (rojo/verde) indicadores para el desarrollo de la Comunicación. Una interface USB útil en la programación de los dispositivos. Transceiver CC2480 a 2.4GHz. UART Un microcontrolador MSP430 de ultra-bajo consumo a 16MHz. 18 pines disponibles para la realización de pruebas. El eZ430-RF2480 utiliza dos entornos de programación para poder escribir, descargar y programar diferentes aplicaciones dentro del dispositivo ZigBee. Los entornos mencionados son: Code Composer Essentials (CEE) IAR Embedded Workbench Integrated Development Environment (IDE) 2.5.2 ATMEL Module ATMEL es el nombre del fabricante que proporciona dispositivos compatibles con la especificación ZigBee. En este caso se nos detalla, por separado, cual es el transceiver y el microcontrolador utilizados para la implementación del módulo. Como se puede comprobar en la Figura 2.14, nos encontramos con otra solución completa al integrar en su PCB todos los componentes requeridos y compatibles con ZigBee, por lo tanto debemos de analizar dichos componentes para conocer los beneficios que pueden aportar al proyecto y de este modo llegar a la mejor solución posible. 52 Fig. 2.14 Modulo ATMEL 2.5.3 EasyBee ZigBee EasyBee se fundamenta en un módulo válido para ZigBee dentro del estándar IEEE 802.15.4. El módulo EasyBee, que se aprecia en la Figura 2.15, contiene todo el conjunto de circuitos necesarios, integrando una antena integrada. La capa MAC incluye la generación CRC-16, la evaluación de canal clara, la detección de señal de energía, la seguridad, encriptación y autentificación. Cabe señalar que este dispositivo únicamente es un tranceiver, por lo que para su implementación requiere como varios de los otros módulos un microcontrolador externo. Fig. 2. 15 Modulo EasyBee ZigBee A continuación se enuncian las características más resaltantes de este modulo: Frecuencia: 2.4GHz. Posibilidad de antena integrada o externa. Potencia de salida: 1mW (+0dBm). 53 Temperatura: -40ºC a 85ºC. Volate necesario: 2.1 – 3.6V. Distancia máxima: 120m. [12] 2.5.4 XBee Module Es uno de los módulos que hace uso utilización de ZigBee. El dispositivo tiene como labor principal la transmisión y recepción de datos que son suministrados ya sea por un microcontrolador o mediante una computadora. Para el este trabajo se utilizarán los módulos XBee series 1 y series 2, que son módulos de radio frecuencia que trabajan en la banda de 2.4 GHz por medio del protocolo IEEE 802.15.4 fabricados por MAXSTREAM. Son utilizados en automatización de casas, sistemas de seguridad, monitoreo de sistemas remotos, aparatos domésticos, alarmas contra incendio, plantas tratadoras de agua, etc. Los módulos XBee específicamente tienen un alcance en interiores de hasta 30 metros, y en exteriores el alcance es de hasta 100 metros. En la Figura 2.16 se muestran los tres diferentes tipos de XBee.Las principales especificaciones del módulo XBee son las siguientes: Potencia de salida: 50mW Consumo de corriente en Rx: 45mA Consumo de corriente en Tx: 295mA Consumo de voltaje: 3.0 – 3.4V Tamaño (cm): 2.43 x 3.29 Temperatura: -40ºC a 85ºC Distancia: Interior: 30m / Exterior: hasta 100 mts. [9] Fig. 2.16 Modulos XBee de Maxstream 54 CAPITULO III DISEÑO DEL SISTEMA DE COMUNICACIÓN 55 Para la implementación del sistema de comunicación se necesitan los siguientes módulos o dispositivos: Modulo XBee Microcontroladores. Pantalla de LCD de 4 x16. Teclado matricial de 4x4. Comunicación mediante C.I. MAX 232. 3.1 MODLO XBEE Analizando las diferentes opciones que existen en el mercado podemos observar las principales características así como sus ventajas y desventajas que ofrecen los diferentes dispositivos existentes de manera comercial; en base a lo anterior se puede llegar a la determinación del elemento a emplear así como diferentes observaciones que permitirán concluir que la mejor opción es la de utilizar los módulo Maxstream. Observando las diferentes posibilidades se han utilizado diferentes criterios para llegar al dispositivo a utilizar antes mencionado. Uno de los puntos más importantes en la abertura del dispositivo para trabajar con múltiples microcontroladores ya que se desea que el gasto por este dispositivo sea reducido o bien que sea ajustable a las necesidades que se tengan, de mismo modo es una ventaja si existe una cierta facilidad para interconectarse con los puertos de una computadora ya que en algún momento dado puede ser necesario para una interfaz grafica con el usuario por medio de una computadora. En base a lo anterior se ha creído que no es muy conveniente utilizar la herramienta eZ430-RF2480 de Texas puesto que es difícil implementar el transceiver ZigBee con otro microcontrolador diferente al de la familia que se especifica, así mismo las herramientas proporcionadas y el contenido de aplicaciones ya implementadas que trae hacen de esta opción muy costosa. 56 Tabla 3.1 Comparativa entre los dispositivos ZigBee en el mercado 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] Consum o Rx Consumo Tx Peso Dimensiones µc incluido Potencia de salida Consumo de voltaje Xbee 40mA 40mA 3gr 2.43 x 2.76 no 1.25- 2mW 2.1- 3.6V ATMEL 15.5m A 16.5mA 5gr 2.25x2.3 no 4mW 3.6V Texas Instruments 13.3m A 21.2mA 5gr 3 x 2 x 0.1 si 1mW 3.6V EasyBee 20mA 18mA 3gr 2.6 x 2 no 1mW 2.1- 3.6V 57 3.1.2 Modos de operación Fig. 3.1 Modos de operación de los modulos XBee 3.1.2.1 Modo recibir y transmitir El modulo trabaja bajo estos modos cuando recibe algún paquete por medio de la antena o cuando el buffer de salida tiene algún dato, el cual es transmitido en modo serial. La información transmitida puede ser de tipo Directa o Indirecta. En el primer modo la información es enviada inmediatamente a la dirección de destino, mientras que en el modo Indirecto la información se retiene por el módulo durante un período de tiempo y es enviada sólo cuando la dirección de destino realiza una petición de envió. Asimismo es posible enviar información por dos formas diferentes: Unicast y Broadcast. Por la primera, la comunicación es realizada solo desde un punto a otro, y es el único modo que permite respuesta de quien recibe el paquete , es decir, quien recibe debe enviar un ACK (acknowledgement) o acuse de recibo, llamado así ya que indica que recibió el paquete, el usuario no puede verlo ya que es interno de los módulos. MODO IDLE MODO TRANSMITIR MODO COMANDOS MODO SLEEP MODO RECIBIR 58 El modulo que ha enviado un paquete recibe este acuse de recibo y en caso contrario el paquete será reenviado de nuevo en un número máximo de 3 veces, una vez concluidos estos 3 intentos se incrementa el registro interno de fallas del modulo 3.1.2.2 Modo de bajo consumo (Sleep Mode) El modo de Bajo Consumo o modo Sleep, es el que utiliza dicho modulo para desactivarse momentáneamente en un periodo determinado en el cual no existe intercambio de información esto tiene como consecuencia el ahorro de energía en un alto o mediano porcentaje dependiendo de la aplicación dada, ya que muchas veces estas no demandan al modulo estar en modo activo permanentemente ya que solo requieren la atención por parte del modulo cuando se envíen datos, mismos que en algunas tareas no son constantes. El ahorro de energía de este modo es configurable y asimismo depende de la alimentación del modulo de acuerdo a los rangos permitidos, el consumo de corriente cuando es activado el modo sleep varía entre 10µA y 50µA. 3.1.2.3 Modo de comandos Este modo permite ingresar comandos de tipo AT las cuales son instrucciones que sirven para interactuar entre los usuarios y dispositivos terminales modem en este caso al módulo XBee, con los comandos AT se configura, ajusta o modifica el conjunto de parámetros tales como la dirección propia o la de algún destino, así como su modo de operación entre algunos otros. Para ingresar a este modo dentro de los módulos es necesario un software terminal como por ejemplo Hyperterminal en Windows XP o cualquier otro similar, la empresa Maxstream ha desarrollado un software propietario que contiene un software de tipo terminal llamado X-CTU que además incluye otras aplicaciones. 59 3.1.2.4 Modo transparente Este modo almacena en el buffer de entrada todo lo que ingresa por el pin 3 para posteriormente ser transmitido y todo lo que ingresa como paquete es guardado en el buffer de entrada y luego se envía mediante el pin 2 este modo está enfocado para cuando únicamente existe una conexión punto a punto . Dependiendo de cómo se configure el modulo, es posible transmitir la información de manera inmediata en cuanto la información ingrese o es posible configurar un retardo de tiempo dado sin recibir ningún carácter serial por el pin 3. Una vez finalizado el tiempo de espera configurado se procede en ese momento y se toma lo que se encuentre en el buffer de entrada, se empaqueta, y finalmente transmite. 3.1.2.5 Modo IDLE Finalmente cuando el modulo se encuentra encendido pero sin configurar alguno de los modulos anteriors, es decir no envia ningun pauqete de datos ni recibe nada y asimismo no se encuentra dormido entonces se encuentra en este modo en el que solo se encuentra energizado pero no realiza ninguna acción.[11] 3.2 Microcontroladores Un microcontrolador es un dispositivo usualmente utilizado para tareas que requieren tres unidades funcionales existentes dentro de una computadora las cuales son: CPU, memoria y Unidades de entrada y salida, asimismo es posible realizar operaciones aritméticas y lógicas, es decir, se trata de un circuito integrado que contiene las características de un computador. En la figura 3.2 se muestra el esquema a bloques de un microcontrolador, el cual contiene elementos primordiales como un microprocesador, al menos 2 memorias, una RAM y una ROM y puertos para la conexión de elementos periféricos. 60 Fig. 3.2 Esquema de un microcontrolador. Los microcontroladores difieren de un CPU común en la capacidad de manejar en un solo chip varios periféricos mediante sus puertos de entrada y salida, y sin necesidad de conectarle memoria RAM y ROM de manera externa, esto a menos que se requiera más de la que posee el fabricante del chip, sin embargo es por este motivo que existe en el mercado un amplia gama de microcontroladores con las cantidades de recursos necesarias para la implementación de las funciones que requieran una cantidad mayor de memoria o de frecuencia de operación. Cabe destacar que los microcontroladores son de mucha utilidad cuando se requiere manipular un sistema que requiera las características de un CPU pero dedicadas exclusivamente a una función en especifico. El tamaño y las características de este dependen de los recursos que este pueda manejar, y la selección del más ideal está directamente relacionada con esto ya que en muchas ocasiones no se requieren grandes recursos y por este motivo no s necesario invertir en un dispositivo costoso que será mal aprovechado. PERIFERICO 1 PERIFERICO 2 MICROPROCESADOR MEMORIA 1 MEMORIA 2 VCC GND CLK I/O CONTROL 61 3.2.1 Familias de microcontroladores Tabla 3.2 Familia de microcontroladores en el mercado 3.2.2 PIC 18F452 Este dispositivo se encarga de diversas tareas dentro del sistema desarrollado, se encarga de sincronizar la recepción y envió de datos y de coordinar todas las tareas que realiza el sistema mencionadas a continuación: Adquisición de datos. Visualización por pantalla de cristal líquido (LCD). Detección de datos introducidos en el teclado matricial. Ejecución de algoritmo de identificación por contraseña Convertidor ADC para sensores analógicos. Control de dispositivos XBee vía EUSART. EMPRESA 8 bits 12 bits 14 bits 16 bits 32 bits Microchip Familia 10f2xx Familia 12Cxx de 12 bits Familia 12Fxx, 16Cxx y 16Fxx de 14 bits (PIC16F87X) 18Cxx y 18Fxx de 16 bits Pic 32 Freescale 68HC05 68HC08 68HC11 HCS08 No fabricados No fabricados 68HC12 68HC16 683xx 68HCS12 68HCSX12 Hitachi H8 No fabricados No fabricados No fabricados No fabricados Intel MCS-48 (familia 8048) MCS51 (familia 8051) 8xC251 No fabricados No fabricados MCS96, MXS296 No fabricados Nacional Semiconductor COP8 No fabricados No fabricados No fabricados No fabricados 62 Se ha decidido utilizar el PIC18F452 por las características técnicas que posee ya que consta de múltiples herramientas que son necesarias para la realización de este proyecto entre ellas la cantidad de puertos que se tienen dentro del microcontrolador y la capacidad para poder manejar dentro de un mismo puerto señales analógicas y digitales, así mismo el fabricante provee a los usuarios de múltiples ejemplos para la manipulación de diversas herramientas y funciones existentes dentro del dispositivo. Las características importantes tomadas en cuenta para selección de este dispositivo para su implantación dentro de este proyecto son las siguientes: Recursos contenidos dentro del PIC: Memoria RAM suficiente para guardar los valores adquiridos de las señales tanto de entrada como de salida, de tipo analógicos como digitales Memoria EEPROM con posibilidad de escribir y borrar cuando se esté ejecutando el programa. Memoria de programa FLASH, con una cantidad suficiente para grabar un programa extenso y posibilidad de borrar y volver a escribir, no estando en tiempo real. Un convertidor A/D, útil para la adquisición de datos de diversos sensores sin la necesidad de utilizar convertidores ADC externos, asimismo se cuenta con 8 canales analógicos para la recepción de datos. Se dispone de tres puertos de entrada-salida, de 8 bits, uno de 6 bits y uno de 3 bits. Comunicación con la pantalla de LCD por medio del puerto C y puerto D. Monitoreo de sensores analógicos por el puerto A. Entrada de teclado por medio del puerto B. Envió y recepción de datos en forma serial por el Puerto C. 63 Uno de los factores más importantes para la selección de este dispositivo han sido la cantidad de puertos que se tienen dentro del mismo dispositivo, ya que se hace uso de varios de ellos al mismo tiempo por lo que era necesario utilizar un microcontrolador con suficientes entradas y salidas para controlar diversos dispositivos, del mismo modo quedando libres un puerto y algunos pines de entrada y salida, se incrementan las posibilidades de ampliar las funciones del circuito en algún futuro o así mismo es posible aumentar la memoria RAM. E importante conocer también lo antes mencionado sobre la característica que se tiene en el dispositivo de poder multiplicar cuatro veces la frecuencia de oscilación ya que se reducen interferencias generadas por osciladores de más alta frecuencia. En la siguente tabla s emuestran las caracteristicas mas relevantes del PIC18F452: Tabla 3.3 Características del PIC18F45 PIC18F452 Memoria de programa FLASH (14 bits) 32K Memoria de datos RAM (8 bits) 1536 Memoria de datos EEPROM 256 Interrupciones 18 Frecuencia de operación Hasta 40MHz Puertos E/S Puertos A, B, C, D, E Timers 4 Modulo A/D de 10 bits 8 canales de entrada Comunicación serie EUSART 64 3.3 Pantalla de LCD de 4 x16 El display utilizado es el modelo JHD539M2, es una pantalla de cristal líquido estándar de 4 filas por 16 caracteres y el controlador que utiliza es un KS0066 de la empresa Samsung. El display puede incorpora luz backlight mediante la activación de los pines 15 y 16 a VCC y a GND respectivamente, así que el consumo que tiene puede ser controlado si no se requiere de el uso de la luz de fondo. El dispositivo LCD se controla a través del puerto C y D, donde tres bits son de control y cuatro son los bits que se utilizan para enviar datos. Fig. 3.3 Esquema de conexión del PIC al LCD Este dispositivo dispone de 16 pines de los cuales dos son para alimentación (VSS y VDD), 1 para ajuste de contraste (V0), 3 para control (RS, R/W y E) y los restantes 8 para transmisión/recepción de datos (D0-D7). En la tabla 3. Se muestra el aspecto y posición de los pines de un módulo LCD estándar. Existen también módulos LCD que disponen de 14 pines, usualmente no contienen pines para la iluminación del LCD mediante LEDs, comúnmente llamado “backlight” o luz de fondo como se menciona anteriormente. La forma más sencilla de controlar los módulos LCD es a través de un microcontrolador. Para ello se seleccionó el PIC18F452 conectado al módulo LCD como se muestra en la figura 3.3. Tabla 3.4 Pines de la LCD 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 Vss VDD V0 Rs R/W E DB0 DB1 DB2 DB3 DB4 DB5 DB6 DB7 LEDK LEDA LCD PIC 18F45 2 Bits de control Bits de datos 65 3.4 Teclado matricial de 4x4 El teclado incorpora 16 teclas, las cuales están conectadas de forma matricial, el teclado funciona de la siguiente manera, todas las teclas se cuentan como activas cuando en la entrada del PIC, este ve un 0. Por lo tanto la secuencia es la siguiente. Primero se lee el estado de los primeros pines del puerto B, y se comprueba pin por pin a ver si hay alguna a 0, en caso afirmativo el dispositivo identifica cual es y mediante una rutina para convertir el dato a código ASCII se puede enviar al LCD y mostrar dicho dato. Fig. 3.4 Teclado matricial Al hacer uso del teclado matricial se sabe que este estará conformado por interruptores de tipo push-boton, por lo que cuando este se cierra no hace contacto inmediatamente con el otro extremo que se conecta con el interruptor, sino que tarda un instante de tiempo en milisegundos en hacerlo, esto genera un rebote eléctrico que degenera en respuestas inesperadas por parte de nuestro sistema debido a que la señal enviada oscila por un instante en un estado alto y bajo de manera intermitente. Para corregir este problema es posible adicionar filtros al circuito para la atenuación de este rebote, sin embargo se ha preferido realizar la corrección mediante software. Se sabe que el tiempo de este rebote es aproximado de 30ms, por lo que si se aumenta 66 un retardo igual a esta cantidad de tiempo cada vez que una tecla es presionada, entonces estaremos realizando la lectura de la tecla cuando esta envié la señal deseada y no ruido eléctrico provocado por el rebote. Fig. 3.5 Rebote generado al oprimir una tecla. 3.5 Comunicación mediante C.I. MAX 232 Este circuito es de gran utilidad cuando se desean ajustar voltajes de comunicación serial a niveles TTL, en el caso de este trabajo es requerido ya que el modulo XBee utilizado es manipulado de manera serial por lo que los datos recibidos son enviados por medio del puerto USB mediante un adaptador RS-232 a USB, por tal motivo es requerido este circuito que servirá como interfaz para comunicar a l a computadora con el modulo inalámbrico. Del mismo modo es necesario tener una interfaz para realizar pruebas y configurar los parámetros mediante el software terminal o mediante el X- CTU, software que provee el fabricante para la manipulación de los módulos por medio del ordenador. Fig. 3.6 Circuito integrado Max232 67 3.6 MPLAB C18 MPLAB C18 es un compilador de C, el cual produce código que puede ser ejecutado por la familia de microcontroladores de Microchip PIC18XXXX. En nuestro caso, la plataforma utiliza el PIC18f452. MPLAB C18 toma sentencias estándares de C, como por ejemplo "while (a!=b)", y las convierte en código máquina del PIC18XXXX. El código fuente es compilado en bloques de código de programa y datos, los cuales son "enlazados" con otros bloques de código y datos, los cuales luego son puestos en varias regiones de la memoria del microcontrolador PIC18XXXX; este proceso es llamado "construir", posteriormente es generado un archivo con extensión .asm, dicho archivo es el que se introduce dentro del microcontrolador por medio de un programador. El compilador C18 y sus herramientas, como el ensamblador o el enlazador, pueden construir un archivo .HEX, el cual puede ser programado en un microcontrolador PIC18XXXX, en la figura 3.7 se encuentra la captura en pantalla del compilador. Fig. 3.7 Compilador MPLAB C18 68 3.7 Software X-CTU Si bien es cierto que es posible utilizar Hyperteminal de Windows para configurar un módulo XBee, existe un programa llamado X-CTU, el cual permite realizar estar operaciones de manera más natural, fácil y rápida. El ejecutable se puede encontrar en la página de MCI ingeniería o en la página oficial de MAXSTREAM quien es el fabricante de los módulos XBee, mediante este software es posible configurar a los módulos y realizar un testeo entre ellos para determinar si fueron configurados de manera optima, del mismo modo posee 2 maneras de llevar a cabo la configuración, una de ellas es de manera grafica y otra es mediante comandos AT, la primera es útil si se realiza una conexión hacia una computadora o si la configuración será estática, sin embargo si se requieren realizar cambios a la configuración de manera constante o si la configuración la realizara un microcontrolador es necesario que sea por medio de comandos AT. Fig. 3.8 Software X-CTU, a la izquierda se encuentra la función de prueba de comunicación, a la izquierda las opciones a configurar. 69 3.8 Componentes del coordinador Los modulos Xbee requieren de una terminal para ser programados, comunmente se utiliza hyperterminal o algún software similar, para ello es necesario conectar el dispositivo a uno de los puertos de la computadora, para lo cual comunmente se utiliza una interfase serial directa o mediante un adaptador para el puerto USB, así mismo son necesarios una serie de comandos llamados AT quienes son una utilidad cuando se requiere un mediador entre la terminal y el usuario. La empresa encargada de desarrollar los modulos Xbee a desarrollado un software con una terminal para la manipulación de comandos AT, y de igual manera dicho software propietario denominado X-CTU maneja una interfaz grafica para la definición de parametros en los modulos. Dicho software se describira mas adelante, ahora corresponde el turno de describir los componentes necesarios para interactuar el modulo con la computadora, dicho modulo servira como coordinador de los demas dispositvos que esten enlazados a el. Fig. 3.9 Componentes de la interzaz con la computadora 70 3.9 Diseño del sistema terminal inalambrico 1 Fig. 3.10 Diagrama a bloques del sistema terminal 1 El sistema terminal tiene una función de adquisición de datos mediante un sensor de temperatura el cual envía el dato adquirido hacia el microcontrolador por uno de sus puertos analógicos, la función de dicho bloque es monitorear temperatura a distancia de manera inalámbrica por medio de módulos XBee, sin embargo el sistema se encarga del mismo modo de controlar la apertura y cierre de accesos así como el encendido y apagado de la ventilación o iluminación. Debido a lo anterior se requiere contar con un menú que tenga el papel de interfaz de usuario con el sistema, de este modo se podrá seleccionar mediante un menú la opción que el usuario desee, asimismo para dicha tarea es de utilidad el colocar un teclado como periférico de entrada hacia el sistema. LCD PIC 18F452 1 2 3 A 4 5 6 B 7 8 9 C * 0 # E MODULO XBEE ALIMENTACION DE 5 v. ALIMENTACION DE 3.3 v. PUERTO D PUERTO C PUERTO B Tx/Rx Sensor de Temperatura PUERTO A 71 3.9.1 Diseño del programa para el primer microcontrolador El microcontrolador la interactuar con el usuario por medio de un tecl ado y una pantalla de LCD cuenta con varios puertos de E/S que permiten controlar las funciones de los dispositivos periféricos y los datos provenientes de manera analógica por parte de sensores que pudiesen conectarse a él, de este mismo modo son coordi nados por el microcontrolador la transmisión y recepción de datos del modulo XBee que permiten controlar las funciones implementadas en el hogar tal como el cierre y apertura de puertas o encendido y apagado de ventilación. 3.9.1.1 Lectura del teclado Fig. 3.11 Diagra de flujo para detectar tecla oprimida en el teclado. Para esta tarea es utilizado por completo el puerto B, dividido en dos partes, la primera de ellas formada por 4 bits enfocados a enviar hacia las filas del teclado un dato que permite identificar mas a delante a la tecla oprimida, la segunda parte del Verificar se presiona alguna tecla ¿Tecla presionada? Recorrer renglones para encontrar la columna donde se oprimió la tecla. Convertir en código ASCII la tecla oprimida. Si No INICIO INICIO 72 puerto igualmente formada por 4 bits reconoce si ha sido enviado por cualquiera de los pines un dato diferente de 1, esto es porque inicialmente se envía solo 1’s y un solo cero hacia las filas y se varia la posición de dicho cero de manera constante. Los datos enviados hacia las filas para reconocer a la tecla oprimida son llamadas dentro del programa “código de fila”, y se enuncian a continuación: Tabla 3.5 Asignación de código para filas del teclado Numero de Fila Código asignado (hexadecimal) 1 FEh 2 FDh 3 FBh 4 F7h Una vez asignados los valores a enviar para las filas se rastrea en las columnas de una en una hasta encontrar aquella que posea un valor de cero a su entrada, esto significara que se ha encontrado la tecla oprimida, dicho proceso se repite una y otra vez en cada una de las filas y de manera continua mientras se mande a llamar la función escrita para lectura de teclado. Por último cuando la tecla oprimida es encontrada se procede a cargar una variable con un dato en hexadecimal asignado conforme a cada tecla, de este modo tendremos la lectura de un valor independiente y diferente en cada caso, si se desea enviar caracteres hacia la LCD o hacia el modulo XBee es necesario realizar la equivalencia con el código ASCII, en la siguiente tabla se muestran los datos asignados a cada tecla: Tabla 3.6 Valores asignados a cada tecla y su equivalencia en ASCII Tecla 0 1 2 3 4 5 6 7 8 9 A B C D E F Valor asignado 00h 01h 02h 03h 04h 05h 06h 07h 08h 09h 0Ah 0Bh 0Ch 0Dh 0Eh 0Fh código ASCII 43h 30h 31h 32h 34h 35h 36h 37h 39h 41h 33h 37h 42h 46h 45h 44h 73 3.9.1.2 Menú mostradopor la pantalla de LCD 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. INICIO Lectura del teclado 01h? 02h? 03h? 04h? ACCESOS VENTILACION TEMPERATURA ILUMINACIÓN FIN 74 Fig. 3.13 Diagrama de flujo de la opción ACCESOS Fig. 3.14 Diagrama de flujo para Entrada ACCESOS Lectura del teclado 01h? 02h? 03h? 04h? FIN ENTRADA GARAGE CAJA FUERTE BODEGA ENTRADA, GARAGE CAJA FUERTE, BODEGA Lectura del teclado 01h? 02h? 03h? 04h? A B C D ¿01h? Cerrar Abrir ¿01h? Cerrar Abrir ¿01h? Cerrar Abrir ¿01h? Cerrar Abrir FIN 75 Fig. 3.15 Diagramas de flujo para lectura de temperatura y control de la ventilación. 3.10 Diseño del sistema terminal inalámbrico 2 El sistema terminal inalámbrico 2 se enfoca al control a distancia de la ventilación y de la iluminación, a diferencia del anterior este se encargara de emitir datos y desplegar las acciones realizadas por medio de la pantalla de LCD, todo es regulado en este nodo por una cadena de 8 bits que simbolizan cada uno una acción dentro de este nodo terminal. El conjunto de datos es enviado y recibido por los módulos inalámbricos XBee. Los cambios se van desplegando por medio de un menú que tiene el papel de interfaz VENTILACION Lectura del teclado ¿01h? ON OFF FIN TEMPERATURA Seleccionar canal analógico Convertir dato analógico a digital Verificar si se ha finalizado la conversión ¿Finalizo? Leer canal ADC ºC= Valor leído por (5/255)*100 FIN 76 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. Fig. 3.16 Diagrama a bloques del sistema terminal 2. Las acciones efectuadas por este nodo son desplegadas en la pantalla, el menú principal es: Control de iluminación, Control de ventilación y la realización de un test de conectividad, para cada una de estas opciones se ha designado un código en hexadecimal que lo identifica inmiscuido en una función dentro del programa del microcontrolador. Asimismo se requiere del envió de un pulso que active cada uno de los dispositivos terminales, en este caso ventiladores o lámparas, por ello es que se encuentran libres 2 puertos del microcontrolador, por medio de los cuales se efectúa el envió del pulso anteriormente mencionado. LCD PIC 18F45 2 MODULO XBEE ALIMENTACIO N DE 5 v. ALIMENTACIO N DE 3.3 v. PUERTO D PUERTO C PUERTO B Tx/Rx PUERTO A 77 Fig. 3.17 Diagrama de flijo para el encendido y apagado de lamparas. Fig. 3.18 Diagrama de flijo para el encendido y apagado de lamparas. Lámpara N Lectura de los datos recibidos por el modulo XBee ¿6Bh? ON OFF FIN Enviar 1’s Enviar 0’s ILUMINACIÓN Lectura de los datos recibidos por el modulo XBee 6Bh? 6Dh? 70h? 71h? Lámpara 1 Lámpara 3 Lámpara 4 Lámpara 5 FIN 6Ch? Lámpara 2 73h? Lámpara 6 78 Fig. 3.19 Diagramas de flujo para la recepción de temperatura y test de conectividad. TEMPERATURA Inicializar USART para recepción de datos. Esperar a que finalice la transmisión. Leer el dato del buffer de la USART. ¿Finalizo? Desplegar en la pantalla de LCD. FIN TEST Inicializar USART para recepción de datos. Esperar a que finalice la transmisión. Leer el dato del buffer de la USART. ¿Finalizo? Enviar por la USART un 50h FIN ¿70h? 79 Fig. 3.20 Diagrama de flijo para el encendido y apagado de ventiladores. Fig. 3.21 Diagrama de flijo para el encendido y apagado de lamparas. VENTILACIÓN Lectura de los datos recibidos por el modulo XBee 41h? 43h? 44h? Ventilador 1 Ventilador 3 Ventilador 4 FIN 42h? Ventilador 2 Ventilador N Lectura de los datos recibidos por el modulo XBee ¿41h? ON OFF FIN Enviar 1’s Enviar 0’s 80 3.11 Acoplamiento óptico entre un sistema digital y una etapa de potencia El microcontrolador realiza diversas operaciones de control, mismas que deben enviadas hacia una etapa de potencia, esto por medio dispositivos como pueden ser los tiristores ya sea triacs, scr, etc. para actuar sobre cargas resistivas o inductivas, tal es el caso de los sistemas de iluminación, o en el control de la velocidad de motores, etc. Al manejar potencia, es decir la manipulación de corrientes altas, es necesario tener en cuenta la seguridad eléctrica para la operación y protección del microcontrolador utilizado. La relación entre ambas etapas (la digital y la de potencia) se hace por medio de un acoplamiento que haga posible aislar eléctricamente los dos sistemas. Esto se logra con los dispositivos llamados optoacopladores. La figura 3.22 muestra un acoplamiento óptico y, al mismo tiempo, un aislamiento eléctrico. Por ello también reciben el nombre de optoaisladores. El acoplamiento se efectúa en el rango del espectro infrarrojo a partir de dispositivos emisores de luz, comúnmente LED’s, estos realizan la función de un emisor y por medio de dispositivos optodetectores se implementan los receptores. Fig. 3.22 Configuración De Un Optoacoplador. 81 Fig. 3.23 Figura y simbolo de un TRIAC 3.12 Puente H (L293B) Los motores de C.D. Utilizados comúnmente en domótica requieren de cierta corriente a través de sus bobinas, en el caso de este trabajo son ejemplificados por medio de ventiladores que contienen motores de corriente directa. Dicha corriente es muy elevada con respecto a lo que un microcontrolador puede soportar. Dado lo anterior, es necesario utilizar un puente H por elemento inductivo si fuese el caso de motores con más de uno de estos elementos. Un puente H es un dispositivo capaz de soportar el flujo bidireccional de corriente invertida. El circuito integrado para el puente “H” que se ocupó para el proyecto es un LM293B y a partir de 2.3 hasta 7 volts se detecta un nivel alto, es decir, un 1 lógico y un estado bajo, es decir, un 0 lógico, desde 0 hasta 1.5 volts . Fig. 3.24 Diagrama esquemático para LM293B. 82 CAPITULO IV IMPLEMENTACIÓN DEL PROTOTIPO 83 4.1 Propuesta de implementación en una casa Este proyecto se realiza con la intensión de ser implementado en una casa la cual tuviera un alto sistema de seguridad en sus accesos donde solo gente autorizada pudiese entrar. Asimismo se pretende dar un cierto grado de comodidad que en una casa se debe que tener; agregando diversas funciones que pudieran ser controladas de forma remota, o bien, que la casa se pudiera controlar, desde abrir una puerta hasta encender un foco por comunicación inalámbrica. Se ha propuesto la organización de diversas habitaciones y lugares dentro de una casa donde sería posible la implementación del proyecto, esto considerando los elementos principales que todo hogar tiene. (Véase figura 4.1) Fig. 4.1 Plano de la casa propuesta para la implementación. 84 Fig. 4.2 Diseño en 3D de la Casa propuesta para la implementación. Esta casa cuenta con los siguientes elementos: Puerta principal y puerta para la cochera, puerta para la recamara 1 y 2, puerta para el baño y la cocina. Cochera, 2 recamaras, baño, cocina, comedor. Una sala comedor. 2 recamaras y un baño . Un estudio dentro de la sala comedor. Una puerta a la cochera. Cada una de las estancias cuenta con una lámpara incandescente, es decir, la casa cuenta con 6 lámparas en total y cuatro de las estancias se encontrara ventilada. La casa cuenta con un sensor de temperatura que monitorea la misma en todo momento. La casa a escala se puede controlar por un sistema de comunicación inalámbrica. 85 4.2 Configuración de los modulos XBee Para comunicar el dispositivo ya sea para realizar pruebas con una computadora o para utilizarla como interfase con un nodo coordinador se utiliza un circuito mediante el cual se hace uso de la comunicaion serial, para lo anteriormente descrito se utiliza un circuito integrado que se distribuye comercialmente con el nombre de MAX232, la tarea de este elemento es transformar señales de tipo digital en rangos TTL a valores que son reconocidos por las interfaces de tipo RS-232. Es posible hacer uso del puerto serial de las computadoras para conectarse al circuito integrado, sin embargo resulta mas practico utulizar un cable adaptador USB-RS-232, esto por el motivo principal de que todas las computadoras modernas manejan mas este puerto. A si mismo para comunicar el dispositivo mediante un microcontrolador es necesario manejar comunicación serial por lo que en la selección del microcontrolador que manejara datos enviados por el dispositivo coordinador tendra que tomarse en cuanta esta característica. Fig. 4.3 Diagrama esquematico para el coordinador y pruebas. 86 Fig. 4.4 Circuito Impreso del coordinador 4.2.1 Configuracion con el software X-CTU La figura 4.5 mustra la pantalla pruncipal del software XCT-U, cuando el programa es ejecutado se selecciona de manera predeterminada la pestaña “PC Settings”, en ella se selecciona el puerto por el cual sera conectado el modulo y la tasa de transmision en baudios a la cual el modulo envia y recibe datos, dicha tasa de transmision es seleccionable entre 1200 y 230400 bps, para este proyecto se ha optado por utilizar 9600 bps. Fig. 4.5 Captura en pantalla de la ventana principal del software XCT-U 87 Para determinar si la conexión de él modulo XBee con la computadora mediante el circuito mostrado en la figura 4.4 es realizada de manera correcta se utiliza una función incluida dentro del software llamada “Test/Query”. Una vez realizada la prueba el programa arroja una ventana indicando que la conexión con el modulo es realizada de modo exitoso, en caso contrario se muestra una ventana con un mensaje que indicara que la conexión de la computadora con el dispositivo ha sido fallida, ambos casos se muestran en la figura 4.5. Fig. 4.6 A la izquierda se muestra la caprura en pantlla de una comunicación exitosa, a la derecha se muestra el resultado de una comunicación fallida. El dispositivo coordinador será el elemento central dentro de la red, y este se comunicara directamente con una computadora y un software con interfaz con el usuario, dicho dispositivo se comunicara con módulos XBee configurados como dispositivos finales, los cuales pueden enviar datos al nodo central, sin embargo en este caso no se encuentran configurados para enviar mensajes entre ellos directamente sin pasar antes por el nodo central. Para que se la comunicación antes mencionada es imprescindible que sea configurada una dirección de 16 bits que representa el dispositivo con el que se comunicara el nodo central, del mismo modo se configura la 88 dirección propia con la cual otros módulos pueden intercambiar datos. La figura 4.7 muestra la forma de configurar al modulo. Fig. 4.7 Configuracion del modulo central. Como se observa en la figura 4.7 las direcciones se introducen mediante comandos AT, para accesar a este modo lo primero que se ha hecho es colocar “+++” con este comando se indica al modulo que se introducirán una serie de comandos, al primer comando mostrado es “ATMY”, este tiene como consecuencia la introducción hacia el modulo de la dirección propia del modulo, para este caso se ah dispuesto que sea cero. El comando siguiente es “ATDL”, el cual introduce la dirección de un modulo con el cual se mantendrá una comunicación saliente del nodo central. Cabe señalar que no en todos los casos es necesario colocar una dirección de destino, ya que el nodo central en ocasiones solo se encarga de recolectar datos y no de enviar, en estos casos la dirección de destino para el coordinador sale sobrando ya que no es de utilidad. Todas las instrucciones son introducidas en la pestaña “terminal”, y son almacenadas en los 89 módulos de forma permanente hasta que se sobrescriban, la figura 4.8 muestra la pestaña “Modem Configuration” en la cual se puede ver todos los cambios realizados. Fig. 4.8 Elementos configurados dentro de los modulos XBee 4.3 Componentes del sistema terminal 1 Como se había mencionado con anterioridad, la construcción del nodo terminal tiene como objetivo controlar funcione de manera remota dentro de una casa domótica, el objetivo es que el usuario pueda manipularlas y observar el estado fácilmente, por tal motivo se cuenta dentro del circuito con un apantalla de LCD que muestra las acciones realizadas que se ejecutan en base a lo que el usuario desea y del mismo modo introduce mediante un teclado. En el capitulo anterior se describe a bloques el diagrama mostrado en la figura 4.9, en la cual se muestran las conexiones entre los dispositivos utilizados en el nodo terminal. 90 Fig. 4.9 Diagrama esquematico del nodo terminal En el diagrama esquemático de la figura 4.9 se observa que el corazón de este sistema es un microcontrolador, quien se encarga de coordinar todos los eventos que ocurren de manera remota, la función de dicho sistema es controlar la apertura y cierre de accesos, encendido y apagado de la ventilación, monitoreo de temperatura y el control de la iluminación. Para el monitoreo de temperatura se ha introducido en el sistema un sensor LM35, el cual tiene una variación de 10mV /ºC, en base a esta variación se ha diseñado el programa dentro del microcontrolador el cual nos da una lectura en grados Celsius. Cabe señalar que se ha procurado que los componentes de Hardware sean los menos posibles, por tal motivo se ha hecho uso del sensor LM35 directamente en su forma analógica conectándolo con un puerto analógico del microcontrolador. Para hacer lectura del sensor de temperatura es necesario hacer uso de las funciones de conversión ADC del PIC18F452. 91 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. 92 4.3.1 Configuración con el software XCT-U En la figura 4.12 se muestra la configuración de la dirección del nodo central, cuya dirección de destino se propuso que fuera “1234”, la dirección antes mencionada corresponderá ahora a la dirección del dispositivo que se encuentra funcionando en el nodo terminal, en este caso la dirección de destino es aquella que hemos configurado en la figura 4.7 como dirección de origen, los comandos introducidos para llevar a cabo la configuración anterior se muestran en la misma figura. Cabe señalar que cada vez que se introduce un comando y este es recibido correctamente por el dispositivo se mostrara un “OK” como respuesta, en caso contrario no existirá dicho resultado. Fig. 4.12 Configuracion del modulo XBee del nodo terminal 1. 93 4.4 Componentes del sistema terminal 2 El nodo terminal 2 es del mismo modo que el anterior controlado por el nodo principal tiene como objetivo controlar funcione de manera remota dentro de una casa domótica, la finalidad es que el usuario pueda manipularlas y observar el estado fácilmente, por tal motivo se cuenta dentro del circuito con un apantalla de LCD que muestra las acciones realizadas que se ejecutan en base a la acción ejecutada, a diferencia del anterior las funciones son seleccionadas desde el nodo principal y no con un teclado, así mismo son emitidos pulsos que activan o desactivan la iluminación y la ventilación. En la figura 4.13 se muestra el diagrama esquemático del nodo terminal 2 donde el teclado no es requerido. Fig. 4.13 Diagrama Esquematico del nodo terminal 2. 94 En la figura 4.14 se aprecia el circuito impreso con sus elementos montados sobre ella se ilustra la manera en que se encuentra el circuito del noto terminal 2 después de insertar todos sus componentes, del mismo modo que al nodo terminal 1 ha sido necesario para efectos prácticos disponer de reguladores de voltaje de 5 v. y 3.3 v. con el objetivo de unificar las fuentes en una sola para todos los dispositivos. Asimismo se observa la ausencia de un teclado el cual no es necesario para seleccionar la acción a realizar. Fig. 4.14 Circuito impreso del nodo terminal 2. 4.4.1 Configuración con el software XCT-U Para la configuración del modulo XBee de este nodo es necesario tomar en cuenta los mismos parámetros que los dos anteriores, del mismo modo es necesario tener una dirección de origen y una dirección destino, la dirección destino se conservara igual que la del nodo terminal 1, esto en base a que el nodo principal es el mismo destino para ambos nodos principales. Para el caso de la dirección propia del dispositivo XBee en cuestión se ha propuesto “2222”, la dirección antes mencionada corresponderá ahora a la dirección del dispositivo que se encuentra funcionando en el nodo terminal, en este 95 caso la dirección de destino es aquella que hemos configurado en la figura 4.7 como dirección de origen. Para este nodo la dirección destino es la dirección “0”, los comandos introducidos para llevar a cabo la configuración anterior se muestran en la figura 4.15. Cabe señalar que cada vez que se introduce un comando y este es recibido correctamente por el dispositivo se mostrara un “OK” como respuesta, en caso contrario no existirá dicho resultado. El nodo terminal dos se encargara de enviar datos hacia el nodo principal, sin embargo, en nodo terminal 1 también podrá enviar datos hacia el nodo terminal 2 a través del nodo principal, esto es debido a que los tres dispositivos XBee se encontraran relacionados por medio de las direcciones de destino y de origen. Fig. 4.15 Configuracion del modulo XBee para el nodo terminal 2. 96 4.5 Componentes del acoplamiento óptico entre en sistema digital y la etapa de potencia El principal motivo para llevar a cabo acoplamiento óptico y aislamiento eléctrico es por protección del microcontrolador ya que si en algún momento ocurre un corto en la etapa de potencia, o cualquier otro tipo de anomalía eléctrica, el optoacoplador protege a todo el circuito digital. Fig. 4.16 Montaje Estándar Básico Con Lógica Digital Positiva. La figura 4.17 presentará la configuración estándar empleada para hacer acoplamiento óptico entre sistemas digitales y etapas de potencia. El montaje requerido se selecciona de acuerdo con las características del sistema a estudiar. Fig. 4.17 Circuito utilizado para la manipulación de elementos de C.A. 97 4.6 Manipulación de motores de C.A. con C.I. L293B El movimiento de los ventiladores esta determinado según las instrucciones que envié el microcontrolador, así, cuando envíe un nivel alto en la pata número 2 del elemento LM293B y al mismo tiempo envíe un nivel bajo a la pata número 7 del mismo circuito integrado, este componente enviará una señal a un motor desde la pata 3 y 6, el cual hará girar un motor. Hay 4 ventiladores que se activan de acuerdo a la salida entregada por parte del microcontrolador. Fig. 4.18 Diagrama de conexión para el giro en un solo sentido del L293B Fig. 4.19 Conexión al microcontrolador del L293B 98 4.7 La transmision serial del PIC 18F452 Fig. 4.20 Se muestra la inicialización del modo de transmision serial. La figura 4.20 nos muestra en con la función openUSART la inicialización del modo de transmision siincrona del microcontrolador. Para el presente trabajo se ha escogido realizar el envio de datos en seríe ya que es posible manipular mas facilmente el modulo XBee de este modo, ya que unicamente utilziamos 2 pines del mimo facilitando enormemete la interconexión entre el microcontrolador y el modulo inalambrico. Para la comunicación serial es necesario agregar la librería usart.h a las librerías manipuladas por el proyecto. Con esta librería se configura el modo de transmisión y recepción serie del microcontrolador 18F452. 99 Dentro del la función openUSART se configuran parámetros relacionados con el modo de transmisión de datos que el microcontrolador efectuara, los puntos importantes que se tienen que configurar son la habilitación de la transmisión o la recepción, en el caso de este proyecto se ha seleccionado ambos, de este modo el microcontrolador se encontrara listo para realizar un intercambio de información. Otro parámetro de gran importancia es la configuración del modo de transmisión ya sea que este sea síncrono o asíncrono, para nuestro caso se ha seleccionado el asíncrono debido a que el contenido de información que se transmite no requiere de mayores atributos, esto es en base a que los bytes intercambiados solo tienen el propósito de transportar información relativa a sensores y señales para activar o desactivar dispositivos. Para la configuración de los parámetros es necesario revisar el manual de usuario del compilador, el cual nos provee de las cadenas que reconoce la función openUSART, en base a las cuales se varían los parámetros antes mencionados. La tabla 8 muestra las cadenas que reconoce la función openUSART. Tabla 4.1 Caracteres utilizados para la inicialización de la transmisión de datos del modo serial CADENA DESCRIPCION USART_TX_INT_ON Activar transmisión de datos. USART_TX_INT_OFF Desactivar transmisión de datos. USART_RX_INT_ON Activar recepción de datos. USART_RX_INT_OFF Desactivar recepción de datos. USART_ASYNCH_MODE Activar transmisión asíncrona. USART_SYNCH_MODE Activar transmisión síncrona. USART_EIGHT_BIT Utilizar 8 para cada trama. USART_SINGLE_RX Tx / Rx datos con una separación de tiempo. USART_CONT_RX Transmitir y recibir datos de forma continua. USART_BRGH_HIGH Alta tasa de transición. USART_BRGH_LOW Baja tasa de trasmisión. 100 4.8 Programación del primer microcontrolador El primer microcontrolador se encargara de controlar los accesos de manera remota para lo cual es necesario que se cuente con una contraseña de entrada que permita aumentar el nivel de seguridad en la permisión o restricción de los accesos al recinto. Otra opción es el control de ventilación e iluminación de manera remota. El microcontrolador se encargara de administrar el envió de los bytes que identifican a cada una de las acciones antes mencionadas, y del mismo modo este microcontrolador utiliza un sensor de temperatura LM35 para el monitoreo de la misma. En la figura 4.21 se observan las declaraciones de las funciones a ejecutar y las cadenas que desplegara la pantalla de LCD. Fig. 4.21 Captura en pantalla del codigo fuente y la declaración de las cadenas para el despliegue del menu principal 101 4.8.1 Control de accesos El uso de la transmisión serial se utiliza para enviar y recibir datos mediante la computadora a los módulos XBee, los cuales se retransmiten y finalmente un modulo receptor envía de nuevo mediante transmisión serial hacia el microcontrolador, se ha definido un valor determinado en hexadecimal para cada una de las acciones realizadas. Para el control de accesos en el programa diseñado se ha hecho uso de sentencias “Switch”, en la figura 4.22 se observa parte de dicha sentencia en la cual se ve la estructura de esta. Los bytes enviados son reconocidos por el nodo principal conectado a la computadora y de este modo se reconoce la acción requerida. Fig. 4.22 Sentencia Switch para la apertura y cierre de la entrada principal. 102 Para cada acción requerida dentro de la función de “ACCESOS” se tiene especificado un código diferente que fue asignado para diferenciarlos entre sí por parte del nodo terminal, la tabla 9, muestra dichos valores. Tabla 4.2 Valores hexadecimales enviados para los accesos. 4.8.2 Control de Ventilación Para el control de ventilación se ha decidido ejemplificar con el control de 4 ventiladores colocados en la sala, la recamara 1, la recamara 2 y la cocina. En el software se ejemplifican dichas acciones mediante el despliegue de imágenes como se explicara más adelante. Tabla 4.3 Valores hexadecimales enviados para la ventilación. VALOR HEXADECIMAL ACCIÓN 61h Abrir la “Entrada Principal” 62h Cerrar la “Entrada Principal” 63h Abrir la puerta de la “Recamara1” 64h Cerrar la puerta de la “Recamara1” 65h Abrir la puerta de la “Recamara 2” 66h Crrar la puerta de la “Recamara 2” 67h Abrir la puerta del “Garage” 68h Cerrar la Puerta del “Garage” VALOR HEXADECIMAL ACCIÓN 41h Activar el Ventilador de “la Sala 1” 42h Desacticar el Ventilador de “la Sala 1” 43h Activar el Ventilador de “la Recamara 1” 44h Desacticar el Ventilador de “la Recamara 1” 45h Activar el Ventilador de “la Recamara 2” 46h Desacticar el Ventilador de “la Recamara 2” 47h Activar el Ventilador de “la Cocina” 48h Desacticar el Ventilador de “la Cocina” 103 En la tabla 10 muestra los valores asignados para el caso de el control de la ventilación, del mismo modo que en el caso del control de accesos se hace uso de sentencias “Switch” las cuales contienen las instrucciones a realizar en cada uno de sus casos contenidos en ella, cada caso es seleccionado mediante la identificación de caracteres enviados por medio del teclado matricial. Para el despliegue del estado “ON” y “OFF” se ha introducido un lapso de tiempo para borrar y volver a escribir el estado, esto solo para fines estéticos, ya que se decidió que el estado parpadeara cuando era cambiado, de este modo es más apreciable el cambio del mismo. Fig. 4.23 Sentencia Switch para el encendido y apagado de la ventilación. 104 4.8.3 Monitoreo de temperatura Fig. 4.24 Rutina de adrquisicion de datos de temperatura. Para el monitoreo de temperatura se ha hecho uso de un canal analógico del microcontrolador, esto con la finalidad de no realizar un circuito externo, por lo cual al rutina mostrada en la figura 4.24 contiene las instrucciones pertinentes para la lectura de un dato analógico, debido a que los datos de temperatura se deben monitorear de manera constante se ha introducido la rutina dentro de un bucle que permite realizar lecturas ininterrumpidas sobre la temperatura, para realizar el envío de la información tanto de unidades como de decimales de una manera más optima se unen ambas en una sola cifra, de esta forma se envían solamente datos enteros, la conversión se realiza una vez que la información ha llegado. 105 4.8.4 Control de iluminación Fig. 4.25 Control de iluminación Para el control de iluminación se han diseñado dos formas de hacerlo, una de ellas es la presente. Esta envía datos desde el nodo terminal 1 hacia el nodo principal, enseguida este retransmitirá la instrucción hacia el nodo terminal 2 para finalmente emitir la señal que activara al dispositivo luminoso. La segunda es el control directo mediante el software diseñado en Visual Basic. Se ha di spuesto 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. 106 Tabla 4.4 Valores correspondiestes al control de iluminación 4.9 Programación del 2º microcontrolador El segundo microcontrolador tiene la función de recibir e interpretar datos provenientes del nodo principal a través del modulo XBee conectado directamente al nodo terminal 2. En este caso el microcontrolador se conecta con el modulo de transmisión inalámbrica por medio de la USART, en ese caso las funciones son principalmente implementadas para la recepción de datos ya que este nodo es destinado a demostrar que la información puede ser enviada y recibida por medio de tecnología ZigBee en este caso utilizando módulos XBee. Fig. 4.26 Cadenas mostradas en el menú del nodo terminal 2. VALOR HEXADECIMAL ACCIÓN 6Bh Activar la Iluminación del “Garage” 6Ch Desactivar la Iluminación del “Garage” 6Dh Activar la Iluminación de la “Recamara 1” 6Eh Desactivar la Iluminación de la “Recamara 1” 6Fh Activar la Iluminación de la “Recamara 2” 70h Desactivar la Iluminación de la “Recamara 2” 71h Activar la Iluminación de la “Cocina” 72h Desactivar la Iluminación de la “Cocina” 107 4.9.1 Monitoreo de temperatura Fig. 4.27 Monitoreo de temperatura en el nodo terminal 2. El nodo terminal 2 recibe la temperatura reenviada por medio del software diseñado en Visual Basic, cada vez que el estado cambia en el nodo terminal 1 se envía a la interfaz grafica, está a su vez la reenvía al nodo terminal 2. La particularidad de esta aplicación es demostrar que los valores sensados de algún parámetro pueden ser vistos de forma remota desde cualquier punto conectado dentro de la red implementada mediante módulos XBee. Dentro de la programación propia del microcontrolador se ha separado el dato en dos partes, una corresponde a las unidades y otra a los decimales, lo anterior para que pueda ser desplegado de forma clara por la pantalla de LCD. 108 4.9.2 Control de ventilación e iluminacion Fig. 4.28 Envio de datos para control de ventilación. Para el control de ventilación e iluminación igualmente se ha previsto el envió de un código previamente predeterminado que indica los cambios a realizarse en este rubro. La figura 4.28 muestra la forma en la que se envían dichos valores hexadecimales, existe una rutina del mismo tipo para cada uno de los ventiladores y lámparas a controlar. 109 4.10 Desarrollo de la interfaz grfáfica La interfaz grafica es propiamente una interfaz de tipo hombre –máquina, que tiene como objetivo crear un mecanismo que permita a un ser humano interactuar con los dispositivos remotos para así determinar el estado de los mismos y conocer los cambios registrados en variables físicas tales como temperatura encendido y apagado de la ventilación o la apertura y cierre de puertas. 4.10.1 Descripción de la aplicación Como ya se ha mencionado el softwae es indispensable para interactuar con el usuario, debidoa esto dicha interfaz tiene como host a una computadora por medio de la cual se puede controlar el sistema de dispositivos remotos, asi mismo se motitorean los mismos, esta aplizacion se encarga de controlar los puertos sreales o USB del ordenador , lo anterior con el firme objetovo de enviar informacion necesaria al modulo XBee, mismo qu a su vez se encargara de enviar informacion al microcontrolador 18F452 quien aminstra las funciones programadas, y se ubica en las subrutinas programadas en el. Para la elaboracion de la interfaz hombre maquina se ha seleccionado el entorno gráfico de Visual Basic 6 ya que tiene la posibilidad de incluir un entorno grafico más amigable, asi mismo es posible controlar los puertos de la computadora, mismos que son escenciales para poder diseñar unsistema de adquisicion de datos, del mismo modo con el control de puertos es posible realizar interación con hardware externo: El entorno de desarrollo de Visual Basic 6 provee una sere de funciones que permiten anipular de unamanera mas optima los parametross de los puertos tales como la tasa de transmision y el tamaño de la trama de bots a recibir. A continuación se describe el modo de funcionamiento de la interfaz grafica y la descripcion de las ventanas que se han desarrollado para cada aplicación. 110 4.10.2 Descripción de la interfaz gráfica Fig. 4.29 Captura en pantalla de la interfaz gráfica En la figura 4.31 se observa la ventana principal como se puede observar, esta pantalla invita al usuario a escoger un puerto USB disponible para la comunicación, la persona que utiliza el software es entonces capaz de elegir por lo tanto el puerto deseado colocando el cursor sobre el mismo. Cuando se realiza esta acción, es necesario pulsar el botón “conectar”, con lo anterior el programa habilitará el puerto escogido y lo abrirá, teniéndolo listo tanto para la transmisión como para la recepción. Una vez determinado el puerto de comunicaciones, se puede observar el Menú del Sistema, el cual se encuentra constituido de: “Iluminación”, “Temperatura”, “Ventilación” y un botón de “Test de Conectividad” que sirve para realizar una prueba que determine si los módulos envían y reciben datos de manera correcta. La pantalla principal también cuenta con recuadros donde se muestra el estado de los accesos y de la ventilación mediante imágenes en movimiento. 2 3 1 4 5 6 7 8 9 10 11 12 13 14 15 111 Los diferentes elementos que conforman la pantalla principal de la interfaz grafica se muestran en la siguientetabla: Tabla 4.5 Descripción de los elementos de la interfaz gráfica. # NOMBRE DESCRIPCIÓN 1 No. De puerto Selecciona el numero de puerto a utilizar dentro de la computadora. 2 Conectar Habilita el puerto seleccionado para comenzar a enviar y recibir datos. 3 Desconectar Cierra el puerto seleccionado. 4 Iluminación Abre el panel de control para la iluminación. 5 Temperatura Abre la ventana de monitoreo de temperatura. 6 Ventilación Abre la ventana de control de ventilación. 7 Test de conectividad Abre la ventana para realizar prueba de conectividad con el modulo XBee. 8 Entrada Principal Muestra el estado mediante una imagen. 9 Puerta 1 Muestra el estado mediante una imagen. 10 Puerta2 Muestra el estado mediante una imagen. 11 Garage Muestra el estado mediante una imagen. 12 Ventilación en habitación 1 Muestra el estado mediante una imagen. 13 Ventilación en habitación 2 Muestra el estado mediante una imagen. 14 Ventlación en la sala Muestra el estado mediante una imagen. 15 Ventilación en la cocina Muestra el estado mediante una imagen. 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. 112 Fig. 4.30 Ventana para control de Iluminación Fig. 4.31 Ventana para monitoreo de temperatura. 113 En la figura 4.33 se aprecia la ventana para el monitoreo de la temperatura, dentro de la cual se despliega el dato enviado a través del modulo XBee dentro del nodo terminal 1. Del mismo modo se aprecia mediante una barra de termómetro el incremento o decremento de la temperatura. Tanto el despliegue textual de las magnitudes de la temperatura como la imagen del termómetro están enlazados de tal forma que cambian de estado en el mismo instante de tiempo. Dentro de la ventana mencionada por último se incluye un recuadro donde se mostrará una imagen que indicará cuando la temperatura sea considerada como excesiva, motivo por el cual la ventilación se encenderá, y de este modo se pretende que la temperatura ambiental dentro del recinto disminuya. Como parte de las funciones del software elaborado mediante el entorno de desarrollo de Visual Basic se ha considerado que para fines demostrativos era de gran utilidad el incluir una rutina dentro del programa que verificara el envió y recepción de datos por medio de los módulos inalámbricos con el objetivo de verificar su funcionamiento y apreciarlo de forma más gráfica. Fig. 4.32 Test de conectividad con los nodos terminales 114 Otra de las opciones que nos presenta la ventana principal, es la posibilidad de seleccionar el elemento de ventilación que se desea activar mediante otro formulario con los elementos necesarios para encender y apagar de manera remota, sin embargo a diferencia de la opción presentada en la pantalla de presentación del software, el mando es tomado desde el ordenador y no por un nodo terminal. Fig. 4.33 Ventana para el control de ventilación. Cabe mencionar que el código fuente para cada una de las ventanas se encuentra dentro del mismo proyecto de visual basic, sin embargo ha sido necesario declarar la apertura del puerto a utilizar al inicio de cada uno de ellos puesto que no se reconoce la declaración de este para diferentes formularios, sin embargo esto no interfiere con el libre y correcto funcionamiento del software. 115 CAPITULO V PRUEBAS Y RESULTADOS 116 5.1 Prueba del sistema terminal 1 En el capitulo anterior se presenta la construcción de los nodos terminales y del nodo central, en la figura 5.1 se aprecian ambos circuitos con todos sus dispositivos montados. Los circuitos en cuestión funcionan de manera independiente en cada nodo, es decir que cada circuito se comunica con el nodo central y este se encarga si fuese necesario de transmitir el mensaje hacia el nodo terminal 2 o nodo terminal 1. Fig. 5.1 Circuitos impresos de ambos nodos terminales con los dispositivos montados. 117 Fig. 5.2 Menu principal del nodo terminal 1 La figura 5.2, muestra al circuito del nodo terminal 1 funcionando, en la pantalla se muestran cuatro opciones a elegir mediante el teclado, las cual es son: Accesos, Ventilación, Temperatura e Iluminación. Una vez que se selecciona la primer opción de las que se presentan será mostrada una pantalla de un submenú. Sin embargo debido a que los accesos deben de otorgarse solo a aquellas personas de confianza se protege mediante contraseña (véase figura 5.3). Fig. 5.3 Contraseña para ingresar a alguno de los puntos de acceso. 118 Fig. 5.4 Submenú para la opcion “ACCESOS”. En la figura 5.3 se muestra la pantalla mostrada para pedir el ingreso de una contraseña configurada dentro del programa introducido en el microcontrolador, si esta es correcta se mostrara la pantalla siguiente donde se puede seleccionar el elemento al que se le podrá otorgarle la libertad de dar acceso o restringir dicho ingreso, estas opciones también son seleccionadas mediante el teclado (véase figura 5.4). Fig. 5.5 Seleccionar la apertura de algún acceso. 119 Una vez que se accede al submenú de “ACCESOS” es posible permitir el acceso a un recinto o bloquear el mismo, en la figura 5.5 como ya se menciono se aprecia la pantalla mostrada cuando se accede a un recinto y en la figura 5.6 se muestra la contraparte de este, es decir el cierre de un acceso. Para ambos casos anteriormente señalados se envía un código en hexadecimal que indica al software de control la acción realizada. Fig. 5. 6 Seleccionar el cierre de algun acceso. Una vez seleccionada una de las dos opciones presentadas en la última pantalla mostrada (véase figura 5.6) se puede retroceder en el menú presionando la tecla “A”, y de esta manera se pude retroceder y seleccionar otro de los accesos. Sin embargo si lo que se desea es regresar al inicio el procedimiento es similar, pero en este caso se debe presionar os veces repetidas la tecla “A”, ahora estando en el menú principal será posible seleccionar una acción diferente. La figura 5.7 muestra la pantalla que aparece una vez que se ha seleccionado la segunda opción presentada por el menú principal, en este caso se trata de “Ventilación” , del mismo modo que en los accesos, para encender la ventilación se presiona el “1” y para apagar la ventilación se presiona el “2”. 120 Regresando al menú principal seleccionando ahora la tercera de las opciones se encontrará la pantalla mostrada en la figura 5.8, lo anterior corresponde a el despliegue de la temperatura ambiental monitoreada por el software programado en Visual Basic, Cuando se selecciona esta opción el modulo XBee envía la información de manera constante del dato monitoreado. Fig. 5.7 Monitoreo de temperatura ambiental. La última de las opciones presentadas por la pantalla del nodo terminal 1 es la posibilidad de controlar la iluminación desde un mando remoto, se selecciona alguna de las cuatro opciones y posteriormente el microcontrolador cambiara la pantalla a la mostrada en la figura 5.10 dentro de la cual se controla de manera directa el encendido y apagado. Fig. 5.8 Activar o desactivar la iluminación en un espacio. 121 5.2 Prueba del sistema terminal 2 El nodo terminal 2 es mostrado en la figura 5.11, en donde se encuentra con sus componentes, a diferencia con el anterior este dispositivo recibirá completamente datos y solo enviara cuando se solicite realizar una prueba de conectividad, todas las peticiones serán visualizadas por medio de la pantalla de LCD. La tablilla de circuito impreso contiene headers hacia los puertos configurados como salida del microcontrolador, dichos puerto son el puerto A y el puerto B. Lo anterior se ha realizado con el objetivo de enlazar el nodo con dispositivos termi nales por medio de un circuito de potencia como pueden ser lámparas y ventiladores. Fig. 5.9 Nodo terminal 2 con todos sus elementos. 122 Fig. 5.10 Primer pantalla presentada por el nodo terminal 2. La figura 5.12, ejemplifica al circuito del nodo terminal 2 cuando es encendido, en la pantalla se muestran cuatro opciones posibles para ser seleccionadas por medio de mando remoto a través de los módulos XBee, las opciones que componen el menú están conformadas por: Temperatura, Ventilación, Iluminación y Test. La primea de las opciones recibe el dato retransmitido por el nodo principal a cerca de la temperatura, y es mostrada de igual forma que en nodo terminal 1. Fig. 5.11 Pantalla presentada cuando es seleccionada la segunda opción del menú. 123 5.3 Prueba del software Una vez que el software comienza a ejecutarse es necesario seleccionar el puerto por el cual se conectara la computadora con el nodo central, enseguida se presionara el botón “Conectar” por medio del cual se inicia la apertura del Puerto seleccionado para la realización del envío de datos a través de él. Fig. 5.12 Cierre de un acceso. Cuando se recibe un byte con el código correspondiente a alguno de los accesos se despliega en el software una imagen con una puerta cerrada o abierta según sea el caso, también salta una ventana de alerta indicando la acción realizada. Para cada movimiento realizado en el cual se encuentra involucrado el software después de ser ejecutado se muestra u instante un plano en donde se marca la posición del elemento y una imagen del elemento en 3D. 124 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. 125 Fig. 5.15 Muestra del plano en el cual se encuentra el acceso principal. Fig. 5.16 Monitoreo de la temperatura por medio del software. 126 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. 127 5.4 Rango de alcance Se realizaron pruebas con los circuitos impresos y los módulos XBee, esto con el fin de comprobar el alcance que nos brindan los módulos. De los parámetros más determinantes en este aspecto se encuentran los obstáculos mismos que pueden ser las paredes, puertas y ventanas, las cuales son inevitables en las aplicaciones de redes inalámbricas. En estas condiciones es de gran utilidad especificar el rango de alcance de los dispositivos. Primero se experimentó dentro de distancias pequeñas y dentro de una misma habitación, como es el caso de una sala , en donde se obtuvieron resultados óptimos en cuánto a funcionamiento y nivel de señal del módulo remoto, pues éste trabajó de manera adecuada y además captó una buena señal. Los dos dispositivos se comunicaron sin ningún problema presentando los valores adquiridos tanto en la pantalla del PC como en el LCD. Fig. 5.18 Datos recibidos en las pruebas mediante el monitoreo de temperatura. 128 En la figura 5.24 se observan los datos en hexadecimal recibidos por el nodo principal. Se ha realizado esta prueba con el monitoreo de temperatura ya que esta opción permite recibir datos de manera continua. Luego se aumentó un poco más la distancia. El módulo terminal se colocó en una habitación, mientras que el módulo coordinador junto con el host fue trasladado a otra habitación. Bajo estas condiciones el prototipo respondió aún de manera óptima, ya que siguió actuando de forma correcta y con un buen nivel de señal. Fig. 5.19 Datos recibidos con algunos errores. Finalmente se procedió a colocar al módulo base en el extremo más apartado con respecto al módulo terminal; es decir, fueron separadas la mayor distancia posible entre sí con el fin de comprobar si en estas condiciones existía algún problema. Realizando las correspondientes pruebas al prototipo, se pudo comprobar que 129 seguía funcionando sin ningún problema a una distancia de hasta 50 metros, aproximadamente con obstáculos . En la imagen 5.25 se observa en algunas partes que el dato en hexadecimal no es un numero, en base a que nunca se envían datos que representen caracteres diferentes de algún numero, se puede afirmar que a partir de esta distancia se comienzan a recibir perdidas en la transmisión debido a los variados obstáculos que siempre hay en una casa. 5.5 Muestra del estado de la ventilación e iluminación Para mostrar el cambio de estado de la ventilación e iluminación se han colocado dentro del software en Visual Basic imágenes que cambian de acuerdo a la petición realizada desde los nodos terminales, sin embargo para efectos demostrativos se ha colocado una tablilla con bombillas y ventiladores de C.D., con lo anterior se demuestra que es posible agregar al sistema de comunicación de manera sencilla elementos que requieran cierto nivel de potencia, lo anterior anexando algunos elementos descritos anteriormente. Fig. 5. 20 Tablilla con bombillas de C.A. y ventiladores de C.D. 130 CONCLUSIONES Al finalizar este trabajo de tesis se ha comprobado la posibilidad de implementar un red con tecnología ZigBee para la adquisición de datos y el control de dispositivos tiene una buena calidad de enlace, asimismo se ha corroborado que al realizar un prototipo que sea funcional de manera remota hace más fácil la manipulación de diversas variables así como permitir la lectura en cualquier momento haciendo uso de una PC o de un nodo terminal sin necesidad de estar en el lugar preciso. Por lo anterior se puede afirmar que mediante un prototipo como el construido se facilitan las tareas relacionadas con la observación y manipulación a distancia de múltiples dispositivos sensores. La utilización de diversos aparatos que funcionen bajo rangos de frecuencia similares no afecta en el desempeño del prototipo pues al estar en contacto con ellos no se ha presentado fallas en la transmisión. Uno de los beneficios de utilizar la tecnología ZigBee es la mejora de transmisión de datos entre diversos dispositivos tomando en cuenta la distancia que ésta puede proporcionar, la cual en zonas abiertas alcanza los 100 metros. Comparando la distancia mencionada en el párrafo anterior con las distancias manejadas por otras tecnologías inalámbricas a nivel PAN, ZigBee es capaz de lograr un mayor alcance y un menor consumo de energía. Los estándares inalámbricos más populares como por ejemplo el Bluetooth, no satisfacen las necesidades de la automatización y control ya que no han sido diseñados considerando estas razones como premisas, tal es el caso de Bluetooth el cual ha sido diseñado para aplicaciones en las Telecomunicaciones, audio, etc. Gracias a la ausencia de cableado en la implementación de una red con tecnología ZigBee es más sencillo realizar la implementación de la misma ya que no es necesario bajo ninguna circunstancia colocar otros materiales tales como canaletas o conectores, dichos elementos demoran el proceso de implementación y claramente cambian el 131 aspecto del lugar donde sean implementados, lo anterior no es necesario si lo que se busca es solo comunicación con fines como el propio de este proyecto: monitoreo de sensores control de dispositivos en forma remota o algún uso que no requiere de un ancho de banda muy grande. Los elementos necesarios para implementar un protocolo de comunicación inalámbrico en un hogar domótico son un microcontrolador, los modulados de comunicación, sensores y actuadores acordes a las variables que se desea manipular y una interfaz gráfica. El microcontrolador PIC18F452 es un elemento que tiene los elementos y características necesarias para la implementación de un mando remoto como el presente en este trabajo. Estas características nos permiten concluir que al momento de utilizarlo como elemento de procesamiento de datos provee a nuestro sistema de comunicaciones la inteligencia necesaria para cumplir con las tareas asignadas. El uso de una interfaz gráfica facilita la visualización y manipulación de los sensores o actuadores por parte del usuario ya que este no necesita realizar configuraciones directas al módulo. El estándar ZigBee es un conjunto de protocolos de comunicación inalámbrica de bajo consumo, basado en el estándar 802.15.4 de redes WPANs, este estándar se caracteriza por haber sido diseñado para funciones y en aplicaciones que requieren una comunicación segura con una baja tasa de envió de datos, por lo cual de acuerdo a estas características lo hacen ideal para utilizarlo como sistema de comunicación entre los dispositivos y elementos de una casa, ya que en ningún caso se requiere de elevadas tasas de transmisión. 132 ///////////////////////////////////////////////////////////////////////////// ////////CASTILLO BAUTISTA BRAULIO ANTONIO ////////PIC18F452 ////////SISTEMA DE CONTROL DOMOTICO ///////////////////////////////////////////////////////////////////////////// #include <p18f452.h> // Registros del PIC a utilizar #include <portb.h> // Funciones sobre el Puerto B #include <delays.h> // Rutinas de retardo #include <LCD16x4_2.h>//ruta del archivo en mi PC #include <usart.h> #include <adc.h> #include <stdlib.h> /* Configuración de Bits de Microchip */ #pragma config LVP = OFF #pragma config WDT = OFF #pragma config OSC = XT //////////////////////////////// #define Col1 PORTBbits.RB4 // Define la Columna 1 #define Col2 PORTBbits.RB5 // Define la Columna 2 #define Col3 PORTBbits.RB6 // Define la Columna 3 #define Col4 PORTBbits.RB7 // Define la Columna 4 void Inicializa_Puerto(void); // Prototipo de funcion, incializa Puerto void Visualiza_Tecla(void); // Prototipo de funcion, valor de tecla void Lee_Teclado(); // Prototipo de funcion, lee el teclado void transmicion(void); void accesos(void); void temperatura(void); void ventilacion(void); void iluminacion(void); unsigned char Tecla,comandoinc, /* Teclado matricial */ Teclado[4][4] = { 0X01, 0X02, 0X03, 0X0A, 0X04, 0X05, 0X06, 0X0B, 0X07, 0X08, 0X09, 0X0C, 0X00, 0X0F, 0X0E, 0X0D }, /* Codigo en ASCII a desplegar en LCD */ Display[16] = { 0X30, 0X31, 0X32, 0X33, 0X34, 0X35, 0X36, 0X37, 0X38, 0X39, 0X41, 0X42, 0X43, 0X44, 0X45, 0X46 }; char mensaje[]="Tecla oprimida:"; char opcion1[]="[1] ACCESOS "; char opcion2[]="[2] VENTILACION "; char opcion3[]="[3] TEMPERATURA "; char opcion4[]="[4] ILUMINACION "; char borrar[]=" "; char mensaje_eco1[]="send",recepcion_eco1[16],recepcion; int i=0,j=1,value,T,dec, pass[6]={0x00,0x00,0x00,0x00,0x00,0x00}; unsigned int canal0; float ADCtemp; char String[],cadena[],cadenadec[]; //*************************************************************** //inicio del programa prncipal //*************************************************************** void main(void) { TRISB = 0xF0; TRISC = 0x80; PORTC = 0x00; TRISD = 0x00; PORTD = 0x00; Tecla=0; Inicializa_LCD(); Comando_LCD(CURSOR_OFF & BLINK_OFF); EnablePullups();// Activa resistencias Pull Up OpenUSART ( USART_TX_INT_OFF & USART_RX_INT_OFF & USART_ASYNCH_MODE & USART_EIGHT_BIT & USART_CONT_RX & USART_BRGH_HIGH, 25); while(i!=4){ Delay10TCYx(100); Comando_LCD(DDRAM_LINEA_1); Datos_LCD("================"); Comando_LCD(DDRAM_LINEA_2); Datos_LCD(" I.P.N. " ); Comando_LCD(DDRAM_LINEA_3); Datos_LCD(" E.S.I.M.E. " ); Comando_LCD(DDRAM_LINEA_4); Datos_LCD("================"); i++; } menu1: Comando_LCD(DDRAM_LINEA_1); Dato_String_LCD(opcion1); Comando_LCD(DDRAM_LINEA_2); Dato_String_LCD(opcion2); Comando_LCD(DDRAM_LINEA_3); Dato_String_LCD(opcion3); Comando_LCD(DDRAM_LINEA_4); Dato_String_LCD(opcion4); Tecla=0; while(Tecla==0){ Lee_Teclado(); //Visualiza_Tecla(); } switch(Tecla){ case 0x01: accesos(); goto menu1; break; case 0x02: ventilacion(); goto menu1; break; case 0x03: temperatura(); goto menu1; break; case 0x04: iluminacion(); goto menu1; break; }//fin de la estructura switch while(1){ } } ////////////fin del programa principal /////////////////////////////////////////////////////////////////////////////////////////// ////////////////////Definición de funciones////////////////////////////////// /////////////////////////////////////////////////////////////////////////////////////////// /* Lee el teclado en busca de alguna tecla oprimida */ void Lee_Teclado() { unsigned char Fila, Control[4] = {0xFE, 0xFD,0xFB, 0xF7}; // Codigo de Fila a controlar de F1 a F4 PORTB = 0xFF;// Teclado desconectado for(Fila = 0; Fila <= 3; Fila++) // Control de Fila { PORTB = Control[Fila]; Delay1KTCYx(20); if(Col1 == 0) // Columna 1 ? Tecla = Teclado[Fila][0]; if(Col2 == 0) // Columna 2 ? Tecla = Teclado[Fila][1]; if(Col3 == 0) // Columna 3 ? Tecla = Teclado[Fila][2]; if(Col4 == 0) // Columna 4 ? Tecla = Teclado[Fila][3]; ANEXO I: PROGRAMA DEL PRIMER MICROCONTROLADOR 133 }//fin del ciclo for } void Visualiza_Tecla(void) { //Comando_LCD(DDRAM_LINEA_2); Comando_LCD(0XD3); Dato_LCD(Display[Tecla]);//una cadena desde la memoria de datos } void accesos(void){ Comando_LCD(DDRAM_LINEA_1); Dato_String_LCD(borrar); Comando_LCD(DDRAM_LINEA_2); Dato_String_LCD(borrar); Comando_LCD(DDRAM_LINEA_3); Dato_String_LCD(borrar); Comando_LCD(DDRAM_LINEA_4); Dato_String_LCD(borrar); Comando_LCD(DDRAM_LINEA_1); Datos_LCD(" A C C E S O S "); Comando_LCD(DDRAM_LINEA_2); Datos_LCD("================"); Comando_LCD(DDRAM_LINEA_3); Datos_LCD("Password: "); salto2: Comando_LCD(0xD3); //*password de acceso*// Tecla=0; nadatecleado: while(Tecla!=0x01){ Lee_Teclado(); //Visualiza_Tecla(); pass[1]=Tecla; if(pass[1]==0){goto nadatecleado;} else{ if((Tecla!=0x01)){ Comando_LCD(0xD5); Datos_LCD("*"); goto sigdigito; } } i++; }//pprimer digito correcto Comando_LCD(0XD5); Datos_LCD("*"); sigdigito: nadatecleado2: while(Tecla!=0x02){ Lee_Teclado(); //Visualiza_Tecla(); pass[2]=Tecla; if((pass[2]==0x01)||(pass[2]==0)){goto nadatecleado2;} else{ if((Tecla!=0x02)){ Comando_LCD(0xD6); Datos_LCD("*"); goto sigdigito2; } } ; } //seg digito correcto Comando_LCD(0XD6); Datos_LCD("*"); sigdigito2: nadatecleado3: while(Tecla!=0x03){ Lee_Teclado(); //Visualiza_Tecla(); pass[3]=Tecla; if(pass[3]==0x01||pass[3]==0||pass[3]==0x02){goto nadatecleado3;} else{ if((Tecla!=0x03)&&(Tecla!=0)){ Comando_LCD(0xD7); Datos_LCD("*"); goto sigdigito3; } }//else i++; }//tercer digito correcto Comando_LCD(0XD7); Datos_LCD("*"); sigdigito3: nadatecleado4: while(Tecla!=0x04){ Lee_Teclado(); // Visualiza_Tecla(); pass[4]=Tecla; if(pass[4]==0||pass[4]==1||pass[4]==2||pass[4]==3){goto nadatecleado4;} else{ if((Tecla!=0x04)&&(Tecla!=0)){ Comando_LCD(0xD8); Datos_LCD("*"); goto sigdigito4; } }//fin else i++; }//cuarto digito correcto Comando_LCD(0XD8); Datos_LCD("*"); sigdigito4: nadatecleado5: while(Tecla!=0x05){ Lee_Teclado(); //Visualiza_Tecla(); pass[5]=Tecla; if(pass[5]==0||pass[5]==1||pass[5]==2||pass[5]==3||pass[4]){goto nadatecleado5;} else{ if(Tecla!=0x05&&Tecla!=0){ Comando_LCD(0xD9); Datos_LCD("*"); goto sigdigito5; } }//fin else i++; }//quinto digito correcto sigdigito5: Comando_LCD(0XD9); Datos_LCD("*"); while(Tecla!=0x06){ Lee_Teclado(); // Visualiza_Tecla(); pass[6]=Tecla; }//sexto digito correcto Comando_LCD(0XDA); Datos_LCD("*"); Tecla=0; while(Tecla!=0x01){ Lee_Teclado();} Tecla=0; while(Tecla!=0x02){ Lee_Teclado();} Tecla=0; while(Tecla!=0x03){ Lee_Teclado();} Tecla=0; while(Tecla!=0x04){ Lee_Teclado();} Tecla=0; while(Tecla!=0x05){ Lee_Teclado();} Tecla=0; while(Tecla!=0x06){ Lee_Teclado();} if((pass[1]==0x01)&&(pass[2]==0x02)&&(pass[3]==0x03)&&(pass[4]==0x04)&&(pa ss[5]==0x05)&&(pass[6]==0x06)){ 134 Tecla=0x00; goto salto; } else{ i=0; while(i!=5){ Comando_LCD(DDRAM_LINEA_3); Datos_LCD(" PASSWORD "); Comando_LCD(DDRAM_LINEA_4); Datos_LCD(" ERRONEO "); Delay10TCYx(100); i++;} Comando_LCD(DDRAM_LINEA_3); Dato_String_LCD(borrar); Comando_LCD(DDRAM_LINEA_4); Dato_String_LCD(borrar); goto salto2;} ////////////////esta bien //final password salto: finaccesos: Comando_LCD(DDRAM_LINEA_1); Dato_String_LCD(borrar); Comando_LCD(DDRAM_LINEA_2); Dato_String_LCD(borrar); Comando_LCD(DDRAM_LINEA_3); Dato_String_LCD(borrar); Comando_LCD(DDRAM_LINEA_4); Dato_String_LCD(borrar); Comando_LCD(DDRAM_LINEA_1); Datos_LCD(" [1] E.Principal "); Comando_LCD(DDRAM_LINEA_2); Datos_LCD(" [2] Recamara 1"); Comando_LCD(DDRAM_LINEA_3); Datos_LCD(" [3] Recamaea 2"); Comando_LCD(DDRAM_LINEA_4); Datos_LCD(" [4] Garage"); //segunda funcion switch para submenu Tecla=0; while(Tecla==0){Lee_Teclado();} switch(Tecla){ case 0x01: Comando_LCD(DDRAM_LINEA_1); Dato_String_LCD(borrar); Comando_LCD(DDRAM_LINEA_2); Dato_String_LCD(borrar); Comando_LCD(DDRAM_LINEA_3); Dato_String_LCD(borrar); Comando_LCD(DDRAM_LINEA_4); Dato_String_LCD(borrar); Comando_LCD(DDRAM_LINEA_1); Datos_LCD(" [1] Entrada "); Comando_LCD(DDRAM_LINEA_2); Datos_LCD("================"); Comando_LCD(DDRAM_LINEA_4); Datos_LCD("[1]A [2]C"); Comando_LCD(DDRAM_LINEA_3); Datos_LCD(" ABIERTO "); while(1){ Tecla=0; while(Tecla==0){Lee_Teclado();} switch(Tecla){ case 0x01: while(BusyUSART());// Esperar a que el bffer de salida este vacio WriteUSART(0x61); //enviar un 61h para abrir la entrada principal i=0; while(i<5){ Delay10TCYx(80);// Retaedo para activar parpadeo de la cadena enviada Comando_LCD(DDRAM_LINEA_3);//posicionarse en la linea 3 de la LCD Datos_LCD(" ABIERTO ");//Enviar la cadena "ABIERTO" a la LCD Delay10TCYx(80);;// Retaedo para activar parpadeo de la cadena enviada Comando_LCD(DDRAM_LINEA_3);//posicionarse en la linea 3 de la LCD Datos_LCD(" ");//Borrado de la linea 3 de la pantalla de LCD Delay10TCYx(80);// Retaedo para activar parpadeo de la cadena enviada Comando_LCD(DDRAM_LINEA_3);//posicionarse en la linea 3 de la LCD Datos_LCD(" ABIERTO ");//Enviar la cadena "ABIERTO" a la LCD i++; } Tecla=0; break; case 0x02: while(BusyUSART());// Esperar a que el bffer de salida este vacio WriteUSART(0x62);//enviar un 62h para abrir la entrada principal i=0; while(i<5){ Delay10TCYx(80);// Retaedo para activar parpadeo de la cadena enviada Comando_LCD(DDRAM_LINEA_3);//posicionarse en la linea 3 de la LCD Datos_LCD(" CERRADO ");//Enviar la cadena "CERRADO" a la LCD Delay10TCYx(80);// Retaedo para activar parpadeo de la cadena enviada Comando_LCD(DDRAM_LINEA_3);//posicionarse en la linea 3 de la LCD Datos_LCD(" ");//Borrado de la linea 3 de la pantalla de LCD Delay10TCYx(80);// Retaedo para activar parpadeo de la cadena enviada Comando_LCD(DDRAM_LINEA_3);//posicionarse en la linea 3 de la LCD Datos_LCD(" CERRADO ");//Enviar la cadena "CERRADO" a la LCD i++; } Tecla=0; break; case 0x0A: Tecla=0x00; goto finaccesos; break; }//fin switch para entrada }//fin while infinito break; case 0x02: Comando_LCD(DDRAM_LINEA_1); Dato_String_LCD(borrar); Comando_LCD(DDRAM_LINEA_2); Dato_String_LCD(borrar); Comando_LCD(DDRAM_LINEA_3); Dato_String_LCD(borrar); Comando_LCD(DDRAM_LINEA_4) Dato_String_LCD(borrar); Comando_LCD(DDRAM_LINEA_1); Datos_LCD(" [2] Garage "); Comando_LCD(DDRAM_LINEA_2); Datos_LCD("================"); Comando_LCD(DDRAM_LINEA_4); Datos_LCD("[1]A [2]C"); Comando_LCD(DDRAM_LINEA_3); Datos_LCD(" ABIERTO "); while(1){ Tecla=0; while(Tecla==0){Lee_Teclado();} switch(Tecla) case 0x01: while(BusyUSART()) WriteUSART(0x63); i=0; while(i<5){ Delay10TCYx(80); Comando_LCD(DDRAM_LINEA_3); Datos_LCD(" ABIERTO "); Delay10TCYx(80); Comando_LCD(DDRAM_LINEA_3); Datos_LCD(" "); Delay10TCYx(80); Comando_LCD(DDRAM_LINEA_3); Datos_LCD(" ABIERTO "); 135 i++; } break; case 0x02: while(BusyUSART()); WriteUSART(0x64); i=0; while(i<5){ Delay10TCYx(80); Comando_LCD(DDRAM_LINEA_3); Datos_LCD(" CERRADO "); Delay10TCYx(80); Comando_LCD(DDRAM_LINEA_3); Datos_LCD(" "); Delay10TCYx(80); Comando_LCD(DDRAM_LINEA_3); Datos_LCD(" CERRADO "); i++; } break; case 0x0A: Tecla=0x00; goto finaccesos; break; }//fin switch para entrada }//fin while infinito break; case 0x03: Comando_LCD(DDRAM_LINEA_1); Dato_String_LCD(borrar); Comando_LCD(DDRAM_LINEA_2); Dato_String_LCD(borrar); Comando_LCD(DDRAM_LINEA_3); Dato_String_LCD(borrar); Comando_LCD(DDRAM_LINEA_4); Dato_String_LCD(borrar); Comando_LCD(DDRAM_LINEA_1); Datos_LCD(" [3] Caja fuerte "); Comando_LCD(DDRAM_LINEA_2); Datos_LCD("================"); Comando_LCD(DDRAM_LINEA_4); Datos_LCD("[1]A [2]C"); Comando_LCD(DDRAM_LINEA_3); Datos_LCD(" ABIERTO "); while(1){ Tecla=0; while(Tecla==0){Lee_Teclado();} switch(Tecla){ case 0x01: while(BusyUSART()); WriteUSART(0x65); i=0; while(i<5){ Delay10TCYx(80); Comando_LCD(DDRAM_LINEA_3); Datos_LCD(" ABIERTO "); Delay10TCYx(80); Comando_LCD(DDRAM_LINEA_3); Datos_LCD(" "); Delay10TCYx(80); Comando_LCD(DDRAM_LINEA_3); Datos_LCD(" ABIERTO "); i++; } break; case 0x02: while(BusyUSART()); WriteUSART(0x66); i=0; while(i<5){ Delay10TCYx(80); Comando_LCD(DDRAM_LINEA_3); Datos_LCD(" CERRADO "); Delay10TCYx(80); Comando_LCD(DDRAM_LINEA_3); Datos_LCD(" "); Delay10TCYx(80); Comando_LCD(DDRAM_LINEA_3); Datos_LCD(" CERRADO "); i++; } break; case 0x0A: Tecla=0x00; goto finaccesos; break; }//fin switch para entrada }//fin while infinito break; case 0x04: Comando_LCD(DDRAM_LINEA_1); Dato_String_LCD(borrar); Comando_LCD(DDRAM_LINEA_2); Dato_String_LCD(borrar); Comando_LCD(DDRAM_LINEA_3); Dato_String_LCD(borrar); Comando_LCD(DDRAM_LINEA_4); Dato_String_LCD(borrar); Comando_LCD(DDRAM_LINEA_1); Datos_LCD(" [4] Bodega "); Comando_LCD(DDRAM_LINEA_2); Datos_LCD("================"); Comando_LCD(DDRAM_LINEA_4); Datos_LCD("[1]A [2]C"); Comando_LCD(DDRAM_LINEA_3); Datos_LCD(" ABIERTO "); while(1){ Tecla=0; while(Tecla==0){Lee_Teclado();} switch(Tecla){ case 0x01: while(BusyUSART()); WriteUSART(0x67); i=0; while(i<5){ Delay10TCYx(80); Comando_LCD(DDRAM_LINEA_3); Datos_LCD(" ABIERTO "); Delay10TCYx(80); Comando_LCD(DDRAM_LINEA_3); Datos_LCD(" "); Delay10TCYx(80); Comando_LCD(DDRAM_LINEA_3); 136 Datos_LCD(" ABIERTO "); i++; } break; case 0x02: while(BusyUSART()); WriteUSART(0x68); i=0; while(i<5){ Delay10TCYx(80); Comando_LCD(DDRAM_LINEA_3); Datos_LCD(" CERRADO "); Delay10TCYx(80); Comando_LCD(DDRAM_LINEA_3); Datos_LCD(" "); Delay10TCYx(80); Comando_LCD(DDRAM_LINEA_3); Datos_LCD(" CERRADO "); i++; } break; case 0x0A: Tecla=0x00; goto finaccesos; break; }//fin switch para entrada }//fin while infinito break; case 0x0A: break; ;}//fin de la función swithc para el submenu } void ventilacion(void){ Comando_LCD(DDRAM_LINEA_1); Dato_String_LCD(borrar); Comando_LCD(DDRAM_LINEA_2); Dato_String_LCD(borrar); Comando_LCD(DDRAM_LINEA_3); Dato_String_LCD(borrar); Comando_LCD(DDRAM_LINEA_4); Dato_String_LCD(borrar); Comando_LCD(DDRAM_LINEA_1); Datos_LCD(" VENTILACION "); Comando_LCD(DDRAM_LINEA_2); Datos_LCD("================"); Comando_LCD(DDRAM_LINEA_4); Datos_LCD("[1]ON [2]OFF"); Comando_LCD(DDRAM_LINEA_3); Datos_LCD(" Estado:ON "); while(1){ Tecla=0; while(Tecla==0){Lee_Teclado();} switch(Tecla){ case 0x01: // esperar a qu el buffer de salida se encuentre vacio while(BusyUSART()); // enviar un 41eh para establecer encendido del ventilador WriteUSART(0x41); i=0; while(i<5){ //Lapso de tiempo para parpadeo de mensajes Delay10TCYx(80); Comando_LCD(DDRAM_LINEA_3); //Posicionamiento en linea 3 Datos_LCD(" Estado:ON "); // escritura de cadena en la pantalla de LCD Delay10TCYx(80);//Lapso de tiempo para parpadeo de mensajes Comando_LCD(DDRAM_LINEA_3);//Posicionamiento en linea 3 Datos_LCD(" Estado: ");// escritura de cadena en la pantalla de LCD 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 i++; } break; case 0x02: while(BusyUSART());// esperar a qeu el biffer de salida se encuentre vacio WriteUSART(0x42);// enviar un 41h para establecer encendido del ventilador i=0; while(i<5){ Delay10TCYx(80);// escritura de cadena en la pantalla de LCD Comando_LCD(DDRAM_LINEA_3);//Posicionamiento en linea 3 Datos_LCD(" Estado: ");// escritura de cadena en la pantalla de LCD Delay10TCYx(80);// escritura de cadena en la pantalla de LCD Comando_LCD(DDRAM_LINEA_3);//Posicionamiento en linea 3 Datos_LCD(" Estado:OFF ");// escritura de cadena en la pantalla de LCD i++; } break; case 0x0A: Tecla=0x00; goto finventilacion; break; }//fin switch para ventilación }//fin while infinito finventilacion: ;}//fin case2 /////CASO 3 DEL MENU PRINCIPAL void temperatura(void){ /* Comando_LCD(DDRAM_LINEA_1); Dato_String_LCD(borrar); Comando_LCD(DDRAM_LINEA_2); Dato_String_LCD(borrar); Comando_LCD(DDRAM_LINEA_3); Dato_String_LCD(borrar); Comando_LCD(DDRAM_LINEA_4); Dato_String_LCD(borrar); Comando_LCD(DDRAM_LINEA_1); Datos_LCD(" TEMPERATURA "); Comando_LCD(DDRAM_LINEA_2); Datos_LCD("================"); OpenADC( ADC_FOSC_RC & ADC_RIGHT_JUST & ADC_1ANA_0REF, ADC_CH0 & ADC_INT_OFF ); while(1){ SetChanADC(0); //Selección del canal analógico //retardo para garantizar una lectura en el canal analógico. Delay10TCYx(2); ConvertADC();//comenzar la conversión de analógico a digital while(BusyADC()==1){ //verificar si la conversión ya fue realizada } canal0=ReadADC();// si la conversión fue realizada se leerá el canal ADCtemp=(canal0/1.9607843); //conversión a grados centígrados 137 Comando_LCD(DDRAM_LINEA_3);// situarse en la linea 3 de la LCD // Dato_LCD('0x69'); //ADCtemp=ADCtemp*100; Comando_LCD(0XDC);//una posición específica en al LCD Datos_LCD(" 'C");// desplegar el caracter C itoa(ADCtemp, String);// convertir un dato entero auna cadena T=atoi(String);// almacenar el dato sin concertir en la variable T Comando_LCD(0XD3);//una posición específica en lña LCD Dato_String_LCD(String);// imprimir las unidades en la pantalal de LCD T=T*100;// vizualizar los decimales como enteros ADCtemp=ADCtemp*100;//igualar magnitud con los decimales dec=ADCtemp-T;// obtener los decimales a desplegar en la LCD itoa(dec, cadenadec);// convertir los datos enteros de los decimales a una cadena Comando_LCD(0XD9);//Una posición específica en la LCD Dato_String_LCD(cadenadec);// desplegar el dato en la pantalla de LCD Comando_LCD(0XD7);// Una posicion especifica en la LCD Datos_LCD("."); Lee_Teclado(); // si es precionada la eltra A regresar al menú principal. if(Tecla==0x0A){goto fintemperatura;} }//fin while fintemperatura: */ Comando_LCD(DDRAM_LINEA_1); Dato_String_LCD(borrar); Comando_LCD(DDRAM_LINEA_2); Dato_String_LCD(borrar); Comando_LCD(DDRAM_LINEA_3); Dato_String_LCD(borrar); Comando_LCD(DDRAM_LINEA_4); Dato_String_LCD(borrar); Comando_LCD(DDRAM_LINEA_1); Datos_LCD(" TEMPERATURA "); Comando_LCD(DDRAM_LINEA_2); Datos_LCD("================"); OpenADC( ADC_FOSC_RC & ADC_RIGHT_JUST & ADC_1ANA_0REF, ADC_CH0 & ADC_INT_OFF ); while(1){ SetChanADC(0); Delay10TCYx(2); ConvertADC(); while(BusyADC()==1){ } canal0=ReadADC(); ADCtemp=(canal0/2.048); /*prueba Comando_LCD(0Xc9); ADCtemp=(ADCtemp)*100; itoa(ADCtemp,cadenadec); Dato_String_LCD(cadenadec);*/ //putsUSART(String); T=T*100; ADCtemp=ADCtemp*100; dec=ADCtemp-T; itoa(dec, cadenadec); Comando_LCD(0XD9); Dato_String_LCD(cadenadec); //putsUSART(cadenadec); Comando_LCD(0XD7); Datos_LCD("."); strcat(String , cadenadec); putsUSART(String); Lee_Teclado(); if(Tecla==0x0A){goto fintemperatura;} }//fin while fintemperatura: ;}//fin case 3 void iluminacion(void){ Comando_LCD(DDRAM_LINEA_1); Dato_String_LCD(borrar); Comando_LCD(DDRAM_LINEA_2); Dato_String_LCD(borrar); Comando_LCD(DDRAM_LINEA_3); Dato_String_LCD(borrar); Comando_LCD(DDRAM_LINEA_4); Dato_String_LCD(borrar); Comando_LCD(DDRAM_LINEA_1); Datos_LCD(" ILUMINACION "); Comando_LCD(DDRAM_LINEA_2); Datos_LCD("================"); finABCD: Comando_LCD(DDRAM_LINEA_3); Datos_LCD("[1] A [2] B"); Comando_LCD(DDRAM_LINEA_4); Datos_LCD("[3] C [4] D"); Tecla=0; while(Tecla==0){Lee_Teclado();} switch(Tecla){ case 0x01: ///////////////////////habitacion A/////// Comando_LCD(DDRAM_LINEA_4); Datos_LCD("[1]ON [2]OFF"); Comando_LCD(DDRAM_LINEA_3); Datos_LCD(" Espacio A :ON "); while(1){ Tecla=0; while(Tecla==0){Lee_Teclado();} switch(Tecla){ //opciones de iluminacion de HABITACION A case 0x01: // esperar a qeu el buffer de transmision de la uart este disponible while(BusyUSART()); //enviar 6B hexadecimal para control de iluminación en habitacion WriteUSART(0x6B); i=0; while(i<5){ Delay10TCYx(80); Comando_LCD(DDRAM_LINEA_3); Datos_LCD(" Espacio A:ON "); Delay10TCYx(80); Comando_LCD(DDRAM_LINEA_3); Datos_LCD(" Espacio A: "); Delay10TCYx(80); Comando_LCD(DDRAM_LINEA_3); Datos_LCD(" Espacio A:ON "); i++; } break; case 0x02: WriteUSART(0x6C); i=0; while(i<5){ Delay10TCYx(80); Comando_LCD(DDRAM_LINEA_3); Datos_LCD(" Espacio A:OFF "); Delay10TCYx(80); Comando_LCD(DDRAM_LINEA_3); Datos_LCD(" Espacio A: "); Delay10TCYx(80); Comando_LCD(DDRAM_LINEA_3); Datos_LCD(" Espacio A:OFF "); i++; } while(1){ 138 Tecla=0; while(Tecla==0){Lee_Teclado();} switch(Tecla){ //opciones de iluminacion de A case 0x01: while(BusyUSART()); WriteUSART(0x6D); i=0; while(i<5){ Delay10TCYx(80); Comando_LCD(DDRAM_LINEA_3); Datos_LCD(" Espacio B:ON "); Delay10TCYx(80); Comando_LCD(DDRAM_LINEA_3); Datos_LCD(" Espacio B: "); Delay10TCYx(80); Comando_LCD(DDRAM_LINEA_3); Datos_LCD(" Espacio B:ON "); i++; } break; case 0x02: while(BusyUSART()); WriteUSART(0x6E); i=0; while(i<5){ Delay10TCYx(80); Comando_LCD(DDRAM_LINEA_3); Datos_LCD(" Espacio B:OFF "); Delay10TCYx(80); Comando_LCD(DDRAM_LINEA_3); Datos_LCD(" Espacio B: "); Delay10TCYx(80); Comando_LCD(DDRAM_LINEA_3); Datos_LCD(" Espacio B:OFF "); i++; } break; case 0x0A: goto finABCD; }//fin switch para habitacion B }//fin while infinito break; case 0x03: ////////////////////////////////habitacion C//////////////////////////////// Comando_LCD(DDRAM_LINEA_4); Datos_LCD("[1]ON [2]OFF"); Comando_LCD(DDRAM_LINEA_3); Datos_LCD(" Espacio C :ON "); while(1){ Tecla=0; while(Tecla==0){Lee_Teclado();} switch(Tecla){ //opciones de iluminacion de A case 0x01: while(BusyUSART()); WriteUSART(0x6F); i++; } break; case 0x02: while(BusyUSART()); WriteUSART(0x70); i=0; while(i<5){ Delay10TCYx(80); Comando_LCD(DDRAM_LINEA_3); Datos_LCD(" Espacio C:OFF "); Delay10TCYx(80); Comando_LCD(DDRAM_LINEA_3); Datos_LCD(" Espacio C: "); Delay10TCYx(80); Comando_LCD(DDRAM_LINEA_3); Datos_LCD(" Espacio C:OFF "); i++; } while(1){ Tecla=0; while(Tecla==0){Lee_Teclado();} switch(Tecla){ //opciones de iluminacion de A case 0x01: while(BusyUSART()); WriteUSART(0x71); i=0; while(i<5){ Delay10TCYx(80); Comando_LCD(DDRAM_LINEA_3); Datos_LCD(" Espacio D:ON "); Delay10TCYx(80); Comando_LCD(DDRAM_LINEA_3); Datos_LCD(" Espacio D: "); Delay10TCYx(80); Comando_LCD(DDRAM_LINEA_3); Datos_LCD(" Espacio D:ON "); i++; } break; case 0x02: while(BusyUSART()); WriteUSART(0x72); i=0; while(i<5){ Delay10TCYx(80); Comando_LCD(DDRAM_LINEA_3); Datos_LCD(" Espacio D:OFF "); Delay10TCYx(80); Comando_LCD(DDRAM_LINEA_3); Datos_LCD(" Espacio D: "); Delay10TCYx(80); while(BusyUSART()); //envia caracter i=0; putcUSART('b'); //WriteUSART(0x0B); //CloseUSART(); /*Comando_LCD(0X93);//posicion en el LCD for(i=0;i<=12;i++) { Dato_LCD(mensaje_eco1[i]); } //esperar a que el buffer de transmisión //este vacio o disponible while(BusyUSART()); //esperamos caracter del virtual terminal while(!DataRdyUSART()); getsUSART(recepcion_eco1,4); Comando_LCD(0XC3); for(i=0;i<=8;i++) { Dato_LCD(recepcion_eco1[i]); } */ while(i!=1); i++; } 139 //////////////////////////////////////////////////////////////////////////// ////////CASTILLO BAUTISTA BRAULIO ANTONIO ////////PIC18F452 ////////SISTEMA DE CONTROL DOMOTICO ////////Aegundo microcontrolador ///////////////////////////////////////////////////////////////////////////// #include <p18f452.h> // Registros del PIC a utilizar #include <portb.h> // Funciones sobre el Puerto B #include <delays.h> // Rutinas de retardo #include <LCD16x4_2.h>//ruta del archivo en mi PC #include <usart.h> #include <adc.h> #include <stdlib.h> /* Configuración de Bits de Microchip */ #pragma config LVP = OFF #pragma config WDT = OFF #pragma config OSC = XT //////////////////////////////// #define Col1 PORTBbits.RB4 // Define la Columna 1 #define Col2 PORTBbits.RB5 // Define la Columna 2 #define Col3 PORTBbits.RB6 // Define la Columna 3 #define Col4 PORTBbits.RB7 // Define la Columna 4 void Inicializa_Puerto(void); // Prototipo de funcion, incializa Puerto void transmicion(void); void case1(void); void case3(void); void case2(void); void case4(void); void precencia(void); void iluminacion(); void contiluminacion(); void contiluminacion1(); void contiluminacion2(); void contiluminacion3(); void contiluminacion4(); void contiluminacion5(); void contiluminacion6(); void test(); unsigned char Tecla,comandoinc,Co=0,CoA=0,CoB=0,CoC=0,CoD=0,CoE=0,CoF=0, char mensaje[]="Tecla oprimida:"; char opcion1[]="[1] TEMPERATURA "; char opcion2[]="[2] VENTILACION "; char opcion3[]="[3] ILUMINACION "; char opcion4[]="[4] TEST "; char borrar[]=" "; char mensaje_eco1[]="send",recepcion_eco1[16],recepcion; int i=0,j=1,value,T,dec, unsigned int canal0; double ADCtemp; char String[5],cadena[5],cadenadec[]; //*************************************************************** //inicio del programa prncipal //************************************************************* void main(void) { int op_lectura; //ADCON1=0x0F; //TRISA =0x00; //PORTA=0XFF; TRISB = 0x00; PORTB=0XFF; TRISC = 0x80; PORTC = 0x00; TRISD = 0xF0; PORTD = 0x00; Tecla=0; Inicializa_LCD(); Comando_LCD(CURSOR_OFF & BLINK_OFF); EnablePullups(); // Activa resistencias Pull Up OpenUSART(USART_TX_INT_OFF & USART_RX_INT_OFF & USART_ASYNCH_MODE & USART_EIGHT_BIT & USART_CONT_RX & USART_BRGH_HIGH, 25); //INTCON2bits.RBPU = 0; // Similar //Datos_LCD("mexico ");//una cadena desde la memoria de programa //rutina de lectura para el teclado /* while (1) // Ciclo infinito while { Lee_Teclado(); // Busca tecla oprimida Visualiza_Tecla(); // Visualiza la tecla oprimida } // Ciclo while //con este comando pasamos a la linea 2 del LCD // Comando_LCD(DDRAM_LINEA_4); // Datos_LCD("Braulio castillo");*/ while(i!=4){ Delay10TCYx(100); Comando_LCD(DDRAM_LINEA_1); Datos_LCD("================"); Comando_LCD(DDRAM_LINEA_2); Datos_LCD(" I.P.N. " ); Comando_LCD(DDRAM_LINEA_3); Datos_LCD(" E.S.I.M.E. " ); Comando_LCD(DDRAM_LINEA_4); Datos_LCD("================"); i++; } i=0; menu1: Comando_LCD(DDRAM_LINEA_1); Dato_String_LCD(opcion1); Comando_LCD(DDRAM_LINEA_2); Comando_LCD(DDRAM_LINEA_3); Dato_String_LCD(opcion3); Comando_LCD(DDRAM_LINEA_4); Dato_String_LCD(opcion4); //iluminacion(); //case3(); //Tecla=0; //while(Tecla==0){ //Lee_Teclado(); //Visualiza_Tecla(); //} while(BusyUSART()); //esperamos caracter del virtual terminal while(!DataRdyUSART()); op_lectura = ReadUSART(); switch(op_lectura){ case 0x41: case3(); // goto menu1; break; case 0x42: //test(); //case3(); case2; goto menu1; break; case 0x43: //test(); //case3(); iluminacion(); menu1; break; case 0x44: //test(); //case3(); ANEXO II: PROGRAMA DEL SEGUNDO MICROCONTROLADOR 140 test(); goto menu1; break; }//fin de la estructura switch while(1){ } } ////////////fin del programa principal ////////////Definición de funciones//////////////////////////////// } void case4(void){ Comando_LCD(DDRAM_LINEA_1); Dato_String_LCD(borrar); Comando_LCD(DDRAM_LINEA_2); Dato_String_LCD(borrar); Comando_LCD(DDRAM_LINEA_3); Dato_String_LCD(borrar); Comando_LCD(DDRAM_LINEA_4); Dato_String_LCD(borrar); Comando_LCD(DDRAM_LINEA_1); Datos_LCD(" ILUMINACION "); Comando_LCD(DDRAM_LINEA_2); Datos_LCD("================"); finABCD: Datos_LCD("[1] A [2] B"); Comando_LCD(DDRAM_LINEA_4); Datos_LCD("[3] C [4] D"); Tecla=0; while(Tecla==0){Lee_Teclado();} switch(Tecla){ case 0x01: ///////////////////////habitacion A/////// Comando_LCD(DDRAM_LINEA_4); Datos_LCD("[1]ON [2]OFF"); Comando_LCD(DDRAM_LINEA_3); Datos_LCD(" Espacio A :ON "); while(1){ Tecla=0; while(Tecla==0){Lee_Teclado();} switch(Tecla){ //opciones de iluminacion de A case 0x01: while(BusyUSART()); WriteUSART(0x6B) i=0; while(i<5){ Delay10TCYx(80); Comando_LCD(DDRAM_LINEA_3); Datos_LCD(" Espacio A:ON "); Delay10TCYx(80); Comando_LCD(DDRAM_LINEA_3); Datos_LCD(" Espacio A: "); Delay10TCYx(80); Comando_LCD(DDRAM_LINEA_3); Datos_LCD(" Espacio A:ON "); i++; } break; case 0x02: while(BusyUSART()); WriteUSART(0x6C); i=0; while(i<5){ Delay10TCYx(80); Comando_LCD(DDRAM_LINEA_3); Datos_LCD(" Espacio A:OFF "); Delay10TCYx(80); Comando_LCD(DDRAM_LINEA_3) Datos_LCD(" Espacio A: "); Delay10TCYx(80); Comando_LCD(DDRAM_LINEA_3); Datos_LCD(" Espacio A:OFF "); i++; } break case 0x0A: goto finABCD: break; }//fin switch para habitacion A }//fin while infinit break; ////////////////////////////////habitacion B//////////////////////////////// Comando_LCD(DDRAM_LINEA_4); Datos_LCD("[1]ON [2]OFF"); Comando_LCD(DDRAM_LINEA_3); Datos_LCD(" Espacio B :ON "); while(1){ Tecla=0; while(Tecla==0){Lee_Teclado();} switch(Tecla){ //opciones de iluminacion de case 0x01: while(BusyUSART()); WriteUSART(0x6D); i=0; while(i<5){ Delay10TCYx(80); Comando_LCD(DDRAM_LINEA_3); Datos_LCD(" Espacio B:ON "); Delay10TCYx(80); Comando_LCD(DDRAM_LINEA_3); Datos_LCD(" Espacio B: "); Delay10TCYx(80); Datos_LCD(" Espacio B:ON "); i++ } break; case 0x02: WriteUSART(0x6E); i=0; while(i<5){ Delay10TCYx(80); Comando_LCD(DDRAM_LINEA_3); Datos_LCD(" Espacio B:OFF "); Delay10TCYx(80); Comando_LCD(DDRAM_LINEA_3); Datos_LCD(" Espacio B: "); Delay10TCYx(80); Comando_LCD(DDRAM_LINEA_3); Datos_LCD(" Espacio B:OFF "); i++; } break; case 0x0A: goto finABCD; }//fin switch para habitacion B }//fin while infinito break; case 0x03: ////////////////////////////////habitacion C//////////////////////////////// Comando_LCD(DDRAM_LINEA_4); Datos_LCD("[1]ON [2]OFF"); Comando_LCD(DDRAM_LINEA_3); Datos_LCD(" Espacio C :ON "); while(1){ Tecla=0; while(Tecla==0){Lee_Teclado();} switch(Tecla){ //opciones de iluminacion de A case 0x01: while(BusyUSART()); WriteUSART(0x6F); i=0; break; case 0x02: while(BusyUSART()); WriteUSART(0x70); while(i<5){ Delay10TCYx(80); Comando_LCD(DDRAM_LINEA_3); Datos_LCD(" Espacio C:OFF "); Delay10TCYx(80); 141 Comando_LCD(DDRAM_LINEA_3) Datos_LCD(" Espacio C: "); Delay10TCYx(80); Comando_LCD(DDRAM_LINEA_3); Datos_LCD(" Espacio C:OFF "); i++; } break; case 0x0A: goto finABCD; }//fin switch para habitacion B }//fin while infinito break; case 0x04:////////////////////////////////habitacion D//////////////////////////////// Comando_LCD(DDRAM_LINEA_4); Datos_LCD("[1]ON [2]OFF"); Comando_LCD(DDRAM_LINEA_3); Datos_LCD(" Espacio D :ON "); while(1){ Tecla=0; while(Tecla==0){Lee_Teclado();} switch(Tecla){ //opciones de iluminacion de A case 0x01: while(BusyUSART()); WriteUSART(0x71); i=0; while(i<5){ Delay10TCYx(80); Comando_LCD(DDRAM_LINEA_3); Datos_LCD(" Espacio D:ON "); Delay10TCYx(80); Comando_LCD(DDRAM_LINEA_3); Datos_LCD(" Espacio D: "); Delay10TCYx(80); Comando_LCD(DDRAM_LINEA_3); Datos_LCD(" Espacio D:ON "); i++; } break; case 0x02: while(BusyUSART()); WriteUSART(0x72); i=0; while(i<5){ Delay10TCYx(80); Comando_LCD(DDRAM_LINEA_3); Datos_LCD(" Espacio D:OFF "); Delay10TCYx(80); Comando_LCD(DDRAM_LINEA_3); Datos_LCD(" Espacio D: "); Delay10TCYx(80); Comando_LCD(DDRAM_LINEA_3); Datos_LCD(" Espacio D:OFF "); i++; } break; case 0x0A: goto finABCD; }//fin switch para habitacion B }//fin while infinito break; case 0x05: break; }//switch para seleccionar abitacion a iluminar ; } void transmicion(void) { //inicio de la transmición via UART///////// // configuramos el EUSART para 9.6K baudios //Comando_LCD(0XC0); //Datos_LCD("tx="); //Comando_LCD(0X90);//posicion en el LCD //Datos_LCD("rx="); // configuramos el EUSART para 9.6K baudios OpenUSART(USART_TX_INT_OFF & USART_RX_INT_OFF & USART_ASYNCH_MODE & USART_EIGHT_BIT & USART_CONT_RX & USART_BRGH_HIGH, 25); //esperar a que el buffer de transmisión //este vacio o disponible while(BusyUSART()); //envia caracter i=0; putcUSART('b'); //WriteUSART(0x0B); //CloseUSART(); /*Comando_LCD(0X93);//posicion en el LCD for(i=0;i<=12;i++) { Dato_LCD(mensaje_eco1[i]); } //esperar a que el buffer de transmisión //este vacio o disponible while(BusyUSART()); //esperamos caracter del virtual terminal while(!DataRdyUSART()); getsUSART(recepcion_eco1,4); Comando_LCD(0XC3); for(i=0;i<=8;i++) { Dato_LCD(recepcion_eco1[i]); } */ while(i!=1); i++; } void iluminacion(){ int lectura,sele; Comando_LCD(DDRAM_LINEA_1); Dato_String_LCD(borrar); Comando_LCD(DDRAM_LINEA_2); Dato_String_LCD(borrar); Comando_LCD(DDRAM_LINEA_3); Dato_String_LCD(borrar); Comando_LCD(DDRAM_LINEA_4); Dato_String_LCD(borrar); while(i!=4){ Delay10TCYx(100); Comando_LCD(DDRAM_LINEA_1); Datos_LCD(" ILUMINACION "); Comando_LCD(DDRAM_LINEA_2); Datos_LCD("================" ); i++; } inicioilu: Comando_LCD(DDRAM_LINEA_1); Datos_LCD("[1]A [2]B [3]C"); Comando_LCD(DDRAM_LINEA_2); Datos_LCD("[4]D [5]E [6]F" ); while(BusyUSART()); //esperamos caracter del virtual terminal while(!DataRdyUSART()); sele = ReadUSART(); PORTBbits.RB6=1; switch(sele){ case 0x41: Comando_LCD(DDRAM_LINEA_1); Datos_LCD(" HABITACION A "); Comando_LCD(DDRAM_LINEA_2); Datos_LCD(" "); contiluminacion(); goto inicioilu; break; case 0x42: Comando_LCD(DDRAM_LINEA_1); Datos_LCD(" HABITACION B "); Comando_LCD(DDRAM_LINEA_2); Datos_LCD(" "); contiluminacion1(); goto inicioilu; break; case 0x43: Comando_LCD(DDRAM_LINEA_1); Datos_LCD(" HABITACION C "); Comando_LCD(DDRAM_LINEA_2); 142 Datos_LCD(" "); contiluminacion2(); goto inicioilu; break; case 0x44: Comando_LCD(DDRAM_LINEA_1); Datos_LCD(" HABITACION D "); Comando_LCD(DDRAM_LINEA_2); Datos_LCD(" "); contiluminacion3(); goto inicioilu; break; case 0x45: Comando_LCD(DDRAM_LINEA_1); Datos_LCD(" HABITACION E "); Comando_LCD(DDRAM_LINEA_2); Datos_LCD(" "); contiluminacion4(); goto inicioilu; break; case 0x46: Comando_LCD(DDRAM_LINEA_1); Datos_LCD(" HABITACION F "); Comando_LCD(DDRAM_LINEA_2); Datos_LCD(" "); contiluminacion5(); goto inicioilu; break; case 0x58: break; } } void contiluminacion(){ int lectura; //=====inicia el envio de datos de control para iluminación while(1){ // Tecla=0; // Lee_Teclado(); while(BusyUSART()); //esperamos caracter del virtual terminal while(!DataRdyUSART()); lectura = ReadUSART(); switch(lectura){ case 0x41: Comando_LCD(DDRAM_LINEA_2); Datos_LCD(" [APAGADO] "); //PORTA=0x00; PORTBbits.RB0=1; Co=1; if(CoA==1){PORTBbits.RB1=1;} if(CoB==1){PORTBbits.RB1=1;} break; case 0x42: Comando_LCD(DDRAM_LINEA_2); Datos_LCD(" [ENCENDIDO] "); //PORTA=0x01; PORTBbits.RB0=0; Co=2; break; case 0x58: goto saltofin; break; }//FIN SWITCH } //FIN WHILE INFINITO //============fin de el envio de datos para conrtrol de iluminación saltofin: ;} void contiluminacion1(){ int lectura; //=====inicia el envio de datos de control para iluminación while(1){ // Tecla=0; // Lee_Teclado(); while(BusyUSART()); //esperamos caracter del virtual terminal while(!DataRdyUSART()); lectura = ReadUSART(); switch(lectura){ case 0x41: Comando_LCD(DDRAM_LINEA_2); Datos_LCD(" [APAGADO] "); PORTBbits.RB1=1; CoA=1; break; case 0x42: Comando_LCD(DDRAM_LINEA_2); Datos_LCD(" [ENCENDIDO] "); PORTBbits.RB1=0; CoA=2; break; case 0x58: goto saltofin1; break; }//FIN SWITCH } //FIN WHILE INFINITO //============fin de el envio de datos para conrtrol de iluminación saltofin1: ;} void contiluminacion2(){ int lectura; //=====inicia el envio de datos de control para iluminación while(1){ // Tecla=0; // Lee_Teclado(); while(BusyUSART()); //esperamos caracter del virtual terminal while(!DataRdyUSART()); lectura = ReadUSART(); switch(lectura){ case 0x41: Comando_LCD(DDRAM_LINEA_2); Datos_LCD(" [APAGADO] "); PORTBbits.RB2=1; CoB=1; break; case 0x42: Comando_LCD(DDRAM_LINEA_2); Datos_LCD(" [ENCENDIDO] "); PORTBbits.RB2=0; CoB=0; break; case 0x58: goto saltofin2; break; }//FIN SWITCH } //FIN WHILE INFINITO //============fin de el envio de datos para conrtrol de iluminación saltofin2: ;} void contiluminacion3(){ int lectura; //=====inicia el envio de datos de control para iluminación while(1){ // Tecla=0; // Lee_Teclado(); while(BusyUSART()); //esperamos caracter del virtual terminal while(!DataRdyUSART()); lectura = ReadUSART(); switch(lectura){ case 0x41: Comando_LCD(DDRAM_LINEA_2); Datos_LCD(" [APAGADO] "); PORTBbits.RB3=1; CoC=1; break; case 0x42: Comando_LCD(DDRAM_LINEA_2); Datos_LCD(" [ENCENDIDO] "); PORTBbits.RB3=0; CoC=2; break; case 0x58: goto saltofin3; break; }//FIN SWITCH } //FIN WHILE INFINITO //============fin de el envio de datos para conrtrol de iluminación 143 saltofin3: ;} void contiluminacion4(){ int lectura; //=====inicia el envio de datos de control para iluminación while(1){ // Tecla=0; // Lee_Teclado(); while(BusyUSART()); //esperamos caracter del virtual terminal while(!DataRdyUSART()); lectura = ReadUSART(); switch(lectura){ case 0x41: Comando_LCD(DDRAM_LINEA_2); Datos_LCD(" [APAGADO] "); PORTBbits.RB4=1; CoD=1; break; case 0x42: Comando_LCD(DDRAM_LINEA_2); Datos_LCD(" [ENCENDIDO] "); PORTBbits.RB4=0; CoD=2; break; case 0x58: goto saltofin4; break; }//FIN SWITCH } //FIN WHILE INFINITO //============fin de el envio de datos para conrtrol de iluminación saltofin4: ;} void contiluminacion5(){ int lectura; //=====inicia el envio de datos de control para iluminación while(1){ // Tecla=0; // Lee_Teclado(); while(BusyUSART()); //esperamos caracter del virtual terminal while(!DataRdyUSART()); lectura = ReadUSART(); switch(lectura){ case 0x41: Comando_LCD(DDRAM_LINEA_2); Datos_LCD(" [APAGADO] "); PORTBbits.RB5=1; CoE=1; break; case 0x42: Comando_LCD(DDRAM_LINEA_2); Datos_LCD(" [ENCENDIDO] "); PORTBbits.RB5=0; CoE=2; break; case 0x58: goto saltofin5; break; }//FIN SWITCH } //FIN WHILE INFINITO //============fin de el envio de datos para conrtrol de iluminación saltofin5: ;} void contiluminacion6(){ int lectura; //=====inicia el envio de datos de control para iluminación while(1){ // Tecla=0; // Lee_Teclado(); while(BusyUSART()); //esperamos caracter del virtual terminal while(!DataRdyUSART()); lectura = ReadUSART(); switch(lectura){ case 0x41: Comando_LCD(DDRAM_LINEA_2); Datos_LCD(" [APAGADO] "); PORTBbits.RB6=1; CoF=1; break; case 0x42: Comando_LCD(DDRAM_LINEA_2); Datos_LCD(" [ENCENDIDO] "); PORTBbits.RB6=0; CoF=2; break; case 0x58: goto saltofin6; break; }//FIN SWITCH } //FIN WHILE INFINITO //============fin de el envio de datos para conrtrol de iluminación saltofin6: ;} void test(){ int test; //while(i!=4){ //Delay10TCYx(100); Comando_LCD(DDRAM_LINEA_1); Datos_LCD("================"); Comando_LCD(DDRAM_LINEA_2); Datos_LCD(" PRUEBA DE "); Comando_LCD(DDRAM_LINEA_3); Datos_LCD(" CONECTIIDAD "); Comando_LCD(DDRAM_LINEA_4); Datos_LCD("================ " ); //i++; //} /*Comando_LCD(DDRAM_LINEA_1); Dato_String_LCD(borrar); Comando_LCD(DDRAM_LINEA_2); Dato_String_LCD(borrar); Comando_LCD(DDRAM_LINEA_3); Dato_String_LCD(borrar); Comando_LCD(DDRAM_LINEA_4); Dato_String_LCD(borrar);*/ while(1){ while(BusyUSART()); WriteUSART(0x50); while(BusyUSART()); //esperamos caracter del virtual terminal while(!DataRdyUSART()); test = ReadUSART(); if(test==0x70){ Comando_LCD(DDRAM_LINEA_1); Dato_String_LCD(borrar); Comando_LCD(DDRAM_LINEA_2); Dato_String_LCD(borrar); Comando_LCD(DDRAM_LINEA_1); Datos_LCD(" CONECTIVIDAD: "); Comando_LCD(DDRAM_LINEA_2); Datos_LCD("================"); while(i!=2){ Delay10TCYx(100); Comando_LCD(DDRAM_LINEA_3); Datos_LCD("!"); Delay10TCYx(100); Comando_LCD(DDRAM_LINEA_3); Datos_LCD("!! "); Delay10TCYx(100); Comando_LCD(DDRAM_LINEA_3); Datos_LCD("!!! "); Delay10TCYx(100); Comando_LCD(DDRAM_LINEA_3); Datos_LCD("!!!! "); Delay10TCYx(100); Comando_LCD(DDRAM_LINEA_3); Datos_LCD("!!!!! "); i++; } } Comando_LCD(DDRAM_LINEA_4); Datos_LCD("Prueba exitosa..."); } } 144 ANEXO III: MANUALES DEL FABRICANTE 145 146 147 148 149 150 151 ANEXO IV: DISEÑO DE CIRCUITOS IMPRESOS Figura A Circuito impreso del sistema terminal 1 Figura B Circuito impreso del sistema terminal 2 152 Figura C Circuito impreso del nodo central 153 ANEXO V: ESTRUCTURA DE TRAMAS ESTRUCTURA DEL PAQUETE DE DATOS DE LA CAPA FÍSICA La unidad de datos de protocolo de la capa física (PPDU, PHY Protocol Data Unit) tiene el trabajo de encapsular todos los datos de los niveles superiores. Se fundamenta en tres componentes: Cabecera de sincronización (syncronization header). Cabecera de la capa física (PHY header). Carga útil de la capa física (PHY payload). Figura D Estructura del paquete de la capa fisica IEEE 802.15.4 Cabecera de Sincronización de PPDU Ésta se encuentra formada por dos campos, el primero de ellos llamado “preámbulo” y un delimitador de inicio de trama o start-of-frame delimiter por sus siglas en inglés. El preámbulo esta integrado por 32 bits y permite a los nodos receptores sincronizar los bits del paquete. Al delimitador de inicio de trama lo conforman 8 bits con los que se permite al receptor identificar el inicio de los bits de datos del paquete. 154 Cabecera de la capa física Contiene siete bits para definir la longitud de la carga útil de datos del paquete (en bytes). La longitud puede tener como máximo de 127 bytes. Carga útil de la capa física Se trata de un solo campo y también es conocida como Unidad de Servicio de Datos (PSDU Physcal Layer Service Data Unit). En la PSDU se encapsula la trama MAC. ESTRUCTURA DE LA TRAMA MAC Se encuentra definida en la IEEE 802.15.4, esta diseñada para demostrar la simplicidad y flexibilidad del protocolo. La trama MAC consta de tres partes: Cabecera de la trama (frame header). Carga útil de la trama (frame payload). Pie de la trama (frame footer). Todos los componentes d e la trama MAC toman el nombre de protocolo de unidad de datos MPDU (MAC Protocol Data Unit) que luego se ensambla en el paquete de la capa física como el que se muestra en la figura E. Figura E Estructura de la trama MAC 155 Cabecera de la trama La cabecera MAC tiene un campo de control de trama y otro campo de direccionamiento. El campo de control de trama define el tipo de trama, uso de seguridad y el formato y contenido del campo de dirección. El campo de direccionamiento contiene tanto direcciones de origen com de destino especificadas dentro del campo de control de trama. Carga útil de la trama La carga útil de la trama contiene información acerca del tipo de trama y éste puede ser dividido en forma lógica para su uso para las capas superiores. Cola de la trama El pie es en este caso el campo FCS (Frame Check Sequence) y sirve para verificar la integridad de las tramas MAC. TRAMA DE DATOS PARA LA SUBCAPA MAC La trama de datos es usada por la subcapa MAC para transmitir datos y su formato se muestra en la Figura F. Figura F Formato de Trama de Datos 156 TRAMA DE ACUSE DE RECIBO La trama de acuse de recibo es enviada por la subcapa MAC para confirmar la recepción satisfactoria de la trama hacia el origen del mensaje. El formato de esta trama se muestra en la Figura G. Figura G Formato de la Trama de Acuse de Recibo TRAMA DE COMANDOS MAC La trama de comandos MAC es originada por la subcapa MAC y se encarga de todo el control de transferencia de la MAC. La carga útil de la MAC (MAC payload) tiene dos campos, el tipo de comando MAC (MAC command type) y el Valor del Comando MAC (MAC command payload). EL Valor de Comando MAC contiene información específica del tipo de comando en uso. La Figura muestra los detalles del formato de Trama de Comando MAC. Figura H Formato de Trama de Comando MAC 157 ANEXO VI: COSTOS DEL SISTEMA CONSTRUIDO COSTO DE CONSTRUCCION DEL SISTEMA TERMINAL 1 ELEMENTO COSTO Dispositivo XBee 310 Microcontrolador PIC18f452 100 Display de LCD 4x16 200 Teclado matricial 35 Placa fotosensible 75 Elementos electrónicos varios 20 TOTAL $740 COSTO DE CONSTRUCCION DEL SISTEMA TERMINAL 2 ELEMENTO COSTO Dispositivo XBee 310 Microcontrolador PIC18f452 100 Display de LCD 4x16 200 Placa fotosensible 75 Elementos electrónicos varios 20 TOTAL $705 COSTO DEL NODO CENTRAL ELEMENTO COSTO Dispositivo XBee 310 Placa fenolica 30 Elementos electrónicos varios 20 C.I. MAX232 8 TOTAL $368 158 BIBLIOGRAFÍA [1] Romero, C., Vásquez, F. y De Castro, Domótica e Inmótica: Viviendas y edificios inteligentes; Ra-Ma; Madrid, 2005. [2] www.domodesk.com [3]Tesis BLUETOOTH Gonzalez Guillen, Angel Calzada Flores, Edgar Andres Ortiz Luna, Ricardo ESIME-CULHUACAN [4]ZigBee Wireless Networking ZigBee Alliance Drew Gislason [5] Articulo: Performance Study of IEEE 802.15.4 Using Measurements and Simulations Marina Petrova, Janne Riihijarvi, Petri Mahonen and Saverio Labella Department of Wireless Networks RWTH Aachen University Kackertstrasse, Aachen, Germany [6]Tesis Doctoral Protocolo de encaminamiento en origen con identificadores no únicos para redes Ad-Hoc de dispositivos con recursos limitados Miguel Angel Ortuno Perez [7] IEEE 802.15.4 http://standards.ieee.org/getieee802/download/802.15.4-2006.pdf [8] ZigBee Alliance: http://www.zigbee.org/en/index.asp [9] Hands-On Implementing 802.15.4 With microcontrollers ZigBee Alliance Fredy Eady [10]Tesis: ZigBee aplicado a la transmission de datos de sensores biomédicos Iván Barneda Faudot [11] XBee User guide [12] ATAVRRZ200 Demonstration Kit User guide