Arduino dan Modul NFC PN532

Pada bagian ini Arduino akan membaca input tag dari kartu RFID dengan meggunakan modul NFC PN532 pada mode SPI. Jika tag terdeteksi oleh Arduino, maka Arduino akan menampilkan output sesuai kondisi yang di dapat pada serial monitor Arduino IDE. Rangkaian dari proyek ini ditunjukkan pada gambar 1.1.

Gambar 1.1 Arduino dan PN532

Hardware yang dibutuhkan :

1. Modul NFC PN532 dan kartu tag tipe ISO14443A

2. Arduino UNO

3. Kabel jumper

Keterangan Rangkaian dan Pemrograman :

1. Hubungkan pin VCC modul NFC PN532 dengan pin VCC 5V Arduino.

2. Hubungkan pin GND modul NFC PN532 dengan pin GND Arduino.

3. Hubungkan pin SS modul NFC PN532 dengan pin digital 10 Arduino.

4. Hubungkan pin SCK modul NFC PN532 dengan pin digital 13 Arduino.

5. Hubungkan pin MOSI modul NFC PN532 dengan pin digital 11 Arduino.

6. Hubungkan pin MISO modul NFC PN532 dengan pin digital 12 Arduino.

7.  Pastikan switch pada modul NFC PN532 sudah dikonfigurasi untuk mode SPI (switch 1 = 0 dan switch 2 = 1).

Sebelum mulai membuat program, ada baiknya kita melakukan instalasi library yang diperlukan untuk contoh proyek ini. Berikut ini langkah-langkahnya :

1. Unduh library PN532 di alamat :

     https;//github.com/elechouse/PN532

2. Ekstrak file zip tersebut

3. Pindahkan seluruh isi folder PN532-PN532_HSU hasil ekstrak ke folder libraries Arduino yang berlokasi di :

    C : \Users\Nama_Pengguna\Documents\Arduino\libraries

4. Pastikan folder NDEF, PN532, PN532_SPI, PN532_HSU, PN532_SWHSU dan PN532_I2C ada di dalam folder libraries Arduino seperti pada gambar berikut ini.

Gambar 1.2 Isi Folder Libraries

5. Restart Arduino IDE.

Setelah berhasil melakukan instalasi, maka langkah selanjutnya adalah membuat program untuk membaca nomor tag kartu yang dideteksi oleh modul sensor NFC PN532. Pada contoh proyek kali ini, kita akan memanfaatkan program contoh yang sudah disediakan pada library NFC PN532 yang sudah kita install. Berikut ini langkah-langkah untuk memanggil file contoh yang diperlukan :

1. Buka Arduino IDE

2. Pilih menu "File"

3. Pilih "Examples"

4. Pilih "PN532"

5. Pilih "iso14443a_uid" seperti pada gambar di bawah ini.

Gambar 1.3 Memilih File Contoh Library PN532

Setelah contoh program terbuka kita perlu melakukan sedikit modifikasi. Untuk menggunakan mode SPI, ubah nilai 0 pada baris program yang ditunjukkan pada gambar berikut ini menjadi 1.

Gambar 1.3 Modifikasi Mode

Setelah mengubah nilai untuk pemilihan mode tersebut, maka compile program contoh tersebut dan upload ke Arduino. Selanjutnya, buka serial monitor Arduino IDE dan tap kartu ke modul NFC PN532. Gambar 1.4 berikut ini menunjukkan kartu tag yang berhasil dikenali.

Gambar 1.4 Nomor Kartu yang Dikenali NFC PN532

Contoh selanjutnya, Arduino akan membaca input tag dari modul NFC PN532 kemudian nomor tag tersebut akan diubah menjadi tipe string dan hasilnya akan dibandingkan. Perbandingan ini dilakukan untuk menentukan apakah kartu yang di tap kartu 1 atau kartu 2. Hasil akhirnya, program akan menampilkan string terkait kartu yang di tap pada serial monitor Arduino IDE. Data nomor kartu tag yang dibandingkan pada program ini di dapat dari hasil percobaan dengan menggunakan contoh program iso14443a_uid yang tersedia pada library. Rangkaian yang diperlukan untuk contoh kasus ini ditunjukkan pada gambar 1.1 dan contoh programnya ditunjukkan pada contoh program prog1.1 yang merupakan hasil modifikasi dari program iso14443a_uid.

Catatan : kartu tag yang digunakan pada contoh ini adalah kartu tag dengan panjang data 4 bytes.

Contoh Program : Prog1.1. NFC PN532 Banding



Penjelasan :

1. Di bagian awal program diinisialisasikan variabel no_kartu dengan tipe string.

2. Selanjutnya terdapat percabangan if yang digunakan untuk pengaturan mode komunikasi. Pada kasus ini menggunakan mode SPI.

3. Di dalam void setup terdapat pengaturan komunikasi serial dengan baud rate sebesar 115200bps diikuti dengan pencetakkan string "Hello!" ke serial monitor Arduino IDE.

4. Bagian selanjutnya adalah pendeteksian modul NFC PN532 oleh Arduino.

5. Jika tidak ada modul NFC PN532 yang terhubung ataupun modul tidak dikenali, maka program akan mencetak string "Didn't find PN53x board" ke layar serial monitor Arduino IDE dan akan terus diam disana tidak akan melakukan apa-apa.

6. Jika modul NFC dikenali, maka versi dari chip pada modul dan versi firmware yang digunakan akan dicetak ke serial monitor Arduino IDE.

7. Baris selanjutnya, nilai dari jumlah maksimum untuk percobaan membaca nomor kartu tag dengan perintah "nfc.setPassiveActivationRetries(oxFF)".

8. Perintah pada baris selanjutnya adalah perintah terkait konfigurasi modul untuk pembacaan tag RFID diikuti dengan perintah pencetakan string "Waiting for an ISO14443A card" ke layar serial monitor Arduino.

9. Selanjutnya program masuk ke void loop yang akan terus berulang tanpa henti.

10. Di awal void loop terdapat deklarasi variabel, yaitu deklarasi variabel success dengan tipe Boolean.

11. Baris selanjutnya adalah inisialisasi variabel array dengan nama uid yang memiliki 4 index data. Variabel ini akan digunakan untuk menampung nomor tag yang dikenali.

12. Selanjutnya inisialisasi variabel uidLength dengan tipe unsigned integer 8 bit. Variabel ini digunakan untuk menampung jenis kartu yang dikenali, apakah kartu 4 bytes atau 7 bytes.

13. Perintah pada baris selanjutnya adalah perintah untuk membaca kartu tag. Jika kartu tag dikenali (tipe kartu iso14443a), maka nomor tagnya akan disimpan ke variabel uid dan panjang data dari nomor tag akan disimpan ke variabel uidLength.

14. Ketika nomor tag dan panjang data di dapatkan, maka variabel success akan bernilai True.

15. Selanjutnya program masuk ke percabangan yang akan menyeleksi variabel success.

16. Jika variabel success True, maka string 'Found an ISO14443 card", string "UID Length : ", isi variabel uidLength, string "UID Value : " akan dicetak ke layar serial monitor Arduino IDE.

17. Baris selanjutnya isi array variabel uid dari mulai index 0 sampai dengan index 3 (dalam bentuk hexadecimal) diubah menjadi tipe string dan disimpan ke variabel a,b,c dan d.

18. Selanjutnya, isi variabel a,b,c dan d disatukan dengan menggunakan operator "+" dan hasilnya disimpan ke variabel no_kartu.

19. Perintah pada baris selanjutnya adalah perintah jeda waktu selama 1 detik.

20. Jika kartu tag tidak dikenali atau tidak ada kartu yang di tap ke modul NFC PN532, maka string "Timed out waiting for a card".

21. Baris selanjutnya isi dari variabel no_kartu akan diseleksi.

22. Jika isi dari variabel no_kartu sama dengan coc38c58 maka string "kartu_1" akan dicetak ke layar serial monitor Arduino IDE.

23. Jika isi dari variabel no_kartu sama dengan f24dda2emaka string "kartu_2" akan dicetak ke layar serial monitor Arduino IDE.

24. Baris perintah terakhir dari program ini adalah perintah untuk mengosongkan isi variabel no_kartu.

Gambar 1.6 berikut ini menunjukkan tampilan hasil perbandingan berdasarkan kartu yang di tap ke modul NFC PN532. 

Gambar 1.6 Kartu 1 dan Kartu 2 Dikenali NFC PN532


Posting Komentar

0 Komentar