1. 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
2. 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.
3. 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
4. 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
5. 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 .
6. 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
7. 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.
8. 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é
9. #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.
10. //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);
11. 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");
}
12. }
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,"*");
16. 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.
17. 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)
18. 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ÍA
Compilador C-Ccs y Simulador Proteus para Microcontroladores PIC.