DIY: إنشاء SmartLock لمنزلك يفتح فقط بهاتفك الذكي

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



سيكون هذا القفل منخفض التكلفة للغاية وسيعمل بشكل مثالي على نطاق صغير. ان تطبيق android سوف تكون هناك حاجة لتشغيل هذا القفل. الآن ، دعنا ننتقل إلى إعداد ESP32 ، وتثبيت الحزم الضرورية عليه وإجراء تغييرات معينة على الأجهزة!

قفل الباب التلقائي



دون إضاعة أي وقت ، فلنبدأ في دراسة المفاهيم المهمة والعمل على هذا المشروع.



كيفية جعل SmartLock يعمل بنظام Android؟

الخطوة 1: تجميع المكونات

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



  • ESP32
  • أسلاك العبور
  • أجهزة السيارات
  • مسامير
  • قفل
  • آلة الحفر

الخطوة الثانية: إنشاء التطبيق

نظرًا لأننا سنصنع قفلًا ذكيًا سيتم تشغيله بواسطة هاتف محمول ، نحتاج إلى تطوير تطبيق android يحتوي على زر. بالضغط على هذا الزر ، سنتمكن من فتح أو إغلاق القفل الذكي. في السابق ، قمنا بتطوير العديد تطبيقات android. لقد قمنا بالفعل بتطوير تطبيق يتكون من زر واحد فقط فيه. يستخدم هذا الزر لإرسال البيانات إلى قاعدة البيانات. إذا تم دفع '1' إلى قاعدة بيانات firebase ، فسيتم فتح قفل المفتاح وإذا تم دفع '0' إلى قاعدة البيانات هذه ، فسيتم إغلاق القفل.

يرجى الرجوع إلى مقالتنا المسماة إنشاء مفتاح تشغيل / إيقاف لاسلكي لجهاز الكمبيوتر الخاص بك للمساعدة في تطوير تطبيق Android الخاص بك والذي سيتم استخدامه لتشغيل القفل الذكي.

الخطوة 3: تجميع المكونات

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



خذ محرك سيرفو وقم بتوصيل Vcc والأرضي بـ Vcc والأرضي للوحة ESP على التوالي. قم بتوصيل دبوس PWM لمحرك سيرفو الخاص بك بالدبوس 34 الخاص بك لوحة ESP32 . نرى الآن أن هناك مقبض من نوع التروس على محرك سيرفو. قم بإخراج مقبض القفل عن طريق تدويره وإصلاح مقبض محرك التروس في القفل بمساعدة بعض المواد اللاصقة.

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

الخطوة 4: العمل

بما أننا نعرف الآن الفكرة الرئيسية وراء هذا المشروع ، فلنفهم كيف سيعمل هذا المشروع.

ESP32 هو قلب هذا المشروع. يتم توصيل محرك سيرفو بهذه اللوحة وهذا المتحكم الدقيق لديه اتصال بقاعدة بيانات firebase. عند الضغط على الزر في التطبيق لفتح القفل ، يتم الضغط على '1' في قاعدة بيانات Firebase وعندما يتم الضغط على الزر لإغلاق القفل ، يتم الضغط على '0' في قاعدة بيانات Firebase. تقرأ لوحة ESP هذه القيمة في قاعدة بيانات Firebase بشكل مستمر. طالما كان هناك 0 ، فإن ESP32 سيوجه محرك سيرفو للبقاء في موضعه الأولي. بمجرد دخول 1 إلى قاعدة النار ، ستقرأها لوحة ESP وتخبر محرك المؤازرة بإجراء دوران يفتح القفل.

الخطوة الخامسة: بدء استخدام ESP32

إذا لم تكن قد عملت على Arduino IDE من قبل ، فلا تقلق لأنه يتم عرض خطوة بخطوة لإعداد Arduino IDE أدناه.

  1. قم بتنزيل أحدث إصدار من Arduino IDE من اردوينو.
  2. قم بتوصيل لوحة Arduino بجهاز الكمبيوتر وافتح لوحة التحكم. انقر فوق الأجهزة والصوت. مفتوح الان الأجهزة والطابعة وابحث عن المنفذ الذي تتصل به اللوحة الخاصة بك. في حالتي هو كذلك COM14 لكنه يختلف في أجهزة الكمبيوتر المختلفة.

    البحث عن ميناء

  3. انقر فوق ملف ثم انقر فوق تفضيلات. انسخ الرابط التالي في ملف عنوان URL لمدير مجلس الإدارة الإضافي. ' https://dl.espressif.com/dl/package_esp32_index.json '

    التفضيلات

  4. الآن ، لاستخدام ESP32 مع Arduino IDE ، نحتاج إلى استيراد مكتبات خاصة تتيح لنا نسخ التعليمات البرمجية على ESP32 واستخدامها. هاتان المكتبتان مرفقتان في الرابط أدناه. لتضمين المكتبة ، اذهب إلى رسم> تضمين مكتبة> إضافة مكتبة ZIP . سيظهر مربع. ابحث عن مجلد ZIP على جهاز الكمبيوتر الخاص بك وانقر فوق 'موافق' لتضمين المجلدات.

    تضمين المكتبة

  5. اذهب الآن رسم> تضمين مكتبة> إدارة المكتبات.

    إدارة المكتبات

  6. سيتم فتح قائمة. في شريط البحث ، اكتب اردوينو جسون. ستظهر قائمة. تثبيت Arduino JSON بواسطة Benoit Blanchon.

    اردوينو جسون

  7. الآن انقر فوق أدوات. سوف تظهر القائمة المنسدلة. اضبط اللوحة على وحدة تطوير ESP.

    لوحة الإعداد

  8. انقر فوق قائمة الأداة مرة أخرى وقم بتعيين المنفذ الذي لاحظته في لوحة التحكم من قبل.

    منفذ الإعداد

  9. الآن قم بتحميل الكود المرفق في الرابط أدناه وانقر على زر التحميل لنسخ الكود على متحكم ESP32.

    رفع

حتى الآن عندما تقوم بتحميل الكود ، قد يحدث خطأ. هذا هو الخطأ الأكثر شيوعًا الذي قد يحدث إذا كنت تستخدم إصدارًا جديدًا من Arduino IDE و Arduino JSON. فيما يلي الأخطاء التي قد تراها على الشاشة.

في الملف المضمن من C:  Users  Pro  Documents  Arduino  libraries  IOXhop_FirebaseESP32-master / IOXhop_FirebaseESP32.h: 8: 0 ، من C:  Users  Pro  Desktop  smartHome  code  code.ino: 2: C :  Users  Pro  Documents  Arduino  libraries  IOXhop_FirebaseESP32-master / IOXhop_FirebaseStream.h: 14: 11: خطأ: StaticJsonBuffer هي فئة من ArduinoJson 5. يرجى الاطلاع على arduinojson.org/upgrade لمعرفة كيفية ترقية برنامجك إلى ArduinoJson الإصدار 6 StaticJsonBuffer jsonBuffer ؛ ^ في ملف مضمن من C:  Users  Pro  Documents  Arduino  libraries  IOXhop_FirebaseESP32-master / IOXhop_FirebaseESP32.h: 8: 0 ، من C:  Users  Pro  Desktop  smartHome  code  code.ino: 2: C:  Users  Pro  Documents  Arduino  libraries  IOXhop_FirebaseESP32-master / IOXhop_FirebaseStream.h: 65: 11: خطأ: StaticJsonBuffer هو فصل دراسي من ArduinoJson 5. يرجى الاطلاع على arduinojson.org/upgrade لمعرفة كيفية ترقية برنامجك إلى الإصدار 6 من ArduinoJson يعود StaticJsonBuffer (). parseObject (_data) ؛ ^ تم العثور على مكتبات متعددة لـ 'WiFi.h' المستخدمة: C:  Users  Pro  AppData  Local  Arduino15 packs  esp32  Hardware  esp32  1.0.2  libraries  WiFi غير مستخدم: C:  Program Files ( x86)  Arduino  libraries  WiFi استخدام مكتبة WiFi في الإصدار 1.0 في المجلد: C:  Users  Pro  AppData  Local  Arduino15 packs  esp32  Hardware  esp32  1.0.2  libraries  WiFi باستخدام المكتبة IOXhop_FirebaseESP32-master في المجلد: C:  Users  Pro  Documents  Arduino  libraries  IOXhop_FirebaseESP32-master (قديم) باستخدام مكتبة HTTPClient في الإصدار 1.2 في المجلد: C:  Users  Pro  AppData  Local  Arduino15 packs  esp32  Hardware  esp32  1.0.2  libraries  HTTPClient باستخدام مكتبة WiFiClientSecure في الإصدار 1.0 في المجلد: C:  Users  Pro  AppData  Local  Arduino15 packs  esp32  Hardware  esp32  1.0.2  libraries  WiFiClientSecure باستخدام مكتبة ArduinoJson في الإصدار 6.12.0 في المجلد: C:  Users  Pro  Documents  Arduino  libraries  ArduinoJson إنهاء الحالة 1 خطأ في التحويل البرمجي لوحدة ESP32 Dev للوحة.

لا داعي للقلق لأنه يمكننا التخلص من هذه الأخطاء باتباع بعض الخطوات البسيطة. تظهر هذه الأخطاء لأن الإصدار الجديد من Arduino JSON به فئة أخرى بدلاً من StaticJsonBuffer. هذه هي فئة JSON 5. لذلك يمكننا ببساطة التخلص من هذا الخطأ عن طريق تخفيض إصدار Arduino JSON من Arduino IDE. ببساطة اذهب إلى رسم> تضمين مكتبة> إدارة المكتبات. البحث عن Arduino JSON بواسطة Benoit Blanchon التي قمت بتثبيتها من قبل. قم بإلغاء تثبيته أولاً ثم قم بتعيين نسخته على 5.13.5. الآن بعد أن قمنا بتعيين إصدار قديم من Arduino JSON ، قم بتثبيته مرة أخرى وإعادة ترجمة الكود. هذه المرة ، سيتم ترجمة التعليمات البرمجية الخاصة بك بنجاح.

لتنزيل الكود ، انقر هنا.

الخطوة 6: الكود

رمز هذا المشروع بسيط للغاية ولكن مع ذلك ، يتم شرح بعض الأجزاء منه أدناه.

1. في بداية الكود ، سنقوم بتضمين ثلاث مكتبات. الأول هو تمكين Wifi على لوحة ESP ، والثاني هو تمكين ESP من استخدام محرك مؤازر والثالث هو توصيل لوحة ESP بقاعدة بيانات Firebase. بعد ذلك ، سنضيف مضيف Firebase والمصادقة واسم اتصال الإنترنت المحلي وكلمة المرور الخاصة به في الكود. بعد القيام بذلك ، قم بإنشاء كائن لاستخدام محرك سيرفو.

# تضمين // تضمين مكتبة لاستخدام WiFi # تضمين // تضمين مكتبة لمحرك مؤازر # تضمين // تضمين مكتبة للاتصال بـ Firebase #define FIREBASE_HOST 'xxxxxxxxxx' // استبدل xxxxxxxxxx بواسطة مضيف Firebase الخاص بك هنا #define FIREBASE_AUTH 'xxxxxxxxxx' / / استبدل xxxxxxxxxx بمصادقة firebase الخاصة بك هنا #define WIFI_SSID 'xx code، xxxxxxxx' // استبدل xxxxxxxxxx باسم اتصال Wifi الخاص بنا #define WIFI_PASSWORD 'xxxxxxxxxx' // استبدل xxxxxxxxxx بكلمة مرور wifi Servo myservo ؛ // إنشاء كائن لمحرك مؤازر int pos = 0 ؛ // إنشاء حالة int متغيرة ؛ // إنشاء متغير

2. الإعداد باطل() هي وظيفة يتم تشغيلها مرة واحدة فقط في البرنامج عند تشغيل لوحة وحدة التحكم الدقيقة أو الضغط على زر التمكين. يتم تعيين معدل البث بالباود في هذه الوظيفة. معدل الباود هو في الواقع سرعة الاتصال بالبت في الثانية التي يتواصل من خلالها المتحكم الدقيق مع الأجهزة الخارجية. يتم توصيل محرك سيرفو بالدبوس 34 من لوحة ESP. تمت كتابة الكود في هذه الوظيفة لتوصيل المتحكم الدقيق باتصال الإنترنت المحلي.

إعداد باطل () {Serial.begin (115200) ؛ // ضبط معدل الباود myservo.attach (34) ؛ // قم بتوصيل دبوس PWM للمحرك المؤازر بالدبوس 34 من ESP32 myservo.write (60) ؛ تأخير (1000) ؛ // الاتصال بشبكة wifi. WiFi.begin (WIFI_SSID ، WIFI_PASSWORD) ؛ Serial.println ('اتصال') ؛ while (WiFi.status ()! = WL_CONNECTED) {Serial.print ('.') ؛ تأخير (500) ؛ } Serial.println () ، Serial.print ('متصل:') ؛ Serial.println (WiFi.localIP ()) ؛ Firebase.begin (FIREBASE_HOST، FIREBASE_AUTH) ، }

3. حلقة فارغة() هي وظيفة يتم تشغيلها مرارًا وتكرارًا في حلقة. في هذه الوظيفة ، نخبر المتحكم الدقيق ، ما هي العمليات التي يجب تنفيذها وكيف. هنا ، تتم قراءة البيانات من Firebase وتخزينها في المتغير المسمى حالة . إذا كانت الحالة تحتوي على قيمة '0' ، فسيتم ضبط موضع محرك المؤازرة على 8 درجات. إذا كانت القيمة في الحالة المتغيرة تساوي '1' ، فسيتم ضبط موضع محرك سيرفو على 55 درجة.

حلقة فارغة () {state = Serial.println (Firebase.getFloat ('motor')) ؛ // اقرأ البيانات من firebase // إذا كانت الحالة '0' فسيتم إيقاف تشغيل محرك التيار المستمر إذا (state == '0') {myservo.write (8)؛ // ضبط موضع تأخير محرك سيرفو (1000) ؛ // انتظر حتى الإصدار الثاني من المسلسل. println ('Door Locked') ؛ } else if (state == '1') {myservo.write (55) ؛ // تعيين موضع جديد لتأخير المحرك المؤازر (1000) ؛ // انتظر ثانية واحدة Serial.println ('Door UnLocked') ؛ } // معالجة الخطأ إذا (Firebase.failed ()) {Serial.print ('setting / number failed:')؛ Serial.println (Firebase.error ()) ، إرجاع؛ } تأخير (1000)؛