- المكونات المستخدمة:
- توصيل لوحة مفاتيح 4x4 مع Raspberry Pi باستخدام Multiplexing:
- سيركويت دسكريبتيون:
- شرح العمل:
- شرح البرمجة:
يعد الأمان مصدر قلق كبير في حياتنا اليومية ، وأصبحت الأقفال الرقمية جزءًا مهمًا من أنظمة الأمان هذه. هناك العديد من أنواع التقنيات المتاحة لتأمين مكاننا ، مثل أنظمة الأمان القائمة على PIR ، ونظام الأمان المستند إلى RFID ، وأجهزة إنذار أمان الليزر ، وأنظمة المصفوفة الحيوية ، إلخ.
لقد قمنا سابقًا ببناء قفل رقمي بكلمة مرور باستخدام Arduino وباستخدام 8051 ، سنقوم هنا ببناء هذا القفل الرقمي باستخدام Raspberry Pi مع كلمة مرور محددة بواسطة المستخدم. بمجرد تعيين كلمة المرور ، يمكن للمستخدم الوصول إلى الباب فقط باستخدام كلمة المرور الصحيحة.
إذا لم تكن معتادًا على Raspberry Pi ، فقد أنشأنا سلسلة من البرامج التعليمية لتعلم Raspberry Pi ، مع التفاعل مع جميع المكونات الأساسية وبعض المشاريع البسيطة للبدء بها ، تحقق.
المكونات المستخدمة:
- Raspberry Pi (مع بطاقة SD التمهيد)
- وحدة لوحة المفاتيح
- صفارة
- 16x2 LCD
- 10 كيلو وعاء
- حزمة المقاوم 10 كيلو (سحب)
- يؤدى
- 1 كيلو المقاوم
- لوح الخبز
- عربة CD / DVD كبوابة
- قوة 5 فولت
- سائق المحرك L293D
- بطارية 12 فولت
- توصيل الأسلاك
توصيل لوحة مفاتيح 4x4 مع Raspberry Pi باستخدام Multiplexing:
في هذه الدائرة ، استخدمنا تقنية Multiplexing لواجهة لوحة المفاتيح لإدخال كلمة المرور في النظام. نحن هنا نستخدم لوحة مفاتيح 4x4 متعددة الإرسال مع 16 مفتاحًا. عادةً إذا أردنا استخدام 16 مفتاحًا ، فسنحتاج إلى 16 دبوسًا للاتصال بـ Arduino ولكن في تقنية تعدد الإرسال ، نحتاج فقط إلى 8 دبابيس للتوصيل بـ 16 مفتاحًا. بحيث تكون طريقة ذكية لربط وحدة لوحة المفاتيح. تعرف على المزيد حول تقنية Multiplexing وعملها في هذا القفل الرقمي باستخدام 8051.
تعد تقنية تعدد الإرسال طريقة فعالة للغاية لتقليل عدد المسامير المستخدمة مع وحدة التحكم الدقيقة لتوفير الإدخال أو كلمة المرور أو الأرقام. يتم استخدام هذه التقنية بشكل أساسي بطريقتين - الأولى هي مسح الصفوف والأخرى هي مسح العمود. إذا استخدمنا مكتبة لوحة المفاتيح (#include
لكن هنا في هذا المشروع ، قمنا بتنفيذ طريقة مختصرة للترميز لنفس لوحة المفاتيح ، دون استخدام مكتبة لوحة المفاتيح. يرجى الاطلاع عليها في قسم البرمجة أدناه.
سيركويت دسكريبتيون:
دائرة قفل الباب الرقمي Raspberry Pi بسيطة للغاية والتي تحتوي على Raspberry Pi 3 ووحدة لوحة المفاتيح والجرس وعربة DVD / CD كبوابة وشاشة LCD. هنا يتحكم Raspberry Pi في العملية الكاملة مثل أخذ وحدة لوحة مفاتيح نموذج كلمة المرور ، ومقارنة كلمات المرور ، وقيادة الجرس ، وفتح / إغلاق البوابة وإرسال الحالة إلى شاشة LCD. لوحة المفاتيح تستخدم لإدخال كلمة المرور. يستخدم الجرس للإشارات ويتم تشغيله بواسطة ترانزستور NPN يحمل في ثناياه عوامل. تُستخدم شاشة LCD لعرض الحالة أو الرسائل عليها.
تتصل دبابيس العمود الخاصة بوحدة لوحة المفاتيح مباشرة بدبابيس GPIO pin 22 و 23 و 24 و 25 و Row المتصلة بـ 21 و 14 و 13 و 12 من دبابيس wringPi الخاصة بـ Raspberry Pi. A LCD 16X2 يرتبط التوت بي في وضع 4 بت. يتصل دبوس التحكم في شاشة LCD RS و RW و En مباشرة بـ GPIO pin 11 و GND و 10. تتصل دبابيس البيانات D4-D7 بأطراف GPIO 6 و 15 و 4 و 1. يتم توصيل صفارة واحدة في GPIO pin 8. ومحرك المحرك L293D متصل في GPIO pin 28 و 29 من Raspberry Pi. A بطارية 12 فولت متصل في دبوس 8 من L293D فيما يتعلق الأرض.
شرح العمل:
العمل في هذا المشروع بسيط. عندما يقوم المستخدم بتشغيل الكود في Raspberry Pi ، تعرض شاشة LCD بعض رسائل الترحيب وبعدها تظهر "A- Input Password" وفي السطر الثاني B- Change Passkey ". الآن يمكن للمستخدم تحديد اختياره بالضغط على A و B على لوحة المفاتيح.
الآن إذا أراد المستخدم فتح البوابة ، فعليه الضغط على "A" في لوحة المفاتيح ثم يطلب النظام كلمة المرور. كلمة المرور الافتراضية هي "1234". الآن يجب على المستخدم إدخال كلمة المرور وبعد هذا النظام سوف يتحقق من كلمة المرور سواء كانت صحيحة أم لا:
1. إذا أدخل المستخدم كلمة المرور الصحيحة ، فسيفتح النظام البوابة.
2. إذا قام المستخدم بإدخال كلمة مرور خاطئة ، فسيرسل النظام أمرًا إلى الجرس لإصدار صوت تنبيه ويعرض "تم رفض الوصول" على شاشة LCD.
لنفترض الآن أن المستخدم يريد تغيير كلمة المرور ، ثم يحتاج إلى الضغط على "B" في لوحة المفاتيح ثم سيُطلب من المستخدم "كلمة المرور الحالية" أو "مفتاح المرور الحالي". يحتاج المستخدم الآن إلى إدخال كلمة المرور الحالية ، ثم يتحقق النظام من صحتها ويقوم بإحدى المهام المحددة.
1. إذا أدخل المستخدم كلمة المرور الصحيحة ، فسيطلب النظام "كلمة مرور جديدة" ويمكن للمستخدم الآن تغيير كلمة المرور عن طريق إدخال كلمة مرور جديدة.
2. وإذا قام المستخدم بإدخال كلمة مرور خاطئة ، فسيقوم النظام بتشغيل الجرس ويعرض "كلمة مرور خاطئة: على شاشة LCD.
يحتاج المستخدم الآن إلى تكرار العملية بأكملها مرة أخرى لتغيير كلمة المرور.
في الأساس ، لا يعد فتح البوابة وإغلاقها سوى تدوير ساعة المحرك بحكمة وعكس اتجاه عقارب الساعة لفتح الباب وإغلاقه. بالنسبة لمشروع صغير ، يمكنك ببساطة إضافة محرك DC لفتح وإغلاق الباب. يمكننا أيضًا استخدام محرك سيرفو أو محرك متدرج ، لكننا نحتاج إلى تغيير الكود وفقًا لذلك.
علاوة على ذلك ، يمكنك استخدام قفل باب إلكتروني مناسب (متاح بسهولة عبر الإنترنت) بدلاً من عربة القرص المضغوط. يحتوي على مغناطيس كهربائي يحافظ على الباب مغلقًا عند عدم مرور تيار عبر القفل (دائرة مفتوحة) ، وعندما يمر بعض التيار عبره ، يتم فتح القفل ويمكن فتح الباب. سيتم تغيير الرمز وفقًا لذلك ، تحقق أيضًا من مراجعة المشروع المشتركة هذه: Arduino RFID Door Lock
شرح البرمجة:
البرمجة تشبه إلى حد كبير Arduino. تستخدم وظيفة Arduino الفئات ولكن هنا قمنا بعمل هذا الرمز ، باستخدام برمجة c ، بدون فئات. لقد قمنا أيضًا بتثبيت مكتبة wiringPi لـ GPIOs.
الآن نحتاج أولاً وقبل كل شيء إلى تضمين المكتبات المطلوبة ثم تحديد المسامير لشاشات الكريستال السائل والجرس والصمامات والمحرك.
#تضمن
بعد ذلك ، حدد دبابيس لصف وأعمدة لوحة المفاتيح وحدد مصفوفة لتخزين كلمات المرور وأرقام لوحة المفاتيح.
تمرير شار char pass1 = {'1'، '2'، '3'، '4'} ؛ كثافة العمليات ن = 0 ؛ صف الحرف = {21، 14، 13، 12} ؛ حرف كول = {22، 23، 24، 25} ؛ عدد الأحرف = {{'1'، '2'، '3'، 'A'}، {'4'، '5'، '6'، 'B'}، {'7'، '8'، ' 9 '،' C '}، {' * '،' 0 '،' # '،' D '}} ؛
بعد ذلك قمنا بكتابة بعض الوظائف لقيادة شاشة LCD:
يتم استخدام وظيفة LCDcmd الباطلة لإرسال الأمر إلى شاشة LCD ويتم استخدام وظيفة الكتابة الباطلة لإرسال البيانات إلى شاشة LCD.
يتم استخدام وظيفة الطباعة الفارغة لإرسال سلسلة إلى شاشة LCD.
void print (char * str) {while (* str) {write (* str)؛ str ++ ؛ }}
وظيفة باطل setCursor تستخدم لضبط موضع المؤشر في شاشة LCD.
setCursor باطلة (int x، int y) {int set = 0؛ إذا (y == 0) مجموعة = 128 + x ؛ إذا (y == 1) مجموعة = 192 + x ؛ lcdcmd (مجموعة) ؛ }
يتم استخدام وظيفة مسح الفراغ () لمسح شاشة LCD ويتم استخدام صفارة باطلة () لإصدار صوت صفير.
يتم استخدام وظيفة void gate_open () و void gate_stop () و void gate_close () لقيادة البوابة (CD Trolley)
void gate_open () {digitalWrite (m1، LOW)؛ الكتابة الرقمية (م 2 ، عالية) ؛ تأخير (2000) ؛ } void gate_stop () {digitalWrite (m1، LOW)؛ الكتابة الرقمية (م 2 ، منخفضة) ؛ تأخير (2000) ؛ } void gate_close () {digitalWrite (m1، HIGH)؛ الكتابة الرقمية (م 2 ، منخفضة) ؛ تأخير (2000) ؛ }
يتم استخدام الوظيفة المحددة لتهيئة شاشة LCD في وضع 4 بت.
البداية الباطلة (int x، int y) {lcdcmd (0x02) ؛ lcdcmd (0x28) ؛ lcdcmd (0x06) ؛ lcdcmd (0x0e) ؛ lcdcmd (0x01) ؛ }
ونظرا لوحة المفاتيح باطل () يتم استخدام الدالة لربط وحدة لوحة المفاتيح مع التوت بي مع 'طريقة قصيرة.
لوحة مفاتيح باطلة () {int i، j؛ كثافة العمليات س = 0 ، ك = 0 ؛ تأخير (2000) ؛ while (k <4) {for (i = 0؛ i <4؛ i ++) {digitalWrite (col، LOW)؛ لـ (j = 0؛ j <4؛ j ++) {if (digitalRead (row) == 0) {setCursor (x، 1)؛…………….
تحقق من جميع الوظائف في الكود الكامل أدناه ، الكود سهل وواضح.