Cara Menangani Modul NFC – RFID PN532 dengan Arduino

NFC/RFID sering digunakan untuk tagging, asset management atau tracking suatu benda/objek. NFC/RFID adalah merupakan bentuk identifikasi suatu objek (tagging) dengan media tanpa kabel (wireless) untuk jarak pendek (1-5 cm). Namun dalam perkembangannya, khusus untuk RFID, telah dikembangkan RFID yang bertipe aktif (memiliki power supply sendiri) yang memungkinkan untuk tagging dengan jarak yang lebih jauh, misal 25 m.

Antara NFC (Near Field Communication) dan RFID (Radio Frequency Identification) kurang lebih sama, yakni menggunakan gelombang RF untuk identifikasi objek. Bedanya mungkin di sisi frekuensi dan fungsi modul NFC/RFID. Jika NFC hanya menggunakan gelombang RF dengan frekuensi 13,56 MHZdalam berkomunikasi, RFID terbagi menjadi tiga kategori frekuensi, yakni LF (Low Frequency) di 125-134 KHz, HF (High Frequency) di 13,56 MHz dan UHF (Ultra High Frequency) di frekuensi 856-960 MHz. Perbedaan kedua adalah suatu modul NFC dapat berfungsi sebagai reader dan tag, beda dengan perangkat RFID yang hanya dapat berfungsi salah satu dari keduanya. Untuk implementasinya, NFC lebih banyak di-insert di smartphone, sedangkan RFID lebih banyak dikembangkan untuk tagging objek yang pasif.

pn532-module

Mengenal Modul NFC – RFID PN532

Modul PN532 adalah salah satu modul yang dapat membaca (dan menulis) tag NFC/RFID. Jadi jika Anda memiliki modul ini, Anda akan dapat membaca tag NFC maupun RFID, tergantung kode yang digunakan. Modul PN532 memiliki tiga alternatif port komunikasi, yakni SPI (Serial Perpheral Interface), I2C (Inter-Integrated Circuit) dan HSU (High Speed UART). Dengan demikian Anda akan lebih fleksibel dalam mendesain sistem Anda.

Default-nya Modul NFC/RFID PN532 ini menggunakan mode HSU, namun Anda dapat menggantinya dengan mode yang lain dengan mengubah kombinasi micro switch sebagai berikut :

setting-mode-modul-pn532-arduino

Mode Switch 1 Switch 2
HSU Off Off
I2C On Off
SPI Off On

Keterangan :
Off = switch ke bawah
On = switch ke atas

Untuk konfigurasi pinout antara modul PN532 dengan Arduino adalah sebagai berikut:

PN532

 

Arduino Uno
HSU Tx Rx (pin 0)
Rx Tx(Pin 1)
I2C SDA A4 (SDA)
SCL A5 (SCL)
SPI SCK 13
MISO 12
MOSI 11
SS 10

Perlu untuk Anda ketahui, jika menggunakan pin Serial (hardware) di Arduino Uno, Anda tidak akan bisa melakukan debug (melihat hasil Serial.println) di Serial Monitor. Oleh karena itu disarankanmenggunakan Arduino Mega atau jika tidak punya dapat menggunakan SoftwareSerial (emulasi pin digital menjadi pin serial) di Arduino Uno

Contoh Cara Menangani Modul NFC – RFID PN532 dengan Arduino

Berikutnya kita coba belajar bagaimana menangani modul PN532 ini dengan Arduino. Pertama kali, silahkan diunduh dulu library untuk menangani modul ini di sini. Ekstrak file tersebut dan salin ke folder ‘libraries’ Arduino (C:/Program Files/Arduino/Libraries). Jika sudah, coba upload sketch berikut. Sketch ini merupakan pengembangan dari program example yang disertakan library tadi.

#include <SoftwareSerial.h>

#if 0
#include <SPI.h>
#include <PN532_SPI.h>
#include "PN532.h"

PN532_SPI pn532spi(SPI, 10);
PN532 nfc(pn532spi);
#elif 1
#include <PN532_HSU.h>
#include <PN532.h>

PN532_HSU pn532hsu(Serial);
PN532 nfc(pn532hsu);
#else 
#include <Wire.h>
#include <PN532_I2C.h>
#include <PN532.h>
#include <NfcAdapter.h>

PN532_I2C pn532i2c(Wire);
PN532 nfc(pn532i2c);
#endif

SoftwareSerial mySerial(10, 11); // RX, TX
byte data1,data2,data3,data4;

void setup(void) {
Serial.begin(115200);
mySerial.begin(9600);
mySerial.println("Hello!");
pinMode(13,OUTPUT);
digitalWrite(13,LOW);

nfc.begin();

uint32_t versiondata = nfc.getFirmwareVersion();
if (! versiondata) {
mySerial.print("Didn't find PN53x board");
while (1); // halt
}

// Got ok data, print it out!
mySerial.print("Found chip PN5"); Serial.println((versiondata>>24) & 0xFF, HEX); 
mySerial.print("Firmware ver. "); Serial.print((versiondata>>16) & 0xFF, DEC); 
mySerial.print('.'); Serial.println((versiondata>>8) & 0xFF, DEC);

// Set the max number of retry attempts to read from a card
// This prevents us from waiting forever for a card, which is
// the default behaviour of the PN532.
nfc.setPassiveActivationRetries(0xFF);

// configure board to read RFID tags
nfc.SAMConfig();

mySerial.println("Waiting for an ISO14443A card");
}

void loop(void) {
boolean success;
uint8_t uid[] = { 0, 0, 0, 0, 0, 0, 0 }; // Buffer to store the returned UID
uint8_t uidLength; // Length of the UID (4 or 7 bytes depending on ISO14443A card type)

// Wait for an ISO14443A type cards (Mifare, etc.). When one is found
// 'uid' will be populated with the UID, and uidLength will indicate
// if the uid is 4 bytes (Mifare Classic) or 7 bytes (Mifare Ultralight)
success = nfc.readPassiveTargetID(PN532_MIFARE_ISO14443A, &uid[0], &uidLength);

if (success) {
mySerial.println("Found a card!");
mySerial.print("UID Length: ");mySerial.print(uidLength, DEC);mySerial.println(" bytes");
mySerial.println("UID Value: ");
//char x[20];
//String s;
for (uint8_t i=0; i < uidLength; i++) 
{
mySerial.print(" Data ke ");mySerial.print(i);
mySerial.print(" 0x");mySerial.println(uid[i]); 
if (i==0) data1=uid[i];
if (i==1) data2=uid[i];
if (i==2) data3=uid[i];
if (i==3) data4=uid[i];
}
mySerial.println("");
// Wait 1 second before continuing
if ((data1==42)&&(data2==157)==(data3==227)&&(data4==117)) digitalWrite(13,HIGH);
delay(1000);

//mySerial.println(data1);
//mySerial.println(data2);
//mySerial.println(data3);
//mySerial.println(data4);
}
else
{
// PN532 probably timed out waiting for a card
mySerial.println("Timed out waiting for a card");
digitalWrite(13,LOW);
}
}

Inti dari sketch di atas adalah membaca tag/kartu RFID dan jika sudah sesuai kartunya (dengan ID tertentu) akan menyalakan LED di pin 13 Arduino Uno. Sketch di atas bekerja menggunakan mode HSU.

cara-menangani-modul-nfc-rfid-pn532-dengan-arduino

Ohya, jika Anda akan melihat pembacaan RFID di jendela Serial Monitor, Anda akan membutuhkan sebuah USB to serial (jika menggunakan Arduino Uno, kalau Arduino Mega tidak perlu). Hubungkan Tx USB serial ke pin 10 dan Rx-nya ke pin 11 Arduino Uno. Buka jendela Serial Monitor setelah mengatur port-nya sesuai port USB serial (bukan port Arduino Uno)

0 0 votes
Article Rating

Leave a Reply

26 Comments
Oldest
Newest Most Voted
Inline Feedbacks
View all comments
Vand

Mas modul rfid ini sama yg seri RC522 sama gk fungsinya?
Terus untuk baca NFC smartphone yg sya ko gk kluar kode nfc nya

Terimakasih

zidni

kak mau tanya, apakah PN532 bisa diunakan untuk deteksi e-ktp.,?
terima kasih

zidni

terima kasih kak., 🙂

zidni

kak maaf tanya lagi, bedanya rc522 sama pn532 itu apa ya kak.,?
terima kasih 🙂

reyhan

bisa gak mas kita menggunakan dua mode komunikasi(i2C dan SPI) secara bersamaan dalam satu arduino?

fadil

maaf sblmny OOT. Bro mau tanya ni, ada kah library untuk reader dan writer yang sifatnya universal, misal saya sekarang pakenya reader dr ACS

Ridho

Apakah pn 532 dapat membaca SIM gan ??

Ilham Mustofa Pradana

gan waktu di compile error”error compailing for board arduino/ genuino uno” cara ngatasinya gimana yaa???/

idar

halo ajie, saya punya masalah pada mode SPI PN532, pada saat menjalankan code example PN532. saya merasa sudah mencocokan wire mosi,miso,ss dan sck dengan baik. adakah yang saya lewati atau solusi lain?

Muh Imad

Kak. klo untuk tulis uid bisa ga?

Meyer

mas kalau pakai PN532 + NodeMCU mode I2C bagaimana koding dan wiringnya?

Zafran

Mas kalau mau pke dua pn532 dalam satu board arduino.bisa g ya? Ada sample
Codinganya g mas.terimakasih

bang

#Ask mas pernah nyoba utk pn7150 gak ?

Ridwan Aji

Misal pakai NodeMcu Software Serialnya diganti pin apa ya,??

26
0
Would love your thoughts, please comment.x
()
x