پروژه الکترونیکپروژه های آردوینو

آموزش طراحی دستگاه حضور و غیاب با سنسور اثر انگشت در آردوینو

سلام. آموزش طراحی دستگاه حضور و غیاب با اثر انگشت در آردوینو را آماده کردیم.

راه اندازی پروژه حضور و غیاب کارمندان

از سیستم های حضور عیاب معمولا در مکان هایی مانند دفاتر و مدارس و … برای ثبت زمان ورود و خروج کارمندان استفاده میشود. ثبت دستی اطلاعات ، کارت RFID ، حسگر اثر انگشت ، حسگر قرنیه چشم و … همه راه هایی برای ثبت حضور در دستگاه ها هستند. ما در این پروژه آردوینو با استفاده از ماژول سنسور اثرانگشت یک سیستم حضور و غیاب حرفه ای میسازیم. این سیستم برای کاربران بسیار حرفه ای خواهد بود. فیلم عملکرد پروژه در انتهای صفحه قرار داده شده است.

توضیحات پروژه ثبت حضور کارمندان با اثر انگشت

در این مدار سیستم حضور و غیاب اثر انگشت، ما از ماژول حسگر اثر انگشت برای احراز هویت یک شخص کارمند با گرفتن اثر انگشت آنها استفاده میکنیم. در اینجا ما از 4 دکمه برای ثبت ، حذف ، پایین / بالا استفاده می کنیم. کلید ENROLL و DEL دارای ویژگی های سه گانه است.

از کلید ENROLL برای ثبت نام شخص جدید در سیستم استفاده می شود. بنابراین هنگامی که کاربر می خواهد انگشت جدید را ثبت کند ، باید کلید ENROLL را فشار دهد ، سپس LCD از کاربر شناسه درخواست می کند. حال اگر در این زمان کاربر مایل به ادامه کار نباشد، می تواند دوباره کلید ENROL را فشار داده تا به عقب برگردد.

این بار کلید ENROLL به عنوان کلید Back رفتار می کند، یعنی کلید ENROLL هم ثبت نام میکند و هم عملکرد رو به عقب دارد. علاوه بر این از این کلید برای بارگیری داده های حضور و غیاب از طریق مانیتور سریال نیز استفاده می شود.

نحوه کار پروژه ثبت حضور کارمندان با اثر انگشت

به طور مشابه ، کلید DEL/OK همچنین دارای همان عملکرد دوگانه است. مانند زمانی که کاربر انگشت جدید را ثبت می کند، باید او را با استفاده از دو کلید دیگر یعنی UP و DOWN انتخاب کند. اکنون کاربر باید کلید DEL / OK را فشار دهد (این بار این کلید مانند OK رفتار می کند) تا با شناسه انتخاب شده پیش برود. و کلید Del برای تنظیم مجدد یا حذف داده ها از EEPROM Arduino استفاده می شود.

نحوه کار سیستم حضور و غیاب مبتنی بر اثر انگشت

کار این پروژه سیستم حضور و غیاب اثر انگشتی بسیار ساده است. اول از همه ، کاربر باید به کمک دکمه ها، اثر انگشت کاربر را ثبت کند. برای انجام این کار ، کاربر باید کلید ENROLL را فشار داده و سپس LCD از کاربر درخواست میکند تا شناسه ای برای اثر انگشت وارد کند تا در حافظه با نام ID ذخیره شود.

نحوه کار سیستم حضور و غیاب مبتنی بر اثر انگشت

اکنون کاربر باید با استفاده از کلیدهای UP / DOWN شناسه را وارد کند. پس از انتخاب شناسه ، کاربر باید کلید OK (کلید DEL) را فشار دهد. اکنون ال سی دی از شما می خواهد که انگشت را روی ماژول اثر انگشت قرار دهید. حال کاربر باید انگشت خود را روی ماژول اثرانگشت قرار دهد و باز دوباره میخواهد که انگشت را قرار دهد و سپس ماژول تصویر انگشت را ذخیره میکند.

اگر میخواهید آردوینو را به صورت اصولی و پروژه محور (ساخت ربات، ارتباط با اندروید، اینترنت اشیا، برنامه نویسی حرفه ای) یاد بگیرید، حتما دوره آموزش آردوینو را مشاهده کنید.

حال اگر کاربر بخواهد شناسه یا اثر انگشت ذخیره شده را حذف کنیم، باید کلید DEL را فشار دهیم. پس از فشردن کلید حذف ، ال سی دی از شما میخواهد شناسه مورد نظر را برای حذف انتخاب کنید. اکنون کاربر باید ID را انتخاب کرده و کلید OK (همان کلید DEL) را فشار دهد. اکنون LCD به شما اطلاع می دهد که اثر انگشت با موفقیت حذف شده است.

نحوه ثبت حضور در این پروژه حضور و غیاب

هرگاه کاربر انگشت خود را روی ماژول اثر انگشت قرار دهد ، ماژول اثر انگشت تصویر انگشت را ضبط می کند و جستجو می کند که آیا شناسه ای با این اثر انگشت در سیستم ثبت شده است یا خیر. اگر شناسه اثر انگشت شناسایی شود، ال سی دی نمایشگر شناسه را نشان مدهد و بازر نیز بوق میزند.

در کنار ماژول اثر انگشت ، ما از ماژول RTC برای زمان و تاریخ استفاده کرده ایم. اطلاعات زمان و تاریخ به طور مداوم در سیستم در حال اجرا است. بنابراین آردوینو هر زمان که کاربر انگشت خود را روی سنسور اثر انگشت قرار دهد، زمان و تاریخ را در EEPROM ذخیره میکند.

 

شماتیک مدار

در تصویر زیر شماتیک مدار این پروژه را مشاهده میکنید.

همچنین اگر در مورد این مطلب سوالی داشتید در انتهای صفحه در قسمت نظرات بپرسید

توضیحات پروژه ثبت حضور کارمندان با اثر انگشت

مدار این پروژه سیستم حضور و غیاب مبتنی بر اثر انگشت ، همانطور که در شماتیک فوق نشان داده شده است بسیار ساده است. برد آردوینو همه کار ها از جمله کنترل فشرده شدن دکمه ها ، کنترل بازر و ال ای دی ، دریافت اطلاعات ماژول RTC و ارسال اطلاعات به ال سی دی را انجام میدهد.

همانطور که در شماتیک مدار پروژه نشان داده شده است، دکمه ها به پین های A0 تا A3 متصل میشوند و LED زرد در پین دیجیتال D7 وصل می شود.  یک LCD 16×2 در حالت 4 بیتی تنظیم شده است و RS ، EN ، D4 ، D5 ، D6 و D7 مستقیماً در پین های دیجیتال D13 ، D12 ، D11 ، D10 ، D9 و D8 Arduino به یکدیگر متصل می شوند.

قطعات مورد نیاز

  1. برد آردوینو Uno
  2. ماژول سنسور اثر انگشت
  3. دکمه – چهار عدد
  4. LED
  5. مقاومت 1 کیلو اهم – دو عدد
  6. مقاومت 2.2 کیلو اهم
  7. بازر
  8. ال سی دی کاراکتری 16*2
  9. ماژول RTC

آشنایی با ماژول سنسور اثر انگشت R305

آشنایی با سنسور اثر انگشت R305

ماژول ثبت اثر انگشت R305 یک سنسور نوری است که با استفاده از پردازش نوری اطلاعات را ثبت میکند. یکی ازویژگی های مهم این ماژول قابلیت تنظیم سطح امنیت توسط کاربر میباشد. شما میتوانید درجه امنیتی را بین 1 تا 5 تغییر دهید که این مقدار به طور پیشفرض 3 میباشد. این ماژول ها دارای سرعت بالایی میباشند.

همچنین طول عمر این حسگر اثر انگشت 100 میلیون بار تشخیص اثر انگشت است. در این پروژه ما میتوانیم بیش از 200 اثر انگشت ذخیره کنیم فقط توجه داشته باشید که هر اثر انگشت یک آیدی منحصر به فرد داشته باشد.

در اینجا ما یک LED زرد اضافه کرده ایم که نشان می دهد ماژول اثر انگشت آماده عکس گرفتن از انگشت است. همچنین از بازربرای نشانه های مختلف استفاده می شود. آردوینو مؤلفه اصلی این سیستم است که مسئولیت کنترل کل سیستم را بر عهده دارد.

مدیریت حافظه EEPROM در برد Arduino

ما در آردوینو Uno ، به اندازه 1023 بایت حافظه داریم. از این 1023 بایت ، 1018 بایت را برای دخیره ها اختصاص میدهیم. به طور مثال ما 4 کارمند داریم که 30 روز در ماه اثر انگشت خود را ثبت میکنند. هر بار ثبت اثر انگشت 7 بایت حافظه را مصرف میکند. پس حافطه مصرفی در یک ماه میشود :

4*30*7 = 840

ما در پروژه تعداد کارمندان را 5 انتخاب کرده ایم شما میتوانید هر مقداری را انتخاب کنید یا در همین حالت استفاده کنید.

توضیحات کد پروژه آردوینو

پروژه آماده است و این بخش فقط برای درک عمیق شما از کد های پروژه آورده شده است.

کد سیستم حضور و غیاب اثر انگشت برای آردوینو در این قسمت توضیح داده میشود. به طور کلی ما در اینجا قسمت های مهم کد را بررسی میکنیم. کد کامل پروژه در فایل دانلودی قرار داده شده است.

اول از همه ، ما فایل هدر را وارد می کنیم و پین ورودی و خروجی را تعریف می کنیم و متغیرها را تعریف می کنیم.

void setup()
{
    delay(1000);
    lcd.begin(16,2);
    Serial.begin(9600);
    pinMode(enroll, INPUT_PULLUP);
    pinMode(up, INPUT_PULLUP);
    pinMode(down, INPUT_PULLUP);
    pinMode(del, INPUT_PULLUP);
    pinMode(match, INPUT_PULLUP);
    pinMode(buzzer, OUTPUT);
    pinMode(indFinger, OUTPUT);
    digitalWrite(buzzer, LOW);
    if(digitalRead(enroll) == 0)
    {
      digitalWrite(buzzer, HIGH);
      delay(500);
      digitalWrite(buzzer, LOW);
      lcd.clear();
      lcd.print("Please wait");
      lcd.setCursor(0,1);
      lcd.print("Downloding Data");

پس از آن ، ما باید برای پاک کردن داده های حضور و غیاب از EEPROM کدی بنویسیم.

    if(digitalRead(del) == 0)
    {
      lcd.clear();
      lcd.print("Please Wait");
      lcd.setCursor(0,1);
      lcd.print("Reseting.....");
      for(int i=1000;i<1005;i++)
      EEPROM.write(i,0);
      for(int i=0;i<841;i++)
      EEPROM.write(i, 0xff);
      lcd.clear();
      lcd.print("System Reset");
      delay(1000);
    }

پس از آن، ماژول چاپ انگشت را فعال می کنی ، پیام خوش آمدید را از طریق LCD نشان می دهیم و همچنین ماژول RTC را نیز راه اندازی می کنیم. پس از آن ، در Void Loop ، زمان RTC را میخوانیم و آن را روی ال سی دی نمایش میدهیم.

void loop()
{
    now = rtc.now();
    lcd.setCursor(0,0);
    lcd.print("Time->");
    lcd.print(now.hour(), DEC);
    lcd.print(':');
    lcd.print(now.minute(), DEC);
    lcd.print(':');
    lcd.print(now.second(), DEC);
    lcd.print("    ");
    lcd.setCursor(0,1);
    lcd.print("Date->");
    lcd.print(now.day(), DEC);
    lcd.print('/');
    lcd.print(now.month(), DEC);
    lcd.print('/');
    lcd.print(now.year(), DEC);

سپس باید منتظر بمانیم تا سنسور اثر انگشت استفاده شود و پس از مقایسه در صورتی که سازگاری وجود داشت، کد زیر اجرا میشود.

    int result=getFingerprintIDez();
    if(result>0)
    {
              digitalWrite(indFinger, LOW);
              digitalWrite(buzzer, HIGH);
              delay(100);
              digitalWrite(buzzer, LOW);
              lcd.clear();
              lcd.print("ID:");
              lcd.print(result);
              lcd.setCursor(0,1);
              lcd.print("Please Wait....");
              delay(1000);
              attendance(result);
              lcd.clear();
              lcd.print("Attendance ");
              lcd.setCursor(0,1);
              lcd.print("Registed");
              delay(1000);
        digitalWrite(indFinger, HIGH);
        return;
 }

از void checkKeys() برای اینکه بررسی شود که دکمه Enroll فشرده شده است یا دکمه Del استفاده میشود. و همچنین تنظیم میشود که اگر فشرده شود چه کاری انجام میشود.

اگر کلید Enroll فشرده شود Enroll() اجرا میشود و اگر Delete فشرده شود delete() اجرا میشود.

تابع void delet () برای حذف شناسه برای حذف و فراخوانی تابع

uint8_t DeleteFingerprint (uint8_t id)

استفاده می شود که اثر انگشت را از حافظه حذف می کند.

تابع زیر برای ثبت تصویر اثر انگشت و تبدیل آن  و ذخیره آن در ID انتخاب شده در حافظه ماژول چاپ انگشت استفاده می شود.

uint8_t getFingerprintEnroll() 
{
  int p = -1;
  lcd.clear();
  lcd.print("finger ID:");
  lcd.print(id);
  lcd.setCursor(0,1);
  lcd.print("Place Finger");
  delay(2000);
  while (p != FINGERPRINT_OK)
  {
    p = finger.getImage();
..... .....
....... ....

تابع زیر برای ذخیره تاریخ و زمان حضور در حافظه EEPROM استفاده میشود.

void attendance(int id)
{
  int user=0,eepLoc=0;
  if(id == 1)
  {
    eepLoc=0;
    user=user1++;
  }
  else if(id == 2)
  {
    eepLoc=210;
    user=user2++;
  }
  else if(id == 3)
  .... ....
  .....

تابع زیر نیز برای ارسال داده های RTC و EEPROM به سریال مانیتور استفاده میشود.

void download(int eepIndex)
{
            
            if(EEPROM.read(eepIndex) != 0xff)
            {
              Serial.print("T->");
              if(EEPROM.read(eepIndex)<10)
              Serial.print('0');
              Serial.print(EEPROM.read(eepIndex++));
              Serial.print(':');  
              if(EEPROM.read(eepIndex)<10)
              Serial.print('0');
              Serial.print(EEPROM.read(eepIndex++));
  .... ....
  .....

فیلم عملکرد مدار

مشاهده فیلم زیر به شما در درک نحوه کار این پروژه کمک میکند. اگر سوالی دارید میتوانید در نظرات بپرسید.

فیلم عملکرد مدار : کلیک کنید !

موارد موجود در فایل : سورس کامل ، شماتیک کامل

برای دانلود فایل ها باید عضو آیرنکس باشید، تنها چند ثانیه زمان لازم است.

ورود / ثبت نام

[lrm_form default_tab=”register” logged_in_message=””]

نظرتان را در مورد این مطلب با ستاره دادن اعلام کنید
امیدوارم این مطلب برای شما مفید بوده باشد. نظرات ، مشکلات و پیشنهادات خود را در پایین صفحه اعلام کنید
محمد رحیمی

محمد رحیمی

محمد رحیمی هستم. سعی میکنم در آیرنکس مطالب مفید را قرار دهم. مالکیتی بر مطالب ارائه شده ندارم. اکثر فعالیت بنده در زمینه ترجمه است. (در خصوص سوال در مورد این مطلب از قسمت نظرات همین مطلب اقدام کنید)

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

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *