Informe Proyecto Final Final

56
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

Transcript of Informe Proyecto Final Final

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……………………………………………………… 13

2.1.2 HARDAWARE …………………………………………………………………… 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………….…….…….…….…….…….…….…….…….…….…….……..….…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 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 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

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.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 ayuda 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

|

else

if

INICIO

Int cont// Teclado //LCD

Ingresar la clave de seguridad

SE DESACTIVA LA SEGURIDAD DE LA VIVIENDA

Ingresar nuevamente la

clave

Cont++;

CLAVE

CORRECTA

mensaje en LCD “ABRIENDO”

Cont=3

Alarma sonora se activa

mensaje en LCD “ABRIENDO”

Se bloquea el sistema

Mensaje en LCD “error”

mensaje en LCD “ABRIENDO”

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

Opción

correcta

FIN

Se imprime el menú en el hyperterminal

Elegimos una opción del menú

Activación/desactivación luminarias

Esperar que elija

una opción

22

3.1.3. CÓDIGO DEL PROGRAMA EN AVR

#include <mega164a.h> // libreria del microcontrolador utilizado

#include <delay.h> // libreria de retardo

#include <stdlib.h> // libreria que contiene los prototipos en lenguaje C

para gestionar la memoria dinamica

// Alphanumeric LCD Module functions

#include <alcd.h> // libreria de la lcd

// External Interrupt 0 service routine

// Standard Input/Output functions

#include <stdio.h> // 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) // metodo que nos ayuda a identificar el valr

de la tecla presionada

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; // indica la direccion de la tecla precionada

if (PINB.1)return 0;

if (PINB.2)return 14;

if (PINB.3)return 15;

delay_ms(20);

return 21;

}

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: // TECLA 7

delay_ms(200); //retardo de 200 milisegundos

lcd_gotoxy (d3,1); // 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: // TECLA 9

delay_ms(200);

lcd_gotoxy (d3,1);

lcd_puts("*");

d2=9;d3++;

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); //TECLA C

lcd_gotoxy (1,1);

lcd_puts("-");

// d1=1;d2=1;d3++;

break;

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); //TECLA D

delay_ms(300);

//s=1;d2=12;d3++;

break;

case 11:

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: //TECLA 2

delay_ms(200);

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 de 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 error 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"); // imprime en la pantalla del hyperterminal

lcd_clear(); // 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: // en caso de no ser ninguno de ls casos mencionados nos

imprime error

printf ("\rERROR");

}

}

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. APAGAR_ESTUDIO

\r\r8. ENCENDER_TODAS\r9. APAGAR TODAs_TODAS\r\r\r ELIA UNA

OPCION...." );

menu();

}

void main(void)

{

// Declare your local variables here

// Crystal Oscillator division factor: 1

#pragma optsize-

CLKPR=0x80;

CLKPR=0x00;

#ifdef _OPTIMIZE_SIZE_

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: // en caso de error retorna aqui

sucontr() ; // 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() ; // llama al metodo teclado

numero[j]= (d2); // 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){ // cuando presionamos la tecla de aceptar, verifica si la clave es

correcta

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(); // borra la lcd

lcd_gotoxy (0,0); // ubicacion donde va imprimir en la lcd

lcd_puts("1.ABRIR"); // imprime de nuevo el menu

lcd_gotoxy (0,1);

lcd_puts("2.CERRAR");

PORTD.7=0;

}

else{ error(); delay_ms(1000);alarma++;goto inicio;} // en caso de que

algun digito de la clave sea erroneo imprime error

}

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); // ubicacion donde va imprimir en la lcd

lcd_puts("PUERTA CERRADA");

}

}

}

46

CAPITULO 4

4.1 MATERIALES Y COSTOS

DISPOSITIVO CANT PRECIO UNIDAD ($) PRECIO TOTAL

($)

Micro ATMEGA 164PA 1 10 10

Grabador 1 22 22

LCD 1 12 12

Teclado matricial 1 8 8

Pulsadores 2 0,1 0,2

Cables conectores 30 0.10 3.00

Transistor 3904 1 0,2 0,2

Resistencias 18 0,05 0,9

Impresiones 1 5 5

Cable serial USB/DB9 1 9,5 9,5

Conector DB9 1 2,5 2,5

leds 4 0,25 1

maqueta 1 16 16

capacitores 4 0,2 0,8

potenciómetro 1 0,8 0,8

TOTAL 91,9

Figura9. Tabla de materiales y gastos

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 del 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

Figura11. Opciones de encendido de luces desde el hyterterminal.

52

Figura12. Circuito realizado en Eagle

53

Figura13. Patillaje del microprocesador realizado en EAGLE

54

Figura14. Circuito armado

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

- http://hetpro-

store.com/index.php?option=com_content&view=article&id=17%3Auart-usart-

atmega&catid=4%3Atutoriales&Itemid=7&lang=en

- http://galaxi0.wordpress.com/el-puerto-serial/