الأحد، 12 أكتوبر، 2014

قارئ بطاقات تحديد الهوية باستخدام امواج الراديو RFID


 RFID MFRC522



تعد تقنية تحديد الهوية باستخدام امواج الراديو من التطبيقات الشائعة في الفترة الأخيرة , فتوجد بشكل واسع في انظمة الحماية Security system و في انظمة الدخول و الحفظ في قواعد البيانات Data logger .



في مقال سابق في المدونة تحدثنا عن قارئ ID12 العامل على تردد 125كيلو هيرتز , و اليوم سنتحدث عن نوع آخر و هو MFRC522 من انتاج شركة فيليبس philips




لمحة سريعه عن ال rfid :
تقسم ترددات تقنية تحديد الهوية إلى :


(Low frequency (LF و تكون ذات تردد منخفض ما بين 30-300 كيلو هيرتز و القيمة الأكثر شيوعاً هي 125كيلو هيرتز .
يستخدم بشكل واسع في انظمة الحماية 

(High Frequency(HF : و تكون قيمة الترددات ما بين 3 - 30 ميغاعيرتز , و القيمة الأكثر شيوعاً هي 13.56ميغاهيرتز , و مداها الفعّال ما بين 1 سم - 100 سم .

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

UHF : و هي ذات ترددات عالية و تكنولجيا متطورة ما بين ترددات 300 ميغاهيرتز - 3000ميغاهيرتز , و القيم الأكثر شيوعاً تقع بين 860 -960 ميغاهيرتز و ذات مدى يصل لغاية 12متر 

النوع الذي سنستخدمه اليوم من ضمن فئة HF و مداه يصل لغاية 5 سم .




يعتمد في الأساس على الدارة المتكاملة MFRC522 و يمكن الأطلاع على النشرة الفنية من هنا .

يستخدم البروتوكول SPI لنقل البيانات و تبادلها مع المتحكمات.

القطع المستخدمة في هذه التجربة :


1) بطاقة اردوينو أونو .
2)قارئ RFID MFRC522
3) كروت Tags 13.56MHz
4)اسلاك توصيل female-male
5) لوحة توصيل Breadboard
6)مقاومتان 100 اوم 
7) باعث ضوئي LED عدد 2 

التوصيل :



البرنامج :

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

سنقوم الآن بقراءة كرتين مختلفين , اذا كان الكرت الصحيح هو الموجود "المشار له بالأسم " :


byte First_card_ID[4]={0xDD,0xA1,0x82,0x07};

 سيضيء النظام باللون الأزرق , عكس ذلك سيضيء اللون الأحمر .
واذا تم فتح نافذة السيريال سنلاحظ ظهور رقم البطاقة و ما اذا تم قبولها ام لا .
/*
   RFID Card Tag
   RC522 Read card with arduino 
 * Reset      8            RST
 * SPI SS     10           SDA
 * SPI MOSI   11           MOSI
 * SPI MISO   12           MISO
 * SPI SCK    13           SCK
 Green LED     5
 Red   LED     6
Created By :Mohannad Rawasheh
http://www.genotronex.com
and visit Our store 
http://www.genotronexstore.com

*/

#include <SPI.h>
#include <MFRC522.h>
#define SS_PIN 10
#define RST_PIN 8
MFRC522 mfrc522(SS_PIN, RST_PIN); // Create MFRC522 instance.
byte card_ID[4];
byte First_card_ID[4]={0xDD,0xA1,0x82,0x07};
boolean State=false;
int RedLed=6;
int GreenLed=5;
int Buzzer=7;
void setup() {
  // put your setup code here, to run once:
  Serial.begin(9600); // Initialize serial communications with the PC
 SPI.begin();  // Init SPI bus
 mfrc522.PCD_Init(); // Init MFRC522 card
 Serial.println("Ready to read a PICC Card ");
for(int def=5;def<8;def++){
 pinMode(def,OUTPUT); 
}

}

void cmp_id(){
  for (byte i = 0; i < mfrc522.uid.size; i++) {
    if(card_ID[i]==First_card_ID[i]){
     State=true; 
  }
  else{
     State=false; 
     i=5;
  }
  }
}

void loop() {
  // put your main code here, to run repeatedly: 
   if ( ! mfrc522.PICC_IsNewCardPresent()) {
  return;
 }

 // Select one of the cards
 if ( ! mfrc522.PICC_ReadCardSerial()) {
  return;
 }
  
  Serial.print("Card UID:");
  digitalWrite(Buzzer,HIGH);
 for (byte i = 0; i < mfrc522.uid.size; i++) {
     card_ID[i]=mfrc522.uid.uidByte[i];
     Serial.print(" - ");
     Serial.print( card_ID[i],HEX);
     Serial.print(" - ");
   
}
Serial.println();
delay(500);
 digitalWrite(Buzzer,LOW);
cmp_id();
if(State==true){ Serial.println("Accepted, Valid card"); digitalWrite(GreenLed,HIGH);digitalWrite(RedLed,LOW);  }
if(State==false){Serial.println("denied! unValid card ! ");digitalWrite(RedLed,HIGH);digitalWrite(GreenLed,LOW);   }
delay(1000);
digitalWrite(GreenLed,LOW);digitalWrite(RedLed,LOW);
}


و الفيديو يوضح العملية بالكامل .



0 التعليقات :

إرسال تعليق

 
Creative Commons License
This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License.