/PN532-1

NFC library using PN532 to read/write card and communicate with android

Primary LanguageC++

NFC library

This is an library for PN532 to use NFC technology. It is for NFC Shield and Grove - NFC.

NFC Shield Grove - NFC

Features

To Do

  • To support more than one INFO PDU of P2P communication
  • To read/write NFC Type 4 tag

Getting Started

  • Easy way

    1. Download zip file and extract the 4 folders(PN532, PN532_SPI, PN532_I2C and PN532_HSU) into Arduino's libraries.
    2. Download Don's NDEF library, extract it into Arduino's libraries and rename it to NDEF.
    3. Follow the examples of the two libraries.
  • Git way for Linux/Mac (recommended)

    1. Get PN532 library and NDEF library

       cd {Arduino}\libraries  
       git clone --recursive https://github.com/Seeed-Studio/PN532.git NFC
       ln -s NFC/PN532 ./
       ln -s NFC/PN532_SPI ./
       ln -s NFC/PN532_I2C ./
       ln -s NFC/PN532_HSU ./
       ln -s NFC/NDEF ./
      
    2. Follow the examples of the two libraries

Contribution

It's based on Adafruit_NFCShield_I2C. Seeed Studio rewrite the library to make it easy to support different interfaces and platforms. @Don writes the NDEF library to make it more easy to use. @JiapengLi adds HSU interface. @awieser adds card emulation function.

HSU Interface

HSU is short for High Speed Uart. HSU interface needs only 4 wires to connect PN532 with Arduino, Sensor Shield can make it more easier. For some Arduino boards like Leonardo, DUE, Mega ect, there are more than one Serial on these boards, so we can use this additional Serial to control PN532, HSU uses 115200 baud rate .

To use the Serial1 control PN532, refer to the code below.

	#include <PN532_HSU.h>
	#include <PN532.h>
	
	PN532_HSU pn532hsu(Serial1);
	PN532 nfc(pn532hsu);

	void setup(void)
	{
		nfc.begin();
		//...
	}

If your Arduino has only one serial interface and you want to keep it for control or debugging with the Serial Monitor, you can use the SoftwareSerial library to control the PN532 by emulating a serial interface. Include PN532_SWHSU.h instead of PN532_HSU.h:

	#include <SoftwareSerial.h>
	#include <PN532_SWHSU.h>
	#include <PN532.h>
	
	SoftwareSerial SWSerial( 10, 11 ); // RX, TX

	PN532_SWHSU pn532swhsu( SWSerial );
	PN532 nfc( pn532swhsu );

	void setup(void)
	{
		nfc.begin();
		//...
	}