كيف حولت شاشة ESP32 CYD الرخيصة إلى لوحة تحكم ذكية باستخدام ESPHome وLVGL
منذ أن بدأت أعبث بأجهزة ESP32 مع ESPHome، انفتحت أمامي أبواب لا حصر لها لبناء أجهزة ذكية بسهولة وربطها بـ Home Assistant.
بدأت بجهاز بسيط يعمل بالاهتزاز لتشغيل الكمبيوتر بمجرد أن أضرب الطاولة، ثم توسعت في استخدام الحساسات وواجهات LCD، والآن وصلت إلى واحد من أكثر الأجهزة إثارة في مجموعتي: ESP32 “Cheap Yellow Display” أو ESP32 CYD.
ما هو ESP32 CYD ولماذا هو مثير للاهتمام؟
جهازي الحالي هو ESP32-2432S028R، وهو شاشة TFT LCD بدقة 240×320 مع قارئ بطاقة SD وسعره حوالي 20 دولارًا فقط.
يتميز بأنه قابل للبرمجة بحرية، ويمكن تخصيصه بالكامل لعرض ما تشاء: لوحة تحكم، ساعة، مشغل وسائط، وغير ذلك.
أضف إلى ذلك أن بعض الإصدارات تأتي بإطار خشبي وأكريليك، ويمكنك دمجه في أي تصميم يناسب منزلك الذكي.
هدفي بعيد المدى هو استبدال هاتفي القديم OnePlus 6 الذي أستخدمه حاليًا كلوحة تحكم لـ Home Assistant، وهذه الشاشة الصغيرة هي البداية المثالية لذلك.
رحلتي مع LVGL: الرسوميات الاحترافية على جهاز صغير
أردت أن أجعل الشاشة جميلة ومفيدة في نفس الوقت، لذا بدأت أستكشف مكتبة LVGL (Light and Versatile Graphics Library)، وهي مكتبة قوية لإنشاء واجهات رسومية جذابة على أجهزة مدمجة ذات موارد محدودة.
واجهت صعوبة في البداية، لأن دعم LVGL في ESPHome لا يزال جديدًا نسبيًا ويعتمد على الإصدار الثامن فقط حتى الآن، ما يجعل التوثيق محدودًا.
لكن GitHub كان منقذي. وجدت مستودعًا ممتازًا للمطور Brian Lough يحتوي على أمثلة واختصارات لاستخدام LVGL، ثم صادفت مشروعًا مدهشًا آخر للمطور Ryan Ewen، وهو ما أحدث فرقًا كبيرًا في مشروعي.
ما الذي أضفته في واجهتي الرسومية؟
باستخدام قالب Ewen كمصدر إلهام، بنيت واجهة رسومية تحتوي على:
-
ساعة رقمية في الأعلى.
-
درجة حرارة غرفة المعيشة في الزاوية العليا اليمنى.
-
أزرار ذكية للتحكم في إنارة غرفة النوم والمكتب.
-
وحدة تحكم في الموسيقى مرتبطة بـ Home Assistant Voice PE (تشغيل، تخطي، رفع/خفض الصوت).
ما يميز LVGL هو أنك تبني “صفحات” و”عناصر واجهة” بطريقة منظمة تشبه إلى حد ما تطوير التطبيقات، لكن بطريقة مصغّرة مناسبة لهذا النوع من الأجهزة.
التحديات التي واجهتها
-
توثيق محدود: خاصة في ربط LVGL مع ESPHome.
-
أدوات التصميم البدائية: مثل أدوات تصميم الواجهات على الويب، التي أعطت نتائج ضعيفة المظهر.
-
تحكم في Home Assistant: احتجت لتصميم عناصر واجهة مخصصة لتوصيل الأوامر بالشكل الصحيح.
-
مفاهيم جديدة: مثل الرسم المباشر، التخزين المؤقت، التفاعل باللمس، صفحات متعدّدة.
لكن بفضل خلفيتي في البرمجة، استطعت تجاوز معظم هذه العقبات من خلال التجريب والتحليل.
هل هو مناسب للمبتدئين؟
بصراحة، لا في الوقت الحالي. من ليس لديه خلفية تقنية سيجد صعوبة كبيرة في البداية، خصوصًا أن معظم الأمثلة ليست “جاهزة للنسخ واللصق”. لكن إن كنت مطورًا أو لديك شغف بالتعلم والتجربة، فإن الإمكانيات لا حدود لها.
الخطوة التالية: مشاركته مع الجميع
بمجرد أن أُكمل تطوير واجهتي وتحسين الكود، سأقوم برفع المشروع على GitHub كمصدر مفتوح ليستفيد منه الجميع، تمامًا كما استفدت أنا من الآخرين. المشاريع مثل هذه تحتاج إلى مجتمع يتشارك المعرفة، ومع المزيد من الوقت والموارد، يمكن لأي شخص تحويل شاشة رخيصة إلى لوحة تحكم منزلية مذهلة.