Tahukah Anda, apa itu RFID? Perlu diperhatikan bahwa dalam tulisan ini, kami tidak membahas tentang harga RFID atau tempat-tempat yang jual RFID. Tulisan ini akan berfokus pada pengertian RFID, apa saja bagian-bagian RFID, bagaimana cara pengiriman datanya, dan bagaimana aplikasinya. Teknologi RFID adalah teknologi yang harus kita kuasai jika ingin bermain-main dengan IoT karena peranannya sangat penting.
Pengertian dan Komponen RFID
Radio Frequency Identification (RFID) adalah teknologi untuk mengidentifikasi yang berbasis nirkabel (wireless) yang memanfaatkan gelombang elektromagnet dengan frekuensi tertentu untuk mengambil data dari suatu objek. Teknologi RFID dibagi ke dalam 2 komponen utama, yaitu RFID Reader dan Tag RFID. Tag RFID adalah alat yang berisi data pengenal (ID) yang dipasang pada objek. Sedangkan RFID Reader berfungsi untuk membaca data pengenal (ID) yang ada di dalam Tag RFID. Contoh : Teknologi RFID sering kita temui di supermarket dan perpustakaan.
Ketika berbelanja di supermarket, misalnya pakaian, maka setiap pakaian akan dipasang Tag RFID. Ketika kita membeli pakaian tersebut, maka Tag RFID akan dibuka oleh kasir, jika tidak, maka ketika kita melewati pemindai pada pintu keluar, maka alarm akan berbunyi. Kenapa demikian? Karena pemindah mengidentifikasi bahwa ada pakaian yang Tag RFID-nya belum dilepas. Begitu juga ketika kita meminjam buku di perpustakaan. Setiap buku biasanya dipasang RFID di bagian belakangnya, sehingga ketika peminjaman dan pengembalian buku harus "digesek" dulu ke RFID Reader.
Selain itu, Tag RFID juga bisa diletakkan di dalam kartu elekronik, diletakkan di hewan-hewan peliharaan untuk mengidentifikasi, di peralatan rumah tangga, dll. Saat ini (2015) sedang berkembang teknologi IoT sehingga penggunaan RFID akan sangat berperan. Implementasi dari RFID dan tag-nya bisa Anda lihat pada gambar di atas.
RFID Reader MLF8112WA
Penulis mendapat kesempatan untuk ngoprek alat ini. Salah satu kawan minta bantuan untuk menyelesaikan penelitiannya tentang hybrid system dan beberapa aplikasi pendukung keputusan yang berkaitan dengan objek yang dipasang dengan RFID. Karena fokus penelitiannya adalah sistem hybridnya, maka persiapan alatnya dipercayakan ke penulis untuk menyiapkannya. Sehinga dia tidak perlu pusing-pusing mengurusi hal yang bukan bidang dan kepentingannya.
Alat ini, sangat minim referensi. Yang saya temukan hanya referensi singkat tentang spesifikasinya dan beberapa referensi yang dimuat dalam bahasa china. Alat ini memiliki 10 pin, menggunakan format Wiegand26 atau ABA dalam komunikasinya, dan beroperasi dalam frekuensi 110Khz, 125Khz, dan 140Khz sesuai dengan voltase yang diberikan. Berikut ini adalah gambar RFID Reader dan antenanya, tag RFID yang menyerupai kartu, pin tampak bawah, skema dari pin dan fungsinya. perhatikan, pada skema kaki, yang tertulis adalah NLF, bukan MLF. Tapi kedua merk ini sesuai. :D
+------+----------------+
| PIN | Wiegand 26bits |
+------+----------------+
| 1 | +5V (Vcc) |
| 2 | (GND) |
| 3 | (Data0) |
| 4 | (Data1) |
| 5 | (Hold) |
| 6-10 | Antena |
| 7-8 | (NC) |
| 9 | (NC) |
+------+----------------+
Yang aneh adalah, ketika menggunakan Protokol Wiegand, ada pin yang berfungsi sebagai HOLD. Padahal dalam protokol Wiegand tidak dikenal dengan HOLD (Silakan baca tentang Protokol Wiegand 26 bit). Untung referensi yang berbahasa china memberikan informasi bahwa pin HOLD akan bernilai LOW ketika ada data yang dikirim. Apakah saya bisa berbahasa china? tidak. Saya pakai google translate :D . Jika digambarkan, maka timeline pengiriman data dalam format Wiegand alat ini adalah tampak seperti gambar berikut.
Arduino Uno sebagai Tester
Dalam implementasinya, kawan saya akan menggunakan RFID Reader ini dikombinasikan dengan AT89S51. Padahal saya belum belajar bagaimana cara menggunakannya. Hehe. Nah, untuk menguji apakah RFID Reader dan Tagnya berfungsi dengan baik, maka saya menggunakan Arduino. Saya membuat program untuk membaca data dari Tag RFID sesuai dengan format Wiegand26 dan mencobanya. Berikut adalah sketch protokol Wiegand yang disesuaikan dengan RFID Reader MLF8112WA.
/*
* RFID READER MLF8112WA dengan Prorocol Wiegand 26 bit
* coder haripinter
* http://www.elangsakti.com
*/
const int HOLD = 8;
const int DATA0 = 9;
const int DATA1 = 10;
char code_table[26];
char FCCN[6];
char i = 0;
bool valid = false;
void setup() {
pinMode(DATA0, INPUT);
pinMode(DATA1, INPUT);
pinMode(HOLD , INPUT);
Serial.begin(9600);
}
void loop() {
// jika pin hold LOW, ambil data sebanyak 26 bit
// silakan cek format protokol Wiegand 26 bit
while(digitalRead(HOLD) == LOW){
if(digitalRead(DATA0) == LOW){
code_table[i] = 1;
i++;
while(digitalRead(DATA0) == LOW);
}
if(digitalRead(DATA1) == LOW){
code_table[i] = 0;
i++;
while(digitalRead(DATA1) == LOW);
}
}
if(i >= 25){
// validasi data
valid = validasi(i);
if(valid){
getRFID();
FCCN[6] = 0x0;
Serial.println(FCCN);
}else{
Serial.println("NOT VALID!");
}
i = 0;
}
}
void getRFID(){
char tmp = 0;
char num = 0;
for(i=1; i<25; i++){
tmp <<= 1;
tmp += code_table[i];
if(i%4 == 0){
FCCN[num] = toChar(tmp);
num++;
tmp = 0;
}
}
}
// validasi data sesuai protokol Wiegand
bool validasi(int i){
char tmp = 0;
for(int n=0; n<i; n++){
tmp += code_table[i];
// bagian pertama harus genap
if(n == 12){
if(tmp % 2 == 1) return false;
tmp = 0;
}
// bagian kedua harus ganjil
if(n == 25){
if(tmp % 2 == 0) return false;
tmp = 0;
}
}
return true;
}
char toChar(char ch){
if(ch <= 9){
return ch + 48;
}else{
return ch + 55;
}
}
Script di atas masih menggunakan cara manual, sehingga jika dikombinasikan dengan sensor atau perintah delay, maka sistem menjadi tidak responsive. Untuk itu, pembacaan data RFID bisa menggunakan interrupt. Sehingga RFID Reader selalu siap membaca data dan menginterupsi mikrokontroller dari pekerjaan lainnya. Penggunaan interrupt pada RFID Reader mungkin akan saya bahas pada ebook arduino yang kedua. :D