RFID / NFC آردوینو آموزش آردوینو پروژه های آردوینو

آموزش خواندن کدهای تگ RFID با ماژول RC522 و آردوینو Arduino

Arduino-RFID-RC522-digispark
نوشته شده توسط پریسا پوربلورچیان

نکنولوژی RFID یک روش برای مدیریت در لایه‌های مختلف است. با این تکنولوژی بدون اینکه از سنسورهای مرئی استفاده شود، عملیات عبور و مرور و یا شمارش انجام می‌شود. به عنوان مثال در نظر بگیرید، در یک ساختمان اداری که چندین بخش مختلف دارد، افراد سازمان بر اساس درجه شغلی‌شان به بخش‌های مختلف دسترسی پیدا می‌کنند. هر فردی با کارت شخصی‌اش میتواند به بخش‌های تعریف شده ورود کند. نوع دیگر کاربرد تکنولوژی RFID در کتابفروشی‌ها است. تمامی کتاب‌ها دارای یک تگ RFID نازک به صورت برچسب داخل جلد هستند.

چنانچه فرکانس این تگ Tag از چرخه خارج نشده باشد، با دستگاه‌های خواننده RFID در جلو در ورودی به هنگام خروج از فروشگاه شناسایی شده و آژیر به صدا در می‌آید. این روش در اکثر فروشگاه‌های بزرگ بجز کتابفروشی‌ها کاربرد دارد. نوع دیگر کاربرد تکنولوژی rfid در چرخه تولید است. پالت‌های کالا از مواد اولیه در انبار گرفته تا انجام فرآیندهای مختلف در بخش‌های مختلف کارخانه توسط تگ‌های RFID با رنج فرکانسی قوی‌تر قابل ردیابی خواهند بود. برای آشنایی با انواع کاربرد RFID پیشنهاد میکنم به پست RFID چیست در وب سایت همکارانم علم فردا مراجعه کنید. در ادامه آموزش خواندن کدهای تگ RFID با مرجع تخصصی آردوینو به زبان فارسی، دیجی اسپارک همراه باشید.

 


ساختار ماژول کارت خوان RFID


RFID مخفف Radio frequency identification می‌باشد. این ماژول دارای ۸ پایه برای برقراری ارتباط با برد آردوینو Arduino است. فرکانس کاری ماژول RFID در باند ۱۳٫۵۶ مگاهرتز می‌باشد. ولتاژ کاری آن ۳٫۳ ولت بوده و جریان آن بین ۱۳ تا ۲۶ میلی آمپر است. پروتکل ارتباطی SPI و ماکزیمم سرعت آن ۱۰Mbit/S می‌باشد. قبلا در پست MRFC522 ماژول RFID آردوینو بخش اول به بررسی کامل این ماژول پرداخته ایم. در صورت نیاز مطالعه نمایید.

 


اتصالات ماژول RFID به آردوینو Arduino


RFID-RC522-Pin-Layout-Digispark

ماژول RFID RC522  دارای ۸ پین می باشد که به ترتیب به آردوینو اتصال می‌دهیم:

پین SDA  Data line را به پین ۱۰ (Digital)  آردوینو وصل میکنیم.

پینSCK serial clock را به پین ۱۳ (Digital) آردوینو وصل میکنیم.

پین MOSI Master out slave in را به پبن ۱۱(Digital) آردوینو وصل میکنیم.

پین MISO Master in slave out را به پبن ۱۲ (Digital) آردوینو وصل میکنیم.

پین  RST RESET را به پین ۹(Digital) آردوینو وصل میکنیم.

پین GND  را به GND  آردوینو وصل کنید.

پین VCC را به پین ۳٫۳ ولت آردوینو وصل کنید.

Uno_RFID-RC522-digispark

 


فراخوانی کتابخانه


در این آموزش از کتابخانه MFRC522 استفاده می‌کنیم. لینک دانلود کتابخانه RC522 در صفحه محصول ماژول کارت خوان با قابلیت خواندن و نوشتن RFID – RC522 قسمت دانلود قرار دارد. چنانچه شیوه نصب کتابخانه در آردوینو را نمیدانید از پست نصب کنابخانه در نرم افزار آردوینو Arduino IDE استفاده کنید.

 


کد برنامه RFID


کد را در نرم افزار آردوینو کپی، کامپایل و سپس آپلود کنید. سپس سریال مانیتور Serial monitor نرم افزار آردوینو Arduino IDE را باز کنید. حال با نزدیک کردن کارت RFID و یا تگ RFID Tag به سنسور RFID ، کد آن بر روی سریال مانیتور نمایش داده می‌شود.

#include <SPI.h>
#include <MFRC522.h>

constexpr uint8_t RST_PIN = 9;     // Configurable, see typical pin layout above
constexpr uint8_t SS_PIN = 10;     // Configurable, see typical pin layout above
 
MFRC522 rfid(SS_PIN, RST_PIN); // Instance of the class

MFRC522::MIFARE_Key key; 

// Init array that will store new NUID 
byte nuidPICC[4];

void setup() { 
  Serial.begin(9600);
  SPI.begin(); // Init SPI bus
  rfid.PCD_Init(); // Init MFRC522 

  for (byte i = 0; i < 6; i++) {
    key.keyByte[i] = 0xFF;
  }

  Serial.println(F("This code scan the MIFARE Classsic NUID."));
  Serial.print(F("Using the following key:"));
  printHex(key.keyByte, MFRC522::MF_KEY_SIZE);
}
 
void loop() {

  // Look for new cards
  if ( ! rfid.PICC_IsNewCardPresent())
    return;

  // Verify if the NUID has been readed
  if ( ! rfid.PICC_ReadCardSerial())
    return;

  Serial.print(F("PICC type: "));
  MFRC522::PICC_Type piccType = rfid.PICC_GetType(rfid.uid.sak);
  Serial.println(rfid.PICC_GetTypeName(piccType));

  // Check is the PICC of Classic MIFARE type
  if (piccType != MFRC522::PICC_TYPE_MIFARE_MINI &&  
    piccType != MFRC522::PICC_TYPE_MIFARE_1K &&
    piccType != MFRC522::PICC_TYPE_MIFARE_4K) {
    Serial.println(F("Your tag is not of type MIFARE Classic."));
    return;
  }

  if (rfid.uid.uidByte[0] != nuidPICC[0] || 
    rfid.uid.uidByte[1] != nuidPICC[1] || 
    rfid.uid.uidByte[2] != nuidPICC[2] || 
    rfid.uid.uidByte[3] != nuidPICC[3] ) {
    Serial.println(F("A new card has been detected."));

    // Store NUID into nuidPICC array
    for (byte i = 0; i < 4; i++) {
      nuidPICC[i] = rfid.uid.uidByte[i];
    }
   
    Serial.println(F("The NUID tag is:"));
    Serial.print(F("In hex: "));
    printHex(rfid.uid.uidByte, rfid.uid.size);
    Serial.println();
    Serial.print(F("In dec: "));
    printDec(rfid.uid.uidByte, rfid.uid.size);
    Serial.println();
  }
  else Serial.println(F("Card read previously."));

  // Halt PICC
  rfid.PICC_HaltA();

  // Stop encryption on PCD
  rfid.PCD_StopCrypto1();
}


/**
 * Helper routine to dump a byte array as hex values to Serial. 
 */
void printHex(byte *buffer, byte bufferSize) {
  for (byte i = 0; i < bufferSize; i++) {
    Serial.print(buffer[i] < 0x10 ? " 0" : " ");
    Serial.print(buffer[i], HEX);
  }
}

/**
 * Helper routine to dump a byte array as dec values to Serial.
 */
void printDec(byte *buffer, byte bufferSize) {
  for (byte i = 0; i < bufferSize; i++) {
    Serial.print(buffer[i] < 0x10 ? " 0" : " ");
    Serial.print(buffer[i], DEC);
  }
}

 


وسایل مورد نیاز


برد آردوینو  Arduino UNO

ماژول کارت خوان RFID RC522

کارت RFID  خواندن و نوشتن ۱۳٫۵۶KHz

کابل فلت نری به مادگی Male to Female

 

چنانچه در مراحل راه اندازی و انجام این پروژه با مشکل مواجه شدید، بدون هیچ نگرانی در انتهای همین پست، به صورت ثبت نظر سوالتان را مطرح کنید. من در سریع‌ترین زمان ممکن پاسخ رفع مشکل شما را خواهم داد.

در پایان نظرات و پیشنهادات خود را با ما درمیان بگذارید و با اشتراک گذاری این آموزش در شبکه های اجتماعی , از وبسایت دیجی اسپارک حمایت کنید.

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

پریسا پوربلورچیان

تولید کننده محتوا / کارشناس IOT

زندگی یعنی پژوهش و فهمیدن چیزی جدید

تلاشم بر این است تجربیاتم در زمینه IOT‌ را به بهترین شکل با شما در میان بگذارم.

تبادل نظر و رفع عیب با ثبت دیدگاه

۲۴۹ دیدگاه

  • با سلام و احترام
    ضمن تشکر در خصوص آموزشهای مفیدتون
    در صورت امکان نحوه کد کردن و رمز گذاشتن روی کارت های مایفر رو در آموزش ها قرار بدید
    سپاس فراوان

    • در صورت امکان اگر مطلبی در این خصوص برای مطالعه وجود دارد، لینک مطلب را اعلام بفرمایید.
      دیتاشیت RC522 و کارتهای مایفر مطلب مفهومی در این خصوص پیدا نکردم
      سپاس

    • سلام
      از توجه شما ممنونم.
      سری آموزش‌های RFID به دلیل گستردگی مطالب، دنباله‌دار بوده و در بخش‌های مختلف به بررسی و آموزش آنها خواهیم پرداخت. از پیشنهادات شما سپاسگزارم.

  • سلام بنده این کار را انجام دادم و جواب گرفتم
    بسیار مفید بود فقط یه سؤال اگر بخوایم برای ورود به جایی استفاده کنیم میشه راهنمایی کنید تگ های مشخصی یعنی در برنامه کد شان رو بدیم و زمانی که هر کس بمواد وارد شود از تگ مورد نظر استفاده کند در صورت بودن کد ان تگ در برنامه برد به رله دستور بدهد
    لطفا راهنمایی کنید
    خیلی ممنون از شما و سایت خوبتون

    • سلام
      آموزش های RFID به هم پیوسته هستند.منتظر باشید تا آموزش های بعدی منتشر شوند.

    • به نظر بنده شما یک رزبری پای خریداری کنید و کار های پردازشی رو با اون انجام بدین.
      ولی شما با کمی سواد برنامه نویسی به زبان سی میتونید با تعریف یک تابع کار خودتون رو راه بندازین
      موفق باشید

  • سلام
    ممنون از اموزش خوبتون
    اگه میشه خیلی سریع اموزش درست کردن قفل با سروو موتور و rfid و اردوینو را بگزارید که وقتی کارت شناسایی شد سروو موتور قفل را باز کند

    • سلام
      چشم! 😀 همانطور که در پاسخ‌های قبلی گفته ام این مجموعه آموزش‌ها به هم پیوسته هستند، منتظر انتشار باشید.

  • سلام و ضمن تشکر از زحمات بسیار گران بهای شما بابت آردوینو
    افتخار میکنم شیرزنانی همانند شما بدون توقع و چشمداشتی اقدام به تولید محتواهای آموزشی در زمینه های مختلف می کنند. ب اینکه مقیم ایران نیستم ولی تمام دانشجویان من و کادر فنی از آموزش های شما بسیار استفاده میکنند. سرکارخانم بلورچیان آرزو داریم هرچه بیشتر با توانایی بالاتر ارتقای علمی بیشتر برای شما باشد وجا دارد تشکر خود و تیم خود را اعلام میکنم. موفق و پیروز باشید

    • سلام
      از لطف و توجه شما بسیار ممنونم آقای جاودانی
      دیجی اسپارک این بستر را برای کاربران مهیا کرده تا بتوانند از به روز ترین آموزش‌های اینترنت اشیا – IOT آردوینو رزبری پای و امبدد سیستم‌ها به صورت رایگان بهره ببرند و ما هم بسیار خوشحالیم که آموزش‌ها در جهت رشد و توسعه شما کاربردی بوده است. فقط تنها نکته‌ی جالب این بود؛ چطور متوجه شده‌اید که بدون هیچ چشم داشتی ، محتوای آموزشی سایت در حال تولید است؟! هدف ما ارتقاء سطح سوال و بار علمی کاربران به صورت رایگان است. حداقل تعهد کاربران ارسال کامنت و نظر و پرسیدن سوال است.
      سپاسگزارم

  • با سلام
    من یک تگ RFID به صورت جداگانه خریداری کردم ولی توسط RC522 شناسایی نمیشود (درصورتی که تگ همراه با ماژول شناسایی میشود)
    تگ را از این لینک خریداری کردم:
    https://daneshjookit.com/%D8%A2%D8%B1-%D8%A7%D9%81-%D8%A2%DB%8C-%D8%AF%DB%8C-rfid-nfc/1713-%D9%85%D8%A7%DA%98%D9%88%D9%84-rfid-rc522.html
    مشکل از کجاست؟
    با تشکر

    • سلام
      لطفا واضح تر توضیح بدید که آیا از کد این آموزش استفاده کردید؟ و اینکه دقیقا با چه ارورى مواجه میشوید تا بررسى کنم.

      • با سلام مجدد
        از این آموزش و آموزش های دیگری استفاده کردم که تگ قبلی را شناسایی میکردند ولی این تگ را شناسایی نمیکند
        هیچ اروری وجود ندارد!
        میخواست ببینم آیا تگ باید برنامه ریزی شود یا اینکه تگ خراب است؟
        با تشکر

          • همینطور که (محمد رضا)گفتن فرکانس کارت هایی که برای فروش گذاشته شده با فرکانس ریدر کارت فرق داره.فرکانس رید ۱۳٫۵۶ مگاهرتز هست و فرکانس کارت ها ۱۲۵ کیلوهرتز هست.

            • سلام
              در مورد کالا یعنی تگ و کارت ریدر بنده اطلاعی ندارم و باید از طریق صفحه محصول فروشگاه برای خرید اقدام نمایید.

    • سلام
      از توجه شما ممنونم.
      آموزش قسمت بعدی در حال تمکیل می باشد و به زودی قرار خواهد گرفت.

  • سلام بنده این رو انجام دادم و بسیار خوب بود ولی من این ما‍ژولشو از خودتون گرفتم یعنی دلنشجو کیت ولی فقط تگ کار میکنه و کارت کار نمی کنه و نمیشناسدش راهنمایی کنید

    • سلام
      از توجه شما ممنونم. از آنجایی که من در جریان سفارش و خرید شما نیستم، احتمالا کارت RFID شما مایفر – mifare می باشد. در آموزش های بعدی نحوه ی خواندن کدهای مایفر نیز آموزش داده خواهد شد.

  • سلام من با تغییر کد یک رله بهش وصل کردم و میخوام به دروازه وصلش کنم ولی امواج Rfid از آهن دروازه رد نمیشه به غیر از این که ماژول رو اون طرف در بزارم روش دیگه ای برای عبور امواج هست ؟؟

    • سلام
      از توجه شما ممنونم
      دقت کنید که RFID با امواج رادیویى کار میکند واز این رو حالت فرستنده و گیرنده دارد. براى عبور جریان باید گیرنده را تقویت کنید.

        • سلام مجدد
          متاسفانه این قضیه در تخصص بنده نیست و صرفا جهت اطلاع گفتم. ولى توجه داشته باشید که باید در قسمت سخت افزار گیرنده، سلف مربوطه را تغییرات دهید.

    • سلام
      نمیتوان به صورت قطعی قول داد . ولی شما در هر مرحله ای که به مشکل خوردید، میتوانید با ثبت کامنت در سایت از نظر تیم ما و دیگر کاربران کمک بخواهید.

    • سلام
      از توجه شما ممنونم.
      از سرى آموزش هاى RFID ، آموزش بعدى معرفى کارت جدید مى باشد که به زودى بر روى سایت قرار خواهد گرفت. منتظر باشید.

    • سلام
      دقت کنید که آیدی کارت یکتا و منحصر به فرد است و قابل تغییر نمی‌باشد. ولی در برنامه میتوانید آی دی هر کارت را تعریف کنید که در آموزش های بعدی به این موضوع خواهیم پرداخت.

  • با سلام و خسته نباشید
    من در نصب کتابخانه مشکل دارم البته کتابخانه های دیگر را طبق روش دوم (روش نصب کتابخانه ) نصب کردم ولی در هنگام نصب این کتابخانه با ارور مواجه می شوم
    لطفا راهنمایی بفرمایید

      • سلام
        من موفق شدم کتابخانه را نصب کنم البته در پست MRFC522 ماژول RFID آردوینو بخش اول و برنامه را کامپایل کنم ولی در آن موقع ارور
        MIFAR_KEY’ in ‘class MFRC522’ dose not a type ‘ را بر روی این خط از برنامه MFRC522::MIFARE_Key key; ظاهر می کند
        ممنون از پاسخ گویی شما

        • سلام مجدد
          بسیار عالی فقط متوجه نشدم که آیا مشکل شما برطرف شده است یا خیر ؟ حتما اعلام نمایید تا در صورت حل نشدن مشکل راهنمایی کنم.

          • سلام
            مشکل نصب کتابخانه حل شد وآردوینو نصب کتابخانه را تایید می کنه ولی در هنگام کامپایل نمودنِ برنامه ارور هایی که در بالا عرض نمودم ، ظاهر می شود

            • سلام مجدد
              بنده تا به حال به این مشکل برخورد نکردم، این ارور مربوط به کتابخانه می باشد. احتمالا شما از یکی از کتابخانه های دیگر MFRC522 استفاده کرده اید ؟ سوال اول این که کتابخانه را از لینکی که من در آموزش قرار داده ام نصب کرده اید یا در لیست کتابخانه های نرم افزار خود داشته اید؟ حتما نتیجه را اعلام کنید.

          • سلام
            من کتابخانه را نصب کردم و آردوینو نصب کتابخانه را تایید کرد منتها در هنگام کامپایل، برنامه در ارور MIFAR_KEY’ in ‘class MFRC522’ dose not a type ‘ را بر روی این خط از برنامه MFRC522::MIFARE_Key key; ظاهر می کند

  • با عرض سلام و خسته نباشید.
    ۱٫من کتابخونه رو نصب کردم ، علت اررور زیر از خط هشتم کد فوق هنگام کامپایل کردن چیه و چطوری درستش کنم؟منظور از Key در کد چیه؟
    ‘MIFARE_Key’ in ‘class MFRC522’ does not name a type
    با تشکر

    • سلام
      این ارور احتمالا مربوط به کتابخانه می باشد. لطفا اعلام کنید از چه کتابخانه ای از MFRC522 استفاده کرده اید ؟ حتما اعلام کنید تا بررسی کنم.

      • با عرض سلام مجدد ، من برای پروژه های مختلف مجموعه ای از کتابخانه های rfid زیر رو تا حالا تو library نصب کردم مشکل اینا هستن؟:
        https://codeload.github.com/miguelbalboa/rfid/zip/master
        https://daneshjookit.com/index.php?controller=attachment&id_attachment=54
        http://digispark.ir/files/rfid-master.zip
        https://cdn.instructables.com/ORIG/FYX/Q78V/IGI9NSA6/FYXQ78VIGI9NSA6.zip
        سوال دوم:آیا مایفر کارت های سایت دانشجوکیت خام هستند و نیاز به نوشتن و سپس خوانده شدن با ماژول فوق رو دارند؟
        تشکر از پاسخ گویی شما

        • سلام مجدد
          کتابخانه ها سالم هستند و ایرادی ندارند، برای رفع مشکل باید منتظر بمانید تا کدها را مجددا بررسی کنم. برای سوال دوم نیز دو کالا در فروشگاه موجود است که برای راهنمایی بیشتر میتوانید در صفحه محصول کالای مورد نظر خود سوال را مطرح نمایید تا همکارانم فنی در تیم دانشجوکیت شما را راهنمایی کنند.
          سپاس

      • سلام
        احتمال قوی کتابخانه که ازاین پست دانلود کردید مشکل داره و نصب نشده (از پیامی که آردوینو در پایین صفحه می دهد مطمئن شوید)
        من از لینک http://digispark.ir/%d8%a2%d9%85%d9%88%d8%b2%d8%b4-rfid-mrfc522/ کتابخانه را نصب کردم و آردوینو پیام نصب را با موفقیت صادر کرد ولی کماکان در همان خط ارور را دارم

        • سلام
          از توجه شما ممنونم.
          اجازه بدید تا مجددا کد ها را بررسی کنم. نتیجه را از همین طریق اعلام خواهم کرد.

          • سلام مجدد، بعد از کلی تست همینطور که گفتین مشکل از کتابخانه بود. اول تمام کتابخانه های آر اف (هم داخل کتابخانه خود برنامه و هم توی کتابخانه داخلDocuments ادمین ) رو پاک کردم . جدیدترین و کاملترین ورژن کتابخانه RF رو از لینک زیر دانلود و بصورت زیپ به آردوینو دادم:
            http://www.arduinolibraries.info/libraries/mfrc522
            حالا بعد از آپلود دو خط زیر ظاهر میشه و کارت و تگ رو نمی شناسه، راه حل این چیه؟
            This code scan the MIFARE Classsic NUID.
            Using the following key: FF FF FF FF FF FF

            • سلام مجدد
              بنده تا به حال به ارور های گفته شده برخورد نکردم ، اگر نمونه کد های گفته شده در آموزش را به درستی کپی کرده باشید ‌و کتابخانه هم انتخاب کرده باشید نباید مشکلی در آپلود برنامه داشته باشید. با این حال لطفا منتظر بمانید تا ارور های گفته شده را بررسی و نتیجه را اعلام کنم.

              • ممنونم، بعد از تست های زیادی ،همه مراحل رو همانطور که در بالا گفتم به درستی انجام دادم و کد هم با موفقیت آپلود شد و با یک ماژول RF دیگه تست کردم جواب داد و معلوم شد ماژول اول معیوب بوده.
                با تشکر از لطف و پیگیری شما

  • سلاممن یه مشکلی دارم موقع آپلود ارور کامپایل میده کتابخانه هاهم اضافه کردم لطفا کمکم کنید

    • سلام
      لطفا اروری که با آن برخورد کرده اید را عنوان کنید تا بررسی کنم. و آیا از کتابخانه ی گفته شده در آموزش استفاده کردید؟

      • Error compiling for board Arduino/Genuino Uno. ارور اصلی
        ازهمین کتاب خانه ها استفاده کردم که در آموزش گفتید
        ارور کامل پایین(Copy eror messages)

        Arduino: 1.8.4 (Windows 10), Board: “Arduino/Genuino Uno”

        C:\Users\AMIR HOSSIN\OneDrive\اسناد\Arduino\sketch_oct06a\sketch_oct06a.ino:2:21: fatal error: MFRC522.h: No such file or directory

        compilation terminated.

        exit status 1
        Error compiling for board Arduino/Genuino Uno.

        This report would have more information with
        “Show verbose output during compilation”
        option enabled in File -> Preferences.

        • سلام مجدد
          در ابتدا مسیر کتابخانه را چک کنید که حتما در پوشه Arduino و در قسمت library قرار گرفته باشد. همچنین نوع برد را در منو tools ، نوع برد را آردوینو UNO انتخاب کنید و سپس دوباره آپلود کنید. اگر مشکل برطرف نشد اعلام کنید.

          • سلام فایل کتابخانه rfid درست کامپایل نمی شد که دوباره دانلودش کردم از جای دیگه یی و مثل اینکه درست شده ممنون از شما

  • سلام میشه پروژه مایفر رو برای میکرو atmega8بذارید با اردینو صرفخ تجاری و تولید نداره ممنون

    • سلام
      هدف اصلی دیجی اسپارک تمرکز بر روی امبدد سیستم ها است و همچنین این رویکرد سنتی است و استفاده از امبدد سیستم ها در مقاصد تجاری توجیه پذیرتر هستند. البته در این زمینه هم از دوستانی که تجربه تجاری سازی دارند تقاضا دارم در این بحث شرکت کنند.
      موفق باشید.

  • سلام وقت بخیر لطفا یه مثال کامل جهت وارد کردن کد تگ ها در برنامه. Rfid جهت خروجی یک رله بذارید ممنون .کدهاش هگزه من هرکار میکنم.نمیتونم.تو برنامه بزارم خطا میده ممنون میشم کمک کنید

    • سلام
      از توجه شما ممنونم
      در حال تولید سری آموزش های RFID هستیم و به زودی در سایت قرار گرفته خواهد شد.

    • سلام
      برای شروع کار با RFID در ابتدا پست همکارم آموزش MRFC522 RFID که به معرفی و توضیح کامل RFID پرداخته است را مطالعه نمایید. دقت کنید که تحلیل کدها به عهده خودتان است. بنده تمامی مراحل را در آموزش توضیح داده ام و شما با استناد به متن آموزش میتوانید کدها را تحلیل کنید. در هر مرحله اگر به مشکل برخوردید از طریق ثبت کامنت سوال خود را مطرح نمایید.

      • سلام مجدد
        اون پست و خوندم و سوالات بیشتری برام ایجاد شده…
        +
        سایت گروه تلگرامی و یا فرومی برای پرسش و پاسخ در این زمینه داره؟

        • سلام
          سوالات خود را از طریق ثبت کامنت مطرح کنید تا در سریع ترین زمان ممکن پاسخ داده شود. از طریق تلگرام امکان پاسخگویی سریع وجود ندارد. آموزش بخش جدید RFID هم در سایت‌قرار گرفته شده است حتما مطالعه نمایید و‌سپس سوالات خود را بیان کنید تا رفع عیب نماییم.

    • سلام
      در سطر ۵۶ کدها، کاملا اسکریپت مربوطه توضیح داده شده است. حتما بررسی کنید.

  • سلام وقت بخیر. من نیاز دارم تا شماره تگ خونده شده تو ال سی دی ۵۱۱۰ نمایش داده بشه . ممنون میشم راهنماییم کنید.

    • سلام
      برای نمایش دیتا در ال سی دی باید از کتابخانه LCD nokia5110 و یا همان PCD8544 استفاده کنید. برای نمایش در ال سی دی هم باید تعییراتی در کدها لحاظ کنید. در این بخش امکان توضیح با جزییات وجود ندارد و حتما نیاز به آموزش مجزا در بخش RFID خواهد داشت.

      • ممنون میشم این مورد رو هم یاد بدید. در ضمن چجور میشه چند تا آیدی رو ذخیره کرد مثل داخل همون کد و بررسی کرد که کارت خوانده شده با اونا یکی هست یا نه . اگه یکی بود مثلا یک پایه مقدارش high بشه

        • سلام
          آیا منظور شما این است که از فعالیت هر کارتی لاگ گرفته شود؟ دقیق تر بیان کنید.

  • سلام
    بسیار ممنونم از مطالب جامع شما بند در نظر دارم یک پروژه‌ای مانند کارتهی مترو اعتباری هستند را اجرا کنم که بتوانم به کاربرام کارتهای بصورت اعتباری که خودم برایشان معرفی کردم کار کند و برای شارژ دوبار مدیریت بتواند این کارتهارو شارژکنه.
    ایا میتوانید در مورد این پروژه اطلاعات و آموزش به بنده بدهید .
    ممنونم

    • سلام
      از توجه شما بسیار ممنونم.
      پروژه ای که در نظر دارید در واقع حالت خواندن و نوشتن دیتا و اطلاعات در هر بار روی کارت RFID و یا تگ می باشد که علاوه بر کارت RFID با این قابلیت نیاز به برنامه ای پیچیده برای اجرای آن دارد.

  • سلام ، ممنون از مطلب خوبتون
    میخواستم بدونم برای اینکه هر کارت رو بعد از نزدیک کردن فقط یک بار بخونیم و با دور شدنش دوباره بشه حتی همون کارت رو یک بار دیگه خوند چه باید کرد ، مانند کارت خوان اتوبوس

    • سلام
      از توجه شما ممنونم.
      موضوعی که شما میفرمایید حالت خواندن و نوشتن اطلاعات در هر بار روی کارت و تگ می باشد که علاوه بر کارت RFID با این قابلیت نیاز به برنامه پیچیده ای دارد.

  • سلام و خسته نباشین
    یه سوال درمورد تگ ها داشتم
    چطور کد و رمز مورد نظر را رو تگ ها قرار بدیم ؟
    با تشکر فراوان

    • سلام
      برای اینکار باید در کدها تعییراتی ایجاد بشه که در قسمت نظرات امکان ارائه کدهای آماده نیست، شما باید با دانش برنامه نویسی c++ نسبت به توسعه این موضوع اقدام کنید.

  • Arduino: 1.6.5 (Windows 7), Board: “Arduino Uno”

    C:\Users\Hr\Documents\Arduino\libraries\MFRC522\src\MFRC522.cpp: In constructor ‘MFRC522::MFRC522()’:
    C:\Users\Hr\Documents\Arduino\libraries\MFRC522\src\MFRC522.cpp:16:33: error: ‘UINT8_MAX’ was not declared in this scope
    MFRC522::MFRC522(): MFRC522(SS, UINT8_MAX) { // SS is defined in pins_arduino.h, UINT8_MAX means there is no connection from Arduino to MFRC522’s reset and power down input
    ^
    C:\Users\Hr\Documents\Arduino\libraries\MFRC522\src\MFRC522.cpp: In member function ‘void MFRC522::PCD_Init()’:
    C:\Users\Hr\Documents\Arduino\libraries\MFRC522\src\MFRC522.cpp:201:28: error: ‘UINT8_MAX’ was not declared in this scope
    if (_resetPowerDownPin != UINT8_MAX) {
    ^
    Multiple libraries were found for “MFRC522.h”

    Used: C:\Users\Hr\Documents\Arduino\libraries\MFRC522

    Not used: C:\Program Files\Arduino\libraries\MFRC522-master

    Error compiling.

    This report would have more information with
    “Show verbose output during compilation”
    enabled in File > Preferences.

    • سلام
      در ابتدا کتابخانه MFRC522.h را در مسیر نصب آردوینو در سیستم خودتان، در پوشه arduino / Library کپی کنید و مچددا کدها را Verify نمایید. سپس قبل از اتصال آردوینو به سیستم، یکبار کد را آپلود کنید. مشکل برطرف خواهد شد. اگر به مشکل برخوردید از همین طریق اقدام نمایید.

  • با سلام
    خیلی ممنون از آموزش ها
    مشکلی داشتم..زمانی که برق اردوینو قطع شد و دوباره وصل شد در یک لحظه دستور به رله داده میشه و درب باز میشه و مشکل بعدی این که قفل بعد از ۲۰ دقیقهریاRFIDاز کار افتاده و نیازه یک بار برق اردوینو رو از اول وصل کنم تا دوباره بر گرده به روال اصلی

    • سلام
      در مورد سوال اول پیشنهاد میشود که رله را برعکس به مدار اتصال دهید.
      در مورد سوال دوم هم اتصالات را لطفا توضیح دهید.

  • سلام خدا قوت ، میشه بگید بعد از اینکه کدها رو در سریال مانیتور دیدم ، در برنامه چجور شرط بندی کنیم؟

    • ۱۲:۸: error: ‘MFRC522’ does not name a type

      MFRC522 rfid(SS_PIN, RST_PIN); // Instance of the class

      ^

      ۱۲:۱۰: error: ‘MFRC522’ does not name a type

      MFRC522::MIFARE_Key key;
      باز این اررور شدددددددددددددددددددددددد

      • لطفا برای انتقال کدها از موس استفاده نکنید و کدها را با استفاده از کلیدهای میانبر کپی کنید.

    • سلام
      لطفا برای انتقال کدها از موس استفاده نکنید و کدها را با استفاده از کلیدهای میانبر کپی کنید.

  • با سلام و خسته نباشید
    Arduino: 1.8.1 (Windows 10), Board: “Arduino Uno WiFi”

    sketch_dec21a:11: error: ‘MIFARE_Key’ in ‘class MFRC522’ does not name a type

    MFRC522::MIFARE_Key key;

    ^

    C:\Users\Ali\Documents\Arduino\sketch_dec21a\sketch_dec21a.ino: In function ‘void setup()’:

    sketch_dec21a:19: error: ‘class MFRC522’ has no member named ‘PCD_Init’

    rfid.PCD_Init(); // Init MFRC522

    ^

    sketch_dec21a:22: error: ‘key’ was not declared in this scope

    key.keyByte[i] = 0xFF;

    ^

    sketch_dec21a:27: error: ‘key’ was not declared in this scope

    printHex(key.keyByte, MFRC522::MF_KEY_SIZE);

    ^

    sketch_dec21a:27: error: ‘MF_KEY_SIZE’ is not a member of ‘MFRC522’

    printHex(key.keyByte, MFRC522::MF_KEY_SIZE);

    ^

    C:\Users\Ali\Documents\Arduino\sketch_dec21a\sketch_dec21a.ino: In function ‘void loop()’:

    sketch_dec21a:33: error: ‘class MFRC522’ has no member named ‘PICC_IsNewCardPresent’

    if ( ! rfid.PICC_IsNewCardPresent())

    ^

    sketch_dec21a:37: error: ‘class MFRC522’ has no member named ‘PICC_ReadCardSerial’

    if ( ! rfid.PICC_ReadCardSerial())

    ^

    sketch_dec21a:41: error: ‘PICC_Type’ is not a member of ‘MFRC522’

    MFRC522::PICC_Type piccType = rfid.PICC_GetType(rfid.uid.sak);

    ^

    sketch_dec21a:42: error: ‘class MFRC522’ has no member named ‘PICC_GetTypeName’

    Serial.println(rfid.PICC_GetTypeName(piccType));

    ^

    sketch_dec21a:42: error: ‘piccType’ was not declared in this scope

    Serial.println(rfid.PICC_GetTypeName(piccType));

    ^

    sketch_dec21a:45: error: ‘PICC_TYPE_MIFARE_MINI’ is not a member of ‘MFRC522’

    if (piccType != MFRC522::PICC_TYPE_MIFARE_MINI &&

    ^

    sketch_dec21a:46: error: ‘PICC_TYPE_MIFARE_1K’ is not a member of ‘MFRC522’

    piccType != MFRC522::PICC_TYPE_MIFARE_1K &&

    ^

    sketch_dec21a:47: error: ‘PICC_TYPE_MIFARE_4K’ is not a member of ‘MFRC522’

    piccType != MFRC522::PICC_TYPE_MIFARE_4K) {

    ^

    sketch_dec21a:52: error: ‘class MFRC522’ has no member named ‘uid’

    if (rfid.uid.uidByte[0] != nuidPICC[0] ||

    ^

    sketch_dec21a:53: error: ‘class MFRC522’ has no member named ‘uid’

    rfid.uid.uidByte[1] != nuidPICC[1] ||

    ^

    sketch_dec21a:54: error: ‘class MFRC522’ has no member named ‘uid’

    rfid.uid.uidByte[2] != nuidPICC[2] ||

    ^

    sketch_dec21a:55: error: ‘class MFRC522’ has no member named ‘uid’

    rfid.uid.uidByte[3] != nuidPICC[3] ) {

    ^

    sketch_dec21a:60: error: ‘class MFRC522’ has no member named ‘uid’

    nuidPICC[i] = rfid.uid.uidByte[i];

    ^

    sketch_dec21a:65: error: ‘class MFRC522’ has no member named ‘uid’

    printHex(rfid.uid.uidByte, rfid.uid.size);

    ^

    sketch_dec21a:65: error: ‘class MFRC522’ has no member named ‘uid’

    printHex(rfid.uid.uidByte, rfid.uid.size);

    ^

    sketch_dec21a:68: error: ‘class MFRC522’ has no member named ‘uid’

    printDec(rfid.uid.uidByte, rfid.uid.size);

    ^

    sketch_dec21a:68: error: ‘class MFRC522’ has no member named ‘uid’

    printDec(rfid.uid.uidByte, rfid.uid.size);

    ^

    sketch_dec21a:74: error: ‘class MFRC522’ has no member named ‘PICC_HaltA’

    rfid.PICC_HaltA();

    ^

    sketch_dec21a:77: error: ‘class MFRC522’ has no member named ‘PCD_StopCrypto1’

    rfid.PCD_StopCrypto1();

    ^

    In file included from C:\Users\Ali\Documents\Arduino\sketch_dec21a\sketch_dec21a.ino:101:0:

    C:\Users\Ali\Documents\Arduino\libraries\MFRC522-master/MFRC522.h: At global scope:

    C:\Users\Ali\Documents\Arduino\libraries\MFRC522-master/MFRC522.h:123:7: error: redefinition of ‘class MFRC522’

    class MFRC522 {

    ^

    In file included from C:\Users\Ali\Documents\Arduino\sketch_dec21a\sketch_dec21a.ino:4:0:

    C:\Users\Ali\Documents\Arduino\libraries\MFRC522-master/MFRC522.h:123:7: error: previous definition of ‘class MFRC522’

    class MFRC522 {

    ^

    sketch_dec21a:103: error: redefinition of ‘constexpr const uint8_t RST_PIN’

    constexpr uint8_t RST_PIN = 9; // Configurable, see typical pin layout above

    ^

    C:\Users\Ali\Documents\Arduino\sketch_dec21a\sketch_dec21a.ino:6:19: note: ‘constexpr const uint8_t RST_PIN’ previously defined here

    constexpr uint8_t RST_PIN = 9; // Configurable, see typical pin layout above

    ^

    sketch_dec21a:104: error: redefinition of ‘constexpr const uint8_t SS_PIN’

    constexpr uint8_t SS_PIN = 10; // Configurable, see typical pin layout above

    ^

    C:\Users\Ali\Documents\Arduino\sketch_dec21a\sketch_dec21a.ino:7:19: note: ‘constexpr const uint8_t SS_PIN’ previously defined here

    constexpr uint8_t SS_PIN = 10; // Configurable, see typical pin layout above

    ^

    sketch_dec21a:106: error: redefinition of ‘MFRC522 rfid’

    MFRC522 rfid(SS_PIN, RST_PIN); // Instance of the class

    ^

    C:\Users\Ali\Documents\Arduino\sketch_dec21a\sketch_dec21a.ino:9:9: note: ‘MFRC522 rfid’ previously declared here

    MFRC522 rfid(SS_PIN, RST_PIN); // Instance of the class

    ^

    sketch_dec21a:108: error: ‘MIFARE_Key’ in ‘class MFRC522’ does not name a type

    MFRC522::MIFARE_Key key;

    ^

    sketch_dec21a:111: error: redefinition of ‘byte nuidPICC [4]’

    byte nuidPICC[4];

    ^

    C:\Users\Ali\Documents\Arduino\sketch_dec21a\sketch_dec21a.ino:14:6: note: ‘byte nuidPICC [4]’ previously declared here

    byte nuidPICC[4];

    ^

    C:\Users\Ali\Documents\Arduino\sketch_dec21a\sketch_dec21a.ino: In function ‘void setup()’:

    sketch_dec21a:113: error: redefinition of ‘void setup()’

    void setup() {

    ^

    C:\Users\Ali\Documents\Arduino\sketch_dec21a\sketch_dec21a.ino:16:6: note: ‘void setup()’ previously defined here

    void setup() {

    ^

    sketch_dec21a:116: error: ‘class MFRC522’ has no member named ‘PCD_Init’

    rfid.PCD_Init(); // Init MFRC522

    ^

    sketch_dec21a:119: error: ‘key’ was not declared in this scope

    key.keyByte[i] = 0xFF;

    ^

    sketch_dec21a:124: error: ‘key’ was not declared in this scope

    printHex(key.keyByte, MFRC522::MF_KEY_SIZE);

    ^

    sketch_dec21a:124: error: ‘MF_KEY_SIZE’ is not a member of ‘MFRC522’

    printHex(key.keyByte, MFRC522::MF_KEY_SIZE);

    ^

    C:\Users\Ali\Documents\Arduino\sketch_dec21a\sketch_dec21a.ino: In function ‘void loop()’:

    sketch_dec21a:127: error: redefinition of ‘void loop()’

    void loop() {

    ^

    C:\Users\Ali\Documents\Arduino\sketch_dec21a\sketch_dec21a.ino:30:6: note: ‘void loop()’ previously defined here

    void loop() {

    ^

    sketch_dec21a:130: error: ‘class MFRC522’ has no member named ‘PICC_IsNewCardPresent’

    if ( ! rfid.PICC_IsNewCardPresent())

    ^

    sketch_dec21a:134: error: ‘class MFRC522’ has no member named ‘PICC_ReadCardSerial’

    if ( ! rfid.PICC_ReadCardSerial())

    ^

    sketch_dec21a:138: error: ‘PICC_Type’ is not a member of ‘MFRC522’

    MFRC522::PICC_Type piccType = rfid.PICC_GetType(rfid.uid.sak);

    ^

    sketch_dec21a:139: error: ‘class MFRC522’ has no member named ‘PICC_GetTypeName’

    Serial.println(rfid.PICC_GetTypeName(piccType));

    ^

    sketch_dec21a:139: error: ‘piccType’ was not declared in this scope

    Serial.println(rfid.PICC_GetTypeName(piccType));

    ^

    sketch_dec21a:142: error: ‘PICC_TYPE_MIFARE_MINI’ is not a member of ‘MFRC522’

    if (piccType != MFRC522::PICC_TYPE_MIFARE_MINI &&

    ^

    sketch_dec21a:143: error: ‘PICC_TYPE_MIFARE_1K’ is not a member of ‘MFRC522’

    piccType != MFRC522::PICC_TYPE_MIFARE_1K &&

    ^

    sketch_dec21a:144: error: ‘PICC_TYPE_MIFARE_4K’ is not a member of ‘MFRC522’

    piccType != MFRC522::PICC_TYPE_MIFARE_4K) {

    ^

    sketch_dec21a:149: error: ‘class MFRC522’ has no member named ‘uid’

    if (rfid.uid.uidByte[0] != nuidPICC[0] ||

    ^

    sketch_dec21a:150: error: ‘class MFRC522’ has no member named ‘uid’

    rfid.uid.uidByte[1] != nuidPICC[1] ||

    ^

    sketch_dec21a:151: error: ‘class MFRC522’ has no member named ‘uid’

    rfid.uid.uidByte[2] != nuidPICC[2] ||

    ^

    sketch_dec21a:152: error: ‘class MFRC522’ has no member named ‘uid’

    rfid.uid.uidByte[3] != nuidPICC[3] ) {

    ^

    sketch_dec21a:157: error: ‘class MFRC522’ has no member named ‘uid’

    nuidPICC[i] = rfid.uid.uidByte[i];

    ^

    sketch_dec21a:162: error: ‘class MFRC522’ has no member named ‘uid’

    printHex(rfid.uid.uidByte, rfid.uid.size);

    ^

    sketch_dec21a:162: error: ‘class MFRC522’ has no member named ‘uid’

    printHex(rfid.uid.uidByte, rfid.uid.size);

    ^

    sketch_dec21a:165: error: ‘class MFRC522’ has no member named ‘uid’

    printDec(rfid.uid.uidByte, rfid.uid.size);

    ^

    sketch_dec21a:165: error: ‘class MFRC522’ has no member named ‘uid’

    printDec(rfid.uid.uidByte, rfid.uid.size);

    ^

    sketch_dec21a:171: error: ‘class MFRC522’ has no member named ‘PICC_HaltA’

    rfid.PICC_HaltA();

    ^

    sketch_dec21a:174: error: ‘class MFRC522’ has no member named ‘PCD_StopCrypto1’

    rfid.PCD_StopCrypto1();

    ^

    C:\Users\Ali\Documents\Arduino\sketch_dec21a\sketch_dec21a.ino: In function ‘void printHex(byte*, byte)’:

    sketch_dec21a:181: error: redefinition of ‘void printHex(byte*, byte)’

    void printHex(byte *buffer, byte bufferSize) {

    ^

    C:\Users\Ali\Documents\Arduino\sketch_dec21a\sketch_dec21a.ino:84:6: note: ‘void printHex(byte*, byte)’ previously defined here

    void printHex(byte *buffer, byte bufferSize) {

    ^

    C:\Users\Ali\Documents\Arduino\sketch_dec21a\sketch_dec21a.ino: In function ‘void printDec(byte*, byte)’:

    sketch_dec21a:191: error: redefinition of ‘void printDec(byte*, byte)’

    void printDec(byte *buffer, byte bufferSize) {

    ^

    C:\Users\Ali\Documents\Arduino\sketch_dec21a\sketch_dec21a.ino:94:6: note: ‘void printDec(byte*, byte)’ previously defined here

    void printDec(byte *buffer, byte bufferSize) {

    ^

    exit status 1
    ‘MIFARE_Key’ in ‘class MFRC522’ does not name a type

    This report would have more information with
    “Show verbose output during compilation”
    option enabled in File -> Preferences.
    این اررور برای من میاد اگه امکانش هست لطفا راهنمایی کنید مرسی

    • سلام
      لطفا کدها از طریق کلید میانبری که برای کد در نظر گرفته شده است، کپی کنید . مجددا اتصال آردوینو به سیستم را برقرار کنید. در صورت برطرف نشدن مشکل از همین طریق اعلام نمایید.

        • سلام
          در ابتدا کد ها از طریق کلید میانبر کدها کپی کنید و سپس کتابخانه و‌ مسیر نصب کتابخانه rc532 را چک کنید. در صورت برطرف نشدن مشکل از همین طریق اقدام نمایید.

    • سلام
      پس پس از اتصال آردوینو به لپتاپ باید پورت انتخاب شود. در صورتیکه پورت شناسایی نشده است باید از طریق مسیر computer / properties / Device manager / portable devices ، پورت را فعال کنید.

  • سلام وتشکر سوال اینکه ایا برنامه که روی اردینو میریزیم قابل حظف ونصب مجدد است

  • با سلام خسته نباشید لطفا میخواستم بدونم ماژول کارت خان rc522 بروی اردینو مگا۲۵۶۰ جواب میدهد ودر صورت جواب کد ان را چگونه واز چه سایتی تهیه کنم ممنون میشم

    • سلام
      بله هیچ تفاوتی نخواهد داشت و از همین کد هم میتوانید استفاده کنید. تنها باید به چند نکته دقت کنید. در این آموزش از آردوینو uno استفاده شده و در کد برنامه در چند خط اول پایه های دیجیتال برد آردوینو uno تعریف شده است. شما باید در خط ۴ و ۵ برنامه پایه دیجیتال استفاده شده آردوینو مگا را جایگزین کنید. همانند همین آموزش باید پایه های SDA , SCK , MOSI , MISO , RST را به پایه های دیجیتال (D) آردوینو مگا اتصال دهید. در خصوص سوال دوم هم با توجه به درخواست کاربران در سری آموزش های RFID قرار خواهیم داد.

  • سلام خسته نباشید میخواستم اموزش کامل اردینو وماژول کارت ار س پانصد بیست دو راتهیه کنم لطفا راهنمایی کنید

  • سلام لطفا در صورت امکان بنده را در حل مشکل پیش امده راهنمایی بفرمایید.
    exit status 1

    error copiling for board arduino uno

    • سلام
      ارور مربوط به کامپایل برد آردوینو است. اگر از مدل آردوینو UNO استفاده میکنید حتما در قسمت Tools نوع برد را به درستی انتخاب کنید. همچنین مطمئن شوید که پورت انتخاب شده است یا خیر. برای اینکار از منو Tools/ Port پورت را انتخاب کنید. در صورت برطرف نشدن مجددا اعلام کنید تا راهنمایی کنم.

      • سلام لطفا در صورت امکان بده رو راهنمایی بفرمایید This report would have more information with
        “Show verbose output during compilation”
        enabled in File > Preferences.
        Arduino: 1.0.6 (Windows 7), Board: “Arduino Mega 2560 or Mega ADK”
        sketch_feb14g:7: error: ‘constexpr’ does not name a type
        sketch_feb14g:8: error: ‘constexpr’ does not name a type
        sketch_feb14g:10: error: ‘SS_PIN’ was not declared in this scope
        sketch_feb14g:10: error: ‘RST_PIN’ was not declared in this scope
        sketch_feb14g:12: error: ‘MIFARE_Key’ in class ‘MFRC522’ does not name a type
        sketch_feb14g.ino: In function ‘void setup()’:
        sketch_feb14g:20: error: ‘class MFRC522’ has no member named ‘PCD_Init’
        sketch_feb14g:23: error: ‘key’ was not declared in this scope
        sketch_feb14g:28: error: ‘key’ was not declared in this scope
        sketch_feb14g:28: error: ‘MF_KEY_SIZE’ is not a member of ‘MFRC522’
        sketch_feb14g.ino: In function ‘void loop()’:
        sketch_feb14g:34: error: ‘class MFRC522’ has no member named ‘PICC_IsNewCardPresent’
        sketch_feb14g:38: error: ‘class MFRC522’ has no member named ‘PICC_ReadCardSerial’
        sketch_feb14g:42: error: ‘PICC_Type’ is not a member of ‘MFRC522′
        sketch_feb14g:42: error: expected `;’ before ‘piccType’
        sketch_feb14g:43: error: ‘class MFRC522’ has no member named ‘PICC_GetTypeName’
        sketch_feb14g:43: error: ‘piccType’ was not declared in this scope
        sketch_feb14g:46: error: ‘PICC_TYPE_MIFARE_MINI’ is not a member of ‘MFRC522’
        sketch_feb14g:47: error: ‘PICC_TYPE_MIFARE_1K’ is not a member of ‘MFRC522’
        sketch_feb14g:48: error: ‘PICC_TYPE_MIFARE_4K’ is not a member of ‘MFRC522’
        sketch_feb14g:53: error: ‘class MFRC522’ has no member named ‘uid’
        sketch_feb14g:54: error: ‘class MFRC522’ has no member named ‘uid’
        sketch_feb14g:55: error: ‘class MFRC522’ has no member named ‘uid’
        sketch_feb14g:56: error: ‘class MFRC522’ has no member named ‘uid’
        sketch_feb14g:61: error: ‘class MFRC522’ has no member named ‘uid’
        sketch_feb14g:66: error: ‘class MFRC522’ has no member named ‘uid’
        sketch_feb14g:66: error: ‘class MFRC522’ has no member named ‘uid’
        sketch_feb14g:69: error: ‘class MFRC522’ has no member named ‘uid’
        sketch_feb14g:69: error: ‘class MFRC522’ has no member named ‘uid’
        sketch_feb14g:75: error: ‘class MFRC522’ has no member named ‘PICC_HaltA’
        sketch_feb14g:78: error: ‘class MFRC522’ has no member named ‘PCD_StopCrypto1’

        • سلام
          در ابتدا عنوان کنید از کدام یک از بردهای آردوینو استفاده می‌کنید؟ تا راهنمایی کنم.

              • سلام مجدد
                در کامنت قبلی شما پاسخ داده شد. موارد گفته شده را بررسی کنید. سپس نتیجه را اعلام کنید.

            • سلام مجدد
              نوع برد را از منو Tools چک کنید و باید mega2560 انتخاب شود.
              کدها را از طریق کلیدهای مانبر کپی کنید و به نرم افزار انتقال دهید. حتما نتیجه را اعلام نمایید تا در صورت برطرف نشدن مشکل راهنمایی کنم.

      • سلام خواهشمندم در صورت امکان کدهای ماژول rc522 را یک بار دیگر قرار دهیدکد های قبلی errorهای بالا را دارد .

        • سلام
          کدهای هر آموزش قبل از انتشار بررسی خواهند شد و خطایی در کد برنامه وجود ندارد. دقت کنید کدها را تنها از طریق کلیدهای میانبر کپی و به نرم افزار آردوینو انتقال دهید. لطفا ارور و مشکلی که با آن مواجه شدید را ارسال کنید تا راهنمایی کنم.

        • This report would have more information with
          “Show verbose output during compilation”
          enabled in File > Preferences.
          Arduino: 1.0.6 (Windows 7), Board: “Arduino Mega 2560 or Mega ADK”
          In file included from C:\Program Files (x86)\Arduino\libraries\MFRC522-1.3.6\src/MFRC522.h:78,
          from manoochehr1.ino:2:
          C:\Program Files (x86)\Arduino\libraries\MFRC522-1.3.6\src/require_cpp11.h:9:2: error: #error “This library needs at least a C++11 compliant compiler, maybe compiler argument for C++11 support is missing or if you use Arduino IDE upgrade to version >=1.6.6”
          In file included from manoochehr1.ino:2:
          C:\Program Files (x86)\Arduino\libraries\MFRC522-1.3.6\src/MFRC522.h:148: error: use of enum ‘PCD_Register’ without previous declaration
          C:\Program Files (x86)\Arduino\libraries\MFRC522-1.3.6\src/MFRC522.h:148: error: expected primary-expression before ‘{‘ token
          C:\Program Files (x86)\Arduino\libraries\MFRC522-1.3.6\src/MFRC522.h:148: error: expected ‘;’ before ‘{‘ token
          C:\Program Files (x86)\Arduino\libraries\MFRC522-1.3.6\src/MFRC522.h:223: error: use of enum ‘PCD_Command’ without previous declaration
          C:\Program Files (x86)\Arduino\libraries\MFRC522-1.3.6\src/MFRC522.h:223: error: expected primary-expression before ‘{‘ token
          C:\Program Files (x86)\Arduino\libraries\MFRC522-1.3.6\src/MFRC522.h:223: error: expected ‘;’ before ‘{‘ token
          C:\Program Files (x86)\Arduino\libraries\MFRC522-1.3.6\src/MFRC522.h:238: error: use of enum ‘PCD_RxGain’ without previous declaration
          C:\Program Files (x86)\Arduino\libraries\MFRC522-1.3.6\src/MFRC522.h:238: error: expected primary-expression before ‘{‘ token
          C:\Program Files (x86)\Arduino\libraries\MFRC522-1.3.6\src/MFRC522.h:238: error: expected ‘;’ before ‘{‘ token
          C:\Program Files (x86)\Arduino\libraries\MFRC522-1.3.6\src/MFRC522.h:253: error: use of enum ‘PICC_Command’ without previous declaration
          C:\Program Files (x86)\Arduino\libraries\MFRC522-1.3.6\src/MFRC522.h:253: error: expected primary-expression before ‘{‘ token
          C:\Program Files (x86)\Arduino\libraries\MFRC522-1.3.6\src/MFRC522.h:253: error: expected ‘;’ before ‘{‘ token
          C:\Program Files (x86)\Arduino\libraries\MFRC522-1.3.6\src/MFRC522.h:287: error: use of enum ‘PICC_Type’ without previous declaration
          C:\Program Files (x86)\Arduino\libraries\MFRC522-1.3.6\src/MFRC522.h:287: error: expected primary-expression before ‘{‘ token
          C:\Program Files (x86)\Arduino\libraries\MFRC522-1.3.6\src/MFRC522.h:287: error: expected ‘;’ before ‘{‘ token
          C:\Program Files (x86)\Arduino\libraries\MFRC522-1.3.6\src/MFRC522.h:303: error: use of enum ‘StatusCode’ without previous declaration
          C:\Program Files (x86)\Arduino\libraries\MFRC522-1.3.6\src/MFRC522.h:303: error: expected primary-expression before ‘{‘ token
          C:\Program Files (x86)\Arduino\libraries\MFRC522-1.3.6\src/MFRC522.h:303: error: expected ‘;’ before ‘{‘ token
          C:\Program Files (x86)\Arduino\libraries\MFRC522-1.3.6\src/MFRC522.h:335: error: wrong number of arguments specified for ‘deprecated’ attribute
          C:\Program Files (x86)\Arduino\libraries\MFRC522-1.3.6\src/MFRC522.h:341: error: ‘PCD_Register’ has not been declared
          C:\Program Files (x86)\Arduino\libraries\MFRC522-1.3.6\src/MFRC522.h:342: error: ‘PCD_Register’ has not been declared
          C:\Program Files (x86)\Arduino\libraries\MFRC522-1.3.6\src/MFRC522.h:343: error: ‘PCD_Register’ has not been declared
          C:\Program Files (x86)\Arduino\libraries\MFRC522-1.3.6\src/MFRC522.h:344: error: ‘PCD_Register’ has not been declared
          C:\Program Files (x86)\Arduino\libraries\MFRC522-1.3.6\src/MFRC522.h:345: error: ‘PCD_Register’ has not been declared
          C:\Program Files (x86)\Arduino\libraries\MFRC522-1.3.6\src/MFRC522.h:346: error: ‘PCD_Register’ has not been declared
          C:\Program Files (x86)\Arduino\libraries\MFRC522-1.3.6\src/MFRC522.h:347: error: ‘StatusCode’ does not name a type
          C:\Program Files (x86)\Arduino\libraries\MFRC522-1.3.6\src/MFRC522.h:354: error: wrong number of arguments specified for ‘deprecated’ attribute
          C:\Program Files (x86)\Arduino\libraries\MFRC522-1.3.6\src/MFRC522.h:366: error: ‘StatusCode’ does not name a type
          C:\Program Files (x86)\Arduino\libraries\MFRC522-1.3.6\src/MFRC522.h:367: error: ‘StatusCode’ does not name a type
          C:\Program Files (x86)\Arduino\libraries\MFRC522-1.3.6\src/MFRC522.h:368: error: ‘StatusCode’ does not name a type
          C:\Program Files (x86)\Arduino\libraries\MFRC522-1.3.6\src/MFRC522.h:369: error: ‘StatusCode’ does not name a type
          C:\Program Files (x86)\Arduino\libraries\MFRC522-1.3.6\src/MFRC522.h:370: error: ‘StatusCode’ does not name a type
          C:\Program Files (x86)\Arduino\libraries\MFRC522-1.3.6\src/MFRC522.h:371: error: ‘StatusCode’ does not name a type
          C:\Program Files (x86)\Arduino\libraries\MFRC522-1.3.6\src/MFRC522.h:372: error: ‘StatusCode’ does not name a type
          C:\Program Files (x86)\Arduino\libraries\MFRC522-1.3.6\src/MFRC522.h:377: error: ‘StatusCode’ does not name a type
          C:\Program Files (x86)\Arduino\libraries\MFRC522-1.3.6\src/MFRC522.h:379: error: ‘StatusCode’ does not name a type
          C:\Program Files (x86)\Arduino\libraries\MFRC522-1.3.6\src/MFRC522.h:380: error: ‘StatusCode’ does not name a type
          C:\Program Files (x86)\Arduino\libraries\MFRC522-1.3.6\src/MFRC522.h:381: error: ‘StatusCode’ does not name a type
          C:\Program Files (x86)\Arduino\libraries\MFRC522-1.3.6\src/MFRC522.h:382: error: ‘StatusCode’ does not name a type
          C:\Program Files (x86)\Arduino\libraries\MFRC522-1.3.6\src/MFRC522.h:383: error: ‘StatusCode’ does not name a type
          C:\Program Files (x86)\Arduino\libraries\MFRC522-1.3.6\src/MFRC522.h:384: error: ‘StatusCode’ does not name a type
          C:\Program Files (x86)\Arduino\libraries\MFRC522-1.3.6\src/MFRC522.h:385: error: ‘StatusCode’ does not name a type
          C:\Program Files (x86)\Arduino\libraries\MFRC522-1.3.6\src/MFRC522.h:386: error: ‘StatusCode’ does not name a type
          C:\Program Files (x86)\Arduino\libraries\MFRC522-1.3.6\src/MFRC522.h:387: error: ‘StatusCode’ does not name a type
          C:\Program Files (x86)\Arduino\libraries\MFRC522-1.3.6\src/MFRC522.h:388: error: ‘StatusCode’ does not name a type
          C:\Program Files (x86)\Arduino\libraries\MFRC522-1.3.6\src/MFRC522.h:393: error: ‘StatusCode’ does not name a type
          C:\Program Files (x86)\Arduino\libraries\MFRC522-1.3.6\src/MFRC522.h:396: error: expected ‘;’ before ‘(‘ token
          C:\Program Files (x86)\Arduino\libraries\MFRC522-1.3.6\src/MFRC522.h:397: error: ‘PICC_Type’ does not name a type
          C:\Program Files (x86)\Arduino\libraries\MFRC522-1.3.6\src/MFRC522.h:400: error: expected ‘;’ before ‘(‘ token
          C:\Program Files (x86)\Arduino\libraries\MFRC522-1.3.6\src/MFRC522.h:406: error: ‘PICC_Type’ has not been declared
          C:\Program Files (x86)\Arduino\libraries\MFRC522-1.3.6\src/MFRC522.h:413: error: wrong number of arguments specified for ‘deprecated’ attribute
          C:\Program Files (x86)\Arduino\libraries\MFRC522-1.3.6\src/MFRC522.h:415: error: wrong number of arguments specified for ‘deprecated’ attribute
          C:\Program Files (x86)\Arduino\libraries\MFRC522-1.3.6\src/MFRC522.h:417: error: wrong number of arguments specified for ‘deprecated’ attribute
          C:\Program Files (x86)\Arduino\libraries\MFRC522-1.3.6\src/MFRC522.h:428: error: ‘StatusCode’ does not name a type
          In file included from manoochehr1.ino:3:
          C:\Program Files (x86)\Arduino\libraries\MFRC522-1.3.6\src/MFRC522Extended.h:16: error: use of enum ‘TagBitRates’ without previous declaration
          C:\Program Files (x86)\Arduino\libraries\MFRC522-1.3.6\src/MFRC522Extended.h:16: error: expected primary-expression before ‘{‘ token
          C:\Program Files (x86)\Arduino\libraries\MFRC522-1.3.6\src/MFRC522Extended.h:16: error: expected ‘;’ before ‘{‘ token
          C:\Program Files (x86)\Arduino\libraries\MFRC522-1.3.6\src/MFRC522Extended.h:31: error: ‘TagBitRates’ does not name a type
          C:\Program Files (x86)\Arduino\libraries\MFRC522-1.3.6\src/MFRC522Extended.h:32: error: ‘TagBitRates’ does not name a type
          C:\Program Files (x86)\Arduino\libraries\MFRC522-1.3.6\src/MFRC522Extended.h:87: error: ‘StatusCode’ does not name a type
          C:\Program Files (x86)\Arduino\libraries\MFRC522-1.3.6\src/MFRC522Extended.h:88: error: ‘StatusCode’ does not name a type
          C:\Program Files (x86)\Arduino\libraries\MFRC522-1.3.6\src/MFRC522Extended.h:89: error: ‘StatusCode’ does not name a type
          C:\Program Files (x86)\Arduino\libraries\MFRC522-1.3.6\src/MFRC522Extended.h:90: error: ‘StatusCode’ does not name a type
          C:\Program Files (x86)\Arduino\libraries\MFRC522-1.3.6\src/MFRC522Extended.h:95: error: ‘StatusCode’ does not name a type
          C:\Program Files (x86)\Arduino\libraries\MFRC522-1.3.6\src/MFRC522Extended.h:96: error: ‘StatusCode’ does not name a type
          C:\Program Files (x86)\Arduino\libraries\MFRC522-1.3.6\src/MFRC522Extended.h:97: error: ‘StatusCode’ does not name a type
          C:\Program Files (x86)\Arduino\libraries\MFRC522-1.3.6\src/MFRC522Extended.h:98: error: ‘StatusCode’ does not name a type
          C:\Program Files (x86)\Arduino\libraries\MFRC522-1.3.6\src/MFRC522Extended.h:103: error: ‘PICC_Type’ does not name a type
          C:\Program Files (x86)\Arduino\libraries\MFRC522-1.3.6\src/MFRC522Extended.h:104: error: no members matching ‘MFRC522::PICC_GetType’ in ‘class MFRC522’
          C:\Program Files (x86)\Arduino\libraries\MFRC522-1.3.6\src/MFRC522Extended.h:116: error: expected ‘;’ before ‘override’
          C:\Program Files (x86)\Arduino\libraries\MFRC522-1.3.6\src/MFRC522Extended.h:117: error: expected ‘;’ before ‘override’
          manoochehr1.ino: In function ‘void setup()’:
          manoochehr1:68: error: ‘class MFRC522’ has no member named ‘RxGain_max’
          manoochehr1.ino: In function ‘int getID()’:
          manoochehr1:176: error: ‘class MFRC522’ has no member named ‘PICC_HaltA’لطفا جهت حل مشکل بالا راهنمایی بفرمایید. ممنون

          • لطفا قسمتی از ارور که قرمز رنگ شده است را ارسال کنید تا بررسی و راهنمایی کنم. همچنین برد آردوینو مورد استفاده چیست؟

  • سلام
    من هرکاری میکنم این ارور میادش
    this code scan the MIFARE Classsic NUID.
    Using the following key: FF FF FF FF FF FF
    چندین بار چک کردم
    با چندین تگ
    یه چرا قرمز هم زو ماژول زوشنه
    و دقیقا عین مدل رو از سایتتون خزیدم

    • الان هم برنامه های نمونه دیگه رو که اجرا میکنم این ارور میادش
      Firmware Version: 0x0 = (unknown)
      WARNING: Communication failure, is the MFRC522 properly connected?
      Scan PICC to see UID, SAK, type, and data blocks…
      برد هم uno هسنش

      • سلام
        این ارور مربوط به اتصال RFID است. پایه های ماژول را مجددا چک کنید و نتیجه را اعلام کنید تا راهنمایی کنم.

    • سلام
      ممکن است تگ مورد استفاده شما فقط به صورت Read باشد. برای این آموزش باید از تگ های Read & Write استفاده کنید.

      • ممنون از پاسختون
        قبل از اینکه پاسخ بدید تو گیت هاب دیدم که ننوشته اشکال از اتصالاته و درست پایه ها لحیم نشده و محدد چک کردم و درست شد
        الان مشکل دیگه ای که دارم این تگ هارو من خریدم
        https://daneshjookit.com/%D9%85%D8%A7%DA%98%D9%88%D9%84-%D8%AA%DA%AF-rfid/1718-%D8%AA%DA%AF-rfid-%D8%AE%D9%88%D8%A7%D9%86%D8%AF%D9%86-%D9%88-%D9%86%D9%88%D8%B4%D8%AA%D9%86.html
        دوتا ازشون ولی هیچ کدومو برد شناسایی نمیکنه

        • سلام مجدد
          کاربر گرامی این تگ ها در فروشگاه با عنوان «تگ RFID با فرکانس ۱۲۵ کیلوهرتز و قابلیت خواندن RFID Tag
          » قرار گرفته است. برای راه اندازی این تگ‌ها با ماژول RFID باید از کدهای دیگری استفاده کنید. اگر روش کار را نمیدانید، باید منتظر انتشار آموزش‌های بعدی باشید.

          • C:\Users\edehal-pc\Documents\Arduino\sketch_feb16a\sketch_feb16a.ino:4:21: fatal error: MFRC522.h: No such file or directory

            #include

            ^

            compilation terminated.

            exit status 1
            Error compiling for board Arduino/Genuino Uno.
            سلام میشه راهنمایی کنید مشکل بالا چی هست و چطور باید حلش کرد

            • سلام
              این ارور مربوط به کتابخانه FRC522 است. در متن آموزش فراخوانی کتابخانه را کامل توضیح دادم. کتابخانهRC522 را نصب کنید. و در مسیر نصب آردوینو کپی کنید. نتیجه را از همین طریق اعلام کنید، در صورت برطرف نشدن مشکل راهنمایی خواهم کرد.

          • سلام
            اخه تو یکی از اموزش هاتون این رو معرفی کرده بود ک استفاده کنیم.
            الان این تگ ها نیاز به جه کار خاصی دارن ک روشون انجام بشه.میشه توضیحات کوچکی یا کلید واژه انگلیسی بگید که تو سایت های خارجی بگردم
            ممنون

  • برای خرید محصولات پروژه خواندن کدهای تگ RFID با ماژول RC522 و آردوینو چه مدت زمانی طول میکشه تا به دستم برسه و اینکه قابلیت پیاده سازی در نرم افزار هایی مثل پروتیوس – آلتیوم و یا labview رو داره؟

    • سلام
      لینک محصولات در متن آموزش درج شده است. با کلیک بر روی لینک‌ها به فروشگاه ارجاع داده می‌شوید. در همان قسمت سوال خود را مطرح نمایید تا کارشناسان پاسخ دهند. همچنین موارد مربوط به فروشگاه در اینجا بررسی نمی‌شوند.
      در خصوص سوال دوم هر پروژه‌ای امکان اجرا شدن در نرم افزارهای منحصر به فرد خود را دارند ولی با کد این برنامه بی ارتباط است. به عبارتی در این آموزش از نرم افزار دیگری استفاده شده است.

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

    • سلام
      برای انتقال کدها دو روش وجود دارد. در نوار سمت راست کد برنامه دو آیکون قرار گرفته شده است. با نگه داشتن موس بر روی هر یک از آن ها نحوه ی انتقال نمایش داده می‌شود. به عنوان مثال با انتخاب آیکون ۳ از راست می‌توانید توسط دو کلید میانبر ctrl+c و ctrl+v کد را کپی کنید.

    • سلام مجدد
      لطفا اروری که با آن مواجه می‌شوید، ارسال نمایید تا بتوانم راهنمایی کنم. ورژن آردوینو برای اجرا شدن کدها مهم نیست. لطفا ارور و نحوه ی انتقال کدها را توضیح دهید تا راهنمایی کنم.

  • سلام . ببخشید من تگ و کارت های RFID را از لینکی که شما گذاشته بودید چند تا خریداری کردم ولی فقط تگ و کارت RFID ماژول RFID را میخواند و در نرم افزار نشان میدهد .تمامی مراحلی که شما فرمودید انجام دادم فقط مشکلم این جاست که کارت ها و تگ های RFID به جز اونایی که با ماژول بود دیگه نمیخونه .میتونید لینک خریداری کارت وتگی که ماژول بتونه بخونه رو بزارید ؟ ممنون

    • سلام
      دقت کنید تگی که خرید می‌کنید باید هر دو قابلیت Read & Write را داشته باشد. تگ RFID موجود در فروشگاه تنها قابلیت خواندن دارد و با این کد از RFID قابل اجرا نیست. در توضیح کالا به این نکته اشاره شده است. پس از موجود شدن تگ RFID با هر دو قابلیت Read & Write از همین طریق اعلام خواهم کرد.

      • مرسی, ببخشید من یک سوال دیگه هم دارم,الان دوباره برنامه را اجرا کردم ولی کارت و تگی که قبلا ماژول میخوند را دیگه نمیخونه, مشکل کجا هست؟همون کارت و تگ که همراه ماژول بود را دیگه نمیخونه

  • سلام
    عمر این بورد چقدره؟
    من برای کاری که میخوام انجام بدم باید این بورد رو همیشه روشن نگه دارم
    چون باید چندین ماه بصورت ۲۴ ساعته روشن بمونه به همراه چند ماژول مثل RFID و ESP و …
    میخواستم بدونم مشکلی پیش میاد یا خیر
    تشکر

    • سلام
      این موارد به صورت کلی تا به امروز مشکلی در عملکرد نداشته است ولی باز هم بستگی به پروژه و شرایط محیطی دارد.

  • سلام
    مومنی هستم
    برد یا ماژول مانند درب کمد استخری ، بدین صورت که با نزدیک شدن تگ ، رله ای فعال شود لازم داشتم
    ممنون میشوم راهنمایی کنید

  • دوستان عزیزی که با ارور
    MIFARE_Key’ in ‘class MFRC522’ does not name a type
    مواجه میشوند:
    از داخل خود نرم افزار آردوینو اگه کتابخونه MFRC522 رو آپدیت کنید مشکل حل میشه.
    با تشکر از سایت دیجی اسپارک و خانوم بلورچیان

    • سلام
      با تشکر از اینکه اطلاعات خود را با دبگر کاربران به اشتراک می‌گذارید.
      موفق باشید.

  • با سلام
    من وقتی می خواهم برنامه را اپلود کنم ای ارور را می دهد:
    Arduino: 1.8.1 (Windows 7), Board: “Arduino/Genuino Uno”

    C:\Users\mortezagh.82\Documents\Arduino\sketch\sketch.ino:2:21: fatal error: MFRC522.h: No such file or directory

    #include

    ^

    compilation terminated.

    exit status 1
    Error compiling for board Arduino/Genuino Uno.

    This report would have more information with
    “Show verbose output during compilation”
    option enabled in File -> Preferences.
    مشکل از کجاست؟؟؟؟

    • سلام
      قبل از آپلود برنامه از منو Tools تنظیمات برد را بررسی کنید. اگر از آردوینو UNO استفاده میکنید، نوع برد را UNO انتخاب و پورت را انتخاب کنید.
      همچنین کتابخانه MFRC522 را فراخوانی کنید.

      • با سلام
        دوباره این ارور رومیده:
        Arduino: 1.8.1 (Windows 7), Board: “Arduino/Genuino Uno”

        SRF04.arduinocode:9: error: ‘MIFARE_Key’ in ‘class MFRC522’ does not name a type

        MFRC522::MIFARE_Key key;

        ^

        G:\SRF04.arduinocode\SRF04.arduinocode.ino: In function ‘void setup()’:

        SRF04.arduinocode:17: error: ‘class MFRC522’ has no member named ‘PCD_Init’

        rfid.PCD_Init(); // Init MFRC522

        ^

        SRF04.arduinocode:20: error: ‘key’ was not declared in this scope

        key.keyByte[i] = 0xFF;

        ^

        SRF04.arduinocode:25: error: ‘key’ was not declared in this scope

        printHex(key.keyByte, MFRC522::MF_KEY_SIZE);

        ^

        SRF04.arduinocode:25: error: ‘MF_KEY_SIZE’ is not a member of ‘MFRC522’

        printHex(key.keyByte, MFRC522::MF_KEY_SIZE);

        ^

        G:\SRF04.arduinocode\SRF04.arduinocode.ino: In function ‘void loop()’:

        SRF04.arduinocode:31: error: ‘class MFRC522’ has no member named ‘PICC_IsNewCardPresent’

        if ( ! rfid.PICC_IsNewCardPresent())

        ^

        SRF04.arduinocode:35: error: ‘class MFRC522’ has no member named ‘PICC_ReadCardSerial’

        if ( ! rfid.PICC_ReadCardSerial())

        ^

        SRF04.arduinocode:39: error: ‘PICC_Type’ is not a member of ‘MFRC522’

        MFRC522::PICC_Type piccType = rfid.PICC_GetType(rfid.uid.sak);

        ^

        SRF04.arduinocode:40: error: ‘class MFRC522’ has no member named ‘PICC_GetTypeName’

        Serial.println(rfid.PICC_GetTypeName(piccType));

        ^

        SRF04.arduinocode:40: error: ‘piccType’ was not declared in this scope

        Serial.println(rfid.PICC_GetTypeName(piccType));

        ^

        SRF04.arduinocode:43: error: ‘PICC_TYPE_MIFARE_MINI’ is not a member of ‘MFRC522’

        if (piccType != MFRC522::PICC_TYPE_MIFARE_MINI &&

        ^

        SRF04.arduinocode:44: error: ‘PICC_TYPE_MIFARE_1K’ is not a member of ‘MFRC522’

        piccType != MFRC522::PICC_TYPE_MIFARE_1K &&

        ^

        SRF04.arduinocode:45: error: ‘PICC_TYPE_MIFARE_4K’ is not a member of ‘MFRC522’

        piccType != MFRC522::PICC_TYPE_MIFARE_4K) {

        ^

        SRF04.arduinocode:50: error: ‘class MFRC522’ has no member named ‘uid’

        if (rfid.uid.uidByte[0] != nuidPICC[0] ||

        ^

        SRF04.arduinocode:51: error: ‘class MFRC522’ has no member named ‘uid’

        rfid.uid.uidByte[1] != nuidPICC[1] ||

        ^

        SRF04.arduinocode:52: error: ‘class MFRC522’ has no member named ‘uid’

        rfid.uid.uidByte[2] != nuidPICC[2] ||

        ^

        SRF04.arduinocode:53: error: ‘class MFRC522’ has no member named ‘uid’

        rfid.uid.uidByte[3] != nuidPICC[3] ) {

        ^

        SRF04.arduinocode:58: error: ‘class MFRC522’ has no member named ‘uid’

        nuidPICC[i] = rfid.uid.uidByte[i];

        ^

        SRF04.arduinocode:63: error: ‘class MFRC522’ has no member named ‘uid’

        printHex(rfid.uid.uidByte, rfid.uid.size);

        ^

        SRF04.arduinocode:63: error: ‘class MFRC522’ has no member named ‘uid’

        printHex(rfid.uid.uidByte, rfid.uid.size);

        ^

        SRF04.arduinocode:66: error: ‘class MFRC522’ has no member named ‘uid’

        printDec(rfid.uid.uidByte, rfid.uid.size);

        ^

        SRF04.arduinocode:66: error: ‘class MFRC522’ has no member named ‘uid’

        printDec(rfid.uid.uidByte, rfid.uid.size);

        ^

        SRF04.arduinocode:72: error: ‘class MFRC522’ has no member named ‘PICC_HaltA’

        rfid.PICC_HaltA();

        ^

        SRF04.arduinocode:75: error: ‘class MFRC522’ has no member named ‘PCD_StopCrypto1’

        rfid.PCD_StopCrypto1();

        ^

        exit status 1
        ‘MIFARE_Key’ in ‘class MFRC522’ does not name a type

        This report would have more information with
        “Show verbose output during compilation”
        option enabled in File -> Preferences.
        چه کار کنممممممم؟؟؟؟؟؟؟؟؟؟؟

        • سلام
          کد به درستی کپی نشده است.
          باید از طریق کلید های میانبری که برای انتقال کدها در نظر گرفته شده است، کد را انتقال دهید. حتما از Ctrl+C وCtrl+v استفاده کنید.
          نتیجه را از همین طریق اعلام کنید تا بررسی کنم.

          • بازم ارور میده:
            Arduino: 1.8.1 (Windows 7), Board: “Arduino/Genuino Uno”

            SRF04.arduinocode:9: error: ‘MIFARE_Key’ in ‘class MFRC522’ does not name a type

            MFRC522::MIFARE_Key key;

            ^

            G:\SRF04.arduinocode\SRF04.arduinocode.ino: In function ‘void setup()’:

            SRF04.arduinocode:17: error: ‘class MFRC522’ has no member named ‘PCD_Init’

            rfid.PCD_Init(); // Init MFRC522

            ^

            SRF04.arduinocode:20: error: ‘key’ was not declared in this scope

            key.keyByte[i] = 0xFF;

            ^

            SRF04.arduinocode:25: error: ‘key’ was not declared in this scope

            printHex(key.keyByte, MFRC522::MF_KEY_SIZE);

            ^

            SRF04.arduinocode:25: error: ‘MF_KEY_SIZE’ is not a member of ‘MFRC522’

            printHex(key.keyByte, MFRC522::MF_KEY_SIZE);

            ^

            G:\SRF04.arduinocode\SRF04.arduinocode.ino: In function ‘void loop()’:

            SRF04.arduinocode:31: error: ‘class MFRC522’ has no member named ‘PICC_IsNewCardPresent’

            if ( ! rfid.PICC_IsNewCardPresent())

            ^

            SRF04.arduinocode:35: error: ‘class MFRC522’ has no member named ‘PICC_ReadCardSerial’

            if ( ! rfid.PICC_ReadCardSerial())

            ^

            SRF04.arduinocode:39: error: ‘PICC_Type’ is not a member of ‘MFRC522’

            MFRC522::PICC_Type piccType = rfid.PICC_GetType(rfid.uid.sak);

            ^

            SRF04.arduinocode:40: error: ‘class MFRC522’ has no member named ‘PICC_GetTypeName’

            Serial.println(rfid.PICC_GetTypeName(piccType));

            ^

            SRF04.arduinocode:40: error: ‘piccType’ was not declared in this scope

            Serial.println(rfid.PICC_GetTypeName(piccType));

            ^

            SRF04.arduinocode:43: error: ‘PICC_TYPE_MIFARE_MINI’ is not a member of ‘MFRC522’

            if (piccType != MFRC522::PICC_TYPE_MIFARE_MINI &&

            ^

            SRF04.arduinocode:44: error: ‘PICC_TYPE_MIFARE_1K’ is not a member of ‘MFRC522’

            piccType != MFRC522::PICC_TYPE_MIFARE_1K &&

            ^

            SRF04.arduinocode:45: error: ‘PICC_TYPE_MIFARE_4K’ is not a member of ‘MFRC522’

            piccType != MFRC522::PICC_TYPE_MIFARE_4K) {

            ^

            SRF04.arduinocode:50: error: ‘class MFRC522’ has no member named ‘uid’

            if (rfid.uid.uidByte[0] != nuidPICC[0] ||

            ^

            SRF04.arduinocode:51: error: ‘class MFRC522’ has no member named ‘uid’

            rfid.uid.uidByte[1] != nuidPICC[1] ||

            ^

            SRF04.arduinocode:52: error: ‘class MFRC522’ has no member named ‘uid’

            rfid.uid.uidByte[2] != nuidPICC[2] ||

            ^

            SRF04.arduinocode:53: error: ‘class MFRC522’ has no member named ‘uid’

            rfid.uid.uidByte[3] != nuidPICC[3] ) {

            ^

            SRF04.arduinocode:58: error: ‘class MFRC522’ has no member named ‘uid’

            nuidPICC[i] = rfid.uid.uidByte[i];

            ^

            SRF04.arduinocode:63: error: ‘class MFRC522’ has no member named ‘uid’

            printHex(rfid.uid.uidByte, rfid.uid.size);

            ^

            SRF04.arduinocode:63: error: ‘class MFRC522’ has no member named ‘uid’

            printHex(rfid.uid.uidByte, rfid.uid.size);

            ^

            SRF04.arduinocode:66: error: ‘class MFRC522’ has no member named ‘uid’

            printDec(rfid.uid.uidByte, rfid.uid.size);

            ^

            SRF04.arduinocode:66: error: ‘class MFRC522’ has no member named ‘uid’

            printDec(rfid.uid.uidByte, rfid.uid.size);

            ^

            SRF04.arduinocode:72: error: ‘class MFRC522’ has no member named ‘PICC_HaltA’

            rfid.PICC_HaltA();

            ^

            SRF04.arduinocode:75: error: ‘class MFRC522’ has no member named ‘PCD_StopCrypto1’

            rfid.PCD_StopCrypto1();

            ^

            exit status 1
            ‘MIFARE_Key’ in ‘class MFRC522’ does not name a type

            This report would have more information with
            “Show verbose output during compilation”
            option enabled in File -> Preferences.
            چهکار کنم؟؟؟؟

            • در انتقال کدها ایراد دارید.
              از چه کتابخانه ای استفاده می‌کنید و اینکه به نظر می‌رسد کدها با برنامه دیگری ترکیب شده است. کلید Ctrl + N را بزنید و یک تب جدید باز کنید. سپس کد را از طریق کلید میانبر انتقال دهید.
              نتیجه را اعلام کنید.

                • سلام مجدد
                  با توجه به موارد گفته شده، کدها مجدد تست شد و ایرادی ندارد.
                  لطفا مراحل را دوباره با دقت کافی اجرا نمایید.
                  ۱ : کتابخانه را از لینک گفته شده دانلود کنید و به پوشه محل نصب آردوینو Library انتقال دهید. دقت کنید که فایل را حتما از حالت زیپ خارج نمایید.
                  ۲: سپس کد را از طریق کلید میانبر انتخاب کرده و توسط ctrl+ c و Ctrl+ v به نرم افزار آردوینو انتقال دهید.
                  ۳: از منو tools نوع برد و پورت را با توجه به نوع برد آردوینو مورد استفاده انتخاب کنید.
                  نتیجه را از همین طریق اعلام کنید.

  • ba salam mamnoon az amoozeshe khoobetoon.
    man in amoozesh ro anjam dadam vali vaghti kelid ro be paye 3 digital vasl kardam ba tahrike an hich taghiri dar medar ijad nemishavad.
    mamnoon misham pasokh bedin
    ba tashakor az shoma,

    • سلام
      این کد برای نمایش کد تگ ها می‌باشد و با هر بار نزدیک کردن یک تگ، کد آن در سریال مانیتور نمایش داده می‌شود.

  • سلام خیلی ممنونم از سایت خوبتون ولی ار اف ای دی من تگارو نمیشناسه امکان داره ماژولم خراب باشه

  • سلام من اتصالات و کد ها رو مطابق اون چیزی که گفتید انجام دادم و هیچ خطایی نداد اما وقتی تگ و کارت رو نزدیک ماژول میکنم هیچ پیغامی در مانیتور ظاهر نمیشه.

  • سلام ببخشید ها… ولی شما کاملا اشتباه می کنید. خواهشا قبل از ایجاد پست های جدید یکم در مورد اون مطلب مطالعه کنید Mfrc522 برای خواندن و نوشتن روی کارت های مایفر هستش یعنی تگ های ۱۳.۵۶MHz لطفا مطالب پست ها رو هر چه زود تر اصلاح کنید تا مردم دچار اشتباه در خرید نباشن! اگه کمکی در باره RFID خواستید می تونید به من اعتماد کنید… من در خدمتم

    • با سلام
      ضمن تشکر از اطلاع رسانی شما، لینک ها درست بوده است ولی گویا در فروشگاه عنوان کالا تغییر کرده است. در خصوص همکاری شما بابت پاسخ به کاربران هم تشکر می‌کنم. همچنین خوشحال خواهم شد که پاسخ کاربران را از همین طریق ارسال بفرمایید.

  • با سلام
    من ماژول rc522 را با اردوینو uno راه انداختم و کار میکنه ولی همین کار رو روی اردوینو پرو مینی و نانو انجام میدم کار ناقص میشه مثلا تو کتابخونه access control مستر کارت رو میخونه حالا که باید تگ دیگه رو اد کنی شماره تگ بعدی رو مینویسه و هنگ میکنه تا ریست نکنی هیچ کار دیگه ای انجام نمیده

    • سلام
      این مورد با بردهای دیگر تست شده و تا به حال مشکلی نداشته است.
      در این خصوص پبشنهاد می‌کنم، اتصالات را چک کنید. در آموزش های بعدی RFID اتصالات گفته شده است.
      نتیجه را اعلام کنید.

      • همه چی درسته این مشکل تو سایتهای خارجی هم پیدا کردم ولی جوابی براش نبود
        با uno مشکلی نداره ولی برای برد های نانو و پرو مینی این مشکل پیش میاد

        • کاربر گرامی تا جایی که بنده اطلاع دارم برای استفاده از rfid توسط برد آردوینو نانو به مشکل میخورید. لطفا مساعدت فرموده و سوالتان را فقط در یک قسمت بنویسید. از نوشتن همزمان سوال در چند پست خودداری کنید. همچنین اگر راه حلی پیدا کردید از همین طریق تجربه تان را برای دیگر کاربران منتشر کنید.

  • سلام،
    ماژول من پین SDA نداره جاش NSS داره… این کد رو هم اجرا کردم ماژول کار نمیکنه… راهنمایی کنید لطفا.مرسی

  • سلام. وقت خیر. من تصمیم دارم از این ماژول جهت ساخت کارت های اعتباری جهت فروش آب تصفیه شده استفاده کنم. آیا امکان کپی کردن اطلاعات میزان شارژ و UID در یک کارت دیگر و امکان تقلب توسط افراد سود جو وجود دارد؟ تشکر

    • سلام
      دقت داشته باشید که خواندن اطلاعات UID توسط ریدرهای دیگر امکان پذیر است. برای این منظور می‌بایست موارد را از طریق بخش نرم افزاری رفع کنید. به این صورت که هر UID مربوط به یک مشتری باشد و اطلاعات آن اعم از میزان شارژ و هر آن چیزی که نیاز دارید، سمت نرم افزار شما صورت بگیرد.

    • سلام
      پس از ثبت نام در سایت از طریق digispark.ir/login وارد شوید.
      پس از وارد شدن به سایت در همان آموزش مربوطه کدها نمایش داده خواهد شد.

      • سلام خسته نباشین
        بعد از ورود به سایتی توضیع دادین
        سه گذینه میاد به نام شناسنامه FAQS پیشخوان کد داخل کدوم یکی شونه
        ممنون

        • با سلام
          کاربر گرامی لینک ارایه شده مربوط به ورود به حساب کاربری در دیجی اسپارک می‌باشد. اگر با صفحه ای که میفرمایید روبرو می‌شوید یعنی وارد شده‌اید. مجددا به آموزش RFID مراجعه کنید. کدها برای شما نمایش داده خواهد شد.

      • سلام خسته نباشین
        من وارد اون سایتی که ادرس شو فرستادین شدم ٣گذینه میاد پیشخوان FAQS و شناسنامه تو کدوم قسمت کد RFID522 موجود است ممنون.

  • با سلام
    خیلی ممنون از آموزش های خوبتون
    میخاستم ببینم میشه یه تگ رو به تنهایی با این برد کپی کرد رو یه تگ جدید؟
    در واقع میخام کلون کنم

    • سلام
      بله بستگی به نوع تگ دارد. اینکار شدنی است ولی نیاز به توسعه کدهای مورد نظرتان خواهید داشت.

  • سلام
    من یک ماژول rfid دارم که قبلا سالم بود ولی الان وقتی کارت را اسکن می کنه یک کد دیگه بر می گردونه و آخر کد کاراکتر “ک” یا معادل کیبور انگلیسیش که ; هست را بر می گردونه.

    • با سلام
      کاربر گرام جهت بررسی و ارایه راهنمایی می‌بایستی وضعیت کاملی از فعالیت‌هایی که انجام داده‌اید. اعم از کدها و نوع ماژول و فرکانس کاری ورژن نرم افزار و…را ارسال کنید.

  • سلام وقتتون بخیر یه سوال داشتم در مورد اینکه میخوام تگ ها فقط یکبار قابلیت استفاده داشته باشند . یعنی اینکه بعد از خوانده شدن برای استفاده دوم ؛ کدشون توی برنامه بررسی بشه و اگه تکرار ی بود اخطار بده و قابل استفاده نباشه. خیلی ممنون از لطفتون

    • سلام
      در این خصوص امکان راهنمایی از طریق کامنت وجود ندارد و باید کدها تغییر کند.
      بررسی و در صورت امکان در بخش بعدی آموزش های RFID توضیح داده خواهد شد.

    • با سلام
      لطفا توضیحات کامل و شفاف ارائه دهید تا امکان راهنمایی وجود داشته باشد.

      • سلام
        منم همین مشکلو دارم.
        فقط میزنه ThThis code scan the MIFARE Classsic NUID.
        Using the following key: FF FF FF FF FF FF
        بسته استارترکیت بر پایه rfidسایت رو هم تهیه کردم.

        • با سلام
          جهت بررسی، وارد library manager از منو Sketch شده و کتابخانه MFRC522 را سرچ و آپدیت کنید.
          نتیجه را از همین طریق اعلام کنید.

  • با سلام
    اگر لطف کنید هر خطیو کامنت کنید و توضیح دهید که هر برای چی هستش ممنون میشم.
    همچنین اینکه دستور buffer چه کاربردی داره

    • با سلام
      کاربر گرامی در صورتیکه در هر خط از برنامه با ابهامی مواجه شده اید، بپرسید تا توضیح داده شود.
      توسط تابع Buffer مقادیر عددی دریافتی به هگز و دسیمال تبدبل خواهند شد.

  • سوال دومم اینکه: چه طور میشه اون ۴ بیت (مقدار سایز بیت ذخیره شده در چیپ) رو وقتی بیرون از حلقه for هم میاریم باز هم به ما همون ۴ بیتی نمایش بده(کلا۴ بیتو نمایش بده نه فقط خروجی حلقه اخروالبته بیرون از حلقه for)

  • با سلام
    به عنوان مثال در حلقه for که ساختیم ۴ بار تکرار میشه و در هر بار یک عددی را میده (برای خواندن تگ) بار اول:۳۴ بار دوم:۲B بار سوم ۵۳ و بار چهارم:۲۸ که کنارهم قرار گرفتن این اعداد میشه تگ کارتمان.اما وقتی از حلقه for بیرون میاریم و تگو میخونیم فقط عددی که میده عدد اخریعنی۲۸ هستش حالا چه طور میتونیم زمانی که از حلقه for بیرون اومدیم و تگ کارتو serial.print بکنیم به ما کامل عدد تگو ببگه یعنی بیرون از حلقه for وقتی Serial.printn میکنیم نمایش بده : ۳۴۲B5328

  • سلام من RFID رو با سروو موتور به آردوینو متصل کردم برنامه رو هم روی آردوینو آپلود کردم چون قبلا چند بار امتحان کردم که وقتی کارت رو جلوی RFID بگیرم ودرست کار کرده ایرادی تو بستن مدار و کد ش ندارم فقط نمیدونم چرا از یه جایی به بعد کارت رو نمیخونه تو سریال مانیتور هم چیزی رو نمایش نمیده با اینکه چراغ RFID روشنه میتونید کمکم کنید که مشکل از کجاست؟

    • با سلام
      اگر طبق آموزش پیش می‌روید، پس از تشخیص کارت خروجی فعال خواهد شد. به عنوان مثال در خروجی این آموزش از قفل استفاده شده است که با نزدیک شدن تگ قفل باز شده و پس از چند ثانیه بسته می‌شود. پیشنهاد می‌شود متن آموزش را کامل مطالعه نمایید و سپس از همین طریق سوالات خود را بپرسید.

  • با سلام و تشکر از سایت خوبتون .
    بنده می خواهم با استفاده از این پروژه یک رله را روشن کنم میشه راهنماییم کنید.

  • This code scan the MIFARE Classsic NUID.
    Using the following key: FF FF FF FF FF FF
    سلام من تگ نزدیک میکنم این پیغام تغییری نمیکنه مشکل کجاست؟ تگ همراه با ماژول فرستادین

    • با سلام
      لطفا توضیح دهید که چه مراحلی را انجام داده اید، در صورتیکه از ماژول کارت خوان همراه با تگ و کارت استفاده می‌کنید، نباید مشکلی وجود داشته باشد.

      • C:\Users\Eniac1\Documents\Arduino\sketch_may14a\sketch_may14a.ino: In function ‘void loop()’:

        C:\Users\Eniac1\Documents\Arduino\sketch_may14a\sketch_may14a.ino:39:50: warning: invalid conversion from ‘byte {aka unsigned char}’ to ‘MFRC522::PICC_Type’ [-fpermissive]

        MFRC522::PICC_Type piccType = rfid.PICC_GetType(rfid.uid.sak);

        ~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~

        Sketch uses 4928 bytes (15%) of program storage space. Maximum is 32256 bytes.
        Global variables use 217 bytes (10%) of dynamic memory, leaving 1831 bytes for local variables. Maximum is 2048 bytes.

        • با سلام
          با توجه به ارور ارسالی به نظر میرسد در انتقال کدها خطایی وجود داشته باشد. لطفا کد را کپی کرده و در یک تب جدید کپی کنید.

      • الان اینو تو مانیتور میده MFRC522 Software Version: 0x0 (unknown)
        WARNING: Communication failure, is the MFRC522 properly connected?
        Scan PICC to see UID, type, and data blocks…

        • با سلام
          این ارور نشان دهنده عدم اتصال ماژول RFID به آردوینو است. لطفا اتصالات را بررسی نمایید.

          • C:\Users\Eniac1\Documents\Arduino\sketch_may17a\sketch_may17a.ino: In function ‘void loop()’:

            C:\Users\Eniac1\Documents\Arduino\sketch_may17a\sketch_may17a.ino:39:50: warning: invalid conversion from ‘byte {aka unsigned char}’ to ‘MFRC522::PICC_Type’ [-fpermissive]

            MFRC522::PICC_Type piccType = rfid.PICC_GetType(rfid.uid.sak);

            ~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~

            Sketch uses 4928 bytes (15%) of program storage space. Maximum is 32256 bytes.
            Global variables use 217 bytes (10%) of dynamic memory, leaving 1831 bytes for local variables. Maximum is 2048 bytes.

            • این ارور قبلا ارسال شده و روش حل آن گفته شده است. مطابق با کامنت های قبل پیش رفته و نتیجه را اعلام کنید.

  • با سلام وخسته نباشید من یک ماژول rfid522 را با برد اردینو uno راه اندازی کردم گاهی سیستم هنگ می‌کنه و باید ریست یا برق تغذیه جا کنی که کار بکنه تا یک مدت باز دوباره این اتفاق می افته کار نمی کنه باز دوباره همین داستان

  • /*
    ——————————————————————————————————————–
    Example sketch/program showing An Arduino Door Access Control featuring RFID, EEPROM, Relay
    ——————————————————————————————————————–
    This is a MFRC522 library example; for further details and other examples see: https://github.com/miguelbalboa/rfid

    This example showing a complete Door Access Control System

    Simple Work Flow (not limited to) :
    +———+
    +———————————–>READ TAGS+^——————————————+
    | +——————–+ |
    | | | |
    | | | |
    | +—-v—–+ +—–v—-+ |
    | |MASTER TAG| |OTHER TAGS| |
    | +–+——-+ ++————-+ |
    | | | | |
    | | | | |
    | +—–v—+ +—-v—-+ +—-v——+ |
    | +————+READ TAGS+—+ |KNOWN TAG| |UNKNOWN TAG| |
    | | +-+——-+ | +———–+ +——————+ |
    | | | | | | |
    | +—-v—–+ +—-v—-+ +–v——–+ +-v———-+ +——v—-+ |
    | |MASTER TAG| |KNOWN TAG| |UNKNOWN TAG| |GRANT ACCESS| |DENY ACCESS| |
    | +———-+ +—+—–+ +—–+—–+ +—–+——+ +—–+—–+ |
    | | | | | |
    | +—-+ +—-v——+ +–v—+ | +—————>
    +——-+EXIT| |DELETE FROM| |ADD TO| | |
    +—-+ | EEPROM | |EEPROM| | |
    +———–+ +——+ +——————————-+

    Use a Master Card which is act as Programmer then you can able to choose card holders who will granted access or not

    * **Easy User Interface**

    Just one RFID tag needed whether Delete or Add Tags. You can choose to use Leds for output or Serial LCD module to inform users.

    * **Stores Information on EEPROM**

    Information stored on non volatile Arduino’s EEPROM memory to preserve Users’ tag and Master Card. No Information lost
    if power lost. EEPROM has unlimited Read cycle but roughly 100,000 limited Write cycle.

    * **Security**
    To keep it simple we are going to use Tag’s Unique IDs. It’s simple and not hacker proof.

    @license Released into the public domain.

    Typical pin layout used:
    —————————————————————————————–
    MFRC522 Arduino Arduino Arduino Arduino Arduino
    Reader/PCD Uno/101 Mega Nano v3 Leonardo/Micro Pro Micro
    Signal Pin Pin Pin Pin Pin Pin
    —————————————————————————————–
    RST/Reset RST 9 5 D9 RESET/ICSP-5 RST
    SPI SS SDA(SS) 10 53 D10 10 10
    SPI MOSI MOSI 11 / ICSP-4 51 D11 ICSP-4 16
    SPI MISO MISO 12 / ICSP-1 50 D12 ICSP-1 14
    SPI SCK SCK 13 / ICSP-3 52 D13 ICSP-3 15
    */

    #include // We are going to read and write PICC’s UIDs from/to EEPROM
    #include // RC522 Module uses SPI protocol
    #include // Library for Mifare RC522 Devices

    /*
    Instead of a Relay you may want to use a servo. Servos can lock and unlock door locks too
    Relay will be used by default
    */

    // #include

    /*
    For visualizing whats going on hardware we need some leds and to control door lock a relay and a wipe button
    (or some other hardware) Used common anode led,digitalWriting HIGH turns OFF led Mind that if you are going
    to use common cathode led or just seperate leds, simply comment out #define COMMON_ANODE,
    */

    #define COMMON_ANODE

    #ifdef COMMON_ANODE
    #define LED_ON LOW
    #define LED_OFF HIGH
    #else
    #define LED_ON HIGH
    #define LED_OFF LOW
    #endif

    #define redLed 7 // Set Led Pins
    #define greenLed 6
    #define blueLed 5

    #define relay A0// Set Relay Pin
    #define sensor A1
    #define wipeB 3// Button pin for WipeMode

    bool programMode = false; // initialize programming mode to false

    uint8_t successRead; // Variable integer to keep if we have Successful Read from Reader

    byte storedCard[100]; // Stores an ID read from EEPROM
    byte readCard[100]; // Stores scanned ID read from RFID Module
    byte masterCard[4]; // Stores master card’s ID read from EEPROM

    // Create MFRC522 instance.
    #define SS_PIN 10
    #define RST_PIN 9
    MFRC522 mfrc522(SS_PIN, RST_PIN);

    ///////////////////////////////////////// Setup ///////////////////////////////////
    void setup() {
    //Arduino Pin Configuration
    pinMode(redLed, OUTPUT);
    pinMode(greenLed, OUTPUT);
    pinMode(blueLed, OUTPUT);
    pinMode(wipeB, INPUT_PULLUP); // Enable pin’s pull up resistor
    pinMode(relay, OUTPUT);
    pinMode(sensor, OUTPUT);
    //Be careful how relay circuit behave on while resetting or power-cycling your Arduino
    digitalWrite(relay, HIGH); // Make sure door is locked
    digitalWrite(sensor, HIGH);
    digitalWrite(redLed, LED_OFF); // Make sure led is off
    digitalWrite(greenLed, LED_OFF); // Make sure led is off
    digitalWrite(blueLed, LED_OFF); // Make sure led is off

    //Protocol Configuration
    Serial.begin(9600); // Initialize serial communications with PC
    SPI.begin(); // MFRC522 Hardware uses SPI protocol
    mfrc522.PCD_Init(); // Initialize MFRC522 Hardware

    //If you set Antenna Gain to Max it will increase reading distance
    //mfrc522.PCD_SetAntennaGain(mfrc522.RxGain_max);

    Serial.println(F(“Access Control Example v0.1”)); // For debugging purposes
    ShowReaderDetails(); // Show details of PCD – MFRC522 Card Reader details

    //Wipe Code – If the Button (wipeB) Pressed while setup run (powered on) it wipes EEPROM
    if (digitalRead(wipeB) == LOW) { // when button pressed pin should get low, button connected to ground
    digitalWrite(redLed, LED_ON); // Red Led stays on to inform user we are going to wipe
    Serial.println(F(“Wipe Button Pressed”));
    Serial.println(F(“You have 10 seconds to Cancel”));
    Serial.println(F(“This will be remove all records and cannot be undone”));
    bool buttonState = monitorWipeButton(10000); // Give user enough time to cancel operation
    if (buttonState == true && digitalRead(wipeB) == LOW) { // If button still be pressed, wipe EEPROM
    Serial.println(F(“Starting Wiping EEPROM”));
    for (uint16_t x = 0; x < EEPROM.length(); x = x + 1) { //Loop end of EEPROM address
    if (EEPROM.read(x) == 0) { //If EEPROM address 0
    // do nothing, already clear, go to the next address in order to save time and reduce writes to EEPROM
    }
    else {
    EEPROM.write(x, 0); // if not write 0 to clear, it takes 3.3mS
    }
    }
    Serial.println(F("EEPROM Successfully Wiped"));
    digitalWrite(redLed, LED_OFF); // visualize a successful wipe
    delay(200);
    digitalWrite(redLed, LED_ON);
    delay(200);
    digitalWrite(redLed, LED_OFF);
    delay(200);
    digitalWrite(redLed, LED_ON);
    delay(200);
    digitalWrite(redLed, LED_OFF);
    }
    else {
    Serial.println(F("Wiping Cancelled")); // Show some feedback that the wipe button did not pressed for 15 seconds
    digitalWrite(redLed, LED_OFF);
    }
    }
    // Check if master card defined, if not let user choose a master card
    // This also useful to just redefine the Master Card
    // You can keep other EEPROM records just write other than 143 to EEPROM address 1
    // EEPROM address 1 should hold magical number which is '143'
    if (EEPROM.read(1) != 143) {
    Serial.println(F("No Master Card Defined"));
    Serial.println(F("Scan A PICC to Define as Master Card"));
    do {
    successRead = getID(); // sets successRead to 1 when we get read from reader otherwise 0
    digitalWrite(blueLed, LED_ON); // Visualize Master Card need to be defined
    delay(200);
    digitalWrite(blueLed, LED_OFF);
    delay(200);
    }
    while (!successRead); // Program will not go further while you not get a successful read
    for ( uint8_t j = 0; j < 4; j++ ) { // Loop 4 times
    EEPROM.write( 2 + j, readCard[j] ); // Write scanned PICC's UID to EEPROM, start from address 3
    }
    EEPROM.write(1, 143); // Write to EEPROM we defined Master Card.
    Serial.println(F("Master Card Defined"));
    }
    Serial.println(F("——————-"));
    Serial.println(F("Master Card's UID"));
    for ( uint8_t i = 0; i < 4; i++ ) { // Read Master Card's UID from EEPROM
    masterCard[i] = EEPROM.read(2 + i); // Write it to masterCard
    Serial.print(masterCard[i], HEX);
    }
    Serial.println("");
    Serial.println(F("——————-"));
    Serial.println(F("Everything is ready"));
    Serial.println(F("Waiting PICCs to be scanned"));
    cycleLeds(); // Everything ready lets give user some feedback by cycling leds
    }

    ///////////////////////////////////////// Main Loop ///////////////////////////////////
    void loop () {
    do {
    successRead = getID(); // sets successRead to 1 when we get read from reader otherwise 0
    // When device is in use if wipe button pressed for 10 seconds initialize Master Card wiping
    if (digitalRead(wipeB) == LOW) { // Check if button is pressed
    // Visualize normal operation is iterrupted by pressing wipe button Red is like more Warning to user
    digitalWrite(redLed, LED_ON); // Make sure led is off
    digitalWrite(greenLed, LED_OFF); // Make sure led is off
    digitalWrite(blueLed, LED_OFF); // Make sure led is off
    // Give some feedback
    Serial.println(F("Wipe Button Pressed"));
    Serial.println(F("Master Card will be Erased! in 10 seconds"));
    bool buttonState = monitorWipeButton(10000); // Give user enough time to cancel operation
    if (buttonState == true && digitalRead(wipeB) == LOW) { // If button still be pressed, wipe EEPROM
    EEPROM.write(1, 0); // Reset Magic Number.
    Serial.println(F("Master Card Erased from device"));
    Serial.println(F("Please reset to re-program Master Card"));
    while (1);
    }
    Serial.println(F("Master Card Erase Cancelled"));
    }
    if (programMode) {
    cycleLeds(); // Program Mode cycles through Red Green Blue waiting to read a new card
    }
    else {
    normalModeOn(); // Normal mode, blue Power LED is on, all others are off
    }
    }
    while (!successRead); //the program will not go further while you are not getting a successful read
    if (programMode) {
    if ( isMaster(readCard) ) { //When in program mode check First If master card scanned again to exit program mode
    Serial.println(F("Master Card Scanned"));
    Serial.println(F("Exiting Program Mode"));
    Serial.println(F("—————————–"));
    programMode = false;
    return;
    }
    else {
    if ( findID(readCard) ) { // If scanned card is known delete it
    Serial.println(F("I know this PICC, removing…"));
    deleteID(readCard);
    Serial.println("—————————–");
    Serial.println(F("Scan a PICC to ADD or REMOVE to EEPROM"));
    }
    else { // If scanned card is not known add it
    Serial.println(F("I do not know this PICC, adding…"));
    writeID(readCard);
    Serial.println(F("—————————–"));
    Serial.println(F("Scan a PICC to ADD or REMOVE to EEPROM"));
    }
    }
    }
    else {
    if ( isMaster(readCard)) { // If scanned card's ID matches Master Card's ID – enter program mode
    programMode = true;
    Serial.println(F("Hello Master – Entered Program Mode"));
    uint8_t count = EEPROM.read(0); // Read the first Byte of EEPROM that
    Serial.print(F(" ")); // stores the number of ID's in EEPROM
    Serial.print(count);
    Serial.print(F(" record(s) on EEPROM"));
    Serial.println("");
    Serial.println(F("Scan a PICC to ADD or REMOVE to EEPROM"));
    Serial.println(F("Scan Master Card again to Exit Program Mode"));
    Serial.println(F("—————————–"));
    }
    else {
    if ( findID(readCard)) { // If not, see if the card is in the EEPROM
    Serial.println(F("خوش آمدید"));
    granted(300); // Open the door lock for 300 ms

    }
    else { // If not, show that the ID was not valid
    Serial.println(F("شما مجوز ورود ندارید"));
    denied();

    }
    }
    }
    }

    ///////////////////////////////////////// Access Granted ///////////////////////////////////
    void granted ( uint16_t setDelay) {

    digitalWrite(blueLed, LED_OFF); // Turn off blue LED
    digitalWrite(redLed, LED_OFF); // Turn off red LED
    digitalWrite(greenLed, LED_ON); // Turn on green LED
    digitalWrite(relay, LOW); // Unlock door!
    digitalWrite(sensor, HIGH);
    delay(setDelay); // Hold door lock open for given seconds
    digitalWrite(relay, LOW); // Relock door
    delay(400); // Hold green LED on for a second
    digitalWrite(relay, HIGH);
    delay(3000);
    digitalWrite(sensor, LOW);
    delay(300);
    }

    ///////////////////////////////////////// Access Denied ///////////////////////////////////
    void denied() {
    digitalWrite(greenLed, LED_OFF); // Make sure green LED is off
    digitalWrite(blueLed, LED_OFF); // Make sure blue LED is off
    digitalWrite(redLed, LED_ON); // Turn on red LED
    delay(1000);
    }

    ///////////////////////////////////////// Get PICC's UID ///////////////////////////////////
    uint8_t getID() {
    // Getting ready for Reading PICCs
    if ( ! mfrc522.PICC_IsNewCardPresent()) { //If a new PICC placed to RFID reader continue
    return 0;
    }
    if ( ! mfrc522.PICC_ReadCardSerial()) { //Since a PICC placed get Serial and continue
    return 0;
    }
    // There are Mifare PICCs which have 4 byte or 7 byte UID care if you use 7 byte PICC
    // I think we should assume every PICC as they have 4 byte UID
    // Until we support 7 byte PICCs
    Serial.println(F("Scanned PICC's UID:"));
    for ( uint8_t i = 0; i < 4; i++) { //
    readCard[i] = mfrc522.uid.uidByte[i];
    Serial.print(readCard[i], HEX);
    }
    Serial.println("");
    mfrc522.PICC_HaltA(); // Stop reading
    return 1;
    }

    void ShowReaderDetails() {
    // Get the MFRC522 software version
    byte v = mfrc522.PCD_ReadRegister(mfrc522.VersionReg);
    Serial.print(F("MFRC522 Software Version: 0x"));
    Serial.print(v, HEX);
    if (v == 0x91)
    Serial.print(F(" = v1.0"));
    else if (v == 0x92)
    Serial.print(F(" = v2.0"));
    else
    Serial.print(F(" (unknown),probably a chinese clone?"));
    Serial.println("");
    // When 0x00 or 0xFF is returned, communication probably failed
    if ((v == 0x00) || (v == 0xFF)) {
    Serial.println(F("WARNING: Communication failure, is the MFRC522 properly connected?"));
    Serial.println(F("SYSTEM HALTED: Check connections."));
    // Visualize system is halted
    digitalWrite(greenLed, LED_OFF); // Make sure green LED is off
    digitalWrite(blueLed, LED_OFF); // Make sure blue LED is off
    digitalWrite(redLed, LED_ON); // Turn on red LED
    while (true); // do not go further
    }
    }

    ///////////////////////////////////////// Cycle Leds (Program Mode) ///////////////////////////////////
    void cycleLeds() {
    digitalWrite(redLed, LED_OFF); // Make sure red LED is off
    digitalWrite(greenLed, LED_ON); // Make sure green LED is on
    digitalWrite(blueLed, LED_OFF); // Make sure blue LED is off
    delay(200);
    digitalWrite(redLed, LED_OFF); // Make sure red LED is off
    digitalWrite(greenLed, LED_OFF); // Make sure green LED is off
    digitalWrite(blueLed, LED_ON); // Make sure blue LED is on
    delay(200);
    digitalWrite(redLed, LED_ON); // Make sure red LED is on
    digitalWrite(greenLed, LED_OFF); // Make sure green LED is off
    digitalWrite(blueLed, LED_OFF); // Make sure blue LED is off
    delay(200);
    }

    //////////////////////////////////////// Normal Mode Led ///////////////////////////////////
    void normalModeOn () {
    digitalWrite(blueLed, LED_ON); // Blue LED ON and ready to read card
    digitalWrite(redLed, LED_OFF); // Make sure Red LED is off
    digitalWrite(greenLed, LED_OFF); // Make sure Green LED is off
    digitalWrite(relay, HIGH); // Make sure Door is Locked
    digitalWrite(sensor, HIGH);
    }

    //////////////////////////////////////// Read an ID from EEPROM //////////////////////////////
    void readID( uint8_t number ) {
    uint8_t start = (number * 4 ) + 2; // Figure out starting position
    for ( uint8_t i = 0; i < 4; i++ ) { // Loop 4 times to get the 4 Bytes
    storedCard[i] = EEPROM.read(start + i); // Assign values read from EEPROM to array
    }
    }

    ///////////////////////////////////////// Add ID to EEPROM ///////////////////////////////////
    void writeID( byte a[] ) {
    if ( !findID( a ) ) { // Before we write to the EEPROM, check to see if we have seen this card before!
    uint8_t num = EEPROM.read(0); // Get the numer of used spaces, position 0 stores the number of ID cards
    uint8_t start = ( num * 4 ) + 6; // Figure out where the next slot starts
    num++; // Increment the counter by one
    EEPROM.write( 0, num ); // Write the new count to the counter
    for ( uint8_t j = 0; j < 4; j++ ) { // Loop 4 times
    EEPROM.write( start + j, a[j] ); // Write the array values to EEPROM in the right position
    }
    successWrite();
    Serial.println(F("Succesfully added ID record to EEPROM"));
    }
    else {
    failedWrite();
    Serial.println(F("Failed! There is something wrong with ID or bad EEPROM"));
    }
    }

    ///////////////////////////////////////// Remove ID from EEPROM ///////////////////////////////////
    void deleteID( byte a[] ) {
    if ( !findID( a ) ) { // Before we delete from the EEPROM, check to see if we have this card!
    failedWrite(); // If not
    Serial.println(F("Failed! There is something wrong with ID or bad EEPROM"));
    }
    else {
    uint8_t num = EEPROM.read(0); // Get the numer of used spaces, position 0 stores the number of ID cards
    uint8_t slot; // Figure out the slot number of the card
    uint8_t start; // = ( num * 4 ) + 6; // Figure out where the next slot starts
    uint8_t looping; // The number of times the loop repeats
    uint8_t j;
    uint8_t count = EEPROM.read(0); // Read the first Byte of EEPROM that stores number of cards
    slot = findIDSLOT( a ); // Figure out the slot number of the card to delete
    start = (slot * 4) + 2;
    looping = ((num – slot) * 4);
    num–; // Decrement the counter by one
    EEPROM.write( 0, num ); // Write the new count to the counter
    for ( j = 0; j < looping; j++ ) { // Loop the card shift times
    EEPROM.write( start + j, EEPROM.read(start + 4 + j)); // Shift the array values to 4 places earlier in the EEPROM
    }
    for ( uint8_t k = 0; k < 4; k++ ) { // Shifting loop
    EEPROM.write( start + j + k, 0);
    }
    successDelete();
    Serial.println(F("Succesfully removed ID record from EEPROM"));
    }
    }

    ///////////////////////////////////////// Check Bytes ///////////////////////////////////
    bool checkTwo ( byte a[], byte b[] ) {
    for ( uint8_t k = 0; k < 4; k++ ) { // Loop 4 times
    if ( a[k] != b[k] ) { // IF a != b then false, because: one fails, all fail
    return false;
    }
    }
    return true;
    }

    ///////////////////////////////////////// Find Slot ///////////////////////////////////
    uint8_t findIDSLOT( byte find[] ) {
    uint8_t count = EEPROM.read(0); // Read the first Byte of EEPROM that
    for ( uint8_t i = 1; i <= count; i++ ) { // Loop once for each EEPROM entry
    readID(i); // Read an ID from EEPROM, it is stored in storedCard[4]
    if ( checkTwo( find, storedCard ) ) { // Check to see if the storedCard read from EEPROM
    // is the same as the find[] ID card passed
    return i; // The slot number of the card
    }
    }
    }

    ///////////////////////////////////////// Find ID From EEPROM ///////////////////////////////////
    bool findID( byte find[] ) {
    uint8_t count = EEPROM.read(0); // Read the first Byte of EEPROM that
    for ( uint8_t i = 1; i < count; i++ ) { // Loop once for each EEPROM entry
    readID(i); // Read an ID from EEPROM, it is stored in storedCard[4]
    if ( checkTwo( find, storedCard ) ) { // Check to see if the storedCard read from EEPROM
    return true;
    }
    else { // If not, return false
    }
    }
    return false;
    }

    ///////////////////////////////////////// Write Success to EEPROM ///////////////////////////////////
    // Flashes the green LED 3 times to indicate a successful write to EEPROM
    void successWrite() {
    digitalWrite(blueLed, LED_OFF); // Make sure blue LED is off
    digitalWrite(redLed, LED_OFF); // Make sure red LED is off
    digitalWrite(greenLed, LED_OFF); // Make sure green LED is on
    delay(200);
    digitalWrite(greenLed, LED_ON); // Make sure green LED is on
    delay(200);
    digitalWrite(greenLed, LED_OFF); // Make sure green LED is off
    delay(200);
    digitalWrite(greenLed, LED_ON); // Make sure green LED is on
    delay(200);
    digitalWrite(greenLed, LED_OFF); // Make sure green LED is off
    delay(200);
    digitalWrite(greenLed, LED_ON); // Make sure green LED is on
    delay(200);
    }

    ///////////////////////////////////////// Write Failed to EEPROM ///////////////////////////////////
    // Flashes the red LED 3 times to indicate a failed write to EEPROM
    void failedWrite() {
    digitalWrite(blueLed, LED_OFF); // Make sure blue LED is off
    digitalWrite(redLed, LED_OFF); // Make sure red LED is off
    digitalWrite(greenLed, LED_OFF); // Make sure green LED is off
    delay(200);
    digitalWrite(redLed, LED_ON); // Make sure red LED is on
    delay(200);
    digitalWrite(redLed, LED_OFF); // Make sure red LED is off
    delay(200);
    digitalWrite(redLed, LED_ON); // Make sure red LED is on
    delay(200);
    digitalWrite(redLed, LED_OFF); // Make sure red LED is off
    delay(200);
    digitalWrite(redLed, LED_ON); // Make sure red LED is on
    delay(200);
    }

    ///////////////////////////////////////// Success Remove UID From EEPROM ///////////////////////////////////
    // Flashes the blue LED 3 times to indicate a success delete to EEPROM
    void successDelete() {
    digitalWrite(blueLed, LED_OFF); // Make sure blue LED is off
    digitalWrite(redLed, LED_OFF); // Make sure red LED is off
    digitalWrite(greenLed, LED_OFF); // Make sure green LED is off
    delay(200);
    digitalWrite(blueLed, LED_ON); // Make sure blue LED is on
    delay(200);
    digitalWrite(blueLed, LED_OFF); // Make sure blue LED is off
    delay(200);
    digitalWrite(blueLed, LED_ON); // Make sure blue LED is on
    delay(200);
    digitalWrite(blueLed, LED_OFF); // Make sure blue LED is off
    delay(200);
    digitalWrite(blueLed, LED_ON); // Make sure blue LED is on
    delay(200);
    }

    ////////////////////// Check readCard IF is masterCard ///////////////////////////////////
    // Check to see if the ID passed is the master programing card
    bool isMaster( byte test[] ) {
    return checkTwo(test, masterCard);
    }

    bool monitorWipeButton(uint32_t interval) {
    uint32_t now = (uint32_t)millis();
    while ((uint32_t)millis() – now < interval) {
    // check on every half a second
    if (((uint32_t)millis() % 500) == 0) {
    if (digitalRead(wipeB) != LOW)
    return false;
    }
    }
    return true;
    }

    • با سلام
      کاربر گرامی لطفا توضیحات را همراه با بخشی از ارور دریافتی ارسال کنید تا بررسی شود.

  • با تشکر من برق تغذیه و اتصالات را مطمئنم لحیم کاری کردم فقط اگر برد اردینو را ریست میکنی چرا سیستم اوکی نمیشه حتما برق تغذیه باید قطع بشه چراغ مربوطه روی اردینو نشون از ریست هست ولی سیستم جواب در نزدیک کردن تگ نمی دهد در بالا برنامه استفاده شده را کپی کردم

    • سلام
      این مشکل می تواند دلایل مختلف داشته باشد. یکی از آن، مشکلی در چیپست و یا برد آردویینو و ماژول RFID است. مشکل دیگر می تواند عدم مونتاژ صحیح و وجود مسیر اتصال کوتاه در قسمت های مختلف باشد. مورد دیگر، ضعف در لحیم کاری و ایجاد قلع مردگی در مسیر لحیم کاری و…. همه می توانند از عوامل ایجاد این مشکل به حساب آیند.

  • سلام
    من این ماژول rfid رو تهیه کردم ولی دوتا پین که باید روش باشه رو نداره. میخواستم بدونم کجا میتونم جداگانه تهیه ش کنم. لوازم الکترونیکی ها دارن ازش؟
    ممنون از راهنمایی

  • سلام و درود من را پذیرا باشید
    برای آغاز به کار با برد اردینو ( بدون آشنایی قبلی) و تخصص پیدا کردن برای استفاده از آن در پروژه های صنعتی در کوتاه ترین زمان از کجا و چگونه باید شروع کنم؟
    رشته آکادمیک ( دانشجو مقطع دکترا رشته مکانیک گرایش سازه های صنعتی)

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

  • با سلام و خسته نباشید
    ببخشید یه سوالی داشتم. حدود ۵ تا ۶ بار اطلاعات کارت خونده میشه بعد ماژول دیگه هیچ کارتی رو نمیخونه اصلا هیچ واکنشی نشون نمیده تا زمانی که ریست بشه. برق هم از باتری ۹ ولت و برق یو اس بی کامپیوتر استفاده کردم ولی تفاوتی نداشت. نمیدونم مشکل از کجاس

    • با سلام
      در این خصوص نمیتوان قطعی پاسخ داد. عواملی مانند تغذیه و جریان در روند اجرای پروژه تاثیر گذار است. بررسی کنید.

  • دوستان فرکانس کاری rc522 اشتباه ذکر شده (۱۲۵ کیلوهرتز نیست)، فرکانسش ۱۳٫۵۸ مگاهرتز هست

  • سلام خوب هستید ممنون از آموزش های مفیدتون فقط یک سوال ما چند تا ماژول Reid یا بهتر بگم حداکثر چند تا کارت می تونم معرفی کنم؟؟؟؟

  • سلام زمانی که کارت و میخوام بخونه در قسمت دامپ فایل کارت سفید و‌میخونه ولی کارت های دیگر را خطای pcd_authenticate() failed error in communication چکار باید کرد؟

  • سلام پارکینگ ما از این سیستم استفاده میکنه. هر شخص یک تگ RFID داره شبیه جاسوییچی آبی رنگ هست اصولا و پلاستیکیه جنسش. از ما گم شده و میخوایم تهیه کنیم. باید چیکار کنیم؟

  • سلام کد زیر در برنامه Arduino IDE که از مثالهای خود برنامه هست پیام خطا روی خط
    MFRC522 mfrc522(SS_PIN, RST_PIN);
    رو میده علت چیه (‘MFRC522’ does not name a type
    ) ؟
    کد:
    #include
    #include

    constexpr uint8_t RST_PIN = 9; // Configurable, see typical pin layout above
    constexpr uint8_t SS_PIN = 10; // Configurable, see typical pin layout above

    MFRC522 mfrc522(SS_PIN, RST_PIN); // Create MFRC522 instance

    void setup() {
    Serial.begin(9600); // Initialize serial communications with the PC
    while (!Serial); // Do nothing if no serial port is opened (added for Arduinos based on ATMEGA32U4)
    SPI.begin(); // Init SPI bus
    mfrc522.PCD_Init(); // Init MFRC522
    mfrc522.PCD_DumpVersionToSerial(); // Show details of PCD – MFRC522 Card Reader details
    Serial.println(F(“Scan PICC to see UID, SAK, type, and data blocks…”));
    }

    void loop() {
    // Look for new cards
    if ( ! mfrc522.PICC_IsNewCardPresent()) {
    return;
    }

    // Select one of the cards
    if ( ! mfrc522.PICC_ReadCardSerial()) {
    return;
    }

    // Dump debug info about the card; PICC_HaltA() is automatically called
    mfrc522.PICC_DumpToSerial(&(mfrc522.uid));
    }

    • با سلام
      جدیدترین کتابخانه را دانلود کنید و سپس باید با کلاس های جدید کد را آپدیت کنید.

  • سلام استاد گرانقدر
    من می خواهم ماژول rc522 را مستقیم و بدون اتصال به اردوینو به کامپیوتر وصل کنم لطفا راهنمایی بفرمائید و یک نقشه ای چیزی برای اتصال پایه ها به uart یا rs232 بفرستید. باتشکر