Gente posteo este proyecto que lo postié en CCS (es de Agosto 2007) pero nunca aquí bien explicado.
Ahí va:
// ---------------------------------- Explicación ---------------------------------- \\
Notas: se interacciona por un teclado de 3x4 y una pantalla LCD de 1x16
Tenemos 1 menú principal con 2 opciones
0 Clave de entrada
1 Menu de opciones secundario
0-Claves de entrada:
Tiene 2 opciones
0-Simple
1-Temporal
0:Se pide una clave válida de 6 dígitos
se comprueba su validez y si es correcta se abre la puerta
si es incorrecta se avisa: En los 2 primeros fallos que la clave es incorrecta
Del fallo 3 hasta el 5 que en X fallos se activará la alarma
1:Se verifica si existe la posibilidad con una bandera.
Si existe se pide la clave y se da acceso.
si es incorrecta se avisa que en X fallos se activará la
alarma.
Durará una X cantidad de ingresos.
1- Menú de opciones secundario:
Tiene 2 opciones
0-Cambiar Clave
1-Ingreso admin
0-Cambiar Clave: sirve para cambiar las claves de entrada temporal,
simple o de administrador. Se pide la contraseña del administrador y luego si es correcta
se pide una nueva clave de x dígitos según la clave a cambiar. No se puede ingresar si la cuenta de errores es mayor a 0.
1-Ingreso admin: Sirve para ingresar de modo rápido ante cualquier inconveniente. Debe usarse solo en ocasiones especiales.
Con el ingreso de administrador se borra el aviso si se activó la alarma en algún momento y se apaga la alarma si se activó por accidente u otro motivo.
Opciones de activación de alarma sonora:
Si la puerta permanece abierta por más de un determinado período:
1 - Comenzará un pitido intermitente por un tiempo (alarma por puerta abierta)
2 - Luego se activará de forma permanente la alarma general
Si se ingresa mal cualquier tipo de clave
1 - Las primeras 2 veces se avisará
2 - De la vez 3 a la 5 se dará un aviso lumínico, de texto y sonoro intermitente
3 - De la 5 en adelante se activará la alarma general.
Durante la alarma general
Se avisará que la única forma de desactivarla es por clave de administrador
Si no se ingresa dentro de un período de tiempo inicial
Se activará de forma permanente
Luego de un período prolongado se apagará automáticamente y dejará un aviso lumínico
Luego de la alarma general
Al presionar cualquier tecla se mostrará el aviso correspondiente
Solo se permitirá el ingreso al administrador para volver al funcionamiento normal
Las variables que se guardan en eeprom ante una falla de energía son:
Las claves:
clave_temp Por defecto 1234
clave_simple Por defecto 123456
clave_admin Por defecto 12345678
Y algunos estados:
num_clave_temp : Contiene el número de ingresos temporales restantes
alarm_flag : Contiene el valor de la bandera de alarma
Hardware:
Circuito de potencia.
1 x Transformador 220/12 500 mA
1 x LM7805 (para el circuito uC y LCD)
1 x LM7812 (para la potencia al motor) (depende del motor)
(Capacitores, diodos, resistencias, etc.)
(hacer con esto el conversor y regulador de voltaje AC/DC)
1 x motor de Compactera de computadora o similar con reducción
Circuito uC e interacción:
1 x Microcontrolador Pic 16F873
1 x Transistor: NPN BF337
1 x Teclado 3x4
1 x Display LCD con backlight 16x1
1 x fin de carrera para la puerta (lado interior)
1 x buzzer
(Capacitores, cristal, diodos, resistencias, leds, plaqueta, estaño, cables, conectores, etc. etc.)
Overall:
Cajitas para acomodar el sistema
x x Ingenio y habilidad manual para adaptar el motor a una cerradura
Nota: el sistema del motor se puede cambiar por un electroimán o cerradura tipo edificio que bien traba la cerradura
requerida (imaginación por favor) o que funcione como una puerta de edificio.
// ------------------------------------ PINOUTS ------------------------------------ \\
// Tener en cuenta que hay que poner la directiva
// NOLVP para que el pin B4 sea de salida.
//
// Conexiones: B0 -> D0 LCD/Columna 1 keypad
// B1 -> D1 LCD/Columna 2 keypad
// B2 -> D2 LCD/Columna 3 keypad
// B3 -> D3 LCD
// B4 -> D4 LCD/Fila A keypad
// B5 -> D5 LCD/Fila B keypad
// B6 -> D6 LCD/Fila C keypad
// B7 -> D7 LCD/Fila D keypad
// A0 -> RS LCD
// A1 -> RW LCD
// A2 -> E LCD
// A3 -> Apertura de puerta---------------------------1:Abre la puerta
// A4 -> Sensor de apertura de puerta-----------------0:Puerta Cerrada
// A5 -> Backlight via un transistor NMOS o NPN-------1:Activa el LED
// C2 -->Botón de apertura desde adentro
// C3 -> Alarma puerta
// C4 -> Led de activación de alarma 1(reseteable)
// C5 -->Alarma general
// C6 -> TX: Para el bootloader
// C7 -> RX: Para el bootloader
// Mclr -> Botoncito oculto de reset
// --------------------------------------------------------------------------------- \\
Palabras finales: el sistema fue probado durante varios meses hasta que me mudé y no lo instalé nuevamente por "fiaca".
Es muy útil para los despistados como yo que pierden llaves (razón principal por lo que me decidí a hacerlo)
Por las dudas yo agregué un botón oculto de reset a la pata correspondiente del uC. También se puede hacer de otras formas
pero es para evitar que si se cuelga el sistema por alguna razón haya que usar un destornillador, capici!?
Espero les sirva y agreguen lo que crean necesario. Yo pensé en enviar mails o hacer que un celu a tarjeta barateli llame por defecto
si se activaba la alarma general, pero no tenía sentido en mi edificio por la seguridad, aunque si uno viaja está bueno.
Arrivederci ragazzi!!!