پروژه قفل رمزی الکترونیکی
این یک پروژه تهیه قفل رمز دیجیتالی الکترونیکی است. هدف در این پروژه مفید بودن مدار ساخته شده و کارکرد صحیح آن میباشد. ضمن اینکه در طی طراحی این مدار آشنایی عملی و بسیار خوب با میکرو avr وبعضی قطعات پرکاربرد الکترونیکی دیگر نظیر صفحه کلید و LCD و پروتکل های آن ها و چگونگی اتصال ان ها با میکرو صورت گرفت .
پروژه قفل رمزی الکترونیکی
همچنین برنامه نویسی عملی برای میکرو به این صورت, چگونگی عملکرد برنامه نوشته شده و صحت آن در مدار بسته شده خود حاوی تجارب بسیار مفیدی بود.و این راه را برای طراحی مدارات پیشرفته تر وپیچیده تر با میکرو آسان مینماید.
این نکته قابل ذکر است که این اولین مدار میکرو کنترلی ساخته شده به صورت عملی برای من بود و تجربه چنین کاری بسیار با طراحی آن در نرم افزارهای شبیه ساز متفاوت است.(خطاهای برنامه و چگونگی اتصالات بین اجزای مختلف مدار و پروتکل های هر جز با شبیه سازی توسط نرم افزار متفاوت میباشد .)
اجزای اساسی این مدار:
1)میکرو ATMEGA32
2)LCD کاراکتری 16*2
3) صفحه کلید 3*4 ماتریسی
4) LED
5) برد بورد.
6)سیم های رابط.
7) مقاومت های1و0.680 کیلواهم
نرم افزار:
نرم افزار استفاده شده در این پروژه (bascom avr ) میباشد که زبان برنامه نویسی آن بیسیک است. تعداد خطوط برنامه ای که من برای این پروژه نوشتم 296 خط میباشد . این تعداد زیاد خط برنامه نویسی برای رفع تقریبا کامل باگ ها و خطاهای احتمالی و غیر احتمالی در مدار عملی و حین کار مدار و ارایه یک مدار بی نقص میباشد.در برنامه این نرم افزار از مجموعه ای از دستورات نرم افزای مثل دستورات شرطی و...و روشها و تکنیک های برنامه نویسی همچون روش نظاره به جدول(برای عملکرد صفحه کلید)و تعداد زیادی subroutine (زیر برنامه) و ایجاد تاخیر های مناسب برای عملکرد مدار را نام برد.
نرم افزا دیگری که در طراحی این مدار برای تست طرز عملکرد مدار به کار گرفته شد (proteus) میباشد . ولی همان طور که گفته شد شبیه سازی با این نرم افزار تا پیاده سازی عملی و به نتیجه رسیدن در مدار عملی بسیار سخت تر از شبیه سازی با نرم افزار است.من از اینجا به این مهم رسیده ام که بدون اغراق بگویم برای پیاده سازی عملی این مدار 24 ساعت پشت سر هم بیدار بودم (که علت آن میتواند دلایلی همچون: اولین تجربه و خطا های گوناگون مدار عملی بسته شده در مقایسه با شبیه سازباشد معیوب بودن قطعات مورد کاربرد باشد).
• از دیگر قابلیت های این مدار توانایی افزودن دیگر مدارات جانبی همانند سیستم کارت خوان و... میباشد.
• این مدار قابلیت کاربرد در اماکن امنیتی و مهم و نیز در هر مکان و هر وسیله دیگری که فاکتور امنیت در آن مهم باشد را دارا میباشد . ضمن اینکه سبب آسانی و راحتی کاربران در هر محل کاربرد میباشد.
رمز اولیه دستگاه هنگام روشن شدن آن 1234 میباشد و رمز اصلی آن (master password) عدد 1357 است.ضمن اینکه با فشردن کلید * میتوان رمز(password) را تغییر داد و با فشردن کلید # میتوان رمز اصلی (master password ) را تعویض نمود. تعداد ارقام مورد استفاده در دستگاه 4 رقم است که با تغییر در برنامه آن میتوان تعداد ارقام رمز (password) را 254 رقم افزایش داد
امنیت:
احتمال درست وارد کردن رمز توسط افراد غیر مرتبط ؛ با این تعداد ارقام(4 رقم) در فرصت اول 10000/1 میباشدو تا سه مرحله فرصتی که دستگاه برای وارد کردن رمز درست به افراد میدهد این عدد به 10000/3 میرسد که این عدد معادل 0003/. است که این نشان دهنده امنیت مناسب این دستگاه در برابر نفوذ اتفاقی میباشد.
توان مصرفی:
توان مصرفی در حالت عادی : 475 mW در ولتاژ 5 ولت.
Maximum توان مصرفی : 771 mW در ولتاژ5 ولت.
برنامه نوشته شده
$regfile = "M32DEF.DAT"
$crystal = 8000000
Config Kbd = Porta
Config Portb = Output
Dim B As Byte
Dim C As Byte
Dim D As Byte
Dim E As Byte
Dim F As Byte
Dim G As Byte
Dim H As Byte
Dim I As Byte
Dim J As Word
Dim L As Word
Dim M As Word
Dim N As Word
Dim P As Word
Dim Q As Word
Dim R As Word
Dim S As Word
Dim K As Byte
Dim O As Byte
Dim A As Word
Dim T As Byte
Dim X As Word
Dim Y As Word
Set Portb.2
Cursor Blink
Cls
Lcd "project name :"
Locate 2 , 1
Lcd "*digital luck*"
Waitms 1000
Cls
Lcd "doen by:"
Locate 2 , 1
Lcd " mainmicroi"
Waitms 1000
Cls
Lcd "ostad rahnema:"
Locate 2 , 1
Lcd "*mohandes*"
Waitms 1000
L = 1234
G = 3
T = 0
O = 0
K = 2
A = 1357
Maine:
Cls
Lcd "inter password"
Y = L
Mmain:
Do
Waitms 50
B = Getkbd()
If B < 12 Then
Goto Main
End If
Loop
Main:
Do
If B = 0 Then
Reset B
C = 1
Goto Main2
End If
If B = 4 Then
Reset B
C = 2
Goto Main2
End If
If B = 8 Then
Reset B
C = 3
Goto Main2
End If
If B = 1 Then
Reset B
C = 4
Goto Main2
End If
If B = 5 Then
Reset B
C = 5
Goto Main2
End If
If B = 9 Then
Reset B
C = 6
Goto Main2
End If
If B = 2 Then
Reset B
C = 7
Goto Main2
End If
If B = 6 Then
Reset B
C = 8
Goto Main2
End If
If B = 10 Then
Reset B
C = 9
Goto Main2
End If
If B = 11 Then
Reset B
C = 12
T = 3
Goto Main2
End If
If B = 7 Then
Reset B
C = 0
Goto Main2
End If
If B = 3 Then
Reset B
C = 11
O = 3
Goto Main2
End If
Loop
Main2:
If C = 11 Then
Goto Main7
End If
If C = 12 Then
Goto Main13
End If
If G = 3 Then
Locate 2 , 1
Lcd "*"
E = C
Decr G
Goto Mmain
End If
If G = 2 Then
Locate 2 , 2
Lcd "*"
F = C
Decr G
Goto Mmain
End If
If G = 1 Then
Locate 2 , 3
Lcd "*"
H = C
Decr G
Goto Mmain
End If
If G = 0 Then
Locate 2 , 4
Lcd "*"
I = C
G = 3
End If
Main3:
M = H * 10
N = F * 100
P = E * 1000
Q = M + I
R = N + Q
S = P + R
Goto Main7
Main8:
Do
If L = A And T = 2 Then
Goto Main13
End If
If L <> S And T = 1 Then
Goto Main13
End If
If L = S Then
Reset Portb.1
Goto Main4
End If
If L <> S Then
Set Portb.1
End If
Goto Main5
Loop
Main4:
Cls
Lcd "ok"
Set Portb.0
Waitms 100
Reset Portb.0
K = 2
L = Y
Goto Maine
Main5:
Do
If K = 0 Then
Goto Main6
Else
Cls
Lcd "your try"
Locate 1 , 10
Lcd K
Locate 2 , 9
Lcd "!alarm!"
Decr K
Goto Mmain
End If
Loop
Main6:
Cls
Lcd "int master pass"
Reset L
L = A
K = 0
Goto Mmain
Main7:
Do
Main11:
If O = 3 Then
L = A
Cls
Lcd "int master pass"
Decr O
Goto Mmain
End If
If O = 2 And L = S Then
Decr O
Cls
Lcd "int new password"
Goto Mmain
End If
If O = 1 Then
L = S
Cls
Lcd L
Waitms 100
Cls
Decr O
Goto Maine
End If
If O = 0 Then
Goto Main8
End If
If O = 2 And L <> S Then
Cls
Lcd "eror"
O = 3
Waitms 100
Goto Main11
End If
Loop
Main13:
Do
Main14:
If T = 3 Then
X = L
L = A
Cls
Lcd "int master pass"
Decr T
Goto Mmain
End If
If T = 2 And A = S Then
Decr T
Cls
Lcd "new master pass"
Goto Mmain
End If
If T = 1 Then
A = S
L = X
Cls
Lcd A
Waitms 100
Cls
Decr T
Goto Maine
End If
If T = 0 Then
Goto Main8
End If
If T = 2 And A <> S Then
Cls
Lcd "eror"
T = 3
Waitms 100
Goto Main14
End If
Loop
End 'end program
مراجع ومنابع:
1. bascom-avr helpfile –version 1.11a
2. کتاب مرجع کامل میکرو کنترل های avr .--انتشارات نص --نویسنده مظاهریان- پرتوی فر-بیانلو
3. کتاب ساختار میکرو کنترل های avr .-- نشر شیخ بهایی—نویسنده: مهندس علی سلیمیان
4. دیتا شیت های شرکت ATMEL مربوط به میکرو ATmega32
(mainpersia) دانشجوی سال آخر دوره کارشناسی الکترونیک
30 اذرپاییز سال1386 (از پروژه الکترونیک 3)
این یک پروژه تهیه قفل رمز دیجیتالی الکترونیکی است. هدف در این پروژه مفید بودن مدار ساخته شده و کارکرد صحیح آن میباشد. ضمن اینکه در طی طراحی این مدار آشنایی عملی و بسیار خوب با میکرو avr وبعضی قطعات پرکاربرد الکترونیکی دیگر نظیر صفحه کلید و LCD و پروتکل های آن ها و چگونگی اتصال ان ها با میکرو صورت گرفت .
پروژه قفل رمزی الکترونیکی
همچنین برنامه نویسی عملی برای میکرو به این صورت, چگونگی عملکرد برنامه نوشته شده و صحت آن در مدار بسته شده خود حاوی تجارب بسیار مفیدی بود.و این راه را برای طراحی مدارات پیشرفته تر وپیچیده تر با میکرو آسان مینماید.
این نکته قابل ذکر است که این اولین مدار میکرو کنترلی ساخته شده به صورت عملی برای من بود و تجربه چنین کاری بسیار با طراحی آن در نرم افزارهای شبیه ساز متفاوت است.(خطاهای برنامه و چگونگی اتصالات بین اجزای مختلف مدار و پروتکل های هر جز با شبیه سازی توسط نرم افزار متفاوت میباشد .)
اجزای اساسی این مدار:
1)میکرو ATMEGA32
2)LCD کاراکتری 16*2
3) صفحه کلید 3*4 ماتریسی
4) LED
5) برد بورد.
6)سیم های رابط.
7) مقاومت های1و0.680 کیلواهم
نرم افزار:
نرم افزار استفاده شده در این پروژه (bascom avr ) میباشد که زبان برنامه نویسی آن بیسیک است. تعداد خطوط برنامه ای که من برای این پروژه نوشتم 296 خط میباشد . این تعداد زیاد خط برنامه نویسی برای رفع تقریبا کامل باگ ها و خطاهای احتمالی و غیر احتمالی در مدار عملی و حین کار مدار و ارایه یک مدار بی نقص میباشد.در برنامه این نرم افزار از مجموعه ای از دستورات نرم افزای مثل دستورات شرطی و...و روشها و تکنیک های برنامه نویسی همچون روش نظاره به جدول(برای عملکرد صفحه کلید)و تعداد زیادی subroutine (زیر برنامه) و ایجاد تاخیر های مناسب برای عملکرد مدار را نام برد.
نرم افزا دیگری که در طراحی این مدار برای تست طرز عملکرد مدار به کار گرفته شد (proteus) میباشد . ولی همان طور که گفته شد شبیه سازی با این نرم افزار تا پیاده سازی عملی و به نتیجه رسیدن در مدار عملی بسیار سخت تر از شبیه سازی با نرم افزار است.من از اینجا به این مهم رسیده ام که بدون اغراق بگویم برای پیاده سازی عملی این مدار 24 ساعت پشت سر هم بیدار بودم (که علت آن میتواند دلایلی همچون: اولین تجربه و خطا های گوناگون مدار عملی بسته شده در مقایسه با شبیه سازباشد معیوب بودن قطعات مورد کاربرد باشد).
• از دیگر قابلیت های این مدار توانایی افزودن دیگر مدارات جانبی همانند سیستم کارت خوان و... میباشد.
• این مدار قابلیت کاربرد در اماکن امنیتی و مهم و نیز در هر مکان و هر وسیله دیگری که فاکتور امنیت در آن مهم باشد را دارا میباشد . ضمن اینکه سبب آسانی و راحتی کاربران در هر محل کاربرد میباشد.
رمز اولیه دستگاه هنگام روشن شدن آن 1234 میباشد و رمز اصلی آن (master password) عدد 1357 است.ضمن اینکه با فشردن کلید * میتوان رمز(password) را تغییر داد و با فشردن کلید # میتوان رمز اصلی (master password ) را تعویض نمود. تعداد ارقام مورد استفاده در دستگاه 4 رقم است که با تغییر در برنامه آن میتوان تعداد ارقام رمز (password) را 254 رقم افزایش داد
امنیت:
احتمال درست وارد کردن رمز توسط افراد غیر مرتبط ؛ با این تعداد ارقام(4 رقم) در فرصت اول 10000/1 میباشدو تا سه مرحله فرصتی که دستگاه برای وارد کردن رمز درست به افراد میدهد این عدد به 10000/3 میرسد که این عدد معادل 0003/. است که این نشان دهنده امنیت مناسب این دستگاه در برابر نفوذ اتفاقی میباشد.
توان مصرفی:
توان مصرفی در حالت عادی : 475 mW در ولتاژ 5 ولت.
Maximum توان مصرفی : 771 mW در ولتاژ5 ولت.
برنامه نوشته شده
$regfile = "M32DEF.DAT"
$crystal = 8000000
Config Kbd = Porta
Config Portb = Output
Dim B As Byte
Dim C As Byte
Dim D As Byte
Dim E As Byte
Dim F As Byte
Dim G As Byte
Dim H As Byte
Dim I As Byte
Dim J As Word
Dim L As Word
Dim M As Word
Dim N As Word
Dim P As Word
Dim Q As Word
Dim R As Word
Dim S As Word
Dim K As Byte
Dim O As Byte
Dim A As Word
Dim T As Byte
Dim X As Word
Dim Y As Word
Set Portb.2
Cursor Blink
Cls
Lcd "project name :"
Locate 2 , 1
Lcd "*digital luck*"
Waitms 1000
Cls
Lcd "doen by:"
Locate 2 , 1
Lcd " mainmicroi"
Waitms 1000
Cls
Lcd "ostad rahnema:"
Locate 2 , 1
Lcd "*mohandes*"
Waitms 1000
L = 1234
G = 3
T = 0
O = 0
K = 2
A = 1357
Maine:
Cls
Lcd "inter password"
Y = L
Mmain:
Do
Waitms 50
B = Getkbd()
If B < 12 Then
Goto Main
End If
Loop
Main:
Do
If B = 0 Then
Reset B
C = 1
Goto Main2
End If
If B = 4 Then
Reset B
C = 2
Goto Main2
End If
If B = 8 Then
Reset B
C = 3
Goto Main2
End If
If B = 1 Then
Reset B
C = 4
Goto Main2
End If
If B = 5 Then
Reset B
C = 5
Goto Main2
End If
If B = 9 Then
Reset B
C = 6
Goto Main2
End If
If B = 2 Then
Reset B
C = 7
Goto Main2
End If
If B = 6 Then
Reset B
C = 8
Goto Main2
End If
If B = 10 Then
Reset B
C = 9
Goto Main2
End If
If B = 11 Then
Reset B
C = 12
T = 3
Goto Main2
End If
If B = 7 Then
Reset B
C = 0
Goto Main2
End If
If B = 3 Then
Reset B
C = 11
O = 3
Goto Main2
End If
Loop
Main2:
If C = 11 Then
Goto Main7
End If
If C = 12 Then
Goto Main13
End If
If G = 3 Then
Locate 2 , 1
Lcd "*"
E = C
Decr G
Goto Mmain
End If
If G = 2 Then
Locate 2 , 2
Lcd "*"
F = C
Decr G
Goto Mmain
End If
If G = 1 Then
Locate 2 , 3
Lcd "*"
H = C
Decr G
Goto Mmain
End If
If G = 0 Then
Locate 2 , 4
Lcd "*"
I = C
G = 3
End If
Main3:
M = H * 10
N = F * 100
P = E * 1000
Q = M + I
R = N + Q
S = P + R
Goto Main7
Main8:
Do
If L = A And T = 2 Then
Goto Main13
End If
If L <> S And T = 1 Then
Goto Main13
End If
If L = S Then
Reset Portb.1
Goto Main4
End If
If L <> S Then
Set Portb.1
End If
Goto Main5
Loop
Main4:
Cls
Lcd "ok"
Set Portb.0
Waitms 100
Reset Portb.0
K = 2
L = Y
Goto Maine
Main5:
Do
If K = 0 Then
Goto Main6
Else
Cls
Lcd "your try"
Locate 1 , 10
Lcd K
Locate 2 , 9
Lcd "!alarm!"
Decr K
Goto Mmain
End If
Loop
Main6:
Cls
Lcd "int master pass"
Reset L
L = A
K = 0
Goto Mmain
Main7:
Do
Main11:
If O = 3 Then
L = A
Cls
Lcd "int master pass"
Decr O
Goto Mmain
End If
If O = 2 And L = S Then
Decr O
Cls
Lcd "int new password"
Goto Mmain
End If
If O = 1 Then
L = S
Cls
Lcd L
Waitms 100
Cls
Decr O
Goto Maine
End If
If O = 0 Then
Goto Main8
End If
If O = 2 And L <> S Then
Cls
Lcd "eror"
O = 3
Waitms 100
Goto Main11
End If
Loop
Main13:
Do
Main14:
If T = 3 Then
X = L
L = A
Cls
Lcd "int master pass"
Decr T
Goto Mmain
End If
If T = 2 And A = S Then
Decr T
Cls
Lcd "new master pass"
Goto Mmain
End If
If T = 1 Then
A = S
L = X
Cls
Lcd A
Waitms 100
Cls
Decr T
Goto Maine
End If
If T = 0 Then
Goto Main8
End If
If T = 2 And A <> S Then
Cls
Lcd "eror"
T = 3
Waitms 100
Goto Main14
End If
Loop
End 'end program
مراجع ومنابع:
1. bascom-avr helpfile –version 1.11a
2. کتاب مرجع کامل میکرو کنترل های avr .--انتشارات نص --نویسنده مظاهریان- پرتوی فر-بیانلو
3. کتاب ساختار میکرو کنترل های avr .-- نشر شیخ بهایی—نویسنده: مهندس علی سلیمیان
4. دیتا شیت های شرکت ATMEL مربوط به میکرو ATmega32
(mainpersia) دانشجوی سال آخر دوره کارشناسی الکترونیک
30 اذرپاییز سال1386 (از پروژه الکترونیک 3)
دیدگاه