Cerradura Electrónica

21
Instituto Tecnológico de Querétaro GRUPO Y SALÓN: Grupo 0V, Salón G23 MATERIA: Microcontroladores CONTENIDO: Proyecto: Cerradura Electrónica. INTEGRANTES DEL EQUIPO 4: Valdivia Mejía Martín Enrique Noguez Cruz Héctor Álvarez Melgar José Francisco.

description

Construcción de un cerradura Electronica con pic 16f887

Transcript of Cerradura Electrónica

Page 1: Cerradura Electrónica

Instituto Tecnológico de Querétaro

GRUPO Y SALÓN:

Grupo 0V, Salón G23

MATERIA:

Microcontroladores

CONTENIDO:

Proyecto: Cerradura Electrónica.

INTEGRANTES DEL EQUIPO 4:

Valdivia Mejía Martín Enrique

Noguez Cruz Héctor

Álvarez Melgar José Francisco.

FECHA DE ENTREGA:

06/06/2014

Page 2: Cerradura Electrónica

REPORTE DE LA CERRADURA ELECTRÓNICA

INTRODUCCIÓN Este proyecto fue elaborado para contar con un sistema de seguridad

electrónico, por medio de una cerradura. E campo de aplicación de este puede ser desde una caja fuerte, la puerta de una casa, la puerta de una habitación, algún armario, etc. También se llevó a cabo con el propósito de no necesitar de una llave para este tipo de seguridad, ya que es muy frecuente perder u olvidar las llaves.

Nuestra práctica conlleva en elaborar un sistema de una cerradura electrónica, con contraseña reprogramable. Con la que podamos tener una mayor seguridad en nuestros hogares, cuartos y sistemas en dónde se requiera seguridad.

OBJETIVOS Dar una visión práctica de los principios de diseño de sistemas

implementados con micro-controladores. Convencer a la necesidad de la implementación de los diseños

tradicionales con aplicaciones en micro-controladores. Diseñar un sistema de seguridad digital.

MARCO TEÓRICO Para el desarrollo del proyecto es necesario conocer cuestiones como el funcionamiento de la LCD, el teclado matricial, y el software de programación PICC, además de algunos conceptos de electrónica analógica como el uso de transistores como etapas de potencia y el uso de la memoria EEPROM del microcontrolador.

Cerradura Electrónica.

Hemos desarrollado un pequeño proyecto suponiendo que hemos sido contratados por una empresa fabricante de puertas de seguridad para diseñar y fabricar la parte electrónica de una cerradura electrónica multiusos.

El sistema estará colocado en puertas interiores y exteriores. Controlará acceso a laboratorios y cuartos privados. Se usará en recintos donde el acceso deba estar muy restringido y controlado.

Page 3: Cerradura Electrónica

Las claves de cada usuario serán de cuatro dígitos, para entrar deberán pulsarse después del número del usuario, anteriormente ingresado y guardado en la memoria de nuestra cerradura. Si el usuario lo desea podrá modificar la contraseña con la que puede ingresar al laboratorio, cuarto y hogar en dónde se encuentre instalada la cerradura.

Cabe mencionar que las cerraduras electrónicas actuales permiten adoptar un cierre oculto de alta seguridad sobre cualquier puerta batiente o corredera, de una o dos hojas, de madera o de metal, sea la instalación de forma horizontal o vertical.

A continuación veremos algunas de las cerraduras electrónicas que podemos ver en el mercado actualmente.

Cerraduras Electrónicas Actuales.

Memorias EEPROM

EEPROM responde a “Erasable Programmable Read Only Memory” que se puede traducir como memoria programable borrable de solo lectura. También se la conoce como E2-PROM. Como su nombre sugiere, una EEPROM puede ser borrada y programada con impulsos eléctricos. Al ser una pieza que se puede gestionar por estos impulsos eléctricos, podemos realizar todas estas operaciones de reprogramación sin tener que desconectarla de la placa a la cual va conectada.

La EEPROM también se conoce como “non-volatile memory” o memoria no volátil y es debido a que cuando se desconecta la energía, los datos almacenados en la EEPROM no serán eliminados quedando intactos. Las EEPROM más nuevas no tiene datos almacenados en ellas y deben ser primero configuradas con un

Page 4: Cerradura Electrónica

programador antes de ser usadas. La información almacenada dentro de este dispositivo puede permanecer durante años sin una fuente de energía eléctrica.

Las EEPROM raramente fallan, y cuando lo hacen suele ser por picos eléctricos y sobrecargas de energía, provocando perdida de datos o que estos datos queden dañados.

Memorias EEPROM

Teclado matricial.

Un teclado está compuesto de una serie de interruptores (pulsadores), los cuales están conectados en forma de matriz.

Aunque los teclados pueden tener presentaciones de 4x3 (4 renglones x 3 columnas) o bien de 4x4, no observamos que salen 12 o 16 cables respectivamente, es decir no hay un cable por cada tecla. Lo normal es que se tengan 8 cables, para el caso de un teclado de 4x4, 4 cables corresponden a cada uno de los renglones y los 4 restantes a las columnas.

Dentro del aprendizaje del manejo del teclado debe considerarse el saber identificar que cable corresponde a que columna o renglón, para después

Page 5: Cerradura Electrónica

conectarse al microcontrolador. Esto se logra por simple observación del impreso del teclado.

Como se puede ver en la figura, cada botón del teclado esta por un lado conectado a un renglón y a una columna, esto facilitará su identificación. Por ejemplo al presionar la tecla 3 estamos relacionando el renglón 2 con la columna 2 o en la tecla 4 renglón 1 con columna 0, como si fueran coordenadas.

Entonces lo que se debe hacer en el programa para identificar que tecla es la que se está pulsando, es probar cada combinación que se puede tener de renglón-columna.

PIC-C ofrece una librería para identificar el teclado KBD.c, esta librería esta creada para un teclado de 4x3 y es la que usamos.

Funciones importantes de la librería;

//// kbd_init() Must be called before any other function. Con esta función inicializamos el teclado y equivale a estar habilitando cada uno de los renglones.

//// c = kbd_getc(c) Will return a key value if pressed . Con esta function se captura el valor de la tecla y se asigna dicho valor a una variable que en este caso la llaman c.

Se usó el puerto B para poder usar las resistencias de pull-up del micro.

#else ////////////////////////////////////////////////// For the black keypad

#define COL0 (1 << 5) // la columna 0 a PB5

#define COL1 (1 << 6) CONEXIONES TECLADO

#define COL2 (1 << 7) NEGRO

Si el teclado es de 4x4 agregar otro define y asignarlo a PB0

#define ROW0 (1 << 1)

#define ROW1 (1 << 2) CONEXIONES TECLADO NEGRO

#define ROW2 (1 << 3)

#define ROW3 (1 << 4)

#define ALL_ROWS (ROW0|ROW1|ROW2|ROW3)

#define ALL_PINS (ALL_ROWS|COL0|COL1|COL2) HAY QUE AGREGAR OTRA COLUMNA

Y la forma de conexión que seguimos para el teclado .

Page 6: Cerradura Electrónica

Para la etapa de potencia se usó un tip 120 y un relevador, el tip se usó en saturación, con un beta de 250, configurado para soportar por lo menos 100 mA.

Botones

Hemos puesto botones para poder decidir entre cambiar de contraseña o continuar con la contraseña que previamente hemos definido y escogido, también necesitamos un botón para poder reiniciar el sistema cuando hayamos pasado el número de intentos que se tienen definidos, en nuestro caso, el número de intentos para poner una contraseña correcta es de 3 intentos.

Microcontrolador

El micro-controlador que ocupamos fue el PIC16F887, con el cual podremos hacer uso de nuestros puertos de entrada y salida para poder declararlos y poder hacer uso de ellos, así mismo también podemos hacer uso de nuestra memoria EEPROM en la cual almacenaremos nuestra contraseña de cuatro dígitos y podremos hacer las respectivas comparaciones para poder saber si la contraseña es correcta o incorrecta.

Display LCD

Por último haremos uso de un Display LCD para poder desplegar los dígitos que vamos ingresando a través de nuestro teclado matricial, así mismo lo que haremos será desplegar si la contraseña es correcta o incorrecta para poder conocer el estado de nuestro sistema, en caso de ser correcta se abrirá la puerta y en caso de ser incorrecta, nuestro sistema emitirá una alarma después de haber intentado

Page 7: Cerradura Electrónica

tres veces con una contraseña incorrecta y se bloqueará el sistema, teniendo que reiniciar el sistema con un botón que estará en otro sitio.

DESARROLLO DEL PROYECTO

Materiales:

Teclado matricial Resistencias Protoboard PIC16F887

3 Push Botton Relevador Bocina Display LCD

Descripción general

Por medio de un micro-controlador se desea elaborar una cerradura electrónica con sistema de alarma, haciendo uso de un teclado matricial, y un display lcd, los cuales permitirán ingresar y despegar la contraseña, la contraseña además podrá ser cambiada cuando se requiera o cuando el usuario quiera cambiar de contraseña con un botón oculto o que este en un lugar seguro.

Esquema

Anteriormente definimos cómo era el funcionamiento de nuestro código de programación, por medio de nuestro diagrama de flujo, ahora lo que haremos será definir el funcionamiento de nuestro hardware y cómo es que este nos permite hacer la conexión e integración de todos los elementos que intervienen en el proyecto.

Page 8: Cerradura Electrónica

Diagrama de Bloques

Diagrama de flujo:

Código

//Programa de una cerradura electrónica, con cambio de contraseña.

//DIRECTIVAS

#include <16f887.h>

#fuses put,nowdt,nolvp,nobrownout,noprotect,intrc_io

#use delay (clock=8000000)

#include <lcd.c> //librería de la lcd

#include <kbd.c> //librería del teclado matricial de 3x4

#byte OPTION_REG = getenv("SFR:OPTION_REG") // Referencia el registro OPTION_REG

#bit RBPU = OPTION_REG.7 // Referencia al bit 7 de OPTION_REG (RBPU)

#use fast_io(a)

#bit rele=0x05.7 //bit encargado de accionar el relé

Page 9: Cerradura Electrónica

#bit alarma=0x05.6 //bit encargado de la alarma

#byte caso=0x07 //Se declara el puerto C como una variable que se usará para toma de decisiones.

#bit cambiar=0x07.0

#bit continuar=0x07.1

int adress;

int i, leer, c=0, a;

char mander,clave[4], pass[4];

//Se declaran los fusibles, los delays, las interrupciones externas, y los contadores, se definen las variables con las que estaremos trabajando.

//FUNCIONES

inicializar(){

setup_adc_ports(NO_ANALOGS);

RBPU = 0; // Activar las resistencia pull-up del puerto B

lcd_init();

kbd_init();

set_tris_a(0b00111111);

set_tris_c(0b00000011);

leer=0;

i=0;

a=0;

rele=0;

alarma=0;

adress=0x00;

//Se define el bloque de las funciones, en el cual declararemos los puertos con los que estaremos trabajando y se inicializan todas las variables, como son el relevador, la alarma, la dirección para poder manejar la memoria EEPROM en dónde estaremos guardando nuestra contraseña, entre otras funciones.

Page 10: Cerradura Electrónica

//Lo que se hace en el siguiente bloque, es definir el programa principal, en el cual se estará declarando la forma en que está funcionando la cerradura electrónica, podemos ver que en este bloque de nuestro programa se define como va a ser ingresada la contraseña, la manera en que hace la comparación de la misma contraseña y cómo ingresarla y desplegarla en nuestro display lcd, al mismo tiempo, se puede ver la acción que se toma cuando la contraseña es correcta y cuando la contraseña es incorrecta.

void main(){

inicializar();

inicio:

while(true){

lcd_gotoxy(1,1);

printf (lcd_putc,"Elige Acción "); //despliegue del menú principal

lcd_gotoxy(1,2);

printf (lcd_putc,"cambia/continua");

switch(caso){ //Se lee el Puerto C para tomar una decisión(cambiar la contraseña, introducir contraseña para abrir, o seguir desplegando el menú de selección)

case 1:

printf(lcd_putc,"\f");

lcd_gotoxy(1,1);

printf(lcd_putc,"Bienvenido");

delay_ms(1000);

lcd_gotoxy(1,1);

printf(lcd_putc,"Configure su ");

lcd_gotoxy(1,2);

printf(lcd_putc,"Clave ");

delay_ms(1000);

Page 11: Cerradura Electrónica

a=1;

while(i<=3) //ciclo para introducir y grabar los datos de la contraseña y desplegarlos en el display.

{

lcd_gotoxy(1,1);

printf(lcd_putc,"Elige nuevo ");

lcd_gotoxy(1,2);

printf(lcd_putc,"digito %d: ",a);

mander=kbd_getc();

if(mander!=0){

lcd_gotoxy(10,2);

printf(lcd_putc,"%c ",mander);

delay_ms(1200);

pass[i]= mander;

write_eeprom(adress,pass[i]);

adress++;

i++;

a++;

printf(lcd_putc,"\f");

lcd_gotoxy(1,1);

printf(lcd_putc," Digito");

lcd_gotoxy(1,2);

printf(lcd_putc,"Guardado");

delay_ms(500);

printf(lcd_putc,"\f");

}

Page 12: Cerradura Electrónica

}

break;

case 2: // En este caso se lee la eeprom , se introduce la clave se compara con la clave guardada y toma la decisión de abrir o desplegar el error.

c++;

printf(lcd_putc,"\f");

adress=0x00;

for(i=0;i<=3;i++){

pass[i]=read_eeprom(adress);

adress++; //Leer eeprom

}

adress=0x00;

i=0;

a=1;

while(i<=3) //introducer clave

{

lcd_gotoxy(1,1);

printf(lcd_putc,"Introduce");

lcd_gotoxy(1,2);

printf(lcd_putc,"digito %d: ",a);

mander=kbd_getc();

if(mander!=0){

lcd_gotoxy(10,2);

printf(lcd_putc,"*");

Page 13: Cerradura Electrónica

delay_ms(1000);

clave[i]=mander;

i++;

a++;

}

}

if(pass[0]==clave[0] && pass[1]==clave[1] && pass[2]==clave[2] && pass[3]==clave[3] ){ //coparación

//while(true)

//{

printf(lcd_putc,"\f");

lcd_gotoxy(1,1);

printf(lcd_putc,"clave correcta");

c=0;

delay_ms(1000);

rele=1;

delay_ms(5000);

rele=0;

//}

}

else{

printf(lcd_putc,"\f");

lcd_gotoxy(1,1);

printf(lcd_putc,"clave incorrecta");

delay_ms(1200);

Page 14: Cerradura Electrónica

lcd_gotoxy(1,1);

if(c==3){

while(true){

alarma=1;

delay_ms(1500);

alarma=0;

printf(lcd_putc,"\f");

lcd_gotoxy(1,1);

printf(lcd_putc,"BLOQUEADO ");

lcd_gotoxy(1,2);

printf(lcd_putc,"REINICIE SISTEMA");

delay_ms(2000);

}

}

}

break;

default:

lcd_gotoxy(1,1);

printf(lcd_putc,"Elige Acción ");

lcd_gotoxy(1,2);

printf(lcd_putc,"cambia/continua");

goto inicio;

}

Page 15: Cerradura Electrónica

}

}

Ejemplo de cerradura electrónica en la vida diaria.

Page 16: Cerradura Electrónica

DIAGRAMAS, FOTOS Y RESULTADOS. A continuación podemos ver algunos de los diagramas y fotos de la práctica

que anteriormente hemos descrito:

Diagrama eléctrico.

Circuito de nuestra cerradura electrónica.

Page 17: Cerradura Electrónica

Teclado matricial con el que ingresaremos nuestra contraseña.

Funcionamiento de nuestro display mostrando la contraseña.

Elegir Acción (Cambiar contraseña o continuar con la contraseña actual)

Page 18: Cerradura Electrónica

RESULTADOS Y OBSERVACIONES INDIVIDUALES.

Martín Enrique Valdivia Mejía

Como resultado de esta práctica, pudimos desarrollar una cerradura electrónica con cambio de contraseña, la cual está compuesta de un teclado matricial para poder ingresar nuestra contraseña y también está compuesta de un display lcd, con el que podemos visualizar nuestra contraseña, este proyecto lo podemos utilizar para muchas aplicaciones, ya que el campo de la seguridad es muy amplio hoy en día, podemos implementarlo en un cuarto, una casa, una oficina, una caja fuerte, o en cualquier lugar en donde se requiera de una seguridad mayor que solo una llave.

Tuvimos complicaciones a la hora de hacer el código y saber cómo hacer la lógica del programa, ya que tuvimos que aprender a hacer la comparación del carácter y hacer que este fuera posible compararse con la contraseña que ingresa el usuario.

Héctor Noguez Cruz

Tuvimos un poco de problemas con la estructura del programa, al meter el cambio de contraseña y no querer mover el uso del teclado matricial del puerto B, ya que en un inicio teníamos planeado usar una interrupción externa para el cabio de clave, esto se resolvió con el uso de un switch case. Otro problema fue identificar el tipo de variable que nos avienta el teclado matricial tanto para poder guardarlo como para poder compararlo, por último al momento de armar el modelo físico tuvimos conflictos con los pines libres del puerto C que usamos para el switch case ya que no los habíamos aterrizado y mandaban unos falsos, en general fue un proyecto bastante enriquecedor, fue un buen reto aún cuando parece sencillo, mr guataría aplicar este proyecto en la puerta de mi habitación.

BIBLIOGRAFÍACompilador C-Ccs y Simulador Proteus para Microcontroladores PIC.