مدار قفل دیجیتالی در یک قفل رمز دار بر اساس کد الکترونیکی است بر مبنای میکروکنترلر ۸۰۵۱ ، یک صفحه کلید و یک رله ۱۲ ولت DC طراحی شده است. در این متن، یک قفل دیجیتالی در طراحی شده که با استفاده از میکروکنترلر ۸۰۵۱ می تواند به عنوان یک سیستم امنیتی الکترونیکی استفاده شده و از آن برای محدود کردن دسترسی یک مکان یا اتاق برای افراد مشخص توسط رمز عبور بهره گرفته شود. به همین دلیل، این پروژه قفل الکترونیکی را می توان به اسم های مختلفی مانند قفل ترکیبی دیجیتالی با استفاده از ۸۰۵۱، قفل رمزی امنیتی دیجیتالی، سیستم امنیتی مرزی با استفاده از ۸۰۵۱ یا قفل رمز الکترونیکی یا دیجیتالی نامگذاری کرد. اگرچه این نوع سیستم های امنیتی به نامهای مختلفی خوانده می شوند اما منهور از آنها یک سیستم امنیتی رمزدار با استفاده از میکروکنترلرهایی چون ۸۰۵۱، AVR ، PIC یا آردوینو است که ویژگی های اضافی مانند امکان قفل یا باز کردن اتوماتیک در، آلارم صوتی، ارسال هشدار با استفاده از GSM و به صورت SMS و …
خلاصه ای از پروژه قفل در دیجیتالی
این پروژه یک سیستم قفل الکترونیکی ساده است که یک رمز ۵ رقمی از قبل درون برنامه آن تنظیم شده است. سیستم ۵ رقم را از ورودی کاربر دریافت می کند و این ارقام را با رمز عبور از قبل ذخیره شده مقایسه می کند و اگر این ارقام مشابه یکدیگر باشند، به کاربر اجازه دسترسی داده می شود (بوسیله باز کردن در که این کار توسط یک باز شدن چند ثانیه ای یک رله صورت می گیرد و پس از طی زمان مشخصی به صورت خودکار بسته می شود). اگر ارقام وارد شده توسط کاربر با رمز عبور تعیین شده همخوانی نداشته باشد، اجازه دسترسی داده نمی شود (در باز نمی شود و رله در حالت خاموش باقی می ماند).
اکنون به سراغ ساخت این قفل دیجیتالی در می رویم. دیاگرام مدار این پروژه در تصویر زیر نشان داده شده است که اجزای آن بر اساس همین تصویر به هم متصل می شوند.
تجهیزات مورد نیاز:
- ۱ میکروکنترلر ۸۰۵۱-AT89S51
- ۱ نمایشگر LCD به ابعاد ۲*۱۶
- صفحه کلید ۴*۴
- ۱ مقاومت شبکه ۱۰ کیلواهم
- ۱ رله ۱۲ ولتی
- ۱ ترانزیستور BC548
- ۱ دیود ۱N4007
- ۱ کلید فشاری
- ۱ کریستال ۱۱٫۰۵۹ مگاهرتز
- ۲ خازن ۳۳ پیکوفاراد
- ۱ خازن ۰٫۱ میکروفاراد
- ۱ خازن ۱۰ میکرو فاراد
- ۱ مقاومت ۱۰ کیلواهم
- ۱ مقاومت ۱۰۰ اهم
- ۱ مقاومت ۸٫۲ کیلواهم
- ۱ مقاومت ۴٫۷ کیلواهم
- ۱ مقاومت ۳۳۰ اهم
شرح اتصالات مدار
اتصالات قفل دیجیتالی به شکلی که در تصویر شماتیک مدار نشان داده شده انجام می شود که شرح آن در ادامه بیان می شود.
- اتصال صفحه کلید به میکروکنترلر: در این بخش از پروژه قفل در دیجیتالی، یک صفحه کلید ۴*۴ به پورت ۳ میکروکنترلر ۸۰۵۱ متصل شده است. پینهای ردیف صفحه کلید به ترتیب به پینهای P3.0 تا P3.3 متصل هستند و پینهای ستون صفحه کلید نیز به ترتیب به پینهای P3.4 تا P3.7 متصل شده اند. نحوه خواندن صفحه کلید ۴*۴ توسط ۸۰۵۱ را می توان با جستجو در اینترنت یا در این لینک مشاهده کرد.
- اتصال ماژول LCD به میکروکنترلر: در این پروژه از نمایشگر LCD استفاده شده تا بتوان پیغام هایی برای نمایش وضعیت پروژه را بر روی آن مشاهده کرد. این ماژول در حالت ۸ بیتی ( استفاده از ۸ بیت دیتا) قرار گرفته که خطوط ۸ بیت دیتا به پورت ۰ در میکروکنترلر ۸۰۵۱ متصل شده اند. یک مقاومت Pull up خارجی توسط یک مقاومت ۱۰ کیلواهمی شبکه ( با ۸ پین) در پورت ۰ قرار گرفته است تا اتصال ۸ خط دیتای LCD از طریق آن انجام شود. پین های کنترلی LCD که RS، R/W و E هستند نیز به ترتیب به پینهای P2.7، P2.6 و P2.5 متصل شده اند. برای دریافت اطلاعات بیشتر در مورد چگونگی اتصال ماژول LCD به میکروکنترلر ۸۰۵۱ و همچنین آموزش اینکه چگونه می توان پیام های متنی را بر روی این نمایشگر نشان داد می توان از این لینک استفاده کرد.
- اتصال کلید فشاری: از این کلید برای ریست کردن میکروکنترلر ۸۰۵۱ استفاده شده همچنین از یک کریستال خارجی برای تأمین کلاک مورد نیاز ۸۰۵۱ استفاده شده است.
- رله: در پروژه قفل در دیجیتالی از یک رله ۱۲ ولتی SPDT استفاده شده که به پین P2.0 متصل است. همچنین یک ترانزیستور از نوع BC548 استفاده شده تا بتوان رله را با جریان مورد نیاز راه اندازی کند.
نحوه عملکرد پروژه
هدف پروژه قفل دیجیتالی این است که اجازه دسترسی به افرادی که ۵ رقم رمز عبور را به درستی وارد کنند بدهد و این اجازه به افرادی که رمز صحیح را وارد نکنند داده نخواهد شد. برای وارد کردن ۵ رقم یک صفحه کلید ۴*۴ به میکروکنترلر متصل شده و همچنین کنترل قفل سلونوئیدی در ( در تصویر دیاگرام مدار نشان نداده شده است) توسط یک رله ۱۲ ولتی انجام می شود. رمز عبور در برنامه میکروکنترلر ۸۰۵۱ ذخیره می شود ( حافظه برنامه). در نمونه کدی که در ادامه آورده شده است رمز عبور ۱۲۳۴۵۵ با برچسب PASSW
در حافظه برنامه ذخیره شده است.
PASSW: DB 49D,50D,51D,52D,53D,0 // Decimal equivalent of 1,2,3,4,5 is stored in address label PASSW
زمانی که تغذیه مدار وصل می شود، سیستم به همراه روشن شدن پیغام “Password Based Security System
” را بر روی LCD نمایش می دهد. زمانی که پروسه راه اندازی به صورت کامل انجام شد، سیستم درخواست می کند که ۵ رقم وارد شود و کاربر پس از نمایش پیام “Input 5 Digits”
می تواند ۵ رقم را به صورت متوالی وارد کند. پس از وارد شدن ۵ رقم، سیستم شروع به بررسی رمز ورود می کند ( ارقام وارد شده را با رمز ذخیره شده مقایسه می کند). قبل از اینکه زیر روال مربوطه عملیات بررسی رمز عبور را آغاز کند ( زیر روال مقایسه با برچسب CHECK_PASSWORD
)، یک پیغام وضعیتی به صورت “Cheking Password
” بر روی نمایشگر LCD ظاهر می شود. زیر روال بررسی رمز عبور تمامی ارقام را تک به تک مقایسه می کند و اگر ۵ رقم وارد شده صحیح باشند ( یعنی هر کدام از رقمهای وارد شده با رمز عبور ذخیره شده یکی باشند) سیستم پردازش صدور اجازه دسترسی را را آغاز می کند و رله را روشن می کند (در برنامه به صورت دستور SETB P2.0
انجام شده است). در این صورت دو پیغام بر روی نمایشگر نشان داده می شود که یکی “Access Granted
” و دیگری پیغام “Door Opens
” است. پس از چند ثانیه با استفاده از دستور CLR P2.0 رله خاموش می شود که این کار در تکرار بعدی دستورات قسمت Main برنامه انجام می شود. در صورتی که ارقام وارد شده با رمز عبور یکی نباشند رله روشن نشده و پیغامهای “Wrong Password
” و “Access Denied
” بر روی نمایشگر LCD نشان داده می شوند.
کد برنامه سیستم امنیتی با رمز عبور:
RS EQU P2.7 RW EQU P2.6 E EQU P2.5 SEL EQU 41H ORG 000H CLR P2.0 MOV TMOD,#00100001B MOV TH1,#253D MOV SCON,#50H SETB TR1 ACALL LCD_INIT MOV DPTR,#TEXT1 ACALL LCD_OUT ACALL LINE2 MOV DPTR,#TEXT2 ACALL LCD_OUT MAIN:ACALL LCD_INIT MOV DPTR,#TEXT1 ACALL LCD_OUT ACALL LINE2 MOV DPTR,#TEXT2 CLR P2.0 ACALL LCD_OUT ACALL DELAY1 ACALL DELAY1 ACALL READ_KEYPRESS ACALL LINE1 MOV DPTR,#CHKMSG ACALL LCD_OUT ACALL DELAY1 ACALL CHECK_PASSWORD SJMP MAIN LCD_INIT: MOV DPTR,#INIT_COMMANDS SETB SEL ACALL LCD_OUT CLR SEL RET LCD_OUT: CLR A MOVC A,@A+DPTR JZ EXIT INC DPTR JB SEL,CMD ACALL DATA_WRITE SJMP LCD_OUT CMD: ACALL CMD_WRITE SJMP LCD_OUT EXIT: RET LINE2:MOV A,#0C0H ACALL CMD_WRITE RET LINE1: MOV A,#80H ACALL CMD_WRITE RET CLRSCR: MOV A,#01H ACALL CMD_WRITE RET CMD_WRITE: MOV P0,A CLR RS CLR RW SETB E CLR E ACALL DELAY RET DATA_WRITE:MOV P0,A SETB RS CLR RW SETB E CLR E ACALL DELAY RET DELAY: CLR E CLR RS SETB RW MOV P0,#0FFh SETB E MOV A,P0 JB ACC.7,DELAY CLR E CLR RW RET DELAY1:MOV R3,#46D BACK: MOV TH0,#00000000B MOV TL0,#00000000B SETB TR0 HERE1: JNB TF0,HERE1 CLR TR0 CLR TF0 DJNZ R3,BACK RET DELAY2: MOV R3,#250D BACK2: MOV TH0,#0FCH MOV TL0,#018H SETB TR0 HERE2: JNB TF0,HERE2 CLR TR0 CLR TF0 DJNZ R3,BACK2 RET READ_KEYPRESS: ACALL CLRSCR ACALL LINE1 MOV DPTR,#IPMSG ACALL LCD_OUT ACALL LINE2 MOV R0,#5D MOV R1,#160D ROTATE:ACALL KEY_SCAN MOV @R1,A ACALL DATA_WRITE ACALL DELAY2 INC R1 DJNZ R0,ROTATE RET CHECK_PASSWORD:MOV R0,#5D MOV R1,#160D MOV DPTR,#PASSW RPT:CLR A MOVC A,@A+DPTR XRL A,@R1 JNZ FAIL INC R1 INC DPTR DJNZ R0,RPT ACALL CLRSCR ACALL LINE1 MOV DPTR,#TEXT_S1 ACALL LCD_OUT ACALL LINE2 ACALL DELAY1 SETB P2.0 MOV DPTR,#TEXT_S2 ACALL LCD_OUT ACALL DELAY1 SJMP GOBACK FAIL:ACALL CLRSCR ACALL LINE1 MOV DPTR,#TEXT_F1 ACALL LCD_OUT ACALL DELAY1 ACALL LINE2 MOV DPTR,#TEXT_F2 ACALL LCD_OUT ACALL DELAY1 GOBACK:RET KEY_SCAN:MOV P3,#11111111B CLR P3.0 JB P3.4, NEXT1 MOV A,#49D RET NEXT1:JB P3.5,NEXT2 MOV A,#50D RET NEXT2: JB P3.6,NEXT3 MOV A,#51D RET NEXT3: JB P3.7,NEXT4 MOV A,#65D RET NEXT4:SETB P3.0 CLR P3.1 JB P3.4, NEXT5 MOV A,#52D RET NEXT5:JB P3.5,NEXT6 MOV A,#53D RET NEXT6: JB P3.6,NEXT7 MOV A,#54D RET NEXT7: JB P3.7,NEXT8 MOV A,#66D RET NEXT8:SETB P3.1 CLR P3.2 JB P3.4, NEXT9 MOV A,#55D RET NEXT9:JB P3.5,NEXT10 MOV A,#56D RET NEXT10: JB P3.6,NEXT11 MOV A,#57D RET NEXT11: JB P3.7,NEXT12 MOV A,#67D RET NEXT12:SETB P3.2 CLR P3.3 JB P3.4, NEXT13 MOV A,#42D RET NEXT13:JB P3.5,NEXT14 MOV A,#48D RET NEXT14: JB P3.6,NEXT15 MOV A,#35D RET NEXT15: JB P3.7,NEXT16 MOV A,#68D RET NEXT16:LJMP KEY_SCAN INIT_COMMANDS: DB 0CH,01H,06H,80H,3CH,0 TEXT1: DB "PASSWORD BASED",0 TEXT2: DB "SECURITY SYSTEM",0 IPMSG: DB "INPUT 5 DIGITS",0 CHKMSG: DB "CHECKING PASSWORD",0 TEXT_S1: DB "ACCESS - GRANTED",0 TEXT_S2: DB "DOOR OPENED",0 TEXT_F1: DB "WRONG PASSWORD",0 TEXT_F2: DB "ACCESS DENIED",0 PASSW: DB 49D,50D,51D,52D,53D,0 END
کد این برنامه به زبان اسمبلی نوشته شده است که در ادامه مهترین بخشها و زیر روالهای آن توضیح داده خواهند شد.
کد برنامه قفل در دیجیتالی
- KEY_SCAN: این زیر روال برای تشخیص دادن کلید فشرده شده استفاده می شود که در آن برای تشخیص دادن کلید از روش بررسی ستون بهره گیری شده است. با این روش کلید فشرده شده تشخیص داده می شود و یک مقدار معادل دسیمال به آن نسبت داده می شود ( مقدار اسکی). برای دریافت اطلاعات بیشتر در این زمینه می توان به این لینک مراجعه کرد.
- READ_KEYPRESS: یک زیر روال برای جمع آوری ورودی از کاربر است. با استفاده از رجیستر R0 یک شمارنده تنظیم شده که ۵ مرتبه شمرده می شود و با این کار تعداد ارقام ورودی توسط کاربر به ۵ رقم محدود می شود. رجیستر R1 با آدرس محل ۱۶۰D مقدار دهی شده است. ارقام ورودی توسط کاربر در آدرس محلی که با ۱۶۰D آغاز شده، ذخیره می شوند. این آدرس محل با استفاده از دستور INC R1 در میکروکنترلر ۸۰۵۱ افزایش پیدا می کند. بنابرین اولین ورودی کاربر در خانه ۱۶۰D، دومین ورودی در خانه ۱۶۱D، سومی در خانه ۱۶۲D و به همین ترتیب آخرین رقم در خانه ۱۶۴D ذخیره می شود. دسترسی به این آدرس محل ها با استفاده از رجیستر R1 و توسط روش آدرس دهی غیر مستقیم انجام می شود.
نکته: در این برنامه دو روال برای ایجاد تأخیر وجود دارد. DELAY1 برای ایجاد تأخیر در پیغام های خروجی LCD استفاده می شود. پس از ارسال پیغام یا دیتا به ماژول LCD، DELAY1 فراخوانی می شود تا پیغام برای زمان تعیین شده در تابع تأخیر بر روی نمایشگر باقی بماند. DELAY2 که تأخیر ایجاد شده توسط آن ۲٫۵ ثانیه است، برای فراهم کردن زمان تأخیر لازم برای سلامت کارکرد صفحه کلید (debouncing effect) استفاده می شود. یک کلید فشاری یا هر نوع دیگری از سوییچ های مکانیکی دارای اثر پرش ولتاژ هستند. این اثر را می توان هم به طریق سخت افزاری ( قرار دادن برخی خازن ها) و هم با ترفندهای نرم افزاری (مثلا ۱ یا ۲ ثانیه تأخیر ایجاد کردن پس از فشردن و بررسی شدن یک کلید) از بین برد.
- CHECK_PASSWORD: این زیر روال برای مقایسه ۵ رقم ورودی کاربر با رمز حقیقی ذخیره شده در برنامه استفاده می شود. مقایسه به صورت رقم به رقم انجام می شود و هر رقم از رمز ذخیره شده با استفاده از DPTR انتخاب شده و توسط MOVC A, @A+DPTR در Accumulator قرار می گیرد. سپس هر رقمی که در Accumulator قرار گرفته با رقم متناظر ذخیره شده که کاربر وارد کرده مقایسه می شود ( در آدرس ۱۶۰D تا ۱۶۴D) که این ارقام به صورت تک به تک در رجیستر R1 قرار می گیرند. رقم ها توسط عملیات XOR شدن مقایسه می شوند که این کار با دستور XRL A,@R1 انجام می شود. با توجه به نتیجه مقایسه، این زیر روال نوشتن دستور اجازه دسترسی دادن ( و روشن شدن رله) یا اجازه دسترسی ندادن را انجام می دهد و پیام مربوط به هر قسمت بر روی LCD نمایش داده می شود.
نتیجه گیری
پس از انجام این مراحل ساخت سیستم امنیتی رمز دار به پایان می رسد. این مدار تست شده و به خوبی عمل می کند. پروژه های مشابه دیگری نیز در این زمینه در ساختنی وجود دارد که می توانید در صورت علاقه از آنها نیز استفاده کنید.
دیدگاهتان را بنویسید
برای نوشتن دیدگاه باید وارد بشوید.