دليل · ذكاء اصطناعي · ESP32
امنح ESP32 وجهًا يفكّر
لا يستطيع ESP32 تشغيل نموذج لغوي كبير — لكنّه واجهة مثالية له. تأخذ الرقاقة سؤالك، ويفكّر نموذج مُستضاف، ويتفاعل وجه الروبوت طوال الطريق: يستمع ← يفكّر ← يتكلّم ← تمّ. إليك البنية، وقاعدة الأمان الوحيدة المهمّة، والنمط الذي يربط كل شيء.
الشكل: ESP في الأمام، النموذج في الخلف
لا تحاول تشغيل الذكاء على الرقاقة نفسها. التقسيم الرابح بسيط: ESP32 يملك الواجهة — يأخذ المُدخل (رسالة مكتوبة، زرّ، لاحقًا ميكروفون)، ويُظهر ما يجري، ويرسم الجواب — بينما النموذج المُستضاف يتولّى اللغة. وبينهما خادم صغير تتحكّم به. يذهب الطلب في اتجاه ويعود:
you type → ESP32 → your proxy → LLM → reply + mood → ESP32 face كلّ ما يراه المستخدم ويلمسه يعيش على ESP ويُقدَّم لوحةً حيّة على الويب — فيصبح لـ«الوكيل» جسدٌ قبل أن يكون له صوت بوقتٍ طويل.
القاعدة الوحيدة: مفتاح الـ API لا يلمس ESP أبدًا
هنا يخطئ الناس غالبًا. لا تضع مفتاح النموذج اللغوي في البرنامج الثابت أبدًا. أيّ شخص يسحب
ملفّ .bin من الفلاش يقرؤه — انظر أين يخزّن ESP32
الأشياء — والمتحكّم الدقيق لا يستطيع أصلًا تثبيت سلسلة TLS المتغيّرة للمزوّد بأمان. بدلًا من ذلك، أقِم
وسيطًا رفيعًا (Cloudflare Worker، أو مسار Node صغير) يحمل السرّ. يستدعي ESP رابطك
أنت برسالة عادية؛ يضيف الوسيط المفتاح، ويستدعي النموذج، ويُعيد JSON صغيرًا. إنها نحو خمسة عشر سطرًا
— وتتيح لك أيضًا تبديل النماذج ووضع حدود وتخزينًا مؤقتًا، دون إعادة برمجة جهاز واحد.
الوجه آلة حالات
هذه هي الحيلة التي تجعله ينبض: لطلب الشبكة حالات — إرسال، انتظار، وصل-الجواب، فشل — وهي تنطبق واحدةً بواحدة على التعبيرات. أنت لا تسرد التقدّم بالنصّ؛ الوجه هو شريط التقدّم. تضبط متغيّرًا مربوطًا واحدًا فيتبعه الوجه المُقدَّم (وأيّ شاشة على الجهاز) عبر WebSocket:
mood = FACE_LISTENING; // you asked
mood = FACE_PONDERING; // handed to the model
reply = askAgent(msg); // the proxy call
mood = FACE_SPEAKING; // the answer is here
mood = replyMood; // settle into the model's mood السطر الأخير هو الأمتع: دع النموذج يختار مزاجه بنفسه. اطلب منه أن يُنهي جوابه بمؤشّر مزاج، فيعكس الوجه مضمون الجواب لا مجرّد «الأنابيب»: راضٍ، متردّد، معتذر. للوجه عشرات الحالات للاختيار منها (مبنيّة ومعاينة في BoardLab)؛ ويكفي الوكيل حفنة منها ليبدو متجاوبًا.
من يفعل ماذا
| الطبقة | أين تعمل | مهمّتها |
|---|---|---|
| الوجه + الواجهة | على ESP32 | أخذ المُدخل، إظهار الحالة، رسم الجواب |
| الوسيط | خادمك / Worker | حمل المفتاح، استدعاء النموذج، تشكيل الـ JSON |
| النموذج | في السحابة | الفهم، الردّ، اختيار المزاج |
أبقِ الحدّ نظيفًا فيبقى كلّ جزء قابلًا للتبديل: تغيّر النماذج في الوسيط، وتعيد تلوين الوجه في البرنامج الثابت، ولا يزعج أحدهما الآخر.
إلى أين بعد ذلك
النصّ في المتصفّح أبسط واجهة، لكنّ المسار نفسه يقبل زرًّا أو ميكروفونًا بالمثل — تبدّل المُدخل وتُبقي آلة الحالات. اقرنه بـالراديو المناسب ومصدر طاقة فيصير الوجه المتكلّم جهازًا حقيقيًّا على رفّ. المخطّط الكامل (مع عقد الوسيط) يأتي مثالًا باسم AI-Agent في مستودع RisalDash.
الجسد أولًا؟ لوحة حيّة كاملة — وجه، ومقاييس، وتحكّم — في أسطر C++ قليلة.
وجه الوكيل حيًّا
بعض الحالات التي يقودها هذا المسار — تتحرّك من تلقاء نفسها.