مراقبة طابعة الثري دي

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

مقدمة

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

إذا كنت تفضل التعلم من خلال المشاهدة فإليك فيديو تعليمي يشرح كامل العملية بالتطبيق العملي

لذا ودون الإطالة في الحديث للننتقل للجانب العملي من المشروع

المكونات التي سنتحتاجها

قبل الغوص في التقاصيل لنتعرف على تفاصيل المكونات التي سنتحاجها في هذا المشروع

تثبيت منصة HOME ASSISTANT

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

في صفحة التعليمات الخاصة بمنصة Home Assistant يوجد عدة اساليب لعملية التثبيت ولكننا سنقوم بتثبيتها كنظام تشغيل مستقل وهي الطريقة الأسهل والتي يُنصح بها من قبل صفحة التعليمات نفسها.

لهذه العملية نحتاج البرنامج balnea-etcher وسنقوم بتحميله من موقعه الرسمي وتثبيت النسخة المتوافقة مع نظام التشغيل الخاص بك.

وعملية التثبيت سهلة جداً، فقط اتبع الخطوات التالية:

  • من الصفحة الخاصة بـ Home Assistant على GitHub قم بالتوجه لصفحة الإصدارات وتحميل الإصدار الأخير المتعلق بالرسبيري باي الإصدار الثالث أو الرابع بحسب اللوحة الموجودة لديك، في حالتي أنا قمت بتحميل الإصدار الرابع 64 بت.
  • انسخ الرابط
  • من داخل برنامج balena-etcher اضغط على Flash from URL ثم الصق الرابط
  • قم بتوصيل ذاكرة المايكرو إس دي بالكمبيوتر الخاص بك
  • اضغط select target وقم باختيار ذاكرة المايكرو إس دي
  • اضغط FLash

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

التوصيل عن طريق شبكة الواي فاي (إختياري)

إذا كنت تعاني من فوبيا الأسلاك وتكره منظر الكيابل الملقاة على الأرض في كل مكان، إذا أنت بحاجة لتثبيت إعدادات شبكة الواي فاي بدلاً من استخدام كيبل الإيثرنت، ولذلك تحتاج ذاكرة تخزين USB مع تنسيقها بصيغة fat32 أو NTFS أو EXT4، ويتم تسمية الذاكرة بـ CONFIG بحروف كبيرة، وبعد توصيلها بالكمبيوتر قم بعمل الخطوات التالية:

  • في المجلد الرئيسي قم بإنشاء مجلد جديد باسم network
  • داخله قم بإنشاء ملف نصي بالاسم my-network
  • قم بفتح هذا الملف بأي محرر نصوص وقم بلصق النص التالي بداخله
[connection]
id=my-network
uuid=72111c67-4a5d-4d5c-925e-f8ee26efb3c3
type=802-11-wireless

[802-11-wireless]
mode=infrastructure
ssid=MY_SSID
# Uncomment below if your SSID is not broadcasted
#hidden=true

[802-11-wireless-security]
auth-alg=open
key-mgmt=wpa-psk
psk=MY_SECRET_KEY

[ipv4]
method=auto

[ipv6]
addr-gen-mode=stable-privacy
method=autoCP2102 (square chip): driver

ثم بتغيير العبارة MY_SSID باسم شبكة الواي فاي الخاصة بك, وتغيير العبارة MY_SECRET_KEY بكلمة المرور الخاصة بشبكتك ثم بتوصيل ذاكرة الـ USB بأحد منافذ الـ USB في لوحة الراسبيري باي، ووصل كيبل الطاقة، وفي حال كانت الإعدادت المدخلة صحيحة سيتم تثبيت إعدادات الواي وسيتم توصيل اللوحة بالشبكة، عندها يمكنك فصل ذاكرة الـ USB.

تشغيل وإعداد Home Assistant

قبل محاولة الاتصال بـ Home Assistant باستخدام عنوان الآيبي سنحاول استخدام أحد اسماء النطاقات التي من العادة يتم تخصيصها له, جرب أحد الاثنين التاليين:

  • homeassistant.local:8123, أو
  • homeassistant:8123

إذا ظهرت واجهة Home assistant ذلك جيد, وإلا سيتطلب منا الأمر إيجاد عنوان الآيبي المخصص له من ضمن العناوين في الشبكة المحلية, ويمكن تحقيق ذلك إما عن طريق الدخول لإعدادات الموجه في الشبكة المحالية, أو باستخدام البرامج المخصصة لاستكشاف عنوان الآيبي مثل برنامج AngryIP والذي سيعرض كافة عناوين الآيبي في لكافة الأجهزة المتصلة بالشبكة المحالية.

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

في الخطوة التالية سيقوم Home Assistant بإجراء مسح على الشبكة المحالية للعثور على أي أجهزة ذكية قد تكون متصلة من السابق بالشبكة ويتم سؤالك بشأنها في حال أردت إضافتها على لوحة Home Assistant, بعد الانتهاء من كافة الإعدادات قم بالضغط على الزر Finish.

تثبيت منصة ESPHome

ياتي الـ ESPHome على شكل جزئين، جزء منه على شكل برنامج مضمن يتم تثبيته داخل لوحة ESP32-CAM والجزء الآخر يأتي على شكل منصة والتي تتلقي الإشارات من الجزء المضمن في اللوحة كما أن هذه المنصة تستخدم للتعديل في إعدادات الجزء المضمن في اللوحة وتحديثه ورفع التحديثات إليها، وواحدة من أساليب تثبيت منصة الـ ESPHome يتم عن طريق تثبيتها كإضافة داخل منصة الـ Home Assistant وهذه الطريقة هي بالضبط ما سنستخدمه هنا:

  • من داخل واجهة الـ home-assistant إضغط على Settings,ثم Add-on Store.
  • في خانة البحث، ابحث عن ESPHome, ثم اضغط Install.
  • انتظر حتى تتم عملية التثبيت, ثم قبل بتفعيل خاصية watchdog ثم اضغط start.
  • عندما تنتهي عملية التثبيت ويتم تشغيل المنصة يمكنك الدخول عليها من خلال الضغط على OPEN WEB UI

تثبيت البرنامج المضمن ESPHome

لأن لوحة esp32-cam لا يوجد بها دائرة إلكترونية مخصصة لبرمجتها، لذا نحتاج إلى دائرة إلكترونية خارجية لحرق البرنامج على لوحة الـ ESP32-Cam وبالإمكان استخدام أي من الدوائر الإلكترونية المخصصة لبرمجة المتحكمات الدقيقة مثل (CH341, CP2102)، ولكن في هذا الدرس سنستخدم Arduino Uno لنقل وكتابة ملف ESPHome إلى اللوحة ESP32-Cam بسبب وجود احتمالية كبيرة لوجود واحدة لديك الآن.

باستخدام كيابل توصيل اللوحات الإلكترونية أو ما تسمى (جمبرز) نحتاج إلى توصيل عدة توصيلات ما بين لوحة الأردوينو ولوحتنا esp32-cam، وكما ترى أدناه يوجد مخطط لهذه التوصيلات.

ESP32-CAM arduino wiring

لتفعيل وضعية البرمجة على لوحة ESP32-Cam تحتاج توصيل GPIO0 بـ GROUND على نفس اللوحة، نفس الشيء مع لوحة الأردوينو يتطلب تفعيلها كوسيط برمجة أن يتم توصيل المنفذين RESET و GND

بعد انتهاء التوصيل نعود إلى منصة الـ ESPHome لتعريف ملف خاص باللوحة ESP32-Cam عن طريق اتباع التعليمات التالية:

  • اضغط الزر الأخضر ADD DEVICE سيظهر لك مربع حوار يطلب منك إدخال الاسم المطلوب لهذه اللوحة، ضع الاسم الذي يناسبك، في حالتي سأختار الاسم 3dp ثم أدخل اسم شبكة الوايفاي وكلمة المرور الخاصة بها ثم اضغط على الزر Next

  • من اللوحة المخصصة لاختيار نوع اللوحات اتركه على الخيار الافتراضي ESP32 ثم اضغط SKIP

  • سيظر ملف الإعدادات الخاص باللوحة كمدخل جديد في الصفحة، أعلاه خط أحمر طويل والذي يفيد بأنه لا يوجد اتصال بين منصة الـ ESPHome ولوحة الـ ESP32-Cam، ولتحويل هذا الخط إلى اللون الأخضر نحتاج إلى حرق البرنامج المخصص للـ ESPHome في اللوحة.

  • قم بتوصيل كيبل USB بين لوحة الأردوينو ولوحة الراسبيري باي، ثم قم بالضغط على زر Install، من القائمة التي ستظهر اختر الخيار الثالث Plug into the computer running ESPHome Dashboard، في حال كانت جميع التوصيلات صحيحة ماعليك سوى اختيار المنفذ الوحيد الذي سيظهر على الشاشة وهو المتعلق بلوحة الأردوينو وستبدأ عملية التثبيت لحظياً.

  • في حال فشلت عملية التثبيت، قد تحتاج إلى الضغط على الزر RST في لوحة الـ ESP32-Cam أثناء بدء عملية التثبيت

  • عند اكتمال عملية التثبيت بنجاح، تأكد من فصل الكيبل الذي يصل بين المنفذين GPIO0 و GND على لوحة الـ ESP32-Cam، ثم اضغط على الزر RST على نفس اللوحة، ثم انتظر للحظات، وسترى أن الخط الاحمر على منصلة ESPHome قد تحول إلى عبارة ONLINE مما يفيد بأنه اللوحة الآن تم توصيلها بالمنصة وستلاحظ وجود تنبيه جديد على منصة الـ Home Assistant يشير إلى وجود جهاز ذكي جديد تم اكتشافه على الشبكة

  • لدمج وعرض الإشارات الصادرة من الجهاز الجديد ESP32-Cam بمنصة الـ Home Assistant، ماعليك سوى التوجه إلى الإعدادات Configuration في الشريط الموجود في الجهة اليسرى للمنصة والذي يظهر على شكل أيقونة مسنن، ثم توجه إلى الدمج Integrations وستجد جهاز جديد تم اكتشاف باسم 3dp اضغط على إعداد Configure ثم إرسال SUBMIT تستطيع اختيار المنطقة إن أحببت ثم أضغط على إنهاء FINISH

  • من الآن وصاعداً لم نعد بحاجة إلى لوحة الأردوينو وأي تحديثات أو تعديلات سنجريها على إعدادات الـ ESP32-Cam سيتم تنفيذها عن بعد عن طريق الواي فاي فقط، ونستطيع أن نستغني عن الاردوينو، وكل ما نحتاجه هو تزويد لوحة ESP32-Cam بمصدر طاقة خارجي مقداره 5 فولت وتوصيلها بالأرضي GND، كما يمكننا الاحتفاظ بالأردوينو كمصدر للطاقة في الوقت الراهن لحين توفير مصدر طاقة خارجي مناسب، وهذا ما سيتم العمل به حالياً، حيث سنقوم بفصل كافة الاسلاك المتصلة بلوحة الأردوينو والإبقاء على التوصيلتين 5V و GND.

إضافة مستشعر الحرارة والرطوبة DHT11

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

قبل البدء بتنفيذ أي إعدادات نحتاج إلى توصيل المستشعر DHT11 باللوحة ESP32-Cam كما هو موضح في المخطط أدناه، لهذا المستشعر أربعة أرجل فقط نقوم بتوصيل الرجل في أقصى اليمين بالمنفذ GND على لوحة الـ ESP32-Cam، والرجل في أقصى اليسار للمستشعر يتم توصيلها بالمنفذ 5v على اللوحة، قم توصيل الرجل المخصصة بنقل البيانات في المستشعر وهو الرجل الثانية من اليسار مع المنفذ المعنون بـ IO13 على اللوحة، ولا ننسى أن نقوم بتوصيل مقاومة بقيمة 4.7k أوم فيما بين رجلي البيانات والطاقة للمستشعر، وأخيراً تجاهل الرجل المتبقية للمستشعر وابقها غير متصلة بشيء.

ESP32-CAM DHT11 wiring

حان الآن الوقت لكتابة نص الإعدادات لهذا المستشعر، ويتم ذلك بالتوجه للموقع الرسمي لـ ESPHome وإجراء بحث عن الـ DHT11، ستظهر عدة نتائج بحث نقوم بالدخول على الصفحة المتعلقة بنفس المستشعر، من نفس الصفحة قم بنسخ نص الإعدادات المكتوب بلغة yaml والذي ستجده أيضاً أدناه، ثم توجه لمنصة ESPHome ومن ثم أضغط على EDIT الموجودة أسفل الجهاز الذي أضفناه مؤخراً 3dp، قم بلصق الكود اسفل صقحة الإعدادات وتغيير القيمة الموجودة في السطر PIN: D2 للتتوافق مع القيمة التي توصيل المستشعر بها وهي GPIO13، ثم قم بالضغط على SAVE و من ثم INSTALL، من القائمة اختر Wirelessly كطريقة لنقل البرنامج للوحة ESP32-Cam، وستبدأ عملية التثبيت، فقط انتظر حتى يتم الانتهاء.

# Example configuration entry
sensor:
  - platform: dht
    pin: GPIO13
    temperature:
      name: "Living Room Temperature"
    humidity:
      name: "Living Room Humidity"
    update_interval: 10s

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

بعد انتهاء عملية التثبيت نحتاج إلى دمج هذا المستشعر بواجهة Home Assistant ويتم ذلك عن طريق اختيار Overview في واجهة الـ Home Assistant وهي ذات أيقونة تحتوي على أربعة مربعات متجاورة، ثم اضغط على الأيقونة ذات الثلاث نقاط عمودية في الجزء العلوي الأيمن من الواجهة، ثم اضغط على Edit Dashboard، اضغط على + Add Card، واختر BY ENTITY, ومن القائمة اختر المدخلين المتعلقين بالمستشعر وهما: Living Room Temperature و Living Room Humidity، ثم اضغط على Continue, ثم اختر ADD TO DASHBOARD, اخرج من وضع تحرير لوحة العرض بالضغط على DONE في الجزء العلوي الايسر من اللوحة.

ستظهر لك بطاقة تظهر فيها القيم القادمة من المستشعر وهي الحرارة والرطوبة، وسيتم تحديث هذه القيم كل عشرة ثواني.

إضافة شريط ليد

العملية والطريقة التي سيتم إضافة شريط الليد بها تكاد تكون مشابهة تماماً للعملية التي اتبعناها لإضافة المستشعر DHT11، شريط الليد الموجود لدينا هو من نوع WS2812B، وكما يظهر في مخطط التوصيل أدناه فيما بين الشريط واللوحة ESP32-Cam سنوصل 5v إلى 5v و GND إلى GND ومسار البيانات في الشريط سيتم توصيله بالمنفذ GPIO12 على اللوحة ESP32-Cam

ESP32-CAM WS2812B wiring

على الموقع الرسمي لـ ESPHome ابحث عن WS2812B، من قائمة النتائج اختر FastLED Light، انسخ الكود الظاهر في صفحة الشريط، ثم قم بلصفه في أسفل صفحة إعدادات اللوحة ESP32-Cam على منصة ESPHome، الشيء الوحيد الذي نحتاج تغييره في الكود هو الرقم المخصص للمنفذ الموصل عليه الشريط وهو في حالتنا GPIO12، ونفضل إعادة تسمية الشريط في ملف الإعدادات ليتوافق مع نوع الشريط ليكون FastLED WS2812B Light، اضغط على SAVE ثم INSTALL، وأيضاً اختر عن بعد Wirelessly ليتم التثبيت عن طريق الواي فاي.

# Example configuration entry
light:
  - platform: fastled_clockless
    chipset: WS2812B
    pin: GPIO12
    num_leds: 30
    rgb_order: BRG
    name: "FastLED WS2811 Light"

لإضافة البطاقة المخصصة للتحكم بإضاءة الليد إلى منصة الـ Home Assistant، نقوم بفعل نفس الخطوات مرة أخرى، Overview -> Edit Dashboard -> ADD CARD -> BY ENTITY -> اختر من القائمة FastLED WS2812B Light -> CONTINUE -> ADD TO DASHBOARD، انتهى.

من بطاقة التحكم هذه، نستطيع تشغيل وإطفاء إضاءة الليد، التحكم بشدة الإضاءة، وتغيير لون الإضاءة، كما يمكن إضافة عدد من المؤثرات والتي ستجدها في الموقع الرسمي لـ ESPHome تحت التبويب Light Component في الصفحة المخصصة لذلك، لكن سنترك ذلك لك كواجب منزلي لاكتشاف ذلك بنفسك.

إضافة الكاميرا

حان وقت إضافة الكاميرا، ولأن الكاميرا سيتم استخدامها فقط عند الحاجة أي عندما تحتاج تفحص سير عملية الطبيعة أو رصد أي مشاكل أو اخطاء في الطباعة، فهي ستبقى طيلة الوقت خاملة دون بث أي فيديو، وسيتم بث الفيديو فقط عندما نقوم بالدخول على منصة Home Assistant والضغط على البطاقة المخصصة للكاميرا، ولأن الكاميرا مضمنة بالفعل داخل اللوحة ESP32-Cam فلن يكون هناك أي حاجة لإجراء أي توصيلات، فقط نسخ ولصق بعض أكواد الإعدادات.

من خلال الدخول على الرابط، أو بإجراء بحث على الموقع الرسمي لـ ESPHome عن العبارة Camera سيتم اخذنا لنفس الصفحة في كلا الحالتين، وبكل بساطة قم بنسخ كود الإعدادات المخصص للكاميرا من نوع AI-Thinker، وهو الموديل الذي يتطابق مع الكاميرا التي لدينا.

# Example configuration entry
esp32_camera:
  external_clock:
    pin: GPIO0
    frequency: 20MHz
  i2c_pins:
    sda: GPIO26
    scl: GPIO27
  data_pins: [GPIO5, GPIO18, GPIO19, GPIO21, GPIO36, GPIO39, GPIO34, GPIO35]
  vsync_pin: GPIO25
  href_pin: GPIO23
  pixel_clock_pin: GPIO22
  power_down_pin: GPIO32

  # Image settings
  name: My Camera

ألصق الكود في أسفل ملف إعدادات اللوحة على منصة الـ ESPhome وكالعادة SAVE -> INSTALL, ولإضافة الكاميرا لواجهة الـ Home Assistant نستخدم نفس الطريقة السابقة بالضبط، Overview, -> Edit Dashboard, -> ADD CARD, -> BY ENTITY، ثم اختر من القائمة My Camera، ثم CONTINUE, -> ADD TO DASHBOARD, انتهى

إضافة إضاءة الفلاش

تحتوي لوحة الـ ESP32-Cam على إضاءة فلاش على اللوحة نفسها، يمكن استخدامها كمصدر إضاءة إضافي عند الحاجة، وستعطي شدة إضاءة لا بأس بها، لكن من الافضل استخدامها لفترة بسيطة فقط وعدم المبالغة في ذلك، بسبب الحرارة العالية التي تصدر منها ممما قد يتسبب في تسخين اللوحة، فقط قم بإضافة كود الإعدادات التالي أسفل ملف الإعداد الخاص باللوحة على منصة ESPHome

# Flash Switch configuration entry
output:
  - platform: gpio
    pin: 4
    id: 'generic_out'
switch:
  - platform: output
    name: "Flash Switch"
    output: 'generic_out'

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

تصميم وطباعة صندوق بلاستيكي

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

يمكنك تحميل نسخة من نموذج الطباعة من الموقع printables

Finished Project