UNIVERSIDAD TECNICA DEL NORTE
FACULTAD DE INGENIERIA EN CIENCIAS APLICADAS
SISTEMAS MICROPROCESADOS
TEMA: SISTEMA CONTROL DE ACCESO, SEGURIDAD Y LUMINOSIDAD EN UNA VIVIENDA (DOMÓTICA).
AUTORES: CARTAGENA OCAMPO EDGAR EDUARDO FÉLIX BOLAÑOS AMADA LEONOR
FECHA
: jueves 1 de agosto del 2013
IBARRA-ECUADOR
2
INDICE
RESUMEN………………………………………………………………………………....4 ABSTRACT………………………………………………………………………………..5 CAPITULO 1……………………………………………………………………………….6 1.1INTRODUCCION…………………………………………………………………...6
1.2OBJETIVOS……………………………………………………………………………8 1.2.1OBJETIVO GENERAL…………………………………………………………...8 1.2.2OBETIVOS ESPECIFICOS……………………………………………………...9 1.3 PLANTEAMIENTO DEL PROBLEMA………………………………………….10 1.4 DESCRIPCION DE LA
SOLUCION………….………………………………...11
CAPITULO 2……………………………………………………………………………..12 2.1 MARCO TEORICO ………………………………………………………..………12
2.1.1 SOFTWARE………………………………………………………………..…..…12 2.1.1.1 ATMEGA
C COMPILER …………………………………………………..…12
2.1.1.2 SIMULADOR PROTEUS……………………………………………………… 2.1.2 HARDAWARE
13
…………………………………………………………………… 14
2.1.2.1 MICROCONTROLADOR ATMEGA 164PA
……………………………… ………………………… …… 14
CAPITULO 3 …..….…….…….…….………….…….……..….…….…….…….…….. 20
2
INDICE
RESUMEN………………………………………………………………………………....4 ABSTRACT………………………………………………………………………………..5 CAPITULO 1……………………………………………………………………………….6 1.1INTRODUCCION…………………………………………………………………...6
1.2OBJETIVOS……………………………………………………………………………8 1.2.1OBJETIVO GENERAL…………………………………………………………...8 1.2.2OBETIVOS ESPECIFICOS……………………………………………………...9 1.3 PLANTEAMIENTO DEL PROBLEMA………………………………………….10 1.4 DESCRIPCION DE LA
SOLUCION………….………………………………...11
CAPITULO 2……………………………………………………………………………..12 2.1 MARCO TEORICO ………………………………………………………..………12
2.1.1 SOFTWARE………………………………………………………………..…..…12 2.1.1.1 ATMEGA
C COMPILER …………………………………………………..…12
2.1.1.2 SIMULADOR PROTEUS……………………………………………………… 2.1.2 HARDAWARE
13
…………………………………………………………………… 14
2.1.2.1 MICROCONTROLADOR ATMEGA 164PA
……………………………… ………………………… …… 14
CAPITULO 3 …..….…….…….…….………….…….……..….…….…….…….…….. 20
3
3.1 FLUJOGRAMA DEL FUNCIONAMIENTO DEL SISTEMA …………..……. 20 3.1.1. FLUJOGRAMA DEL FUNCIONAMIENTO DEL CONTROL DE ACCESO………….…….…….…… ACCESO………….…….…….…….…….…….…….…….…….… .…….…….…….…….…….…….…….……..….…21 ….…….……..….…21
3.1.2. FLUJOGRAMA DEL FUNCIONAMIENTO DEL CONTROL DE LUMINARIAS DE LA VIVIENDA…………………………….…….…….…….……..22
3.1.3. CÓDIGO DEL PROGRAMA EN AVR ………….………..…….…….…….……. ………….………..…….…….…….…….23
CAPITULO4 4.1 MATERIALES Y
COSTOS…………………………………………………………47
4.2 CONCLUSIONES………………..……………………………………………… .….48 4.2 RECOMEDACIONES…………..……………………………………………… ...….49 4.3 ANEXOS……………………………………………………………………………....50
4.4 BIBLIOGRAFIA Y NETGRAFIA…………………………………………………..57
4
RESUMEN:
El presente proyecto consiste de un control control de acceso, seguridad y luminosidad en una
vivienda
(domótica),
utilizando
hardware
(ATMEGA
164PA)
y
software
(CODEVISION AVR y PROTEUS).
El principio básico de funcionamiento es contar con un control de acceso a la vivienda mediante una clave de seguridad, también una alarma alarma sonora la cual se activa al ingresar a la vivienda sin ingresar la clave o al ingresar la clave equivocada por tres ocasiones, para el control de luminosidad se realiza una comunicación serial mediante la la cual se puede manipular tanto el encendido y apagado de las luminarias de la vivienda. En todos estos procesos se mostraran mensajes como señales indicando cada una las acciones tomadas, las mismas que se visualizar en una pantalla de cristal líquido o LCD. . Con este proceso se lograra dar una automatización de la vivienda. Los usuarios que cuenten con un sistema como el que aquí se describe, lograra tener el control de luces y ahorro de energía del hogar, sistema de vigilancia, entre otros. Este sistema puede reducir los gastos económicos, dar más confort, tranquilidad a los usuarios, y a su vez todo esto se realizara cuidando nuestro medio ambiente.
5
ABSTRACT:
This project consists of an access control, security and lighting in a home (home automation) using hardware (ATMEGA 164PA) and software (AVR codevision PROTEUS).
The basic principle of operation is to have control of access to housing by a security key, also an audible alarm which is activated by entering the house without entering the key or by entering the wrong password three times, for the brightness control is done via serial communication which can handle both on and off of the lights of the house. In all these processes will show messages as signs indicating each action taken, the same that is displayed on a liquid crystal display or LCD.
This process was achieved to give a home automation. Users who have a system like the one described here, managed to take control of lights and home energy savings, surveillance, among others. This system can reduce economic costs, provide more comfort, tranquility to users, and in turn all this was done taking care of our environment.
6
CAPITULO 1 1.1 INTRODUCCION
Un sistema de control de acceso, seguridad y luminosidad en una vivienda (domótica), reúne varios dispositivos entre estos el HADWARE y SOFTAWARE que tiene como fin controlar el encendido de luces a distancia y evitar gastos innecesarios en las planillas de pago de este servicio, conjuntamente
mejorar la seguridad en la vivienda; además el
objetivo de automatizar la vivienda de acuerdo a los avances de la tecnología y a las procesos de evolución que vive la sociedad.
El sistema tendrá su propio código de programación desarrollado a continuación, toma los datos de entradas proporcionados tanto por el sensor, teclado y comunicación serial, los cuales permiten se realicen todos los procesos del sistema.
Todo sistema de control de acceso, seguridad y luminosidad tendrá una clave de acceso la cual será administrada solamente el programador, la misma que puede cambiar solo cambiando la programación y posterior grabado.
Las herramientas utilizadas para el desarrollo de este proyecto se han venido estudiando en el periodo de un bimestre en la materia de Sistemas Microprocesados con la finalidad de adaptar los conocimientos adquiridos al desarrollo del siguiente proyecto utilizando programas como el simulador Proteus y el compilador Codevision AVR
FIGURA1. Diagrama de bloques sistema de control de acceso, seguridad y luminosidad en una vivienda (domótica).
1.2 OBJETIVOS 1.2.1 OBJETIVO GENERAL
Realizar un sistema domótico, mediante la utilización de dispositivos estudiados en la materia de Sistemas Microprocesados, para poder controlar de una forma más eficiente y oportuna la seguridad, el control del sistema de luminarias y la alarma de seguridad de una vivienda.
1.2 OBJETIVOS 1.2.1 OBJETIVO GENERAL
Realizar un sistema domótico, mediante la utilización de dispositivos estudiados en la materia de Sistemas Microprocesados, para poder controlar de una forma más eficiente y oportuna la seguridad, el control del sistema de luminarias y la alarma de seguridad de una vivienda.
1.2.2 OBJETIVOS ESPECIFICOS
Llegar a realizar un código de programación accesible, modificable y práctica, mediante el compilador antes mencionado, con el fin de que cumpla los requerimientos de un sistema de control de acceso, seguridad y luminosidad en una vivienda.
Investigar las diferentes conexiones a utilizar en el circuito para no tener problemas al momento de la presentación final del proyecto.
Simular cada uno de los circuitos, en un Proteus para poder comprobar el correcto funcionamiento de los circuitos.
9 El sistema de control de acceso, seguridad y luminosidad en una vivienda debe ser práctico, sencillo y eficaz; teniendo en cuenta los diferentes recursos físicos que se puedan adquirir para su realización del mismo.
Realizar la entrega del proyecto en su fecha limite indicada por el dirigente de la materia de Sistemas Microprocesados.
Tener el circuito simulado con su debido código y además armar en protoboard para su presentación en la defensa del proyecto.
Realizar la maqueta de una vivienda en la cual se pueda acoplar el circuito armado en protoboard y de esta manera se pueda visualizar de una forma más real y práctica el funcionamiento del sistema.
Comprender el uso y funcionamiento de cada uno de los elementos utilizados en este proyecto, mediante la implantación de los circuitos.
Desarrollar una interfaz de control amigable y sencillo que utilice una interfaz más visual y fácil de comprender, para a yuda a que el usuario sea capaz de controlar el sistema de manera autosuficiente.
10
1.3 PLANTEAMIENTO DEL PROBLEMA
Vivimos en un mundo que avanza de prisa, donde el tiempo es muy valioso, donde los seres humanos buscamos tener mayores comodidades, mayores seguridades y privilegios, sin tener que preocuparse demasiado. De igual manera hoy en el día la delincuencia ha crecido bastante convirtiéndose así en un problema social, haciendo que exista gran inseguridad en las personas y en sus propiedades.
Es ahí donde la domótica cumple un papel muy importante por cuanto debido a los grandes avances tecnológicos esto ya es una realidad y puede satisfacer nuestros deseos y problemas mencionados.Hoy en día, la domótica aporta soluciones dirigidas a todo tipo de viviendas, mejorando la calidad de vida de muchas personas, brindando tranquilidad y confortabilidad.
Para personas que tienen algún tipo de discapacidad, y no pueden realizar actividades en la misma medida que las demás personas, para ellas estos sistemas son más que un privilegio, son una herramienta necesaria para mejorar su calidad de vida. Así es que partiendo de esta necesidad de dotar a nuestras viviendas de una funcionalidad extra que mejore nuestra calidad de vida, nace la domótica basándose en aspectos como: confort, seguridad, gestión energética.
11
1.4 DESCRIPCION DE LA SOLUCION
El proyecto de control de acceso, seguridad y luminosidad en una vivienda (domótica), permite dar respuesta a los requerimientos que plantean estos cambios sociales y las nuevas tendencias de nuestra forma de vida, facilitando el diseño de casas y hogares más humanos, más personales, polifuncionales y flexibles.
El sector de la domótica ha evolucionado considerablemente en los últimos años, y en la actualidad ofrece una oferta más consolidada. Hoy en día, la domótica aporta soluciones dirigidas a todo tipo de viviendas, incluidas las construcciones de vivienda oficial protegida. Además, se ofrecen más funcionalidades por menos dinero, más variedad de producto, y gracias a la evolución tecnológica, son más fáciles de usar y de instalar. En definitiva, la oferta es mejor y de mayor calidad, y su utilización es ahora más intuitiva y perfectamente manejable por cualquier usuario.
Los usuarios que cuenten con un sistema como el que aquí se describe, lograra tener el control de luces y ahorro de energía del hogar, sistema de vigilancia, entre otros. Este sistema puede reducir los gastos económicos, dar más confort a los usuarios, y a su vez todo esto se realizara cuidando nuestro medio ambiente. Hoy en día se facilita el trabajo mediante sistemas inteligentes que hagan esto por el hombre, así evitar la fatiga humana, y mayor tranquilidad al contar con un sistema de seguridad.
12
CAPITULO 2 2.1 MARCO TEORICO 2.1.1 SOFTWARE 2.1.1.1 ATMEGA C COMPILER
El programa compilador traduce las instrucciones que se han escrito en el lenguaje de alto nivel (como en este caso se utiliza el lenguaje en C) a código binario ejecutable por el microcontrolador. CodeVisionAVR es un compilador desarrollado por Pavel Haiduc para los AVR de 8 bits, desde los tinyAVR hasta los XMEGA. Su principal ventaja es que provee librerías integradas para controlar sus recursos internos y también dispositivos externos como LCDs, GLCDs, RTCs, sensores de temperatura, etc. En este sentido se le podría comparar con los compiladores C de CCS o Mikroe para los PICmicro. Como lo comprobaremos enseguida, CodeVisionAVR es el compilador C para los AVR más fácil de usar, sin embargo, no llega a igualar la eficacia de los compiladores IAR AVR o AVR GCC. También podremos comprobar algo de esta diferencia en la siguiente práctica. La versión de evaluación de CodeVisionAVR permite usarlo en casi toda su funcionalidad para fines no comerciales. Tiene ciertas limitaciones con algunas de sus librerías (casi ni se nota) y no compila programas que superen los 4 kbytes de código ejecutable.
Figura 2.- Logotipo del CCS
13
2.1.1.2 SIMULADOR PROTEUS
Es una compilación de programas de diseño y simulación electrónica, desarrollado por Labcenter Electronics que consta de los dos programas principales: Ares e Isis, y los módulos VSM y Electra. Son capaces de ejecutar en una PC programas realizados para el microcontrolador, este simulador permite tener el control absoluto sobre la ejecución de un programa. Su gran inconveniente es que es difícil simular la entrada y salida de datos del microcontrolador, tampoco cuentan con los posibles ruidos en las entradas, pero, al menos, permiten el paso físico de la implementación de un modo más seguro y menos costoso, puesto que ahorraremos en grabaciones de chips para las diferentes pruebas realizadas al circuito.
Figura 3.- Logotipo del simulador Proteus
14
2.1.2 HARDAWARE 2.1.2.1 MICROCONTROLADOR ATMEGA 164PA
Figura4. Patillaje del microprocesador
El ATmega164PA es un microcontrolador CMOS de 8 bits de bajo consumo basado en la arquitectura RISC mejorada. Sus instrucciones se ejecutan en un ciclo de máquina, el ATmega164PA consigue transferencia de información alrededor de 1 MIPS por MHz admitido por el sistema, permitiendo al diseñador del sistema optimizar el consumo de energía versus la velocidad de procesamiento.
CARACTERISTICAS GENERALES:
Microcontrolador AVR de 8 bits de alto rendimiento y bajo consumo.
Arquitectura Avanzada RISC
15
- 131 instrucciones. La mayoría de un solo ciclo de reloj de ejecución. - 32 registros de trabajo de 8 bits para propósito general. - Funcionamiento estático total. - Capacidad de procesamiento de unos 20 MIPS a 20 MHz. - Multiplicador por hardware de 2 ciclos
Memorias de programa y de datos no volátiles de alta duración
- 16/32/44 K bytes de FLASH auto programable en sistema - 512B/1K/2K bytes de EEPROM - 1/2/4K bytes de SRAM Interna - Ciclos de escritura/borrado: 10.000 en Flash / 100.000 en EEPROM
Características de los periféricos
- Dos Timer/Contadores de 8 bits con prescalamiento separado y modo comparación. - Un Timer/Contador de 16 bits con prescalamiento separado, modo comparación y modo de captura. - Contador en Tiempo Real con Oscilador separado - 6 Canales para PWM - ADC de 10 bits y 8 canales Modo Diferencial con ganancia seleccionable a x1, x10 o x200. - Interface serie de dos hilos con byte orientado. - Dos puertos Seriales USART Programables - Interfaz Serial SPI maestro-esclavo - Watchdog Timer programable con oscilador independiente, dentro del mismo chip. - Comparador Analógico dentro del mismo Chip
16
2.1.2.2 PANTALLA DE CRISTAL LÍQUIDO O LCD Una pantalla de cristal líquido o LCD (sigla del inglés liquid crystal display) es una pantalla delgada y plana formada por un número de píxeles en color o monocromos colocados delante de una fuente de luz o reflectora. A menudo se utiliza en dispositivos electrónicos de pilas, ya que utiliza cantidades muy pequeñas de energía eléctrica.
Figura 4. Pantalla de cristal líquido o LCD
Figura 5.Configuracion de pines para una pantalla de cristal líquido o LCD
17
2.1.2.3 TECLADO MATRICIAL
Los teclados matriciales son muy útiles para el ingreso de datos, un ejemplo seria el teclado del computador. Un teclado matricial es un simple arreglo de botones conectados en filas y columnas, de modo que se pueden leer varios botones con el mínimo número de pines requeridos. Un teclado matricial 4×4 solamente ocupa 4 líneas de un puerto para las filas y otras 4 líneas para las columnas, de este modo se pueden leer 16 teclas utilizando solamente 8 líneas de un micro controlador. Si asumimos que todas las columnas y filas inicialmente están en alto (1 lógico), la pulsación de un botón se puede detectar al poner cada fila a en bajo (0 lógico) y checar cada columna en busca de un cero, si ninguna columna está en bajo entonces el 0 de las filas se recorre hacia la siguiente y así secuencialmente.
Figura6. Teclado matricial
2.1.2.4. MAX 232 El MAX232 es un IC, primero creado por Maxim Integrated Products , que convierte las señales a partir de un RS-232 puerto serie a señales adecuadas para su uso
18 en TTL circuitos lógicos digitales compatibles. El MAX232 es un doble controlador / receptor y normalmente convierte las señales RTS RX, TX, CTS y.
Figura7. Conexión Max 232 2.1.2.5. CABLE SERIAL USB/DB9 Descripción general: se describe el procedimiento para la conexión de un cable de interconexión entre un conector USB y otro DB9. Esta interfaz se usa en los casos en los cuales la PC (en particular las LAPTOPS) no cuente con salida DB9-RS232. El driver de la interfaz crea un puerto virtual COM, generalmente COM3 ó COM4 y puede ser usado por cualquier programa de comunicaciones, como Hyperterminal, que es un software estándar en todos los sistemas WINDOWS.
Figura8. Cable serial
19
2.1.2.6. INTERRUPCIONES Interrupción (también conocida como corrupción del hardware o petición de interrupción) es una señal recibida por el procesador de un ordenador, indicando que debe "interrumpir" el curso de ejecución actual y pasar a ejecutar código específico para tratar esta situación. Una interrupción supone la ejecución temporaria de un programa, para pasar a ejecutar una "subrutina de servicio de interrupción", que pertenece al BIOS (Basic Input Output System)
2.1.2.7. COMUNICACIÓN SERIAL La comunicación serial consiste en el envío de un bit de información de manera secuencial, esto es, un bit a la vez y a un ritmo acordado entre el emisor y el receptor. Esta nos permite realizar como se indica la comunicación entre el computador y el microprocesador, y así intercambiar información.
2.1.2.8. MÉTODOS La utilización de métodos dentro de nuestro sistema, no solo permite que el código este más ordenado, sino que también permite la reutilización del código y así el programa pueda ser más fácil
y entendible. No tenga tantas líneas de código y al momento de
compilar, este proceso será mas fácil.
20
CAPITULO 3 3.1 FLUJOGRAMA DEL FUNCIONAMIENTO DEL SISTEMA 3.1.1. FLUJOGRAMA DEL FUNCIONAMIENTO DEL CONTROL DE ACCESO
INICIO
Int cont// Teclado //LCD
| Ingresar la clave de seguridad
else if
CLAVE CORRECTA
Mensaje en LCD “error”
Ingresar nuevamente la clave mensaje en LCD “ABRIENDO”
Cont++; SE DESACTIVA LA SEGURIDAD DE LA VIVIENDA Cont=3
Alarma sonora se activa
Se bloquea el sistema
FIN
21
3.1.2. FLUJOGRAMA DEL FUNCIONAMIENTO DEL CONTROL DE LUMINARIAS DE LA VIVIENDA
INICIO
COMUNICACIÓN SERIAL HYPERTERMINAL INTERRUPCIÓN
| Presiono botón de interrupción
Se imprime el menú en el hyperterminal
Elegimos una opción del menú
Opción correcta
Activación/desactivación luminarias
FIN
Esperar que elija una opción
22
3.1.3. CÓDIGO DEL PROGRAMA EN AVR #include
// libreria del microcontrolador utilizado
#include
// libreria de retardo
#include
// libreria que contiene los prototipos en lenguaje C
para gestionar la memoria dinamica
// Alphanumeric LCD Module functions #include
// libreria de la lcd
// External Interrupt 0 service routine
// Standard Input/Output functions #include
// libreria q contiene las definiciones de macros, las
constantes, las declaraciones de funciones
// Declare your global variables here
unsigned char i;
// variable tipo caracter utilizada en el cicl for del
metodo teclado unsigned int d1,d2,d3;
//variables tipo caracter de control que
cambian su valor seudun el boton del teclado; int alarma;
23 int h=0;
// variable utilizada como contador para que se active
la alarma en caso de tres intentos fallidos eeprom unsigned int clave[4];
// arreglo guardado en la memoria eeprom
donde se almacena la clave int j;
// variable tipo entero utilizada en el for que realiza la
funcion de verificacion de la clave unsigned int s=0;
//variables tipo caracter de control que cambian
su valor seudun el boton del teclado; char opc; unsigned int clave1=0,clave2=0,clave3=0,clave4=0;
//cuatro digitos que utilizaremos
para leer la EEprom ; int numero[4];
// aregl* donde se guarda la clave ingresada para
luego ser verificada char text[]="A.ABRIR" ;
// arregl tipo caracter que contiene el texto
ABRIR char text2[]="B.CERRAR";
// arregl tipo caracter que contiene el
texto CERRAR char actual[]="SU CLAVE" ;
// arregl tipo caracter que contiene el texto
SU CONTRASENIA char errors[]="error";
// arregl tipo caracter que contiene el texto
ERROR
unsigned char tecla(void) de la tecla presionada
// metodo que nos ayuda a identificar el valr
24 { PORTB=0X80; if (PINB.0)return 13;
// indica la direccion de la tecla precionada
if (PINB.1)return 8; if (PINB.2)return 9; if (PINB.3)return 10; PORTB=0X40; if (PINB.0)return 7;
// indica la direccion de la tecla precionada
if (PINB.1)return 5; if (PINB.2)return 6; if (PINB.3)return 11; PORTB=0X20; if (PINB.0)return 4; if (PINB.1)return 2;
// indica la direccion de la tecla precionada
if (PINB.2)return 3; if (PINB.3)return 12; PORTB=0X10; if (PINB.0)return 1; if (PINB.1)return 0; if (PINB.2)return 14; if (PINB.3)return 15; delay_ms(20); return 21; }
// indica la direccion de la tecla precionada
25 void teclado (void)
// metodo para dar un valr y una funcion a cada tecla
{ for (i=0;i<4;i++)
// ciclo
{ i=tecla (); if (i!= 21) { switch (i) { // TECLA 5 case 0: delay_ms(200); lcd_gotoxy (d3,1); lcd_puts("*"); d1=1;d2=5;d3++;
break;
case 1: delay_ms(200); lcd_gotoxy (d3,1);
// TECLA 7 //retardo de 200 milisegundos // la ubicacion donde vamos a imprimir en la lcd
lcd_puts("*");
// se imprime "*" en la ubicacion antes dada
d2=7;d3++;
// da el valor de la tecla a una variable
26 break;
case 2:
// TECLA 4
delay_ms(200); lcd_gotoxy (d3,1); lcd_puts("*"); d2=4;d3++; break;
case 3:
// TECLA 1
delay_ms(200); lcd_gotoxy (d3,1); lcd_puts("*"); d1=1; d2=1; d3++; break;
case 4: delay_ms(200); lcd_gotoxy (d3,1); lcd_puts("*"); d2=9;d3++;
// TECLA 9
27 break;
case 5:
// TECLA 6
delay_ms(200); lcd_gotoxy (d3,1); lcd_puts("*"); d2=6;d3++; break;
case 6: delay_ms(200);
// TECLA 3
lcd_gotoxy (d3,1); lcd_puts("*"); d2=3;d3++; break;
case 7: delay_ms(200); lcd_gotoxy (1,1); lcd_puts("-"); // d1=1;d2=1;d3++;
break;
//TECLA C
28
case 8: lcd_clear();
//TECLA B
delay_ms(200); s=3;d2=12;d3++; break;
case 9:
// TECLA A
delay_ms(200); lcd_gotoxy (1,1); delay_ms(300); //lcd_puts("/"); s=1;d2=12;d3++;
break;
case 10: delay_ms(200); lcd_gotoxy (1,1); delay_ms(300); //s=1;d2=12;d3++; break;
case 11:
//TECLA D
29 delay_ms(200); lcd_gotoxy (1,1); //lcd_puts("=");
//d1=1;d2=1;d3++; break;
case 12:
//tecla ACEPTAR
delay_ms(200); // lcd_clear(); // lcd_gotoxy (0,0); // lcd_puts("DOMOTICA"); s=2;d2=10;d3++; break;
case 13:
//TECLA 8
delay_ms(200); lcd_gotoxy (d3,1); lcd_puts("*"); d2=8;d3++; break;
case 14: delay_ms(200);
//TECLA 2
30 lcd_gotoxy (d3,1); lcd_puts("*"); d1=2;d2=2;d3++; break; //TECLA 0 case 15: delay_ms(200); lcd_gotoxy (d3,1); lcd_puts("*"); d2=0;d3++; break; }
} } }
void abrir(){ // metodo utilizado cuando se ingresa la clave correcta, imprime en la lcd indicando que la puerta esta abierta; lcd_clear();
31 lcd_gotoxy (1,1); lcd_puts("abriendo");
} void sucontr(){ // cuando se pide que ingrese la contraseña.....,; lcd_clear(); lcd_gotoxy (0,0); lcd_puts(actual); }
void write_lcd(){ // visualizar en pantalla las cadenas text y text2 a manera de menu; lcd_clear(); lcd_gotoxy (0,0); lcd_puts(text); lcd_gotoxy (0,1); lcd_puts(text2); }
void leer_eep(){ //* rutina que lee los datos d e la EEprom y los guarda en las variables para ser comparadas; clave1=1; clave2=2; clave3=1; clave4=2;
32 clave[0]=clave1; clave[1]=clave2; clave[2]=clave3; clave[3]=clave4;
} void error(){ //* se ve en pantalla la palabra e rror si no c teclea el num correcto; lcd_clear(); lcd_gotoxy (1,1); lcd_puts(errors);
} void initmain (){ // subfuncion principal ; d1=d2=d3=0; }
void menu(void) {
scanf("%c", &opc) ;
// identifica la tecla presionada en la comunicacion
serial switch (opc) {
// segun la tecla presionada en la comunicacion serial
asigna un caso
case'0':
// encender luz de la sala
33
PORTD.3=1; printf("\r\rSALA ENCENDIDA"); lcd_clear();
// imprime en la pantalla del hyperterminal
// borra todo l que este en la pantalla lcd
delay_ms(200);
// retardo de 200 milisegundos
lcd_gotoxy (0,0);
// ubicacion de donde se va imprimir en la pantalla lcd
lcd_puts("SALA");
// imprime en la pantalla lcd
lcd_gotoxy (0,1);
// ubicacion donde se va imprimir en la pantalla lcd
lcd_puts("ON");
// imprime en la pantalla lcd
break;
case'1':
//apagar la luz de la sala
PORTD.3=0; printf("\r\rSALA APAGADA"); lcd_clear(); delay_ms(200); lcd_gotoxy (0,0); lcd_puts("SALA"); lcd_gotoxy (0,1); lcd_puts("OFF"); break;
case '2':
// enceder luz del dormitorio1
34 PORTD.4=1; printf("\r\rDORMITORIO 1 ENCENDIDO"); lcd_clear(); delay_ms(200); lcd_gotoxy (0,0); lcd_puts("DORM1"); lcd_gotoxy (0,1); lcd_puts("ON"); break; //apagar luz del dormitorio1 case '3': PORTD.4=0; printf("\r\rDORMITORIO 1 APAGADO") ; lcd_clear(); delay_ms(200); lcd_gotoxy (0,0); lcd_puts("DORM1"); lcd_gotoxy (0,1); lcd_puts("OFF"); break; case '4':
// enceder luz del dormitorio2
PORTD.5=1; printf("\r\rDORMITORIO 2 ENCENDIDO"); lcd_clear();
35 delay_ms(200); lcd_gotoxy (0,0); lcd_puts("DORM2"); lcd_gotoxy (0,1); lcd_puts("ON"); break; case '5':
// apagar luz del dormitorio2
PORTD.5=0; printf("\r\rDORMITORIO 2 APAGADO"); lcd_clear(); delay_ms(200); lcd_gotoxy (0,0); lcd_puts("DORM2"); lcd_gotoxy (0,1); lcd_puts("OFF"); break; case '6':
// encender luz del estudio
PORTD.6=1; printf("\r\rESTUDIO ENCENDIDO"); lcd_clear(); delay_ms(200); lcd_gotoxy (0,0); lcd_puts("ESTUDIO"); lcd_gotoxy (0,1);
36 lcd_puts("ON"); break; case '7':
// apagar luz del estudio
PORTD.6=0; printf("\r\rESTUDIO APAGADO"); lcd_clear(); delay_ms(200); lcd_gotoxy (0,0); lcd_puts("ESTUDIO"); lcd_gotoxy (0,1); lcd_puts("OFF"); break; case'8':
// encender todas las luces
PORTD.3=1; PORTD.4=1; PORTD.5=1; PORTD.6=1; printf("\r\rTODAS ON"); lcd_clear(); delay_ms(200); lcd_gotoxy (0,0); lcd_puts("LUCES"); lcd_gotoxy (0,1);
37 lcd_puts("ON"); break; case'9':
// apagar todas las luces
PORTD.3=0; PORTD.4=0; PORTD.5=0; PORTD.6=0; printf("\r\rTODAS OFF"); lcd_clear(); delay_ms(200); lcd_gotoxy (0,0); lcd_puts("LUCES"); lcd_gotoxy (0,1); lcd_puts("OFF"); break;
default: imprime error printf ("\rERROR");
} }
// en caso de no ser ninguno de ls casos mencionados nos
38 interrupt [EXT_INT0] void ext_int0_isr(void)
// interrupcion 0 que llama al metodo
menu para controlar el encndido de luces de la vivienda { printf("\r\r\r
CONTROLAR LUCES DE LA VIVIENDA \r\r\r0.
ENCENDER_SALA \r1.
APAGAR_SALA \r\r2.
ENCENDER_DORMITORIO1 \r3.
APAGAR_DORMITORIO1 \r\r4.
ENCENDER_DORMITORIO2 \r5.
APAGAR_DORMITORIO2 \r\r6.
ENCENDER_ESTUDIO \r7.
\r\r8.
APAGAR TODAs_TODAS\r\r\r
ENCENDER_TODAS\r9.
OPCION...." );
menu(); }
void main(void) { // Declare your local variables here
// Crystal Oscillator division factor: 1 #pragma optsizeCLKPR=0x80; CLKPR=0x00; #ifdef _OPTIMIZE_SIZE_
APAGAR_ESTUDIO ELIA UNA
39 #pragma optsize+ #endif
PORTA=0x00; DDRA=0x00;
PORTB=0x00; DDRB=0xF0;
PORTC=0x00; DDRC=0x00;
PORTD=0x00; DDRD=0xF8;
TCCR0A=0x00; TCCR0B=0x00; TCNT0=0x00; OCR0A=0x00; OCR0B=0x00;
TCCR1A=0x00; TCCR1B=0x00;
40 TCNT1H=0x00; TCNT1L=0x00; ICR1H=0x00; ICR1L=0x00; OCR1AH=0x00; OCR1AL=0x00; OCR1BH=0x00; OCR1BL=0x00;
ASSR=0x00; TCCR2A=0x00; TCCR2B=0x00; TCNT2=0x00; OCR2A=0x00; OCR2B=0x00;
EICRA=0x00; EIMSK=0x01; EIFR=0x01; PCICR=0x00;
// Timer/Counter 0 Interrupt(s) initialization TIMSK0=0x00;
41 // Timer/Counter 1 Interrupt(s) initialization TIMSK1=0x00;
// Timer/Counter 2 Interrupt(s) initialization TIMSK2=0x00;
UCSR0A=0x00; UCSR0B=0x18; UCSR0C=0x06; UBRR0H=0x00; UBRR0L=0x33;
UCSR1B=0x00;
// Analog Comparator initialization // Analog Comparator: Off // Analog Comparator Input Capture by Timer/Counter 1: Off ACSR=0x80; ADCSRB=0x00; DIDR1=0x00;
// ADC initialization // ADC disabled
42 ADCSRA=0x00;
// SPI initialization // SPI disabled SPCR=0x00;
// TWI initialization // TWI disabled TWCR=0x00;
lcd_init(16); //lcd_gotoxy (0,0); //lcd_puts("DOMOTICA"); delay_ms(200);
// Global enable interrupts #asm("sei") initmain() ; write_lcd() ; //* llamada a las funciones; leer_eep() ;
while (1) { int in = PINC;
43 teclado ();
// llama al metodo teclado
if (s==1){
// si escogemos la opcion ABRIR s=1 y nos pide que ingresemos la
contrasenia inicio: sucontr() ;
// en caso de error retorna aqui // si se escogio "ABRIR" o sea la opcion 1 del menu, llama a la
funcion que pide tu contraseña; d1=0;
// limpia las variables, (necesario para los nuevos valores que se van
a comparar); d2=0; d3=0; if(alarma==3){PORTD.7=1;}
// en caso de que ingresamos la clave incorrecta 3
veces se activa la alarma for(j=0;j<5;j=d3){
// como la contraseña es de 4 digitos, espera a que se
presionen 4 teclas, el contador j se encarga de esto; teclado() ; numero[j]= (d2);
// llama al metodo teclado // va guardadndo el valor de la clave en el arreglo numero en
la ubicacion j delay_ms(200) ;
// retardo de 100 milisegundos
}
if (s==2){ correcta
// cuando presionamos la tecla de aceptar, verifica si la clave es
44
if(numero[0]==clave[0] ){
// verifica si el digito ingresado en la ubicacion 0 es igual
al de nuestra clave en la misma ubicacion if(numero[1]==clave[1] ){
// verifica si el digito ingresado en la ubicacion 1 es igual
al de nuestra clave en la misma ubicacion if(numero[2]==clave[2] ){
// verifica si el digito ingresado en la ubicacion 2 es igual
al de nuestra clave en la misma ubicacion if(numero[3]==clave[3] ){
// verifica si el digito ingresado en la ubicacion 3 es igual
al de nuestra clave en la misma ubicacion
alarma=0;delay_ms(500);abrir();delay_ms(3000);
// si la clave es correcta llama al
metodo abrir h=1; lcd_clear(); lcd_gotoxy (0,0); lcd_puts("1.ABRIR");
// borra la lcd // ubicacion donde va imprimir en la lcd // imprime de nuevo el menu
lcd_gotoxy (0,1); lcd_puts("2.CERRAR"); PORTD.7=0;
} else{ error(); delay_ms(1000);alarma++;goto inicio;} algun digito de la clave sea erroneo imprime error }
// en caso de que
45 else{error(); delay_ms(1000);alarma++;goto inicio;} } else{ error(); delay_ms(1000); alarma++;goto inicio;} } else{ error(); delay_ms(1000); alarma++; goto inicio;} }
}
if(in==1 && h==0)
// comprueba si la alarma esta activada
{ PORTD.7=1;
// si la alarma esta activada en caso de abrir la puerta se enciende la
alarma } if(s==3){
// si precionamos la tecla de cerrar puerta se imprime en la pantalla lcd
el mensaje h=0; lcd_gotoxy (0,0); lcd_puts("PUERTA CERRADA");
} } }
// ubicacion donde va imprimir en la lcd
46
CAPITULO 4 4.1 MATERIALES Y COSTOS
DISPOSITIVO
CANT
Micro ATMEGA 164PA
PRECIO UNIDAD ($)
PRECIO TOTAL ($)
1
10
10
Grabador
1
22
22
LCD
1
12
12
1
8
8
2
0,1
0,2
30
0.10
3.00
1
0,2
0,2
18
0,05
0,9
1
5
5
1
9,5
9,5
1
2,5
2,5
4
0,25
1
1
16
16
4
0,2
0,8
1
0,8
0,8
Teclado matricial Pulsadores Cables conectores Transistor 3904 Resistencias Impresiones Cable serial USB/DB9 Conector DB9 leds maqueta capacitores potenciómetro
TOTAL Figura9. Tabla de materiales y gastos
91,9
47
4.2 CONCLUSIONES: Se logró construir un circuito de manera que se pueda realizar el sistema control de acceso, seguridad y luminosidad en una vivienda (domótica).
Se realizó el control de acceso, mediante el acceso de la clave de 4 dígitos, utilizando la memoria eeprom del microprocesador.
Se logró identificar la configuración de pines del microprocesador ATMEGA 164 y cada una de sus funciones, características, con la ayuda de los conocimientos adquiridos en clases y mediante el estudio del datasheet de l mismo.
Luego de los análisis respectivos se logró concluir que la teoría aprendida en clases durante el transcurso del semestre satisface de una manera muy correcta el análisis de la práctica.
Se logró conocer las conexiones de cada uno de los elementos, tanto como LCD, microprocesador, su correcta polarización.
Gracias al programa PROTEUS se pudo comprobar el buen funcionamiento del circuito y para posteriormente realizar la implementación respectiva.
Se logró comprender el funcionamiento de todos los elementos estudiados durante el semestre, utilizándolos todos conjuntamente en un circuito en el que se aplique nuestros conocimientos adquiridos.
48 Mediante el microcontrolador se puede realizar muchas aplicaciones, dependiendo las funciones que este posee y deseemos utilizar.
Se pudo realizar la maqueta respectiva, en la cual se implementó el circuito realizado para el sistema de control de acceso y luminosidad de la vivienda.
4.3 RECOMENDACIONES: Conocer el datasheet del microprocesador ATMEGA 164 PA, y en si todas las características del mismo. Analizar primeramente la polarización y la distribución de pines de nuestros elementos utilizados en el proyecto para tener un buen funcionamiento y evitar que estos puedan dañarse. Realizar la simulación respectiva, antes de armar el circuito para comprobar su correcto funcionamiento. Utilizar métodos y la menor cantidad de líneas de código en nuestro programa, para que este se pueda compilar de una manera más rápida y eficaz.
49
Figura10. Circuito simulado en PROTEUS
51
51
Figura11. Opciones de encendido de luces desde el h yterterminal.
52
52
Figura12. Circuito realizado en Eagle
53
53
Figura13. Patillaje del microprocesador realizado en EAGLE
54
54
Figura14. Circuito armado
55
55
Figura15. Maqueta para la implementación del circuito
4.4 BIBLIOGRAFIA
-
SISTEMAS CON MICROPROCESADORES /ING. GERARDO COLLAGUAZO
-
DATASHEET PIC16F628A
-
ttp://www.todopic.com.ar/foros/index.php?topic=38913.0/controleeprom
-
http://www.cursomicros.com/avr/compiladores/tutorial-de-codevision-avr.html http://electronica.webcindario.com/circuitos/cerradura.htm