Lys Entertainment System
C++

Lys Entertainment System

نسخة غريبة من نظام وحدة التحكم تم إنشاؤها باستخدام Arduino/ESP8266

GitHub|
image

نموذج غريب لنظام وحدة تحكم تم صنعه باستخدام Arduino/ESP32. إنه مشروع هواية،
وليس منتجًا حقيقيًا. الفكرة النهائية هي جهاز محمول صغير يعمل على تشغيل
ألعابي الخاصة، مع صوت وشاشة ملونة. لكنه لم يصل إلى هذا المستوى بعد. من المفترض أن
يعمل بسلاسة مع ألعاب عصر NES وSNES. والانتقال إلى دقة عرض أعلى هو ما
ينتظرنا على لوحة مزودة بذاكرة PSRAM.

الأمر يتعلق بذاكرة الوصول العشوائي (RAM). تتمتع لوحة Arduino Mega 2560 التي يعمل عليها اليوم بـ 8 كيلوبايت فقط من
ذاكرة SRAM. وهذا لا يكفي لاستيعاب مخزن إطارات ملون، لذا يظل العرض على تلك اللوحة نصيًّا فقط.
المنصة التالية هي ESP32 WROOM، التي ترتقي إلى حوالي 520 كيلوبايت من ذاكرة SRAM و
معالج ثنائي النواة سريع. وهذا يتسع لمخزن إطارات بحجم 240x240 (حوالي 115 كيلوبايت) ويشغل
ألعابًا حقيقية بتلك الدقة. لا تحتوي WROOM على ذاكرة PSRAM، لذا لا يمكنها استيعاب
مخازن الإطارات الأكبر حجمًا التي ستحتاجها شاشة ذات دقة أعلى. أما ESP32-WROVER أو
ESP32-S3 فتغطي ذلك لاحقًا بذاكرة PSRAM بسعة عدة ميغابايت وذاكرة تخزين مدمجة، وهو
ما ستحتاجه أي شاشة تتجاوز دقة 240p.

الحالة

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

يعمل اليوم على جهاز Arduino Mega مزود بشاشة LCD ذات 16x2 حرفًا، وهو ما
يستهدفه الكود. تم تحديد المنصة التالية: وحدة ESP32 WROOM تقود شاشة IPS ST7789 مقاس 1.54 بوصة
بدقة 240x240 عبر واجهة SPI. يعمل كلا المكونين بجهد 3.3 فولت ويتم إقرانهما دون
حاجة إلى تحويل المستويات، على عكس شاشة LCD الحالية التي تعمل بجهد 5 فولت. هذه المكونات في طريقها إلينا، ولن
يتم نقل أي شيء حتى وصولها.

سيتم استضافة الألعاب على lyszt.net وتنزيلها إلى اللوحة عبر شبكة WiFi. بالنسبة
للإصدار الأول، ستُخزَّن الألعاب في ذاكرة الفلاش المدمجة في ESP32.

الأجهزة

  • وحدة التحكم الدقيقة (MCU): Arduino Mega 2560 (ATmega2560) في الوقت الحالي
  • الشاشة: شاشة LCD أحرفية 16x2 عبر واجهة I2C (العنوان 0x27)
  • الصوت: جرس صوتي سلبي على الدبوس 3
  • الإدخال:
    • زر التشغيل على الدبوس 2 (INPUT_PULLUP، مع إزالة الارتداد)
    • أزرار الاتجاهات: أعلى / أسفل / يسار / يمين، مجرد أزرار عادية حتى الآن،
      لم يتم توصيلها بأي شيء بعد
    • أزرار الإجراءات: A / B، نفس الحالة، لم يتم توصيلها بأي شيء بعد

مخطط له (المنصة التالية)

  • وحدة التحكم الدقيقة (MCU): ESP32 WROOM (3.3 فولت، ثنائي النواة، ~520 كيلوبايت SRAM)
  • الشاشة: 1.54 بوصة 240x240 IPS ST7789 عبر SPI
  • التخزين: الألعاب في ذاكرة فلاش مدمجة، يتم تنزيلها عبر WiFi
  • لاحقًا: ESP32-WROVER أو ESP32-S3 للحصول على سعة PSRAM تتجاوز 240p

البناء

مشروع PlatformIO، إطار عمل Arduino. يقع المشروع الفعلي ضمن
Lys Entertainment System/.

platform  = atmelavr
board     = megaatmega2560
framework = arduino
lib_deps  = marcoschwartz/LiquidCrystal_I2C

التخطيط

يوجد الكود المصدري في Lys Entertainment System/src/:

  • main.cpp — نقطة الدخول: التوصيلات، زر التشغيل، الحلقة الرئيسية.
  • system/ — نواة System؛ تتحكم في حالة الطاقة وشاشة LCD والصوت.
  • sounds/ — الصوت، مقسم إلى البيانات والمنطق:
    • notes.h — ثوابت النغمات.
    • songs.{h,cpp} — بيانات الموسيقى (بنية Song وتعريفات اللحن).
    • sounds.{h,cpp} — محرك اللحن غير المعطل وواجهة برمجة تطبيقات الصوت.
    • audio_manager.{h,cpp} — غلاف برمجي موجه للكائنات (OO) حول المحرك.
  • lcd/ — أداة مساعدة للنصوص على شاشة LCD.
  • utils/ — أدوات مساعدة قابلة لإعادة الاستخدام (مثل دالة wait غير المعطلة).