امروزمهر ۹, ۱۴۰۲

پروژه آردوینو : مدار الکترونیکی سیستم کنترل دسترسی [Arduino]

یکویاین پروژه مدار الکترونیکی ، یک سامانه کنترل دسترسی است که به کمک آن می توانید دسترسی انسان ها را به مکان هایی که می خواهید محدود کنید . این مدار از یک آردوینو (Arduino) استفاده می کند (آردوینو چیست ؟)، یک کارت خوان RFID و یک آژیر به همراه یک شیلد رله (Relay Shield) آردوینو هم قطعاتی هستند که به آردوینو وصل می شوند. رله (Relay) برای باز کردن قفل های برقی و همچنین برای زمانی که بخواهیم از آژیر هایی با صدای بلند تر استفاده کنیم به درد می خورد.

توجه داشته باشید که این کارت خوان RFID از درگاه SPI برای تبادل اطلاعات با آردوینو استفاده می کند و آردوینو استفاده شده در این پروژه از مدل uno است ، با تغییراتی که در شرکت تولید کننده آردوینو به وجود آمده است ممکن است آردوینو های موجود در بازار به نام جینیو فروخته شوند.

RFID چیست ؟

RFID یا Radio Frequency Identification تکنولوژی شناخته شده ایست که تمامی کارت های اتوبوس ، ایستگاه های مترو ، کارت های مکانیزه سلف غذا خوری ، دزدگیر های فروشگاهی و … با استفاده از این تکنولوژی کار می کنند. این تکنولوژی یکی از تکنولوژی های ارتباط رادیویی برد کوتاه است . یعنی برد این ارتباطات اغلب از چندین سانتی متر تجاوز نمی کند. ارتباط RFID یک طرفه است ، یعنی دستگاهی وجود دارد که می تواند یک شماره را از روی یک کارت بخواند یا روی آن بنویسد. خود کارت یا تگ (بسته به نیاز شما در شکل های مختلف در بازار موجود است) هیچ انرژی مصرف نمی کند پس نیاز به باتری یا شارژ ندارد و مانند یک کارت شناسایی عمل می کند.

برای شروع و درک کار این مدار الکترونیکی یک ویدیویی هفت دقیقه ای آماده شده است که می توانید اینجا ببینید :

مدار شماتیک پروژه :

مدار سیستم کنترل دسترسی با آردوینو

مدار سیستم کنترل دسترسی با آردوینو

 

قبل از هرچیز ، کتابخانه RFID برای آردوینو را از لینک زیر دانلود کرده و آن را در پوشه Libraries در محلی که نرم افزار برنامه نویسی آردوینو را نصب کرده اید کپی کنید . حالا ماژول کارت خوان RFID مدل RC522 را به شکل زیر به آردوینو متصل کنید :

MOSI -> pin 11
MISO -> pin 12
SCK -> pin 13
SS (or SDA) -> pin 10
RST -> pin 9
3.3V -> 3.3V
GND -> GND

 

خلاصه ای از نحوه کار کد برنامه نویسی

متغیر عددی resetAlarm در کد برنامه ، پینی از آردوینو است که دکمه ریست آلارم را به آن متصل می کنیم . رله به پین 7 و آژیر به پین 8 متصل شده است

در خطوط بعدی برنامه ، شما باید کد کارت های RFID که خریداری کرده اید را با مقادیر پیشفرض عوض کنید . دستگاه این کد ها را با کد کارتی که در مقابلش قرار داده شده است مقایسه کرده و با توجه به آن تصمیم می گیرد که اجازه دسترسی فرد به اتاق را بدهد یا خیر (ویدیو را نگاه کنید)

/*
* source: http://www.electroschematics.com/
* Read a card using a mfrc522 reader on your SPI interface
* Pin layout should be as follows (on Arduino Uno):
* MOSI: Pin 11 / ICSP-4
* MISO: Pin 12 / ICSP-1
* SCK: Pin 13 / ISCP-3
* SS: Pin 10
* RST: Pin 9
*/
 
#include <SPI.h>
#include <RFID.h>
 
#define SS_PIN 10
#define RST_PIN 9
 
RFID rfid(SS_PIN,RST_PIN);
 
int startAlarm = false;
int resetAlarm = 2;
int relay = 7;
int alarm = 8;
 
int serNum[5];
 
int cards[][5] = {
  {209,128,106,69,126}, // card 1
  {101,220,213,229,137} // card 2
};
 
bool access = false;
 
void setup(){
 
    Serial.begin(9600);
    SPI.begin();
    rfid.init();
    pinMode(resetAlarm, INPUT);
    pinMode(relay, OUTPUT);
    pinMode(alarm, OUTPUT);
    digitalWrite(relay, HIGH); // or LOW if you have a regular relay
    attachInterrupt(0, reset_alarm, LOW);
}
 
void loop(){
    
    if(rfid.isCard()){
    
        if(rfid.readCardSerial()){
            Serial.print(rfid.serNum[0]);
            Serial.print(",");
            Serial.print(rfid.serNum[1]);
            Serial.print(",");
            Serial.print(rfid.serNum[2]);
            Serial.print(",");
            Serial.print(rfid.serNum[3]);
            Serial.print(",");
            Serial.print(rfid.serNum[4]);
            Serial.println("");
            
            for(int x = 0; x < sizeof(cards); x++){
              for(int i = 0; i < sizeof(rfid.serNum); i++ ){
                  if(rfid.serNum[i] != cards[x][i]) {
                      access = false;
                      break;
                  } else {
                      access = true;
                  }
              }
              if(access) break;
            }
           
        }
        
       if(access){
          Serial.println("Welcome!"); 
          startAlarm = false;
          digitalWrite(relay, LOW); // HIGH with regular relay     
       } else {
           Serial.println("Not allowed!"); 
           startAlarm = true; 
            digitalWrite(relay, HIGH);  // LOW with regular relay        
       }        
    }
    
    if(startAlarm) {
       digitalWrite(alarm, HIGH); 
    } else {
      digitalWrite(alarm, LOW); 
    }
    
    rfid.halt();
 
}
 
void reset_alarm(){
    startAlarm = false;
}

 

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

متغیر بولی access به شکل پیشفرض روی FALSE قرار گرفته است ، این متغیر دو مقدار درست یا غلط را در صورت خواندن کارت یا تگ RFID جدید در خود نگه می دارد.

در خط شماره 63 ، شما قسمتی از کد را خواهید دید که درون یک حلقه for قرار گرفته است . این قسمت از برنامه است که معین می کند شماره سریال کارتی که جلوی دستگاه قرار گرفته است در لیست وارد شده توسط شما وجود دارد یا خیر . یا به عبارت ساده تر آیا این فرد اجازه دسترسی به اتاق را دارد یا خیر. اگر شماره در لیست وجود داشت ، مقدار متغیر access به true  تغییر پیدا می کند.

در خط شماره 76 برنامه ، اگر متغیر access مقدار true را داشته باشد ، عبارت Welcome روی نمایشگر به نمایش در می آید و متغیر startAlarm را به false تغییر می دهد که آلارم اشتباها به صدا در نیاید. سپس رله فعال می شود تا قفل برقی در باز شود.

اگر کارتی که در جلوی دستگاه نگه داشته شده است در لیست موجود نباشد ، setAlarm به true تغییر مقدار می دهد و  رله را آزاد می کند تا در بسته بماند.

در خط شماره 87 برنامه ، آردوینو چک می کند تا ببیند که متغیر startAlarm مقدار true دارد یا خیر . اگر جواب بله بود ، آژیر را فعال می شود و اگر خیر بود اتفاقی نمی افتد.

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

این پروژه آردوینو بسیار ساده است و می تواند شروع خوبی باشد برای ساختن پروژه های به مراتب پیچیده تر و کاربردی تر نظیر سیستم حضور و غیاب که در آن ها از تکنولوژی RFID استفاده می شود.

با ما همراه باشید تا از پروژه های جدیدی که همه روزه روی ساختنی قرار می گیرد استفاده کنید!

فایل های مورد استفاده در این پروژه:

پسورد : www.saakhtani.ir

منبع

یک نظر

  1. Mh

    پستاتون عالى فقط تو پستاى ديگه نمى دونم شما نويسندش بوندين يا نه ولى پسورد رو جايى ننوشته و فايله هم پسورد مى خواد لطفاً پسورد اون ها هم تو جواب بگيد اقلبشونم اين جورى نمى تونم بگم كدوم

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