با تحول سریع فناوری و نوآوری، ساخت ربات از داستانهای علمی-تخیلی به یک واقعیت قابل دسترس تبدیل شده است. قبل از شروع ماجراجویی ساخت ربات، بسیار مهم است که پایهای قوی از دانشهای مربوطه داشته باشید. درک اصول اولیه رباتیک مانند اجزای مکانیکی، الکترونیک، برنامهنویسی و حل مسئله در ساخت ربات کمک بسیارری به شما خواهد کرد. در ادامه، با آموزش ساخت ربات آشنا میشویم.
برای ساخت ربات، میتوانید از کیتهای ربات آماده استفاده کنید. یک کیت ربات شامل مجموعهای از اجزا و قطعات مورد نیاز برای ساخت ربات است. کیتهای ربات انواع مختلفی دارند، از کیتهای ساده که نیازی به برنامهنویسی ندارند تا کیتهای پیشرفتهتر که شامل کدنویسی و برنامهنویسی میشوند. با توجه به هدف و سطح دانش خود، میتوانید کیت مناسب را انتخاب کنید.
انواع مختلف کیت ربات عبارتاند از:
هنگام یادگیری ساخت ربات، انتخاب کیت مناسب، بهویژه برای کودکان، اهمیت زیادی دارد. در این انتخاب باید به عوامل زیر توجه کنید:
در این بخش، مراحی اصلی ساخت یک ربات را بررسی میکنیم. البته دقیت کنید که در موراد مختلف ممکن است ترتیب این مراحل تغییر کند.
۱. مفهومسازی و طرح اولیه: هر پروژه موفق رباتیک با یک ایده روشن آغاز میشود. در اولین مرحله، باید هدف، عملکرد و طراحی ربات خود را مشخص کنید. برای مثال، آیا ربات شما باید بتواند در محیط حرکت کند یا صرفاً برای سرگرمی ساخته میشود؟ این مرحله به شما کمک میکند اجزای مناسب را انتخاب کرده و مسیر ساخت را بهدرستی برنامهریزی کنید.
۲. گردآوری اجزا و قطعات: بسته به هدف ساخت ربات، به اجزای مختلفی مانند موتورها، سنسورها، میکروکنترلرها، چرخها و منبع انرژی نیاز دارید. انتخاب اجزا مستقیماً به رباتی که انتخاب میکنید بستگی دارد و بر قابلیتها و پیچیدگی ربات تأثیر میگذارد.
۳. انتخاب میکروکنترلر: میکروکنترلر مغز ربات است و حرکات و رفتارهای آن را کنترل میکند. آردوینو (Arduino) و رزبری پای (Raspberry Pi) از گزینههای پرکاربرد در این زمینه هستند. میکروکنترلری را انتخاب کنید که متناسب با سطح دانش فنی و پیچیدگی پروژه شما باشد. همچنین اطمینان حاصل کنید که توانایی برنامهنویسی آن را دارید.
۴. مونتاژ مکانیکی: ساختار مکانیکی ربات خود را بسازید. این کار شامل اتصال اجزا، اتصال چرخها و ایجاد چارچوبی برای قرار دادن قطعات الکترونیکی است. اطمینان حاصل کنید که قطعات به طور ایمن قرار میگیرند امکان حرکت کافی دارند..
۵. مونتاژ بخش الکترونیک: در این مرحله، قطعات الکترونیکی مانند موتورها، سنسورها و میکروکنترلرها را متناسب با طراحی خود وصل کنید. به سیمکشی و اتصالات توجه ویژهای داشته باشید، زیرا دقت در این بخش بر عملکرد کلی ربات تأثیرگذار است. اگر ربات شما قابل برنامهریزی است، این مرحله برای موفقیت طولانیمدت آن ضروری است.
۶. ثبت کارها: پیشرفت، چالشها و راهحلهای خود را یادداشت کنید. این مستندات برای مراجع بعدی مفید خواهد بود و همچنین میتواند به عنوان منبع الهامبخشی برای دیگران باشد.
۷. معرفی و اشتراکگذاری: با پشت سر گذاشتن این مراحل، یک ربات را از ابتدا ساختهاید. ربات ساختهشده خود را با دوستان، علاقهمندان، همکاران یا جوامع آنلاین به اشتراک بگذارید. از این تجربه یاد بگیرید و با اطمینان برای پروژه رباتیک بعدی خود برنامهریزی کنید.
در این بخش، مراحل عملی ساخت یک ربات را بررسی میکنیم.
در اولین بخش از آموزش ساخت ربات، مراحل مونتاژ ربات را مرور میکنیم.
۱. قطعات را جمعآوری کنید. برای ساخت یک ربات اولیه، به چندین قطعه ساده نیاز دارید. میتوانید همه یا بیشترِ این قطعات را از فروشگاههای لوازم الکترونیکی یا فروشگاههای آنلاین تهیه کنید. برخی از کیتهای اولیه ممکن است شامل تمام این قطعات نیز باشند. رباتی که قصد ساخت آن را داریم، بدون نیاز به لحیمکاری قابل مونتاژ است.
قطعات و اجزای ربات عبارتاند از:
۳. دو سروو موتور را در انتهای جاباتری باتری تراز کنید. این قسمت باید انتهایی باشد که سیم جاباتری از آن خارج میشود. سرووها باید ته آن را لمس کنند، و مکانیسمهای چرخشی هر کدام باید رو به طرفهای جاباتری باشد. سروو موتورها باید به درستی تراز شوند تا چرخها مستقیم حرکت کنند. سیمهای سروو باید از پشت جاباتری جدا شوند.
۴. سرووها را با چسب بچسبانید. مطمئن شوید که آنها محکم به جاباتری وصل شدهاند. پشت سرووها باید همتراز با پشت جاباتری باشد. اکنون سروو موتورها باید نیمه پشتی جاباتری را اشغال کرده باشند.
۵. بردبورد را روی سطح بالایی جاباتری، بهگونهای که کمی از قسمت جلویی آن بیرون بزند، محکم بچسبانید. قبل از ادامه، مطمئن شوید که بردبورد بهخوبی ثابت شده است. ردیف ‘A’ باید در سمت سروو موتورها قرار گیرد.
۶. میکروکنترلر آردوینو را روی سطح صاف ایجادشده توسط سروو موتورها قرار دهید. اگر سرووها بهدرستی نصب شده باشند، سطح بالایی آنها باید یک پایهی مناسب برای چسباندن آردوینو فراهم کند. برد آردوینو را طوری بچسبانید که کانکتورهای USB و تغذیه آن به سمت پشت (دور از بردبورد) قرار گیرند. دقت کنید که قسمت جلویی آردوینو حداقل میزان همپوشانی را با بردبورد داشته باشد.
۷. چرخها را روی سرووها قرار دهید و آنها را محکم روی مکانیسم چرخشی سروو فشار دهید. این کار ممکن است به نیروی قابل توجهی نیاز داشته باشد، زیرا چرخها به گونهای طراحی شدهاند که برای بهترین کشش تا حد ممکن محکم شوند.
۸. غلتک را به پایین برد بورد وصل کنید. اگر شاسی را برگردانید، باید برد بورد را ببینید که از پشت جاباتری کشیده شده است. غلتک را به این قطعه کشیده وصل کنید و در صورت لزوم از رایزر استفاده کنید. غلتک به عنوان چرخ جلو عمل میکند و به ربات اجازه میدهد به راحتی در هر جهت بچرخد. اگر کیت خریدهاید، ممکن است غلتک با چند رایزر همراه باشد که میتوانید برای اطمینان از رسیدن غلتک به زمین از آنها استفاده کنید.
در این گام، سیمبندی ربات را انجام میدهیم.
۱. دو تکه هدر ۳ پین را جدا کنید. از اینها برای اتصال سرووها به برد بورد استفاده خواهید کرد. پینها را از طریق هدر به پایین فشار دهید تا پینها از هر دو طرف با فاصله مساوی بیرون بیایند.
۲. دو هدر را در پینهای ۱ تا ۳ و ۶ تا ۸ در ردیف E برد بورد قرار دهید. اطمینان حاصل کنید که آنها محکم قرار داده شدهاند.
۳. کابلهای سروو موتور را با کابل مشکی در سمت چپ (پینهای ۱ و ۶) به هدرها وصل کنید. با این کار، سرووها به برد برد متصل میشوند. اطمینان حاصل کنید که سروو سمت چپ به هدر سمت چپ و سروو سمت راست به هدر سمت راست متصل است.
۴. سیمهای جامپر قرمز را از پینهای C2 و C7 به پینهای ریلی قرمز (مثبت) وصل کنید. اطمینان حاصل کنید که از ریل قرمز در پشت برد بورد (نزدیکتر به بقیه شاسی) استفاده میکنید.
۵. سیمهای جامپر مشکی را از پینهای B1 و B6 به پینهای ریلی آبی (زمین) وصل کنید. اطمینان حاصل کنید که از ریل آبی در پشت برد بورد استفاده میکنید. دقت کنید که آنها را به پینهای ریل قرمز وصل نکنید.
۶. سیمهای جامپر سفید را از پینهای 12 و 13 در آردوینو به A3 و A8 وصل کنید. این کار به آردوینو اجازه میدهد تا سرووها را کنترل کند و چرخها را بچرخاند.
۷. سنسور را به جلوی برد بورد وصل کنید. این قطعه به ریلهای تغذیه برد بورد وصل نمیشود، بلکه به ردیف اول پینهای حروف (J) متصل میشود. مطمئن شوید که آن را دقیقاً در مرکز و با تعداد مساوی پین در هر طرف قرار دادهاید.
۸. یک سیم جامپر مشکی را از پین I14 به اولین پین ریلی آبی موجود در سمت چپ سنسور وصل کنید. این کار سنسور را زمین میکند.
۹. یک سیم جامپر قرمز را از پینI17 به اولین پین ریل قرمز موجود در سمت راست سنسور وصل کنید. این کار برای تغذیه سنسور است.
۱۰. سیمهای جامپر سفید را از پین I15 به پین 9 در آردوینو و از I16 به پین 8 وصل کنید. این اتصالت موجب میشود اطلاعات از سنسور به میکروکنترلر منتقل شود.
سیمبندی منبع تغذیه طبق مراحل زیر انجام میشود.
۱. ربات را به پهلو برگردانید تا بتوانید باتریها را ببینید. آن را طوری قرار دهید که کابل جاباتری به سمت چپ از پایین خارج شود.
۲. یک سیم قرمز را از سمت چپ و پایین به فنر دوم وصل کنید. مطمئن شوید که جهت جاباتری به درستی قرار شده است.
۳. یک سیم سیاه را به آخرین فنر در پایین و سمت راست وصل کنید. این دو کابل به تأمین ولتاژ صحیح آردوینو کمک میکنند.
۴. سیمهای قرمز و مشکی را به پینهای قرمز و آبی سمت راست در پشت برد بورد وصل کنید. کابل مشکی باید به پین ریل آبی در پایه 30 وصل شود. کابل قرمز باید به پین ریل قرمز در پایه 30 وصل شود.
۵. یک سیم مشکی از پین GND روی آردوینو به ریل آبی پشتی وصل کنید. آن را در پایه 28 روی ریل آبی وصل کنید.
۶. برای هر کدام یک سیم مشکی از ریل آبی پشتی به ریل آبی جلویی در پین 29 وصل کنید. ریل های قرمز را به هم وصل نکنید، زیرا به احتمال زیاد به آردوینو آسیب خواهید رساند.
۷. یک سیم قرمز را از ریل قرمز جلو در پایه 30 به پایه 5 ولت آردوینو وصل کنید. این کار تغذیه آردوینو را تأمین میکند.
۸. سوئیچ دکمه فشاری را در شکاف بین ردیفهای پایههای 24-26 قرار دهید. این سوئیچ به شما این امکان را میدهد که ربات را بدون نیاز به قطع تغذیه خاموش کنید.
۹. یک سیم قرمز را از H24 به ریل قرمز در پین بعدی موجود در سمت راست سنسور وصل کنید. این کار دکمه را روشن میکند.
۱۰. از مقاومت برای اتصال H26 به ریل آبی استفاده کنید. آن را مستقیماً به پین کنار سیم مشکی که چند مرحله پیش وصل کردید وصل کنید.
۱۱. یک سیم سفید از G26 به پایه 2 آردوینو وصل کنید. این کار به آردوینو اجازه میدهد تا وضعیت دکمه فشاری را ثبت کند.
اکنون که همه قسمتهای مکانیکی و اتصالاتی الکتریکی نصب و متصل شدهاند، میتوانیم نرمافزار آردوینو را نصب و در گام بعد، آن را پروگرم کنیم.
۱. محیط توسعه یا IDE آردوینو را دانلود و استخراج کنید. این IDE به شما امکان میدهد دستورالعملهایی را برنامهریزی کنید و سپس آنها را در میکروکنترلر آردوینو خود آپلود کنید. میتوانید این IDE را به صورت رایگان از arduino.cc/en/main/software دانلود کنید. فایل دانلود شده را با دو بار کلیک کردن روی آن از حالت فشرده خارج کنید و پوشه داخل آن را به مکانی با دسترسی آسان منتقل کنید. در واقع برنامه را نصب نخواهید کرد. در عوض، فقط با دو بار کلیک کردن روی arduino.exe، آن را از پوشه استخراجشده اجرا می کنید.
۲. پک باتری را به آردوینو وصل کنید. جک پشت باتری را به کانکتور آردوینو وصل کنید تا از این طریق به آن برق بدهید.
۳. آردوینو را از طریق USB به کامپیوتر خود وصل کنید. ویندوز احتمالاً دستگاه را نمیشناسد.
۴. کلیدهای Win+R را فشار دهید و devmgmt.msc را تایپ کنید. با این کار Device Manager باز میشود.
۵. روی “Unknown device” در بخش “Other devices” راست کلیک کرده و “Update Driver Software” را انتخاب کنید. اگر این گزینه را نمیبینید، به جای آن روی “Properties” کلیک کنید، تب “Driver” را انتخاب کنید و سپس روی “Update Driver” کلیک کنید.
۶. “Browse my computer for driver software” را انتخاب کنید. این کار به شما امکان میدهد درایوری را که با Arduino IDE ارائه شده است انتخاب کنید.
۷. روی “Browse” کلیک کنید، سپس به پوشهای که قبلاً استخراج کردهاید بروید. یک پوشه “drivers” در داخل پوشه پیدا خواهید کرد.
۸. پوشه “drivers” را انتخاب کرده و روی “OK” کلیک کنید. اگر در مورد نرمافزار ناشناخته به شما هشدار داده شد، تأیید کنید که میخواهید ادامه دهید.
در این گام مراحل پروگرم کردن ربات را مرور میکنیم.
۱. Arduino IDE را با دوبار کلیک کردن روی فایل arduino.exe در پوشه IDE باز کنید. با یک پروژه خالی مواجه میشوید.
۲. کد زیر را بچسبانید تا ربات شما مستقیم حرکت کند. کد زیر باعث میشود آردوینو شما به طور پیوسته به جلو حرکت کند.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | #include <Servo.h> // this adds the "Servo" library to the program // the following creates two servo objects Servo leftMotor; Servo rightMotor; void setup() { leftMotor.attach(12); // if you accidentally switched up the pins for your servos, you can swap the numbers here rightMotor.attach(13); } void loop() { leftMotor.write(180); // with continuous rotation, 180 tells the servo to move at full speed "forward." rightMotor. write(0); // if both of these are at 180, the robot will go in a circle because the servos are flipped. "0," tells it to move full speed "backward." } |
۳. برنامه را Build و Upload کنید. برای Build و Upload کردن برنامه در آردوینو، روی دکمه پیکان سمت راست در گوشه سمت چپ بالا کلیک کنید. پس از آپلود برنامه، ممکن است بخواهید ربات را از روی سطح بردارید، زیرا ربات به طور خودکار پس از آپلود به حرکت خود ادامه میدهد.
۴. قابلیت kill switch را اضافه کنید. کد زیر را به بخش void loop()
برنامه خود اضافه کنید تا kill switch در بالای توابع write()
فعال شود.
1 2 3 4 5 6 7 8 | if(digitalRead(2) == HIGH) // this registers when the button is pressed on pin 2 of the Arduino { while(1) { leftMotor.write(90); // "90" is neutral position for the servos, which tells them to stop turning rightMotor.write(90); } } |
۵. کد خود را آپلود و تست کنید. با اضافه شدن کد kill switch، میتوانید ربات را آپلود و تست کنید. تا زمانی که سوئیچ را فشار دهید ربات باید به جلو حرکت کند و در این مرحله حرکت متوقف میشود.
کد کامل باید به شکل زیر باشد:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 | #include <Servo.h> // the following creates two servo objects Servo leftMotor; Servo rightMotor; void setup() { leftMotor.attach(12); rightMotor.attach(13); } void loop() { if(digitalRead(2) == HIGH) { while(1) { leftMotor.write(90); rightMotor.write(90); } } leftMotor.write(180); rightMotor.write(0); } |
کد زیر از سنسور متصل به ربات استفاده میکند تا هر زمان که به مانعی برخورد کرد، آن را به سمت چپ بچرخاند. برای جزئیات بیشتر در مورد کارهایی که هر قسمت انجام میدهد کامنتها در کد درج شده است. کد زیر کل برنامه را نشان میدهد.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 | #include <Servo.h> Servo leftMotor; Servo rightMotor; const int serialPeriod = 250; // this limits output to the console to once every 1/4 second unsigned long timeSerialDelay = 0; const int loopPeriod = 20; // this sets how often the sensor takes a reading to 20ms, which is a frequency of 50Hz unsigned long timeLoopDelay = 0; // this assigns the TRIG and ECHO functions to the pins on the Arduino. Make adjustments to the numbers here if you connected differently const int ultrasonic2TrigPin = 8; const int ultrasonic2EchoPin = 9; int ultrasonic2Distance; int ultrasonic2Duration; // this defines the two possible states for the robot: driving forward or turning left #define DRIVE_FORWARD 0 #define TURN_LEFT 1 int state = DRIVE_FORWARD; // 0 = drive forward (DEFAULT), 1 = turn left void setup() { Serial.begin(9600); // these sensor pin configurations pinMode(ultrasonic2TrigPin, OUTPUT); pinMode(ultrasonic2EchoPin, INPUT); // this assigns the motors to the Arduino pins leftMotor.attach(12); rightMotor.attach(13); } void loop() { if(digitalRead(2) == HIGH) // this detects the kill switch { while(1) { leftMotor.write(90); rightMotor.write(90); } } debugOutput(); // this prints debugging messages to the serial console if(millis() - timeLoopDelay >= loopPeriod) { readUltrasonicSensors(); // this instructs the sensor to read and store the measured distances stateMachine(); timeLoopDelay = millis(); } } void stateMachine() { if(state == DRIVE_FORWARD) // if no obstacles detected { if(ultrasonic2Distance > 6 || ultrasonic2Distance < 0) // if there's nothing in front of the robot. ultrasonicDistance will be negative for some ultrasonics if there is no obstacle { // drive forward rightMotor.write(180); leftMotor.write(0); } else // if there's an object in front of us { state = TURN_LEFT; } } else if(state == TURN_LEFT) // if an obstacle is detected, turn left { unsigned long timeToTurnLeft = 500; // it takes around .5 seconds to turn 90 degrees. You may need to adjust this if your wheels are a different size than the example unsigned long turnStartTime = millis(); // save the time that we started turning while((millis()-turnStartTime) < timeToTurnLeft) // stay in this loop until timeToTurnLeft has elapsed { // turn left, remember that when both are set to "180" it will turn. rightMotor.write(180); leftMotor.write(180); } state = DRIVE_FORWARD; } } void readUltrasonicSensors() { // this is for ultrasonic 2. You may need to change these commands if you use a different sensor. digitalWrite(ultrasonic2TrigPin, HIGH); delayMicroseconds(10); // keeps the trig pin high for at least 10 microseconds digitalWrite(ultrasonic2TrigPin, LOW); ultrasonic2Duration = pulseIn(ultrasonic2EchoPin, HIGH); ultrasonic2Distance = (ultrasonic2Duration/2)/29; } // the following is for debugging errors in the console. void debugOutput() { if((millis() - timeSerialDelay) > serialPeriod) { Serial.print("ultrasonic2Distance: "); Serial.print(ultrasonic2Distance); Serial.print("cm"); Serial.println(); timeSerialDelay = millis(); } } |
ساختن یک ربات ممکن است در ابتدا چالشبرانگیز به نظر برسد، اما با منابع مناسب، دانش و اشتیاق، هر کسی میتواند این ماجراجویی هیجانانگیز را آغاز کند. از درک اصول اساسی رباتیک تا مونتاژ اجزای مکانیکی و الکترونیکی و در نهایت برنامهنویسی، هر مرحله دروازهای به سوی نوآوری و یادگیری است. چه با یک ربات ساده شروع کنید و چه در پروژهای پیچیده غرق شوید، تماشای خلق ربات برایتان لذتبخش خواهد بود. بنابراین، اگر قصد دارید این کار را انجام دهید، ابزارهای خود را جمعآوری کنید، خلاقیتتان را رها کنید و رباتی بسازید که فقط یک ماشین نیست، بلکه گواهی بر نبوغ انسان است.
به یاد داشته باشید که دنیای رباتیک به همان اندازه که گسترده است، تنوع دارد. مهارتهایی که هنگام ساختن اولین ربات خود به دست میآورید، درها را به روی دستاوردهای بیپایان، از پروژههای سرگرمی گرفته تا تحقیقات پیشرفته، باز میکند. بنابراین، آستینها را بالا بزنید و سفر هیجانانگیز ساخت و برنامهنویسی رباتها را از ابتدا آغاز کنید.
منبع: WikiHow
نویسنده شو !
سیسوگ با افتخار فضایی برای اشتراک گذاری دانش شماست. برای ما مقاله بنویسید.