كيف تتحكم في مكيف الهواء بهاتفك الذكي بدلاً من جهاز التحكم عن بُعد؟

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



التحكم في مكيف الهواء

كيفية إعداد جميع الأجهزة الطرفية الضرورية باستخدام ESP32؟

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



الخطوة 1: المكونات المستخدمة (الأجهزة)

  • ESP32
  • وحدة عرض MakerFocus I2C OLED
  • مقاوم يعتمد على الضوء
  • الضغط على زر التبديل
  • مستقبل الأشعة تحت الحمراء
  • 1 كيلو أوم المقاوم (x4)
  • BC 338 NPN الترانزستور
  • كابلات العبور
  • مستقبل TSOP
  • اللوح
  • شاحن أندرويد

الخطوة 2: المكونات المستخدمة (البرمجيات)

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



  • بيئة تطوير أندرويد
  • جافا JDK

الخطوة الثالثة: تثبيت Android Studio

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



  1. افتح لوحة التحكم وانقر فوق النظام والأمن .
  2. انقر فوق النظام.

    النظام

  3. انقر فوق وضع نظام متقدم ثم انقر فوق المتغيرات البيئية. إعدادات النظام المتقدمة

    إعدادات النظام المتقدمة

  4. في قسم System Variable ، انقر فوق المسار ثم انقر فوق تحرير. جديد تحرير المتغير البيئي سيظهر مربع.

    تعديل المسار



  5. اذهب الآن إلى ج: ملفات البرنامج جافا في جهاز الكمبيوتر الخاص بك. افتح مجلد JDK ، وانقر فوق مجلد bin ، ثم انسخ مسار هذا المجلد.

    مسار مجلد بن

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

    نسخة جافا

الآن بعد أن قمت بتثبيت Java JDK بنجاح على جهاز الكمبيوتر الخاص بك. دعنا الآن نثبت Android Studio على جهاز الكمبيوتر الخاص بك. تثبيت هذا البرنامج سهل للغاية. تحتاج إلى فتح الملف الذي تم تنزيله والنقر فوق التالي حتى يتم تثبيت البرنامج بالكامل.

الخطوة 4: الاتصال بـ Firebase

الآن بعد أن قمنا بتثبيت Android Studio ، دعنا نطلقه ونصنع مشروعًا جديدًا لربطه بقاعدة Firebase. للقيام بذلك ، اتبع الخطوات التالية.

  1. قم بتشغيل Android Studio وقم بإنشاء مشروع جديد من خلال النقر فوق نشاط فارغ .
  2. الآن قم بتسمية مشروعك باسم الكمبيوتر تحديد كوتلن كلغة ، وحدد الحد الأدنى لمستوى واجهة برمجة التطبيقات وفقًا لهاتفك المحمول.
  3. نظرًا لأننا سنستخدم الإنترنت للتحكم في دبابيس التوت. سنقوم بتعيين إذن في تطبيقنا للوصول إلى شبكة wifi المحلية. للقيام بذلك ، انتقل إلى app> manifests> AndroidManifest.xml وأضف الأمر التالي.

    إذن الإنترنت

  4. الآن ، انقر فوق n أدوات. ستظهر قائمة منسدلة اختر منها Firebase.

    اتصال Firebase

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

    مساعد Firebase

  6. تواصل على الاتصال بـ Firebase زر. سوف يأخذك إلى متصفح الويب الافتراضي. أولاً ، سيطلب منك تسجيل الدخول إلى حساب Gmail الخاص بك. ثم انقر فوق أضف Realtime Database إلى تطبيقك وقبول التغييرات.
  7. اذهب الآن إلى وحدة تحكم Firebase . هناك سترى مشروع تم بالفعل. يعني شعار android الموجود على أيقونة هذا المشروع أنه ينتمي بالفعل إلى تطبيق android.
  8. من طور القائمة التي تظهر على الجانب الأيسر من الشاشة ، حدد قاعدة البيانات. زر من إنشاء قاعدة بيانات سيظهر على اليمين. انقر فوق هذا الزر.
  9. ستظهر قائمة تطلب تعيين وضع قاعدة البيانات الخاصة بك. انقر فوق وضع الاختبار ثم انقر فوق ممكن .

    وضع الاختبار

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

    Realtime Firebase

  11. الآن انقر فوق قواعد علامة التبويب وتغيير التكوينات إلى صحيح . بمجرد الانتهاء من كل شيء ، انقر فوق ينشر .

    تغيير التكوينات

  12. شيء واحد عليك القيام به بخلاف توصيل Firebase ، هو تحديث إصدار قاعدة البيانات. لذلك ، انقر فوق انتقل إلى المستندات . انقر الآن على خطوط إرشاد واختر أدلة Android من القائمة التي تظهر على الشاشة. قم بالتمرير لأسفل حتى يظهر الجدول. ابحث عن Real-Time Database في هذا الجدول وابحث عن نسختها. في حالتي ، هو كذلك 19.1.0.

    الإصدار

  13. . انقر فوق مخطوطات Gradle ، قائمة على الجانب الأيسر من الشاشة. ثم حدد مبني. gradle (الوحدة: التطبيق). الآن في الكود ، ابحث عن إصدار قاعدة بيانات Real-Time واستبدله بالإصدار الجديد.

    إصدار Firebase

  14. الآن قم بمزامنة المشروع من خلال النقر على زر المزامنة الظاهر أعلى الشاشة.

الخطوة 5: عمل التخطيط

الآن ، نظرًا لأن تطبيق Android الخاص بنا متصل بقاعدة Firebase ، فلنقم بعمل تخطيط لتطبيقنا يستخدمه المستخدم لتشغيل الكمبيوتر أو إيقاف تشغيله. لعمل تخطيط ، انتقل إلى التطبيق> الدقة> التخطيط> activity_main.xml. حيث سنقوم بتصميم تخطيط. انسخ الكود الوارد أدناه لعمل عرض نصي.

 

سيبدو تخطيط تطبيقنا كما يلي:

تخطيط التطبيق

الخطوة السادسة: الشروع في العمل مع 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  airconditioner  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  airconditioner  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 Module.

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

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

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

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

#include #include #include #define FIREBASE_HOST 'coma-patient.firebaseio.com' #define FIREBASE_AUTH 'UrzlDZXMBNRhNdc5i73DRW10KFEuw8ZPEAN9lmdf' #define WIFI_SSID 'Firebase' عدد صحيح RECV_PIN = 19 ؛ IRrecv irrecv (RECV_PIN) ؛ نتائج decode_results ؛

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

إعداد باطل () {Serial.begin (115200) ؛ pinMode (RECV_PIN ، INPUT) ؛ irrecv.enableIRIn () ، // بدء المتلقي // الاتصال بشبكة 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) ، Firebase.enableClassicRequest (firebaseData، true) ؛ }

3. حلقة فارغة() هي وظيفة تعمل بشكل متكرر في حلقة. هنا يتحقق هذا الرمز مما إذا كانت القيم تأتي من المستشعر.

حلقة باطلة () {if (irrecv.decode (& results)) {Serial.println (results.value، HEX)؛ تفريغ (والنتائج) ؛ irrecv.resume () ؛ // تلقي القيمة التالية} تأخير (500) ؛ }

أربعة. تفريغ باطل () هي وظيفة تُستخدم لتحديد طراز جهاز التحكم عن بُعد الذي يرسل الإشارة إلى المستشعر أولاً. كما أنها تتخلص من بنية decode_results.

تفريغ باطل (decode_results * results) {int count = results-> rawlen؛ if (results-> decode_type == UNKNOWN) {Serial.print ('Unknown encoding:')؛ } else if (results-> decode_type == NEC) {Serial.print ('Decoded NEC:')؛ } else if (results-> decode_type == SONY) {Serial.print ('Decoded SONY:')؛ } else if (results-> decode_type == RC5) {Serial.print ('Decoded RC5:')؛ } else if (results-> decode_type == RC6) {Serial.print ('Decoded RC6:')؛ } to else if (results-> decode_type == PANASONIC) {Serial.print ('Decoded PANASONIC - Address:') ؛ Serial.print (النتائج-> panasonicAddress ، HEX) ؛ Serial.print ('القيمة:') ؛ } else if (results-> decode_type == JVC) {Serial.print ('Decoded JVC:')؛ } Serial.print (results-> value، HEX) ؛ Serial.print ('(') ؛ Serial.print (النتائج-> بت ، DEC) ؛ Serial.println ('بت)') ؛ Serial.print ('Raw (')؛ Serial.print (count، DEC)؛ Serial.print ('):')؛ لـ (int i = 0 ؛ i rawbuf [i] * USECPERTICK ، DEC) ؛ } else {Serial.print (- (int) results-> rawbuf [i] * USECPERTICK، DEC)؛ } Serial.print ('') ؛ } Serial.println ('') ؛ }

الخطوة الثامنة: تحضير الجهاز

بعد حرق الكود في ESP32 ، نحتاج إلى تجهيز الأجهزة وإرفاقها بالحائط أو بأي مكان آخر مناسب بالقرب من مكيف الهواء. اربط المكونات بلوح التجارب باتباع الرسم التخطيطي المعروض في الأعلى. بعد تجميع الدائرة ، قم بتشغيل وحدة ESP باستخدام شاحن Android. من الأفضل تصميم غلاف الجهاز في المنزل أو ببساطة وضع الجهاز داخل علبة Raspberry Pi.

الخطوة 9: جي إعطاء اللمسات الأخيرة

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

كان هذا كل شيء لليوم ، أتمنى أن تكون قد استمتعت بقراءة هذا المقال وبعد صنع النموذج الأولي الخاص بك للتحكم في مكيف الهواء في المنزل ، لا تنس مشاركة تجربتك!