قفل ذكي باستخدام قارئ البطاقات MFRC522 RFID مع الاردوينو اكتب تعليقُا

تم نشر هذا المشروع لجميع الأشخاص المهتمين في مجال تصنيع وابتكار المشاريع الإلكترونية والبرمجية، و نود التنويه أن موقع انا الكتروني يخلي مسؤوليته التامة في حال لم يعمل المشروع لدى العميل أو في حال الاستخدام الخاطئ للمكونات الإلكترونية والكهربائية التي قد تؤدي لحدوث الحرائق أو غيرها لا سمح الله.

مواجهة قارئ البطاقات MFRC522 RFID مع الاردوينو

يوضح المشروع هذا مثالًا بسيطًا حول كيفية استخدام قارئ MFRC522 RFID في بناء قفل ذكي . أذا كانت هذه المرة الاولة لك ولا تعرف ما هو قارئ MFRC522 RFID ؟ نوصي بشدة مطالعة المقال التالي : ما هو قارئ MFRC522 RFID وكيفية مواجهته مع الاردوينو

618xHKRFg+L._AC_SL1000_

فكرة المشروع

ماهي RFID :

RFID هي التعرف علي الهوية باستخدام موجات الراديو  وهي تستخدم على نطاق واسع في العديد من الصناعات لمهام مثل تعقب الأفراد والتحكم في الوصول وإدارة سلسلة التوريد وتتبع الكتب في المكتبات وأنظمة الرسوم وما إلى ذلك .

فكرة المشروع :

يتم استخدام بطاقات تعريف الهوية من أجل فتح أو أغلاق القفل , حيث يتم أستخدام 2 ليد واحد للدلالة علي حالة اسجابة القفل للبطاقة المسموح لها والاخر لعدم مطابقة البطاقة وتشغيل الانذار في الحال .

متطلبات المشروع :

  • Arduino UNO board   —-> Atmega328P datasheet
  • MFRC522 RFID reader
  • Red and Green LEDs
  • Breadboard
  • Jumper wires

مخطط توصيل مكونات المشروع

لتوصيل المشروع يجب ربط الادوات وفق المخطط أدناه

schematic
تنبيه : في حال لم تكن متأكد من قدرتك على تنفيذ خطوات المشروع يرجى استشارة شخص متخصص في هذا المجال.

الكود البرمجي

في تجربتنا سوف يضئ الليد الاخضر في حالة اسجابة القفل للبطاقة المسموح لها والاخر لعدم مطابقة البطاقة  . سيكون من المفيد فهم كيفية استخدام الوحدات ويمكن أن تكون بمثابة أساس لتجارب ومشاريع أكثر عملية .

فيما يلي الكود الذي سنستخدمه في المشروع :

لتحميل الكود البرمجي اضغط هنا
#include "SPI.h"
#include "MFRC522.h"

#define SS_PIN 10
#define RST_PIN 9
#define LED_PIN1 6
#define LED_PIN2 7

MFRC522 rfid(SS_PIN, RST_PIN);

MFRC522::MIFARE_Key key;

void setup() {
  // put your setup code here, to run once:
  Serial.begin(9600);
  SPI.begin();
  rfid.PCD_Init();
  pinMode(LED_PIN1, OUTPUT);
  pinMode(LED_PIN2, OUTPUT);
  Serial.println("I am waiting for card...");
}

void loop() {
  // put your main code here, to run repeatedly:
  if (!rfid.PICC_IsNewCardPresent() || !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;
  }
  String strID = "";
  for (byte i = 0; i < 4; i++) {
    strID +=
      (rfid.uid.uidByte[i] < 0x10 ? "0" : "") +
      String(rfid.uid.uidByte[i], HEX) +
      (i != 3 ? ":" : "");
  }

  strID.toUpperCase();
  Serial.print("Tap card key: ");
  Serial.println(strID);
  delay(1000);

  if (strID.indexOf("20:CC:6F:85") >= 0) {  //put your own tap card key;
    Serial.println("********************");
    Serial.println("**Authorised acces**");
    Serial.println("********************");
    digitalWrite(LED_PIN1, HIGH);
    delay (5000);
    digitalWrite(LED_PIN1, LOW);
    return;
  }
  else {
    Serial.println("****************");
    Serial.println("**Acces denied**");
    Serial.println("****************");
    digitalWrite(LED_PIN2, HIGH);
    delay (5000);
    digitalWrite(LED_PIN2, LOW);
    return;
  }
  
}

لقد وصلت الي وجهتك ,,,,, أنتهت ,,,,,

اترك تعليقاً

لن يتم نشر عنوان بريدك الإلكتروني. الحقول الإلزامية مشار إليها بـ *