ساخت ربات دنبال‌کننده خط با Raspberry Pi Pico | آموزشگاه رباتیک هادی نیشابور - هادی روبو

ساخت ربات دنبال‌کننده خط با Raspberry Pi Pico | آموزشگاه رباتیک هادی نیشابور - هادی روبو

 

ساخت ربات دنبال‌کننده خط با Raspberry Pi Pico | آموزشگاه هادی - هادی روبو

پروژه عملی | هادی روبو

ساخت ربات دنبال‌کننده خط با Raspberry Pi Pico

آموزشگاه فنی و حرفه ای آزاد هادی نیشابور(هادی روبو) – در این پروژه گام‌به‌گام یک ربات دنبال‌کننده خط با استفاده از Raspberry Pi Pico و سنسورهای IR طراحی و ساخته می‌شود. این ربات می‌تواند هر خطی را دنبال کرده و به‌صورت خودکار به مقصد برسد.

ربات دنبال‌کننده خط با Raspberry Pi Pico

این ربات می‌تواند هر خطی را دنبال کرده و به‌صورت خودکار به مقصد برسد. این قابلیت در کارخانه‌ها و صنایع برای جابجایی وسایل بدون نیاز به کنترل کاربر یا کامپیوتر کاربرد دارد. عملکرد ربات بر اساس داده‌های سنسور IR است که بر اساس اصل بازتاب و شکست نور کار می‌کند. نور مادون‌قرمز نسبت به نور مرئی بیشتر شکسته می‌شود. رنگ سیاه بیشترین جذب نور را دارد، بنابراین وقتی LED مادون‌قرمز عمود بر خط سیاه قرار می‌گیرد، نور جذب شده و بازتابی ندارد. اما وقتی روی سایر رنگ‌ها قرار می‌گیرد، نور بازتاب می‌شود. وقتی سنسور چپ نور را بازتاب دهد و سنسور راست نه، ربات به راست حرکت می‌کند و بالعکس. وقتی هر دو سنسور نور را بازتاب دهند، ربات مستقیم حرکت می‌کند و وقتی هیچ‌کدام نور را بازتاب ندهند، ربات متوقف می‌شود.

ربات دنبال‌کننده خط با Raspberry Pi Pico
نمای ربات دنبال‌کننده خط

پروژه‌های مشابهی که با میکروکنترلرهای مختلف ساخته‌ایم:

  • ربات دنبال‌کننده خط با آردوینو
  • ربات دنبال‌کننده خط با میکروکنترلر 8051
  • ربات دنبال‌کننده خط با MSP430 LaunchPad
  • ربات دنبال‌کننده خط با AVR ATmega16
  • ربات دنبال‌کننده خط با PIC
  • ساخت ربات دنبال‌کننده خط بدون میکروکنترلر

قطعات مورد نیاز

سخت‌افزار:

  • Raspberry Pi Pico
  • درایور موتور L298N
  • ۲ عدد سنسور IR
  • باتری ۱۲ ولت
  • ۴ عدد موتور
  • ۴ عدد چرخ

نرم‌افزار:

  • Thonny IDE

انتخاب سخت‌افزار و نرم‌افزار

برای این پروژه، Raspberry Pi Pico را انتخاب کردیم زیرا برد جدیدی با امکانات پیشرفته‌تر است. پیش از عرضه این برد، با آردوینوهای مختلف برای ساخت ربات دنبال‌کننده خط آزمایش کردیم. در نهایت تصمیم گرفتیم از Raspberry Pi Pico استفاده کنیم زیرا مصرف جریان بسیار پایینی دارد و مهم‌تر اینکه دارای مبدل باک-بوست روی برد است که امکان استفاده با ولتاژ بسیار پایین (تا ۱.۵ ولت) را فراهم می‌کند.

برای برنامه‌نویسی، Thonny IDE را انتخاب کردیم زیرا امکان استفاده از MicroPython را فراهم می‌کند. پایتون کدنویسی بسیار کمتری نسبت به آردوینو و C++ نیاز دارد. Raspberry Pi Pico با فرکانس کلاک ۱۳۳ مگاهرتز بسیار بهتر از آردوینو نانو با فرکانس ۱۶ مگاهرتز است. همچنین دارای ویژگی‌های بیشتری مانند سنسور دمای داخلی است.

نقشه مدار ربات دنبال‌کننده خط

نقشه مدار ربات دنبال‌کننده خط با Raspberry Pi Pico

در این مدار، دو سنسور IR به پایه‌های GPIO 2 و 3 Pi Pico متصل شده‌اند. پایه‌های درایور موتور به GPIO 10، 11، 12 و 13 متصل هستند. پایه‌های Enable نیز به GPIO 6 و 7 وصل شده‌اند که سیگنال‌های PWM را بین Pi Pico و درایور موتور تبادل می‌کنند.

کد برنامه MicroPython

برنامه این ربات با MicroPython در Thonny IDE نوشته شده است. در ادامه کد کامل پروژه آورده شده است:

# ربات دنبال‌کننده خط با Raspberry Pi Pico
from machine import Pin, PWM  # وارد کردن کتابخانه‌های PIN و PWM
import time
import utime

# تعریف پایه‌های موتورها
motor1 = Pin(10, Pin.OUT)
motor2 = Pin(11, Pin.OUT)
motor3 = Pin(12, Pin.OUT)
motor4 = Pin(13, Pin.OUT)

# تعریف پایه‌های Enable و اشیاء PWM
enable1 = PWM(Pin(6))
enable2 = PWM(Pin(7))

# تعریف پایه‌های دیجیتال سنسورهای IR راست و چپ به عنوان ورودی
right_ir = Pin(2, Pin.IN)
left_ir = Pin(3, Pin.IN)

# تعریف فرکانس برای پایه‌های Enable
enable1.freq(1000)
enable2.freq(1000)

# تنظیم حداکثر سیکل کاری برای حداکثر سرعت
enable1.duty_u16(65025)
enable2.duty_u16(65025)

# حرکت به جلو
def move_forward():
    motor1.low()
    motor2.high()
    motor3.high()
    motor4.low()

# حرکت به عقب
def move_backward():
    motor1.high()
    motor2.low()
    motor3.low()
    motor4.high()

# چرخش به راست
def turn_right():
    motor1.low()
    motor2.high()
    motor3.low()
    motor4.high()

# چرخش به چپ
def turn_left():
    motor1.high()
    motor2.low()
    motor3.high()
    motor4.low()

# توقف
def stop():
    motor1.low()
    motor2.low()
    motor3.low()
    motor4.low()

while True:
    right_val = right_ir.value()  # دریافت مقدار سنسور راست (0 یا 1)
    left_val = left_ir.value()    # دریافت مقدار سنسور چپ (0 یا 1)
    print(str(right_val) + "-" + str(left_val))
    
    # کنترل جهت ربات بر اساس مقدار سنسورها
    if right_val == 0 and left_val == 0:
        move_forward()
    elif right_val == 1 and left_val == 0:
        turn_right()
    elif right_val == 0 and left_val == 1:
        turn_left()
    else:
        stop()
  

کد بالا به این صورت عمل می‌کند:

  • ابتدا پایه‌های موتورها، سنسورها و Enable تعریف می‌شوند.
  • توابع حرکت (جلو، عقب، چپ، راست، توقف) تعریف می‌شوند.
  • در حلقه بی‌نهایت، مقادیر سنسورها خوانده شده و بر اساس آنها جهت حرکت مشخص می‌شود.
  • اگر هر دو سنسور روی خط سفید باشند (مقدار 0)، ربات به جلو حرکت می‌کند.
  • اگر سنسور راست خط سیاه را تشخیص دهد (مقدار 1) و سنسور چپ خط سفید را (مقدار 0)، ربات به راست می‌چرخد.
  • اگر سنسور چپ خط سیاه را تشخیص دهد و سنسور راست خط سفید را، ربات به چپ می‌چرخد.
  • اگر هر دو سنسور خط سیاه را تشخیص دهند (مقدار 1)، ربات متوقف می‌شود.

جمع‌بندی از آموزشگاه فنی و حرفه ای آزاد هادی (هادی روبو)

تمام مراحل این پروژه در آموزشگاه فنی و حرفه ای آزاد هادی با رویکرد عملی و پروژه‌محور تدریس می‌شود. با ساخت این ربات دنبال‌کننده خط با Raspberry Pi Pico، مباحث کلیدی مانند سنسور IR، درایور موتور L298N، برنامه‌نویسی MicroPython و منطق کنترل مسیر را به‌صورت کاربردی فرا خواهید گرفت.


برچسب ها :

نظرات (0)

پیام بگذارید

captcha
 redo