Membuat sistem keamanan penguncian pintu dengan Selenoid Door Lock yang dikendalikan oleh RFID dan Password (Rev.0)
A.Bahan dan Module yang dibutuhkan
-1Unit Arduino Uno-Keypad Membrane 4x4
-1Unit Module RFID RC-522 + kartu/key chain
-1Unit Selenoid Door Lock (12V)
-1Unit Driver Selenoid Door Lock (
*bisa menggunakan driver motor DC L9110/L298
*bisa menggunakan Relay Module 5V 1 channel
*bisa menggunakan Transistor PNP (seri TIPxx)
(pada tutorial kali ini saya menggunakan Driver Motor DC L9110)
-1Unit LCD 1602 dengan i2C connection
-1 Unit Passive Buzzer/mini speaker
-Kabel Jumper secukupnya
Note : klik www.tokopedia.com/rajacell untuk mendapatkan semua kebutuhan module dalam project ini
B.Wiring
1.Wiring Module RFID RC-522 ke Arduino Uno* MOSI : Pin D11
* MISO : Pin D12
* SCK : Pin D13
* SS/SDA: Pin 10
* RST : Pin 9
* RQ : Tidak digunakan
* GND : Pin GND
* 3.3V : Pin 3.3V (awas jangan di sambung ke Pin 5V)
2.Wiring Module LCD 1602 i2C ke Arduino
* GND : Pin GND
* VCC : Pin 5V
* SDA : Pin A4
* SCL : Pin A5
3.Wiring Keypad Membrane Ke Arduino Uno
* Pin1 : Pin D6
* Pin2 : Pin D5
* Pin3 : Pin D4
* Pin4 : Pin D3
* Pin5 : Pin A3
* Pin6 : Pin A2
* Pin7 : Pin A1
* Pin8 : Pin A0
Perhatikan penomoran kabel keypad pada gambar dibawah ini :
Gunakan Single Row Male Header (seperti nampak pada gambar di samping keypad) untuk menghubung socket pada kabel keypad dengan port pin (Female Header) pada Board Arduino atau anda dapat menggunakan kabel jumper dupont jenis Male to Male untuk menghubungkanya.
4.Wiring Selenoid Door Lock & Motor Driver L9110 + Passive Buzzer
perhatikan gambar dibawah ini :
Dalam tes ini saya menggunakan Power dari USB PC/laptop sebagai Power Arduino Board.
Apabila anda ingin menggabung Power Selenoid dan Power Arduino Board maka Anda dapat menghubingkan kabel (+) dari Adaptor 12V ke Jack DC IN Arduino atau melalui pin Vin yang ada di sebelah Pin GND GND.
C.Library
-Library LiquidCrystal_I2C silahkan download disini.-Library RFID RC-522 silahkan download disini.
-Library Matrix Keypad silahkan download disini.
-Library Password silahkan download disini.
Setelah melakukan download semua library yang dibutuhkan kemudian ekstract menggunakan aplikasi Winrar/Winzip dan copy master folder yang ada di dalamnya ke dalam folder 'libraries' yang ada pada directory installer Arduino IDE.
Secara default ada di lokasi :
Windows 64bit = C:\Program Files (x86)\Arduino\libraries
Windows 32bit = C:\Program Files \Arduino\libraries
D.Sourch Code
Copy paste coding dibawah ini ke dalam Arduino IDE anda dan Upload ke Board Arduino Anda//Coding berikut dibuat oleh Dani untuk www.belajarduino.com //Semoga bermanfaat bagi yang sedang belajar RFID system //Support by RAJACELL - BEKASI //Semua module yang dibutuhkan dapat dibeli di www.tokopedia.com/rajacell /* Sambungan Module RFID RC-522 ke Arduino * MOSI: Pin 11 * MISO: Pin 12 * SCK : Pin 13 * SS/SDA: Pin 10 * RST: Pin 9 * RQ: Tidak digunakan */ //#include <EEPROM.h> #include <Wire.h> // i2C Conection Library #include <LiquidCrystal_I2C.h> //Memanggil i2C LCD Library #include <Password.h> //http://www.arduino.cc/playground/uploads/Code/Password.zip #include <Keypad.h> //http://www.arduino.cc/playground/uploads/Code/Keypad.zip #include <SPI.h> #include <RFID.h> #define SS_PIN 10 #define RST_PIN 9 RFID rfid(SS_PIN,RST_PIN); int serNum[5]; //Variable buffer Scan Card int cards[][5] = { //ID Kartu yang diperbolehkan masuk {141,125,2,197,55} }; bool access = false; LiquidCrystal_I2C lcd(0x3F, 16, 2); Password password = Password("1234"); //<-- TULIS PASSWORD SISTEM ANDA DISINI const byte ROWS = 4; // Four rows const byte COLS = 4; // columns // Define the Keymap char keys[ROWS][COLS] = { {'1','2','3','A'}, {'4','5','6','B'}, {'7','8','9','C'}, {'*','0','#','D'} }; byte rowPins[ROWS] = { 6,5,4,3 };// Connect keypad ROW0, ROW1, ROW2 and ROW3 to these Arduino pins. byte colPins[COLS] = { A3,A2,A1,A0, };// Connect keypad COL0, COL1 and COL2 to these Arduino pins. // Create the Keypad Keypad keypad = Keypad( makeKeymap(keys), rowPins, colPins, ROWS, COLS ); const int buzzer = 7; //Passive buzzer ke Pin D7 dan GND const int doorLock = 8; //Driver Selenoid Door Lock/Relay input ke pin D8 int alarm = 0; uint8_t alarmStat = 0; uint8_t maxError = 5; unsigned long previousMillis = 0; const long interval = 1000; uint8_t pwMode=0; uint8_t pwPos=0; void setup(){ Serial.begin(9600); lcd.begin(); SPI.begin(); rfid.init(); keypad.addEventListener(keypadEvent); //add an event listener for this keypad pinMode(doorLock, OUTPUT); digitalWrite(doorLock, HIGH); tone (buzzer,1200); lcd.setCursor (0,0); lcd.print(F(" RFID System ")); lcd.setCursor (0,1); lcd.print(F(" Control Access ")); delay (2000); lcd.clear(); noTone (buzzer); } void loop(){ keypad.getKey(); //Reading Keypad if (alarm >= maxError){ alarmStat = 1; } if (alarmStat == 0 && pwMode == 0){ lcd.setCursor (0,0); lcd.print(F(" -System Ready- ")); unsigned long currentMillis = millis(); //Membuat perubahan tulisan pada LCD tanpa menggunakan delay //Pada sistem stanby sama sekali tidak boleh ada delay untuk menghindari Keypad NGADAT if (currentMillis - previousMillis >= interval) { //previousMillis = currentMillis; lcd.setCursor (0,1); lcd.print(F(" Scan Your Card ")); } if (currentMillis - previousMillis >= (2*interval)) { previousMillis = currentMillis; lcd.setCursor (0,1); lcd.print(F(" Enter Password ")); } if(rfid.isCard()){ if(rfid.readCardSerial()){ Serial.print(rfid.serNum[0]); Serial.print(" "); Serial.print(rfid.serNum[1]); Serial.print(" "); Serial.print(rfid.serNum[2]); Serial.print(" "); Serial.print(rfid.serNum[3]); Serial.print(" "); Serial.print(rfid.serNum[4]); Serial.println(""); for(int x = 0; x < sizeof(cards); x++){ for(int i = 0; i < sizeof(rfid.serNum); i++ ){ if(rfid.serNum[i] != cards[x][i]) { access = false; break; } else { access = true; } } if(access) break; } } if(access){ Serial.println("Welcome!"); lcd.setCursor (0,0); lcd.print(F(" Akses diterima ")); lcd.setCursor (0,1); lcd.print("ID:"); lcd.print(rfid.serNum[0]); lcd.print(rfid.serNum[1]); lcd.print(rfid.serNum[2]); lcd.print(rfid.serNum[3]); lcd.print(rfid.serNum[4]); ACCEPT (); } else { alarm = alarm+1; Serial.println("Not allowed!"); lcd.setCursor (0,0); lcd.print(F(" Akses ditolak ")); lcd.setCursor (0,1); lcd.print("ID:"); lcd.print(rfid.serNum[0]); lcd.print(rfid.serNum[1]); lcd.print(rfid.serNum[2]); lcd.print(rfid.serNum[3]); lcd.print(rfid.serNum[4]); RIJECT (); } } //Coding berikut dibuat oleh Dani untuk www.belajarduino.com //Semoga bermanfaat bagi yang sedang belajar RFID system //Support by RAJACELL - BEKASI //Semua module yang dibutuhkan dapat dibeli di www.tokopedia.com/rajacell rfid.halt(); } if (alarmStat == 1) { lcd.setCursor (0,0); lcd.print(F("-System LOCKED- ")); lcd.setCursor (0,1); lcd.print(F(" Please Wait ")); for(int i=60; i>0; i--){ tone (buzzer,1800); lcd.setCursor (13,1); lcd.print(i); lcd.print(F(" "));delay (1000);} noTone (buzzer); alarmStat = 0; alarm = 0; } } //Coding berikut dibuat oleh Dani untuk www.belajarduino.com //Semoga bermanfaat bagi yang sedang belajar RFID system //Support by RAJACELL - BEKASI //Semua module yang dibutuhkan dapat dibeli di www.tokopedia.com/rajacell void keypadEvent(KeypadEvent eKey){ switch (keypad.getState()){ case PRESSED: Serial.print("Pressed: "); Serial.println(eKey); pwMode =1; pwPos=pwPos+1; if(pwPos==1){lcd.clear();} lcd.setCursor (0,0); lcd.print(F("Password Entered")); if(pwPos<5){lcd.setCursor (5+pwPos,1); lcd.print(F("*"));} switch (eKey){ case '*': checkPassword(); break; //case '#': password.reset(); break; default: password.append(eKey); } } } //Coding berikut dibuat oleh Dani untuk www.belajarduino.com //Semoga bermanfaat bagi yang sedang belajar RFID system //Support by RAJACELL - BEKASI //Semua module yang dibutuhkan dapat dibeli di www.tokopedia.com/rajacell void checkPassword(){ if (password.evaluate()){ Serial.println("Password OK"); lcd.setCursor (0,1); lcd.print(F(" -Accepted- ")); ACCEPT (); password.reset(); pwPos=0; //Add code to run if it works }else{ Serial.println("Password SALAH"); lcd.setCursor (0,1); lcd.print(F(" -Rejected- ")); alarm = alarm+1; RIJECT (); password.reset(); pwPos=0; //add code to run if it did not work } } //Coding berikut dibuat oleh Dani untuk www.belajarduino.com //Semoga bermanfaat bagi yang sedang belajar RFID system //Support by RAJACELL - BEKASI //Semua module yang dibutuhkan dapat dibeli di www.tokopedia.com/rajacell void ACCEPT () { digitalWrite(doorLock, LOW); tone (buzzer,900); delay(100); tone (buzzer,1200); delay(100); tone (buzzer,1800); delay(200); noTone(buzzer); delay(600); lcd.setCursor (0,0); lcd.print(F(" Silahkan Masuk ")); lcd.setCursor (0,1); lcd.print(F("AutoLock after ")); for(int i=5; i>0; i--){ lcd.setCursor (15,1); lcd.print(i); delay (1000); } digitalWrite(doorLock, HIGH); pwMode =0; lcd.clear();} //Coding berikut dibuat oleh Dani untuk www.belajarduino.com //Semoga bermanfaat bagi yang sedang belajar RFID system //Support by RAJACELL - BEKASI //Semua module yang dibutuhkan dapat dibeli di www.tokopedia.com/rajacell void RIJECT () { tone (buzzer,900); delay(200); noTone(buzzer); delay(200); tone (buzzer,900); delay(200); noTone (buzzer); delay(500); pwMode =0; lcd.clear(); }
E.Trial & Error
Pada Sketch Coding di atas saya menggunakan ID dari Kartu RFID saya sebagai Acces dan pastinya tidak akan berfungsi pada kartu chain RFID milik anda.Untuk awal apabila anda belum tahu urutan nomor kode dari kartu RFID anda maka Upload saja sketch diatas tanpa ada perubahan pada kode nomor RFID access nya.
Kemudian Running program dan tempelkan kartu RFID atau Key Chain RFID anda ke RFID Reader dan lihat angka yang nampak pada Serial Monitor atau LCD.
Catat nomor tersebut, kemudian Update nomor kode Access yang ada pada Sketch Coding diatas dengan nomor kartu RFID anda.Gunakan tanda koma (,) sebagai pemisah setian group angka.
Upload ulang sourch codenya ke dalam Arduino anda..
Terimakasih dan selamat mencoba.
Salam Dani Ardianto - Rajacell
ahirnya yg d tunggu tunggu dari kemarin di upload juga . thanks bang
BalasHapusIjin belajar gan
BalasHapusIlmu yg bermanfaat
Mau tanya untuk menambah kartu dan mengganti password pada keypad?
Trima kasih sebelumnya
Ijin belajar gan
BalasHapusIlmu yg bermanfaat
Mau tanya untuk menambah kartu dan mengganti password pada keypad?
Trima kasih sebelumnya
Komentar ini telah dihapus oleh pengarang.
BalasHapusI want to add more cards. How to do that?
BalasHapusSo wonderful. Thank you very much!
BalasHapusbut I have small problem, could you show me how to add one more RFID card? My house have 4 people so I need 4 card!
int cards[][5] = { //EXAMPLE, scan your UID Card first, open serial monitor
Hapus{111,111,111,111,111},
{222,222,222,222,222},
{333,333,333,333,333} //ETC
};
Hi add, I tried, but it still didn't work.
HapusCuold you show me code?
Thank you very much!
Komentar ini telah dihapus oleh pengarang.
Hapuskeren mas...
BalasHapustapi text di messagenya LCD nya tulisannya campur, (nope bs di edit)
some event indo, some event english.. hehe :D
sempet pusing juga pas coding error, LCD blink2 dan teks ngacak, setelah di koreksi baru bisa running
#include
#include
LiquidCrystal_I2C lcd(0x3F, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE); // <-------- address LCD 1602 I2C
sama disini:
void setup(){
Serial.begin(9600);
lcd.begin(); //<------- lbh ok lagi di beri keterangan untuk type lcd nya: lcd.begin (16,2);
SPI.begin();
rfid.init();
keypad.addEventListener(keypadEvent); //add an event listener for this keypad
About the RIJECT(); part does it supposed to be like that because it is in the library, or can it be spelled like this -> REJECT(); ?
BalasHapusThank you in advance.
mas kalo mau masukin pass sama id E-ktp itu di bagian kode yang mana ya ?
BalasHapuskalo bisa bantu saya belajar mas lewat video. mudah-mudahan saya dapat mengerti. ohh iya team creativnya bekasi mana ya mas ?
Gan, yg pakai rfid dan servo ada gak?
BalasHapusdoes not work
BalasHapusplease send me code..
Jual paket bahan bahannya dong
BalasHapusmas, klu mau buka dari dalem pke push button gmna cara nya ?
BalasHapusGan Cara benahin eror di koding seperti apa ?
BalasHapusHi add,
BalasHapusWhy don't we pairing it with S153 - TTP229 16 Key Capacitive Touch Keypad? Are they suitable?
Tks!
mas mau tanya kalau tekan # untuk hpus pasword malah hilang semua ya satu layar?
BalasHapusKalo mau beli satu paket, biayanya berapa gan?
BalasHapusMas mau tnya klo arduino nya pakek yg ARDUINO UNO R3 DIP kok tdk bisa
BalasHapusApa harus kodingnya ada yg dirubah??
Trimakasih
Gimana selenoid dan relay bisa di kasih tegangan nya. Masih bingung. Saran dong
BalasHapuspas bagian lcd.begin() gimana ya gan ?
BalasHapusCoba di kasih 16,2 gan.
HapusBang itu id kartu nya di coding bagian mana
BalasHapusexit status 1
BalasHapusKeypad.h: No such file or directory ? pleace hal.....
download library keypad
Hapusgan mau nanya dong, kalau misalnya kita ingin menambahkan output lagi gmna ya ? misal tiap kartu berbeda membuka pintu yang berbeda ??
BalasHapusterimakasih
Boleh minta WA boss?
BalasHapusKomentar ini telah dihapus oleh pengarang.
BalasHapusKomentar ini telah dihapus oleh pengarang.
BalasHapusshare wiring transistir pnp nya dong
BalasHapusHi!
BalasHapusI need help!
I use the sketch without display.
I need follows: If keypad pressed but not pressed *key after 3 sec, loop the program. If someone press on key the keypad without *, and after the time elapsed other people show rfid tag, the reader is not work. Can you help me?
mau tanya kalo coding tidak bisa di ubggah itu knapa ya
BalasHapusLIBRARY RFID
BalasHapusbang , kalau selenoid nya nggak bisa kenapa
BalasHapus