Membuat Sistem Pengunci Pintu Cerdas dengan RFID RC-522 dan Arduino
A.Bahan dan Module yang dibutuhkan
-1Unit Arduino Uno-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 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.
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 #include <RFID.h> #include <Wire.h> // i2C Conection Library #include <LiquidCrystal_I2C.h> //Memanggil i2C LCD Library LiquidCrystal_I2C lcd(0x3F, 16, 2); /* 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 <SPI.h> #include <RFID.h> #define SS_PIN 10 #define RST_PIN 9 RFID rfid(SS_PIN,RST_PIN); 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 serNum[5]; //Variable buffer Scan Card int cards[][5] = { //ID Kartu yang diperbolehkan masuk {141,125,2,197,55} }; bool access = false; int alarm = 0; uint8_t alarmStat = 0; uint8_t maxError = 5; //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 setup(){ Serial.begin(9600); lcd.begin(); SPI.begin(); rfid.init(); 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(){ if (alarm >= maxError){ alarmStat = 1; } if (alarmStat == 0){ lcd.setCursor (0,0); lcd.print(F(" -System Ready- ")); lcd.setCursor (0,1); lcd.print(F(" Scan Your Card ")); 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]); 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); lcd.clear(); } 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]); tone (buzzer,900); delay(200); noTone(buzzer); delay(200); tone (buzzer,900); delay(200); noTone (buzzer); delay(500); 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 rfid.halt(); } else { 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; } }
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
Ijin praktek gan
BalasHapusBookmarked,
BalasHapusNyimak dulu gan
power.untuk solenoidnya kl pakai accu gmn om?
BalasHapusBisa tapi musti pake power suply
HapusMas klo tampilan lcd di ganti lcd tft nextion bisa ga?
BalasHapusMas klo tampilan lcd di ganti lcd tft nextion bisa ga?
BalasHapusBeda code lagi
HapusIlmu yg bermanfaat.
BalasHapusMau tanya untuk menambah kode kartu gimana pak.misal mau pakai 3 kartu yg dijinkan untuk membuka.
Bagaimana membuka pintu dari dalamnya.
Terima kasih sebelumnya
Pertama cari code kartunya
HapusKedua Cari yg Ada tulisan //ID card yang diperbolehkan masuk
Trus tambah code kartu yang baru
Done
bos . cara tambah codenya gmna. sebab dah saya coba gagal terus.. sama untuk sambungan selenoidnya saya masih bingung
Hapusgan klo nambah kartu gmna caranya
BalasHapusCari code kartu yg pingin di tambah
HapusTrus tambah code ya yg Ada tulisannya an //ID card yang diperbolehkan masuk
Done
tulisan code nya seperti apa untuk masukinnya
Hapusmas tanya, koq scriptnya tidak bisa di upload ya mas?
BalasHapusCheck board sama port ya caranya :
HapusKe tools click board click board yg Kamu Pakar
Ke tools click port click comm 3
Done
Kalo Mau Pake e-KTP Gimana ?
BalasHapuskalau supply solenoid pakai baterai 9v terus board arduino dikasih supply dari adaptor 5v bisa kak?
BalasHapuskalo arus listrik hilang,apa databasenya masih ada?
BalasHapusGan, klo buat kunci rahasia motor + alarm codingnya gmn ya?
BalasHapusGan, klo buat kunci rahasia motor + alarm codingnya gmn ya?
BalasHapusKomentar ini telah dihapus oleh pengarang.
BalasHapuskalau listrik mati,si pintu dalam keadaan terkunci..apakah bisa membuka pintu via kunci biasa (manual) ?
BalasHapusPermisi mau tanya, jika saya memakai driver solenoidnya relay 5v apakah harus pake power supply juga? terimakasih
BalasHapusKomentar ini telah dihapus oleh pengarang.
BalasHapusKomentar ini telah dihapus oleh pengarang.
BalasHapusIjin Bookmark gan, mau praktek dirumah
BalasHapusMaaf mau tanya, RFID disini hanya 1, lalu bagaimana orang dari sisi lainnya untuk mengakses/buka pintu?
BalasHapusmas link download library rfid kok gabisa?
BalasHapusMaaf mau tanya kalau kalau rfid readernya gak mendeteksi card dan keychainnya gimana ya? Gak ada respon di serial monitor meski kartu rfid didekatkan.
BalasHapusMohon tanggapanya ya kak!
BalasHapuskak rfid ini bisa baca ID E-Ktp gk?
BalasHapusmfrc522 bisa kak,di saya
Hapusgan kl mau dibikin tam pertama buka,trus tap kedua nutup gmn code nya ya? :D
BalasHapusKlo gausah pake lcd bisa gak bang?
BalasHapusBang, Kan saya pakai L298 untuk wiringnya bagaimana ya?
BalasHapusLalu untuk 12V Dc itu bagaimana bang? Wiringnya.
Trus yang di Video ada kabel Jumper putih yang di motor Driver itu terhubung kemana bang?
kak seumpama saya ingin namba katu dan selenoid di satu rfid trus buat kodingnya gimna kak?
BalasHapusbang jika arduinonya diberi ethernet shield nanti di codenya ditambah apa aja ya?trims
BalasHapusMas mau tanya itu kan untuk satu Id Card aja, gimana kalau 5 ID Card?
BalasHapuscara mamasukan keprogram arduino bagaimana?
dianyeee enggak akan replyy deh.
HapusCara matikan alarmnya kalau sudah melewati batas gimana??
BalasHapusAlarm akan mati sendiri setelah 60 detik.
Hapuswaktu bisa dipersingkat dengan merubah kode
else {
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--){ -->//"int i=60" saya kira angka untuk hitung mundur, mungkin angka disesuaikan. atau,
tone (buzzer,1800);
lcd.setCursor (13,1); lcd.print(i);
lcd.print(F(" "));delay (1000);} -->// delay (1000) bisa dikecilkan. angka 1000=1 detik, 500=0,5 detik
noTone (buzzer);
alarmStat = 0;
alarm = 0;
}
}
MAS KALO MAU NAMBAH KARTUNYA, CODE NYA GIMANA YA?
BalasHapusakhirnya setelah coba-coba. Informasi buat teman-teman, kalian bisa tambahkan kartu/tag lain dengan memberikan tanda "," (koma) setelah "}" pada nomor tag kalian. Saya kira untuk melihat nomor tag sudah dijelaskan diatas pada sesi "trial error".
BalasHapusContoh:
int cards[][5] = { //ID Kartu yang diperbolehkan masuk
{141,125,2,197,55}, //ID Card 1
{111,111,1,111,11}, //ID Card 2
{222,222,2,222,22} //ID Card 3
};
Saya coba kok eror ya bang
Hapusdah di coba seperti itu, tapi tetep ga bisa... ada yang punya solusi
HapusSaya berhsil pke tsb..
HapusAlhmdllh..
Klo make 2 selenoid door lock bisa gak?
BalasHapusUdah ganti id nya kok tetep gak bisa ya? Akses ditolak mulu :(
BalasHapusGan disitu kan yang (+) adaptor dimasukin ke dc in arduino, trus yang (-) nya dimasukin kemana?
BalasHapusGND
HapusKomentar ini telah dihapus oleh pengarang.
BalasHapusgan kalo powenya di satuin ke arduino sama selenoid nya itu ada yg di ubah gk kodingan nya ??
BalasHapusSaya upload dengan arduinodroid kok gagal terus ya bang?
BalasHapusGan.. knapa Selenoid Door nya tidak gerak.?? Saat sistem sudah membaca Kode kartu Access.. mohon pencerahan nya.. Terimakasih
BalasHapusgan, kalo pas compile-nya error: no matching function for call to 'LiquidCrystal_I2C::begin()' gimana ya?
BalasHapusKok sama ya...
HapusSelanat siang!
BalasHapusKalau boleh tau bisa Beli barang satu paketannya gak?
Alhamdulillah trima kasih bang, sdh saya coba dan berhasil thanks infonya...
BalasHapusGan kalo kasusnya tap pertama berhasil dan selanjutnya rfid tidak mau membaca kartu apanya ya kira-kira
BalasHapusMas malo mau selenkid dan arduino nya satu sumber sekaligus bisa gak mas
BalasHapusMas kalo program nya jalan tp ga mau display LCD nya kenapa ya? LCD nya cuma blank gitu saja
BalasHapusdi setting brightnessnya om
HapusLiquidCrystal_I2C lcd(0x3f,16,2);
Hapusganti
LiquidCrystal_I2C lcd(0x27,16,2);
Ijin paraktek bang
BalasHapusBisa minta nomer wa...? Saya mau minta pencerahan lbh dalam...Gan.
BalasHapusakses terus di tolak boss
BalasHapusGan kalo misal mau tambah waktu atau jam disaat kita scan id gimana ya?
BalasHapusijin copy code dan salam kenal
BalasHapus