مبتدئ → تطبيقي · 10 دروس

الروبوتات — من الفكرة إلى تصميم مشروع حقيقي

تفهم كيف يستشعر الروبوت ويقرر وينفّذ، وتتدرّب على المنطق والتحكم وتخطيط المسار في المحاكاة — ثم تصمّم روبوتاً على الورق بقائمة قطع جاهزة للبناء لاحقاً.

كيف تدرس هذا المسار؟

  1. تخيّل الروبوت كجسم + حواس + عقل صغير.
  2. انسخ القوالب والخوارزميات وجرّبها على ورق أو محاكاة.
  3. أكمل المهمة والاختبار.
  4. احفظ تقدّمك وانتقل للدرس التالي.

مناسب من سن 13 فما فوق، وفي آخر كل درس روابط لمراجعه الرسمية.

1. ما هو الروبوت؟ وليس كل آلة روبوتاً

الهدف: تميّز بين آلة بسيطة وآلة مؤتمتة وروبوت، وتطبّق اختبار «استشعر، فكّر، نفّذ» على أجهزة من حياتك.

أبسط تعريف عملي للروبوت (Robot): جهاز يستشعر ما حوله، ويقرر بناءً على ما استشعره، ثم يفعل شيئاً يغيّر بيئته أو موقعه فيها. يسمّي المهندسون هذه الدورة استشعر، فكّر، نفّذ (Sense–Think–Act). الحساسات (Sensors) تجمع المعلومة، والمتحكم (Controller) يشغّل برنامجاً يحوّلها إلى قرار، والمُفعّلات (Actuators) مثل المحركات والسماعات تنفّذ القرار. عندما تريد الحكم على أي جهاز، ابحث فيه عن الأركان الثلاثة بهذا الترتيب؛ فإن غاب ركن منها فأنت أمام آلة، مهما بدا شكلها متطوراً.

ما يعطي الدورة قيمتها هو التغذية الراجعة (Feedback): بعد أن ينفّذ الروبوت فعلاً، يقرأ حساساته من جديد ليرى أثر ما فعل، ثم يعدّل. المكيّف الحديث مثال قريب منك؛ يقيس حرارة الغرفة، فإذا تجاوزت الرقم الذي ضبطته شغّل الضاغط، ويواصل القياس حتى تنخفض الحرارة فيوقفه. هذا نظام تحكم بحلقة مغلقة (Closed loop). أما المحمصة ذات المؤقت فتعمل دقيقتين ثم تتوقف سواء احترق الخبز أم بقي بارداً، لأنها لا ترى نتيجة عملها؛ وهذا ما يسمى حلقة مفتوحة (Open loop).

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

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

يفيدك أن ترتّب الأجهزة في درجات بدل تقسيمها إلى «روبوت» و«غير روبوت» فقط:
• آلة بسيطة: تحتاج قوة الإنسان وقراره معاً، مثل الرافعة اليدوية أو المفك.
• آلة مؤتمتة: تكرر تسلسلاً ثابتاً مهما تغيّر ما حولها، مثل خط تعبئة زجاجات يعمل بمؤقت.
• روبوت تفاعلي: يغيّر سلوكه حسب قراءات حساساته وفق قواعد كتبها الإنسان، مثل سيارة لعبة تتجنب الحائط.
• روبوت يستخدم التعلّم الآلي: يتعامل مع مواقف لم تُكتب لها قاعدة صريحة، مثل تمييز ثمرة ناضجة من صورة. نعود إليه في الدرس التاسع.

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

هذا الرسم البسيط أداة فحص حقيقية. السهم الناقص يعني ركناً ناقصاً: حساس لا يصل إلى المتحكم لن يؤثر في أي قرار، ومحرك لا يصل إليه سهم سيعمل دائماً أو لن يعمل أبداً. وإذا لم تستطع أن تكتب جملة واحدة تصف ما يفعله المتحكم بقراءة حساس معيّن، فهذا الحساس زائد في تصميمك، وحذفه يوفّر مالاً ووقتاً.

  • الروبوت يجمع ثلاثة أركان: حساس يجمع المعلومة، ومتحكم يقرر، ومُفعّل ينفّذ.
  • التغذية الراجعة تجعل الروبوت يقيس أثر فعله ويصحّحه، وهذا ما يميّز الحلقة المغلقة.
  • الشكل البشري والتنقّل ليسا شرطاً؛ الباب الآلي وذراع المصنع روبوتات.
  • ارسم أسهماً من كل حساس إلى المتحكم ومنه إلى كل محرك لتكشف الركن الناقص.

مخطط

حساسقرار/برمجة
محرك/فعل
تغيير في العالم
(يقرأ الحساس من جديد)

مختبر: تصنيف الأجهزة

اكتب 5 أجهزة في بيتك. لكل واحد: هل فيه حساس؟ قرار؟ فعل؟ حلقة مغلقة أم مفتوحة؟ ثم صنّفه في إحدى الدرجات الأربع.

مهمة عملية

ارسم مخططاً لروبوت تنظيف يوضح مكان كل حساس والمتحكم والمحركات، مع سهم لكل اتصال، واكتب بجانب كل حساس القرار الذي يؤثر فيه.

اختبر فهمك (1/3)

أي جهاز أقرب لتعريف الروبوت؟

اختبر فهمك (2/3)

مكيّف يقيس حرارة الغرفة ويشغّل الضاغط أو يوقفه حسب القراءة. ماذا يمثّل؟

اختبر فهمك (3/3)

باب مركز تجاري ينفتح عند اقتراب شخص. لماذا يحقق تعريف الروبوت رغم أنه لا يتنقّل؟

للاستزادة: IEEE Spectrum: قسم الروبوتات · MIT OpenCourseWare: مقدمة في الروبوتات · OSHA: الروبوتات في بيئة العمل

2. الحساسات والمحركات — حواس الروبوت وأعضاؤه

الهدف: تربط كل سؤال يحتاجه الروبوت بحساس مناسب، وتحسب قراءة حساس المسافة، وتختار المُفعّل الصحيح لكل حركة.

الحساس يجيب عن سؤال واحد محدد، ولهذا يبدأ الاختيار الصحيح بكتابة أسئلة الروبوت قبل فتح أي متجر. إذا كتبت «هل أمامي عائق؟» و«هل خرجت عن المسار؟» فقد حددت نصف قائمة القطع. أما من يبدأ بشراء «كل الحساسات المتاحة» فينتهي غالباً بعلبة قطع لا يعرف ماذا يفعل بها.

جدول القرار الذي يحتاجه أغلب المبتدئين، مكتوباً سطراً سطراً:
• «كم يبعد أقرب جسم أمامي؟» حساس مسافة بالموجات فوق الصوتية (Ultrasonic) مثل HC-SR04، ومداه في ورقة بياناته من 2 سم إلى 4 أمتار تقريباً، بزاوية رصد ضيقة نحو 15 درجة.
• «هل تحتي خط أسود؟» حساس خط بالأشعة تحت الحمراء (IR) يقيس كمية الضوء المنعكس من الأرضية.
• «هل المكان مضيء؟» مقاومة ضوئية (LDR) تتغير مقاومتها مع شدة الضوء.
• «هل اصطدمت فعلاً؟» مفتاح تلامس (Limit switch)، وهو أرخص خط دفاع وأوثقه.
• «في أي اتجاه أميل أو أدور؟» وحدة قياس القصور الذاتي (IMU) تجمع مقياس تسارع وجيروسكوب.

كيف يحسب حساس الموجات فوق الصوتية المسافة؟ يرسل نبضة صوتية لا تسمعها، ثم يقيس زمن عودة الصدى. الصوت في الهواء عند نحو 20 درجة مئوية يقطع قرابة 343 متراً في الثانية، أي 0.0343 سم في كل ميكروثانية. ولأن الصوت يذهب إلى الجسم ثم يعود، نقسم الناتج على 2. مثال: إذا أعادت الدالة pulseIn() في Arduino زمناً قدره 1166 ميكروثانية، فالمسافة = 1166 × 0.0343 ÷ 2 ≈ 20 سم. وإذا كان الزمن 583 ميكروثانية فالمسافة نحو 10 سم. هذه المعادلة الصغيرة هي ما ستكتبه في الكود حرفياً، وتستطيع التحقق منها بمسطرة وعلبة كرتون.

بعض الحساسات يعطي إجابة نعم أو لا، فمفتاح التلامس مثلاً يعطي HIGH أو LOW. وبعضها يعطي قيمة متدرجة؛ في لوحة Arduino Uno تحوّل الدالة analogRead() الجهد على المنفذ التناظري إلى رقم بين 0 و 1023. مع مقاومة ضوئية موصولة كمقسّم جهد قد تقرأ نحو 850 في غرفة مضيئة ونحو 120 في الظلام، لكن الأرقام الدقيقة تختلف حسب المقاومة الثابتة التي تختارها. لذلك قِس القيمتين بنفسك أولاً، ثم اختر حد القرار في المنتصف بينهما.

المُفعّلات تحوّل القرار إلى فعل، ولكل حركة نوع يناسبها:
• محرك تيار مستمر (DC): دوران مستمر للعجلات. تتحكم في سرعته بتعديل عرض النبضة (PWM) عبر analogWrite() بقيمة من 0 إلى 255، وفي اتجاهه عبر دائرة تشغيل (Motor driver) مثل L298N أو TB6612FNG.
• محرك سيرفو (Servo): يذهب إلى زاوية تحددها، غالباً بين 0 و 180 درجة، ويحافظ عليها بتغذية راجعة داخلية. مناسب لذراع صغيرة أو بوابة.
• محرك خطوي (Stepper): يتحرك بخطوات محددة العدد، فتعرف موضعه بعدّ الخطوات، ولهذا تستخدمه الطابعات ثلاثية الأبعاد.
• LED وجرس (Buzzer): لا يحرّكان شيئاً، لكنهما مُفعّلات تخاطب الإنسان بإشارة ضوئية أو صوتية.

مثال تصميم: روبوت يتبع مصباحاً يدوياً. تضع مقاومتين ضوئيتين في المقدمة، يساراً ويميناً، ومحركي DC للعجلتين. القاعدة: إذا قرأت اليسرى 700 واليمنى 400، فالضوء في اليسار، فتبطئ العجلة اليسرى لينعطف الروبوت نحوه. وإذا كان الفرق بين القراءتين أقل من 50، فاعتبرهما متساويتين وتقدّم مستقيماً، وإلا ظل الروبوت يتمايل يميناً ويساراً بسبب فروق صغيرة لا معنى لها. حساس واحد لا يكفي هنا، لأنه يخبرك هل يوجد ضوء، ولا يخبرك أين يوجد.

الخطأ الذي يتلف أكثر لوحات المبتدئين هو توصيل محرك DC مباشرة بمنفذ Arduino. المنفذ مصمّم لتيارات صغيرة تكفي LED، بينما يسحب المحرك الصغير مئات المللي أمبير، وأكثر عند بدء الدوران. المحرك يحتاج دائماً دائرة تشغيل ومصدر طاقة مستقلاً، مع توصيل الأرضي (GND) بين المصدر والمتحكم. والسيرفو أيضاً يسحب طاقة ملحوظة حين يتحرك تحت حمل، فإذا شغّلت أكثر من سيرفو أو اثنين فستحتاج غالباً مصدراً منفصلاً بدل منفذ 5 فولت في اللوحة.

  • اكتب أسئلة الروبوت أولاً، ثم اختر لكل سؤال حساساً يجيب عنه.
  • حساس الموجات فوق الصوتية: المسافة تساوي الزمن × 0.0343 ÷ 2 بالسنتيمتر.
  • قِس قراءات الحساس التناظري بنفسك ثم اختر حد القرار بين القيمتين.
  • المحرك لا يوصل بمنفذ المتحكم مباشرة؛ يحتاج دائرة تشغيل ومصدراً مستقلاً وأرضياً مشتركاً.

مخطط

Ultrasonicمسافة
LDRضوء
IRخط
قرار
DC / Servo / Stepper

مختبر: جدول الحساسات

جدول 5 صفوف: سؤال الروبوت | الحساس | نوع القراءة (رقمية/تناظرية) | فعل مقترح. ثم احسب المسافة لزمن صدى 1750 ميكروثانية.

مهمة عملية

صمّم روبوتاً يتبع الضوء: حدد الحساسين ومكانهما، والمحركين ودائرة التشغيل، واكتب قاعدة القرار مع هامش الفرق الذي يمنع التمايل.

اختبر فهمك (1/3)

أعاد حساس الموجات فوق الصوتية زمن صدى 583 ميكروثانية. كم المسافة تقريباً؟

اختبر فهمك (2/3)

في روبوت يتبع الضوء، لماذا لا تكفي مقاومة ضوئية واحدة؟

اختبر فهمك (3/3)

باب صغير يجب أن يفتح إلى زاوية 90 درجة بالضبط ويثبت عندها. أي مُفعّل تختار؟

للاستزادة: ورقة بيانات حساس HC-SR04 (PDF) · Arduino: الدالة analogRead · Arduino: محركات السيرفو · Adafruit: دليل اختيار المحركات

3. Arduino والمتحكم — فكرة بلا قطع (عقلية المحاكاة)

الهدف: تفهم لوحة التحكم بوصفها «دماغ» الروبوت، وتختار المحاكي المناسب، وتشغّل أول برنامج حقيقي دون شراء عتاد.

لوحة Arduino تحمل متحكماً دقيقاً (Microcontroller)، وهو حاسوب صغير جداً بلا شاشة ولا نظام تشغيل، يشغّل برنامجاً واحداً ترفعه إليه من حاسوبك عبر USB، ثم يكرره ما دامت الطاقة موصولة. لوحة Arduino Uno تعمل بمنطق 5 فولت، بينما تعمل لوحات مثل ESP32 بمنطق 3.3 فولت. لهذا الفرق أثر عملي مباشر: حساس يخرج إشارة 5 فولت قد يتلف منفذاً في لوحة 3.3 فولت، لذلك تكتب جهد اللوحة في أعلى ورقة التصميم قبل أن تختار أي حساس.

وتستطيع أن تتعلّم كل ذلك دون أن تشتري قطعة واحدة، بشرط أن تختار المحاكي المناسب للمرحلة:
• Tinkercad Circuits: محاكي بصري في المتصفح، تسحب فيه لوحة Uno ولوحة تجارب و LED وتوصّل الأسلاك بالفأرة. الأنسب لأول دائرة، لأنه يريك شكل التوصيل كما سيبدو على الطاولة.
• Wokwi: محاكي في المتصفح يدعم Arduino و ESP32 و Raspberry Pi Pico، ويحتوي قطعاً كثيرة مثل حساس HC-SR04 والسيرفو، مع شاشة Serial لقراءة الأرقام. الأنسب حين يصبح الكود هو محور العمل.
• Webots و Gazebo: محاكيات روبوتات ثلاثية الأبعاد بفيزياء (احتكاك، كتلة، تصادم) تحاكي روبوتاً كاملاً في بيئة. يرتبط Gazebo كثيراً بإطار ROS 2، ويحتاج الاثنان حاسوباً أقوى. هذه مرحلة لاحقة بعد إتقان الأساسيات.

قاعدة الاختيار المختصرة: إذا كان سؤالك «هل التوصيل صحيح؟» فابدأ بـ Tinkercad. وإذا كان «هل الكود يقرأ الحساس ويقرر صحيحاً؟» فاستخدم Wokwi. وإذا كان «هل يستطيع الروبوت كله عبور هذه الغرفة؟» فقد وصلت إلى Webots أو Gazebo.

جولة عملية في Wokwi لمشروع «زر يشغّل LED»:
1) افتح wokwi.com واختر مشروعاً جديداً بلوحة Arduino Uno.
2) أضف زر ضغط (Pushbutton) من قائمة القطع، ووصّل طرفاً منه بالمنفذ 2 والطرف الآخر بالأرضي GND.
3) استخدم LED المدمج في اللوحة على المنفذ 13، فلا تحتاج قطعة إضافية.
4) الصق الكود التالي في محرر الكود، ثم اضغط زر التشغيل الأخضر.
5) اضغط الزر الافتراضي بالفأرة، وراقب LED على اللوحة.

const int BUTTON_PIN = 2;
const int LED_PIN = 13;
void setup() {
  pinMode(BUTTON_PIN, INPUT_PULLUP);
  pinMode(LED_PIN, OUTPUT);
}
void loop() {
  if (digitalRead(BUTTON_PIN) == LOW) {
    digitalWrite(LED_PIN, HIGH);
  } else {
    digitalWrite(LED_PIN, LOW);
  }
}

الدالة setup() تُنفَّذ مرة واحدة عند التشغيل أو بعد زر Reset، وفيها تحدد دور كل منفذ. والدالة loop() تتكرر بلا توقف، وفيها تقرأ وتقرر وتنفّذ. الخيار INPUT_PULLUP يفعّل مقاومة داخلية تجعل المنفذ يقرأ HIGH حين يكون الزر متروكاً، فإذا ضغطته وصل المنفذ بالأرضي فقرأ LOW. لهذا يقارن الشرط بـ LOW، وهي نقطة تربك كثيرين في المرة الأولى.

سجل أعطال حقيقي من أول تجربة، مع السبب والعلاج:
• العَرَض: LED لا يستجيب للضغط أبداً. السبب: سطر القراءة وُضع داخل setup() فقُرئ الزر مرة واحدة لحظة التشغيل. العلاج: انقل القراءة إلى loop().
• العَرَض: LED يومض عشوائياً دون لمس الزر. السبب: الزر موصول بلا مقاومة سحب، فالمنفذ «عائم» يلتقط تشويشاً. العلاج: استخدم INPUT_PULLUP أو مقاومة خارجية.
• العَرَض: LED مضاء دائماً وينطفئ عند الضغط. السبب: الشرط يقارن بـ HIGH مع أن الزر يعطي LOW عند الضغط. العلاج: اقلب المقارنة.

حين تنتقل لاحقاً إلى قطع حقيقية، ضع مقاومة 220 أوم في سلسلة مع أي LED خارجي، لأن المحاكي قد يسامحك في أشياء لا يسامحك فيها العالم الحقيقي. واحفظ رابط مشروع Wokwi أو Tinkercad في دفترك مع تاريخ اليوم، فهو أول صفحة في محفظة مشاريعك، ويتيح لزميل أو معلّم أن يفتح الدائرة نفسها ويجرّبها. والتسلسل الذي يوفّر مالك ووقتك: فكّر، ثم ارسم، ثم حاكِ، ثم اشترِ.

  • اكتب جهد اللوحة (5 أو 3.3 فولت) قبل اختيار أي حساس.
  • Tinkercad للتوصيل البصري، و Wokwi لاختبار الكود، و Webots أو Gazebo لروبوت كامل.
  • setup تعمل مرة واحدة، و loop تتكرر وفيها تكون القراءة والقرار.
  • مع INPUT_PULLUP يقرأ الزر المضغوط LOW، فاكتب الشرط على هذا الأساس.

مخطط

  setup() مرة
       |
       v
  +----------+
  |  loop()  |--+
  +----------+  |
       ^        |
       +--------+
  (قراءة -> قرار -> كتابة pin)

مختبر: أول محاكاة

نفّذ مشروع الزر و LED في Wokwi. ثم عدّل الكود ليبقى LED مضاءً ثانيتين بعد ترك الزر. سجّل ما تغيّر.

مهمة عملية

شغّل كود الدرس في Wokwi أو Tinkercad، ثم اكسر التوصيل عمداً بإزالة INPUT_PULLUP، وسجّل العَرَض الذي ظهر وسببه وطريقة علاجه.

اختبر فهمك (1/3)

ماذا تفعل الدالة loop() في برنامج Arduino؟

اختبر فهمك (2/3)

زر موصول بالمنفذ 2 مع INPUT_PULLUP. ماذا يقرأ المنفذ حين تضغط الزر؟

اختبر فهمك (3/3)

تريد اختبار هل يعبر روبوتك كاملاً غرفة فيها عوائق بفيزياء واقعية. أي أداة أنسب؟

للاستزادة: وثائق Wokwi · Arduino: مثال الزر الرسمي · Arduino: الدالة setup · Webots: أول محاكاة

4. المنطق والحلقات — كيف «يفكر» الروبوت

الهدف: تكتب منطق روبوت بالشروط والحلقات، وترتّب الشروط حسب الخطورة، وتنظّم السلوك بمخطط حالات.

كل ما تسميه «تفكير» الروبوت يحدث داخل حلقة واحدة تتكرر: اقرأ الحساسات، قرّر، نفّذ، ثم ابدأ من جديد. في Arduino هذه الحلقة هي loop()، وإذا لم يبطئها شيء فقد تدور آلاف المرات في الثانية. هذه السرعة نعمة، لأن الروبوت يلاحظ التغيير فوراً، لكنها تكشف أي ثغرة في شروطك بسرعة أيضاً.

الشرط (if/else) هو أداة القرار. «إذا المسافة أقل من 15 سم توقف، وإلا تقدّم». كلمة «وإلا» مهمة أكثر مما تبدو، لأنها تضمن أن للروبوت تصرفاً في كل الحالات، لا في الحالة التي فكّرت فيها فقط. روبوت بلا else يتوقف عند العائق، ثم يبقى واقفاً بعد زواله، لأن أحداً لم يقل له ماذا يفعل حين يصبح الطريق خالياً.

قبل وبعد — ترتيب الشروط. هذا كود كتبه طالب لروبوت يبطئ قرب العوائق:
قبل:
إذا المسافة < 30: تقدّم ببطء
إذا المسافة < 15: توقف
إذا المسافة >= 30: تقدّم بسرعة
عند 10 سم يتحقق الشرطان الأول والثاني، فيرسل البرنامج أمرين متعارضين في الدورة نفسها، وينتصر آخرهما بالصدفة. بعد إعادة الكتابة بالترتيب من الأخطر إلى الأقل خطراً:
إذا المسافة < 15: توقف
وإلا إذا المسافة < 30: تقدّم ببطء
وإلا: تقدّم بسرعة
الآن يُنفَّذ فرع واحد فقط في كل دورة، والحالة الأخطر تُفحص أولاً.

الحلقة نوعان في عالم الروبوت. حلقة المراقبة اللانهائية مثل loop() تراقب العالم باستمرار، وحلقة العدّ مثل for تكرر شيئاً عدداً محدداً ثم تتوقف. في مهمة «3 ومضات ثم استراحة» تتبّع العداد بإصبعك: يبدأ صفراً، فيتحقق الشرط «العداد أقل من 3» فيومض LED ويصبح العداد 1، ثم 2، ثم 3، وعندها يفشل الشرط فينتقل البرنامج إلى الاستراحة. لو نسيت سطر زيادة العداد لبقي صفراً إلى الأبد، ولعلق البرنامج في وميض لا ينتهي.

مشكلة تظهر سريعاً: الدالة delay() توقف البرنامج كله. إذا كتبت delay(2000) ليستريح LED ثانيتين، فالروبوت أعمى طوال الثانيتين ولن يرى عائقاً يظهر أمامه. الحل الذي تشرحه وثائق Arduino في مثال BlinkWithoutDelay هو millis()، وهي دالة تعيد عدد المللي ثواني منذ التشغيل. تحفظ وقت آخر تغيير في متغير، وفي كل دورة تسأل: هل مرّ 2000 مللي ثانية منذ ذلك الوقت؟ إن نعم فغيّر حالة LED واحفظ الوقت الجديد، وإن لا فتابع قراءة الحساسات. بهذه الطريقة يومض LED والروبوت يراقب الطريق في الوقت نفسه.

الحد الواحد يسبب ارتعاشاً. افترض أن الروبوت يتوقف تحت 20 سم ويتقدّم فوقها. عند 20 سم تماماً تتأرجح القراءة بين 19 و 21 بسبب التشويش، فيتوقف ويتقدّم عشر مرات في الثانية. العلاج اسمه التخلّف المقصود (Hysteresis): توقف تحت 20 سم، لكن لا تعد للتقدّم إلا فوق 30 سم. الفجوة بين الحدين تمتص التشويش، وهي الفكرة نفسها التي تجعل المكيّف لا يشغّل الضاغط ويطفئه كل ثانية.

حين تكثر الشروط المتداخلة، انتقل إلى مخطط الحالات (State machine). حدّد حالات الروبوت: تقدّم، توقّف، دوران. ارسم كل حالة دائرة، والأسهم بينها شروط الانتقال: من «تقدّم» إلى «توقّف» عند ظهور عائق أقرب من 20 سم، ومن «توقّف» إلى «دوران» بعد نصف ثانية، ومن «دوران» إلى «تقدّم» حين تتجاوز المسافة 30 سم. في الكود يصبح ذلك متغيراً واحداً يحمل اسم الحالة الحالية، وجملة شرطية تختار ما يُنفَّذ حسبه. الرسم يكشف الحالات المنسية قبل كتابة أي سطر، مثل: ماذا يفعل الروبوت إذا ظهر عائق أثناء الدوران نفسه؟

  • رتّب الشروط من الأخطر إلى الأقل خطراً واستخدم «وإلا إذا» لينفَّذ فرع واحد.
  • delay يعمي الروبوت أثناء الانتظار، و millis تسمح بالانتظار مع استمرار المراقبة.
  • حدّان متباعدان للتوقف والعودة (Hysteresis) يمنعان الارتعاش عند الحد.
  • مخطط الحالات يحوّل كومة الشروط إلى دوائر وأسهم تكشف الحالات المنسية.

مخطط

loop
قراءة حساس
مسافة OK
عائق
تقدم
توقف+دوران

مختبر: مخطط حالات

ارسم 3 دوائر (تقدم، توقف، دوران) وأسهم «متى ننتقل؟» لروبوت يتجنب حافة الطاولة. أضف سهماً لحالة ظهور الحافة أثناء الدوران.

مهمة عملية

اكتب pseudocode كاملاً لـ «3 ومضات ثم استراحة» بمتغير عدّ، ثم تتبّع قيمة العداد في جدول من أربعة أسطر وتأكد أن الاستراحة تأتي بعد الومضة الثالثة.

اختبر فهمك (1/3)

لماذا يُعدّ استخدام delay(2000) خطراً في روبوت يتجنب العوائق؟

اختبر فهمك (2/3)

برنامج فيه شرطان منفصلان: «إذا المسافة < 30 تقدّم ببطء» ثم «إذا المسافة < 15 توقف». ماذا يحدث عند 10 سم؟

اختبر فهمك (3/3)

روبوت يتوقف تحت 20 سم ويتقدّم فوقها، فيرتعش عند الحد. ما العلاج؟

للاستزادة: Arduino: الدالة loop · Arduino: مثال BlinkWithoutDelay · Arduino: الدالة millis

5. قصة تجنّب العوائق — من الفكرة إلى الخوارزمية

الهدف: تبني سلوك تجنّب العوائق على مراحل، وتعالج أعطاله الشائعة، وتفهم فكرة التحكم التناسبي (PID) بالحدس.

هذه قصة فريق من ثلاثة طلاب في نادي العلوم بمدرسة في طنطا، أرادوا سيارة روبوتية صغيرة تتجول في فصلهم دون أن تصطدم. الروبوت: هيكل بعجلتين يحركهما محركا DC عبر دائرة تشغيل، وحساس HC-SR04 في المقدمة، ولوحة Arduino Uno. بدأ الفريق بالمحاكاة في Wokwi، ثم نقل الكود إلى القطع الحقيقية. كل نسخة من الخوارزمية حلّت مشكلة وكشفت أخرى، وهذا هو المسار الطبيعي لأي مشروع روبوت.

النسخة الأولى كانت قاعدة تشغيل وإيقاف بسيطة:

loop:
  مسافة = اقرأ_Ultrasonic()
  إذا مسافة < 10: أوقف المحركين
  وإلا: تقدّم بأقصى سرعة
  انتظر 100ms

في أول اختبار اصطدم الروبوت بالحائط رغم أن الكود صحيح. الحساب يشرح السبب: الروبوت يتحرك بنحو 50 سم في الثانية ويقرأ كل عُشر ثانية، أي أنه يقطع 5 سم بين قراءة وأخرى، ثم ينزلق بضعة سنتيمترات بعد قطع التيار عن المحرك. حد 10 سم لا يترك مساحة كافية. رفع الفريق الحد إلى 25 سم، وأضاف بعد التوقف رجوعاً لمدة ثانية ودوراناً يميناً لمدة نصف ثانية. القاعدة العامة: كلما زادت السرعة أو طالت الفترة بين القراءات، كبر الهامش المطلوب.

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

المشكلة الثالثة كانت رجوعاً مفاجئاً بلا سبب. سجّل الفريق القراءات على شاشة Serial فوجد بينها أصفاراً متفرقة؛ فحين لا يرتد الصدى إلى الحساس، مثلاً عن قماش ستارة أو سطح مائل، يعيد الكود صفراً، فيفهمه البرنامج عائقاً ملاصقاً. جربوا متوسط ثلاث قراءات، فكانت القراءات 24 و 0 و 26 تعطي متوسطاً 16.7 سم، وهو رقم مضلل. ثم جربوا الوسيط (Median)، أي القيمة الوسطى بعد الترتيب، فكانت النتيجة 24 سم، وهي الصحيحة. الوسيط يتجاهل القراءة الشاذة بدل أن يخلطها بالباقي.

بعد ذلك لاحظ الفريق أن التوقف المفاجئ من أقصى سرعة يهزّ الروبوت ويجعله ينزلق. هنا تأتي فكرة التحكم التناسبي، وهي الحرف الأول من متحكم PID الشهير. بدل «تقدّم بأقصى سرعة أو توقف»، اجعل السرعة تتناسب مع الخطأ، والخطأ هو الفرق بين المسافة الحالية والمسافة المطلوبة:
الخطأ = المسافة − 25
السرعة = 4 × الخطأ، بحد أقصى 200 وحد أدنى صفر (من مقياس analogWrite الذي يصل إلى 255)
• عند 75 سم: الخطأ 50، والناتج 200، فيسير بأقصى السرعة المسموحة.
• عند 50 سم: الخطأ 25، فالسرعة 100.
• عند 30 سم: الخطأ 5، فالسرعة 20 ويكاد يزحف.
• عند 25 سم: الخطأ صفر، فيتوقف بنعومة.

الرقم 4 يسمى معامل التناسب. إذا كبّرته كثيراً صار الروبوت عصبياً يندفع ويتأرجح حول الهدف، وإذا صغّرته صار بطيئاً كسولاً، ويُضبط بالتجربة. أما الحرفان الباقيان فمعناهما بالحدس: التكامل (I) يجمع الخطأ الصغير المتبقي عبر الزمن ليدفع الروبوت إلى الهدف حين لا يكفي الدفع التناسبي للتغلب على الاحتكاك، والتفاضل (D) ينظر إلى سرعة تغيّر الخطأ فيكبح الاندفاع قبل تجاوز الهدف. في مشاريع المبتدئين يكفي الحد التناسبي غالباً، ويضاف التفاضل حين يظهر تأرجح واضح.

بقيت ملاحظة أخيرة دوّنها الفريق: رِجل كرسي رفيعة لا تعكس الصوت جيداً، فاصطدم بها الروبوت مرتين. هذا حد من حدود الحساس، ولن يصلحه أي تعديل في الكود. أضاف الفريق مفتاح تلامس في مقدمة الروبوت كخط دفاع ثانٍ، فإذا ضُغط توقف الروبوت ورجع مهما قال حساس المسافة. تعدد أنواع الحساسات لتغطية نقاط ضعف بعضها مبدأ تستخدمه السيارات ذاتية القيادة نفسها.

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

مخطط

  -->-->-->?
            |
         [عائق]
            |
   سرعة = 4 × (مسافة − 25)
            |
   توقف ناعم -> التفات -> أبعد جهة

مختبر: جدول التحكم التناسبي

احسب السرعة عند 100 و 60 و 40 و 27 و 25 سم بمعامل 4 ثم بمعامل 10. أي المعاملين يجعل الاقتراب أنعم؟ وأيهما يسبب اندفاعاً؟

مهمة عملية

اكتب pseudocode كاملاً لتجنّب عائق أمامي يستخدم وسيط ثلاث قراءات وسرعة تناسبية ورجوعاً ودوراناً، ثم اختبره ذهنياً على القراءات 40 و 0 و 38.

اختبر فهمك (1/3)

ثلاث قراءات متتالية للمسافة: 24 و 0 و 26 سم. أي معالجة تعطي قيمة أقرب للحقيقة؟

اختبر فهمك (2/3)

بالمعادلة «السرعة = 4 × (المسافة − 25)»، كم السرعة عند 50 سم؟

اختبر فهمك (3/3)

رفعت معامل التناسب كثيراً فصار الروبوت يندفع ويتأرجح حول نقطة التوقف. ماذا تفعل؟

للاستزادة: Wokwi: حساس HC-SR04 الافتراضي · Arduino: الدالة pulseIn · NI: شرح نظرية PID

6. تعليمات البناء = خوارزميات — فكّر كمهندس

الهدف: تحوّل خطوات تركيب غامضة إلى خوارزمية دقيقة، وتطبّق الفكرة نفسها على تخطيط مسار روبوت فوق شبكة.

كتيّب تركيب الدولاب أو علبة LEGO برنامج مكتوب للإنسان: «الخطوة 3: ثبّت العجلة على المحور B». الإنسان هنا هو المعالج الذي ينفّذ، والورقة هي الكود. وكما يتعطل الروبوت ببرنامج غامض، يتعطل الإنسان بتعليمات غامضة، ثم يلوم نفسه بدل أن يلوم الكتيّب. الخوارزمية (Algorithm) في أبسط تعريف: خطوات محددة ومرتبة ومنتهية، تأخذ مدخلات وتصل إلى نتيجة، ولا تترك للمنفّذ أي تخمين.

قبل وبعد — خطوة من دليل تركيب سيارة روبوتية كتبها طالب لزميله:
قبل: «ركّب المحركات ووصّلها وثبّت البطارية».
بعد التحويل:
1) ثبّت المحرك الأيسر في الفتحة اليسرى بمسمارين، والعمود متجه إلى الخارج.
2) كرّر الخطوة للمحرك الأيمن.
3) وصّل سلكي المحرك الأيسر بطرفي OUT1 و OUT2 في دائرة التشغيل.
4) وصّل سلكي المحرك الأيمن بطرفي OUT3 و OUT4.
5) ثبّت علبة البطاريات بشريط لاصق مزدوج في منتصف الهيكل، واترك مفتاحها على OFF.
6) تحقّق: هل يدور كل عمود بحرية باليد؟ إن لم يدر فالمسامير مشدودة أكثر من اللازم.

الجملة الأصلية كانت تخفي ثلاثة أفعال وعشرات القرارات. في النسخة الجديدة كل سطر فعل واحد، له نتيجة تراها بعينك، وآخرها خطوة تحقق. لاحظ أيضاً عبارة «والعمود متجه إلى الخارج»: هذه معلومة يعرفها الكاتب ولا يعرفها المنفّذ، وغيابها هو سبب نصف أخطاء التركيب. حين تحوّل فيديو تركيب إلى خطوات مكتوبة، شاهده كاملاً مرة دون كتابة، ثم أعد تشغيله وأوقفه عند كل تغيير في يد المركّب؛ كل إيقاف غالباً خطوة، وكل شيء يفعله المركّب دون أن يذكره خطوة يجب أن تُكتب.

الفكرة نفسها تحكم أصعب مسائل الروبوتات المتنقلة: تخطيط المسار (Path planning). الروبوت الذي يعرف خريطة المكان يحتاج تعليمات دقيقة للوصول من نقطة البداية إلى الهدف بأقصر طريق، دون أن يمر عبر عائق. أبسط طريقة لفهم ذلك تقسيم الأرض إلى شبكة مربعات، بعضها فارغ وبعضها مشغول، ثم تطبيق خوارزمية الموجة (Wavefront)، وهي صورة مبسطة من البحث بالعرض أولاً (Breadth-First Search).

مثال محلول على شبكة 4 × 4، حيث S البداية و G الهدف و # عائق و . مربع فارغ:

S . . #
. # . .
. # . G
. . . .

الخطوات: اكتب 0 في مربع الهدف. اكتب 1 في كل مربع فارغ ملاصق له أفقياً أو رأسياً. ثم اكتب 2 في كل مربع فارغ ملاصق لمربعات الرقم 1 ولم يُرقّم بعد، وهكذا حتى تصل الموجة إلى البداية. النتيجة:

5 4 3 #
6 # 2 1
5 # 1 0
4 3 2 1

الآن تعليمات الروبوت سطر واحد: من مربعك الحالي، انتقل إلى أي جار رقمه أصغر بواحد. البداية رقمها 5، فيتحرك إلى 4 ثم 3 على الصف العلوي، ثم ينزل إلى 2، ثم إلى 1، ثم يصل إلى الهدف 0 في خمس حركات، وهو أقصر طريق ممكن على هذه الشبكة. لاحظ أن المربع الذي رقمه 6 لم يكن على الطريق؛ الموجة رقّمت كل المربعات، لكن الروبوت يتبع الأرقام النازلة فقط.

هذه الطريقة مضمونة على الشبكات الصغيرة، لكنها ترقّم كل مربع حتى البعيد عن الهدف. خوارزمية A* (تُنطق «إيه ستار») تحسّنها بإضافة تقدير للمسافة المتبقية، فتبحث أولاً في اتجاه الهدف وتوفّر وقتاً كبيراً على الخرائط الضخمة. وفي إطار ROS 2 توجد حزمة Nav2 التي تجمع مخططات مسار كهذه مع خرائط حقيقية يرسمها الروبوت بحساساته. الفكرة الأساسية لم تتغير: خريطة واضحة، وقاعدة لا تحتاج تخميناً، ونتيجة يمكن التحقق منها.

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

  • الخوارزمية خطوات محددة ومرتبة ومنتهية لا تترك للمنفّذ أي تخمين.
  • كل سطر في تعليمات البناء فعل واحد بنتيجة يمكن رؤيتها، مع خطوة تحقق في النهاية.
  • خوارزمية الموجة ترقّم الشبكة من الهدف، ثم يتبع الروبوت الأرقام النازلة إلى أقصر طريق.
  • A* تضيف تقديراً للمسافة المتبقية فتبحث نحو الهدف أولاً وتوفّر الوقت.

مخطط

 5 4 3 #
 6 # 2 1
 5 # 1 0
 4 3 2 1

 S(5) -> 4 -> 3 -> 2 -> 1 -> G(0)

مختبر: موجة على شبكة

ارسم شبكة 5 × 5 فيها 5 عوائق وبداية وهدف. رقّمها بخوارزمية الموجة، ثم ارسم مسار الروبوت. ثم أعطِ الشبكة لصديق ليرقّمها: هل وصل إلى الأرقام نفسها؟

مهمة عملية

حوّل فيديو تركيب قصيراً إلى قائمة مرقّمة عربية، كل سطر فيها فعل واحد، مع خطوة تحقق في النهاية، ثم اختبرها على شخص لم يشاهد الفيديو وسجّل أسئلته.

اختبر فهمك (1/3)

أي صياغة لتعليمات البناء تتبع صفات الخوارزمية الجيدة؟

اختبر فهمك (2/3)

في خوارزمية الموجة، الروبوت في مربع رقمه 4. إلى أي جار ينتقل؟

اختبر فهمك (3/3)

ما الذي تضيفه خوارزمية A* مقارنة بالموجة البسيطة؟

للاستزادة: Red Blob Games: مقدمة مصوّرة في البحث بالعرض و A* · Khan Academy: الخوارزميات · وثائق Nav2 للملاحة في ROS 2

7. مشاريع DIY آمنة — ابدأ صغيراً وبأمان

الهدف: تختار مشروعاً مناسباً لمستواك، وتقيّم مخاطره قبل البدء، وتطبّق قائمة تحقق قبل أول تشغيل.

أفضل مشروع أول هو المشروع الذي تنهيه. المشروع الضخم الذي يتوقف في منتصفه يعلّمك الإحباط أكثر مما يعلّمك الإلكترونيات، لذلك رتّب طموحك في سلّم تصعده درجة درجة: LED يومض، ثم زر يبدّل حالة LED مع كل ضغطة، ثم جرس ينبّه عند الظلام بمقاومة ضوئية، ثم سيرفو يحرّك ذراعاً من الكرتون، ثم روبوت يتبع الخط من طقم (Kit) جاهز. الطقم في هذه المرحلة يوفّر عليك مشكلات الهيكل وتوافق القطع، فتركّز على المنطق والتوصيل.

قبل أي مشروع، فكّر في كل خطر بسؤالين: ما احتمال حدوثه؟ وما شدة الضرر إن حدث؟ الخطر الذي يجمع احتمالاً معقولاً وضرراً شديداً يُمنع أو يحتاج إشرافاً، والخطر الضعيف في الاثنين يكفيه الانتباه. طبّق ذلك على المخاطر الخمسة التي تتكرر في مشاريع الروبوت:

• كهرباء البيت: الشبكة في مصر 220 فولت متردد بتردد 50 هرتز، وهي قاتلة. الاحتمال منخفض إن التزمت بالقاعدة، لكن الضرر أقصى ما يكون، لذلك القاعدة مطلقة: مشاريع هذا المسار تعمل بجهد 5 فولت أو ببطاريات صغيرة فقط، ولا تفتح شاحناً أو جهازاً موصولاً بالحائط، ولا تستخدم ريليه يتحكم في جهاز منزلي إلا مع متخصص بالغ.
• بطاريات الليثيوم، مثل خلايا 18650 أو بطاريات LiPo: تخزّن طاقة كبيرة، وقصر طرفيها بسلك أو مفك قد يسخّنها بسرعة ويشعلها. اشحنها بشاحن مخصص لنوعها فقط، ولا تتركها تشحن دون مراقبة، وتوقف فوراً عن استخدام أي بطارية منتفخة أو مخدوشة. للبداية، علبة أربع بطاريات AA أكثر أماناً بكثير.
• اللحام: رأس الكاوية حار بما يكفي لحرق الجلد فوراً، ودخان مادة التنظيف (Flux) مهيّج للتنفس. لحام تحت إشراف بالغ، في مكان مهوّى، مع حامل للكاوية ونظارة واقية.
• القطبية: عكس طرفي البطارية قد يتلف اللوحة في لحظة. التزم بالأحمر للموجب والأسود للسالب في كل مشروع، حتى حين تبدو الأسلاك مؤقتة.
• الأجزاء المتحركة: عجلة أو ذراع سيرفو تقرص الأصابع أو تسقط الروبوت عن الطاولة. الضرر غالباً بسيط، لكن الاحتمال مرتفع، فيكفيه زر إيقاف وانتباه.

قائمة تحقق قبل أول تشغيل لأي روبوت متحرك:
1) الأرضي (GND) مشترك بين Arduino ودائرة تشغيل المحركات، وإلا تصرفت المحركات بعشوائية.
2) البطارية مشحونة، وقطبيتها مطابقة للعلامة على اللوحة.
3) لا أسلاك عارية تتلامس، ولا مسامير معدنية تلمس ظهر اللوحة.
4) العجلات مرفوعة عن الطاولة في أول تشغيل، حتى لا يندفع الروبوت ويسقط.
5) مفتاح يقطع البطارية فوراً، في مكان تصل إليه يدك بسهولة.
6) شخص آخر في الغرفة إن كان في المشروع لحام أو بطارية ليثيوم.

زر الإيقاف مبدأ يتجاوز مكتب الهواة بكثير. الروبوتات الصناعية تعمل خلف حواجز ومناطق محمية، ولها أزرار توقف طارئ، وتتناول المعايير الدولية مثل ISO 10218 متطلبات سلامتها، وتنشر هيئة السلامة المهنية الأمريكية OSHA إرشادات للعاملين حولها. الروبوتات التعاونية (Cobots) التي تعمل بجوار الإنسان مباشرة تُصمَّم لتحدّ من قوتها وسرعتها عند الاقتراب منه. المبدأ واحد في المصنع وعلى مكتبك: الإنسان يجب أن يستطيع إيقاف الآلة أسرع مما تؤذيه.

مثال BOM (قائمة قطع) لمشروع «LED وزر»:
• لوحة Arduino Uno أو متوافقة: 1
• لوحة تجارب (Breadboard): 1
• LED: 3، ومقاومة 220 أوم: 3 (اثنان من كل منهما احتياطي)
• زر ضغط صغير: 2
• أسلاك توصيل: 10
اكتب بجانب كل قطعة السعر الذي تجده بنفسك في محل إلكترونيات قريب أو متجر إلكتروني، مع تاريخ اليوم، لأن الأسعار تتغير كثيراً. شراء قطع رخيصة زائدة يوفّر عليك مشواراً ثانياً حين يحترق LED بتوصيل خاطئ.

وإن لم تكن لديك ميزانية الآن، فمحاكاة كاملة في Wokwi أو Tinkercad، أو روبوت ورقي يتحرك بأشرطة مطاطية، تعلّم حقيقي تبني عليه لاحقاً دون أي مخاطرة.

  • قيّم كل خطر باحتماله وشدة ضرره، وامنع ما يجمع الاثنين.
  • كهرباء البيت 220 فولت خط أحمر؛ مشاريع المبتدئ تعمل بجهد 5 فولت أو بطاريات صغيرة.
  • بطارية الليثيوم المنتفخة تُستبعد فوراً، والشحن بشاحن مخصص وتحت المراقبة.
  • كل روبوت متحرك يحتاج مفتاح قطع سريعاً ورفع العجلات في أول تشغيل.

مخطط

 احتمال ↑
   |  [أجزاء متحركة]   [ممنوع/إشراف]
   |
   |  [انتباه]          [كهرباء 220V]
   +----------------------------> شدة الضرر

مختبر: تقييم المخاطر

اختر مشروعاً واكتب كل خطر فيه مع احتماله (منخفض/متوسط/مرتفع) وشدته، ثم إجراء الوقاية. أضف قائمة التحقق الست قبل التشغيل.

مهمة عملية

اختر مشروعاً واحداً من سلّم المشاريع، واكتب له BOM بأسعار حقيقية مؤرخة، وجدول مخاطر من ثلاثة أسطر على الأقل مع إجراء وقاية لكل خطر.

اختبر فهمك (1/3)

أي مشروع أنسب كأول مشروع Arduino؟

اختبر فهمك (2/3)

بطارية ليثيوم في مشروعك صارت منتفخة قليلاً لكنها ما زالت تعمل. ما التصرف الصحيح؟

اختبر فهمك (3/3)

خطر احتماله مرتفع وضرره بسيط، مثل قرص الأصابع بعجلة. ما المعالجة المناسبة؟

للاستزادة: Adafruit: بطاريات الليثيوم أيون و LiPo · Adafruit: دليل اللحام الجيد · NFPA: سلامة بطاريات الليثيوم · OSHA: سلامة الروبوتات في العمل

8. مهن المستقبل في الروبوتات — أين تتعلّم؟

الهدف: تعرف المسارات المهنية الرئيسية في الروبوتات وما يفعله أصحابها فعلاً، وتبني خطة تعلّم واقعية من عمرك الحالي.

الروبوت الواحد يبنيه فريق من تخصصات مختلفة، ولهذا لا توجد مهنة واحدة اسمها «روبوتات». أفضل طريقة لفهم الخريطة أن تتخيل مهمة يوم عمل عادي في كل مسار، ثم تسأل نفسك: أي هذه المهام أستمتع بها حين أفعل نسخة صغيرة منها اليوم؟

أربع مهن ومهمة يوم عادي في كل منها:
• فني أو مهندس أتمتة صناعية: في مصنع تعبئة، يتوقف خط الإنتاج لأن ذراعاً روبوتية لا تلتقط العلب. يفتح سجل الأعطال، فيجد حساس قرب متسخاً، فينظفه ويختبر الخط. يحتاج فهم الكهرباء الصناعية وقراءة المخططات وبرمجة وحدات التحكم المنطقية القابلة للبرمجة (PLC).
• مهندس أنظمة مدمجة (Embedded): يكتب بلغة C أو C++ برنامجاً يقرأ حساس IMU مئات المرات في الثانية دون أن يتأخر. هذا الامتداد الطبيعي لما تفعله الآن في Arduino.
• مهندس ميكاترونكس (Mechatronics): يصمّم ذراعاً تجمع الميكانيكا والإلكترونيات والبرمجة، فيختار المحرك المناسب لوزن الحمولة ويحسب العزم ويضع الحساسات. تخصص يُدرَّس في كليات الهندسة وبعض الجامعات التكنولوجية.
• مهندس برمجيات روبوتات: يقضي يومه أمام محاكي مثل Gazebo، يختبر خوارزمية تخطيط مسار على خريطة مستودع قبل تشغيلها على الروبوت الحقيقي، ويستخدم إطار ROS 2 الذي يربط أجزاء البرنامج بعضها ببعض.

ما يجمع هذه المهن مهارات تبدأ من المدرسة. الرياضيات تظهر في نسب سرعة العجلات وزوايا الذراع ومعادلة حساس المسافة التي حسبتها في الدرس الثاني. الفيزياء تظهر في الحركة والقوة والكهرباء، وقانون أوم تحديداً، لأنه ما يخبرك بالمقاومة التي تحمي LED. البرمجة تبدأ بمنطق pseudocode، ثم C في Arduino، ثم Python التي يكثر استخدامها مع ROS 2 وفي الرؤية الحاسوبية. ويغفل كثيرون عن مهارتين: الإنجليزية التقنية، لأن معظم الوثائق الرسمية مكتوبة بها، والتوثيق الواضح، لأن الفريق يحتاج أن يفهم ما فعلته.

خطة من سن 13 إلى 18، تتقدّم خطوة كل عام تقريباً:
1) أساس المنطق: هذا المسار، ومحاكاة مشاريع بسيطة في Wokwi أو Tinkercad.
2) قطع حقيقية: طقم بسيط، ونادي روبوتات في المدرسة أو مركز شباب أو جمعية علمية قريبة.
3) مسابقات: برامج FIRST تقدّم فئات لأعمار مختلفة، منها FIRST LEGO League و FIRST Tech Challenge و FIRST Robotics Competition، والأولمبياد العالمي للروبوت WRO له فئات تبدأ من المرحلة الابتدائية. ابحث في الموقع الرسمي لكل منها عن الجهة المنظمة في بلدك وشروط العمر ومواعيد التسجيل.
4) خطوة متقدمة: تثبيت ROS 2 وتجربة دروسه الأولى مع محاكي السلحفاة Turtlesim، قبل اختيار التخصص الجامعي.

مثال تخيّلي لطالب في الصف الثالث الإعدادي: أنهى هذا المسار، وحاكى ثلاثة مشاريع، ثم تقدّم لفريق مدرسته. بدل أن يقول في المقابلة «أحب الروبوتات»، عرض دفتراً فيه لكل مشروع رسم التوصيل و pseudocode وصورة من المحاكي، وملاحظة عن عطل واجهه وكيف حلّه. هذا الدفتر محفظة مشاريع (Portfolio)، وهو دليل يثق به المدرب أكثر من شهادة حضور ندوة، لأنه يُظهر طريقة تفكيرك أمام المشكلة.

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

  • مهن الروبوتات تشمل الأتمتة الصناعية والأنظمة المدمجة والميكاترونكس وبرمجيات الروبوتات.
  • الرياضيات والفيزياء والبرمجة والإنجليزية التقنية أساس مشترك لكل المسارات.
  • مسابقات FIRST و WRO تسرّع التعلّم؛ راجع مواقعها الرسمية لشروط بلدك.
  • محفظة مشاريع فيها رسوم وكود وأعطال محلولة أقوى من شهادات الحضور.

مخطط

تعلّممحاكاةنادي/مسابقات
تخصص جامعي
أتمتة / مدمجة / ميكاترونكس / برمجيات

مختبر: بطاقة مهنة

اختر مهنة من الأربع. اكتب: مهمة يوم عادي، 3 مهارات، مصدرين رسميين للتعلم، ومشروعاً صغيراً يشبه عملها تستطيع تنفيذه في المحاكي.

مهمة عملية

ابحث في موقع FIRST أو WRO عن الجهة المنظمة في بلدك وشروط العمر، أو عن نادٍ قريب، وسجّل اسم الجهة وموعد التسجيل أو بديلاً عبر الإنترنت.

اختبر فهمك (1/3)

أي ثلاثية مهارات يجمعها تخصص الميكاترونكس؟

اختبر فهمك (2/3)

طالب يتقدّم لفريق روبوتات المدرسة. أي دليل أقوى على استعداده؟

اختبر فهمك (3/3)

تريد التخصص في كتابة برامج C/C++ تعمل على المتحكمات الصغيرة. أي مسار يناسبك؟

للاستزادة: FIRST Tech Challenge · الأولمبياد العالمي للروبوت WRO · جمعية IEEE للروبوتات والأتمتة · ROS 2: درس Turtlesim للمبتدئين

9. AI + الروبوتات — رؤية، قرار، تحكم

الهدف: تعرف أين يدخل الذكاء الاصطناعي في سلسلة الإدراك والتخطيط والتحكم، ومتى يكون حساس بسيط وقاعدة واضحة أفضل منه.

في الروبوتات المتقدمة تتوسع دورة «استشعر، فكّر، نفّذ» إلى سلسلة من ثلاث مراحل لها أسماء متداولة. الإدراك (Perception) يحوّل بيانات الحساسات الخام إلى فهم: «أمامي كرسي على بعد متر». التخطيط (Planning) يقرر ماذا يفعل الروبوت بهذا الفهم: «أدور حول الكرسي من اليسار». التحكم (Control) يحوّل الخطة إلى أوامر للمحركات، مثل السرعة التناسبية التي رأيتها في الدرس الخامس. معرفة هذه المراحل تساعدك على سؤال دقيق: في أي مرحلة أحتاج الذكاء الاصطناعي فعلاً؟

الجواب في أغلب المشاريع: في الإدراك. لا يمكنك كتابة شرط if لكل شكل وجه أو كل نوع ثمرة في العالم، لذلك يتعلّم نموذج مدرَّب من آلاف الصور ما يميّز كل فئة. أما التخطيط على خريطة معروفة فتؤديه غالباً خوارزميات كلاسيكية مثل A* التي عرفتها في الدرس السادس، والتحكم في السرعة يؤديه متحكم PID منذ عقود. التعلّم المعزّز (Reinforcement Learning)، الذي يجرّب فيه الروبوت ويُكافأ على النجاح، يحقق نتائج لافتة في المختبرات، لكنه يحتاج محاكاة ضخمة ووقت تدريب طويلاً، ونادراً ما يناسب مشروعاً مدرسياً.

كيف يتصل النموذج ببقية الروبوت؟ النموذج لا يعطيك يقيناً، بل احتمالات: «أحمر 0.82، أخضر 0.15، أصفر 0.03». بعدها تحتاج قاعدة عادية: «إذا تجاوز احتمال الأحمر 0.7 فتوقف». اختيار الحد قرار هندسي له ثمن في الاتجاهين؛ إن رفعته إلى 0.95 قلّت الإنذارات الكاذبة لكن الروبوت قد يفوّت إشارة حمراء حقيقية في إضاءة ضعيفة، وإن خفضته إلى 0.5 توقف عند كل لون برتقالي. في المهام المتعلقة بالسلامة، فضّل حداً يجعل الروبوت يتوقف أكثر من اللازم على حد يجعله يتجاهل خطراً.

مقارنة بين حلّين لمهمة «توقف عند الأحمر وتقدّم عند الأخضر»:
• حساس ألوان مثل TCS34725: يعطي قيم الأحمر والأخضر والأزرق مباشرة، ويعمل على Arduino، ولا يحتاج إنترنت ولا تدريباً. القرار شرط بسيط يقارن القيم. عيبه أنه يرى بقعة صغيرة قريبة جداً منه فقط، كأن تكون بطاقة ملونة تحت الروبوت.
• كاميرا مع نموذج مدرَّب: ترى إشارة على بعد متر، وتميّز الشكل لا اللون وحده. لكنها تحتاج لوحة أقوى مثل Raspberry Pi، وطاقة أكبر، وصوراً للتدريب، وتتأثر بالإضاءة والخلفية.
لبطاقة ملونة على الأرض تحت الروبوت، الحساس هو الخيار الهندسي الصحيح. لإشارة مرور مصغّرة على جانب مسار طويل، الكاميرا منطقية.

مثال تصميم من الفيوم: مجموعة طلاب في مدرسة زراعية أرادت روبوتاً يفرز حبات الطماطم إلى ناضجة وغير ناضجة على سير صغير. بدأوا بحساس ألوان فوق السير، فنجح مع الحبات الحمراء تماماً والخضراء تماماً، وفشل مع الحبات المتدرجة اللون. انتقلوا إلى كاميرا ونموذج صنّفوه في Teachable Machine من Google، وهي أداة في المتصفح تدرّب مصنّف صور من أمثلة تلتقطها بنفسك. التقطوا صوراً كلها نهاراً بجوار النافذة، فانهارت الدقة حين جربوه مساءً تحت لمبة صفراء. النموذج يتعلّم ما تريه إياه فقط، فأعادوا التصوير بإضاءات وخلفيات وزوايا مختلفة، وأضافوا فئة ثالثة «غير متأكد» تُرسل إلى فرز يدوي.

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

في مشروعك المدرسي: تجنّب حائط؟ حساس مسافة وشرط كافيان وأوثق. تمييز أنواع أوراق الشجر أو فرز ثمار متدرجة اللون؟ هنا تبدأ قيمة الذكاء الاصطناعي. القرار الهندسي الناضج هو أبسط حل يؤدي المهمة بثبات.

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

مخطط

Cameraإدراك: نموذج AI
تخطيط: A*
تحكم: PIDمحركات
مقابل
Ultrasonicifmotors

مختبر: Teachable Machine

درّب في Teachable Machine مصنّفاً لفئتين من الأشياء، ثم اختبره في إضاءة مختلفة. سجّل الاحتمالات قبل التنويع وبعده، واقترح حد قرار لروبوت نظري.

مهمة عملية

اكتب فقرة تقارن حساس المسافة والكاميرا مع نموذج رؤية في مشروع مدرسي محدد، وحدد في أي مرحلة (إدراك أو تخطيط أو تحكم) يدخل كل منهما، وما السلوك الآمن عند الشك.

اختبر فهمك (1/3)

لتجنّب حائط في مشروع مدرسي بسيط، ما الحل الأنسب غالباً؟

اختبر فهمك (2/3)

نموذج رؤية يعطي «أحمر 0.82، أخضر 0.15». ماذا يحتاج الروبوت بعدها؟

اختبر فهمك (3/3)

درّبت نموذجاً بصور التقطتها نهاراً بجوار النافذة، ففشل مساءً تحت لمبة صفراء. ما الإصلاح؟

للاستزادة: Google Teachable Machine · دليل حلول MediaPipe · وثائق Nav2: التخطيط والتحكم في ROS 2

10. المشروع النهائي — صمّم روبوتاً على الورق + BOM

الهدف: تسلّم وثيقة تصميم كاملة: هدف قابل للقياس، رسم، خوارزمية، خطة اختبار في المحاكي، قائمة قطع، جدول زمني، ومخاطر.

المشروع النهائي تصميم روبوت كامل على الورق، تخيلي أو قابل للبناء لاحقاً. اللحام ليس شرطاً اليوم؛ الشرط أن يستطيع شخص آخر فهم الروبوت و«تشغيله» في ذهنه من وثيقتك وحدها، ثم يتنبأ بما سيفعله في موقف لم تذكره له.

مكونات وثيقة التسليم بالترتيب:
1) الاسم والهدف في جملة قابلة للقياس. «روبوت ذكي يساعد في البيت» هدف لا يمكن الحكم عليه، أما «روبوت ينقل كوباً بلاستيكياً فارغاً من المكتب إلى الباب دون اصطدام في أقل من دقيقة» فهدف تعرف نجاحه بساعة إيقاف.
2) رسم علوي وجانبي يحدد مكان الحساسات والمتحكم والبطارية. ضع البطارية منخفضة في المنتصف، لأن الوزن المرتفع يقلب الروبوت عند الدوران.
3) مخطط حالات أو pseudocode لا يقل عن عشرة أسطر، يغطي حالة «ماذا لو لم يجد شيئاً؟» وحالة «ماذا لو أعطى الحساس قراءة شاذة؟».
4) خطة اختبار في المحاكي، وسنفصّلها بعد قليل.
5) قائمة القطع (BOM): القطعة والكمية والسعر التقريبي بتاريخ اليوم والمصدر المحتمل، ومعها مصدر الطاقة ودائرة تشغيل المحركات.
6) جدول من أسبوعين إلى أربعة، فيه وقت مخصص للأعطال.
7) المخاطر والسلامة: نوع البطارية وطريقة شحنها، ومكان مفتاح القطع، وأي جزء متحرك قد يقرص الأصابع.

مثال مختصر — روبوت حارس الرف: ينبّه بصوت إذا اقترب أحد من رف كتب أخيك الصغير.
الحساس: HC-SR04 واحد موجّه نحو الممر. المُفعّلات: جرس و LED أحمر. اللوحة: Arduino Uno بعلبة بطاريات AA.
الحالات: «مراقبة» ← «تحذير» ← «تنبيه».
• من «مراقبة» إلى «تحذير» حين يصبح وسيط ثلاث قراءات أقل من 40 سم، فيضيء LED.
• من «تحذير» إلى «تنبيه» إذا بقيت المسافة أقل من 40 سم أكثر من ثانيتين، فيصفّر الجرس ثلاث مرات.
• العودة إلى «مراقبة» حين تتجاوز المسافة 50 سم، وهذا هو الحد المتباعد الذي يمنع الارتعاش.

لاحظ أن شرط «أكثر من ثانيتين» يمنع التنبيه كلما مرّ أحد بسرعة أمام الرف، وأن الحد 50 للعودة يمنع الجرس من التقطّع حين يقف شخص عند 40 سم تماماً. هذه التفاصيل الصغيرة هي ما يحوّل الفكرة إلى تصميم، وكلها أدوات تعلّمتها في الدروس السابقة: الوسيط من الدرس الخامس، والحدان المتباعدان ومخطط الحالات من الدرس الرابع.

خطة الاختبار تُكتب قبل البناء، وكل سطر فيها مدخل ونتيجة متوقعة. في Wokwi تستطيع تغيير مسافة الحساس الافتراضي HC-SR04 بمنزلق أثناء التشغيل، فتنفّذ الاختبارات كلها دون قطعة واحدة:
• اختبار 1: المسافة 100 سم ثابتة. المتوقع: لا ضوء ولا صوت.
• اختبار 2: المسافة 30 سم لمدة ثانية ثم 100 سم. المتوقع: LED يضيء ثم ينطفئ، ولا صوت.
• اختبار 3: المسافة 30 سم لمدة ثلاث ثوانٍ. المتوقع: LED ثم ثلاث صفرات.
• اختبار 4: المسافة تتأرجح بين 38 و 42 سم. المتوقع: يبقى في «تحذير» دون تقطّع.
إذا خالفت النتيجة المتوقع، سجّل الاختبار ورقمه والتعديل الذي أصلحه. هذا السجل جزء من التسليم، ويقرؤه المقيّم باهتمام أكبر من الرسم الملوّن.

الأخطاء التي تُسقط التصميمات تتكرر: قائمة قطع بلا مصدر طاقة، أو نسيان دائرة تشغيل المحركات، أو رسم لا يطابق الكود، كأن يقرأ الكود حساسين بينما الرسم فيه حساس واحد. راجع وثيقتك بسؤال بسيط: هل لكل سطر في الكود قطعة في الرسم، ولكل قطعة في الرسم سطر في الكود؟

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

  • الهدف القابل للقياس يحدد شرط النجاح بساعة إيقاف أو مسطرة لا بالانطباع.
  • خطة الاختبار تُكتب قبل البناء، وكل سطر فيها مدخل ونتيجة متوقعة.
  • المحاكي يتيح تنفيذ الاختبارات كلها قبل شراء أي قطعة.
  • لكل سطر في الكود قطعة في الرسم، ولكل قطعة في الرسم سطر في الكود.

مخطط

 [هدف قابل للقياس]
         |
 [رسم] + [مخطط حالات]
         |
         v
 [خطة اختبار في المحاكي]
         |
         v
   [BOM + جدول + مخاطر]
         |
         v
    [عرض 3 دقائق]

مختبر: الاختبار في المحاكي والعرض

نفّذ خطة الاختبار في Wokwi بتغيير مسافة الحساس الافتراضي. ثم اعرض التصميم 3 دقائق، وأعطِ المستمع مدخلات جديدة ليتنبأ بسلوك الروبوت.

مهمة عملية

أكمل وثيقة التصميم كاملة بالمكونات السبعة، مع أربعة اختبارات على الأقل ونتائجها المتوقعة، واحفظها في محفظة مشاريعك.

اختبر فهمك (1/3)

ما الذي يجعل المشروع النهائي تصميماً تطبيقياً قابلاً للتنفيذ؟

اختبر فهمك (2/3)

أي هدف لمشروع روبوت قابل للقياس؟

اختبر فهمك (3/3)

روبوت حارس الرف يصفّر كلما مرّ أحد بسرعة أمامه. ما الشرط الناقص؟

للاستزادة: Wokwi: محاكاة حساس HC-SR04 · Wokwi: شاشة Serial · دليل Webots · Gazebo: البدء

مراجع رسمية لهذا المسار

  • محركات السيرفو مع Arduino — شرح رسمي لتوصيل السيرفو وبرمجة زاويته وتغذيته بالطاقة.
  • وثائق Wokwi — محاكي مجاني في المتصفح للوحات Arduino و ESP32 مع حساسات ومحركات افتراضية.
  • Tinkercad Circuits — محاكي دوائر بصري مجاني لتجربة أول دائرة قبل شراء القطع.
  • توثيق ROS 2 — إطار برمجيات الروبوتات المستخدم في البحث والصناعة، للخطوة التالية بعد هذا المسار.
  • دليل Webots — محاكي روبوتات ثلاثي الأبعاد مفتوح المصدر لتجربة روبوت كامل بفيزياء واقعية.
  • برامج FIRST — الموقع الرسمي لبرامج ومسابقات الروبوتات للطلاب بمختلف الأعمار.
  • الأولمبياد العالمي للروبوت WRO — الموقع الرسمي لفئات المسابقة وقواعدها والجهات المنظمة في كل دولة.

تصميمك جاهز للمرحلة التالية

حوّل ورقة المشروع إلى تجربة حقيقية أو محاكاة، أو ابدأ مسار الويب لتعرض فكرتك أونلاين.