جدول المحتويات:

ESP32 Smart Home Hub: 11 خطوة
ESP32 Smart Home Hub: 11 خطوة

فيديو: ESP32 Smart Home Hub: 11 خطوة

فيديو: ESP32 Smart Home Hub: 11 خطوة
فيديو: ESP32 HomeKit Tutorial | HomeSpan 2024, يونيو
Anonim
محور المنزل الذكي ESP32
محور المنزل الذكي ESP32
محور المنزل الذكي ESP32
محور المنزل الذكي ESP32
محور المنزل الذكي ESP32
محور المنزل الذكي ESP32
محور المنزل الذكي ESP32
محور المنزل الذكي ESP32

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

بفضل DFRobot و PCBGOGO.com لرعايتهما هذا المشروع!

لمزيد من المعلومات المتعمقة ، قم بزيارة Github repo:

اللوازم

  • DFRobot ESP32 FireBeetle

    www.dfrobot.com/product-1590.html

  • مستشعر DHT22

    www.dfrobot.com/product-1102.html

  • APDS9960 مستشعر الضوء والإيماءات

    www.dfrobot.com/product-1361.html

  • وحدة I2C 20x4 LCD

    www.dfrobot.com/product-590.html

  • شريط RGB LED تناظري

    www.dfrobot.com/product-1829.html

  • DRV8825 محركات السائر
  • قارئ بطاقة SD
  • NEMA17 السائر موتورز

الخطوة 1: الميزات

سمات
سمات
سمات
سمات
سمات
سمات

الميزة الرئيسية لهذه اللوحة هي ESP32 FireBeetle Development Board التي تتعامل مع جميع الاتصالات وقراءات أجهزة الاستشعار والمخرجات. هناك نوعان من محركات السائر التي تتحكم في اثنين من محركات السائر ثنائية القطب.

تم أيضًا كسر ناقل I2C للاستخدام مع مكونات مثل APDS9960 أو شاشة LCD. لقراءة درجة الحرارة ، هناك دبابيس مكسورة للاتصال بمستشعر DHT22 ، بالإضافة إلى مقاوم ضوئي لقراءة مستويات الإضاءة المحيطة.

يوجد دعم لشريط الضوء التناظري على اللوحة ، والذي يحتوي على ثلاث وحدات MOSFET لقيادة مصابيح LED.

الخطوة 2: ثنائي الفينيل متعدد الكلور

ثنائي الفينيل متعدد الكلور
ثنائي الفينيل متعدد الكلور
ثنائي الفينيل متعدد الكلور
ثنائي الفينيل متعدد الكلور
ثنائي الفينيل متعدد الكلور
ثنائي الفينيل متعدد الكلور
ثنائي الفينيل متعدد الكلور
ثنائي الفينيل متعدد الكلور

لقد بدأت عملية تصميم ثنائي الفينيل متعدد الكلور من خلال إنشاء مخطط تخطيطي في Eagle أولاً. نظرًا لأنني لم أتمكن من العثور على مكتبة ESP32 FireBeetle ، فقد استخدمت للتو رأسي دبوس 1x18 بدلاً من ذلك. بعد ذلك ، قمت بإنشاء دائرة إدارة طاقة يمكنها قبول 12 فولت من خلال مقبس أسطواني تيار مستمر وتحويله إلى 5 فولت لتشغيل المستشعرات و ESP32.

بعد الانتهاء من التخطيطي ، انتقلت إلى تصميم ثنائي الفينيل متعدد الكلور نفسه.

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

في حين أن Oshpark تصنع مركبات ثنائي الفينيل متعدد الكلور عالية الجودة ، فإن أسعارها مرتفعة للغاية. لحسن الحظ ، يصنع موقع PCBGOGO.com أيضًا ثنائي الفينيل متعدد الكلور رائعًا بسعر مناسب. تمكنت من شراء عشرة مركبات ثنائي الفينيل متعدد الكلور مقابل 5 دولارات فقط ، بدلاً من دفع 52 دولارًا مقابل ثلاث لوحات فقط من Oshpark.com.

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

المجسم
المجسم
المجسم
المجسم
المجسم
المجسم

بشكل عام ، كان تجميع اللوحة أمرًا سهلاً للغاية. لقد بدأت بلحام المكونات المثبتة على السطح ، ثم ربط موصل جاك البرميل والمنظم. بعد ذلك ، قمت بلحام رؤوس الدبوس لمكونات مثل محركات المحركات و FireBeetle.

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

الخطوة 4: نظرة عامة على البرمجة

أردت أن يكون رمز هذه اللوحة معياريًا وسهل الاستخدام. وهذا يعني وجود العديد من الفئات التي تتعامل مع وظائف محددة ، إلى جانب فئة غلاف أكبر تجمع بين الفئات الأصغر.

الخطوة 5: المدخلات

المدخلات
المدخلات
المدخلات
المدخلات
المدخلات
المدخلات

للتعامل مع المدخلات ، قمت بإنشاء فئة تسمى "Hub_Inputs" ، والتي تتيح للمحور المنزلي التواصل مع APDS9960 ، جنبًا إلى جنب مع إنشاء وإدارة الأزرار وواجهات اللمس السعوية. يحتوي على الوظائف التالية:

زر إنشاء

احصل إذا تم الضغط على الزر

احصل على عدد مرات الضغط على الزر

احصل على أحدث إيماءة

احصل على قيمة اللمس السعوية

يتم تخزين الأزرار كبنية ، بثلاث سمات: is_pressed و numberPresses و pin. يتم إرفاق كل زر بمقاطعة عند إنشائه. عندما يتم تشغيل هذه المقاطعة ، يتم تمرير مؤشر خدمة المقاطعة (ISR) (يُعطى كعنوان ذاكرة له في مجموعة الأزرار) ويزيد عدد مرات الضغط على الزر ، جنبًا إلى جنب مع تحديث قيمة is_pressed المنطقية.

قيم اللمس السعوية أبسط بكثير. يتم استرجاعها عن طريق تمرير دبوس اللمس إلى وظيفة touchRead ().

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

الخطوة 6: النواتج

النواتج
النواتج
النواتج
النواتج
النواتج
النواتج

يتميز محور المنزل الذكي بعدة طرق لإخراج المعلومات وتغيير الأضواء. هناك دبابيس تكسر ناقل I2C ، مما يسمح للمستخدمين بتوصيل شاشة LCD. حتى الآن ، يتم دعم حجم واحد فقط من شاشات الكريستال السائل: 20 × 4. باستخدام الوظيفة "hub.display_message ()" ، يمكن للمستخدمين عرض الرسائل على شاشة LCD عن طريق تمرير كائن سلسلة.

يوجد أيضًا رأس دبوس لتوصيل سلسلة من مصابيح LED التناظرية. استدعاء الوظيفة "hub.set_led_strip (r ، g ، b)" ، يحدد لون الشريط.

يتم تشغيل محركي السائر باستخدام زوج من لوحات القيادة DRV8825. قررت استخدام مكتبة BasicStepper للتعامل مع التحكم في المحركات. عندما يتم تمهيد اللوحة ، يتم إنشاء كائنين من السائر ، ويتم تمكين كلا المحركين. لخطوة كل محرك ، يتم استخدام وظيفة "hub.step_motor (motor_id ، الخطوات)" ، حيث يكون معرف المحرك إما 0 أو 1.

الخطوة 7: التسجيل

تسجيل
تسجيل
تسجيل
تسجيل
تسجيل
تسجيل

نظرًا لأن اللوحة بها العديد من أجهزة الاستشعار ، فقد أردت القدرة على جمع البيانات وتسجيلها محليًا.

لبدء التسجيل ، يتم إنشاء ملف جديد باستخدام "hub.create_log (اسم الملف ، الرأس)" ، حيث يتم استخدام الرأس لإنشاء صف ملف CSV يشير إلى الأعمدة. يكون العمود الأول دائمًا طابعًا زمنيًا في السنة شهر اليوم الساعة: الحد الأدنى: تنسيق الثانية. للحصول على الوقت ، تحصل وظيفة hub.log_to_file () على الوقت باستخدام وظيفة basic_functions.get_time (). يتم بعد ذلك تمرير هيكل tm time بالإشارة إلى وظيفة التسجيل ، جنبًا إلى جنب مع البيانات واسم الملف.

الخطوة 8: الجرس

صفارة
صفارة

ما فائدة لوحة إنترنت الأشياء إذا كنت لا تستطيع تشغيل الموسيقى؟ لهذا السبب قمت بتضمين الجرس بوظيفة تشغيل الأصوات. يبدأ استدعاء "hub.play_sounds (اللحن ، المدة ، الطول)" في تشغيل أغنية ، حيث يكون اللحن عبارة عن مجموعة من ترددات النغمات ، والمدة كمجموعة من فترات النوتة ، والطول مثل عدد النغمات.

الخطوة 9: تكامل إنترنت الأشياء الخارجي

تكامل إنترنت الأشياء الخارجي
تكامل إنترنت الأشياء الخارجي
تكامل إنترنت الأشياء الخارجي
تكامل إنترنت الأشياء الخارجي
تكامل إنترنت الأشياء الخارجي
تكامل إنترنت الأشياء الخارجي

يدعم المركز حاليًا خطافات الويب IFTTT. يمكن تشغيلها عن طريق استدعاء Hub_IoT.publish_webhook (عنوان url ، بيانات ، حدث ، مفتاح) أو وظيفة Hub_IoT.publish_webhook (url ، data). يؤدي هذا إلى إرسال طلب POST إلى عنوان URL المحدد مع إرفاق تلك البيانات ، إلى جانب اسم الحدث إذا لزم الأمر. لإعداد مثال لتكامل IFTTT ، قم أولاً بإنشاء تطبيق صغير جديد. ثم حدد خدمة webhook التي يتم تشغيلها عند تلقي طلب.

بعد ذلك ، اتصل بالحدث "high_temp" واحفظه. بعد ذلك ، حدد خدمة Gmail للجزء "هذا" ، واختر خيار "إرسال بريد إلكتروني إلى نفسي". ضمن إعداد الخدمة ، ضع "درجة الحرارة مرتفعة!" للموضوع ، ثم وضعت "درجة الحرارة المقاسة لـ {{Value1}} عند {{OccurredAt}}" ، والتي توضح درجة الحرارة المقاسة والوقت الذي تم فيه بدء الحدث.

بعد إعداده ، قم ببساطة بلصق عنوان URL الخاص بخطاف الويب الذي تم إنشاؤه بواسطة IFTTT ، ووضع "high_temp" في قسم الحدث.

الخطوة 10: الاستخدام

إستعمال
إستعمال
إستعمال
إستعمال
إستعمال
إستعمال
إستعمال
إستعمال

لاستخدام Smart Home Hub ، ما عليك سوى الاتصال بأي وظائف مطلوبة سواء في الإعداد () أو الحلقة (). لقد قمت بالفعل بوضع أمثلة على استدعاءات الوظائف ، مثل طباعة الوقت الحالي واستدعاء حدث IFTTT.

الخطوة 11: الخطط المستقبلية

يعمل نظام Smart Home Hub جيدًا لأتمتة المنزل البسيطة ومهام جمع البيانات. يمكن استخدامه لأي شيء تقريبًا ، مثل ضبط لون شريط LED ، ومراقبة درجة حرارة الغرفة ، والتحقق مما إذا كان الضوء قيد التشغيل ، ومجموعة كاملة من المشاريع المحتملة الأخرى. في المستقبل ، أود توسيع الوظائف أكثر. قد يشمل ذلك إضافة خادم ويب أكثر قوة واستضافة ملفات محلية وحتى Bluetooth أو mqtt.

موصى به: