Arduino RFID Security

Oleh Bagas Dika Anggoro pada Sabtu, Januari 9th, 2016


Halooo teman-teman, akhirnya bisa post lagi nih tentang tutorial Arduino. Kali ini yang ingin aku bahas adalah mengenai sistem sekuriti yang melibatkan Arduino, RFID serta Solenoid Door Lock (Kunci Pintu Solenoid). Namun sebelumnya, yuk kita bahas dulu tentang komponen RFID serta Solenoid Door Lock.

  1. RFID
    RFID merupakn singkatan dari Radio Frequency Identification. Merupakan perangkat keras yang bisa saling “berkomunikasi” melalui perantara Frekuensi Radio. Biasanya terdapat 2 perangkat: berupa reader/writer serta kartu yang berisi suatu “identity” yang dapat dibaca oleh readernya yang biasa disebut RFID Tag. Ada 2 jenis RFID Tag, berupa kartu dan berupa keychain (gantungan kunci)20160108_233400

    RFID Reader/Writer

    20160108_233413

    RFID Tag (Kanan: Jenis Keychain, Kiri: Jenis Kartu)

  2. Solenoid Door Lock
    Solenoid merupakan suatu alat elektromagnetik yang berfungsi untuk mengubah energi listrik menjadi gerak primer secara linier (lurus). Pemanfaatan solenoid pada kasus ini sebagai locking mechanism. Cara kerjanya adalah ketika tidak ada arus listrik, maka bagian rod berada pada posisi release, ketika arus listrik muncul, rod di bagian tengah kumparan akan tertarik akibat gaya magnet yang timbul dari arus listrik.

    20160108_235240
    Solenoid dalam keadaan tidak ada arus. Bagian Rod adalah bagian berupa batang yang berada di tengah.

Lalu bagaimana algoritma dari alat ini? Algoritmanya ditunjukkan melalui langkah-langkah di bawah:

  1. Alat memeriksa apakah status sedang berada pada Mode Penambahan Tag. Mode Penambahan Tag adalah suatu keadaan pada alat yang digunakan untuk menambahkan Tag RFID yang belum terdaftar pada mesin agar mendapatkan hak akses. Jika berada pada mode penambaha tag, maka user dapa menambahkan tag baru untuk didaftarkan. Mode Penambahan Tag ditandai dengan kedua LED_SUKSES serta LED_GAGAL yang menyala.
  2. Jika tidak, mesin akan menunggu hingga terdapat tag RFID yang dibaca.
  3. Tag yang terbaca dicocokan dengan database yang sudah ada, bila sudah terdaftar akan memberikan hak akses untuk membuka kunci (arduino akan men-trigger pada relay sehingga solenoid door lock akan teraliri arus dan kunci dapat terbuka). Granted Access akan ditandai dengan LED_SUKSES yang menyala. Namun jika tidak, hak akses akan ditolak yang ditandai dengan LED_GAGAL yang menyala.

Setalah membahas mengenai teori, langsung saja kita membahas mengenai praktiknya. Alat-alat yang dibutuhkan untuk project ini adalah:

  1. Board Arduino UNO
  2. Breadboard (lebih baik pakai yang mini saja supaya menghemat tempat)
  3. MIFARE RC522 RFID reader
  4. Tag RFID (Card dan keychain)
  5. Relay module 1 channel
  6. Pushbutton (untuk masuk pada Mode Penambahan Tag)
  7. Resistor 2,2 kohm

Semua alat di atas dihubungkan menjadi seperti gambar di bawah ini:

ARDUINO RFID SECURITY_bb

Coding Time!

Kode Berikut ini saya dapatkan dari link berikut iniDengan sedikit perubahan, maka kode yang diupload ke board Arduino adalah sebagai berikut:

/*
* Read a card using a mfrc522 reader on your SPI interface
* Pin layout should be as follows (on Arduino Uno):
* MOSI: Pin 11 / ICSP-4
* MISO: Pin 12 / ICSP-1
* SCK: Pin 13 / ISCP-3
* SS/SDA: Pin 10
* RST: Pin 9
*/
#include <SPI.h>
#include <RFID.h>
#define SS_PIN 10
#define RST_PIN 9

RFID rfid(SS_PIN,RST_PIN);

int led = 7;
int power = 8; 
int led_ok=6;
int led_fail=5;
int mode_pin=4;
int serNum[5];
int nn=1;
String cards[6];
;
bool access = false;
bool exist;

void setup(){

Serial.begin(9600);
 SPI.begin();
 rfid.init();

pinMode(led, OUTPUT);
 pinMode(led_ok, OUTPUT);
 pinMode(led_fail, OUTPUT);
 pinMode(power, OUTPUT);
 
 digitalWrite(led, LOW);
 digitalWrite(power, HIGH);
 cards[nn]="131123472213"; //ganti dengan tag RFID anda

Serial.println("--------------------------------------------------------------------------------------");
 Serial.println(" Sistem Keamanan RFID ");
 Serial.println(" versi: 1.0.0 ");
 Serial.println("Original Source: http://www.instructables.com/id/Arduino-RFID-Reader-MFRC522-Turorial/");
 Serial.println(" Modified by: Bagas Dika Anggoro ");
 Serial.println("--------------------------------------------------------------------------------------");
 Serial.println(" ");
 
}

void loop(){
 access = false;
 int setupmode=digitalRead(mode_pin);

if(setupmode==1){
 Serial.println("Mode Penambahan Tag");
 digitalWrite(led_ok,HIGH);
 digitalWrite(led_fail,HIGH);
 if(rfid.isCard())
 {
 if(rfid.readCardSerial())
 {
 String new_value= String(rfid.serNum[0]) + String(rfid.serNum[1]) + String(rfid.serNum[2]) + String(rfid.serNum[3]) + String(rfid.serNum[4]);
 for(int x = 1; x <= nn; x++)
 {
 if(new_value != String(cards[x])) 
 {
 exist = false;
 //break;
 } 
 else 
 {
 exist = true;
 }

if(exist) break;
 }

if (exist)
 {
 Serial.print("Kartu ini telah ada pada database: ");
 Serial.println(" ");
 }
 else
 {
 nn++;
 cards[nn]=new_value;
 Serial.print("Kartu berhasil ditambahkan. Jumlah kartu akses: ");
 Serial.println(nn);
 Serial.println(" ");
 }
 }
 }
 delay(1000);
 digitalWrite(led_ok,LOW);
 digitalWrite(led_fail,LOW);
 setupmode==0;
 }
 else
 {
 if(rfid.isCard()){
 Serial.print("Tag ditemukan!");
 Serial.println(" ");
 if(rfid.readCardSerial()){
 String value= String(rfid.serNum[0]) + String(rfid.serNum[1]) + String(rfid.serNum[2]) + String(rfid.serNum[3]) + String(rfid.serNum[4]);
 //Serial.print(value);  //hilangkan tanda komentar untuk melihat tag rfid yang terbaca
 //Serial.println(" ");  //hilangkan tanda komentar untuk melihat tag rfid yang terbaca
 for(int x = 1; x <= nn; x++){
 if(value != String(cards[x])) {
 access = false;
 } else {
 access = true;
 }
 if(access) break;
 }
 Serial.print("Mengotentikasi...");
 Serial.println(" ");
 }
 
 if(access){
 Serial.println("Otentikasi Berhasil! Selamat Datang!");
 Serial.println(" ");
 digitalWrite(led_ok, HIGH); 
 digitalWrite(power, LOW);
 delay(15000);
 digitalWrite(led_ok, LOW);
 digitalWrite(power, HIGH);
 
 } else {
 Serial.println("Anda tidak mempunyai akses!"); 
 Serial.println(" ");
 digitalWrite(led_fail, HIGH);
 delay(200);
 digitalWrite(led_fail, LOW); 
 delay(200);
 digitalWrite(led_fail, HIGH);
 delay(200);
 digitalWrite(led_fail, LOW); 
 } 
 }
 }
 //delay(500);
 
 rfid.halt();

}

 

Dapat kita lihat bahwa source code di atas membutuhkan Library RFID. Library tersebut dapat anda download bersama dengan file-file lainnya pada bagian bawah. dapat dilihat juga bahwa pada kode di atas terdapat bagian untuk mendaftarkan Tag RFID (bagian void setup() –> cards[nn]=blablabla). Ketika di run, maka yang muncul adalah sebagai berikut:

Serial Monitor

Tampilan pada serial monitor ketika awal run

Sermon 1

Tampilan pada serial monitor ketika membaca Tag yang belum terdaftar

Sermon2

Tampilan pada serial monitor ketika membaca tag yang sudah terdaftar

Sermon3

Tampilan pada serial monitor ketika berada pada Mode Penambahan Tag

Sermon4

Tampilan pada serial monitor Tag RFID baru telah didaftarkan lalu digunakan

Dan ini adalah penampakan dari Project yang saya buat. Agak riweuh ya penampakannya. Hehehe.

20160108_233429

Dan seperti yang sudah saya bilang di atas, file-file yang dibutuhkan untuk membuat file ini ada di link ini. Akhir kata, selamat berkreasi dan berinovasi!

Bagikan ke temanShare on FacebookShare on Google+Tweet about this on TwitterShare on LinkedIn



Kategori


20 komentar pada “Arduino RFID Security

    Herpiansyah pada 23 Januari 2017 1:16 am

    mas maaf kebetulan saya masih pemula.. kalau sistem doorlocknya dibuatkan interface.. misal saya gabungkan dengan java netbeans atau php.. itu gmn ya mas ?

    Balas
      Bagas Dika Anggoro pada 28 Februari 2017 8:01 pm

      Terimakasih sudah berkenan mengunjungi blog saya 😀
      wah, mohon maaf mas, saya tidak menguasai java. kalau untuk interface php saya juga sedang belajar 😀

      Balas
    ILHAM pada 29 Januari 2017 9:18 pm

    cari include
    #include <SPI.h>
    #include <RFID.h>
    ini dimana min saya cari kaga dapat2

    Balas
      Bagas Dika Anggoro pada 28 Februari 2017 8:03 pm

      Terimakasih sudah berkenan mengunjungi blog saya 😀
      silahkan dicek pada file yang sudah saya sediakan di link downloadnya mas 🙂

      Balas
    aang pada 21 Februari 2017 9:47 pm

    gan…cara mengetahui ID nya gmn ya gan…???coba sana sini gagal trus …maklum baru perdana main arduino gan..mohon pencerahannya gan,,,trims…

    Balas
      Bagas Dika Anggoro pada 28 Februari 2017 8:04 pm

      Terimakasih sudah berkenan mengunjungi blog saya 😀
      Untuk mengetahui ID nya, di RFID library sample sudah ada mas. silahkan dicoba 😀

      Balas
    Alim pada 13 Maret 2017 6:44 pm

    Mas Anggoro,klo saya pesan sepaket door lock tsb bisa kah (saya beli dari sampean), biar bisa langsung saya pasang & lebih mudah mempelajarinya. Terima kasih

    Nb : bisa call/sms/wa : 081250018005

    Balas
      Bagas Dika Anggoro pada 16 Maret 2017 3:38 pm

      Halo mas, terima kasih sudah mengunjungi blog saya 🙂
      wah, kalau menjual, saya tidak berani mas. lagipula ini masih sangat sederhana. perlu di modif dengan penambahan EEPROM untuk menyimpan tag yang sudah dimasukkan. Kalau project saya yang ini masih sederhana, apabila listrik mati akan menghapus semua tag yang telah ditambahkan.
      Kalau mas mau belajar lebih dalam, silahkan hubungi wa saya (sudah ada di halaman About Me)
      Terima kasih mas, semoga sukses terus dan jangan pernah berhenti untuk belajar 🙂

      Balas
    Andita pada 20 Maret 2017 11:54 am

    cards[nn]=”131123472213″; //ganti dengan tag RFID anda
    cara tau tag rfid kitanya gimana akhi?

    Balas
      Bagas Dika Anggoro pada 21 Maret 2017 5:01 pm

      Halo mbak, terimakasih udah mengunjungi blog saya 😀
      Cara membaca tag nya kalau saya menggunakan example dari library RFID.h nya mbak. Atau kalau mbak baca lagi di sketch yang sudah ada, ada comment sbb:

      //Serial.print(value);  //hilangkan tanda komentar untuk melihat tag rfid yang terbaca
      //Serial.println(" ");  //hilangkan tanda komentar untuk melihat tag rfid yang terbaca
      

      untuk membacanya, tanda comment di baris tsb dihilangkan mbak.
      Semoga membantu 🙂

      Balas
    Septyan pada 24 Mei 2017 9:09 am

    Maaf mas saya mau nanya , kalo mau write tag rfid bisa nggak mas? Kalo bisa bisa share ilmu dong hehe makasih

    Balas
      Bagas Dika Anggoro pada 26 Mei 2017 3:55 pm

      Halo mas, kemungkinan bisa. Tapi saya belum pernah mencobanya mas hehehe.

      Balas
    Candra pada 30 Mei 2017 1:08 pm

    Mas mau tanya untuk pencocokan tag rfid yang sudah masuk untuk mengunci pintu bagaimana ya mas,

    Balas
      Bagas Dika Anggoro pada 5 Juni 2017 9:23 pm

      Halo mas Candra, makasih udah mau berkunjung ke blog saya.
      Maksudnya gimana ya mas? Kalau di project yang saya bikin ini, untuk mengunci tidak perlu pakai tag lagi, karena memang solenoid door lock kan tidak butuh daya jika untuk mengunci/menutup pintunya mas.

      Balas
        Candra pada 12 Juni 2017 9:49 pm

        Maksudnya gini mas misal cuma pakai RFID saja waktu membuka menempelkan tag dan untuk menutup.nya juga menempelkan tag lagi untuk di cocokkan dengan yg tadi msuk saat awal.

        Balas
    adam pada 31 Mei 2017 4:55 am

    maaf mas mau tanya, klo rangkaian tersebut dibuat di proteus kira kira bisa gak ya ? thx

    Balas
      Bagas Dika Anggoro pada 5 Juni 2017 9:25 pm

      Halo mas adam, terima kasih sudah berkunjung ke blog saya. Kemungkinan bisa mas, tapi saya belum pernah mencobanya. Mungkin juga dibutuhkan komponen lain untuk membuatnya. Terima kasih mas

      Balas
    Hendra Setyawanzz S pada 4 Juni 2017 7:05 pm

    saya mau tanya mas
    untuk menambah user gimana ya ??
    menambah kartu akses ??
    terima kasih

    Balas
      Bagas Dika Anggoro pada 5 Juni 2017 9:26 pm

      Halo mas hendra, terimakasih sudah berkunjung ke blog saya.
      Maksud pertanyaan mas bagaimana ya? di project tersebut sudah ada mode penambahan tag, tapi yang perlu diingat bahwa sifatnya sementara. Jika arus listrik hilang, maka akan kembali ke awal. Untuk menambah user dan bisa disimpan, mas perlu menambahkan rom. Tapi saya juga belum pernah mencob mas. Hehehe

      Balas
    Ardian pada 12 Juni 2017 9:50 pm

    trims mas share nya tapi #include <RFID.h> ini kenapa kode eror y ??? library nya pakai yang mana ???

    Balas

Ada Komentar?


Alamat email Anda tidak akan dipublikasikan. Ruas yang wajib ditandai *

*