يعد الأمان مصدر قلق كبير في حياتنا اليومية ، وأصبحت الأقفال الرقمية جزءًا مهمًا من أنظمة الأمان هذه. واحدة من هذه رمز القفل الرقمي وتقليدها في هذا المشروع باستخدام اردوينو مجلس الإدارة ولوحة المفاتيح المصفوفة.
مكونات
- اردوينو
- وحدة لوحة المفاتيح
- صفارة
- 16x2 LCD
- الترانزستور BC547
- المقاوم (1 ك)
- لوح الخبز
- قوة
- توصيل الأسلاك
في هذه الدائرة ، استخدمنا تقنية تعدد الإرسال لواجهة لوحة المفاتيح لإدخال كلمة المرور في النظام. نحن هنا نستخدم لوحة مفاتيح 4x4 التي تحتوي على 16 مفتاحًا. إذا أردنا استخدام 16 مفتاحًا ، فنحن بحاجة إلى 16 دبوسًا للاتصال بـ arduino ولكن في تقنية تعدد الإرسال ، نحتاج إلى استخدام 8 دبوس فقط لربط 16 مفتاحًا. بحيث تكون طريقة ذكية لربط وحدة لوحة المفاتيح.
تقنية مضاعفة الإرسال: تعد تقنية تعدد الإرسال طريقة فعالة للغاية لتقليل عدد المسامير المستخدمة مع وحدة التحكم الدقيقة لتوفير الإدخال أو كلمة المرور أو الأرقام. تُستخدم هذه التقنية أساسًا بطريقتين - الأولى هي مسح الصفوف والأخرى هي مسح القولون. ولكن في هذا المشروع القائم على اردوينو ، استخدمنا مكتبة لوحة المفاتيح ، لذلك لا نحتاج إلى عمل أي كود تعدد إرسال لهذا النظام. نحتاج فقط إلى استخدام مكتبة لوحة المفاتيح لتوفير المدخلات.
سيركويت دسكريبتيون
دارة هذا المشروع بسيطة للغاية والتي تحتوي على Arduino ووحدة لوحة مفاتيح وجرس وشاشة LCD. يتحكم Arduino في العمليات الكاملة مثل أخذ نموذج كلمة المرور لوحدة لوحة المفاتيح ، ومقارنة كلمات المرور ، وقيادة الجرس ، وإرسال الحالة إلى شاشة LCD. لوحة المفاتيح تستخدم لأخذ كلمة المرور. يستخدم الجرس للإشارات ويستخدم LCD لعرض الحالة أو الرسائل عليه. يتم تشغيل الجرس باستخدام ترانزستور NPN.
ترتبط دبابيس العمود الخاصة بوحدة لوحة المفاتيح مباشرة بالدبوس 4 و 5 و 6 و 7 ودبابيس الصف متصلة بـ 3 و 2 و 1 و 0 من اردوينو أونو. شاشة LCD مقاس 16 × 2 متصلة بـ arduino في وضع 4 بت. يتم توصيل دبوس التحكم RS و RW و En مباشرة بـ arduino pin 13 و GND و 12. ودبوس البيانات D4-D7 متصل بالدبابيس 11 و 10 و 9 و 8 من اردوينو. ويتم توصيل صفارة واحدة بالدبوس 14 (A1) من اردوينو من خلال ترانزستور BC547 NPN.
العمل
لقد استخدمنا EEPROM المدمج في اردوينو لحفظ كلمة المرور ، لذلك عندما نقوم بتشغيل هذه الدائرة لأول مرة ، قم بقراءة البيانات المهملة من EEPROM الخاص بـ Arduino ومقارنتها بكلمة مرور الإدخال وإعطاء رسالة على شاشة LCD تم رفض الوصول لأن كلمة المرور غير متطابقة. لحل هذه المشكلة ، نحتاج إلى تعيين كلمة مرور افتراضية لأول مرة باستخدام البرمجة الواردة أدناه:
لـ (int j = 0 ؛ j <4 ؛ j ++) EEPROM.write (j، j + 49) ؛
lcd.print ("Enter Ur Passkey:") ؛ lcd.setCursor (0،1) ؛ لـ (int j = 0 ؛ j <4 ؛ j ++) pass = EEPROM.read (j) ؛
سيؤدي هذا إلى تعيين كلمة المرور "1234" إلى EEPROM الخاص بـ Arduino.
بعد تشغيله لأول مرة ، نحتاج إلى إزالة هذا من البرنامج وإعادة كتابة الكود إلى arduino وتشغيله. الآن سوف يعمل نظامك بشكل جيد. وللمرة الثانية أصبحت كلمة المرور المستخدمة الآن "1234". يمكنك الآن تغييرها بالضغط على زر # ثم إدخال كلمة مرورك الحالية ثم إدخال كلمة مرورك الجديدة.
عندما تقوم بإدخال كلمة المرور الخاصة بك ، سيقارن النظام كلمة المرور التي تم إدخالها بكلمة المرور هذه المخزنة في EEPROM الخاص بـ arduino. في حالة حدوث تطابق ، ستعرض شاشة LCD عبارة "تم منح الوصول" وإذا كانت كلمة المرور خاطئة ، فستصدر شاشة LCD رسالة "تم رفض الوصول" وسيصدر الجرس صوت تنبيه مستمر لبعض الوقت. كما يصدر الجرس صوت تنبيه مرة واحدة كلما ضغط المستخدم على أي زر من لوحة المفاتيح.
وصف البرمجة
في الكود ، استخدمنا مكتبة لوحة المفاتيح لربط لوحة المفاتيح مع اردوينو.
#تضمن
البايت الثابت ROWS = 4 ؛ // أربعة صفوف const بايت COLS = 4 ؛ // أربعة أعمدة char hexaKeys = {{'1'، '2'، '3'، 'A'}، {'4'، '5'، '6'، 'B'}، {'7'، ' 8 '،' 9 '،' C '}، {' * '،' 0 '،' # '،' D '}}؛ بايت rowPins = {3، 2، 1، 0} ؛ // الاتصال بدبابيس صف من colPins بايت لوحة المفاتيح = {4 ، 5 ، 6 ، 7} ؛ // الاتصال بعمود pinouts من لوحة المفاتيح // تهيئة مثيل لفئة NewKeypad Keypad customKeypad = لوحة المفاتيح (makeKeymap (hexaKeys) ، rowPins ، colPins ، ROWS ، COLS) ؛
لقد قمنا بتضمين مكتبة LCD لواجهات LCD وللتواصل مع EEPROM قمنا بتضمين مكتبة EEPROM.h. ، ثم قمنا بتهيئة دبابيس متغيرة ومحددة للمكونات.
#define buzzer 15 LiquidCrystal lcd (13،12،11،10،9،8) ؛ كلمة مرور char ؛ تمرير شار ، تمرير 1 ؛ كثافة العمليات أنا = 0 ؛ char customKey = 0 ؛
ثم قمنا بتهيئة شاشة LCD وإعطاء التوجيه للمسامير في وظيفة الإعداد
إعداد باطل () {lcd.begin (16،2) ؛ pinMode (الصمام ، الإخراج) ؛ pinMode (الجرس ، الإخراج) ؛ pinMode (m11 ، الإخراج) ؛ pinMode (m12 ، الإخراج) ؛ lcd.print ("إلكتروني") ؛ lcd.setCursor (0،1) ؛ lcd.print ("قفل لوحة المفاتيح") ؛ تأخير (2000) ؛ lcd.clear () ؛ lcd.print ("Enter Ur Passkey:") ؛ lcd.setCursor (0،1) ؛
بعد ذلك نقرأ لوحة المفاتيح في وظيفة الحلقة
customKey = customKeypad.getKey () ؛ إذا تغير (المفتاح المخصص == '#') () ؛ if (customKey) {password = customKey ؛ lcd.print (مفتاح مخصص) ؛ زمارة()؛ }
ثم قارن كلمة المرور بحفظ كلمة المرور باستخدام طريقة مقارنة السلسلة.
إذا (i == 4) {delay (200) ؛ لـ (int j = 0 ؛ j <4 ؛ j ++) pass = EEPROM.read (j) ؛ if (! (strncmp (password، pass، 4))) {digitalWrite (led، HIGH)؛ زمارة()؛ lcd.clear () ؛ lcd.print ("مفتاح المرور مقبول") ؛ تأخير (2000) ؛ lcd.setCursor (0،1) ؛ lcd.print ("#. تغيير مفتاح المرور") ؛ تأخير (2000) ؛ lcd.clear () ؛ lcd.print ("أدخل مفتاح المرور:") ؛ lcd.setCursor (0،1) ؛ أنا = 0 ؛ الكتابة الرقمية (led ، منخفضة) ؛ }
هذه وظيفة تغيير كلمة المرور ووظيفة صفير الجرس
تغيير باطل () {int j = 0 ؛ lcd.clear () ؛ lcd.print ("UR Current Passk") ؛ lcd.setCursor (0،1) ؛ while (j <4) {char key = customKeypad.getKey () ؛ إذا (مفتاح) {pass1 = مفتاح ؛ lcd.print (مفتاح) ؛ صوت باطل () {digitalWrite (الجرس ، عالي) ؛ تأخير (20) ؛ الكتابة الرقمية (الجرس ، منخفضة) ؛ }