آموزش ساخت ربات با برنامه نویسی رزبری پای
ساخت ربات با استفاده از رزبری پای
ساخت ربات و بازی با آن یکی از علائق بسیاری از افراد به خصوص کودکان میباشد. در کشورهای مختلف حتی در دورههای دبستان نیز به کودکانی که سن کمی دارند، دورههای ساخت انواع ربات آموزش داده میشود. دلیل این موضوع آن است که در سالهای آینده رباتها بسیار مورد توجه بوده و بسیاری از کارها با استفاده از آنها صورت میپذیرد. در این قسمت با استفاده از برنامه نویسی رزبری پای به دنبال ساخت ربات خواهیم بود.
اما علاوه بر نرم افزار باید یک سری از سختافزارها را نیز در اختیار داشته باشیم. به عنوان مثال برای ساخت یک ربات به لوازم زیر نیاز خواهیم داشت:
- رزبری پای
- برد کنترل موتور
- موتور DC 6 ولتی یا 3 ولتی به تعداد 2 عدد
- 2 عدد چرخ
- باتری AA به تعداد 4 عدد
- شارژر باتری
- سیم های مرتبط
- بسته باتری USP
- آچار پیچ کوشتی
- لحیم و ملحقات آن
- جعبه مقوایی یا پلاستیکی به همراه چسب و نوار کوچک
سیستم عامل رزبری
البته لازم به توضیح است که این بخشی از مواد مورد نیاز بوده که البته بخش عمده را پوشش داده است. در قسمت نرمافزاری نیز به آخرین ورژن سیستم عامل رزبری برای برنامه نویسی رزبری پای نیاز داریم. موارد اضافی نیز شامل جعبه مقوایی کوچک و انواع چسب به تناسب نیاز بوده که جهت به کاربردن دیوارهای ربات مورد استفاده و توجه است.
اما در این قسمت به دنبال ساخت ربات خواهیم بود که در آن نقش برنامه نویسی رزبری پای مورد توجه قرار خواهد گرفت. زبان برنامه نویسی پایتون یکی از زبانهای قدرتمند و ساده در کاربرد است که برای انجام پروژههای مرتبط با برنامه نویسی رزبری پای مورد استفاده قرار میگیرد. دستورات پایتون بسیار شفاف است و از کلمات کلیدی زبان انگلیسی استفاده مینماید.
پس در ادامه این موضوع را پی میگیریم. تمام مباحث این قسمت به بیان کدنویسی و آموزش برنامه نویسی رزبری پای اشاره خواهد داشت. لذا تمرکز خود را بیشتر بر کدنویسی معطوف مینماییم و ساخت فیزیکی و سخت افزاری را در مقالات بعد مرور خواهیم نمود. با ما همراه باشید.
برنامه نویسی رزبری پای ربات با پایتون
برنامه نویسی ربات گام مهمی در هنگام ساخت و آزمایش رباتها است. با استفاده از زبان برنامه نویسی پایتون و ویژوال کامپوننت API بستر خوبی برای آموزش، اتوماتیک سازی و برنامه نویسی ربات پس از پردازش ارائه میشود.
برای برنامه نویسی ربات میتوان اسکریپتی نوشت که کل برنامه ربات را محاسبه، ضبط و شبیهسازی کند. این موضوع این امکان را میدهد که به سرعت راه حل خود را شبیهسازی نموده و سپس با آزمایش کردن و تجسم آن چه در ذهن دارید، برنامه و منطق آن را اصلاح نمایید.
با استفاده از اسکریپت های پایتون می توان یک ربات را کنترل کرد و لذا برای این کار باید ساختار یک ربات را آموخت و نحوه تفهیم به ماشین را یاد گرفت. البته باید گفت که برای برنامه نویسی ربات با پایتون باید اصول برنامه نویسی این زبان را تا حد زیادی دانست.
رزبری پای یک رایانه است که تک برد بوده و اندازه بسیار کوچک دارد. بنیاد رزبری پای آن را راه اندازی نمود و به واسطه آن آموزش علوم رایانه در مدرسهها را حمایت نمودهاند. تقریبا نسخه جدیدتر آن در سال 2019 معرفی شد و در نسخههای مختلف ارائه شده است. این رایانههای تک برد محصول شرکت سونی ولز بریتانیا میباشند.
رزبری پای
این رایانه با استفاده از سیستم عاملهای مختلف سازگاری دارد و اندروید را نیز پشتیبانی میکند. زبری پای با این وسعت کوچک قابلیتهای متعددی در بخش صوت و تصویر دارد و ورودیهای USB و HDMIهای متنوعی دارد. شاید بتوان گفت که علاوه بر قابلیتهایی که دارد، مهمترین کاربرد آن در روباتیک است که توسط برنامه نویسی رزبری پای قابل دستیابی است.
نکتهای دیگر
بعد از این که ساختار سخت افزاری یک ربات آماده میشود، می توان با استفاده از ساختار برنامه نویسی، به کنترل ربات و تفهیم آن که اعمال مورد نظر را انجام دهد مبادرت ورزید. در زیر برخی از دستورات مرتبط با با هم مرور مینماییم:
برای شروع فرض کنید که میخواهیم حرکت به چپ یا راست را برای ربات فراهم کنیم. ابتدا از رزبری پای، mu را باز کنید. این گزینه در programming menu رزبری پای قرار دارد. برای انجام کدنویسی نیاز است تا یک کلاس برای ربات ایجاد شود. به کدنویسیهای زیر توجه نمایید.
from gpiozero import Robot
robby = Robot(left=(7,8), right=(9,10))
با توجه به کدهای نوشته شده، نام ربات را robby در نظر گرفتیم. دستور رفتن به چپ و راست نوشته شده است. حال فایل خود را ذخیره نمایید و robby.py را فراخوانی کنید. با کلیک بر run برنامه اجرا خواهد شد. حال با کلیک کردن روی نماد ترمینال در نوار وظیفه بالای صفحه، ابتدا پایتون را باز نموده و سپس python را تایپ نموده و enter بزنید. با تایپ موارد زیر نجوه حرکت موتور مشخص میشود:
robby.forward()
برای متوقفسازی ربات می توان از دستور robot.stop() بهره برد.
رزبری پای و پایتون در ساخت ربات
با نوشتن هر ستور باید قسمت سخت افزاری را بررسی کنید تا مشخص شود کدام موتور، چپ یا راست، عمل مینماید. حتی نجوه چرخش و عکس العملها نیز با استفاده از دستورات مشخص خواهند شد.
robby.forward(0.4)
robby.right(0.4)
با توجه به دستوری که نوشته شد، هر موتوری که به حرکت درآمد و تغییر جهت داد، موتور راست است. یعنی ماشین آن را به عنوان موتور سمت راست شناسایی میکند. زمانی که با این روش کدنویسی موتور چپ و راست مشخص میشوند و حرکت آنها نیز میشود. حال با استفاده از کدهای زیر میتوان حرکت به جلو و عقب را کنترل کرد:
robby.forward(0.4)
robby.backward(0.4)
با استفاده از کدهای برنامه نویسی زیر میتوان کاری کرد تا ربات در مسیری مربع شکل به حرکت خود ادامه دهد. این مسیر میتوان برای ربات دنبال کننده توپ و یا ربات مسیریاب مناسب باشد:
from gpiozero import Robot
robot = Robot(left = (7, 8), right = (9, 10))
while True:
robot.forward()
sleep(3)
robot.stop()
robot.right()
sleep(1)
robot.stop()
کدهای حرکتی ربات
در نتیجه به طور خلاصه توانستیم کدهای حرکتی ربات را به صورت زیر خلاصه نماییم:
robot.forward()
robot.backward()
robot.right()
robot.left()
robot.stop()
حتما برای ساخت ربات نیازمند صرف هزینه برای بخش سخت افزاری و کمی زمان برای نوشتن چند کد کوتاه هستیم که در بالا به آنها اشاره شد.
ربات دنبال کننده توپ
ساخت انواع ربات با استفاده از رزبری پای امکانپذیر است. در هر یک باید بخش سخت افزاری و نرم افزاری را مهیا نماییم. یکی از نکات مهمی که در برخی از رباتها باید رعایت نمود، دانشی است که به واسطه آن مفاهیم را به ماشین انتقال دهیم. مثلا با استفاده از پردازش تصویر میتوان بسیاری از موارد را به ربات انتقال داد و فهم ایجاد نمود.
برای این کار می توان از نرم افزار های مختلفی استفاده کرد اما نرم افزار ساده processing با ارتباطی که با پایتون دارد و این ارتباط از طریق کتابخانه GPIO برقرار می شود، مناسب بوده و لذا کدهای مربوطه را می توان به راحتی نوشت.
در قسمت قبل برای یک ربات ساده قطعات سخت افزاری مختلفی ارائه شد. اما در ربات دنبال کننده توپ نیازمند ابزار دیگری هستیم تا بتوان به واسطه آنها مسیر را نیز به ماشین فهماند. در این خصوص علاوه برد رزبری پای نیازمند دوربین و ماژول مربوط به آن و چند قطعه مشابه قطعات قبل هستیم.
آماده سازی processing
برای آماده سازی processing بر روی رزبری پای و برنامه نویسی رزبری پای باید ابتدا اتصالات آن به مانیتور، موس و کیبورد را برقرار نماییم. برای کدنویسی نیازمند محیط برنامه نویسی هستیم. پس از مهیاسازی محیط برنامه نویسی می توان برای اجرای برنامه از کدهای زیر بهره برد. کدهای زیر جهت حرکت ربات در مسیر و تغییر به چپ یا راست خواهد بود.
با استفاده از وسائل فوق میتوان به دانلود کد ربات دنبال کننده در اینترنت نیز پرداخت. ربات مسیریاب یا دنبال کننده توپ هر یک کاربردهای متعددی دارند و در قسمتهای مختلف مورد استفاده قرار می گیرند. به دلیل اهمیت این نوع رباتها، استفاده از آنها و برنامه نویسی در خصوص آنها گسترش یافته است.
/*------ Arduino Line Follower Code----- */
/*-------definning Inputs------*/
#define LS 2 // left sensor
#define RS 3 // right sensor
/*-------definning Outputs------*/
#define LM1 4 // left motor
#define LM2 5 // left motor
#define RM1 6 // right motor
#define RM2 7 // right motor
void setup()
{
pinMode(LS, INPUT);
pinMode(RS, INPUT);
pinMode(LM1, OUTPUT);
pinMode(LM2, OUTPUT);
pinMode(RM1, OUTPUT);
pinMode(RM2, OUTPUT);
}
void loop()
{
if(digitalRead(LS) && digitalRead(RS)) // Move Forward
{
digitalWrite(LM1, HIGH);
digitalWrite(LM2, LOW);
digitalWrite(RM1, HIGH);
digitalWrite(RM2, LOW);
}
if(!(digitalRead(LS)) && digitalRead(RS)) // Turn right
{
digitalWrite(LM1, LOW);
digitalWrite(LM2, LOW);
digitalWrite(RM1, HIGH);
digitalWrite(RM2, LOW);
}
if(digitalRead(LS) && !(digitalRead(RS))) // turn left
{
digitalWrite(LM1, HIGH);
digitalWrite(LM2, LOW);
digitalWrite(RM1, LOW);
digitalWrite(RM2, LOW);
}
if(!(digitalRead(LS)) && !(digitalRead(RS))) // stop
{
digitalWrite(LM1, LOW);
digitalWrite(LM2, LOW);
digitalWrite(RM1, LOW);
digitalWrite(RM2, LOW);
}
}
شماتیک مدار ربات
در انتها نیز شماتیک مدار ربات مسیریاب را نمایش داده ایم. برای اجرای برنامه باید از قبل مدار ارتباطی را ترسیم نمود و اطلاعاتی در این خصوص به دست آورد و با امتحان نمودن، مدار منطقی را نهایی کرد.
در نوشتار بعد با برنامه نویسیهای متعدد در این زمینه بیشتر آشنا خواهیم شد.