كود البحث

الدرس 7 من 10: تتبع الخط، كشف الحافة معايرة مستشعر التدرج الرمادي سيارة Raspberry Pi Pico

الدرس 7 من 10: تتبع الخط، كشف الحافة معايرة مستشعر التدرج الرمادي سيارة Raspberry Pi Pico

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

لهذه التقنية تطبيقات عملية عديدة تتجاوز مجرد مشروع DIY ممتع. المبادئ التي ستتعلمها هنا أساسية لبناء أنظمة مستقلة في العالم الحقيقي. إليك بعض الأفكار لإلهامك:

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

المكونات والأجهزة

يعتمد هذا المشروع على مجموعة سيارات SunFounder Raspberry Pi Pico 4WD. المكون الرئيسي لهذا الدرس هو وحدة استشعار التدرج الرمادي، وهي ضرورية لكل من تتبع الخط واكتشاف الحواف. تتميز الوحدة بثلاثة مستشعرات مستقلة تقيس كمية الضوء المنعكس من السطح أدناه. تُستخدم هذه البيانات للتمييز بين الخط الأسود والسطح الأبيض و"الحافة" أو المساحة المفتوحة. تشمل المجموعة الكاملة أيضًا هيكل سيارة Pico والمحركات وحزمة بطارية لتشغيل النظام.

دليل التوصيل

التوصيل الصحيح هو الخطوة الأولى لجعل المستشعر يعمل. تتصل وحدة التدرج الرمادي بـ Raspberry Pi Pico باستخدام أربعة أسلاك. التوصيل بسيط ويتم توضيحه بوضوح في الفيديو.

فيما يلي تكوين التوصيل كما هو موضح في الفيديو (في الفيديو عند 03:01):

  • السلك الأسود: قم بتوصيله بدبوس GND على Pico.
  • السلك الأحمر: قم بتوصيله بدبوس 3.3V على Pico.
  • السلك الأصفر (المستشعر الأيمن): قم بتوصيله بدبوس GPIO 28.
  • السلك البني (المستشعر الأوسط): قم بتوصيله بدبوس GPIO 27.
  • السلك الأبيض/الرمادي (المستشعر الأيسر): قم بتوصيله بدبوس GPIO 26.

معايرة مستشعر التدرج الرمادي

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

يوضح الفيديو عملية المعايرة (في الفيديو عند 04:39). يجب وضع المستشعر على ارتفاع مثالي فوق الأرض—حوالي 11 ملم أو سنتيمتر واحد—للحصول على قراءات واضحة. من خلال ضبط مقياس الجهد ومراقبة القيم، يمكنك العثور على النقطة المثلى. الهدف هو وجود فرق كبير بين قراءات السطح الأبيض (الذي يعكس الكثير من الضوء) والخط الأسود (الذي يعكس القليل جدًا).

فيما يلي ملخص لما تعنيه القراءات:

  • السطح الأبيض: انعكاس عالي، مما يؤدي إلى قيم استشعار عالية (على سبيل المثال، حوالي 20,000).
  • الخط الأسود: انعكاس منخفض، مما يؤدي إلى قيم استشعار منخفضة (على سبيل المثال، حوالي 3,000).
  • الحافة (مساحة مجوفة): لا انعكاس، مما يؤدي إلى أدنى قيم استشعار (على سبيل المثال، حوالي 1,200).

شرح الكود

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

اختبار المستشعر

الخطوة الأولى هي اختبار المستشعر باستخدام سكربت بسيط. يستخدم هذا السكربت دالة تسمى get_grayscale_value() لقراءة القيم الخام من المستشعرات الثلاثة. يطبع هذه القيم إلى الشاشة التسلسلية حتى تتمكن من رؤية كيف تتغير عندما يكون المستشعر فوق أسطح مختلفة. هذا مفيد للتحقق من التوصيل وأداء خطوة المعايرة.


# هذا مثال مفاهيمي لدالة الاختبار
from machine import Pin, ADC
import time

# تعريف دبابيس ADC لمستشعرات التدرج الرمادي
grayscale_pins = [26, 27, 28]
sensors = [ADC(Pin(pin)) for pin in grayscale_pins]

while True:
    # قراءة القيم الخام 16-بت من المستشعرات
    values = [sensor.read_u16() for sensor in sensors]
    print("يسار: {} وسط: {} يمين: {}".format(values[0], values[1], values[2]))
    time.sleep_ms(100)

منطق تتبع الخط

لتتبع الخط، لا يستخدم الكود القيم التناظرية الخام. بدلاً من ذلك، يحولها إلى حالة رقمية بسيطة: 1 إذا كان المستشعر فوق الخط الأسود، و0 إذا كان فوق السطح الأبيض. يتم التعامل مع هذا بواسطة دالة ترجع قائمة من ثلاث قيم (على سبيل المثال، [0, 1, 0]). تستخدم حلقة التحكم الرئيسية بعد ذلك هذه القائمة لتحديد إجراءات السيارة.

تعتمد المنطق على مقارنة حالة المستشعر بشروط محددة مسبقًا. على سبيل المثال، إذا كانت الحالة [0, 1, 0]، فإن السيارة تكون تمامًا على الخط ويجب أن تتحرك للأمام. إذا كانت الحالة [1, 0, 0]، فإن السيارة قد انحرفت إلى اليسار وتحتاج إلى تصحيح مسارها إلى اليمين. يشرح الفيديو هذه الشروط بالتفصيل (في الفيديو عند 13:05)، موضحًا كيف تتوافق مجموعات مختلفة من قراءات المستشعر مع أوامر محرك مختلفة، مثل الانعطاف يسارًا أو يمينًا أو إجراء تصحيح حاد.


# هذا مثال مفاهيمي لمنطق تتبع الخط
# افترض أن 'status' قائمة مثل [0, 1, 0] من مستشعر التدرج الرمادي

if status == [0, 1, 0]:  # المستشعر المركزي على الخط
    # التحرك للأمام
    pass
elif status == [1, 0, 0]:  # المستشعر الأيسر على الخط
    # الانعطاف يمينًا
    pass
elif status == [0, 0, 1]:  # المستشعر الأيمن على الخط
    # الانعطاف يسارًا
    pass
# ... شروط أخرى للانعطافات الحادة

عرض توضيحي مباشر للمشروع

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

فصول الفيديو

  • [00:00] مقدمة حول تتبع الخط واكتشاف الحواف
  • [03:01] توصيل وحدة مستشعر التدرج الرمادي
  • [04:39] معايرة مستشعر التدرج الرمادي
  • [13:05] فهم منطق تتبع الخط
  • [19:43] اختبار كود تتبع الخط
  • [24:50] عرض مباشر على مسار اختبار
لا يوجد رمز مرفق.

الموارد والمراجع

لا توجد موارد حتى الآن.

ملفات📁

لا توجد ملفات متاحة.