ساخت قفل رمزی با کیپد و صفحه نمایش توسط آردوینو

ساخت قفل رمزی با قابلیت تغییر رمز ورود

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

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

شرح عملکرد پروژه

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

در این پروژه تمامی پیغام ها و فعالیت مدار بر روی LCD کاراکتری تعبیه شده در مدار پروژه نمایش داده می شود. همچنین برای تغییر رمز عبور خود می توانید بعد از فشردن کلید # بر روی صفحه کلید، کلید * را فشار دهید. بعد از آن مدار از شما می خواهد رمز قدیمی (رمز کنونی قفل) را وارد نمایید و پس از آن کلید # را بر روی کیپد فشار دهید. در مرحله بعد شما باید رمز جدید خود را وارد کنید که این رمز باید 8 رقمی باشد و در نهایت برای تغییر رمز عبور کلید # را فشار دهید. در نهایت در صورتیکه رمز قدیمی شما صحیح باشد رمز ورود با موفقیت تغییر خواهد یافت.

نکته : رمز عبور در حافظه EPPROM میکروکنترلر آردوینو ذخیره می شود، در نتیجه با قطع تغذیه مدار، رمز عبور پاک نمی شود.

نکته: در تمامی مرحله کار با مدار در هنگام وارد کردن رمز عبور می توانید با فشردن کلید * رمز عبور خود را مجددا وارد کنید.

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

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

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

برد آردوینو Arduino UNO R3 مدل DIP1 عدد
رگولاتور ولتاژ 5 ولت L78051 عدد
ترانزیستور 2N3904 نوع NPN1 عدد
دیود 1N40071 عدد
مقاومت 1 کیلو اهم با توان 0.25 وات و تلرانس 5 درصد2 عدد
خازن الکترولیتی 470uf میکروفاراد 16 ولت2 عدد
لامپ LED سبز سایز 5mm میلی متر مدل مات1 عدد
صفحه کلید فلت ماتریسی مدل 4×31 عدد
LCD کاراکتری مدل 16×2 با Backlighting آبی1 عدد
رله 12V ولت معمولی تک کنتاکت با جریان 10 آمپر1 عدد
آداپتور 12V ولت 2A آمپر مدل بین راهی ساخت ایران1 عدد
برد بورد (پروجکت برد) مدل GL1 عدد
سیم جامپر برد بوردی مدل دو سر نری (سری 40تایی)1 عدد

برنامه پروژه در نرم افزار آردوینو

نکته : در برنامه این پروژه برای راه اندازی صفحه کلید توسط آردوینو Arduino از کتابخانه Keypad.h استفاده کرده ایم. به این ترتیب برای استفاده از این برنامه در نرم افزار برنامه نویسی آردوینو باید ابتدا کتابخانه Keypad.h را نصب کنید. فایل این کتابخانه در ادامه همین مطلب پیوست فایل پروژه جهت دانلود قرار داده شده است. همچنین در صورتیکه به نحوه نصب کتابخانه در آردوینو آشنا نیستید می توانید ویدیو آموزشی این مطلب را که در زیر درج شده است را مشاهده نمائید.

ویدیو ضبط شده از نحوه راه اندازی و عملکرد پروژه

دانلود ویدئو با لینک مستقیم از سرورهای پرقدرت الکترونیک 98

 اطلاعات پروژه

 رمز فایل : www.electronics98.com

 حجم فایل : 1 مگابایت

 محیط برنامه نویسی : Arduino (IDE)

 برنامه نویسی شده به زبان : ترکیبی از برنامه نویسی به زبان سی (C) یا سی پلاس پلاس (++C)

 نویسنده : فرهاد اکبری

 تاریخ انتشار : 31 می 2019

59 دیدگاه

  1. سلام دوست عزیز
    این بخش از برنامه بسیار ساده است، تابع نوشتن (EEP_Write_String)، حافظه EEprom میکروکنترلر را به پارت هایی با 32 خانه تقسیم می کند، این به این معنا است که شما می توانید یک رشته با طول حداکثر 32 کاراکتر را درون هر پارت ذخیره کنید. و زمانیکه شما تابع نوشتن را صدا می زنید باید شماره پارتی که می خواهید در آن بنویسید و متغیر مورد نظر خود را برای این تابع ارسال کنید. و در تابع خواندن (EEP_Read_String) نیز تنها شماره پارتی که متغیر خود را در آن ذخیره کرده اید را برای تابع ارسال می کنید و در نهایت تابع به شما مقدار متغیر ذخیره شده را بر می گرداند.

  2. سلام ردیفc2 کی پد کار نمی کنه اغداد 2 5 8 0 کار نمی کنه

  3. فرهاد اکبری

    سلام دوست عزیز
    بهتر است درستی اتصالات کیپد به برد آردوینو را بررسی نمائید، همچنین با یک مولتی متر آزمایش کنید که آیا اتصال تمامی پایه های کیپد به برد آردوینو که توسط سیم انجام شده برقرار است یا خیر.

  4. Amir Hossein Soleimani

    سلام.خسته نباشید آقای اکبری.در پاسخ به سوال آقای عرفان(در سوالات بالا) که با فشار دادن یک کلید در کیپد رله غیر فعال بشود.تمام کار هایی را که گفته بودید را انجام دادم واین حلقه شرطی را اضافه کردم.اما در خط 54 برنامه ERROR میدهد.لطفا راهنمایی ام کنید.با تشکر!

  5. سلام دوست عزیز
    در برنامه اصلی پروژه خط 113 الی 124 برنامه را پیدا کنید. (یعنی قطع کد زیر):

    و آنرا به شکل زیر تغییر دهید:

    در کد بالا بعد از فعال شدن رله و باز شدن درب تا زمانیکه شما کلید 0 را فشار ندهید رله غیر فعال نمی شود.

  6. امیرحسین سلیمانی

    با سلام و خسته نباشید به آقای اکبری.ببخشید من این پروژه با موفقیت راه اندازی کردم اما ناگهان ناخواسته یک اتصال کوتاه در حین کارکردن با پروژه رخ داد.از آن به بعد هر چه قدر رمز را وارد می کنم قفل باز نمی شود(تمام اجزای پروژه تا آنجایی که می دانم سالم هستند)سپس به پاسخ آقای امیر(در سوالات بالا)مراجعه کردم و دستوراتی که فرموده بودید(درمورد پاک کردن حافظه EEPROM) مو به مو انجام دادم ولی الآن بدون اینکه رمز را وارد کنم بافشردن کلید (مربع) قفل بار می شود لطفا راهنمایی کنید.باتشکر از شما استاد گرامی!!

  7. سلام دوست عزیز
    به احتمال بسیار زیاد پایه خروجی برد آردوینو که توسط آن رله قفل برقی را راه اندازی می شود آسیب دیده است. برای رفع این مشکل می توانید پایه خروجی رله را در برنامه آردوینو با یک پایه دیگر عوض کنید.

  8. امیرحسین سلیمانی

    باسلام.خیلی ممنون بابت راهنمایی شما استاد گرامی!!

  9. سلام خسته نباشید ببخشید میتونم از برد i2cاستفاده کنم در این پروژه و باید چه کد هایی رو تغییر بدم ممنون

  10. سلام دوست عزیز
    منظورتون از برد i2c چه بردی است؟ لطفا سوال خود را کاملتر بیان کنید.

  11. (EEP_Read_String(1).length() > 8) { سلام خسته نباشید یک سوال داشتم که تابعlengthرو چرا استفاده میکنید کاردبردن چی هست میشه یک توضیح در مورد این تایع بهم بدین

  12. فرهاد اکبری

    سلام دوست عزیز
    در این پروژه رمز پیش فرض برای اولین بار که از مدار استفاده می کنید “00000000” است، دستور فوق در زمان شروع به کار مدار، حافظه EEprom میکروکنترلر را بررسی می کند تا اگر، هنوز هیچ رمز عبوری بر روی حافظه میکروکنترلر تنظیم نشده باشد، رمز پیش فرض را بر روی حافظه EEprom میکروکنترلر اعمال کند.

  13. الان تابهlengthکارش اینه کا در حافضه میکروکنترلر ذخیره سازه کنه نوشتیدlengthبزرگ تر از 8 یعنی همون عدد رمزون که هشت رقمیه بروه یک خونه از eepromرو بخون منظورتون اینه

  14. فرهاد اکبری

    سلام دوست عزیز
    با استفاده از دستور length طول رشته ای که در خانه حافظه شماره یک، که مربوط به ذخیره سازی رمز عبور است را برمیگردانیم و در صورتیکه طول رشته بیشتر از 8 کاراکتر باشد، یعنی هیچ رمز عبوری در خانه شماره یک حافظه میکروکنترلر ذخیره نشده است.

  15. سلام زخسته نباشید دستورbreakو اونجایی رو که نوشتین1-رو توضیح بدین

 شرایط و قوانین ثبت دیدگاه

 فارسی بنویسید و از کیبورد فارسی استفاده کنید.

 لطفاً بیش‌از‌حدِ معمول، شکلک یا ایموجی استفاده نکنید و از کشیدن حروف یا کلمات با صفحه‌کلید بپرهیزید.

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

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