Вы находитесь на странице: 1из 10

#include <Password.

h>
#include<Wire.h>
#include <SPI.h>
#include <SD.h>
File myFile;
#include <DS3231.h>
#include <Adafruit_Fingerprint.h>
#include <SoftwareSerial.h>
DS3231 rtc(SDA, SCL);
#include <Keypad.h>
Password password = Password("12345");
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd (0x27,16,2);
SoftwareSerial mySerial(13,10);
Adafruit_Fingerprint finger = Adafruit_Fingerprint(&mySerial);
const int BOTON=24;
int val;
int huella=1;
int ID_reg1 = 1;
int ID_reg2 = 2;
int getFingerprintIDez();
int dlugosc = 5;
int buzzer = 10;
int ledRed = 11;
int ledGreen = 12;
int ilosc;
const byte ROWS = 4;
const byte COLS = 4;
char keys[ROWS][COLS] = {
{'1','2','3','A'},
{'4','5','6','B'},
{'7','8','9','C'},
{'*','0','#','D'}
};
byte rowPins[ROWS] = { 9,8,7,6 };
byte colPins[COLS] = { 5,4,3,2, };
Keypad keypad = Keypad( makeKeymap(keys), rowPins, colPins, ROWS, COLS );
void setup()
{
Serial.begin(9600);
Serial.println("Prueba de seguridad");
keypad.addEventListener(keypadEvent);
finger.begin(57600);
pinMode(BOTON,INPUT);
pinMode(ledRed, OUTPUT);
pinMode(ledGreen, OUTPUT);
pinMode(buzzer, OUTPUT);
digitalWrite(ledRed, HIGH);
digitalWrite(ledGreen, LOW);
Serial.begin(115200);
SD.begin(53);
rtc.begin();
myFile = SD.open("archivo.txt", FILE_WRITE); //Create a new file on the SD card
named before
myFile.print("Door lock system started at ");
myFile.print(rtc.getTimeStr()); myFile.print(" and day ");
myFile.print(rtc.getDateStr());
myFile.println(" ");myFile.println(" ");
myFile.close();
lcd.init();
lcd.backlight();
lcd.clear();
lcd.setCursor(0,0);
lcd.print(" Presione cualquier ");
lcd.setCursor(0,1);
lcd.print("Tecla");
if (finger.verifyPassword()) {
Serial.println("");
} else {
Serial.println("");
while (1);
}
Serial.println("Waiting for valid finger...");
}

void loop()
{
char key=keypad.getKey();
val=digitalRead(BOTON);
if(val==LOW){
keypad.getKey();
if(key=='1') {
Password password = Password("54123");
lcd.clear();
lcd.setCursor(0,0);
lcd.print("Usuario 1");
lcd.setCursor(0,1);
lcd.print("Bienvenido");
delay(2000);
lcd.setCursor(0,0);
lcd.print("Introduzca");
lcd.setCursor(0,1);
lcd.print("Contraseña");
KeypadEvent eKey ();
}
if(key=='2') {
Password password = Password("852456");
lcd.clear();
lcd.setCursor(0,0);
lcd.print("Usuario 2");
lcd.setCursor(0,1);
lcd.print("Bienvenido");
delay(2000);
lcd.setCursor(0,0);
lcd.print("Introduzca");
lcd.setCursor(0,1);
lcd.print("Contraseña");
KeypadEvent eKey ();
}
if(key=='3') {
Password password = Password("852456");
lcd.clear();
lcd.setCursor(0,0);
lcd.print("Usuario 3");
lcd.setCursor(0,1);
lcd.print("Bienvenido");
delay(2000);
lcd.setCursor(0,0);
lcd.print("Introduzca");
lcd.setCursor(0,1);
lcd.print("Contraseña");
KeypadEvent eKey ();
}
if(key=='4') {
Password password = Password("852456");
lcd.clear();
lcd.setCursor(0,0);
lcd.print("Usuario 4");
lcd.setCursor(0,1);
lcd.print("Bienvenido");
delay(2000);
lcd.setCursor(0,0);
lcd.print("Introduzca");
lcd.setCursor(0,1);
lcd.print("Contraseña");
KeypadEvent eKey ();
}
if(key=='5') {
Password password = Password("852456");
lcd.clear();
lcd.setCursor(0,0);
lcd.print("Usuario 5");
lcd.setCursor(0,1);
lcd.print("Bienvenido");
delay(2000);
lcd.setCursor(0,0);
lcd.print("Introduzca");
lcd.setCursor(0,1);
lcd.print("Contraseña");
KeypadEvent eKey ();
}
if(key=='6') {
Password password = Password("852456");
lcd.clear();
lcd.setCursor(0,0);
lcd.print("Usuario 6");
lcd.setCursor(0,1);
lcd.print("Bienvenido");
delay(2000);
lcd.setCursor(0,0);
lcd.print("Introduzca");
lcd.setCursor(0,1);
lcd.print("Contraseña");
KeypadEvent eKey ();
}
if(key=='7') {
Password password = Password("852456");
lcd.clear();
lcd.setCursor(0,0);
lcd.print("Usuario 7");
lcd.setCursor(0,1);
lcd.print("Bienvenido");
delay(2000);
lcd.setCursor(0,0);
lcd.print("Introduzca");
lcd.setCursor(0,1);
lcd.print("Contraseña");
KeypadEvent eKey ();
}
if(key=='8') {
Password password = Password("852456");
lcd.clear();
lcd.setCursor(0,0);
lcd.print("Usuario 8");
lcd.setCursor(0,1);
lcd.print("Bienvenido");
delay(2000);
lcd.setCursor(0,0);
lcd.print("Introduzca");
lcd.setCursor(0,1);
lcd.print("Contraseña");
KeypadEvent eKey ();
}
if(key=='9') {
Password password = Password("852456");
lcd.clear();
lcd.setCursor(0,0);
lcd.print("Usuario 9");
lcd.setCursor(0,1);
lcd.print("Bienvenido");
delay(2000);
lcd.setCursor(0,0);
lcd.print("Introduzca");
lcd.setCursor(0,1);
lcd.print("Contraseña");
KeypadEvent eKey ();
}
if(key=='0') {
Password password = Password("852456");
lcd.clear();
lcd.setCursor(0,0);
lcd.print("Usuario 10");
lcd.setCursor(0,1);
lcd.print("Bienvenido");
delay(2000);
lcd.setCursor(0,0);
lcd.print("Introduzca");
lcd.setCursor(0,1);
lcd.print("Contraseña");
KeypadEvent eKey ();
}
}
if(val==HIGH){
getFingerprintIDez();
lcd.clear();
lcd.setCursor(0,0);
lcd.print("Insertar huella");
if(finger.fingerID==ID_reg1)
{ lcd.clear();
lcd.setCursor(4,0);
lcd.print("Registro");
lcd.setCursor(3,1);
lcd.print("encontrado");
delay(1000);
lcd.clear();
lcd.setCursor(2,0);
lcd.print("Bienvenido !!");
lcd.setCursor(6,1);
lcd.print("Josue 1");
myFile = SD.open("archivo.txt", FILE_WRITE);
myFile.print(rtc.getDateStr()); myFile.print(" -- ");
myFile.print(rtc.getTimeStr());
myFile.println("-- Usuario 1: Josue Ingreso a casa con huella digital");
myFile.close();
digitalWrite(ledRed, LOW);
digitalWrite(ledGreen, HIGH);
finger.fingerID=0;
setup();
}

if(finger.fingerID==ID_reg2)
{

lcd.clear();
lcd.setCursor(4,0);
lcd.print("Registro");
lcd.setCursor(3,1);
lcd.print("encontrado");
delay(1000);
lcd.clear();
lcd.setCursor(2,0);
lcd.print("Bienvenido !!");
lcd.setCursor(6,1);
lcd.print("Josue 2");
myFile = SD.open("archivo.txt", FILE_WRITE);
myFile.print(rtc.getDateStr()); myFile.print(" -- ");
myFile.print(rtc.getTimeStr());
myFile.println("-- Usuario 2: Josue Ingreso a casa con huella digital");
myFile.close();
digitalWrite(ledRed, LOW);
digitalWrite(ledGreen, HIGH);
finger.fingerID=0;
setup();
}

delay(50);
}
}

uint8_t getFingerprintID() {
uint8_t p = finger.getImage();
switch (p) {
case FINGERPRINT_OK:
Serial.println("Imagen tomado");
break;
case FINGERPRINT_NOFINGER:
Serial.println("Dedo no detectado");
return p;
case FINGERPRINT_PACKETRECIEVEERR:
Serial.println("Communication error");
return p;
case FINGERPRINT_IMAGEFAIL:
Serial.println("Imaging error");
return p;
default:
Serial.println("Unknown error");
return p;
}

p = finger.image2Tz();
switch (p) {
case FINGERPRINT_OK:
Serial.println("Image converted");
break;
case FINGERPRINT_IMAGEMESS:
Serial.println("Image too messy");
return p;
case FINGERPRINT_PACKETRECIEVEERR:
Serial.println("Communication error");
return p;
case FINGERPRINT_FEATUREFAIL:
Serial.println("Could not find fingerprint features");
return p;
case FINGERPRINT_INVALIDIMAGE:
Serial.println("Could not find fingerprint features");
return p;
default:
Serial.println("Unknown error");
return p;
}

p = finger.fingerFastSearch();
if (p == FINGERPRINT_OK) {
Serial.println("Found a print match!");
} else if (p == FINGERPRINT_PACKETRECIEVEERR) {
Serial.println("Communication error");
return p;
} else if (p == FINGERPRINT_NOTFOUND) {
Serial.println("Did not find a match");
return p;
} else {
Serial.println("Unknown error");
return p;
}

Serial.print("Found ID #"); Serial.print(finger.fingerID);


Serial.print(" with confidence of "); Serial.println(finger.confidence);
}

int getFingerprintIDez() {
uint8_t p = finger.getImage();
if (p != FINGERPRINT_OK) return -1;

p = finger.image2Tz();
if (p != FINGERPRINT_OK) return -1;

p = finger.fingerFastSearch();
if (p != FINGERPRINT_OK) return -1;
Serial.print("Found ID #");
Serial.print(finger.fingerID);
Serial.print(" with confidence of ");
Serial.println(finger.confidence);

if(finger.fingerID==ID_reg1)
{
Serial.println("Bienvenido usuario 1 ");
}

if(finger.fingerID==ID_reg2)
{
Serial.println("Bienvenido usuario 2 ");
}

return finger.fingerID;

void keypadEvent(KeypadEvent eKey)


{
switch (keypad.getState())
{
case PRESSED:

int i;
for( i = 1; i <= 1; i++ )
{
digitalWrite(buzzer, HIGH);
delay(200);
digitalWrite(buzzer, LOW);
delay(100);
}

Serial.print("Pressed: ");
Serial.println(eKey);

switch (eKey)
{
/*
case '#':
break;

case '*':
break;
*/

default:
ilosc=ilosc+1;
password.append(eKey);
}
//Serial.println(ilosc);

if(ilosc == 1)
{
lcd.clear();
lcd.setCursor(1,0);
lcd.print(" < PIN >");
lcd.setCursor(0,1);
lcd.print("*_");
}
if(ilosc == 2)
{
lcd.clear();
lcd.setCursor(1,0);
lcd.print(" < PIN >");
lcd.setCursor(0,1);
lcd.print("**_");
}
if(ilosc == 3)
{
lcd.clear();
lcd.setCursor(1,0);
lcd.print(" < PIN >");
lcd.setCursor(0,1);
lcd.print("***_");
}
if(ilosc == 4)
{
lcd.clear();
lcd.setCursor(1,0);
lcd.print(" < PIN >");
lcd.setCursor(0,1);
lcd.print("****_");
}
if(ilosc == 5)
{
lcd.clear();
lcd.setCursor(1,0);
lcd.print(" < PIN >");
lcd.setCursor(0,1);
lcd.print("*****_");
}
if(ilosc == 6)
{
lcd.clear();
lcd.setCursor(1,0);
lcd.print(" < PIN >");
lcd.setCursor(0,1);
lcd.print("******_");
}
if(ilosc == 7)
{
lcd.clear();
lcd.setCursor(1,0);
lcd.print(" < PIN >");
lcd.setCursor(0,1);
lcd.print("*******_");
}
if(ilosc == 8)
{
lcd.clear();
lcd.setCursor(1,0);
lcd.print(" < PIN >");
lcd.setCursor(0,1);
lcd.print("********");
}
if(ilosc == dlugosc)
{
delay(250);
checkPassword();
ilosc = 0;
}
}
}

void checkPassword()
{
if (password.evaluate())
{
int i;
for( i = 1; i <= 3; i++ )
{
digitalWrite(buzzer, HIGH);
delay(120);
digitalWrite(buzzer, LOW);
delay(70);
}
ilosc = 0;
password.reset();
Serial.println("Correcto");
digitalWrite(ledRed, LOW);
digitalWrite(ledGreen, HIGH);
lcd.clear();
lcd.setCursor(0,1);
lcd.print("<<PIN CORRECTO>>");
Serial.print(rtc.getDOWStr());
Serial.print(" ");
Serial.print(rtc.getDateStr());
Serial.print(" -- ");
Serial.println(rtc.getTimeStr());
myFile = SD.open("archivo.txt", FILE_WRITE);
myFile.print(rtc.getDateStr()); myFile.print(" -- ");
myFile.print(rtc.getTimeStr());
myFile.println("-- Ingresaste a casa");
myFile.close();
delay(2000);
digitalWrite(ledGreen, LOW);
digitalWrite(ledRed, HIGH);
lcd.clear();
lcd.setCursor(0,0);
lcd.print(" *Bienvenido*");
lcd.setCursor(0,1);
lcd.print("FAVOR ENTRE PIN");
}
else
{
int i;
for( i = 1; i <= 1; i++ )
{
digitalWrite(buzzer, HIGH);
delay(300);
digitalWrite(buzzer, LOW);
delay(100);
}
ilosc = 0;
password.reset();
Serial.println("Error");
digitalWrite(ledGreen, LOW);
digitalWrite(ledRed, HIGH);
digitalWrite(buzzer, HIGH);
lcd.clear();
lcd.setCursor(0,1);
lcd.print("<<PIN ERRONEO>>");
Serial.print(rtc.getDOWStr());
Serial.print(" ");
Serial.print(rtc.getDateStr());
Serial.print(" -- ");
Serial.println(rtc.getTimeStr());
myFile = SD.open("archivo.txt", FILE_WRITE);
myFile.print(rtc.getDateStr()); myFile.print(" -- ");
myFile.print(rtc.getTimeStr());
myFile.println("-- Alguien intento acceder");
myFile.close();
delay(2000);
digitalWrite(buzzer, LOW);
lcd.clear();
lcd.setCursor(0,0);
lcd.print(" *Bienvenido*");
lcd.setCursor(0,1);
lcd.print("FAVOR ENTRE PIN");
}
}

Вам также может понравиться