Pendahuluan
NFC adalah teknologi komunikasi tanpa kabel dengan jarak pendek (kurang dari 10cm). Fitur NFC menawarkan komunikasi yang aman dan nyaman (karena menggunakan kartu tipis) antara 2 perangkat. NFC pertama kali ditemukan oleh NXP (Philips), Nokia, dan Sony. Saat ini NFC sendiri memiliki standard yang diwadahi dengan adanya forum NFC.
NFC menggunakan frekuensi kerja 13.56MHz yang cara kerjanya antara 2 alat, yang satu berperan sebagai inisiator dan satu lagi target/ sasaran. Standar NFC yang digunakan secara umum adalah ISO 14443A yang merupakan standar protokol untuk tag RFID (Radio Frequency Identification) yang dirancang untuk transaksi keuangan. Tag ini menggunakan frekuensi 13,56 MHz dan memiliki jarak baca yang pendek untuk melindungi dari penyadapan data.

RFID bisa terbagi menjadi dua buah cara komunikasi, komunikasi pasif : NFC digunakan untuk membaca atau menulis RFID card/ Tags. Komunikasi aktif : NFC digunakan untuk komunikasi (peer to peer) antara 2 buah alat yang dilengkapi dengan koneksi NFC. Kita akan membahas disini adalah komunikasi pasif daripada NFC (antara Kartu NFC/ RFID dengan Mesin Pembaca).

Komunikasi Pasif NFC (Kartu/ Tag dengan Standar ISO14443A)
Standar ISO14443A banyak digunakan oleh pabrikan untuk memproduksi kartu RFID/ tag RFID. Salah satu yang sering dijumpai adalah Mifare. Perhatikan diagram protokol NFC berikut ini :

Terdapat 2 macam kartu yang paling sering kita jumpai di pasaran yaitu Mifare Classic dan Mifare Ultralight. Pada Mifare Classic 1K (1024 bytes), berarti memiliki EEPROM (memory) sehingga kita dapat mengakses/ tulis ulang (write) ID nya menggunakan Modul RFID PN532. Contoh fisik kartu Mifare Classic terdapat pada kartu e-toll/ e-money/ flash (keluaran pertama kali) karena versi terbaru adalah versi Ultralight. Contoh fisik kartu Mifare Ultralight adalah kartu kredit dengan fitur TAP untuk pembayaran, kartu tanda penduduk elektronik (e-KTP Elektronik Indonesia).
Kartu RFID Mifare Classic
Mifare Classic 4K datasheet (Manufacturer programmed 7-byte UID or 4-byte NUID identifier)
- EEPROM : 4 kB, organized in 32 sectors of 4 blocks and 8 sectors of 16 blocks (one block consists of 16 byte).
- Data retention time of 10 years
- User definable access conditions for each memory block
- Write endurance 200.000 cycles
- Contoh kartu NFC : Kartu E-Toll, E-Money, Flash, Kartu Kredit, dan E-KTP.
Untuk membaca kartu NFC, menulis ulang ID dan seterusnya, kita memerlukan modul reader/ write. Klinik Robot.com menjual produk RFID PN532 dengan kemampun read/ write RFID card/ tags. Beberapa module RFID hanya bisa membaca (read) saja, tanpa fitur menulis (write).
KR06076 PN532 NFC Module RFID controller breakout board read and write
Perhatikan penggunaan modul RFID PN532 berikut ini bersamaan dengan Arduino (koneksi yang dapat kita gunakan yaitu SPI dan I2C) :
1. Koneksi Arduino dan PN532 (Protokol Komunikasi SPI)

Untuk menggunakan PN532 dengan Arduino kita perlu menggunakan Library PN532, library dapat didownload disini. Bawaan contoh program dari library Arduino (File > Examples > Adafruit PN532 > readMifare) semuanya default untuk koneksi SPI, sehingga ada yang perlu kita rubah scriptnya jika kita menggunakan koneksi I2C.
IC CD4050 digunakan untuk mengkonversi signal 5V (Arduino) ke 3V3 (PN532), hal ini umum dipasang sebagai level shifter/ TTL Level Shifter.
2. Koneksi Arduino dan PN532 (Protokol Komunikasi I2C)
Koneksi I2C antara module PN532 cukup sederhana karena hanya merubah posisi Jumper pada board dan kita menghubungkan kabel I2C saja, perhatikan diagram dan keterangan berikut ini :

Kemudian untuk pemrograman dengan menggunakan Arduino, kita tetap gunakan examples yang ada, namun ada script yang perlu diganti disetiap example tersebut (karena bawaan library dipersiapkan untuk koneksi SPI), perhatikan potongan script berikut ini (terdapat pada setiap example PN532) :
// Uncomment just _one_ line below depending on how your breakout or shield // is connected to the Arduino: // Use this line for a breakout with a software SPI connection (recommended): Adafruit_PN532 nfc(PN532_SCK, PN532_MISO, PN532_MOSI, PN532_SS); // Use this line for a breakout with a hardware SPI connection. Note that // the PN532 SCK, MOSI, and MISO pins need to be connected to the Arduino's // hardware SPI SCK, MOSI, and MISO pins. On an Arduino Uno these are // SCK = 13, MOSI = 11, MISO = 12. The SS line can be any digital IO pin. //Adafruit_PN532 nfc(PN532_SS); // Or use this line for a breakout or shield with an I2C connection: //Adafruit_PN532 nfc(PN532_IRQ, PN532_RESET);
untuk dirubah menjadi sebagai berikut :
// Uncomment just _one_ line below depending on how your breakout or shield // is connected to the Arduino: // Use this line for a breakout with a software SPI connection (recommended): //Adafruit_PN532 nfc(PN532_SCK, PN532_MISO, PN532_MOSI, PN532_SS); // Use this line for a breakout with a hardware SPI connection. Note that // the PN532 SCK, MOSI, and MISO pins need to be connected to the Arduino's // hardware SPI SCK, MOSI, and MISO pins. On an Arduino Uno these are // SCK = 13, MOSI = 11, MISO = 12. The SS line can be any digital IO pin. //Adafruit_PN532 nfc(PN532_SS); // Or use this line for a breakout or shield with an I2C connection: Adafruit_PN532 nfc(PN532_IRQ, PN532_RESET);
Perhatikan perubahan hanya terdapat pada tanda “//” yang dihilangkan dan ada yang ditambahkan (merubah script komunikasi dari SPI menjadi I2C).
Berikut video demonstrasi penggunaan PN532 dengan Arduino via komunikasi I2C :
KR06076 PN532 NFC Module RFID controller breakout board read and write