#include <SPI.h>
#include <RFID.h>
#include <Servo.h>
#include "pitches.h"
#include <LiquidCrystal_I2C.h>
#include <Wire.h>
// definio do RFID
RFID rfid(10,5);
byte emaomos[5] = {0xDE,0x1F,0x47,0xC9,0x4F}; // Marcelo Moraes (e+mao+mos)
// coloque aqui seus outros cartes permitidos
// declao do LCD, endereo e tipo
LiquidCrystal_I2C lcd(0x27,20,4);// declara LCD, endereo e tipo
byte serNum[5];
byte data[5];
// definio das melodias de acesso/boas vindas e rejeio/erro
int access_melody[] = {NOTE_G4,0,NOTE_A4,0, NOTE_B4,0,NOTE_A4,0,NOTE_B4,0, NOTE_C5,0};
int access_noteDurations[] = {8,8,8,8,8,4,8,8,8,8,8,4};
int fail_melody[] = {NOTE_G2,0,NOTE_F2,0,NOTE_D2,0};
int fail_noteDurations[] = {8,8,8,8,8,4};
// definio dos pinos do LED, Buzzer e Servo-motor
int LED_access = 2;
int LED_intruder = 3;
int speaker_pin = 8;
int servoPin = 9;
// definio do servo-motor
Servo doorLock;
void setup(){
doorLock.attach(servoPin); // vinculando servo-motor ao pino
Serial.begin(9600); // inicializao da comunicao serial
lcd.init(); // inicializa o LCD
lcd.backlight();
lcd.clear();// limpa LCD
SPI.begin(); // inicializao da comunicao SPI para o RFID
rfid.init(); // inicializao do RFID
Serial.println("+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++");
Serial.println("+ http://arduinobymyself.blogspot.com.br +");
Serial.println("+ Arduino Sistema de Segurana com o RFID: MFRC522-AN +");
Serial.println("+ Mdulo RFID iniciado no modo de leitura automtica, Esperando por um carto...=");
Serial.println("+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++");
delay(1000);
pinMode(LED_access,OUTPUT);
pinMode(LED_intruder,OUTPUT);
pinMode(speaker_pin,OUTPUT);
pinMode(servoPin,OUTPUT);
}
void loop(){
lcd.clear();
lcd.noBacklight();
// aqui voce vai criar uma varivel para cada usurio
// INICIALDONOME_card ou CODIGO_card
boolean emaomos_card = true; // meu carto
if (rfid.isCard()){ // encontrado carto vlido
if (rfid.readCardSerial()){ // faz a leitura do carto
delay(1000);
data[0] = rfid.serNum[0]; // armazena o nmero serial
data[1] = rfid.serNum[1];
data[2] = rfid.serNum[2];
data[3] = rfid.serNum[3];
data[4] = rfid.serNum[4];
}
//rfid.halt(); // RFID para standby
lcd.backlight();
lcd.setCursor(0,0);
lcd.print(" ID encontrado:");
//Serial.print("Cartao encontrado - code:");
lcd.setCursor(0,1);
lcd.print(" ");
if(data[0] < 16){
lcd.print("0");
}
lcd.print(data[0],HEX);
if(data[1] < 16){
lcd.print("0");
}
lcd.print(data[1],HEX);
if(data[2] < 16){
lcd.print("0");
}
lcd.print(data[2],HEX);
if(data[3] < 16){
lcd.print("0");
}
lcd.print(data[3],HEX);
if(data[4] < 16){
lcd.print("0");
}
lcd.print(data[4],HEX);
for(int i=0; i<5; i++){
if(data[i] != emaomos[i]) emaomos_card = false; // se no for meu carto, coloca como falso
// aqui voc pode verificar os outros cartes permitidos
}
Serial.println();
if (emaomos_card){ // se um carto foi encontrado
lcd.setCursor(0,2);
lcd.print(" Ola Marcelo!");
//Serial.println("Ola Marcelo!"); // imprime mensagem
for (int i = 0; i < 12; i++){ // toca msica de boas vindas
int access_noteDuration = 1000/access_noteDurations[i];
tone(speaker_pin, access_melody[i],access_noteDuration);
int access_pauseBetweenNotes = access_noteDuration * 1.30;
delay(access_pauseBetweenNotes);
noTone(speaker_pin);
}
}
/*
//analise dos outros cartes
else if(USER_card// ponha seus outros usuarios aqui){
lcd.setCursor(0,3);
lcd.print("Ola NOME_DE_USUARIO");
//Serial.println("Ola NOME_DE_USUARIO");
for (int i = 0; i < 12; i++){
int access_noteDuration = 1000/access_noteDurations[i];
tone(speaker_pin, access_melody[i],access_noteDuration);
int access_pauseBetweenNotes = access_noteDuration * 1.30;
delay(access_pauseBetweenNotes);
noTone(speaker_pin);
}
}
*/
else{ // se um carto desconhecido foi emcontrado
lcd.setCursor(0,2);
lcd.print(" ID nao reconhecido!");
lcd.setCursor(0,3);
lcd.print(" Acesso Negado!");
//Serial.println("Cartao nao reconhecido! Contacte o administrador!"); // imprime mensagem
digitalWrite(LED_intruder, HIGH); // acende LED vermelho
for (int i = 0; i < 6; i++){ // toca msica de rejeio de usurio
int fail_noteDuration = 1000/fail_noteDurations[i];
tone(speaker_pin, fail_melody[i],fail_noteDuration);
int fail_pauseBetweenNotes = fail_noteDuration * 1.30;
delay(fail_pauseBetweenNotes);
noTone(speaker_pin);
}
delay(1000);
digitalWrite(LED_intruder, LOW); // apaga LED vermelho
}
if (emaomos_card){// adicione os outros usurios com um ou logico ||
// mensagem de boas vindas e permisso de acesso
lcd.setCursor(0,2);
lcd.print(" Acesso Garantido!");
lcd.setCursor(0,3);
lcd.print(" Seja bem Vindo!");
//Serial.println("Acesso garantido!... Seja bem vindo as dependencias do ArduinoByMySelf!");
digitalWrite(LED_access,HIGH); // acende LED verde
doorLock.write(180); // libera porta
delay(5000); // espera
doorLock.write(0); // trava porta
digitalWrite(LED_access,LOW); // apaga LED verde
}
Serial.println();
delay(500);
rfid.halt();
lcd.noBacklight();
}
}
Thanks to .








Comments