Alram Keamanan Berangkas

Alram Keamanan Berangkas

#include

#include

#define SS_PIN 53

#define RST_PIN 2

#define SENSOR_PIN 12

#include

#include

#include //http://www.arduino.cc/playground/uploads/Code/Password.zip

#include //http://www.arduino.cc/playground/uploads/Code/Keypad.zip

#define CAYENNE_PRINT Serial // Comment this out to disable prints and save space

#include

#define EspSerial Serial1

#define VIRTUAL_CHANNEL 1

// WiFi network info.
char ssid[] = “”;
char wifiPassword[] = “”;

// Cayenne authentication info. This should be obtained from the Cayenne Dashboard.
char username[] = “”;
char passwordCayenne[] = “”;
char clientID[] = “”;

MFRC522 rfid(SS_PIN, RST_PIN); // Instance of the class
MFRC522::MIFARE_Key key;

byte nuidPICC[3];
String uid=””;

// Set the LCD address to 0x27 for a 16 chars and 2 line display
LiquidCrystal_I2C lcd(0x27, 16, 2);
Password password = Password( “1234” );

const byte ROWS = 4;
const byte COLS = 3;
String passKode=””;
int relay = 13;
int buzzer = 32;

char keys[ROWS][COLS] = {
{‘1’, ‘2’, ‘3’},
{‘4’, ‘5’, ‘6’},
{‘7’, ‘8’, ‘9’},
{‘*’, ‘0’, ‘#’}
};
byte rowPins[ROWS] = { 9,8,7,6 };// Connect keypad ROW0, ROW1, ROW2 and ROW3 to these Arduino pins.
byte colPins[COLS] = { 5,4,3, };// Connect keypad COL0, COL1 and COL2 to these Arduino pins.

// Create the Keypad
Keypad keypad = Keypad( makeKeymap(keys), rowPins, colPins, ROWS, COLS );

int proses=1;
int state=0;

ESP8266 wifi(&EspSerial);

void setup()
{
koneksi();
pinMode(buzzer, OUTPUT);
digitalWrite(buzzer, LOW);

//———————————-RFID
Serial.begin(9600);

SPI.begin(); // Init SPI bus
rfid.PCD_Init(); // Init MFRC522
for (byte i = 0; i < 6; i++) {
key.keyByte[i] = 0xFF;
}

//————————————–
pinMode(relay, OUTPUT);
digitalWrite(relay, HIGH);
// initialize the LCD
lcd.begin();
keypad.addEventListener(keypadEvent); //add an event listener for this keypad

// Turn on the blacklight and print a message.
lcd.backlight();
lcd.setCursor(0,0);
lcd.print(“Selamat Datang”);
lcd.setCursor(0,1);
lcd.print(“Scan Kartu Anda”);
}

void loop()
{

checkSensor();
if(proses == 1){
checkRfid();
}
//—————————
else if(proses == 2){
keypad.getKey();
}
else{

}
}

void checkRfid(){
uid = “”;
// Look for new cards
if ( ! rfid.PICC_IsNewCardPresent())
return;

// Verify if the NUID has been readed
if ( ! rfid.PICC_ReadCardSerial())
return;

MFRC522::PICC_Type piccType = rfid.PICC_GetType(rfid.uid.sak);

// Check is the PICC of Classic MIFARE type
if (piccType != MFRC522::PICC_TYPE_MIFARE_MINI &&
piccType != MFRC522::PICC_TYPE_MIFARE_1K &&
piccType != MFRC522::PICC_TYPE_MIFARE_4K) {
return;
}

if (rfid.uid.uidByte[0] != nuidPICC[0] ||
rfid.uid.uidByte[1] != nuidPICC[1] ||
rfid.uid.uidByte[2] != nuidPICC[2] ||
rfid.uid.uidByte[3] != nuidPICC[3] ) {
//Serial.println(F(“A new card has been detected.”));

// Store NUID into nuidPICC array
for (byte i = 0; i < 4; i++) {
  nuidPICC[i] = rfid.uid.uidByte[i];
}

printHex(rfid.uid.uidByte, rfid.uid.size);
printDec(rfid.uid.uidByte, rfid.uid.size);
if(uid == "513722945"){
  digitalWrite(buzzer, LOW); //buz mati
  lcd.clear();
  lcd.setCursor(0,0);
  lcd.print("Scan Sukses");
  lcd.setCursor(0,1);
  lcd.print("Masukan Password");
  delay(1000);
  proses = 2;
  passKode="";
  state = 0;      
}
else{
  lcd.clear();
  lcd.setCursor(0,0);
  lcd.print("Kartu Salah");
  lcd.setCursor(0,1);
  lcd.print("Scan Ulang Kartu");
  digitalWrite(buzzer, HIGH);
  delay(2000);

  lcd.clear();
  lcd.setCursor(0,0);
  lcd.print("Selamat Datang");
  lcd.setCursor(0,1);
  lcd.print("Scan Kartu Anda");
}

}
//else Serial.println(F(“Card read previously.”));

// Halt PICC
rfid.PICC_HaltA();

// Stop encryption on PCD
rfid.PCD_StopCrypto1();
}

void koneksi(){

EspSerial.begin(115200);
delay(10);
Cayenne.begin(username, passwordCayenne, clientID, wifi, ssid, wifiPassword);

}

void keypadEvent(KeypadEvent eKey){
switch (keypad.getState()){
case PRESSED:
digitalWrite(buzzer, LOW);
state = state + 1;
if(state <= 1){ lcd.clear(); lcd.setCursor (0,0); lcd.print(“Tekan # “); } else{ lcd.clear(); lcd.setCursor (0,0); lcd.print(“Password Anda :”); } if(state > 1){
lcd.setCursor (0,1);
passKode+=”“; lcd.print(passKode); } switch (eKey){ case ‘‘: checkPassword(); break;
case ‘#’:
passKode=””;
lcd.clear();
lcd.setCursor (0,0);
lcd.print(“Password Anda :”);
password.reset();
digitalWrite(buzzer, LOW);
break;
default: password.append(eKey);
}
}
}

int previousState = -1;
int currentState = -1;
unsigned long previousMillis = 0;

void checkSensor()
{
unsigned long currentMillis = millis();
// Check sensor data every 250 milliseconds
if (currentMillis – previousMillis >= 250) {
// Check the sensor state and send data when it changes.
currentState = digitalRead(SENSOR_PIN);
if (currentState != previousState) {
Cayenne.virtualWrite(VIRTUAL_CHANNEL, currentState);
previousState = currentState;
if(currentState ==1){
digitalWrite(buzzer, HIGH); //buz hidup
}else{
//digitalWrite(buzzer, LOW);
}

}
    previousMillis = currentMillis;

}
}

void checkPassword(){
if (password.evaluate()){
digitalWrite(buzzer, LOW);
lcd.clear();
lcd.setCursor(0,0);
lcd.print(“Password Cocok”);
lcd.setCursor(0,1);
lcd.print(“Terima Kasih”);
digitalWrite(relay, LOW);
Cayenne.virtualWrite(5, 1, “digital_sensor”, “d”);
passKode=””;
password.reset();
delay(3000);
lcd.clear();
lcd.setCursor(0,0);
lcd.print(“Pintu Terbuka”);
delay(5000);
lcd.clear();
digitalWrite(relay, HIGH);
Cayenne.virtualWrite(5, 0, “digital_sensor”, “d”);
lcd.setCursor(0,0);
lcd.print(“Selamat Datang”);
lcd.setCursor(0,1);
lcd.print(“Scan Kartu Anda”);
state = 0;
proses = 1;
//Add code to run if it works
}else{
lcd.clear();
lcd.setCursor(0,0);
lcd.print(“Password Salah”);
digitalWrite(relay, HIGH);
digitalWrite(buzzer, HIGH);
delay(3000);
state = 0;
proses = 1;
lcd.setCursor(0,0);
lcd.print(“Selamat Datang”);
lcd.setCursor(0,1);
lcd.print(“Scan Kartu Anda”);

}
}

void printHex(byte *buffer, byte bufferSize) {
for (byte i = 0; i < bufferSize; i++) {
Serial.print(buffer[i] < 0x10 ? ” 0″ : ” “);
Serial.print(buffer[i], HEX);

}
}

void printDec(byte *buffer, byte bufferSize) {
for (byte i = 0; i < bufferSize; i++) {
Serial.print(buffer[i] < 0x10 ? ” 0″ : ” “);
Serial.print(buffer[i], DEC);
uid += buffer[i];
}
}

int statusrelay =digitalRead(relay);

void balikKeAwal(){
if(statusrelay == 1)
{
delay(3000);
digitalWrite(relay, HIGH);
Cayenne.virtualWrite(6, 0, “digital_sensor”, “d”);
lcd.clear();
} proses = 1;
state = 0;
}

void autoLock(){
lcd.print(F(“AutoLock After”));
for(int i=5; i>0; i–){
lcd.setCursor (0,1); lcd.print(i);
delay (1000);
}
}

jika ada kendala bisa diskusi di : 085369237896 (mas fajar)