Advertisement
  1. Computer Skills
  2. Electronics

كيف تفتح باب الجراج باستخدام RFID

Scroll to top
Read Time: 9 min

Arabic (العربية/عربي) translation by Ali Atwa (you can also view the original English article)

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

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


اساسيات القارئ RFID

RFID هي تكونولوجيا رائعه تستغل الطاقه المتولده من القارئ لقراءة بيانات الكارد. لاحقا يتم ارسال اشاره من الكارد محتويه على البيانات.

rfidvisual
قراءة البيانات على الكارد

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

اشكال رقاقة RFID وتردداتها تختلف اختلافاً كبيرا. يوجد العديد من الانواع المعقده العديد من الهواتف الذكيه تقرا صيغ NFC و MIFARE

لهذا المشروع ساستخدم قارئ من نوع EM4100 125K Wiegand هذا النوع من القارئ يستخدم بطاقات رخيصة وهوالسبب الاساسي حيث انها متوافقه مع بعضها مع ذلك نوع القارئ غير مهم لهذا المشروع


مشروع RFID 

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

لهذا الدرس ساستخدم لوحه قابله للفك لتجربة نموذج فتح الباب


مكونات المشروع

  • اردوينو (استخدم اردوينو ذو فرق جهد 5 فولت من نوع اونو)
  • قارئ بهوائي
  • بطاقه للقارئ (استخدم بطاقه من نوع EM4100 125K Wiegand رخيصه و متوفره على ايباي)
  • لوحه تجميع
  • ليد عاديه
  • مقاومه 220 اوم (احمر احمر بني)
  • ريلاي (Aleph SD1A05AWJ)
  • مكثف ()
  • اسلاك ربط

كيف يعمل؟

العمليه الى حد ما سهله

اولا يقوم القارئ بقراءة البطاقه وارسال البيانات الى الاردوينو يقوم الاردوينو بقراءة الكود من البيانات ثم يقوم بمقارنتها مع الاكواد المخذنه سابقا اذا كانت البطاقه موثقه يقوم الاردوينو بارسال نبضه 5 فولت ليعمل الريلاي عندما يعمل الريلاي يقوم بفتح باب الجراج ثم يفتح باب الجراج


التنصيب

الخطوه الاولى تنصيب القارئ

باستخدام ورقة البيانات أو التعليمات على القارئ ،صل منفذ الموجب و السالب، والبيانات، وهوائي. بالاسفل مخارج منفذ القارئ سنستخدم المنفذ 2و3 لنقل البيانات مع لوحة القارئ و استخدام المنفذين 0و1 للوحه التحكم

rfid_specsheetrfid_specsheetrfid_specsheet
تظهر ورقة البيانات منافذ المخارج

اتبع هذه الحطوات لمعرفة كيفية ربط قارئ RFID

  1. صل منفذ الجهد السالب بالجهد السالب التابع للقارئ
  2. صل منفذ الجهد الموجب بالجهد الموجب التابع للقارئ
  3. صل منفذ رقم 2 التابع للاردوينو بمنفذ TX التابع لـ RFID
  4. صل منفذ رقم 3 التابع للاردوينو بمنفذ RX التابع لـ RFID
  5. صل الهوائي بالقارئ
  6. صل القطب الموجب للمبة بمنقذ الجهد الموجب للوحه
  7. صل المنفذ السالب التابع للليد بالمنفذ السالب من خلال مقاومه

شكل اللوحه منصب عليها القارئ

rfidhookeduprfidhookeduprfidhookedup
ربط الاردوينو بقارئ RFID

الخطوة الثانية: تنصيب الريلاي

اضافه الريلاي للوحة المدخلين الداخلين يقومان بتشغيل مغناطيس كهربائي لغلق الريلاي. يظهر الرسم التوضيحي كيف يسري التيار من النقطه 3 الى النقطه 7 لتشغيل الريلاي

rfidhookedup
شكل تخطيطي للريلاي
  1. صل المنفذ 4 التابع للاردوينو للمنفذ 3 التابع للريلاي عندما يعمل الريلاي سيوفر له هذا المنغذ التيار اللازم لغلقه
  2. صل المنفذ 7 للريلاي بمنفذ الجهد السالب
  3. اضف صمام ثنائي بين كلا من المنفذين 3 و 7 ياستخدام شريط للمنفذ رقم 3 التابع للريلاي.
ملحوظه: اثناء استخدام الريلاي او اي شيء يستخدم مجال معناطيسي، دائما استخدم صمام ثنائي “flyback” لحماية الدائرة من تراجع الجهد اثناء انهيار المجال المغناطيسي.

الريلاي متصل مع اللوحه.

Breadboard with RFID and relay setupBreadboard with RFID and relay setupBreadboard with RFID and relay setup
اللوحه مثبت عليها القارئ و الريلاي

الخطوه الثالثه برمجه الاردوينو

  1. انسخ الكود من نهايه هذا الدرس الكود موضح بتعليق في كل خطوه لكي يساعدك على فهمه في اعلى الكود يمكنك رؤية الاسطر التي يمكنك تعديلها لتغير رقم الكارد لقراءة الرقم التعريفي الخاص بالكارد قم تنفيذ الكود وحرك الكارد على القارئ لكي تستطيع نسخ الرقم التعريفي ووضعه بالكود
  2. اضغط upload من خلال واجهة الاردوينو
  3. قم بفتح Serial Monitor من خلال الضغط على CTRL SHIFT M او من خلال الواجهه من خلال قائمة  Tools > Serial Monitor
ملاحظه: تاكد من سرعه نقل البيانات Serial Monitor تتوافق مع وضعناه بالوظيفه setup() في هذا المثال: 38400

يجب ان ترى شئ شبيه بهذا.

RFID GDO V0.1
Tag read: 3D00CFBB80
Checksum: C9 — passed.
3D00CFBB80

Bad tag. Go away.

انسخ والصق الرقم التعريفي الخاص بك (3D00CFBB80 في هذا المثال) في الكود. لاحظ، يمكن اضافه ارقام تعريفيه اخرى بشرط ان تكون بين اقواس ويتبعها فاصلة  الرقم التعريفي الواحد شبيه بهذا

char* goodTags[] = {
"3D00CFBB80",
};

اضغط على upload ثم قم بفتح Serial Monitor من خلال الضغط على CTRL SHIFT M او من خلال الواجهه من خلال قائمة  Tools > Serial Monitor

بعد تنفيذ الكود سترى شئ شبيه بهذا:

RFID GDO V0.1
Tag read: 3D00CFBB80
Checksum: C9 -- passed.
3D00CFBB80 

Opening Door!

بالاسفل صورة لاختبار القارئ مع الريلاي الملتيميتر موصل مع المنفذ 1و9 للريلاي ليتحقق من اغلاق الريلاي

Testing the RFID loopTesting the RFID loopTesting the RFID loop
اختبار الهوائي التابع لـ RFID

بتوصيل الاميتر يمكنك سماع صوت الصفارة مدللتا على الاستمراريه ثم يتراجع الصوت ويفتح الريلاي الدائرة

الخطوه الرابعه: فتح باب المراب

معظم ابواب المراب تعمل بمجرد الاتصال القريب. عندما تضغط الزر على الحائط تغلق الدائرة في باب المراب الخاص بي لدي لوحه تحكم حيث يوجد بها اسلاك تابعه لزر التوصيل. نرى هنا لوحه التحكم موضحه:

garagedoorterminalsgaragedoorterminalsgaragedoorterminals
لوحه التحكم باب الجراج
  1. صل المنفذ 1 و 9 من لوحه المثبت عليها الريلاي الى فاتح باب الجراج
  2. ضع الكارد بالقرب من القارئ
  3. شاهد الباب وهو يفتح

الان تاكدنا ان الباب يفتح باستخدام الكارد

الخطوه الخامسه التثبيت

  1. ثبت هوائي القارئ في الباب او الحائط بحيث يستطيع قاءة الكارد يستطيع القارئ قراءة الكارد من خلف المواد الصلبه حسب نوعها لذلك يمكن اخفاء القارئ خلف الجدار ربما تفشل بعض المحاولات لكي تجد المكان الملائم للقارئ
  2. قم بلحام الدائرة على لوحه دائمه
  3. ضع صندوق المشروع في صندوق ثم ثبته في الجراج

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

1
/*
2
  RFID Garage door opener sample code by Ben Miller @VMfoo
3
  ReadKey function inspired and borrowed in part from the arduino playground
4
  example: http://playground.arduino.cc/Code/ID12
5
6
*/
7
8
// include the SoftwareSerial library so you can use its functions:
9
#include   //leaving the hardware serial ports for debugging

10
11
#define rxPin 2    //pin to receive data from RFID reader

12
#define txPin 3    //transmit pin for softserial initialization

13
#define doorPin 4  //pin to trigger relay

14
15
// set up a new serial port
16
NewSoftSerial RFIDPort =  NewSoftSerial(rxPin, txPin);
17
byte pinState = 0;
18
19
// for incoming serial data
20
int incomingByte = 0;
21
// character array for the value of the RFID tag
22
char tagValue[10];
23
24
//What tag values are authorized
25
char* goodTags[] = {
26
  "3D00CFBB80",
27
  //"######",  //add another tag by replacing the #'s with your code and uncommenting this line

28
};
29
// Calculate the number of tags in the array above
30
int tagCount = sizeof(goodTags)/sizeof(goodTags[0]);
31
32
void setup()  {
33
  // define pin modes for the opener relay
34
  pinMode(doorPin, OUTPUT);
35
36
  // set the data rate for the SoftwareSerial port
37
  RFIDPort.begin(9600);
38
  Serial.begin(38400);  //serial monitor rate
39
  Serial.println("RFID GDO V0.1");  //hello world
40
}
41
42
void loop() {
43
  //loop and read

44
  if ( RFIDPort.available() ) {
45
      if ( readKey() ) {
46
       //check tag value
47
        if(goodTag()){  //if this is allowed
48
          openDoor();
49
        } else {
50
          Serial.println("Bad tag.  Go away.");
51
        }
52
      }
53
  }
54
}
55
56
int goodTag() {
57
  for(int i=0; i < tagCount; i++) {  //walk through the tag list
58
    if(strcmp(tagValue, goodTags[i]) == 0) {
59
      return 1;
60
    }
61
  }
62
   return 0;
63
}
64
65
void openDoor(){
66
  Serial.println("Opening Door!");
67
  digitalWrite(doorPin, HIGH);
68
  delay(500); // half a second is plenty of time to let trigger the contact
69
  digitalWrite(doorPin, LOW);
70
  //to prevent "bounce" or secondary reads if the tag is still close to the reader
71
  //we delay 3 seconds
72
  delay(3000);
73
}
74
75
int readKey(){
76
  byte i         = 0;
77
  byte val       = 0;
78
  byte checksum  = 0;
79
  byte bytesRead = 0;
80
  byte tempByte  = 0;
81
  byte tagBytes[6];    // "Unique" tags are only 5 bytes but we need an extra byte for the checksum
82
//  char tagValue[10]; this is defined globaly to simplify code
83
84
  if((val = RFIDPort.read()) == 2) {        // Check for header
85
    bytesRead = 0;
86
    while (bytesRead < 12) {            // Read 10 digit code + 2 digit checksum
87
    if (RFIDPort.available()) {
88
      val = RFIDPort.read();
89
90
      // Append the first 10 bytes (0 to 9) to the raw tag value
91
      // Check if this is a header or stop byte before the 10 digit reading is complete

92
      if (bytesRead < 10)       { tagValue[bytesRead] = val; }       if((val == 0x0D)||(val == 0x0A)||(val == 0x03)||(val == 0x02)) {  break; // Stop reading }       // Ascii/Hex conversion:       if ((val >= '0') && (val <= '9')) {  val = val - '0';  }       else if ((val >= 'A') && (val <= 'F')) { val = 10 + val - 'A'; }       // Every two hex-digits, add a byte to the code:       if (bytesRead & 1 == 1) {          // Make space for this hex-digit by shifting the previous digit 4 bits to the left          tagBytes[bytesRead >> 1] = (val | (tempByte << 4));         if (bytesRead >> 1 != 5) {     // If we're at the checksum byte,

93
           checksum ^= tagBytes[bytesRead >> 1];   // Calculate the checksum... (XOR)

94
          };

95
      } else {

96
        tempByte = val; // Store the first hex digit first

97
      };

98


99
      bytesRead++; // Ready to read next digit

100
      }

101
    }

102
    // Send the result to the host connected via USB

103
    if (bytesRead == 12) {                        // 12 digit read is complete

104
      tagValue[10] = '\0';                        // Null-terminate the string

105


106
      Serial.print("Tag read: ");

107
      for (i=0; i<5; i++) {

108
        // Add a leading 0 to pad out values below 16

109
        if (tagBytes[i] < 16) {

110
          Serial.print("0");

111
        }

112
        Serial.print(tagBytes[i], HEX);

113
      }

114
      Serial.println();

115


116
      Serial.print("Checksum: ");

117
      Serial.print(tagBytes[5], HEX);

118
      Serial.println(tagBytes[5] == checksum ? " -- passed." : " -- error.");

119
      Serial.println(tagValue);

120
      Serial.println();

121
      return 1; //return value to indicate that we read something

122
    }

123
  }

124
  bytesRead=0;

125
  return 0;

126
}

الخلاصه

 في هذا الدرس وضحت مبادئ تكنولوجيا RFID وكيفية استخدامها في مشاريعك الخاصه. توجد شرائح لقراءة بيانات RFID ربما تكون صعبه على المبتدئين، لكن توجد شرائح منفصلة تسهل عملية استخدام RFID في الاردينو او الراسباري من خلال منفذ خارجي. بمجرد قراءة الرقم التعريفي من الكارد يتم نقل البيانات في هذا المثال نحن استخدمنا الريلاي لفتح باب المرآب.

بالاضافه:

  • لقد درست الفروق المختلفه لتكنولوجيا RFID
  • شرحت مبدئ عمل RFID
  • تعلمت كيفية الربط بين الاردينو و قارئ RFID
  • قراءة و كتابة البيانات على كارد RFID 
  • اضافة ريلاي لغلق الدائرة عند قراءة الكارد الصحيح
  • ربط اسلاك الريلاي لباب المراب لتحكم به من خلال كارد RRID
Advertisement
Did you find this post useful?
Want a weekly email summary?
Subscribe below and we’ll send you a weekly email summary of all new Computer Skills tutorials. Never miss out on learning about the next big thing.
Advertisement
Looking for something to help kick start your next project?
Envato Market has a range of items for sale to help get you started.