يؤلف الذكاء الاصطناعي أغنية وهذه ESP32 تعلمك العزف عليها
اطلب من الذكاء الاصطناعي كتابة لحن، واستمع إليه وهو يُعزف، ثم دع اللوحة تعلمك العزف عليه
اختر مزاجًا، اضغط على WRITE، ويقوم الذكاء الاصطناعي بتأليف لحن قصير. تعزفه اللوحة، وتضيء كل مفتاح أثناء العزف. ثم اضغط على LEARN فيتحول إلى معلم: يضيء مفتاحًا واحدًا في كل مرة وينتظرك لتضغط عليه، نغمة بعد نغمة، حتى تعزف اللحن كله بنفسك.
922-هذه مقالة موسيقى الذكاء الاصطناعي (المقالة الحالية)
923-مشروع البيانو موجود هنا.
لا يزال بيانو كاملًا بـ 21 مفتاحًا في أي لحظة - فقط اعزف عليه.
Robojax_Makerfab عند الدفع على صفحة منتج MaTouch AI ESP32-S3. لا يكلفك استخدامه شيئًا، ويساعد في دعم الكود والبرامج التعليمية المجانية هنا.الشاشة

ستة أزرار في الأعلى، ثم لوحة مفاتيح بـ 21 مفتاحًا - ثلاثة صفوف من سبعة، من C3 إلى B5. على عكس مشروع البيانو، لا يوجد تخطيط أبيض وأسود هنا، لأن الذكاء الاصطناعي مقيد بالسبع نغمات الطبيعية والشبكة هي ما تبدو عليه تلك النغمات.
| الزر | وظيفته |
|---|---|
| STYLE | يتنقل بين المزاج: سعيد، حزين، مخيف، شعبي، تهويدة. هذا ما يُرسل إلى الذكاء الاصطناعي. |
| WRITE | يطلب من الذكاء الاصطناعي لحنًا بهذا المزاج. يعرض WAIT أثناء التفكير، ثم يعزف ما عاد. |
| PLAY | يعيد تشغيل اللحن المحمّل حاليًا. اضغط مرة أخرى للتوقف. |
| LEARN | وضع التعلم - يضيء مفتاحًا واحدًا وينتظرك. |
| WAVE | لون النغمة: ناعم، أو عضوي، أو ساطع. |
| VOL | اضغط لزيادة مستوى الصوت من 1 إلى 5. التسمية تعرض المستوى. |
مستوى الصوت الذي تبدأ به اللوحة يُحدد بواسطة #define VOLUME بالقرب من أعلى الكود، لذا يمكنك تجميعه بالمستوى الذي تفضله وما زال بإمكانك تغييره مباشرة.
ما يولده الذكاء الاصطناعي فعليًا
هذا الجزء يستحق الدقة، لأنه من السهل المبالغة فيه. الذكاء الاصطناعي لا يولّد صوتًا. إنتاج موجة صوتية فعلية يتطلب نموذجًا كبيرًا وبطاقة رسوميات؛ لا يوجد متحكم دقيق يقوم بذلك، وأي شخص يدعي غير ذلك يشغّل ملفًا تم إنشاؤه في مكان آخر.
ما يولده هو قائمة من النغمات، كنص عادي:
[{"n":"C4","ms":300},{"n":"E4","ms":300},{"n":"G4","ms":600}]
تقوم اللوحة بتحليل ذلك باستخدام ArduinoJson وتعزفه باستخدام نفس المُركّب الصوتي كمشروع البيانو. طلب نصي قصير واحد يكلف جزءًا صغيرًا من السنت، وبمجرد وصول اللحن يمكن إعادة تشغيله إلى الأبد مع فصل الإنترنت.
لماذا يقيّد الطلب الذكاء الاصطناعي
يخبر الطلب النموذج أنه قد يستخدم فقط الـ 21 نغمة الموجودة فعليًا على هذه اللوحة - النغمات الطبيعية من C3 إلى B5، بدون علامات رفع أو خفض. هذا ليس قيدًا على المُركّب الصوتي، الذي يمكنه عزف أي تردد. إنه موجود لسببين وجيهين:
- كل نغمة يكتبها يمكن لوضع LEARN أن يعلّمك إياها فعليًا، لأن هناك مفتاحًا لها
- البقاء في مفتاح واحد يعني أن النتيجة دائمًا تبدو موسيقية، حتى عندما يكون النموذج في يوم غير ملهم
تحليل إجابة من نموذج لغوي
تحب النماذج أن تكون مفيدة، وهو ما يعني هنا تغليف الإجابة بأسوار markdown وإضافة جملة ودية حول ما كتبته. يطلب الكود بإلحاح JSON خامًا ثم يأخذ دفاعيًا كل شيء بين أول [ وآخر ] على أي حال. أي نغمة لا يمكن وضعها على لوحة المفاتيح يتم تخطيها، ولا تُقبل النتيجة إلا إذا نجت أربع نغمات قابلة للاستخدام على الأقل. التسامح مع المخرجات غير المثالية هو معظم العمل في أي مشروع يحلل نص الذكاء الاصطناعي.
الرد الفارغ، وكيفية تجنبه
هناك شيء واحد سيفاجئك إذا غيّرت النموذج أو التلقين. ديبسيك يفكّر قبل أن يجيب، وهذا التفكير يُحتسب من نفس ميزانية max_tokens المخصصة للإجابة. اطلب منه شيئًا صعبًا وقد ينفق الميزانية بأكملها في التفكير، ثم يعود برد فارغ - طلب ناجح لا يحتوي على شيء.
في هذا المشروع ظهر ذلك على شكل الحالات المزاجية الأصعب التي تفشل بينما تعمل السهلة. SPOOKY وLULLABY تطلبان مفتاحًا صغيرًا، وهو أمر صعب حقًا عندما تكون كل علامة رفع أو خفض محظورة، لذا تردد النموذج - ونفدت ميزانيته. أما HAPPY في مفتاح C الكبير فأجاب فورًا.
هناك إصلاحان وهذه التجربة تستخدم كليهما. يرسل الطلب "thinking": {"type": "disabled"}، مما يعطّل التفكير تمامًا بحيث تذهب الميزانية كلها إلى الإجابة ويعود الرد أسرع بكثير. كما يخبر التلقين الآن النموذج كيف يجعل اللحن يبدو صغيرًا بدون علامات رفع أو خفض - بتركيز اللحن على A أو E، وهو ما يستخدم نفس النوتات.
finish_reason. length تعني أنه نفدت الميزانية - ارفع MELODY_TOKENS. stop تعني أن النموذج اختار ألا يقول شيئًا، وهي مشكلة في التلقين بدلاً من ذلك.وضع التعلّم
اضغط على LEARN وسيتحول مفتاح واحد إلى اللون الأخضر. اضغط عليه ويتقدم اللوح إلى النوتة التالية. اضغط على المفتاح الخطأ وسيصدر صوتًا أيضًا - فهو بيانو بعد كل شيء - لكنه لا يتقدم. شريط الحالة يحسب تقدمك، وعندما تصل إلى النهاية يخبرك بذلك.
لا يوجد ضغط توقيت ولا نقاط. إنه ينتظرك طالما احتجت، وهذا ما يجعله قابلاً للاستخدام حقًا لتعلّم عبارة موسيقية وليس مجرد حداثة.
يعمل بدون WiFi أيضًا
لحن مدمج في التجربة، لذا يعمل PLAY وLEARN بدون أي شبكة. فقط WRITE يحتاج إلى الإنترنت - ويحتاج فقط إلى مفتاح DeepSeek. لا حاجة لحساب Azure أو OpenAI لهذا المشروع.
عند الاختبار، اضغط على PLAY أولاً: ذلك يؤكد مسار الصوت ولوحة المفاتيح قبل أي تدخل للشبكة، لذا إذا فشل WRITE لاحقًا فأنت تعرف بالفعل أين تبحث.
أفكار للتطوير
- اطلب لحنًا "على طراز أغاني البحارة" بتعديل قائمة الأنماط.
- اجعله يكتب عبارة ثانية ترد على الأولى.
- احفظ الألحان على بطاقة SD بحيث يبني اللوح كتاب أغانٍ بمرور الوقت.
- أضف الميكروفونات من مشروع المساعد الصوتي بحيث يمكنك التحدث بالطلب بدلاً من الضغط على خيار مسبق.
حول لوحة MaTouch AI ESP32-S3 2.8"
كل مشروع في هذه الصفحة يعمل على MaTouch AI ESP32-S3 2.8" TFT ST7789V من Makerfabs. إنها لوحة متكاملة: شاشة لمس ملونة، كاميرا بدقة 3 ميجابكسل، ميكروفونان ومضخم سماعة حقيقي، كل ذلك مدعوم بوحدة ESP32-S3 مع 8 MB من PSRAM. هذا المزيج هو ما يجعل مشاريع الذكاء الاصطناعي هذه ممكنة على لوحة واحدة دون أي شيء آخر متصل بها.
ذاكرة 8 MB من PSRAM أهم من أي رقم آخر هنا. هي ما يسمح للوحة بالاحتفاظ بإطار كاميرا، أو بضع ثوانٍ من الصوت المسجل، أو صورة مشفرة بـ base64 في الذاكرة في نفس الوقت - ولا شيء من ذلك يتسع في ذاكرة ESP32 العادية.
وثائق الشركة المصنعة: صفحة Makerfabs wiki.
كل مشروع آخر لهذه اللوحة - الكاميرا، التعرف على الوجوه دون اتصال، المساعد الصوتي بالذكاء الاصطناعي، رؤية الذكاء الاصطناعي ومشروع الرسم - له برنامج تعليمي خاص به. روابط جميعها أسفل هذه المقالة.
المواصفات الرئيسية
- المعالج: ESP32-S3، ثنائي النواة 240 MHz، WiFi 2.4 GHz + Bluetooth 5.0
- الذاكرة: 16 MB فلاش، 8 MB PSRAM (مطلوبة تقريبًا لكل مشروع هنا)
- الشاشة: 2.8" IPS، 320×240، مشغل ST7789V، SPI
- اللمس: GT911 سعوي، يتتبع 5 أصابع في وقت واحد
- الكاميرا: OV3660، 3 ميجابكسل، حتى 2048×1536
- الميكروفونات: ميكروفونان INMP441 I2S رقميان (زوج ستيريو حقيقي)
- السماعة: مضخم MAX98357A من الفئة D، 3.2 W على 4 Ω
- التخزين: فتحة بطاقة microSD (وضع SPI)
- الطاقة: USB-C، موصل بطارية JST، شاحن TP4056، مفتاح طاقة
- أيضًا على اللوحة: LED RGB WS2812B، ساعة زمن حقيقي PCF8563T ببطارية احتياطية، ومقياس شحن بطارية MAX17048 غير مدرج في المواصفات الرسمية
USB CDC On Boot على Disabled. استخدام المنفذ الخاطئ سيؤدي إلى سلوك غير صحيح للصوت أو فشل في الرفع.هل تريد تشغيلها ببطارية؟ يتم شرح منفذي USB-C وشاحن TP4056 ومفتاح الطاقة بالكامل، مع المخطط الكهربائي، في مقال اختبار اللوحة — بما في ذلك أي منفذ يشحن وما إذا كان يجب أن يكون المفتاح في وضع التشغيل أو الإيقاف.
إعدادات Arduino IDE
هذه الإعدادات مهمة. معظم المشكلات التي يبلغ عنها الأشخاص مع هذه اللوحة تكون بسبب خطأ في أحد هذه الإعدادات، وهي تتم إعادة تعيينها عند تغيير إصدار النواة، لذا تحقق منها مرة أخرى بعد أي تغيير.
| الإعداد | القيمة |
|---|---|
| اللوحة | ESP32S3 Dev Module |
| إصدار نواة ESP32 | 2.0.17 |
| PSRAM | OPI PSRAM |
| حجم الفلاش | 16MB (128Mb) |
| مخطط التقسيم | 16M Flash (3MB APP/9.9MB FATFS) |
| USB CDC On Boot | Disabled |
| سرعة الرفع | 921600 |
| مسح كل الفلاش قبل الرفع | Disabled |
| المنفذ | منفذ CH340K USB-C |
إذا فشل الرفع: وضع اللوحة في وضع التنزيل يدويًا
في معظم الأحيان تضغط فقط Upload ويعمل. أحيانًا لا يعمل — يبقى IDE عند Connecting...... ثم يستسلم مع Failed to connect to ESP32-S3: No serial data received.
يحدث ذلك لأن IO0 يقوم بثلاث مهام في هذه اللوحة في وقت واحد: إنه زر BOOT، وهو خط إعادة الضبط التلقائي من CH340K، وهو خط بيانات مصباح RGB LED. عندما يكون الرسم الذي يعمل بالفعل على اللوحة يقود ذلك المصباح، يمكن أن يتعارض مع إعادة الضبط التلقائية، لذا يعيد التشغيل إلى رسمك القديم بدلاً من محمل الإقلاع.
الإصلاح يستغرق خمس ثوانٍ. ضعه في وضع التنزيل بنفسك:
- اضغط مع الاستمرار على زر BOOT.
- أثناء الاستمرار في الضغط على BOOT، اضغط على RESET واترك RESET.
- الآن اترك BOOT. تصبح الشاشة فارغة — هذا هو محمل الإقلاع في انتظار.
- انقر Upload.
- عند الانتهاء، اضغط RESET مرة واحدة لتشغيل الرسم الجديد.
إذا لم يتصل بعد، اخفض Upload Speed إلى 115200 وحاول مرة أخرى. وتحقق من أن مفتاح طاقة اللوحة في وضع التشغيل — يقوم CH340K بالتعداد ويعطيك منفذ COM حتى عندما تكون اللوحة نفسها مطفأة، مما يخدع الناس.
المكتبات المطلوبة
يحتاج هذا المشروع إلى كل مكتبة في الجدول أدناه — لا أكثر ولا أقل. معظمها يُثبت مباشرة من Tools → Manage Libraries في Arduino IDE، لكن GFX Library for Arduino يجب تثبيتها من ملف ZIP. أرقام الإصدارات مهمة، لذا يرجى استخدام بالضبط تلك المذكورة.
| المكتبة | الإصدار | المؤلف | التثبيت من |
|---|---|---|---|
| GFX Library for Arduino | 1.5.6 | moononournation | ملف ZIP — انظر أدناه |
| bb_captouch | 1.3.1 | Larry Bank | Library Manager |
| ArduinoJson | 7.x | Benoit Blanchon | Library Manager |
| Adafruit NeoPixel | أي إصدار حديث | Adafruit | Library Manager |
تثبيت مكتبة GFX من ملف ZIP
- قم بتنزيل ملف ZIP. وهو مضمّن في تنزيل هذا المشروع، أو يمكنك الحصول عليه من مستودع Arduino_GFX - انقر على الزر الأخضر Code، ثم Download ZIP.
- احفظه في مكان يمكنك العثور عليه مرة أخرى. لا تقم بفك ضغطه.
- في Arduino IDE، انقر على Sketch → Include Library → Add .ZIP Library.
- انتقل إلى ملف ZIP الذي قمت بتنزيله وانقر على Open.
- يقوم الـ IDE بتثبيته ويؤكد ذلك في أسفل النافذة. إذا كان لديك بالفعل إصدار 1.6 مثبتًا، فاحذف هذا المجلد من
Documents/Arduino/librariesأولاً، وإلا فسيتعارض الاثنان.
إعداد secrets.h
تفاصيل WiFi الخاصة بك وأي مفاتيح API توضع في secrets.h، وهو مضمّن في التنزيل بقيم placeholder. افتح هذه التبويبة في Arduino IDE واستبدلها بقيمك الخاصة.
secrets.h.الحصول على مفاتيح API الخاصة بك
يتواصل هذا المشروع مع خدمة ذكاء اصطناعي سحابية، لذا تحتاج إلى مفتاح خاص بك. إذا لم تفعل هذا من قبل، فلا تقلق - إنها نفس فكرة كلمة المرور التي تعرّف حسابك للخدمة. يستغرق الأمر بضع دقائق، مرة واحدة.
DeepSeek - الجزء المفكر
DeepSeek هو نموذج اللغة الذي يجيب فعليًا على سؤالك. إنه غير مكلف - بضعة دولارات من الرصيد تغطي آلاف الردود.
- انتقل إلى platform.deepseek.com وأنشئ حسابًا.
- افتح API keys في القائمة وانقر على Create new API key.
- انسخه فورًا. يتم عرضه مرة واحدة فقط ولا يُعرض مرة أخرى أبدًا - إذا فقدته، فاحذف هذا المفتاح وأنشئ مفتاحًا آخر.
- أضف مبلغًا صغيرًا من الرصيد تحت Top up. لا توجد طبقة مجانية، لكن أصغر شحنة رصيد تدوم لفترة طويلة جدًا مع هذا الاستخدام.
ضع المفتاح في secrets.h كـ DEEPSEEK_KEY. يبدأ بـ sk-.
deepseek-chat و deepseek-reasoner القديمين، لذا فإن معظم الدروس التي تجدها عبر الإنترنت ستفشل مع خطأ 400. استخدم deepseek-v4-flash، وهو ما تم ضبطه بالفعل في هذه المشاريع.كم تكلفة التشغيل
قليلة جدًا، لكنها ليست مجانية، ويجب أن تعرف تقريبًا ما الذي تنفقه قبل أن تترك مشروعًا يعمل.
| الخدمة | التكلفة التقريبية |
|---|---|
| DeepSeek | جزء من السنت لكل إجابة - آلاف الردود مقابل بضعة دولارات |
تتغير الأسعار، لذا تعامل مع هذه كدليل وليس كعرض سعر. كل هذه الخدمات لديها صفحة استخدام حيث يمكنك مراقبة ما أنفقته، وجميعها تتيح لك تعيين حد إنفاق - وهو أمر يستحق القيام به من اليوم الأول.
استكشاف الأخطاء وإصلاحها
| العرض | السبب والحل |
|---|---|
| تبقى الشاشة سوداء | إصدار مكتبة GFX خاطئ (استخدم 1.5.6) أو إعدادات اللوحة خاطئة. |
PSRAM alloc failed |
Tools → PSRAM غير مضبوط على OPI PSRAM. |
| لا يتم رفع أي شيء / لا يوجد منفذ COM | منفذ USB-C خاطئ، أو برنامج تشغيل CH340 غير مثبت. |
الأشياء التي قد تحتاجها
-
إي باي
الموارد والمراجع
-
توثيقMakerfabs MaTouch ESP32-S3 2.8" Camera and Touchscreen: User's Manualwiki.makerfabs.com
-
توثيق
-
خارجيموقع Makerfabsmakerfabs.com
ملفات📁
كود Arduino (.ino)
-
مخطط Arduino makerfabs_ESP32S3_Draw_AI.zipيتضمن ملفات الرأس للدبابيس والرأس السري .h
makerfabs_ESP32S3_Draw_AI.zip0.02 MB
ورقة البيانات (pdf)
-
ورقة بيانات ESP32-S3 الإنجليزية
esp32-s3_datasheet_en[1].pdf1.05 MB