Anda di halaman 1dari 14

PROTOTIPE KUNCI PINTU OTOMATIS BERBASIS

ARDUINO DAN RFID

by : AJI PRAKOSO

Pernahkah anda pergi ke hotel yang jika kita ingin membuka kunci pintunya kita harus menempelkan
atau mendekatkan sebuah kartu? Tahukah anda teknologi apa yang digunakan pada pintu tersebut?
Teknologi yang digunakan pada kunci pintu tersebut adalah teknologi bernama RFID atau Radio
Frequency Identification. Setiap pintu kamar di hotel yang menggunakan teknologi RFID dipasangi
sebuah alat pembaca RFID (RFID reader), alat pembaca tersebut sudah diprogram untuk hanya
membuka kunci pintu jika kartu RFID yang discan (dengan cara didekatkan) sesuai dengan nomor
kamar, misalnya untuk kamar nomor 23, alat pembaca RFID di kamar tersebut hanya akan membuka
kuncinya jika kartu RFID nomor 23 didekatkan pada alat pembaca RFID dan tidak akan membuka
kunci jika yang digunakan adalah kartu RFID yang lainnya. Kartu yang digunakan disebut dengan
PICC (Proximity Integrated Circuit Card).

Terinspirasi dari teknologi yang digunakan di pintu kamar hotel tersebut, saya terfikir untuk membuat
alat serupa menggunakan board mikrokontroler yang saya miliki, Arduino Uno. Setelah Googling
sana-sini untuk mencari alat dan referensi, akhirnya saya menemukan alat pembaca RFID dengan tipe
RC522 dengan harga yang sangat bersahabat untuk kantong mahasiswa. Akhirnya saya membeli alat
tersebut dengan harga 75.000 Rupiah (Sudah termasuk satu buah kartu PICC).

Nah, kali ini saya akan membagikan tutorial untuk membuat alat pembaca RFID dengan
menggunakan mikrokontroler AT328P-PU pada Arduino Uno dan pembaca RFID tipe RC522.

BAGIAN 1 : CARA KERJA ALAT

 Pengguna menscan kartu PICC dengan cara mendekatkan kartu ke alat pembaca RFID,
 Alat pembaca RFID akan mendeteksi nomor identitas kartu PICC yang disebut UID, jika UID
sesuai, maka lampu akan berubah menjadi warna hijau dan kunci pintu (menggunakan servo)
akan terbuka, sedangkan jika kartu PICC yang discan tidak sesuai dengan yang kita program,
lampu akan berubah merah, buzzer akan berbunyi kencang dan kunci tidak akan terbuka.
 Setelah delay selama 2500ms (2,5 detik), pengunci akan ke posisi semula, kunci akan kembali
ke posisi terkunci dan lampu akan berubah menjadi warna biru.
BAGIAN 2 : ALAT-ALAT YANG DIBUTUHKAN

 1 Buah Board Mikrokontroler (Saya menggunakan Arduino Uno),


 1 Buah RFID Reader tipe RC-522,
 Kartu PICC,
 1 Buah Buzzer 5v,
 1 Buah LED RGB,
 Kabel jumper seperlunya.
BAGIAN 3 : KONEKSI DAN PENGKABELAN

Perhatikan skema dibawah ini :

 RC522 Memiliki 8 buah pin, yaitu SDA, SCK, MOSI, MISO, IRQ, GND, RST dan 3,3v
untuk catu daya. Yang kita gunakan hanya 7 pin saja, pin IRQ tidak kita gunakan.
 Servo memiliki 3 buah pin, yaitu VCC (5v), GND dan data.
 LED RGB memiliki 4 buah pin yaitu R, G, B dan GND.
 Buzzer hanya memiliki 2 buah pin yaitu pin VCC yang akan kita koneksikan ke port pin
digital di Arduino dan port pin GND.

Agar lebih mudah menghubungkan kabel-kabel antara Arduino dan alat-alat lainnya, saya buatkan
tabel koneksi dibawah ini :

SERVO
SERVO ARDUINO UNO
DATA Digital 6
GND GND
VCC 5V
LED RGB
LED RGB ARDUINO UNO
R Digital 4
G Digital 3
B Digital 2
Common GND

BUZZER
BUZZER ARDUINO UNO
VCC Digital 5
GND GND
RC522 RFID READER
RC522 ARDUINO UNO
SDA Digital 10
SCK Digital 13
MOSI Digital 11
MISO Digital 12
IRQ -
GND GND
RST Digital 9
3.3v 3.3V
BAGIAN 4 : KODING PROGRAM

Setelah semua alat terkoneksi dengan Arduino, langkah terakhir adalah memprogam si
Mikrokontroler agar dapat mengerjakan tugasnya sebagai otak dari alat kunci otomatis berbasis RFID
ini. Berikut ini adalah kode program Arduino yang saya gunakan untuk membuat project kunci pintu
otomatis ini :

/* PROTOTIPE KUNCI PINTU OTOMATIS BERBASIS ARDUINO DAN RFID

* Desember 2014 - AJI PRAKOSO

* Menggunakan Library MFRC522

* https://github.com/miguelbalboa/rfid

* Dibuat oleh Miguel Balboa (circuitito.com)

*/

#include <EEPROM.h> // Memanggil Library EEPROM

#include <SPI.h> // Memanggil Library SPI

#include <MFRC522.h> // Memanggil Library MFRC522

#include <Servo.h> // Memanggil Library Servo

boolean match = false;

boolean programMode = false;

byte storedCard[4];

byte readCard[4];

byte masterCard[4] = {0xec,0x9f,0xe9,0x7}; // UID kartu yang diijinkan masuk : EC9FE97

int r = 4; // Pin Red pada LED RGB

int g = 3; // Pin Green pada LED RGB

int b = 2; // Pin Blue pada LED RGB

int buzz = 5; // Pin data untuk buzzer

Servo servo1; // Servo kita beri nama "servo1"

#define SS_PIN 10

#define RST_PIN 9
MFRC522 mfrc522(SS_PIN, RST_PIN);

void setup() {

Serial.begin(9600);

SPI.begin();

mfrc522.PCD_Init();

Serial.println("===== KUNCI OTOMATIS BERBASIS RFID =====");

Serial.println("");

Serial.println("Silahkan SCAN KARTU ANDA !");

Serial.println("");

pinMode(buzz, OUTPUT);

pinMode(r, OUTPUT);

pinMode(g, OUTPUT);

pinMode(b, OUTPUT);

servo1.attach(6);

digitalWrite(b, HIGH);

servo1.write(20);

void loop ()

int successRead;

do

successRead = getID();

while (!successRead);

if (isMaster(readCard)) // Jika kartu yang di didekatkan ke pembaca adalah MasterCard (EC9FE97)


Maka akan muncul :

Serial.println("Anda diizinkan untuk masuk!");


Serial.println("");

Serial.println("===================================================");

Serial.println("");

digitalWrite(b, LOW); // LED Yang tadinya berwarna biru (stand by) dimatikan, berubah menjadi

digitalWrite(g, HIGH); // warna hijau

beep3(buzz); // Buzzer akan mengeluarkan bunyi beep

servo1.write(90); // Posisi servo akan berubah menjadi 90 derajat (posisi buka kunci)

delay(2500); // Setelah delay selama 2500ms (2,5 detik),

digitalWrite(b, HIGH); // Lampu LED akan berubah kembali menjadi berwarna biru, dan

digitalWrite(g, LOW);

servo1.write(0); // Posisi servo akan kembali ke 0 derajat (posisi mengunci).

else // Jika kartu yang didekatkan ke pembaca BUKAN MasterCard (EC9FE97) Maka akan muncul :

Serial.println("Anda DILARANG MASUK !!");

Serial.println("");

Serial.println("===================================================");

Serial.println("");

digitalWrite(r, HIGH); // LED akan berubah menjadi berwarna merah,

digitalWrite(b, LOW);

beep2(buzz); // Buzzer akan mengeluarkan bunyi beep panjang, setelah beep selesai,

digitalWrite(b, HIGH); // lampu LED akan kembali menjadi berwarna biru.

digitalWrite(r, LOW);

int getID()

if ( ! mfrc522.PICC_IsNewCardPresent())

return 0;
}

if ( ! mfrc522.PICC_ReadCardSerial())

return 0;

Serial.print("NOMOR ID ANDA ADALAH : ");

for (byte i = 0; i < mfrc522.uid.size; i++) {

readCard[i] = mfrc522.uid.uidByte[i];

Serial.print(readCard[i], HEX);

Serial.println("");

Serial.println("");

mfrc522.PICC_HaltA();

return 1;

void readID( int number ) {

int start = (number * 4 ) - 3;

for ( int i = 0; i < 4; i++ ) {

storedCard[i] = EEPROM.read(start+i);

boolean checkTwo ( byte a[], byte b[] ) {

if ( a[0] != NULL )

match = true;

for ( int k = 0; k < 4; k++ ) {

if ( a[k] != b[k] )

match = false;

if ( match ) {
return true;

else {

return false;

boolean isMaster( byte test[] ) {

if ( checkTwo( test, masterCard ) )

return true;

else

return false;

void beep2(int x) // Program untuk beep panjang (jika kartu yang discan tidak sesuai)

digitalWrite(x, HIGH);

delay(1000);

digitalWrite(x, LOW);

delay(500);

digitalWrite(x, HIGH);

delay(1000);

digitalWrite(x, LOW);

delay(500);

digitalWrite(x, HIGH);

delay(1000);

digitalWrite(x, LOW);

delay(500);

digitalWrite(x, HIGH);

delay(1000);

digitalWrite(x, LOW);

delay(500);
}

void beep3(int x) // Program untuk beep pendek (jika kartu yang di scan sesuai)

digitalWrite(x, HIGH);

delay(50);

digitalWrite(x, LOW);

delay(50);

digitalWrite(x, HIGH);

delay(50);

digitalWrite(x, LOW);

delay(50);

digitalWrite(x, HIGH);

delay(50);

digitalWrite(x, LOW);

delay(50);

digitalWrite(x, HIGH);

delay(50);

digitalWrite(x, LOW);

delay(50);

Kode program yang saya buat diatas juga bisa diunduh di http://bit.ly/KunciRFID, di file tersebut
juga saya masukkan library MFRC522 buatan Miguel Balboa. Sebelum memprogram Arduino,
jangan lupa tambahkan library MFRC522 ke folder library aplikasi IDE Arduino anda. Ada dua cara
untuk menambahkan library ke aplikasi IDE Arduino anda, cara pertama adalah dengan mengimpor
secara otomatis dari file berekstensi zip, caranya dengan memilih menu “Sketch >> Import Library >>
Add Library” lalu pilih file zip yang berisi library yang ingin ada impor. perhatikan gambar berikut ini
:
Cara kedua adalah cara manual dengan cara meng-copy folder library yang anda unduh ke folder
libraries Arduino yang ada di “My Documents\Arduino\libraries\”, biasanya didalam folder library
minimal ada file dengan ekstensi .cpp dan .h.
Berikut ini adalah “penampakan” kunci pintu otomatis berbasis Arduino dan RFID yang saya buat :
Untuk lebih jelasnya, saya juga sudah membuat video demonstrasi yang saya unggah ke YouTube.
Berikut link nya : https://www.youtube.com/watch?v=vYeILRLas9E

BAGIAN 5 : APLIKASI DAN FUNGSI

Project kunci pintu otomatis yang saya buat ini masih dalam bentuk prototipe, karena untuk pengunci
pintunya hanya menggunakan sebuah servo, untuk pengaplikasian dalam dunia nyata, bisa
menggunakan Electrical Solenoid Door Lock seperti pada gambar dibawah ini

Dengan menggunakan Electrical Solenoid Door Lock tersebut, dapat menggantikan servo sebagai
pengunci pintu yang lebih kuat dan lebih aman.

Jika untuk pengunci sudah diganti dengan Electrical Solenoid Door Lock, maka alat pengunci
otomatis yang dibuat sudah bisa berfungsi sebagai alat pengunci otomatis pada pintu ruangan di
rumah anda. Anda tidak perlu lagi membuka kunci secara manual, tinggal dekatkan kartu PICC anda
ke alat pembaca RFID, lalu kunci pintu ruangan anda akan otomatis terbuka. Selain praktis, juga
canggih. 

BAGIAN 6 : PENGEMBANGAN

Selain kunci pintu otomatis, masih banyak hal yang bisa kita lakukan dengan menggunakan teknologi
RFID ini, misalnya untuk sistem pembayaran di restoran (sudah banyak digunakan di food court
mall), pembayaran di gerbang tol, bisa juga digunakan sebagai kartu mahasiswa yang multi-fungsi.

Alat RFID yang terbilang murah bisa menjadi alasan kuat digunakannya teknologi RFID, apalagi jika
dibandingkan dengan teknologi magnetic card (biasa digunakan di kartu ATM) yang alatnya terbilang
mahal.

Anda mungkin juga menyukai