ربات شخصی یک خرید جالب خواهد بود؛ البته جیب شما را به چالش خواهد کشید؛ ولی هنوز راه دیگری نیز برای رسیدن به این آرزو وجود دارد.
کتابخانه پاژ | آیا فکر میکنید ساختن رابتها کارنوابغ است. آیاد دوست دارید شما نیز یاد بگیرید که چگونه ربات خود را بسازید؟نکته مهم این است که بدانید انواع مختلفی از ربات وجود دارد و خبرخوب این است که می توانید خودتان آنها را بسازید.
اکثر مردم می خواهند ببینند که یک ربات کارهای ساده حرکت از نقطه A به نقطه B را انجام میدهد. شما می توانید یک ربات را به طور کامل از اجزای آنالوگ بسازید یا یک کیت ربات را خریداری کنید! ساختن ربات شخصی یک راه عالی برای آموزش الکترونیک و همچنین پیسرفت در برنامه نویسی کامپیوتر است.
برای اینکه باور کنید شما نیز میتوانید یک ربات بسازید مراحل ساخت ربات شخصی را بررسی کنید.
جمعآوری اجزای ربات
اجزای ربات خود را جمع آوری کنید. برای ساخت یک ربات اولیه، به چندین جزء ساده نیاز دارید. شما می توانید بیشتر، اگر نه همه، از این قطعات را در فروشگاه سرگرمی لوازم الکترونیکی محلی خود یا چندین خرده فروش آنلاین یا حتی در میان اشیای بلا استفاده منزل پیدا کنید.
- ۱ میکروکنترلر (مثلا برد آردوینو)
- ۲ آرمیچر چرخش مداوم
- ۲ چرخ متناسب با آرمیچر
- غلتک ۱ عدد
- ۱ بِرِدبُورد بدون لحیم کوچک ( بِرِدبُورد یا بُورد آزمایشی که دو خط مثبت و منفی در هر سمت لبه خود دارد)
- ۱ سنسور فاصله (با کابل اتصال چهار پین)
- ۱ سوئیچ دکمه ای کوچک
- ۱ مقاومت ۱۰ کیلو اهم
- ۱ کابل USB A به
- ۱ مجموعه سرصفحه جدا B
- ۱ نگهدارنده باتری ۶ x AA با جک برق۹ ولت دیسی
- ۱ بسته سیم جامپر یا سیم قلاب گیج ۲۲
- چسب دو طرفه قوی یا چسب حرارتی
مراحل اسمبل کردن قطعات ربات
۱. بسته باتری را طوری برگردانید که پشت صاف به سمت بالا باشد. شما بدنه ربات را با استفاده از بسته باتری به عنوان پایه می سازید.
۲. دو آرمیچر را در انتهای بسته باتری تراز کنید. این باید انتهایی باشد که سیم بسته باتری از آن خارج میشود. سرووها باید ته آن را لمس کنند، و مکانیسمهای چرخشی هر کدام باید رو به طرفهای بسته باتری باشد. سرووها باید به درستی تراز شوند تا چرخ ها مستقیم حرکت کنند. سیم های سروو باید از پشت بسته باتری جدا شوند.
۳. آرمیچرها را با نوار یا چسب خود بچسبانید. مطمئن شوید که آنها به طور محکم به بسته باتری وصل شده اند. پشت سرووها باید همتراز با پشت بسته باتری باشد. اکنون آرمیچرها باید نیمه پشتی بسته باتری را اشغال کنند.
۴. بِرِدبُورد را به صورت عمود بر روی فضای باز بسته باتری بچسبانید. باید کمی روی قسمت جلوی بسته باتری آویزان شود و فراتر از هر طرف گسترش یابد. قبل از ادامه، مطمئن شوید که محکم بسته شده است. ردیف “A” باید نزدیکترین به سرووها باشد.
۵. میکروکنترلر آردوینو را به بالای آرمیچرها وصل کنید. اگر آرمیچرها را به درستی وصل کرده باشدی، باید فضای کافی برای آنها ایجاد شود. برد آردوینو را روی این فضای صاف بچسبانید تا کانکتورهای USB و پاور آردوینو رو به پشت (دور از بِردبورد) باشند. قسمت جلوی آردوینو باید به سختی روی بردبورد همپوشانی داشته باشد.
۶. چرخ ها را روی آرمیچرها سوار کنید. چرخ ها را محکم روی مکانیسم چرخشی آرمیچرها فشار دهید. این ممکن است به نیروی قابل توجهی نیاز داشته باشد، زیرا چرخ ها به گونه ای طراحی شده اند که برای بهترین کشش تا حد ممکن محکم شوند.
۷. کاستور (چرخ لغزان مانند چرخ زیر صندلی یا میز که حول محورعمودی به هرسمت میچرخد.) را به پایین بردبورد وصل کنید. اگر شاسی را برگردانید، باید کمی بردبوردرا ببینید که از پشت بسته باتری ادامه پیدا کرده. کاستر را به این قطعه کشیده وصل کنید و در صورت لزوم از رایزر استفاده کنید. کاستور به عنوان چرخ جلو عمل می کند و به ربات اجازه می دهد به راحتی در هر جهت بچرخد.
مرحله سیمکشی ربات
۱. دو هدر ۳ پین را جدا کنید. شما از اینها برای اتصال آرمیچرها به بردبورد استفاده خواهید کرد. پینها را از طریق هدر به سمت پایین فشار دهید تا پین ها از هر دو طرف با فاصله مساوی بیرون بیایند.
۲. دو هدر را در پین های ۱-۳ و ۶-۸ در ردیف E بردبورد قرار دهید. مطمئن شوید که آنها محکم وارد شده اند.
۳.کابل های سروو را با کابل مشکی در سمت چپ (پین های ۱ و ۷) به هدرها وصل کنید. با این کار سرووها به بردبورد متصل می شوند. اطمینان حاصل کنید که سروو سمت چپ به هدر سمت چپ و سروو سمت راست به هدر سمت راست متصل است.
۴.سیم های جامپر قرمز را از پایه های C2 و C7 به پین های ریلی قرمز (مثبت) وصل کنید. اطمینان حاصل کنید که از ریل قرمز در پشت بردبورد (نزدیکتر به بقیه شاسی) استفاده می کنید.
۵. سیم های جامپر مشکی را از پایه های B1 و B6 به پین های ریلی آبی (زمینی) وصل کنید. اطمینان حاصل کنید که از ریل آبی در پشت بردبورد استفاده میکنید. آنها را به پین های ریل قرمز وصل نکنید.
۶.سیم های جامپر سفید را از پایه های ۱۲ و ۱۳ در آردوینو به A3 و A8 وصل کنید. این به آردوینو اجازه می دهد تا سرووها را کنترل کند و چرخ ها را بچرخاند.
۷. سنسور را به جلوی بردبورد وصل کنید. آنها به ریل های برق بیرونی بردبورد وصل نمی شود، بلکه به ردیف اول پین های حروف (J) متصل می شود. مطمئن شوید که آن را دقیقاً در مرکز قرار داده اید، با تعداد مساوی پین در هر طرف.
۸.یک سیم بلوز مشکی را از پایه I14 به اولین پایه ریلی آبی موجود در سمت چپ سنسور وصل کنید.این سیم سنسور را به اتصال زمین را ممکن میکند.
۹. یک سیم جامپر قرمز را از پایه I17 به اولین پایه ریل قرمز موجود در سمت راست سنسور وصل کنید. این مدار حسگر را تغذیه می کند.
۱۰. سیم های جامپر سفید را از پایه I15 به پایه ۹ در آردوینو و از I16 به پایه ۸ وصل کنید. این اطلاعات را از سنسور به میکروکنترلر منتقل می کند.
مرحله سیم کشی برق
۱.ربات را به پهلو برگردانید تا بتوانید باتری های بسته را ببینید. آن را طوری جهت دهید که کابل بسته باتری به سمت چپ در پایین خارج شود.
۲. یک سیم قرمز را از سمت چپ پایین به فنر دوم وصل کنید. مطمئن شوید که بسته باتری به درستی جهت گیری شده است.
۳.یک سیم سیاه را به آخرین فنر در پایین سمت راست وصل کنید. این دو کابل به تامین ولتاژ صحیح آردوینو کمک می کنند.
۴.سیم های قرمز و مشکی را به پین های قرمز و آبی سمت راست در پشت تخته نان وصل کنید. کابل مشکی باید به پین ریل آبی در پایه ۳۰ وصل شود. کابل قرمز باید به پین ریل قرمز در پایه ۳۰ وصل شود.
۵.یک سیم مشکی از پین GND روی آردوینو به ریل آبی پشتی وصل کنید. آن را در پایه ۲۸ روی ریل آبی وصل کنید.
۶. برای هر کدام یک سیم مشکی از ریل آبی پشتی به ریل آبی جلویی در پین ۲۹ وصل کنید. ریل های قرمز را به هم وصل نکنید، زیرا به احتمال زیاد به آردوینو آسیب خواهید رساند.
۷. یک سیم قرمز را از ریل قرمز جلو در پایه ۳۰ به پایه ۵ ولت آردوینو وصل کنید. این انرژی آردوینو را تامین می کند.
۸. سوئیچ دکمه فشاری را در شکاف بین ردیف های پایه های ۲۴-۲۶ قرار دهید. این سوئیچ به شما این امکان را می دهد که ربات را بدون نیاز به قطع برق خاموش کنید.
۹. یک سیم قرمز را از H24 به ریل قرمز در پین بعدی موجود در سمت راست سنسور وصل کنید. این دکمه را روشن می کند.
۱۰. از مقاومت برای اتصال H26 به ریل آبی استفاده کنید. آن را مستقیماً به پین کنار سیم مشکی که چند قگام وصل کردید وصل کنید.
۱۱. یک سیم سفید از G26 به پایه ۲ آردوینو وصل کنید. این به آردوینو اجازه میدهد تا تاثیر دکمه فشار را ثبت کند.
نصب نرم افزار آردوینو
برای انجام این مرحله از راهنمای نصب نرمافزار آردوینو روی رایانه شخصی استفاده کنید.
برنامهنویسی ربات
۱. با دوبار کلیک کردن روی فایل arduino.exe کار Arduino IDE را شروع کنید. این فایل در IDE است. رابط کاربری با یک پروژه خالی از شما استقبال میکند.
۲. کد زیر را به جای متن قرار دهید تا ربات شما مستقیم حرکت کند. کد زیر باعث می شود آردوینو شما به طور مداوم به جلو حرکت کند.
#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(۱۲); // if you accidentally switched up the pin numbers for your servos, you can swap the numbers here rightMotor.attach(۱۳); } void loop() { leftMotor.write(۱۸۰); // with continuous rotation, 180 tells the servo to move at full speed "forward." rightMotor. write(۰); // 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." }
۳. برنامه را بسازید و آپلود کنید. برای ساختن و آپلود برنامه در آردوینو متصل، روی دکمه پیکان سمت راست در گوشه سمت چپ بالا کلیک کنید.
ممکن است لازم باشد ربات را از روی سطح بردارید، زیرا ربات پس از آپلود برنامه به حرکت خود ادامه می دهد.
۴. قابلیت سوئیچ kill را اضافه کنید. کد زیر را به بخش “void loop()” کد خود اضافه کنید تا کلید kill را در بالای توابع “write()” فعال کنید.
if(digitalRead(۲) == HIGH) // this registers when the button is pressed on pin 2 of the Arduino { while(۱) { leftMotor.write(۹۰); // "۹۰" is neutral position for the servos, which tells them to stop turning rightMotor.write(۹۰); } }
۵. کد خود را آپلود و تست کنید. با اضافه شدن کد kill switch، می توانید ربات را آپلود و آزمایش کنید. باید تا زمانی که سوئیچ را فشار دهید به حرکت رو به جلو ادامه دهد، در این مرحله حرکت آن متوقف خواهد شد. کد کامل باید به شکل زیر باشد:
#include <Servo.h> // the following creates two servo objects Servo leftMotor; Servo rightMotor; void setup() { leftMotor.attach(۱۲); rightMotor.attach(۱۳); } void loop() { if(digitalRead(۲) == HIGH) { while(۱) { leftMotor.write(۹۰); rightMotor.write(۹۰); } } leftMotor.write(۱۸۰); rightMotor.write(۰); }
تست علمیات ربات
یک مثال را تست کنید واز ربات ساخته خود لذت ببیرد . کد زیر از حسگر متصل به ربات استفاده می کند تا هر زمان که به مانعی برخورد کرد، آن را به سمت چپ بچرخاند. کد زیر کل برنامه است.
#include <Servo.h> Servo leftMotor; Servo rightMotor; const int serialPeriod = ۲۵۰; // this limits output to the console to once every 1/4 second unsigned long timeSerialDelay = ۰; const int loopPeriod = ۲۰; // this sets how often the sensor takes a reading to 20ms, which is a frequency of 50Hz unsigned long timeLoopDelay = ۰; // 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 = ۸; const int ultrasonic2EchoPin = ۹; 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; // ۰ = drive forward (DEFAULT), 1 = turn left void setup() { Serial.begin(۹۶۰۰); // these sensor pin configurations pinMode(ultrasonic2TrigPin, OUTPUT); pinMode(ultrasonic2EchoPin, INPUT); // this assigns the motors to the Arduino pins leftMotor.attach(۱۲); rightMotor.attach(۱۳); } void loop() { if(digitalRead(۲) == HIGH) // this detects the kill switch { while(۱) { leftMotor.write(۹۰); rightMotor.write(۹۰); } } 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 > ۶ || ultrasonic2Distance < ۰) // 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(۱۸۰); leftMotor.write(۰); } 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 = ۵۰۰; // 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(۱۸۰); leftMotor.write(۱۸۰); } 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(۱۰); // keeps the trig pin high for at least 10 microseconds digitalWrite(ultrasonic2TrigPin, LOW); ultrasonic2Duration = pulseIn(ultrasonic2EchoPin, HIGH); ultrasonic2Distance = (ultrasonic2Duration/۲)/۲۹; } // 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(); } }