پروژه قفل امنیتی اثر انگشتی با آردوینو (بازکردن در با اثرانگشت)

محتویات
سلام. امروز یک پروژه خیلی کاربردی و پرطرفدار ، یعنی آموزش باز کردن در با اثر انگشت آردوینو را آماده کردیم.
پروژه آردوینو در بازکن اثر انگشتی
این پروژه آردوینو میتواند برای باز کردن در با اثر انگشت ، سیستم حضور و غیاب ، انگشت نگاری ، شناسایی شخصی و … مفید باشد. همچنین میتوانیم از این پروژه امنیتی اثر انگشت برای پیاده کردن یک سیستم پرداخت و رانندگی استفاده کنیم. این سیستم بر اساس یک الگوریتم ساده به نام الگوریتم تطبیق کار میکند که برای مقایسه اثر انگشت هایی که قبلا ذخیره شدند در برابر اثر انگشت هایی که وارد تازه میشند.
ما در این پروژه آردوینو یک انگشت از دستمان را روی سنسور اثر انگشت قرار میدهیم و آردوینو دستور باز شدن در را ارسال میکند و روی ال سی دی کاراکتری یک پیام خوش آمد نشان داده میشود.
این پروژه شامل :
- آشنایی با سنسور اثر انگشت R305
- اتصال سنسور اثرانگشت به برد آردوینو
- ذخیره اثرانگشت و استفاده از پروژه به عنوان قفل در
همچنین ببینید : آموزش پروژه راه اندازی سنسور اثر انگشت GT511C3 با آردوینو
راه اندازی قفل امنیتی اثر انگشت با Arduino
در این پروژه سنسور اثر انگشت با آردوینو ، ما از ماژول حسگر اثر انگشت استفاده کرده ایم. در اینجا ما از 4 دکمه برای کنترل پروزه استفاده میکنیم. هر کلید دارای ویژگی های دوگانه است.
از کلید 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 به شما اطلاع می دهد که اثر انگشت با موفقیت حذف شده است.
اگر اثر انگشت قرار گرفته معتبر باشد ، چراغ سبز به مدت 5 ثانیه میدرخشد و در همان زمان در نیز باز میشود و بعد از 5 ثانیه به طور خودکار بسته میشود. شما میتوانید بسته به نیاز خود این عملکرد را تغییر دهید.
توضیحات شماتیک مدار پروژه قفل امنیتی
مدار این سیستم امنیتی اثر انگشت با آردوینو بسیار ساده است. برد Arduino تمامی مراحل پروژه یعنی دکمه ها ، بازر ، ال سی دی ، سنسور اثر انگشت و … را کنترل میکند.
دکمه فشار به طور مستقیم به پین های (D14 ENROLL ، D15 (DEL) ، D16 (UP و D17 DOWN آردوینو وصل شده اند. و LED زرد در پین دیجیتال D7 آردوینو به GND از طریق مقاومت 1k و LED سبز با همان روش به D6 آردوینو وصل می شود. پین های Rx و Tx سنسور اثرانگشت به طور مستقیم به پین دیجیتال D2 و D3 آردوینو متصل می شوند. از منبع تغذیه 5 ولت برد Arduino برای تغذیه کل مدار از جمله ماژول اثر انگشت و سروو موتور استفاده میشود.
از منبع تغذیه 5v برای ماژول اثر انگشت گرفته شده از برد Arduino استفاده می شود و موتور Servo نیز به PWM و پین D5 Arduino متصل است. یک ال سی دی کاراکتری 16×2 در حالت 4 بیتی پیکربندی شده است و RS ، EN ، D4 ، D5 ، D6 و D7 مستقیماً در پین های دیجیتال D13 ، D12 ، D11 ، D10 ، D9 و D8 Arduino به یکدیگر متصل می شوند.
توجه: در اینجا D14 ، D15 ، D16 ، D17 به ترتیب A0 ، A1 ، A2 ، A3 هستند.
آشنایی با سنسور اثر انگشت R305
ماژول ثبت اثر انگشت R305 یک سنسور نوری است که با استفاده از پردازش نوری اطلاعات را ثبت میکند. یکی ازویژگی های مهم این ماژول قابلیت تنظیم سطح امنیت توسط کاربر میباشد. شما میتوانید درجه امنیتی را بین 1 تا 5 تغییر دهید که این مقدار به طور پیشفرض 3 میباشد. این ماژول ها دارای سرعت بالایی میباشند. همچنین طول عمر این حسگر اثر انگشت 100 میلیون بار تشخیص اثر انگشت است. در این پروژه ما میتوانیم بیش از 200 اثر انگشت ذخیره کنیم فقط توجه داشته باشید که هر اثر انگشت یک آیدی منحصر به فرد داشته باشد.
قطعات مورد نیاز
- برد آردوینو Uno
- مقاومت 1 کیلو اهم – سه عدد
- مقاومت 2.2 کیلو اهم
- ماژول اثر انگشت R305
- ال سی دی کاراکتری 16*2
- سروو موتور
- ال ای دی – دو عدد
- دکمه – 4 عدد
- دانلود نرم افزار آردوینو
توضیحات کد آردوینو پروژه
در این پروژه از کتابخانه سنسور اثر انگشت Adafruit استفاده کرده ایم. کد کامل پروژه در فایل دانلودی انتهای صفحه قرار داده شده است. در اینجا قسمت های مهم کد را توضیح میدهیم. کد زیر نشان میدهد که اگر اثر انگشت تایید شود، دروازه باز خواهد شد و پیام Gete Opened نمایش داده میشود و پس از 5 ثانیه در بسته خواهد شد و پیام Gate Closed نمایش داده میشود.
for(int i=0;i<5;i++) { lcd.clear(); lcd.print("Place Finger"); // نمایش پیام قرار دادن انگشت delay(2000); int result=getFingerprintIDez(); if(result>=0) // اگر اثر انگشت صحیح باشد { digitalWrite(openLight, HIGH); // ال ای دی سبز روشن digitalWrite(closeLight, LOW); // ال ای دی زرد خاموش lcd.clear(); lcd.print("Allowed"); lcd.setCursor(0,1); lcd.print("Gete Opened "); // نمایش پیام در باز است myServo.write(0); delay(5000); // تاخیر به مدت 5 ثانیه myServo.write(180); digitalWrite(closeLight, HIGH); // ال ای دی زرد روشن digitalWrite(openLight, LOW); // ال ای دی سبز خاموش lcd.setCursor(0,1); lcd.print("Gate Closed "); // نمایش پیام در بسته است
عملکرد checkKeys () برای بررسی وضعیت دکمه های Enroll و Delete استفاده میشود. و در این تابع تعریف میکنیم که در صورت فشرده شدن چه اتفاقی باید رخ دهد. یعنی اگر دکمه Enroll فشرده شد عملکرد Enroll() و اگر دکمه Delete فشرده شد عملکرد delete() اجرا میشود.
void checkKeys() { if(digitalRead(enroll) == 0) // در صورتی که دکمه Enroll فشرده شود { lcd.clear(); lcd.print("Please Wait"); // نمایش پیام لطفا صبر کنید delay(1000); // به مدت 1 ثانیه while(digitalRead(enroll) == 0); Enroll(); // اجرای تابع Enroll } else if(digitalRead(del) == 0) // در صورتی که دکمه Del فشرده شود { lcd.clear(); lcd.print("Please Wait");// نمایش پیام لطفا صبر کنید delay(1000); // به مدت 1 ثانیه delet(); // اجرای تابع delet } }
عملکرد زیر برای حذف شناسه و فراخوانی تابع
uint8_t DeleteFingerprint (uint8_t id)
استفاده میشود که اثر انگشت را از سوابق حذف میکند.
void delet() { int count=0; lcd.clear(); lcd.print("Delete Finger "); // نمایش پیام حذف اثر انگشت lcd.setCursor(0,1); lcd.print("Location:"); while(1) { lcd.setCursor(9,1); lcd.print(count); if(digitalRead(up) == 0) { // کد وارد کردن شناسه count++; if(count>25) count=0; delay(500); } .... ..... ..... .....
عملکرد زیر اجرا میشود و اثر انگشت مورد نظر شما حذف خواهد شد.
uint8_t deleteFingerprint(uint8_t id) { uint8_t p = -1; lcd.clear(); lcd.print("Please wait"); // نمایش پیام لطفا صبر کنید p = finger.deleteModel(id); if (p == FINGERPRINT_OK) // اگر شناسه درست وارد شود { Serial.println("Deleted!"); lcd.clear(); lcd.print("Figer Deleted"); // نمایش پیام حذف شد موفقیت آمیز lcd.setCursor(0,1); lcd.print("Successfully"); // نمایش پیام حذف شد موفقیت آمیز delay(1000); } else // اگر شناسه یافت نشود { Serial.print("Something Wrong"); lcd.clear(); lcd.print("Something Wrong"); // نمایش پیام یک چیز اشتباه پیش میرود lcd.setCursor(0,1); lcd.print("Try Again Later"); // نمایش پیام بعدا امتحان کنید delay(2000); return p; } }
عملکرد زیر نیز برای دریافت اثر انگشت و تبدیل آن و ذخیره آن با شناسه انتخاب شده در حافظه ماژول اثر انگشت استفاده میشود.
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(); ..... ..... ....... ....
به این ترتیب ما می توانیم از آردوینو و ماژول حسگر چاپگر انگشت برای سیستم امنیتی استفاده کنیم.
موارد موجود در فایل : شماتیک کامل ، سورس کامل
برای دانلود فایل ها باید حساب کاربری داشته باشید ثبت نام / ورود
درود
وقتتون بخیر. چطور می تونم security level رو تغییر بدم؟
با سپاس فراوان از بذل توجه شما
سلام و احترام
اگه بخواهیم یه کیپد اضافه کنیم برا اینکه هروقت خواستیم اثر انگشت جدید ثبت کنیم یه رمز بزنیم بعد وارد منو تعریف اثر انگشت جدید بشیم کد نوشتن خیلی تغییر میکنه ؟
ببخشید مهندس صفحه نمایش درست کار میکنه ولی کلید ها قطعه و جواب نمیده میشه راهنمایی کنید
سلام خیلی ممنون از آموزشی که دادید
یک سوال دارم چطور میتونم از ماژول اثر انگشت خورجی کد هکز بگیرم
سلام
پروژه دماسنج هم دارید؟
سلام عزیز
موارد خیلی زیادی موجود هست در قسمت جستجو دما را بنویسید
سلام خسته نباشید قفل برقی رو باید به کجاش وصل کنیم ؟
سلام عزیز
این پروژه برای باز کردن درب با سروو موتور هست اگر میخواهید از قفل برقی استفاده کنید باید کد را تغییر بدهید
درود بر شما جناب مهندس. وقتتون با نیکی. اگه بخواهیم برای این پروژه در ابتدای راه اندازی یک اثر انگشت مستر یا مدیر هم اضافه کنیم به چه صورت است. اثر انگشت مدیر برای اینکه تنها مدیر اجازه اضافه کردن یا پاک کردن اثر انگشت را بدهد. با سپاس فراوان
سلام عزیز
نیاز به تغییر خیلی زیادی در کد هست
برای یادگیری برنامه نویسی آردوینو دوره آردوینو را مشاهده کنید
سلام من اشتباهی ماژول اثر انگشت as608 رو خریداری کردم و نمیدونم سیم ها رو چجوری وصل کنم میشه راهنمایی کنید؟
سلام عزیز
علاوه بر سیم ها نیاز به تغییر کد هست
سلام برای درب منزل دوستان به صورت تشخیص چهره باز شود چه نوع سخت افزاری و چه کد اردینو استفاده کنم
سلام عزیز، برای تشخیص چهره رزبری پای گزینه بهتری هست
سلام برای سیستم حضور و غیاب شرکت این پروژه چطوری عمل میکنه؟
سلام عزیز، بهتر هست در قسمت جستجوی سایت کلمه حضور و غیاب رو سرچ کنید تا پروژه های مخصوص حضور و غیاب رو وشاهده کنید.
سلام
کدی که قرار دادین، برای من اجرا نمیشه. در صورتیکه همین کد رو کپی کردم و خطای زیر رو میگیره ازم
Arduino: 1.8.10 (Windows 10), Board: “Arduino/Genuino Uno”
In function ‘uint8_t getFingerprintEnroll()’:
warning: return-statement with no value, in function returning ‘uint8_t {aka unsigned char}’ [-fpermissive]
return;
^~~~~~
سلام وقتتون بخیر
عذرمیخوام من داخل دیتاشیت یسری مطلب درباره رمزماژول خواندم منتها ئر کدی که قرار دادین پیداش نکردم. برای اولین باری که ماژول میخواد راه اندازی شه مشکلی بوجود نمیاد؟
سلام وقت بخیر
برای ماژول r305 باید چه کتابخانه ای دانلود کرد که داخل پروتئوس بشه شبیه سازی کرد؟ من کتابخانه های مربوط به سروو و آردوینو و.. را پیدا کردم ولی متاسفانه برای این ماژول چیزی پیدا نکردم. ممنون میشم راهنمایی بفرماید
سلام عزیز. r305 library for proteus رو در گوگل سرچ کنید
سلام وقت بخیر
خیلی ممنون بابت وقتی که گذاشتین. پس عملا شبیه سازی کلا توسط هیچ نرم افزاری درباره این پروژه کمک نمیکنه درسته؟ و باید عملکرد رو بصورت عملی مشاهده کرد. بعد اینکه سورس کدی که برای دانلود پایین مطالب قرار گرفته فقط برای راه اندازی ماژول لازم هست؟ و اینکه داخل قطعات نوشته بودین سروو موتور! از چه مدلی باید تهیه بشه؟ من سرچ کردم وای مدل های مختلفی آورد نمیدونم باید از چه مدلی استفاده کنم؟
ممنون میشم راهنمایی کنین
سلام عزیز، کد مورد نیاز این پروژه در انتهای صفحه قرار گرفته. از سروو موتور های معمولی مثل SG90 میتونید استفاده کنید.
سلام وقت بخیر
برای شبیه سازی مدار فوق باید از چه نرم افزاری استفاده کرد؟ و نحوه عملکردش به چه صورتی هست؟
ممنون میشم راهنمایی بفرمایید متشکرم
سلام عزیز، در پروتئوس میتونید شبیه سازی کنید ولی عملکرد سنسور اثر انگشت احتمالا در پروتئوس وجود نداره. بنابراین باید به صورت واقعی پروژه رو اجرا کنید.
سلام کد باگ داره یهو وسط اجرا چند بار خاموس روشن میشه
کد سالم رو از کجا میتونم بگیرم
سلام خسته نباشد تشکر از اموزش خوبتون فایل پروژه رو دانلود کردم موقع باز کردن فایل زیپ ارور رو میده
سلام جناب. بررسی کردم فایل صحیح هست. دوباره دانلود کنید و از نرم افزار WinRAR استفاده کنید.
سلام ببخشيد اگر ما به جاي سروو قفل بزاريم بايد از رله ٥ولت استفاده كنم ،
سلام جناب. بله میتونید از رله های پنج ولت استفاده کنید.
سلام ببخشید سنسور ارزان تر که بشه در این پروژه استفاده کرد وجود نداره؟
بعد اگه داشته باشه باید برنامه را نسبت به همون مدل حسگر بنویسیم؟
اگه حسگرارزان تر سراغ ممنون میشم معرفی کنین
سلام عزیز
بله در صورت تغییر سنسور، باید کد هم ویرایش بشه
سلام
وقت بخیر
خدا قوت
خواستم تشکر کنم از زحماتتون
ممنون پروژه بسیار کاربردی شد برای من
سلام جناب. خواهش میکنم خوشحالم که براتون مفید بوده. موفق باشید