آردوینو - آموزش آردوینو-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 با آردوینو

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

 

علی عزتی

علی عزتی هستم. رشته ی مهندسی برق الکترونیک رو خوندم. علاقه ی من به یادگیری و به اشتراک گذاشتن چیز هایی که یاد گرفتم. باعث شد تا الکترولب ایجاد بشه. علاقه ی زیادی به الکترونیک دارم. و دوست دارم چیزهای جدید یادبگیرم و بسازم ... :))

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

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

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

این سایت از اکیسمت برای کاهش هرزنامه استفاده می کند. بیاموزید که چگونه اطلاعات دیدگاه های شما پردازش می‌شوند.