6 فایل پیوست
ماژول آر اف آی دی pn532 nfc / rfid با قابلیت خواندن و نوشتن
ماژول PN532 NFC / RFID
NFC یک تکنولوژی محبوب در سالهای اخیر است. ما بارها شنیده ایم که شرکت های تولید کننده اسمارت فون نظیر Samsung یا HTC این تکنولوژی را به همراه تلفن همراه خود عرضه می کنند. تقریبا همه ی تلفن های همراه جدید و گران قیمت در بازار از NFC پشتیبانی می کنند. ارتباطات میدان نزدیک (Near Field Communication) به اختصار NFC استانداردی برای اسمارت فون ها و دستگاه های مشابه برای ایجاد یک ارتباط رادیویی با یکدیگر از طریق تماس با هم یا قراردادن آنها در فاصله نزدیک معمولا کمتر از چند سانتی متر می باشد.ماژول NFC از NXP PN532 ساخته شده است . NXP PN532 در عرصه ساخت NFC بسیار معروف است.در این ماژول پین های NXP532 IO روی ماژول گسترش داده شده تا کاربران به آسانی بتوانند آز آن استفاده کنند. در این ماژول ارتباط دیتا بصورت پیش فرض از طریق I2C انجام می گیرد. اگرچه در صورت تمایل ، کاربر می تواند از ارتبطاتاتی نظیر UART یا SPI در این ماژول استفاده کند. شما می توانید به آسانی این ماژول را به آردوینو خود متصل کرده و راه اندازی کنید.
فایل پیوست 466
ویژگی ها
عملکرد بر روی مد NFC یا مد RFID خوان/نویس
پشتیبنی از انواع کارت های Mifare ، Ultralight ، DesFire و...
دارای آنتن داخلی روی PCB با برد 4cm-6cm
کار به عنوان کارت 1443-A یا کارت مجازی
قابلیت مبادله دیتا با دستگاه های NFC دیگر نظیر اسمارت فون ها
سازگاری با آردوینو
مثال
در مثال زیر بعد از اتصال ماژول به آردوینو اطلاعات روی کارت MF1S50 توسط ماژول خوانده شده و در Serial Monitor نمایش داده می شود.
فایل پیوست 471
کد:
#include "Wire.h"
#include "nfc.h"
/** define a nfc class */
NFC_Module nfc;
void setup(void)
{
Serial.begin(9600);
nfc.begin();
Serial.println("MF1S50 Reader Demo From Elechouse!");
uint32_t versiondata = nfc.get_version();
if (! versiondata) {
Serial.print("Didn't find PN53x board");
while (1); // halt
}
// Got ok data, print it out!
Serial.print("Found chip PN5"); Serial.println((versiondata>>24) & 0xFF, HEX);
Serial.print("Firmware ver. "); Serial.print((versiondata>>16) & 0xFF, DEC);
Serial.print('.'); Serial.println((versiondata>>8) & 0xFF, DEC);
/** Set normal mode, and disable SAM */
nfc.SAMConfiguration();
}
void loop(void)
{
u8 buf[32],sta;
/** Polling the mifar card, buf[0] is the length of the UID */
sta = nfc.InListPassiveTarget(buf);
/** check state and UID length */
if(sta && buf[0] == 4){
/** the card may be Mifare Classic card, try to read the block */
Serial.print("UUID length:");
Serial.print(buf[0], DEC);
Serial.println();
Serial.print("UUID:");
nfc.puthex(buf+1, buf[0]);
Serial.println();
/** factory default KeyA: 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF */
u8 key[6] = {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF};
u8 blocknum = 4;
/** Authentication blok 4 */
sta = nfc.MifareAuthentication(0, blocknum, buf+1, buf[0], key);
if(sta){
/** save read block data */
u8 block[16];
Serial.println("Authentication success.");
// uncomment following lines for writing data to blok 4
/*
strcpy((char*)block, "Elechoues - NFC");
sta = nfc.MifareWriteBlock(blocknum, block);
if(sta){
Serial.println("Write block successfully:");
}
*/
/** read block 4 */
sta = nfc.MifareReadBlock(blocknum, block);
if(sta){
Serial.println("Read block successfully:");
nfc.puthex(block, 16);
Serial.println();
}
/** read block 5 */
sta = nfc.MifareReadBlock(blocknum+1, block);
if(sta){
Serial.println("Read block successfully:");
nfc.puthex(block, 16);
Serial.println();
}
/** read block 6 */
sta = nfc.MifareReadBlock(blocknum+2, block);
if(sta){
Serial.println("Read block successfully:");
nfc.puthex(block, 16);
Serial.println();
}
/** read block 7 */
sta = nfc.MifareReadBlock(blocknum+3, block);
if(sta){
Serial.println("Read block successfully:");
nfc.puthex(block, 16);
Serial.println();
}
}
}
}
مرجع:
https://github.com/elechouse/nfc-pn532
Arduino Libraries | Arduino Tips, Tricks, and Techniques | Adafruit Learning System
Elechouse, Arduino Play House
جهت سفارش این کالا، به این بخش در فروشگاه آفتاب رایانه مراجعه نمایید.