كيف تصنع نظام أتمتة المنزل الذكي باستخدام وحدة ESP32؟

في هذا العصر الحديث ، ينمو مفهوم التشغيل الآلي للمنزل بسرعة كبيرة. يتم تثبيت الأنظمة الذكية في كل مكان تقريبًا. Smart Home Systems هو مفهوم يتم فيه التحكم في جميع الأجهزة الكهربائية أو الأجهزة باستخدام جهاز تحكم عن بعد واحد. في هذه الأنظمة ، في معظم الأحيان ، يكون جهاز التحكم عن بعد تطبيقًا للهاتف المحمول. نظرًا لأن هاتف Android هو الأكثر شيوعًا بين الأشخاص ، فإن تطبيق android هو أفضل خيار للتحكم في جميع هذه الأجهزة.



أتمتة المنزل

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



كيف تتحكم في الأجهزة المنزلية من خلال WiFi؟

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



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

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



  • ESP32
  • اللوح
  • توصيل الأسلاك

الخطوة الثانية: دراسة المكونات

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

ESP32 هي لوحة تحكم دقيقة منخفضة الطاقة ومنخفضة التكلفة تحتوي على شبكة WiFi مدمجة ووحدة Bluetooth ثنائية الوضع. تم إنشاء وتطوير لوحة متحكم دقيق بواسطة أنظمة إسبرريف . تحتوي هذه اللوحة على مضخمات طاقة مدمجة ومضخمات استقبال منخفضة ومرشحات ومفاتيح هوائي. يتم تشغيله بواسطة كابل بيانات android ويمكن أن يوفر ما يصل إلى 3.3 فولت على الخرج. ينفذ ESP32 بروتوكول TCP / IP و 802.11 b / g / n / e / I لاتفاقية WLAN MAC الكاملة و Wi-Fi Direct بشكل خاص. هذا يعني أن ESP 32 يمكنه معالجة جزء كبير من أجهزة توجيه WiFi الموجودة هناك عند استخدامها في وضع المحطة (العميل). وبالمثل ، يمكنه إنشاء نقطة وصول مع 802.11 b / g / n / e / I الكامل. لا يدعم ESP32 أحدث تقنية BLE Bluetooth 4.2 فحسب ، بل إنه يدعم أيضًا تقنية Bluetooth الرائعة. إنه يعني بشكل أساسي أنه يمكنه معالجة هواتف / جداول Bluetooth القديمة والجديدة. إذا لم يكن لديك وحدة ESP32 ، فيمكنك أيضًا استخدام ESP8266 أو Node MCU. يمكن استخدام هذه اللوحات لأداء نفس المهمة إذا كانت متصلة بشبكة WiFi.

ESP32



وحدة الترحيل هي جهاز تبديل. يعمل في وضعين ، عادة مفتوحة (NO) و بشكل طبيعي مغلق (NC) . في وضع NO ، يتم كسر الدائرة دائمًا ما لم ترسل إشارة عالية إلى المرحل عبر Arduino. يتدهور وضع NC في الاتجاه الآخر ، تكون الدائرة دائمًا كاملة ما لم تقم بتشغيل وحدة الترحيل. تأكد من توصيل السلك الموجب لجهازك الكهربائي بوحدة الترحيل بالطريقة الموضحة أدناه.

تجميع دائرة وحدة الترحيل

الخطوة 3: مخطط الكتلة

مخطط كتلة

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

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

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

الآن بما أن لدينا رؤية واضحة لما نريد القيام به في هذا المشروع ، دعونا لا نضيع المزيد من الوقت ونبدأ في تجميع المكونات.

  1. خذ لوح التجارب وأصلح المتحكم ESP32 فيه. الآن ، خذ وحدتي الترحيل وقم بتوصيل Vcc والأرضية للوحدات النمطية بـ Vin والأرضي للوحة التحكم الدقيقة ESP32 بالتوازي. ربط في دبوس من وحدات الترحيل إلى pin34 و pin35 للوحة ESP32. سترى أن المرحلات تعمل الآن.
  2. قم بتوصيل الأجهزة المنزلية بوحدة الترحيل. تأكد من تطابق اتصالاتك مع الاتصالات الموضحة في الشكل في الخطوة 2.

الآن كما قمنا بتوصيل جزء الأجهزة في نظامنا. سنقوم بتطوير تطبيق android سيتم توصيله بقاعدة بيانات Firebase. سننشئ قاعدة البيانات وتطبيق android في الجزء 2 من هذه المقالة.

الخطوة الخامسة: بدء استخدام 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 ، قم بتثبيته مرة أخرى وإعادة ترجمة الكود. هذه المرة ، سيتم ترجمة التعليمات البرمجية الخاصة بك بنجاح.

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

الخطوة السادسة: فهم المدونة

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

1. في البداية ، يتم تضمين المكتبات بحيث يمكن توصيل لوحة ESP32 باتصال WiFi المحلي في المنزل أو المكتب. بعد ذلك ، يتم تحديد رابط لمشروع Firebase ومصادقة مشروع Firebase الخاص بك. ثم يتم تحديد اسم وكلمة مرور اتصال wifi المحلي الخاص بك بحيث يمكن توصيل ESP32 بشبكة Wifi. يتم تعريف بعض دبابيس ESP32 على أنها متصلة بوحدات الترحيل. وأخيرًا تم الإعلان عن متغير يقوم بتخزين بعض البيانات المؤقتة التي ستأتي من سحابة Firebase.

# تضمين // تضمين مكتبة للاتصال باتصال Wifi المحلي # تضمين // تضمين مكتبة للاتصال بقاعدة بيانات Firebase #define FIREBASE_HOST 'coma-patient.firebaseio.com' // تضمين رابط مشروع Firebase #define FIREBASE_AUTH 'UrzlDZXMBNRhN10K5i73 '// قم بتضمين مصادقة مشروع Firebase الخاص بك #define WIFI_SSID' abcd '// اسم اتصال WiFi لمنزلك أو مكتبك #define WIFI_PASSWORD' abcd '// كلمة مرور اتصال WiFi لمنزلك أو مكتبك int r1 = 34 ؛ // دبوس لتوصيل المرحل 1 int r2 = 35 ؛ // دبوس لتوصيل مرحل 2 درجة حرارة int ؛ // varabe لحمل البيانات

2. الإعداد باطل() هي وظيفة نقوم من خلالها بتهيئة دبابيس INPUT أو OUTPUT. تحدد هذه الوظيفة أيضًا معدل البث بالباود باستخدام Serial.begin () أمر. معدل الباود هو سرعة اتصال المتحكم الدقيق. تتم إضافة بعض أسطر التعليمات البرمجية هنا لتوصيل ESP32 باتصال wifi المحلي. ستحاول اللوحة الاتصال باتصال wifi المحلي وستقوم بطباعة 'اتصال'. في الشاشة التسلسلية. سيطبع 'متصل' عند إنشاء الاتصال. لمراقبة ذلك ، من الأفضل فتح الشاشة التسلسلية والتحقق من حالتها هناك.

إعداد باطل () {Serial.begin (115200) ؛ // ضبط معدل الباود // الاتصال بشبكة 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. حلقة فارغة() هي وظيفة تعمل بشكل متكرر في حلقة. في هذه الحلقة ، نكتب رمزًا يخبر لوحة التحكم الدقيق بالمهام التي يجب تنفيذها وكيف. لقد جلبنا البيانات ضد ضوء و تكييف من قاعدة البيانات وتخزينها في المتغيرين المؤقتين. ثم يتم تطبيق أربعة شروط لتبديل الجهازين وفقًا للجلب 0 أو 1 من قاعدة البيانات.

void loop () {// get value temp1 = Serial.println (Firebase.getFloat ('light')) ؛ // احصل على قيمة تبديل الضوء temp2 = Serial.println (Firebase.getFloat ('AC')) ؛ // الحصول على vaue لتبديل تأخير المروحة (1000) ؛ if (temp1 == 1 && temp2 == 1) {// لتشغيل الضوء والمروحة digitalWrite (r1، HIGH) ؛ digitalWrite (r2 ، عالية) ؛ } if (temp1 == 0 && temp2 == 1) {// لتشغيل المروحة وإطفاء الضوء digitalWrite (r1، LOW)؛ digitalWrite (r2 ، عالية) ؛ } if (temp1 == 1 && temp2 == 0) {// لإيقاف تشغيل المروحة وتشغيل الضوء digitalWrite (r1، HIGH) ؛ digitalWrite (r2 ، منخفض) ؛ } if (temp1 == 0 && temp2 == 0) {// لإيقاف تشغيل المروحة وإيقاف تشغيل الضوء digitalWrite (r1، LOW)؛ digitalWrite (r2 ، منخفض) ؛ }}

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

للذهاب إلى البرنامج التعليمي التالي انقر هنا