Selamat datang di sonoku.com

Membaca Kartu RFID Mifare 13.56MHz dengan CR-013F, ATMega128 dan Bascom (bag.2)

Setelah mengetahui bagaimana reader RFID dan Mikrokontroler berkomunikasi pada artikel sebelumnya, selanjutnya adalah membuat program mengakses RFID reader menggunakan BASCOM. Rutin yang dibuat pertama kali adalah rutin untuk mengirim perintah (request) dari mikro ke reader mengikuti protokol pada Gambar 1 berikut.

Gambar 1. Protokol Request Function

Pertama deklarasikan sebuah variabel  berupa array dengan tipe data byte yang isinya adalah kode hex “Function” sesuai Tabel Daftar Fungsi Perintah. Misal kita akan mengirim fungsi untuk Card Type Request maka deklarasi variabelnya seperti berikut:

Berikutnya membuat sub procedure untuk mengirimkan perintah ke reader. Dua byte pertama yang dikirim merupakan sebuah konstanta &HAA dan &HBB, kemudian diikuti panjang data dimulai dari low byte dan high byte. Perintah Shift digunakan untuk menggeser bilangan hexa variabel Panjang karena yang dikirim dahulu adalah lowbyte baru highbyte. Kemudian mengirim beberapa kode Fungsi Perintah yang tersimpan dalam variabel X satu persatu. Selama mengirim ke reader, program juga menghitung checksum yaitu dengan menerapkan operator XOR pada tiap data yang dikirim. Terakhir mikro mengirim adalah Checksum. Potongan programnya sebagai berikut:

Rutin (sub procedure) yang kedua adalah kode program untuk mengambil respon yang dikirimkan oleh reader kepada mikro ketika suatu perintah dikirim ke reader. Protokol respon reader mengikuti format seperti pada Gambar 2 berikut.

Gambar 2. Protokol Respon Reader

Program diawali dengan mengambil 2 byte Header yang terdiri dari &HAA dan &HBB. Pertama harus dicek apakah data serial yang diterima berupa &HAA, jika ya, cek kembali byte kedua apakah &HBB. Jika kedua syarat terpenuhi, langkah selanjutnya mengambil 2 byte berupa Panjang data. Panjang data yang diperoleh digunakan untuk variabel counting pengambilan data Status dan Data, pada contoh ini Status dan Data disimpan pada variabel Data_response(). Bentuk potongan programnya seperti berikut:

Setelah kedua sub procedure diatas dibuat, kemudian bisa digunakan untuk membaca kartu RFID. Tetapi ingat pada langkah ke-3 dari rangkaian proses pembacaan kartu, yaitu proses Select Card diperlukan data nomor seri kartu yang sedang dibaca. Seperti yang kita ketahui, tiap kartu memiliki nomor seri yang berbeda,  untuk itu pada bagian Data yang dikirim berasal dari data yang diperoleh saat pembacaan kartu. Data ini tersimpan pada variabel Data_response() setelah proses permintaan nomor seri kartu (langkah 2). Oleh karena itu perlu ada modifikasi pada bagian prosedur Kirim_mifare(). Modifikasinya adalah menambahkan variabel tipe pengiriman (Type). Lebih lanjut bisa dilihat pada program berikut:

Selanjutnya, prosedur-prosedur diatas digunakan untuk membaca isi kartu. Isi kartu tersimpan pada variabel data_response() indeks 6 hingga 21. Dengan mengikuti langkah-langkah proses pembacaan pada artikel sebelumnya, dapat disusun kode program untuk membaca kartu mifare. Contoh potongan kode sederhananya seperti berikut:

Berikut foto hasil percobaan, isi data block kartu ditampilkan pada LCD. Pada gambar tidak terlihat antenna, karena diletakkan pada bagian bawah PCB. Selamat mencoba!

Comments

comments

Leave a Reply