top of page

RFID Based Automatic Door System

(TEAM) فريق العمل

محمد نور المسلماني

عبد الرحمن القنوي 

مشرف المشروع

م/أيمن ابراهيم كيفي 

                                     (Overview)نظره عامة عن المشروع 

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

 

 

(Componets needed)العناصر المطلوبة 

 

1-Arduino uno (one piece )

2-RFID RC522 (one piece )

3-Servo (generic) (one piece )

4-RGB LED (one piece) 

5-Resistor 221 ohm (two piece)

6-Jumper wires (generic)  

7-Lcd 16*2 (one piece )

 لمزيد من المعلومات عن الأردينو
 الرجاء الضغط على  هذا الرابط

 

لمزيد من المعلومات عن العناصر الأُخرى الرجاء الضغط على صورة العنصر أو إسم العنصر 

LCD

:طريقة التوصيل 

       توصيل شاشة في الاردينو 

*VEE pin to GND 

*VCC pin to 5V
*VEE pin to GND 

*RS pin to Analog pin A0 
*R/W pin to ground
*Enable pin to Analog pin A1
*D4 pin to Analog pin 5
*D5 pin to Analog pin 4
*D6 pin to Analog pin 3
*D7 pin to Analog pin 2
*LED+ pin to POWER
*LED- pin to GND 

: (RFID) توصيل 

 *RFID RC522       Arduino Uno //
 *  SS/SDA             D10
 *  SCK                   D13
 *  MOSI                D11
 *  MISO                D12
 *  IRQ                   Not Connected
 *  GND                 GND
 *  RST                   D9
 *  3.3V                  3.3V

(Simulation)المحاكاة 

CODE
For Dowonload

/* 
 *  RFID Module RC522
 *  Simple Project:- Arduino will read RFID Tag and Display To the Serial Monitor!
 *  
 *  RFID RC522 and Arduino Uno Pin Configuration
 *  طريقة التوصيل في أطراف اردينو  Rfid 
 *  RFID RC522          Arduino Uno //
 *  SS/SDA              D10
 *  SCK                 D13
 *  MOSI                D11
 *  MISO                D12
 *  IRQ                 Not Connected
 *  GND                 GND
 *  RST                 D9
 *  3.3V                3.3V
 *  
 *  //Note: We connected LCD to the Analog Pins.
 *  Remember, Analog Pins can be act as a Digital Pins,
 *  But Digital Pins CAN NOT be act as a Analog Pins.
 *  
 *  LCD(16x2) Connections// توصيل شاشة في الاردينو 
 *  
 *  VSS pin to GND //في الارضيvssطرف
 *  VCC pin to 5V//  في خمسه فولت  vccطرف
 *  //We are connecting "Contrast pin to GND for Maximum Brightness"
 *  //You can also connect it to 10K Pot if you wish to change the Brightness Of LCD.
 *  
VEE pin to GND // الى الارضي vee
 *  RS pin to Analog pin A0
 *  R/W pin to ground
 *  Enable pin to Analog pin A1//كيفيه توصيل كل طرف من شاشة بالاردينو 
 *  D4 pin to Analog pin 5
 *  D5 pin to Analog pin 4
 *  D6 pin to Analog pin 3
 *  D7 pin to Analog pin 2
 *  LED+ pin to POWER
 *  LED- pin to GND 
 *   
 *  Servo is Connected to Digital Pin 5  
 *  
 *  RGB LED// توصيل ليد في الاردينو 
 *  From RGB LED, We need Only Red and Green Color, 
 *  So we are not connecting Blue pin of the RGB. 
 *  
 *  Red pin to Digital pin 6//توصيل طرف الذي يظهرضوء أحمر بالطرف السادس في الاردينو
 *  Green pin to Digital pin 7// توصيل الطرف الذي يظهر ضوء أخضر بالطرف السادس في الاردينو
 *  
 *  Buzzer to Digital pin 8// الجرس في طرف الثامن 
 * 
 *  
 *  Note:- RFID uses SPI Protocol to transfer the information//  

 *  I took the Melody(for the Buzzer) from, 
 *  File -> Examples -> Digital -> ToneMelody
*/
//Include sections // ملفات وأقسام تتضمن عددة مكتبات وهي
#include <RFID.h>
#include <SPI.h>
#include <LiquidCrystal.h>
#include <Servo.h>
#include "pitches.h"

//Define Component to Arduino Pins// تحديد مكونات توصيل في الاردينو 
#define SS_PIN 10
#define RST_PIN 9

#define SERVO_PIN 5// servo to pin 5 (سيرفو في بن 5)

#define Red_LED // for red led (الطرف الأحمر)
#define Green_LED 7// green led to 7(الطرف الأخضر الى 7)

#define Buzzer 8 //for buzzer to 8 (الجرس الى الطرف 8)

 

//initialize the library with the numbers of the interface pins
LiquidCrystal lcd(A0, A1, A2, A3, A4, A5);//  this for lcd هذه أطرف للشاشة )
Servo DoorLock;
RFID rfid(SS_PIN, RST_PIN );//  this for rifd 

//Unique ID of RFID Tag, which you want to give access. 
int My_RFID_Tag[5] = {0x6a,0x10,0x41,0x3b,0x00};// here we should put seriel number for our cad (هنا يجب علينا تعريف البطاقة المراد أستخدامها )

//variable to hold your Access_card
boolean My_Card = false;  
  تعريف الجرس 
// notes in the melody, taken from:
//File -> Examples -> Digital -> ToneMelody
int melody[] = {
  NOTE_C4, NOTE_G3, NOTE_G3, NOTE_A3, NOTE_G3, 0, NOTE_B3, NOTE_C4
};

// note durations: 4 = quarter note, 8 = eighth note, etc.:
int noteDurations[] = {
  4, 8, 8, 4, 4, 4, 4, 4
};

void setup() // start to write code 
{
  مخارج المشروع

// put your setup code here, to run once:
  //set the pins as an input/output
  pinMode(Red_LED,OUTPUT);// red led is out put (ليد الأحمر هو مخرج في المشروع)
  pinMode(Green_LED,OUTPUT);// green led is out put also (ايضا في ليد الأخضر هو المخرج )
  pinMode(Buzzer,OUTPUT);// the buzzer work at out put الجرس هو مخرج 
  
  //Servo Connnected to pin Digital Pin 5// سيرفو موصل في بن 5 
  DoorLock.attach(SERVO_PIN);
  //open the serial port at 9600 baudrate.
  Serial.begin(9600); // here did dele 9600 
  //Initialise the LCD to 16x2 Character Format  
  lcd.begin(16,2);//  this for model for lcd 16*2(شاشة مستخدمة هنا هي 16*2)
  //Initialise Servo and RFID
  SPI.begin();
  rfid.init();
}

void loop() 
{
  // put your main code here, to run repeatedly:
  
  //First Assume detected card(Or tag) is My_Card

  //Then later we will check is it My_Card or not! , هنا نقوم بوضع تاكد اذا كانت معرفة او لا
  My_Card = true;اذا كنت بطاقة معرفة  
  DoorLock.write(0); //Servo at 0 Position, Door is Closed. 
  lcd.clear();
  lcd.print("CTE COLLEGE");// here write on led on top cte collage  
  lcd.setCursor(0,1);// here for set cursor for zero or one 
  lcd.print("GATE");// here write on down gate 
  
  //Check if any RFID Tags Detected or not? 
  if( rfid.isCard() )
  {
      //if RFID Tag is detected, check for the Unique ID,id  اذا كانت بطاقة معرفة نقوم بتأكد من 
      //and print it on the Serial Window// وطباعتها على الشاشة
      if( rfid.readCardSerial() )
      {   
          lcd.clear();      
          lcd.print("UNIQUE ID is:- ");
          delay(500);  تأخر 500         
          lcd.setCursor(0,1); //Set LCD Cursor to Second Row, First Character
  
      //Unique id is 5 Digit Number. تظهر هنا البطاقة المراد تعريفها فقط من خمسة أرقام 
          //Printing in HEX for better Understanding ونقوم بكتابتها في نظام سداسي عشر للفهم بشكل أفضل 
          for( int i = 0; i < 5; i++ ) // this condition to work on digite number (هنا كي تظهر على الشاشة خمسة أرقام فقط بنظام سداسي عشر
          {
              Serial.print(rfid.serNum[i], HEX);// serial number write on hex onlay (الارقام تظهر في نظام سداسي عشر)
              Serial.print(" "); // when we wite serial number we should put "" between number              
              lcd.print(rfid.serNum[i],HEX);(will show on lcd in hex number)
              lcd.print(" ");                            
          }  
          delay(500);تاخر زمني 
    كيفيه ظهورأكواد على شاشة 
      //Compare this RFID Tag Unique ID with your My_RFID_Tag's Unique ID
          for(int i = 0; i < 5; i++)
          {   
              //if any one Unique ID Digit is not matching,
              //then make My_Card = false and come out from loop
            في حال اذا كانت غير معرفة  //No need to check all the digit!
              if( My_RFID_Tag[i] != rfid.serNum[i] )
              {
                My_Card = false;
                break;                
              }           
          }
          Serial.println(); 
          delay(1000); 

          //If RFID Tag is My_Card then give access to enter into room
          //else dont open the door.
          if(My_Card)
          {
            Serial.println("\CARD IS TRUE");// if card is true will lcd prid welcom and go and will have delay 2000 and green led will be hightalso buzzer and gate will open (will see it in next step)
            الخطوات التي تحصل على الشاشة اذا كانت البطاقة معرفة
            lcd.clear();
            lcd.print("Welcome to Your");
            lcd.setCursor(0,1);
            lcd.print("GO");
            delay(2000);                        
            
            //Turn on the Green LED as an indication of permission is given 
            //to access the room.
            digitalWrite(Green_LED,HIGH);
            
            //Buzzer Config, taken from:
            //File -> Examples -> Digital -> ToneMelody كيفية عمل الجرس
            // iterate over the notes of the melody:
            int i = 0;
            while(i < 2)
            {
              for (int thisNote = 0; thisNote < 12; thisNote++) // this step have exmple how servo work and what it is net for deley
              {          
                // to calculate the note duration, take one second
                // divided by the note type.
                //e.g. quarter note = 1000 / 4, eighth note = 1000/8, etc.
                int noteDuration = 1000 / noteDurations[thisNote];
                tone(8, melody[thisNote], noteDuration);                        
                // to distinguish the notes, set a minimum time between them.
                // the note's duration + 30% seems to work well:
                int pauseBetweenNotes = noteDuration * 1.30;
                delay(pauseBetweenNotes);              
                // stop the tone playing:
                noTone(8);
              }
              i =  i + 1;
              delay(500);              
            }
            delay(1000);            

            //Now, Open the Door with the help of Servo Motor // this when we have true card the gate is open  هنا شرح للخطوات التي تحصل إذا كانت البطاقة معرفة
            DoorLock.write(180);            
            delay(200);
            lcd.clear();                                    
            lcd.print("GATE is Open");// when the gate is open the lcd write (the gate is open)
            lcd.setCursor(0,1);
            lcd.print("Now!");// also its write now 
            delay(2000);// delay 2000
            lcd.clear(); // after that the lcd will be clear 

            //Give 10 Sec delay to enter into room
            //After that door will again closed!
            for(int i = 10; i > 0; i--)/here counnt to down from 10 to zero to close
            {
              lcd.print("GATE  will close"); // when close the lcd write gate is close إغلاق البوابة


              lcd.setCursor(0,1);
              lcd.print("in ");
              lcd.print(i);
              lcd.print(" Sec.HurryUp!");
              delay(1000);
              lcd.clear();
            }

            //Now,Door is closed and Green LED is Turned-Off.//where explian what did after open 
            DoorLock.write(0);// dore will close 
            digitalWrite(Green_LED,LOW);the green led will be off 
            delay(200);
            lcd.clear();
            lcd.print("GATE is Close");
            lcd.setCursor(0,1);
            lcd.print("Now!");
            delay(2000);                            
          }
          
          // If RFID Tag is not My_Card then
          // Do not open the Door and 
          //Turn-On Red LED and Buzzer as an indication of Warning:
          //Somebody else is trying to enter into your room. 
          else
          {

هنا خطوات اذا كانت البطاقة غير معرفة 
            Serial.println("PLESE Get Out of Here !");// 
            lcd.clear();
            lcd.print("Card isNOT FOUND!");
            lcd.setCursor(0,1);
            lcd.print("PLESE Get OutHere!");

            for(int i = 0; i < 7; i++)
            {
              digitalWrite(Buzzer, HIGH);// for buzzer will be hight 
              digitalWrite(Red_LED,HIGH);for red led will be hight aslo 
              delay(500);// delay 500 
              digitalWrite(Buzzer, LOW); // for buzzer will be off 
              digitalWrite(Red_LED,LOW);// for red led will be low 
              delay(500);              
            }
            delay(1000);  //for delay 1000           
          }                 
      }      
   }
  //Put RFID Reader into Halt, untill it not detects any RFID Tag.
  rfid.halt();here for code stop 

 

إذا اردنا تعريف اكثر من بطاقة 

في حاله تعريف بطاقه ثانيه يجب علينا ادخال   علاقه نفي حسب عدد البطاقات المعرفة

(layout)

1

2

 

 نقوم برسم داره وتصويرها

 

FRITZINGنقوم بعملية الرسم عن طريق برنامج

و يجب علينا مراعاة قطبية العناصر

 

 

                                                                    

 عند عملية التصوير يحب علينا ضبط ألة

.التصوير على 2 دقيقة  

                                           

 مرحلة الإظهار وتحميض البورد

عندما نقوم بعملية الإظهار يجب علينا وضع كمية مناسبة  من المُظهر بحيث لاتؤثر على الرسمة الموجودة على البورد 

3

 الحمض المستخدم في إزالة النحاس عن البورد هو حمض كلور الحديدي و هو يستهلك بين 15-30 دقيقة و هذا يعتمد على شروط العمل
 

4

5

مرحلة التخريم 

عند التخريم يجب علينا الإنتباه على عدم إزالة النقاط المراد تخريمها

تركيب العناصر 

6

7

(Soldering)تلحيم العناصر

 :القواعد البسيطة لتجعل كل نقطة لحام جيدة

توخى الحذر عند التعامل مع المكواة الساخنة 

 قم بتغطية رأس المكواة بالقصدير قبل بدء اللحام للتسهيل 

استخدم جانب الرأس, وليس مقدمة الرأس

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

                                                                      شرح التغذية

الدائرة في الشكل التالي تحتاج الى 5V فقط  ولذلك لقد قمنا بوضع منظم 7805 يقوم بتحويل

 الدخل من 9V إلى 5V و لكي تتم العملية يجب علينا توصيل دخل و خرج المنظم على مكثفين 

التحديات 

عند محاكاه المشروع لم نكن قادرين على تعريف البطاقة اواستخدام اي بطاقة كما في الفيديو فقمنا بتعريف وإدخال سيريال البطاقة كما في الشكل التالي

في الشكل التالي لقد قمنا بتزويد كمية الإظهار فما كان علينا إلا إعادة عملية الرسم والإظهار 

صور عن المشروع 

فيديو عن المشروع 

كيفية تطوير المشروع 

يمكننا إضافة عنصر في المشروع لكتابة التاريخ والوقت 

أيضاً يمكن وضع ألة تصوير بحيث تلتقط صور للوحة السيارة عندما تكون البطاقة غير معرفة وإرسالها عن طريق البلوتوث أو الواي فاي إلى المشرف الأمني 

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

  1. Ardiuno uno :150 SR​

  2. RFID :            80 SR

  3. Servo motor: 40 SR

  4. Buzzer:          15 SR

  5. LED RGB:      4 SR

  6. LCD 16*2:      50 SR TOTAL:          350 SR

يمكن الإستفادة من الرابط التالي لشراء العناصر 

 

bottom of page