Contents
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.
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 :
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.
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)
a Technopreneur – writer – Enthusiastic about learning AI, IoT, Robotics, Raspberry Pi, Arduino, ESP8266, Delphi, Python, Javascript, PHP, etc. Founder of startup Indomaker.com
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
RFID module yg dipakai pada artikel di atas adalah tipe PN532, beda dengan tipe RC522.
Salah satu kelebihan tipe PN532 adalah support teknologi NFC, kelebihan lainnya adalah memiliki banyak alternatif port komunikasi (UART, I2C, SPI)
kak mau tanya, apakah PN532 bisa diunakan untuk deteksi e-ktp.,?
terima kasih
sy pernah nyoba dan gagal. Tapi ada yg pernah nyoba dan berhasil. Sy ngga tahu apakah tipe kartunya yg beda atau gimana. Kalo e-ktp sy keluaran thn 2016
terima kasih kak., 🙂
kak maaf tanya lagi, bedanya rc522 sama pn532 itu apa ya kak.,?
terima kasih 🙂
rc522 tipe module rfid yg hanya support komunikasi synchronous dengan SPI, kalo PN532 bisa SPI, bisa I2C, bisa serial UART (asynchronous)
bisa gak mas kita menggunakan dua mode komunikasi(i2C dan SPI) secara bersamaan dalam satu arduino?
ini maksudnya untuk mengakses module NFC di atas secara bersamaan? kalo maksudnya begitu berarti ngga bisa. Tapi kalo maksudnya mengakses device yang berbeda berart bisa
maaf sblmny OOT. Bro mau tanya ni, ada kah library untuk reader dan writer yang sifatnya universal, misal saya sekarang pakenya reader dr ACS
sepertinya ga ada. Justru adanya library itu karena specific to hardware
Apakah pn 532 dapat membaca SIM gan ??
sepertinya ga bisa mas
gan waktu di compile error”error compailing for board arduino/ genuino uno” cara ngatasinya gimana yaa???/
errornya apa dulu, tiap error penanganannya beda-beda. Coba copy kan error nya ke sini
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?
masalah atau errornya apa ya?
Kak. klo untuk tulis uid bisa ga?
bisa, yg penting card-nya writeable
mas kalau pakai PN532 + NodeMCU mode I2C bagaimana koding dan wiringnya?
kalau koding kurang lebih sama. Untuk wiring, i2c nodemcu di pin D1 dan D2
Mas kalau mau pke dua pn532 dalam satu board arduino.bisa g ya? Ada sample
Codinganya g mas.terimakasih
#Ask mas pernah nyoba utk pn7150 gak ?
belum pernah 🙂
Misal pakai NodeMcu Software Serialnya diganti pin apa ya,??
alternatifnya bisa pake D5 dan D6