دائرة قفل أمان كلمة المرور باستخدام لوحة مفاتيح 4 × 4 واردوينو

جرب أداة القضاء على المشاكل





في هذا المنشور ، سننشئ دائرة قفل أمان بكلمة مرور ، والتي يمكن الوصول إليها عن طريق كلمة مرور مكونة من 6 أرقام. لتكون أكثر دقة ، إنها كلمة مرور أبجدية رقمية.

أجهزة لهذا المشروع

سنستخدم لوحة مفاتيح 4x4 ، والتي تتكون من 0 إلى 9 قيم عشرية ، وحرفين خاصين '#' و '*' وحروف أبجدية من A إلى D. يمكن استخدام مجموعة هذه الأحرف ككلمة مرور.



Arduino هو عقل النظام ، حيث يتم ربط مرحل مع Arduino للتنشيط وإلغاء التنشيط ، عند طلب كلمة المرور الصحيحة. يتم استخدام مؤشرين LED هنا للإشارة إلى حالة نظام القفل.

إذا لم تكن معتادًا على لوحة المفاتيح 4x4 ، فيرجى الرجوع إلى مقالتي السابقة ، والتي تمت مناقشتها بشكل شامل أساسيات لوحة مفاتيح المصفوفة 4x4



يحتوي المشروع المقترح على تصميم أجهزة بسيط للغاية. إنها تتكون فقط من لوحة مفاتيح ومرحل واردوينو واثنين من مصابيح LED ، حتى أن المستجد في اردوينو يمكنه تحقيق ذلك بسهولة.

الجزء الوحيد الذي يصعب قليلاً في هذا المشروع هو الترميز ، فلا داعي للقلق من الرمز الوارد في هذا المشروع. يجب كتابة البرنامج بطريقة تجعله خادعًا ولا يمكن لأي مخترق اختراق النظام.

ولكن ، كن حذرًا إذا كشفت عن الأجهزة أو أنه من السهل الوصول إلى أجهزة هذا المشروع ، فيمكن اختراق التتابع بسهولة. لذا احتفظ بهذا المشروع في هيكل محمي جيدًا.

كيف تعمل

ملاحظة: يجب توصيل المقاوم المحدد الحالي 4.7 كيلو بقاعدة الترانزستور ، والذي لا يظهر في الرسم التخطيطي.

الآن ، دعونا نرى كيف تعمل دائرة قفل أمان كلمة مرور Arduino ، يرجى قراءة التعليمات الواردة أدناه بعناية ، من أجل تشغيل الدائرة.

مخطط الرسم البياني

دائرة قفل أمان كلمة مرور اردوينو باستخدام لوحة مفاتيح 4x4

إليك الشرحان التوضيحيان لكيفية واجهة لوحة المفاتيح و Arduino:

نتائج اختبار قفل أمان كلمة مرور اردوينو

• عند تشغيل الدائرة ، فإنها تطلب كلمة مرور ، يمكنك رؤيتها على الشاشة التسلسلية (الشاشة التسلسلية ليست إلزامية ولكن يمكن استخدامها لغرض الاختبار).

• أدخل كلمة المرور التي أدخلتها في البرنامج قبل تجميعها.

• أثناء الضغط على المفاتيح ، يومض مؤشر LED باللون الأخضر لمدة عُشر من الثانية ، مما يشير إلى أن المستخدم قد ضغط على بعض المفاتيح.

• بمجرد إدخال كلمة المرور المكونة من 6 أرقام ، اضغط على 'D' في لوحة المفاتيح التي تعمل بمثابة 'إدخال'. إذا كانت كلمة مرورك صحيحة ، يتم تنشيط المرحل ، ويضيء مؤشر LED الأخضر.

• لإلغاء تنشيط التتابع ، اضغط على 'C' في لوحة المفاتيح. عند القيام بذلك ، يتم إيقاف تشغيل مؤشر LED الأخضر ويتم إلغاء تنشيط الترحيل. لا يوجد مفتاح آخر يمكنه إلغاء تنشيط الترحيل.

• إذا كانت كلمة المرور التي أدخلها المستخدم غير صحيحة ، يضيء مؤشر LED الأحمر ويتعين على المستخدم الانتظار 30 ثانية للدخول في المحاولة التالية. عندما تنتهي الـ 30 ثانية ، ينطفئ مؤشر LED الأحمر ، لإعلام المستخدم بأن النظام جاهز للحصول على مدخلات من المستخدم.

• عند إلغاء تنشيط الترحيل بعد التنشيط الناجح ، من أجل تنشيط الترحيل مرة أخرى ، يحتاج المستخدم إلى إدخال كلمة المرور مرة أخرى والضغط على 'D'.

هذه حالة خاصة:

• عند إدخال كلمة المرور الصحيحة ، يتم تنشيط الترحيل وبعد الإلغاء الناجح للتفعيل ، عندما يضرب المستخدم أي ضغطة مفتاح خاطئة (ليست كلمة المرور الكاملة) ، يتعرف البرنامج على كلمة مرور غير صحيحة ويحتاج المستخدم إلى الانتظار لمدة 30 ثانية أخرى. إذا كان هذا خاطفًا ، فسيؤخر عدد المحاولات التي قام بها الخاطف.

• عند الضغط على ضغط المفتاح الصحيح في المحاولة الأولى ، عندها فقط يسمح بإدخال المفتاح التالي. هذا فقط لضغطات المفاتيح الأولى فقط وليس لجميع ضغطات المفاتيح المتتالية.

• شعار المفهوم الموضح أعلاه هو تأخير عدد المحاولات التي يقوم بها الخاطف.

كود البرنامج:

//---------------------------------Program Developed by R.Girish--------------------------//
#include
const byte ROWS = 4
const byte COLS = 4
char pass[] = '123ABC' // 6 digit password only (no less or no more)
int OP=10
int green=12
int red=11
char key1
char key2
char key3
char key4
char key5
char key6
char dumpkey
char keyOK
char ok[]='D'
char offkey
char off[]='C'
int z
char keys[ROWS][COLS] =
{
{'D','#','0','*'},
{'C','9','8','7'},
{'B','6','5','4'},
{'A','3','2','1'}
}
byte rowPins[ROWS] = {6,7,8,9} //connect to the row pinouts of the keypad
byte colPins[COLS] = {2,3,4,5} //connect to the column pinouts of the keypad
Keypad keypad = Keypad( makeKeymap(keys), rowPins, colPins, ROWS, COLS )
void setup()
{
Serial.begin(9600)
pinMode(OP,OUTPUT)
pinMode(green,OUTPUT)
pinMode(red,OUTPUT)
digitalWrite(OP,LOW)
}
void loop()
{
top:
Serial.println('')
Serial.println('[Press D = Enter]')
Serial.print('Enter the password: ')
key1=keypad.waitForKey()
if(key1 == pass[0])
{
digitalWrite(green,HIGH)
delay(100)
digitalWrite(green,LOW)
{
z=1
Serial.print('*')
goto A

}
}
آخر
{
غوتو تفريغ
}
إلى:
key2 = keypad.waitForKey ()
إذا (key2 == تمرير [1])
{
الكتابة الرقمية (أخضر ، عالي)
تأخير (100)
الكتابة الرقمية (أخضر ، منخفض)
{
ض = 2
Serial.print ('*')
اذهب إلى ب
}
}
آخر
{
غوتو تفريغ
}
ب:
key3 = keypad.waitForKey ()
إذا (key3 == تمرير [2])
{
الكتابة الرقمية (أخضر ، عالي)
تأخير (100)
الكتابة الرقمية (أخضر ، منخفض)
{
ض = 3
Serial.print ('*')
اذهب C
}
}
آخر
{
غوتو تفريغ
}
ج:
key4 = keypad.waitForKey ()
إذا (key4 == تمرير [3])
{
الكتابة الرقمية (أخضر ، عالي)
تأخير (100)
الكتابة الرقمية (أخضر ، منخفض)
{
ض = 4
Serial.print ('*')
غوتو د
}
}
آخر
{
غوتو تفريغ
}
د:
key5 = keypad.waitForKey ()
إذا (key5 == تمرير [4])
{
الكتابة الرقمية (أخضر ، عالي)
تأخير (100)
الكتابة الرقمية (أخضر ، منخفض)
{
ض = 5
Serial.print ('*')
اذهب إلى إي
}
}
آخر
{
غوتو تفريغ
}
يكون:
key6 = keypad.waitForKey ()
إذا (key6 == تمرير [5])
{
الكتابة الرقمية (أخضر ، عالي)
تأخير (100)
الكتابة الرقمية (أخضر ، منخفض)
{
ض = 6
Serial.print ('*')
اذهبوا حسنا
}
}
آخر
{
غوتو تفريغ
}
موافق:
keyOK = keypad.waitForKey ()
إذا (keyOK == ok [0])
{
الكتابة الرقمية (OP ، عالية)
الكتابة الرقمية (أخضر ، عالي)
Serial.println (')
Serial.println ('تم تنشيط الترحيل ، اضغط على' C 'لإلغاء التنشيط. n')
}
آخر
{
Serial.println (')
Serial.println (اضغط على 'D' للدخول)
اذهبوا حسنا
}
إيقاف:
offkey = keypad.waitForKey ()
إذا (offkey == off [0])
{
الكتابة الرقمية (OP ، منخفضة)
الكتابة الرقمية (أخضر ، منخفض)
Serial.println ('Relay Deactivated.n')
اذهب إلى الأعلى
}
آخر
{
Serial.println ('اضغط على 'C' لإلغاء التنشيط ')
غادر
}
أحمق:
إذا (ض == 0)
{
الكتابة الرقمية (أخضر ، عالي)
تأخير (100)
الكتابة الرقمية (أخضر ، منخفض)
Serial.print ('*')
dumpkey = keypad.waitForKey ()
Serial.print ('*')
dumpkey = keypad.waitForKey ()
Serial.print ('*')
dumpkey = keypad.waitForKey ()
Serial.print ('*')
dumpkey = keypad.waitForKey ()
Serial.print ('*')
dumpkey = keypad.waitForKey ()
Serial.print ('*')
dumpkey = keypad.waitForKey ()
Serial.print ('*')
غوتو الخطأ
}
إذا (ض == 1)
{
الكتابة الرقمية (أخضر ، عالي)
تأخير (100)
الكتابة الرقمية (أخضر ، منخفض)
Serial.print ('*')
dumpkey = keypad.waitForKey ()
Serial.print ('*')
dumpkey = keypad.waitForKey ()
Serial.print ('*')
dumpkey = keypad.waitForKey ()
Serial.print ('*')
dumpkey = keypad.waitForKey ()
Serial.print ('*')
dumpkey = keypad.waitForKey ()
Serial.print ('*')
غوتو الخطأ
}
إذا (ض == 2)
{
الكتابة الرقمية (أخضر ، عالي)
تأخير (100)
الكتابة الرقمية (أخضر ، منخفض)
Serial.print ('*')
dumpkey = keypad.waitForKey ()
Serial.print ('*')
dumpkey = keypad.waitForKey ()
Serial.print ('*')
dumpkey = keypad.waitForKey ()
Serial.print ('*')
dumpkey = keypad.waitForKey ()
Serial.print ('*')
غوتو الخطأ
}
إذا (ض == 3)
{
الكتابة الرقمية (أخضر ، عالي)
تأخير (100)
الكتابة الرقمية (أخضر ، منخفض)
Serial.print ('*')
dumpkey = keypad.waitForKey ()
Serial.print ('*')
dumpkey = keypad.waitForKey ()
Serial.print ('*')
dumpkey = keypad.waitForKey ()
Serial.print ('*')
غوتو الخطأ
}
إذا (ض == 4)
{
الكتابة الرقمية (أخضر ، عالي)
تأخير (100)
الكتابة الرقمية (أخضر ، منخفض)
Serial.print ('*')
dumpkey = keypad.waitForKey ()
Serial.print ('*')
dumpkey = keypad.waitForKey ()
Serial.print ('*')
غوتو الخطأ
}
إذا (ض == 5)
{
الكتابة الرقمية (أخضر ، عالي)
تأخير (100)
الكتابة الرقمية (أخضر ، منخفض)
Serial.print ('*')
dumpkey = keypad.waitForKey ()
Serial.print ('*')
غوتو الخطأ
}
خطأ:
Serial.println (')
Serial.print ('كلمة مرور خاطئة ، انتظر لمدة 30 ثانية.')
الكتابة الرقمية (أحمر ، عالي)
تأخير (10000)
تأخير (10000)
تأخير (10000)
الكتابة الرقمية (أحمر ، منخفض)
اذهب إلى الأعلى
}
// --------------------------------- برنامج من تطوير R.Girish --------- ----------------- //

ملاحظة: لتعيين كلمة المرور: char pass [] = '123ABC' // كلمة مرور مكونة من 6 أرقام فقط (ليس أقل أو لا أكثر)
قم بتغيير '123ABC' بكلمة المرور الخاصة بك ، داخل علامة التنصيص.

تأكد من أن كلمة المرور التي تم تعيينها في البرنامج تتكون من 6 أرقام فقط ، لا أقل أو لا أكثر ولكن ، بالضبط من 6 أرقام. وإلا فلن يعمل البرنامج بشكل صحيح.

إذا كانت لديك أي شكوك أخرى بخصوص دائرة قفل أمان كلمة المرور الموضحة ، فلا تتردد في نشرها من خلال تعليقاتك




زوج من: حلبة LED لمحاكاة شروق الشمس وغروب الشمس التالي: دائرة تحكم محرك بلوتوث