PRUEBAS Y RESULTADOS
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.
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];