<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.geekworm.com/index.php?action=history&amp;feed=atom&amp;title=NFC_Module_for_Arduino</id>
	<title>NFC Module for Arduino - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.geekworm.com/index.php?action=history&amp;feed=atom&amp;title=NFC_Module_for_Arduino"/>
	<link rel="alternate" type="text/html" href="https://wiki.geekworm.com/index.php?title=NFC_Module_for_Arduino&amp;action=history"/>
	<updated>2026-06-05T09:33:38Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.43.8</generator>
	<entry>
		<id>https://wiki.geekworm.com/index.php?title=NFC_Module_for_Arduino&amp;diff=29500&amp;oldid=prev</id>
		<title>Admin: Add {{Deprecated}} template</title>
		<link rel="alternate" type="text/html" href="https://wiki.geekworm.com/index.php?title=NFC_Module_for_Arduino&amp;diff=29500&amp;oldid=prev"/>
		<updated>2026-04-30T02:57:18Z</updated>

		<summary type="html">&lt;p&gt;Add {{Deprecated}} template&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 10:57, 30 April 2026&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l1&quot;&gt;Line 1:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 1:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;{{Deprecated}}&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;{{GD Template Impl}}&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;{{GD Template Impl}}&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[[File:NFC-IMG_0656.jpg|right|thumb|NFC Module for Arduino]]&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[[File:NFC-IMG_0656.jpg|right|thumb|NFC Module for Arduino]]&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;

&lt;!-- diff cache key wiki_2026:diff:1.41:old-9508:rev-29500:php=table --&gt;
&lt;/table&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://wiki.geekworm.com/index.php?title=NFC_Module_for_Arduino&amp;diff=9508&amp;oldid=prev</id>
		<title>Harry at 04:43, 15 April 2020</title>
		<link rel="alternate" type="text/html" href="https://wiki.geekworm.com/index.php?title=NFC_Module_for_Arduino&amp;diff=9508&amp;oldid=prev"/>
		<updated>2020-04-15T04:43:57Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;{{GD Template Impl}}&lt;br /&gt;
[[File:NFC-IMG_0656.jpg|right|thumb|NFC Module for Arduino]]&lt;br /&gt;
[[File:NFC-IMG_0635.jpg|right|thumb|NFC Module for Arduino]]&lt;br /&gt;
== Introduction ==&lt;br /&gt;
Near Field Communications (NFC), a contactless, Wi-Fi-lite style tech that could already be in your smartphone, and could soon be a regular feature of your commute.&lt;br /&gt;
Near Field Communications(NFC) is a set of short-range wireless technologies, typically requiring a distance of 10cm or less, for two devices such as smartphones or the similar things very close to each other to establish communication. &lt;br /&gt;
Communication is also possible between a NFC device and unpowered NFC chips such as tags, stickers, key fobs and cards which do not require batteries.&lt;br /&gt;
&lt;br /&gt;
The NFC Module for Arduino is designed to extend this powerful feature for your project or application based on Arduino.It integrates a PN532 NFC controller from Philips.The driver interface for this product is UART interface of the microcontroller. So it&amp;#039;s possible for you to test it via a USB to UART converter directly. On the other hand, for the applications with microcontroller, the module provides an event for your processor when detects the NFC tags, stickers, key fobs, or cards via high speed serial uart.&lt;br /&gt;
&lt;br /&gt;
== Applications ==&lt;br /&gt;
* Contactless payment systems&lt;br /&gt;
* Bluetooth and Wi-Fi connections&lt;br /&gt;
* Social networking situations, such as sharing contacts, photos, videos or files&lt;br /&gt;
* Electronic identity documents and keycards&lt;br /&gt;
* Smartphone automation and NFC tags&lt;br /&gt;
&lt;br /&gt;
== Specification ==&lt;br /&gt;
* Working Voltage: 3.3v or 5v&lt;br /&gt;
* Host interface: UART&lt;br /&gt;
* Default Band rate: 115200 bps&lt;br /&gt;
* Integrate PN532 NFC controller&lt;br /&gt;
* Supports ISO 14443A/MIFARE&lt;br /&gt;
* Supports ISO 14443B in reader/writer mode only&lt;br /&gt;
* Typical max operating distance for detecting NFC tags from 20 to 50mm depending on the antenna size of the tag&lt;br /&gt;
* Serve for contactless communication at 13.56MHz&lt;br /&gt;
&lt;br /&gt;
== Connect Diagram ==&lt;br /&gt;
[[File:NFC-750px-Pn532_img.png|750px|center|NFC Module connect diagram]]&lt;br /&gt;
&lt;br /&gt;
== Sample Code ==&lt;br /&gt;
&amp;lt;per&amp;gt;&lt;br /&gt;
/* &lt;br /&gt;
 # From Dfrobot wiki: http://www.dfrobot.com/wiki/index.php/NFC_Module_for_Arduino_(SKU:DFR0231)&lt;br /&gt;
 #&lt;br /&gt;
 # Editor : Adrian&lt;br /&gt;
 # Date   : 2013.04.18&lt;br /&gt;
 # Ver    : 0.1&lt;br /&gt;
 # Product: NFC Module for Arduino&lt;br /&gt;
 # SKU    : DFR0231&lt;br /&gt;
   &lt;br /&gt;
 # Description:     &lt;br /&gt;
 # When the a card close to the device , the PC will receive the data &lt;br /&gt;
 # Connect the NFC Card&amp;#039;s TXD, RXD, GND, +3.3V to Nano&amp;#039;s D0RX, D1TX, GND, +3.3V&lt;br /&gt;
 # Or connect the NFC Card&amp;#039;s TXD, RXD, GND, +5V to Nano&amp;#039;s D0RX, D1TX, GND, +5V&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
 PN532 reads the tag by Arduino mega/Leonardo&lt;br /&gt;
 command list:&lt;br /&gt;
 &lt;br /&gt;
 #wake up reader&lt;br /&gt;
 send: 55 55 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ff 03 fd d4 14 01 17 00&lt;br /&gt;
 return: 00 00 FF 00 FF 00 00 00 FF 02 FE D5 15 16 00&lt;br /&gt;
 &lt;br /&gt;
 #get firmware&lt;br /&gt;
 send: 00 00 FF 02 FE D4 02 2A 00&lt;br /&gt;
 return: 00 00 FF 00 FF 00 00 00 FF 06 FA D5 03 32 01 06 07 E8 00&lt;br /&gt;
 &lt;br /&gt;
 #read the tag&lt;br /&gt;
 send: 00 00 FF 04 FC D4 4A 01 00 E1 00&lt;br /&gt;
 return: 00 00 FF 00 FF 00 00 00 FF 0C F4 D5 4B 01 01 00 04 08 04 XX XX XX XX 5A 00&lt;br /&gt;
 XX is tag.&lt;br /&gt;
  */&lt;br /&gt;
 &lt;br /&gt;
 //************* start **************&lt;br /&gt;
&lt;br /&gt;
const unsigned char wake[24]={&lt;br /&gt;
  0x55, 0x55, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \&lt;br /&gt;
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x03, 0xfd, 0xd4, 0x14, 0x01, 0x17, 0x00};//wake up NFC module&lt;br /&gt;
const unsigned char firmware[9]={&lt;br /&gt;
  0x00, 0x00, 0xFF, 0x02, 0xFE, 0xD4, 0x02, 0x2A, 0x00};//&lt;br /&gt;
const unsigned char tag[11]={&lt;br /&gt;
  0x00, 0x00, 0xFF, 0x04, 0xFC, 0xD4, 0x4A, 0x01, 0x00, 0xE1, 0x00};//detecting tag command&lt;br /&gt;
const unsigned char std_ACK[25] = {&lt;br /&gt;
  0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x0C, \&lt;br /&gt;
0xF4, 0xD5, 0x4B, 0x01, 0x01, 0x00, 0x04, 0x08, 0x04, 0x00, 0x00, 0x00, 0x00, 0x4b, 0x00};&lt;br /&gt;
unsigned char old_id[5];&lt;br /&gt;
&lt;br /&gt;
unsigned char receive_ACK[25];//Command receiving buffer&lt;br /&gt;
//int inByte = 0;               //incoming serial byte buffer&lt;br /&gt;
&lt;br /&gt;
#if defined(ARDUINO) &amp;amp;&amp;amp; ARDUINO &amp;gt;= 100&lt;br /&gt;
#include &amp;quot;Arduino.h&amp;quot;&lt;br /&gt;
#define print1Byte(args) Serial1.write(args)&lt;br /&gt;
#define print1lnByte(args)  Serial1.write(args),Serial1.println()&lt;br /&gt;
#else&lt;br /&gt;
#include &amp;quot;WProgram.h&amp;quot;&lt;br /&gt;
#define print1Byte(args) Serial1.print(args,BYTE)&lt;br /&gt;
#define print1lnByte(args)  Serial1.println(args,BYTE)&lt;br /&gt;
#endif&lt;br /&gt;
&lt;br /&gt;
void setup()&lt;br /&gt;
{&lt;br /&gt;
  Serial.begin(9600);	// open serial with PC&lt;br /&gt;
  Serial1.begin(115200);	//open serial1 with device&lt;br /&gt;
  //Serial2.begin(115200);&lt;br /&gt;
  wake_card();&lt;br /&gt;
  delay(100);&lt;br /&gt;
  read_ACK(15);&lt;br /&gt;
  delay(100);&lt;br /&gt;
  display(15);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void loop()&lt;br /&gt;
{&lt;br /&gt;
  send_tag(); &lt;br /&gt;
  read_ACK(25);&lt;br /&gt;
  delay(100);&lt;br /&gt;
  if (!cmp_id ()) {&lt;br /&gt;
    if (test_ACK ()) {&lt;br /&gt;
      display (25);&lt;br /&gt;
      delay (100);&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
  copy_id ();&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
void copy_id (void) &lt;br /&gt;
{//save old id&lt;br /&gt;
  int ai, oi;&lt;br /&gt;
  for (oi=0, ai=19; oi&amp;lt;5; oi++,ai++) {&lt;br /&gt;
    old_id[oi] = receive_ACK[ai];&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
char cmp_id (void) &lt;br /&gt;
{//return true if find id is old&lt;br /&gt;
  int ai, oi;&lt;br /&gt;
  for (oi=0,ai=19; oi&amp;lt;5; oi++,ai++) {&lt;br /&gt;
    if (old_id[oi] != receive_ACK[ai])&lt;br /&gt;
      return 0;&lt;br /&gt;
  }&lt;br /&gt;
  return 1;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
int test_ACK (void) &lt;br /&gt;
{// return true if receive_ACK accord with std_ACK&lt;br /&gt;
  int i;&lt;br /&gt;
  for (i=0; i&amp;lt;19; i++) {&lt;br /&gt;
    if (receive_ACK[i] != std_ACK[i])&lt;br /&gt;
      return 0;&lt;br /&gt;
  }&lt;br /&gt;
  return 1;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
void send_id (void) &lt;br /&gt;
{//send id to PC&lt;br /&gt;
  int i;&lt;br /&gt;
  Serial.print (&amp;quot;ID: &amp;quot;);&lt;br /&gt;
  for (i=19; i&amp;lt;= 23; i++) {&lt;br /&gt;
    Serial.print (receive_ACK[i], HEX);&lt;br /&gt;
    Serial.print (&amp;quot; &amp;quot;);&lt;br /&gt;
  }&lt;br /&gt;
  Serial.println ();&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
void UART1_Send_Byte(unsigned char command_data)&lt;br /&gt;
{//send byte to device&lt;br /&gt;
  print1Byte(command_data);&lt;br /&gt;
#if defined(ARDUINO) &amp;amp;&amp;amp; ARDUINO &amp;gt;= 100&lt;br /&gt;
  Serial1.flush();// complete the transmission of outgoing serial data &lt;br /&gt;
#endif&lt;br /&gt;
} &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
void UART_Send_Byte(unsigned char command_data)&lt;br /&gt;
{//send byte to PC&lt;br /&gt;
  Serial.print(command_data,HEX);&lt;br /&gt;
  Serial.print(&amp;quot; &amp;quot;);&lt;br /&gt;
} &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
void read_ACK(unsigned char temp)&lt;br /&gt;
{//read ACK into reveive_ACK[]&lt;br /&gt;
  unsigned char i;&lt;br /&gt;
  for(i=0;i&amp;lt;temp;i++) {&lt;br /&gt;
    receive_ACK[i]= Serial1.read();&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
void wake_card(void)&lt;br /&gt;
{//send wake[] to device&lt;br /&gt;
  unsigned char i;&lt;br /&gt;
  for(i=0;i&amp;lt;24;i++) //send command&lt;br /&gt;
    UART1_Send_Byte(wake[i]);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
void firmware_version(void)&lt;br /&gt;
{//send fireware[] to device&lt;br /&gt;
  unsigned char i;&lt;br /&gt;
  for(i=0;i&amp;lt;9;i++) //send command&lt;br /&gt;
    UART1_Send_Byte(firmware[i]);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
void send_tag(void)&lt;br /&gt;
{//send tag[] to device&lt;br /&gt;
  unsigned char i;&lt;br /&gt;
  for(i=0;i&amp;lt;11;i++) //send command&lt;br /&gt;
    UART1_Send_Byte(tag[i]);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
void display(unsigned char tem)&lt;br /&gt;
{//send receive_ACK[] to PC&lt;br /&gt;
  unsigned char i;&lt;br /&gt;
  for(i=0;i&amp;lt;tem;i++) //send command&lt;br /&gt;
    UART_Send_Byte(receive_ACK[i]);&lt;br /&gt;
  Serial.println();&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
//*********** end *************&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Packing List ==&lt;br /&gt;
* 1 x NFC module&lt;br /&gt;
* 1 x NFC sticker (Round)&lt;br /&gt;
&lt;br /&gt;
== Documents ==&lt;br /&gt;
* [http://www.dfrobot.com/wiki/index.php/NFC_Module_for_Arduino_(SKU:DFR0231) Wiki Doc ]&lt;br /&gt;
* [http://www.dfrobot.com/image/data/DFR0231/NFC%20Module%20for%20Arduino%20V1.0_SCH.pdf Schematic]&lt;br /&gt;
* [http://www.dfrobot.com/image/data/DFR0231/NFC%20Module%20for%20Arduino%20V1.0%20layout.pdf Layout]&lt;br /&gt;
* [http://www.dfrobot.com/image/data/DFR0231/pn532ds.pdf PN532 datasheet]&lt;br /&gt;
* [http://www.dfrobot.com/image/data/DFR0231/pn532um.pdf PN532 user manual]&lt;br /&gt;
* [http://www.dfrobot.com/image/data/DFR0231/NFCModuleSketch.zip Arduino sample sketch]&lt;br /&gt;
&lt;br /&gt;
[[Category:Product Manual]]  &lt;br /&gt;
[[Category:Arduino]]&lt;/div&gt;</summary>
		<author><name>Harry</name></author>
	</entry>
</feed>