ملخص سريع
يرشدك هذا البرنامج التعليمي خلال إنشاء نظام قفل باب بكلمة مرور Arduino باستخدام لوحة مفاتيح مصفوفة 4×4 للإدخال، وشاشة LCD مقاس 16×2 I2C لتعليقات العرض، ومحرك سيرفو SG90 كآلية القفل. باختصار، سوف تتعلم مسح لوحة المفاتيح، ومنطق التحقق من كلمة المرور، والتحكم المؤازر، والأسلاك الكاملة لنظام أمان فعال.
تريد بناء العمل قفل الباب بكلمة مرور اردوينو من الصفر؟ في هذا البرنامج التعليمي، ستقوم بتوصيل لوحة مفاتيح مصفوفة 4×4 وشاشة LCD مقاس 16×2 I2C ومحرك سيرفو SG90 إلى Arduino Uno لإنشاء قفل باب إلكتروني فعال. تلتقط لوحة المفاتيح كلمة المرور الخاصة بك، وتعطيك شاشة LCD ملاحظات، ثم يقوم المؤازرة بقفل الباب أو فتحه. سواء كنت تتعلم Arduino لأول مرة أو تقوم بإنشاء مشروع أمان DIY لمنزلك أو مساحة العمل الخاصة بك، فهذا قفل باب لوحة المفاتيح اردوينو يغطي البرنامج التعليمي كل ما تحتاجه: الأسلاك، والتعليمات البرمجية الكاملة، وتفصيل التعليمات البرمجية سطرًا تلو الآخر، ونصائح الاختبار، وأفكار الترقية.
ما ستتعلمه
بنهاية هذا قفل كلمة مرور اردوينو مع شاشات الكريستال السائل البرنامج التعليمي، سوف تعرف ما يلي:
- الطريقة التي ترسل بها لوحة المفاتيح المصفوفية 4 × 4 إدخال كلمة المرور إلى Arduino.
- ما هو الدور الذي تلعبه شاشة I2C LCD في تقديم تعليقات مباشرة للمستخدم (المطالبات، والإدخال المقنع، ورسائل الخطأ).
- كيف يحاكي محرك سيرفو آلية القفل/الفتح المادية.
- الطريقة التي يعمل بها منطق التحقق من كلمة المرور في رسم Arduino.
- خطوات اختبار النظام بالكامل ومعايرته واستكشاف أخطائه وإصلاحها.
- طرق لتخصيص المشروع وترقيته لتضمين باب حقيقي أو إعداد منزل ذكي.
كيف يعمل قفل الباب بكلمة مرور الأردوينو
قبل أن نبدأ في توصيل الأسلاك، إليك نظرة عامة سريعة على كيفية ذلك قفل باب لوحة المفاتيح أجهزة اردوينو يعمل النظام. إن معرفة التدفق يجعل متابعة التعليمات البرمجية والأسلاك أسهل.
لوحة المفاتيح هو جهاز الإدخال وهي عبارة عن مصفوفة 4×4 تحتوي على 16 زرًا (الأرقام من 0 إلى 9 والأحرف من A إلى D والرموز * و#). عند الضغط على مفتاح، تقوم مكتبة لوحة المفاتيح بمسح خطوط الصف والعمود لاكتشاف الزر الذي تم الضغط عليه وإرجاع الحرف المقابل إلى Arduino.
شاشة I2C ال سي دي هو عرض الإخراج. على سبيل المثال، يعرض مطالبات مثل "أدخل كلمة المرور" عندما يكون الباب مغلقًا، ويعرض العلامات النجمية أثناء الكتابة (لإخفاء إدخالك)، ويعرض "الباب مفتوح" بعد فتح القفل بنجاح، ويعرض "كلمة المرور خاطئة" إذا كان الرمز غير صحيح. نظرًا لأنه يستخدم I2C، فإنه يحتاج فقط إلى سلكين للبيانات (SDA وSCL) بدلاً من ستة أو أكثر.
المحرك المؤازر هي آلية القفل المادي. عند إدخال كلمة المرور الصحيحة والتأكيد باستخدام #، يدور المؤازرة من الزاوية المغلقة (الافتراضي 0 درجة) إلى الزاوية غير المؤمنة (الافتراضية 90 درجة)، لمحاكاة فتح مزلاج الباب. يؤدي الضغط على * إلى إعادته إلى وضع القفل. إذا كنت جديدًا في مجال المحركات المؤازرة، فاطلع على موقعنا شرح محرك سيرفو للاردوينو لمقدمة أعمق.
منطق كلمة المرور وتدفق النظام
منطق كلمة المرور يتم التعامل معها بالكامل في رسم اردوينو. يقوم الرمز بتخزين سلسلة كلمة مرور محددة مسبقًا (الافتراضي "1234")، وبالتالي فإن المنطق كله في مكان واحد. عندما يقوم المستخدم بكتابة الأرقام، يقوم الرسم بإلحاقها بمخزن مؤقت للإدخال. عندما يضغط المستخدم على #، يقوم الرسم بمقارنة المخزن المؤقت بكلمة المرور المخزنة. إذا تطابقوا، يفتح الباب. وإلا ستظهر رسالة خطأ. يقوم المفتاح * بمسح الإدخال أو إعادة قفل الباب، ويعمل D كمفتاح مسافة للخلف.
هنا هو تدفق النظام الكامل:
- تعرض شاشة LCD "أدخل كلمة المرور و#".
- بعد ذلك، تقوم بكتابة الأرقام على لوحة المفاتيح. وفي الوقت نفسه، تقوم شاشة LCD بإخفاء كل رقم كعلامة النجمة (*).
- ثم اضغط # للإرسال. يقوم Arduino بمقارنة مدخلاتك بكلمة المرور المخزنة.
- إذا كان هذا صحيحًا، فسيتم تدوير المؤازرة إلى زاوية إلغاء القفل وستعرض شاشة LCD "الباب مفتوح - أدخل * للإغلاق".
- يظل الباب مفتوحًا حتى تضغط على *. ثم يعود المؤازرة إلى زاوية القفل.
- إذا كانت كلمة المرور خاطئة، فستعرض شاشة LCD عبارة "كلمة مرور خاطئة - حاول مرة أخرى" لمدة 1.5 ثانية، ثم تعود إلى مطالبة الإدخال.
المكونات المطلوبة (فاتورة المواد)
يوجد أدناه كل ما تحتاجه لبناء هذا قفل كلمة مرور اردوينو DIY. معظم هذه الأجزاء تأتي في مجموعات Arduino القياسية.
| المكوّن | الكمية | مطلوب / اختياري | الغرض | الملاحظات |
|---|---|---|---|---|
| أردوينو أونو (أو لوحة متوافقة) | 1 | مطلوب | متحكم رئيسي | تعمل Nano أو Mega أيضًا مع تغييرات طفيفة في الدبوس |
| لوحة مفاتيح مصفوفة 4 × 4 | 1 | مطلوب | إدخال كلمة المرور (8 دبابيس) | نوع الغشاء هو الأسهل في التركيب |
| شاشة LCD مقاس 16×2 مع محول I2C | 1 | مطلوب | ردود فعل المستخدم والمطالبات | تحقق من عنوان I2C: عادةً 0x27 أو 0x3F |
| محرك مؤازر SG90 | 1 | مطلوب | آلية القفل/الفتح المادية | استخدم مصدرًا خارجيًا بجهد 5 فولت لتشغيل موثوق |
| أسلاك التوصيل | ~20 | مطلوب | جميع الاتصالات | نوع M-M و M-F |
| اللوح | 1 | مطلوب | النماذج الأولية | نصف الحجم أو الحجم الكامل |
| مصدر طاقة خارجي 5 فولت (1 أمبير+) | 1 | مُستَحسَن | قوة مؤازرة موثوقة | قد تتسبب طاقة USB وحدها في إعادة التعيين |
| مزلاج باب صغير أو آلية قفل | 1 | اختياري | الضميمة التجريبية المادية | مزلاج مطبوع ثلاثي الأبعاد أو جاهز للاستخدام |
| الجرس (نشط أو سلبي) | 1 | اختياري | ردود فعل صوتية على كلمة مرور خاطئة | الاتصال بأي دبوس رقمي مجاني |
مخطط الدائرة والأسلاك
يوجد أدناه مخطط الدائرة لـ مشروع سيرفو للوحة المفاتيح LCD من Arduino، حتى تتمكن من المتابعة. تعتبر الأسلاك بسيطة لأن شاشة I2C LCD تحتاج فقط إلى خطي بيانات، وتتصل لوحة المفاتيح مباشرة بثمانية دبابيس رقمية.

اتصالات LCD I2C
| دبوس I2C لشاشات الكريستال السائل | دبوس الأردوينو | الملاحظات |
|---|---|---|
| SDA | A4 | خط بيانات I2C |
| SCL | A5 | خط الساعة I2C |
| VCC | 5 V | الطاقة |
| GND | GND | أرضي |
اتصالات لوحة المفاتيح 4 × 4
| دبوس لوحة المفاتيح | وظيفة | دبوس الأردوينو |
|---|---|---|
| دبوس 1 | الصف 1 | D9 |
| دبوس 2 | الصف 2 | D8 |
| دبوس 3 | الصف 3 | D7 |
| دبوس 4 | الصف 4 | D6 |
| دبوس 5 | العمود 1 | D5 |
| دبوس 6 | العمود 2 | D4 |
| دبوس 7 | العمود 3 | D3 |
| الدبوس 8 | العمود 4 | D2 |
اتصالات محرك سيرفو
| سلك مؤازر | يتصل بـ | الملاحظات |
|---|---|---|
| إشارة (برتقالي/أصفر) | D10 | دبوس قادر على PWM |
| VCC (أحمر) | 5 فولت (يوصى بالخارج) | هام: يسحب المؤازرة ما يصل إلى 500-700 مللي أمبير تحت الحمل |
| GND (بني/أسود) | GND | يجب أيضًا مشاركة أرضية مشتركة مع Arduino |
ملاحظة هامة للطاقة: نظرًا لأن جهاز SG90 يمكنه سحب تيار كافٍ، فقد يقوم بإعادة ضبط Arduino إذا تم تشغيله عبر USB فقط. للحصول على تشغيل موثوق، استخدم مصدر طاقة خارجي 5 فولت / 1 أمبير (أو أعلى) للمؤازرة. قم أيضًا بتوصيل أرضية العرض بأرضية Arduino حتى يتشاركوا في مرجع مشترك. إذا كنت قد عملت مع لدينا مشروع سيرفو عن بعد للاردوينو IR، تنطبق نفس نصيحة الطاقة هنا.
كود اردوينو لقفل الباب بكلمة مرور
يوجد أدناه رسم Arduino الكامل لهذا الغرض قفل الباب الالكتروني مع اردوينو. قبل التحميل، تأكد من تثبيت المكتبات التالية من خلال Arduino IDE Library Manager: الأسلاك, LiquidCrystal_I2C, لوحة المفاتيحو Servo.
الميزات المدعومة
باختصار، يدعم هذا المخطط الميزات التالية:
- إدخال كلمة المرور — أولاً، اكتب الأرقام على لوحة المفاتيح لإنشاء سلسلة الإدخال.
- مدخلات مقنعة — تعرض شاشة LCD العلامات النجمية بدلاً من الأرقام الفعلية للخصوصية.
- فتح على الرمز الصحيح — اضغط # للإرسال؛ إذا تطابق الإدخال مع كلمة المرور المخزنة، فسيتم إلغاء قفل المؤازرة.
- إعادة القفل بـ * — عندما يكون الباب مفتوحًا، اضغط على * لقفله مرة أخرى.
- مسافة للخلف مع د — اضغط D لحذف آخر حرف تم إدخاله.
- مسح الإدخال باستخدام * — عندما يكون القفل نشطًا، اضغط على * لمسح جميع الأرقام المدخلة والبدء من جديد.
- ردود فعل خاطئة حول كلمة المرور — تعرض شاشة LCD رسالة خطأ لمدة 1.5 ثانية قبل العودة إلى موجه الإدخال.
/**
Password Door Lock
*/
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#include <Keypad.h>
#include <Servo.h>
// LCD
#define LCD_ADDR 0x27
LiquidCrystal_I2C lcd(LCD_ADDR, 16, 2);
// Servo
#define SERVO_PIN 10
#define LOCK_ANGLE 0
#define UNLOCK_ANGLE 90
Servo lockServo;
// Keypad
const byte ROWS = 4;
const byte COLS = 4;
char keys[ROWS][COLS] = {
{'1','2','3','A'},
{'4','5','6','B'},
{'7','8','9','C'},
{'*','0','#','D'}
};
byte rowPins[ROWS] = {9, 8, 7, 6};
byte colPins[COLS] = {5, 4, 3, 2};
Keypad keypad = Keypad(makeKeymap(keys), rowPins, colPins, ROWS, COLS);
// Password
String PASSWORD = "1234";
String input = "";
bool doorUnlocked = false;
void lcdPromptLocked() {
lcd.clear();
lcd.setCursor(0,0);
lcd.print("Enter Password");
lcd.setCursor(0,1);
lcd.print("and #");
}
void lcdPromptUnlocked() {
lcd.clear();
lcd.setCursor(0,0);
lcd.print("Door is OPEN");
lcd.setCursor(0,1);
lcd.print("Enter * to close");
}
void lockDoor() {
lockServo.write(LOCK_ANGLE);
doorUnlocked = false;
lcdPromptLocked();
input = "";
}
void unlockDoor() {
lockServo.write(UNLOCK_ANGLE);
doorUnlocked = true;
lcdPromptUnlocked();
input = "";
}
void wrongPasswordMsg() {
lcd.clear();
lcd.setCursor(0,0);
lcd.print("Wrong Password");
lcd.setCursor(0,1);
lcd.print("Try again");
delay(1500);
lcdPromptLocked();
input = "";
}
void handleKey(char k) {
if (doorUnlocked) {
if (k == '*') lockDoor();
return;
}
if (k == '#') {
if (input == PASSWORD) unlockDoor();
else wrongPasswordMsg();
} else if (k == '*') {
input = "";
lcdPromptLocked();
} else if (k == 'D') {
if (input.length() > 0) input.remove(input.length()-1);
} else {
if (input.length() < 8) input += k;
}
lcd.setCursor(0,1);
lcd.print(String(input.length(), '*'));
}
void setup() {
lcd.init();
lcd.backlight();
lockServo.attach(SERVO_PIN);
lockDoor();
}
void loop() {
char key = keypad.getKey();
if (key) handleKey(key);
}
تفاصيل الكود: فهم رسم قفل الباب بكلمة مرور Arduino
يشرح هذا القسم الكود خطوة بخطوة. إذا كنت جديدًا في برمجة Arduino، فإن قراءة هذا التفصيل جنبًا إلى جنب مع الكود الكامل أعلاه سيساعدك على فهم كيفية عمل كل جزء بالضبط.
1) المكتبات والأشياء
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#include <Keypad.h>
#include <Servo.h>
// LCD
#define LCD_ADDR 0x27
LiquidCrystal_I2C lcd(LCD_ADDR, 16, 2);
// Servo
#define SERVO_PIN 10
#define LOCK_ANGLE 0
#define UNLOCK_ANGLE 90
Servo lockServo;
تتعامل هذه المكتبات الأربع معًا مع اتصالات I2C (الأسلاك)، شاشة LCD (LiquidCrystal_I2C)، مسح لوحة المفاتيح (لوحة المفاتيح) والتحكم المؤازر (Servo). ال شاشة LCD و قفل سيرفو يتم إنشاء الكائنات هنا واستخدامها خلال الرسم.
2) تكوين الأجهزة (الدبابيس والزوايا)
#تعريف LCD_ADDR 0x27
#تعيين SERVO_PIN 10
#تعريف LOCK_ANGLE 0
#تعريف UNLOCK_ANGLE 90
أولاً، LCD_ADDR هو عنوان I2C لحقيبة ظهر LCD الخاصة بك. تستخدم معظم الوحدات 0x27، ولكن بعض الاستخدام 0x3F. إذا ظلت شاشة LCD فارغة بعد التحميل، فحاول تغيير هذه القيمة. يمكنك تشغيل رسم الماسح الضوئي I2C للكشف عن العنوان الصحيح. SERVO_PIN يحدد دبوس Arduino الذي يقود إشارة المؤازرة. قفل_انجل و إلغاء القفل_التعشيق اضبط موضعي المؤازرة - اضبطهما ليتناسب مع النطاق الفعلي للمزلاج.
3) تخطيط لوحة المفاتيح والأسلاك
const byte ROWS = 4, COLS = 4;
char keys[ROWS][COLS] = { ... };
byte rowPins[ROWS] = {9, 8, 7, 6};
byte colPins[COLS] = {5, 4, 3, 2};
Keypad keypad = Keypad(makeKeymap(keys), rowPins, colPins, ROWS, COLS);
إن مفاتيح تقوم المصفوفة بتعيين شبكة الأزرار الفعلية 4 × 4 إلى الأحرف. يجب أن تتطابق دبابيس الصف (9، 8، 7، 6) ودبابيس الأعمدة (5، 4، 3، 2) مع الأسلاك الفعلية لديك، لذا تحقق مرة أخرى من ذلك مقابل دبوس لوحة المفاتيح لديك. إذا قامت المفاتيح بإرجاع أحرف خاطئة، فإن السبب الأكثر احتمالاً هو أن ترتيب دبوس الصف أو العمود لا يتطابق مع دبوس لوحة المفاتيح. ونتيجة لذلك، تقوم مكتبة لوحة المفاتيح بمعالجة الارتداد واكتشاف المفاتيح تلقائيًا.
4) حالة كلمة المرور والمتغيرات
سلسلة PASSWORD = "1234";
سلسلة الإدخال = "";
bool doorUnlocked = خطأ;
هنا، كلمة المرور هو الرمز الصحيح الذي يجب على المستخدم إدخاله. يمكنك تغييره إلى أي مجموعة من الأرقام والحروف تصل إلى 8 أحرف. المدخلات عبارة عن مخزن مؤقت يخزن ما كتبه المستخدم حتى الآن. في أثناء، الباب غير مغلق يتتبع ما إذا كان الباب مفتوحًا أم مغلقًا حاليًا. ملاحظة للمستخدمين المتقدمين: استخدام Arduino الخيط يمكن أن تتسبب الفئة الموجودة على وحدات التحكم الدقيقة الصغيرة (مثل ATmega328 الموجودة على Uno) في تجزئة الذاكرة خلال فترات تشغيل طويلة جدًا. بالنسبة لقفل الباب الذي يعمل على مدار الساعة طوال أيام الأسبوع، فكر في استخدام قفل ثابت شار مصفوفة بدلا من ذلك.
5) شاشات LCD المساعدة
void lcdPromptLocked() { ... } // "Enter Password" / "and #"
void lcdPromptUnlocked() { ... } // "Door is OPEN" / "Enter * to close"
تحدد هاتان الوظيفتان شاشتي LCD الرئيسيتين. خاصة، شاشات الكريستال السائلPromptLocked() يظهر "أدخل كلمة المرور / و#" عندما يكون الباب مقفلاً. شاشة LCDPromptUnlocked() يعرض "الباب مفتوح / أدخل * للإغلاق" عندما يكون الباب مفتوحًا. إن الاحتفاظ بها كوظائف منفصلة يجعل الكود أكثر وضوحًا وأسهل في التعديل.
6) مساعدو التحكم في الأبواب
void lockDoor() { ... }
void unlockDoor() { ... }
قفل الباب() يقوم أولاً بنقل المؤازرة إلى قفل_انجل، ويعيد تعيين الحالة إلى القفل، ويحدث شاشة LCD، ويمسح المخزن المؤقت للإدخال. على الجانب الآخر، فتح الباب () يفعل العكس - يدور المؤازرة إلى إلغاء القفل_التعشيق، يضبط الحالة على إلغاء القفل، ويعرض المطالبة "أدخل * للإغلاق".
7) ملاحظات على كلمة مرور خاطئة
void wrongPasswordMsg() { ... }
عندما لا تتطابق كلمة المرور المدخلة، تعرض شاشة LCD عبارة "كلمة مرور خاطئة / حاول مرة أخرى" لمدة 1.5 ثانية (تأخير (1500))، ثم يعود إلى الموجه المقفل ويمسح الإدخال. يمنح التأخير المستخدم وقتًا كافيًا لقراءة الرسالة قبل أن تختفي.
8) منطق الإدخال المركزي — HandleKey()
void handleKey(char k) { ... }
في الأساس، هذا هو الدماغ قفل الباب بكلمة مرور اردوينو. إليك بالضبط ما يحدث لكل ضغطة على المفتاح:
- إذا كان الباب مفتوحًا بالفعل: يتم قبول المفتاح * فقط، الذي يستدعي
قفل الباب(). يتم تجاهل جميع المفاتيح الأخرى من أجل السلامة. - # (يُقدِّم): يقارن
المدخلاتالمخزن المؤقت لكلمة المرور. إذا تطابقوا، يفتح الباب. وإلا، فستظهر رسالة كلمة المرور الخاطئة. - * (واضح): أثناء القفل، يؤدي الضغط على * إلى مسح جميع الأرقام المدخلة وإعادة ضبط شاشة LCD، مما يسمح للمستخدم بالبدء من جديد.
- د (مسافة للخلف): يزيل الحرف الأخير من المخزن المؤقت للإدخال. وهذا مفيد، على سبيل المثال، إذا قمت بإجراء خطأ مطبعي. سبب اختيار D هو أنه الحرف الأخير من مفتاح لوحة المفاتيح 4 × 4 ويتم وضعه بشكل حدسي في المنطقة اليمنى السفلية.
- أي مفتاح آخر (الأرقام، A، B، C): يتم إلحاقه بالمخزن المؤقت للإدخال طالما لم يتم الوصول إلى الحد الأقصى للطول (8 أحرف).
في نهاية مفتاح المقبض ()، يتم تحديث السطر الثاني من شاشة LCD لإظهار الإدخال المقنع — علامة نجمية واحدة لكل حرف يتم إدخاله. لا تظهر أرقام كلمة المرور الفعلية على الشاشة أبدًا، مما يضيف بعض الخصوصية.
9) الإعداد - التهيئة لمرة واحدة
void setup() {
lcd.init(); lcd.backlight();
lockServo.attach(SERVO_PIN);
lockDoor(); // start locked
// optional welcome screen...
lcdPromptLocked();
}
كما هو متوقع، setup() يعمل مرة واحدة عند تشغيل الاردوينو. أولاً، يقوم بتهيئة شاشة LCD، وتشغيل الإضاءة الخلفية، وتوصيل المؤازرة بالدبوس D10، ثم الاتصال قفل الباب() للبدء في وضع القفل. لذا فإن أول ما يراه المستخدم هو المطالبة "إدخال كلمة المرور".
10) حلقة - قراءة المفاتيح والرد
void loop() {
char key = keypad.getKey();
if (key) handleKey(key);
}
بعد ذلك، حلقة() تعمل الوظيفة بشكل مستمر. فإنه يستقصي لوحة المفاتيح باستخدام keypad.getKey(). عندما يتم الكشف عن الضغط على مفتاح، فإنه يمرر الحرف إلى مفتاح المقبض (). لأن كل المنطق يعيش فيه مفتاح المقبض ()، تظل الحلقة نظيفة وبسيطة. نظرًا لعدم وجود رمز حظر في الحلقة (باستثناء تأخير كلمة المرور الخاطئة)، يظل النظام مستجيبًا.
كيفية اختبار ومعايرة القفل
بمجرد الانتهاء من تحميل الكود وإكمال الأسلاك، اتبع هذه الخطوات للتحقق من أن كل جزء من النظام يعمل بشكل صحيح قبل تركيبه على الباب أو العلبة.
التحقق من إدخال لوحة المفاتيح
للبدء، افتح Arduino Serial Monitor (أضف Serial.begin(9600); in setup() و Serial.println(مفتاح); in حلقة() مؤقتا). ثم اضغط على كل مفتاح ثم تأكد من ظهور الحرف الصحيح. إذا لاحظت وجود مفاتيح مستبدلة أو مفقودة، فتحقق مرة أخرى من ترتيب أسلاك دبوس الصف والعمود.
التحقق من إخراج شاشات الكريستال السائل
بمجرد تشغيله، يجب أن تعرض شاشة LCD "إدخال كلمة المرور" على السطر الأول و"و#" على السطر الثاني. إذا كانت الشاشة فارغة، فاضبط مقياس جهد التباين الموجود على حقيبة الظهر I2C (برغي أزرق صغير في الخلف). ومع ذلك، إذا كانت الإضاءة الخلفية قيد التشغيل ولكن لم يظهر أي نص، فقد يكون عنوان I2C خاطئًا (جرب 0x3F بدلاً من 0x27).
اختبار اتجاه المؤازرة والزوايا
بعد ذلك، أدخل كلمة المرور الصحيحة واضغط على #. يجب أن تدور المؤازرة من 0 درجة إلى 90 درجة (أو أي شيء قمت بتعيينه قفل_انجل و إلغاء القفل_التعشيق). إذا كان المؤازرة تدور بطريقة خاطئة، قم بتبديل قيم قفل_انجل و إلغاء القفل_التعشيق في الكود. ثم قم بضبط هذه القيم بزيادات صغيرة (على سبيل المثال، حاول 10° و80°) حتى يتم تعشيق آلية المزلاج وفصلها بسلاسة.
تحقق من المحاذاة الميكانيكية
إذا كنت تقوم بتثبيت المؤازرة على مزلاج باب فعلي، فتأكد من محاذاة بوق المؤازرة مع مسمار المزلاج في موضع القفل أولاً. قم بتوصيل البوق المؤازر بعد ضبط المؤازرة قفل_انجل وبالتالي فإن وضع البداية صحيح. بعد ذلك، قم باختبار دورة إلغاء القفل وإعادة القفل عدة مرات للتأكد من أنها تعمل دون ربط.
اختبار مع قوة المؤازرة الخارجية
إذا كانت أجهزة المؤازرة ترتعش أو تتحرك بطريقة غير منتظمة أو تتسبب على سبيل المثال في إعادة ضبط Arduino، فقم بالتبديل إلى مصدر طاقة خارجي بجهد 5 فولت. قم بتوصيل السلك الموجب للإمداد بـ VCC الخاص بالمؤازرة، والسلك الأرضي للإمداد بـ GND الخاص بالمؤازرة و GND الخاص بـ Arduino (الأرضية المشتركة ضرورية). في الواقع، هذه هي المشكلة الأكثر شيوعًا التي يواجهها المبتدئون في مجال الأجهزة.
استكشاف المشكلات الشائعة وإصلاحها
إذا كان هناك شيء لا يعمل، فتحقق من قائمة المشكلات والإصلاحات الشائعة هذه.
مرجع سريع: المشاكل والحلول
| مشكلة | السبب المحتمل | حل |
|---|---|---|
| تظل شاشة LCD فارغة تمامًا | عنوان I2C خاطئ أو التباين منخفض جدًا | قم بتشغيل رسم الماسح الضوئي I2C للعثور على العنوان الصحيح. اضبط مقياس جهد التباين الموجود في الجزء الخلفي من وحدة LCD. |
| الإضاءة الخلفية لشاشة LCD قيد التشغيل ولكن لا يوجد نص | عدم تطابق عنوان I2C | يتغير LCD_ADDR من 0x27 إلى 0x3F (أو العكس) وأعد التحميل. |
| لوحة المفاتيح لا تستجيب على الإطلاق | خطأ في الأسلاك أو تعيين دبوس خاطئ | تأكد من توصيل أسلاك لوحة المفاتيح الثمانية بمنافذ Arduino الصحيحة (D9 – D2). تحقق من ورقة بيانات دبوس لوحة المفاتيح. |
| تقوم المفاتيح بإرجاع أحرف خاطئة | يتم تبديل دبابيس الصف/العمود | عكس أو إعادة ترتيب RowPins و colPins صفائف في التعليمات البرمجية لتتناسب مع الأسلاك المادية الخاصة بك. |
| توتر المؤازرة أو إعادة ضبط Arduino | طاقة غير كافية من USB | استخدم مصدر طاقة خارجي 5 فولت / 1 أمبير للمؤازرة. ربط الأسباب معا. |
| المؤازرة تدور في الاتجاه الخاطئ | يتم تبديل زوايا القفل وفتح القفل | مبادلة قيم قفل_انجل و إلغاء القفل_التعشيق. |
| زاوية الفتح لا تفتح المزلاج | قيمة الزاوية لا تتطابق مع الآلية | يُعدِّل إلغاء القفل_التعشيق بزيادات قدرها 5-10 درجات حتى ينفك المزلاج. |
| كلمة المرور الصحيحة تظهر دائمًا "خاطئة" | الأحرف الزائدة في الإدخال أو الخطأ المطبعي في كلمة المرور | طباعة المدخلات متغير إلى Serial Monitor للتحقق مما تتم مقارنته فعليًا. |
| السيرفو يعمل مرة واحدة ثم يتوقف | انقطاع التيار الكهربائي عن سحب الطاقة | قم بإضافة مكثف بسعة 470 ميكروفاراد عبر خطوط الطاقة المؤازرة، أو استخدم مصدر طاقة أقوى. |
| خطأ في الترجمة: لم يتم العثور على المكتبة | المكتبات غير مثبتة | قم بتثبيت LiquidCrystal_I2C وKeypad وServo من خلال Arduino IDE Library Manager. |
قم بتخصيص وترقية قفل باب كلمة مرور Arduino الخاص بك
الإصدار الأساسي يعمل، ولكن هناك مجال كبير للتوسيع. فيما يلي بعض أفكار الترقية العملية.
ترقيات البرمجيات
- تغيير كلمة المرور: ببساطة قم بتحرير
كلمة المرورمتغير في الكود (على سبيل المثال،سلسلة كلمة المرور = "6789"؛). استخدم أيضًا مزيجًا من الأرقام والحروف A وB وC للحصول على رمز أقوى. - كلمة المرور المخزنة في EEPROM: قم أيضًا بحفظ كلمة المرور في Arduino EEPROM حتى ينجو من دورات الطاقة. يمكنك إضافة وضع "تغيير كلمة المرور" الذي يتم تشغيله بالضغط على A، حيث يقوم المستخدم بإدخال كلمة المرور القديمة، ثم كلمة المرور الجديدة.
- القفل بعد المحاولات الفاشلة: أضف عدادًا يعطل الإدخال لمدة 30-60 ثانية بعد 3 محاولات غير صحيحة. وهذا يمنع تخمين القوة الغاشمة.
- رموز مستخدم متعددة: قم أيضًا بتخزين مجموعة من كلمات المرور الصالحة حتى يتمكن الأشخاص المختلفون من الحصول على رموز وصول مختلفة.
- مؤقت إعادة القفل التلقائي: أضف أيضًا مهلة تعمل على إعادة قفل الباب تلقائيًا إذا لم يضغط المستخدم على * خلال فترة زمنية محددة (على سبيل المثال، 10 ثوانٍ).
ترقيات الأجهزة
- ردود فعل الجرس: على سبيل المثال، قم بإضافة صفير نشط أو سلبي لإصدار صوت تنبيه عند كل ضغطة على المفتاح، وإصدار نغمة عند الإدخال الصحيح، وإصدار صوت إنذار عند حدوث فشل متكرر.
- التتابع وقفل الضربة الكهربائية: وبدلاً من ذلك، استبدل المؤازرة بوحدة مرحل تقود ضربة كهربائية أو قفل باب مغناطيسي للتثبيت الدائم. إذا كنت قد عملت مع المرحلات من قبل، لدينا برنامج تعليمي عن بعد ومؤازرة Arduino IR يغطي أساسيات التتابع.
- بطارية احتياطية: أضف أيضًا بطارية ليثيوم قابلة لإعادة الشحن مع وحدة شحن حتى يظل القفل فعالاً أثناء انقطاع التيار الكهربائي.
- ضبط ميكانيكا المؤازرة: اللحن
قفل_انجلوإلغاء القفل_التعشيقلتتناسب مع المزلاج المحدد الخاص بك. على سبيل المثال، تحتاج بعض المزالج إلى زاوية من 0 إلى 180 درجة بينما تحتاج أخرى إلى زاوية من 0 إلى 45 درجة فقط. - مصدر الطاقة الخارجي 5 فولت: يوصى دائمًا بالتثبيت الدائم. استخدم مصدر 5 فولت / 2 أمبير وقم بتوصيل جميع الأسباب معًا.
تحسينات أمنية
- فتح البلوتوث: أضف وحدة بلوتوث HC-05 بحيث يمكن أيضًا فتح الباب من خلال تطبيق الهاتف الذكي. انظر لدينا البرنامج التعليمي لوحدة البلوتوث Arduino HC-05 لتعليمات الأسلاك والاقتران.
- الوصول إلى RFID: على سبيل المثال، أضف قارئ RFID (مثل RC522) إلى جانب لوحة المفاتيح للمصادقة الثنائية - البطاقة بالإضافة إلى كلمة المرور.
- تسجيل البيانات: على سبيل المثال، محاولات الوصول إلى السجل (مع الطوابع الزمنية من وحدة DS3231 RTC) إلى بطاقة SD لمسار التدقيق.
- كشف العبث: أضف أيضًا مستشعر اهتزاز أو مفتاح قصب مغناطيسي لاكتشاف محاولات الدخول القسري وإطلاق إنذار.
- الاتصالات المشفرة: بالنسبة للإصدارات المتقدمة، قم بتشفير قناة اتصال Bluetooth أو Wi-Fi لمنع التعرف على كلمة المرور.
الأسئلة المتداولة (الأسئلة الشائعة)
قفل الباب بكلمة مرور Arduino هو نظام إلكتروني للتحكم في الوصول يستخدم وحدة تحكم Arduino الدقيقة ولوحة مفاتيح لإدخال الرمز وشاشة LCD لتعليقات المستخدم ومحرك مؤازر (أو مرحل) لقفل الباب أو فتحه فعليًا. إنه مشروع مبتدئ مشهور لأنه يجمع بين معالجة الإدخال وإخراج العرض والتحكم في المحركات في تصميم واحد.
بشكل عام، يعتبر Arduino Uno هو أفضل لوحة لهذا المشروع لأنه يحتوي على ما يكفي من المسامير الرقمية للوحة المفاتيح (8 دبابيس)، والمؤازرة (دبوس واحد)، وشاشة I2C LCD (2 دبابيس تناظرية تستخدم كـ I2C). سيعمل أيضًا Arduino Nano أو Mega. ومع ذلك، إذا كنت تستخدم Mega، فإن أطراف I2C مختلفة (SDA = طرف 20، SCL = طرف 21).
ابحث عن الخط سلسلة كلمة المرور = "1234"؛ في الرسم واستبدال "1234" بالكود الذي تريده على سبيل المثال، يمكنك استخدام الأرقام (0-9) والأحرف (A، B، C). الحد الأقصى لطول الإدخال هو 8 أحرف. ثم أعد تحميل الرسم.
أولاً، تحقق من عنوان I2C. تستخدم معظم وحدات LCD I2C 0x27، لكن بعضها يستخدم 0x3F. قم بتشغيل رسم الماسح الضوئي I2C لاكتشاف العنوان الصحيح، ثم قم بالتحديث LCD_ADDR في الكود. تحقق أيضًا من التباين عن طريق تدوير برغي مقياس الجهد الصغير الموجود في الجزء الخلفي من وحدة I2C. وأخيرًا، تحقق من اتصالات SDA (A4) وSCL (A5).
يمكن للمحركات المؤازرة أن تسحب ما بين 500 إلى 700 مللي أمبير تحت الحمل، وهو أكثر مما يمكن لمنفذ USB أو منظم Arduino الموجود على اللوحة توفيره بأمان. يؤدي انخفاض الجهد إلى إعادة ضبط Arduino أو ارتعاش المؤازرة. الحل هو تشغيل المؤازرة من مصدر طاقة خارجي 5 فولت مقدر بـ 1 أمبير أو أكثر. قم دائمًا بتوصيل أرضية المصدر الخارجي بأرضية Arduino.
نعم، ولكن بعد ذلك ستفقد مفاتيح الحروف A وB وC وD. نظرًا لأن الكود يستخدم D كمسافة للخلف و* كمسح/إعادة قفل، فستظل لوحة المفاتيح 3×4 تعمل لإدخال كلمة المرور الأساسية وإرسالها باستخدام #. سوف تحتاج إلى تحديث صفوف, كولس, مفاتيح المصفوفة والمصفوفات الدبوسية في الكود لتتناسب مع التخطيط 3 × 4.
استخدم مكتبة Arduino EEPROM لتخزين كلمة المرور في ذاكرة غير متطايرة. اكتب كلمة المرور إلى EEPROM عندما تتغير، ثم قم بقراءتها مرة أخرى setup(). بهذه الطريقة، تستمر كلمة المرور حتى لو فقدت اللوحة الطاقة. ومع ذلك، يجب أن تدرك أن EEPROM له عمر كتابة محدود (حوالي 100000 كتابة لكل خلية)، لذلك لا تكتب إلا عندما تتغير كلمة المرور فعليًا.
نعم. للحصول على مزلاج خفيف الوزن، يمكن لجهاز SG90 دفع أو تدوير مسمار بسيط مباشرة. بالنسبة للأقفال الأثقل، استبدل المؤازرة بوحدة مرحل متصلة بقفل كهربائي أو قفل بملف لولبي. في هذا الإعداد، يتم تشغيل المرحل بواسطة دبوس رقمي بدلاً من إشارة مؤازرة، ويكون تغيير الرمز صغيرًا (استبدل lockServo.write() مع digitalWrite()).
وباعتباره مشروعًا مستقلاً، فهو مناسب للتطبيقات ذات الأمان المنخفض مثل ورشة العمل أو خزانة المكتب المشتركة أو العرض التوضيحي لمشروع المصنع. يقوم Arduino بتخزين كلمة المرور بنص عادي في ذاكرته المحمولة، ولا يقوم النظام بتشفير إدخال لوحة المفاتيح. للحصول على مستوى أعلى من الأمان، قم بإضافة آلية تأمين بعد عدة محاولات فاشلة، واستخدم EEPROM مع تدفق تغيير كلمة المرور، وفكر في إضافة عامل مصادقة ثانٍ مثل RFID أو Bluetooth.
تحتاج إلى أربع مكتبات: الأسلاك (مضمن مع Arduino IDE بشكل افتراضي)، LiquidCrystal_I2C (بقلم فرانك دي براباندر)، لوحة المفاتيح (بواسطة مارك ستانلي وألكسندر بريفيج)، و Servo (مضمن مع Arduino IDE بشكل افتراضي). قم بتثبيتها من خلال قائمة Arduino IDE: رسم → تضمين المكتبة → إدارة المكتبات، ثم ابحث عن كل اسم.
نعم، على سبيل المثال، أضف وحدة Bluetooth HC-05 أو HC-06 متصلة بمنافذ Arduino التسلسلية (أو استخدم SoftwareSerial على منافذ أخرى). يمكنك بعد ذلك إرسال أمر إلغاء القفل من تطبيق الهاتف الذكي. للحصول على دليل كامل حول إعداد Bluetooth باستخدام Arduino، راجع موقعنا البرنامج التعليمي الكامل لوحدة البلوتوث HC-05/HC-06.
على لوحة المفاتيح القياسية 4×4، على لوحة المفاتيح القياسية، توجد مفاتيح الحروف A وB وC وD في العمود الأيمن. نظرًا لأن الأرقام و# و* لها أدوار محددة بالفعل (الإدخال، الإرسال، المسح/إعادة القفل)، فإن D هو المفتاح المتبقي الأكثر ملاءمة للمسافة للخلف. وبدلاً من ذلك، يمكنك إعادة تعيينه لأي مفتاح غير مستخدم عن طريق تغيير الشرط في مفتاح المقبض ().
الموارد والمشاريع القادمة
فيما يلي بعض الموارد وأفكار المشاريع التي تعتمد على ما تعلمته في هذا البرنامج التعليمي.
موارد المشروع
- شرح بالفيديو: شاهد البناء الكامل والعرض التوضيحي في موقعنا يوتيوب فيديو تعليمي.
- مكتبة LiquidCrystal_I2C: مستودع GitHub للتوثيق والأمثلة.
- مكتبة لوحة المفاتيح: وثائق ملعب اردوينو للحصول على الميزات المتقدمة والتكوينات المخصصة.
دروس OmArTronics ذات الصلة
- التحكم في محرك سيرفو باستخدام عصا التحكم وشاشة OLED - تعرف على المزيد حول التحكم المؤازر وإخراج العرض.
- Arduino IR Remote LED وباب مؤازر (دليل DIY) - مشروع آخر للتحكم في الوصول باستخدام جهاز التحكم عن بعد بالأشعة تحت الحمراء بدلاً من لوحة المفاتيح.
- ملكنا البرنامج التعليمي لوحدة البلوتوث HC-05/HC-06 - الأساس لإضافة فتح Bluetooth إلى قفل الباب الخاص بك.
- رادار اردوينو مع مستشعر بالموجات فوق الصوتية ومحرك سيرفو - مشروع مؤازر آخر يقوم بتدريس ميكانيكا المسح وتكامل أجهزة الاستشعار.
مشاريع المتابعة المقترحة
- قفل باب بلوتوث: قم بدمج قفل لوحة المفاتيح هذا مع وحدة HC-05 حتى تتمكن من فتح القفل عبر الهاتف عندما تكون يديك مشغولتين.
- التحكم في الوصول RFID: قم بإضافة قارئ RC522 RFID للدخول المعتمد على البطاقة إلى جانب لوحة المفاتيح.
- لوحة الوصول للمنزل الذكي: قم بدمج هذا القفل مع وحدة التتابع، ESP8266/ESP32 Wi-Fi، ولوحة القيادة السحابية للمراقبة والتحكم عن بعد.
- نظام أمان متعدد المناطق: قم بالتوسيع إلى أبواب متعددة باستخدام Arduino Mega المركزي وقائمة LCD لإدارة المناطق.
الخاتمة
في هذا البرنامج التعليمي، قمت ببناء كاملة قفل الباب بكلمة مرور اردوينو باستخدام لوحة مفاتيح مصفوفة 4×4، وشاشة LCD مقاس 16×2 I2C، ومحرك سيرفو SG90. لقد قمت بتوصيل الدائرة، وتحميل المخطط الكامل، وتعلمت كيفية عمل كل جزء من الكود - بدءًا من مسح لوحة المفاتيح والإدخال المقنع إلى مقارنة كلمات المرور والتحكم المؤازر.
والنتيجة هي العمل قفل الباب الإلكتروني DIY الذي يطالب بكلمة مرور على شاشة LCD، ويقبل الإدخال من لوحة المفاتيح، ويفتح المؤازرة بالرمز الصحيح، ويعيد القفل عند الضغط على *. على طول الطريق، تعلمت كيفية استكشاف المشكلات الشائعة وإصلاحها مثل شاشات LCD الفارغة، والماكينات المزعجة، وعناوين I2C الخاطئة.
من هنا، يمكنك أيضًا ترقية المشروع باستخدام تخزين كلمة مرور EEPROM، أو جرس للتعليقات الصوتية، أو القفل بعد المحاولات الفاشلة، أو فتح الهاتف الذكي عبر Bluetooth، أو حتى مرحل يقود قفل كهربائي حقيقي. تحقق من الآخر لدينا دروس الاردوينو والروبوتات على OmArTronics للمزيد من أفكار المشاريع.
رأي واحد حول “Arduino Password Door Lock with Keypad and LCD”