آردوینو Arduinoمطالب علمیویدیو

راه اندازی ماژول RFID PN532 با آردوینو

آشنایی با ماژول RFID PN532

NFC جدید ترین تکنولوژی در زمینه کارت های RFID می باشد. این تکنولوژی توسط شرکت های تولید کننده اسمارت فون نظیر Samsung یا HTC به کارگرفته شده و به همراه تلفن همراه خود عرضه می کنند.  ارتباطات میدان نزدیک (Near Field Communication) به اختصار NFC استانداردی برای اسمارت فون ها و دستگاه های مشابه برای ایجاد یک ارتباط رادیویی با یکدیگر از طریق تماس با هم یا قراردادن آنها در فاصله نزدیک معمولا کمتر از چند سانتی متر می باشد.هسته اصلی این ماژول NFC تراشه NXP PN532 بوده که یکی از معروفترین تراشه های تکنولوژی NFC می باشد.در این ماژول پین های NXP532 IO روی ماژول گسترش داده شده تا کاربران به آسانی بتوانند آز آن استفاده کنند. ارتباط دیتا بصورت پیش فرض از طریق I2C انجام می گیرد ولی کاربر بنابر نیاز خود می تواند از پروتکل هایی  نظیر UART یا SPI نیز در این ماژول استفاده کند. شما به سادگی می توانید این ماژول را به هرنوع میکروکنترلری متصل نموده و این پروتکل را راه اندزای و استفاده نمایید.

ویژگی ها

  • عملکرد بر روی مد NFC یا مد RFID خواندن/نوشتن
  • فرکانس رادیویی: 13.56MHz
  • پروتکل های ارتباطی با میکروکنترلر: SPI ، I2C وUART
  • پشتیبنی از انواع کارت های Mifare ، Ultralight ، DesFire و…
  • دارای آنتن داخلی روی PCB با برد 4cm-6cm
  • کار به عنوان کارت 1443-A یا کارت مجازی
  • قابلیت مبادله دیتا با دستگاه های NFC دیگر نظیر اسمارت فون ها

نحوه اتصال ماژول PN532 NFC / RFID به آردوینو

pn532-nfc-rfid-module

نمونه کد برای راه اندازی ماژول PN532 NFC / RFID به آردوینو

#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();
      }
    }  
  }
}

ویدیوی راه اندازی ماژول RFID PN532 با آردوینو

دانلود کتابخانه و مثال آردوینو

 

منبع: adafruit.com و سایت های فارسی زبان

نوشته های مشابه

6 دیدگاه

  1. سلام
    اگه جلوی ماژول nfc با یه ورقه آهن مانع ایجاد کنیم امکان ارتباط بین ماژول و تگ وجود داره یا سیگنال ها انتقال پیدا نمیکنن؟؟

    1. شرایط موجود در این کانکس رو باید بفرمایید تا بتونیم راهنمایی کنیم و البته این موارد رو بهتره در انجمن ECA مطرح کنید که بهترین مکان برای پرسش و پاسخ به سوالات علمی برق و الکترونیک هستش.

  2. با سلام
    من ميخواستم اين ماژول رو با برد nodmcu راه اندازي كنم لطفا راهنمايي كنيد من رو ممنونم

  3. سلام دوست عزیز . این برد رو رو ادوینو انو تست کردم و با نرم افزار شما به جواب نرسیدم . البته با روش دیگه ای درست شد و کار میکنه . مشکل اینه که هر موقع موبایل رو بهش نزدیک میکنم یه UID متفاوت نشون میده . من به کد یکتای یو ای دی جهت بررسی صحت دستگاه نیاز دارم . میتونید راهنمایی کنید . ممنون

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

دکمه بازگشت به بالا