نمایش نتایج: از 1 به 6 از 6
Like Tree6 لایک
  • 2 Post By کافه ربات
  • 1 Post By کافه ربات
  • 1 Post By magmagmary
  • 2 Post By کافه ربات

موضوع: ساخت یک ربات ساده با آردوینو برای تازه کارها

  1. #1
    Member
    تاریخ عضویت
    Aug 2015
    محل سکونت
    ایران
    نوشته ها
    56

    Lightbulb ساخت یک ربات ساده با آردوینو برای تازه کارها

    سلام دوستای خوبم، از امروز می خوایم آموزش های کاربردی و کاملی برای ساخت ربات رو براتون بذاریم. امیدوارم بتونیم در جهت یادگیری رباتیک بهتون کمک کنیم. قسمت اول این آموزش رو امروز براتون میذارم و قسمت های بعدیش رو هم طی چند روز آینده.
    البته آموزش یکجا و کاملش برای کسانی که عجله دارن و علاقه مندن توی سایت کافه ربات موجوده.

    آموزش رباتیک | آموزش ساخت ربات ساده با استفاده از آردوینو

    ساخت یک ربات ساده برای تازه کارها(قسمت اول)

    برای دیدن سایز بزرگ روی عکس کلیک کنید

نام: blog_940503_first30_dfeb3628efdabddb674120a605bc3aac.jpg
مشاهده: 297
حجم: 30.3 کیلو بایت

    در این قسمت می خواهیم یک آموزش گام به گام برای ساخت رباتی ساده برای تازه کارها ارایه دهیم. با انجام این مراحل می توانید اولین ربات خود را به سادگی با آردوینو بسازید. با ما همراه شوید.
    قطعات مورد نیاز:
    برد آردوینو Uno
    سروو موتور
    برد بورد
    تعدادی سیم
    درایور موتور L293D
    موتور پلاستیکی دنده ای 60 تا 100RPM
    چرخ سازگار با موتور دنده ای (یک عدد)
    چرخ کاستور castor (دو عدد)
    سنسور فاصله آنالوگ GP2D12 و یا GP2Y0A02YK
    باتری 9 ولتی PP3
    باتری قلمی 1.5 ولتی (چهار عدد)
    نگه دارنده ی باتری
    کانکتور باتری
    صفحه ی آکریلیک
    کابل USB
    نوار چسب دو طرفه
    هویه
    طرز ساخت:

    در ابتدا سیم های برد بورد را به موتور های دنده ای لحیم کنید. این کار اتصال موتور ها را به برد بورد آسان تر می کند.سپس چرخ ها را بوسیله ی پیچ به شافت موتور متصل کنید. سپس چرخ کاستور را به ناحیه زیر صفحه و در جلوی ربات و قسمت وسط توسط چسب های دو طرفه بچسبانید. این چرخ ها می توانند حول یک محور عمودی چرخش نمایند.

    برای دیدن سایز بزرگ روی عکس کلیک کنید

نام: blog_940503_first25.jpg
مشاهده: 278
حجم: 22.4 کیلو بایت

    حال دو موتور را بر روی صفحه در قسمت عقب ربات قرار داده و توسط چسب دو طرفه بچسبانید. اکنون سروو را در قسمت جلوی ربات درست بر روی چرخ کاستور باز هم توسط چسب دو طرفه بچسبانید.سپس برد آردوینو و برد بورد را طبق عکس فوق بر روی صفحه ی آکریلیک ثابت کنید.


    حال باتری 9 ولت متصل به کانکتور(دارای DC plug ) و باتری های قلمی متصل به کانکتور (بدون DCPlug) را مطابق شکل بر روی بدنه ی ربات قرار دهید. از Dc plug برای اتصال باتری 9 ولتی به آردوینو استفاده می شود.

    سنسور فاصله بر روی سروو قرار خواهد گرفت اما قبل از آن لازم است تا سروو در ناحیه ی مرکزی خود قرار گیرد(90 درجه).


    برای دیدن سایز بزرگ روی عکس کلیک کنید

نام: blog_940503_first26.jpg
مشاهده: 239
حجم: 26.3 کیلو بایت

    نحوه ی سیم بندی و اتصالات به همراه کدها و برنامه نویسی کاملش رو در قسمت بعد براتون میذاریم.
    موفق باشید

  2. #2
    Member
    تاریخ عضویت
    Aug 2015
    محل سکونت
    ایران
    نوشته ها
    56

    ساخت یک ربات ساده برای تازه کارها- قسمت دوم

    سلام دوستان خوبم. امروز می خوایم قسمت دوم آموزش ساخت ربات ساده رو براتون بذاریم. آموزش کاملش رو می تونید در سایت کافه ربات در قسمت آکادمی ببینید.

    آموزش رباتیک | آموزش ساخت ربات ساده با استفاده از آردوینو

    تخصصی ترین مرجع آموزش رباتیک | پروژه رباتیک| آموزش آردوینو

    در قسمت قبل قطعات مورد نیاز و نحوه ی سوار کردن اجزا بر روی شاسی ربات رو با هم دیدیم. در این قسمت نجوه ی سیم بندی و اتصالات اجزا رو با هم مشاهده خواهیم کرد. با ما همراه باشید.

    اتصالات و سیم بندی:

    برای دیدن سایز بزرگ روی عکس کلیک کنید

نام: blog_940503_first27.jpg
مشاهده: 316
حجم: 32.4 کیلو بایت

    عکس فوق نحوه ی اتصالات و چگونگی سیم بندی سیستم را نشان می دهد. توجه کنید که پس از اتمام سیم بندی قبل از اتصال باتری ها حتما از صحیح بودن اتصالات اطمینان حاصل کنید. عکس با کیفیت بهتر را می توانید از لینک زیر دریافت کنید.

    http://caferobot.ir/component/phocad...g-simple-robot

    اتصالات منبع تغذیه:

    آردوینو از یک منبع تغذیه 9 ولتی استفاده کرده و توسط رگولاتور داخلی آن را به 5 ولت رگوله می کند. بنابراین باتری 9 ولتی را توسط dc plug به آردوینو متصل می کنیم. از باتری های قلمی که 6 ولت را تامین می کنند برای سروو و موتورها استفاده می شود. منفی باتری های قلمی یا در واقع Ground باتری 6 ولتی باید به Ground آردوینو متصل شود.

    اتصالات سنسور فاصله:

    این سنسور دارای دو چشم است. چشم اول نور مادون قرمز را ارسال کرده و چشم دوم بازتاب آن را پس از برخورد نور به مانع دریافت می کند و از این طریق مسافت بین ربات و مانع را محاسبه می نماید.

    همانطور که گفته شد می توان از هر دو مدل سنسور GP2D12 و یا GP2Y0A02YKاستفاده نمود. تنها تفاوت این دو سنسور در محدوده ی مسافت قابل اندازه گیری آن هاست.

    GP2D12 مسافت های بین10 سانتی متر تا 80 سانتی متر و GP2Y0A02YK مسافت های بین 20 سانتی متر تا 150 سانتی متر را اندازه گیری می کند.

    از این سنسورها سه سیم خارج می شود.

    سیم قرمز به پین +5V آردوینو

    سیم قهوه ای یا سیاه به پین GND آردوینو

    سیم سفید یا زرد یا نارنجی به پین ورودی آردوینو. در اینجا به پین آنالوگ (Analog pin 0)

    اتصالات سروو:

    پایه سیگنال سروو(سیم سفید یا قرمز) به پین دیجیتال شماره 8 آردوینو (digital pin 8)

    پایه vcc سروو به سر مثبت باتری های قلمی (+6V)

    پایه GND سروو (سیم سیاه یا قهوه ای) به پین GND آردوینو

    اتصالات موتورها و درایور موتور L293D:

    موتورها توسط پین های دیجیتال شماره ی 4، 5، 6 و 7 درایور موتور L293D درایو شده و از منبع 6 ولتی تغذیه می شوند. اتصالات درایور موتور را می توانید از عکس مربوط به سیم بندی سیستم به طور کامل دریافت کنید.

    در پست بعد برنامه نویسی آردوینو رو به طور کامل براتون خواهیم گذاشت. موفق و پیروز باشید.
    ویرایش توسط کافه ربات : 08-22-2015 در ساعت 08:35 AM
    لایک کردن

  3. #3
    مدیر گروه
    تاریخ عضویت
    Nov 2013
    محل سکونت
    ایران
    نوشته ها
    4,064
    خدا قوت عالیه
    لایک کردن

  4. #4
    Member
    تاریخ عضویت
    Aug 2015
    محل سکونت
    ایران
    نوشته ها
    56
    آموزش ساخت یک ربات ساده با آردوینو - قسمت سوم

    با عرض سلام خدمت دوستان عزیز
    قسمت سوم آموزش ساخت ربات ساده برای تازه کارها رو امروز براتون میذاریم. امیدواریم در جهت یادگیری رباتیک بتونیم نقش موثری داشته باشیم. آموزش کامل ساخت این ربات به همراه سایر آموزش های کاربردی برای ساخت ربات های مختلف رو در سایت کافه ربات می تونید ببینید.


    تخصصی ترین مرجع آموزش رباتیک | پروژه رباتیک| آموزش آردوینو

    آموزش رباتیک | آموزش ساخت ربات ساده با استفاده از آردوینو


    برنامه نویسی ربات:

    اولین چیزی که برای برنامه ریزی آردوینو نیاز است دانلود نرم افزار آردوینو (IDE) و نصب آن است. نرم افزار آردوینو را می توانید از لینک زیر دانلود نموده و همچنین با استفاده از آموزش گام به گام نصب آن، این نرم افزار را نصب کنید.

    http://arduino.cc/en/Main/Software

    http://arduino.cc/en/Guide/HomePage

    یادآور می شویم که هنوز سنسور فاصله را بر روی سروو نصب نکرده ایم. در ابتدا باید برنامه ی انتقال سروو به مکان مبدا را بنویسیم و یا اصطلاحا سروو را کالیبره کنیم. پس از اینکه از اتصال هر دو منبع تغذیه در مدار اطمینان حاصل کردید نرم افزار آردوینو را باز نموده و در صفحه ی جدیدی که اسکچ (Sketch) نام دارد کد زیر را کپی کنید. این کد برای کالیبره کردن سروو به کار می رود.

    #include // includes the servo library
    Servo myservo; // creates a servo object
    voidsetup()
    {
    myservo.attach(8); // attaches the servo to digital pin 8
    }
    voidloop()
    {
    myservo.write(90); // moves the servo to 90 degree.
    delay(700); // wait for the servo to finish its rotation
    }
    این کد را از قسمت *Sketch → Verify/Compile* کامپایل کنید. بعد از کامپایل کردن برنامه جمله ی DoneCompiling دیده می شود.
    با استفاده از کابل USB آردوینو خود را به لپ تاپ متصل کنید. پس از اتصال می توانید دستگاه های متصل به لپ تاپ را از قسمت *Tools → Serial Port* مشاهده کنید. دستگاه خود را انتخاب کنید. اکنون قادر خواهید بود برنامه ی (اسکچ) خود را روی آردوینو آپلود کنید.

    برای آپلود کردن برنامه به سادگی می توان دکمه upload را از قسمت toolbar فشار دهید و یا از قسمت *File → Upload* فایل خود را بر آردوینو آپلود کنید. در این هنگام چراغ های مربوط به فرستادن و گرفتن داده بر روی آردوینو شروع به چشمک زدن کرده و سپس جمله ی Done Uploading بر روی اسکچ نمایان می شود.

    پس از کالیبره کردن سروو می توانیم سنسور فاصله را بر روی آن قرار داده به طوریکه سنسور ناحیه ی مقابل ربات را ببیند و آن را با چسب دو طرفه بر روی سروو ثابت کنیم.

    حال نوبت به خواندن مقادیر از روی سنسور فاصله می رسد. برای این منظور کد زیر را در همان صفحه کپی کرده و دوباره برنامه را کامپایل و آپلود نمایید. پس از آپلود کردن برنامه از گزینه ی *Tools → SerialMonitor*می توانید مقادیر فاصله ی اندازه گیری شده توسط سنسور و همچنین عدد برگردانده شده توسط آن را مشاهده کنید. این عدد بین 0 تا 1023 قرار داشته و هرچه این عدد کمتر باشد فاصله ی اندازه گیری شده توسط سنسور بیشتر است.

    int sensorpin = 0; // analog pin used to connect the sharp sensor
    int val = 0; // variable to store the values from sensor(initially zero)
    voidsetup()
    {
    Serial.begin(9600); // starts the serial monitor
    }
    voidloop()
    {
    val = analogRead(sensorpin); // reads the value of the sharp sensor
    Serial.println(val); // prints the value of the sensor to the serial monitor
    }
    اکنون برنامه ی مربوط به چرخش موتورها را می توانید از زیر کپی کنید.
    int motor_pin1 = 4; //define the pins to which motor wires are connected
    int motor_pin2 = 5;
    voidsetup ()
    {
    pinMode(motor_pin1,OUTPUT); // set the motor pins as output
    pinMode(motor_pin2,OUTPUT);
    }
    voidloop()
    {
    digitalWrite(motor_pin1,HIGH);
    digitalWrite(motor_pin2,LOW);
    }
    این کد موتور را در راستای جلو و عقب می چرخاند. اگر موتور عقب گرد می چرخد می توانید کد زیر را کپی نمایید. یعنی جای پین 1 و 2 را از لحاظ LOW و HIGH بودن عوض کنید.

    int motor_pin1 = 4; //define the pins to which motor wires are connected
    int motor_pin2 = 5;
    voidsetup ()
    {
    pinMode(motor_pin1,OUTPUT); // set the motor pins as output
    pinMode(motor_pin2,OUTPUT);
    }
    voidloop()
    {
    digitalWrite(motor_pin1,HIGH);
    digitalWrite(motor_pin2,LOW);
    }

    همچنین برای راه اندازی موتور دوم می توانید کد زیر را کپی کنید.

    int motor_pin3 = 6; //define the pins to which motor wires are connected
    int motor_pin4 = 7;
    voidsetup ()
    {
    pinMode(motor_pin3,OUTPUT); // set the motor pins as output
    pinMode(motor_pin4,OUTPUT);
    }
    voidloop()
    {
    digitalWrite(motor_pin3,HIGH);
    digitalWrite(motor_pin4,LOW);
    }
    برای موتور دوم هم در صورت عقب گرد بودن همانند موتور اول باید کد را تغییر دهید.

    ممکن است این سوال برای شما پیش آید که ربات چگونه می تواند به راست یا چپ بچرخد؟ پاسخ این پرسش به شرح زیر است:

    برای حرکت مستقیم باید هر دو چرخ با سرعت یکسان به جلو حرکت کنند.

    برای حرکت به عقب باید هر دو چرخ با سرعت یکسان به عقب حرکت کنند.

    برای حرکت به سمت چپ باید چرخ سمت چپ به عقب و چرخ سمت راست به جلو حرکت کند.

    برای حرکت به سمت راست باید چرخ سمت راست به عقب و چرخ سمت چپ به جلو حرکت کند.

    مرحله ی آخر در برنامه ریزی ربات مربوط به جلوگیری از برخورد ربات به موانع است. کد زیر را در اسکچ کپی کرده و آن را کامپایل و آپلود کنید.

    #include //includes the servo library
    int motor_pin1 = 4;
    int motor_pin2 = 5;
    int motor_pin3 = 6;
    int motor_pin4 = 7;
    int servopin = 8;
    int sensorpin = 0;
    int dist = 0;
    int leftdist = 0;
    int rightdist = 0;
    int object = 500; //distance at which the robot should look for another route
    Servo myservo;
    voidsetup ()
    {
    pinMode(motor_pin1,OUTPUT);
    pinMode(motor_pin2,OUTPUT);
    pinMode(motor_pin3,OUTPUT);
    pinMode(motor_pin4,OUTPUT);
    myservo.attach(servopin);
    myservo.write(90);
    delay(700);
    }
    voidloop()
    {
    dist = analogRead(sensorpin); //reads the sensor
    if(dist < object) { //if distance is less than 550
    forward(); //then move forward
    }
    if(dist >= object) { //if distance is greater than or equal to 550
    findroute();
    }
    }
    void forward() { // use combination which works for you
    digitalWrite(motor_pin1,HIGH);
    digitalWrite(motor_pin2,LOW);
    digitalWrite(motor_pin3,HIGH);
    digitalWrite(motor_pin4,LOW);
    return;
    }
    void findroute() {
    halt(); // stop
    backward(); //go backwards
    lookleft(); //go to subroutine lookleft
    lookright(); //go to subroutine lookright

    if ( leftdist < rightdist )
    {
    turnleft();
    }
    else
    {
    turnright ();
    }
    }
    void backward() {
    digitalWrite(motor_pin1,LOW);
    digitalWrite(motor_pin2,HIGH);
    digitalWrite(motor_pin3,LOW);
    digitalWrite(motor_pin4,HIGH);
    delay(500);
    halt();
    return;
    }
    void halt () {
    digitalWrite(motor_pin1,LOW);
    digitalWrite(motor_pin2,LOW);
    digitalWrite(motor_pin3,LOW);
    digitalWrite(motor_pin4,LOW);
    delay(500); //wait after stopping
    return;
    }
    void lookleft() {
    myservo.write(150);
    delay(700); //wait for the servo to get there
    leftdist = analogRead(sensorpin);
    myservo.write(90);
    delay(700); //wait for the servo to get there
    return;
    }
    void lookright () {
    myservo.write(30);
    delay(700); //wait for the servo to get there
    rightdist = analogRead(sensorpin);
    myservo.write(90);
    delay(700); //wait for the servo to get there
    return;
    }
    void turnleft () {
    digitalWrite(motor_pin1,HIGH); //use the combination which works for you
    digitalWrite(motor_pin2,LOW); //right motor rotates forward and left motor backward
    digitalWrite(motor_pin3,LOW);
    digitalWrite(motor_pin4,HIGH);
    delay(1000); // wait for the robot to make the turn
    halt();
    return;
    }
    void turnright () {
    digitalWrite(motor_pin1,LOW); //use the combination which works for you
    digitalWrite(motor_pin2,HIGH); //left motor rotates forward and right motor backward
    digitalWrite(motor_pin3,HIGH);
    digitalWrite(motor_pin4,LOW);
    delay(1000); // wait for the robot to make the turn
    halt();
    return;
    }
    با توجه به این کد حرکت ربات به مسافت اندازه گیری شده توسط سنسور بستگی دارد. همانطور که قبلا گفته شد، عدد برگردانده شده توسط سنسور یک عدد بین 0 تا 1023 است. اگر این عدد کمتر از 500 باشد به این مفهوم است که مانعی در سر راه ربات وجود ندارد و ربات به حرکت مستقیم خود ادامه می دهد اما اگر این عدد بزرگتر یا مساوی با 500 باشد ربات باید به دنبال راستای جدیدی برای حرکت خود باشد زیرا به مانع نزدیک شده است. در ابتدا ربات متوقف شده و کمی به عقب بر می گردد، سروو کمی به سمت چپ می چرخد و سنسور فاصله ی جدید تا مانع رویروی خود را ثبت می کند، سپس سروو به سمت راست چرخیده و دوباره سنسور فاصله را از مانع مقابل خود ثبت می کند، این دو مقدار ثبت شده توسط سنسور با هم مقایسه می شوند و در آخر ربات به سمتی حرکت می کند که از مانع فاصله ی بیشتری دارد.

    و دوباره این مراحل از ابتدا اجرا می گردد.


    برای دیدن سایز بزرگ روی عکس کلیک کنید

نام: blog_940503_first30.jpg
مشاهده: 202
حجم: 28.1 کیلو بایت

    برای دیدن سایز بزرگ روی عکس کلیک کنید

نام: blog_940503_first29.jpg
مشاهده: 185
حجم: 22.5 کیلو بایت

    برای دیدن سایز بزرگ روی عکس کلیک کنید

نام: blog_940503_first31.jpg
مشاهده: 160
حجم: 22.0 کیلو بایت
    ویرایش توسط کافه ربات : 08-29-2015 در ساعت 08:58 AM

  5. #5
    Member
    تاریخ عضویت
    Jun 2016
    محل سکونت
    ایران عزیر
    نوشته ها
    74
    آقا شما خودت با سنسور شارپ کار کردی؟؟؟
    چون این روش اصلا فاصله رو نمیده.
    من دنبال اینم که چطور بشه فاصله رو با سنسور GP2Y0A02YK بدست بیارم. کسی بلده؟؟؟
    این روش رو هم امتحان کردم. فقط یه سری عدد بین 400 تا 550 میده که خیلی نامربوطه.


    float get_Sharp_GP2Y0A02YK_Distance(int PinID)
    {
    // Read analog to digital converter value
    float ADCValue = (float)analogRead(PinID);

    // Convert in millimeters and return distance
    return( 2583.711122992086
    - 20.197897855471*ADCValue
    + 0.071746539329 *pow(ADCValue,2)
    - 0.000115854182 *pow(ADCValue,3)
    + 0.000000068590 *pow(ADCValue,4)
    );
    }

    اگه کسی بلده لطفا آموزش بده.
    خانم اسماعیل زاده من که امیدم به شما

  6. #6
    مدیر گروه
    تاریخ عضویت
    Nov 2013
    محل سکونت
    ایران
    نوشته ها
    4,064
    نقل قول نوشته اصلی توسط poggije نمایش پست ها
    آقا شما خودت با سنسور شارپ کار کردی؟؟؟
    چون این روش اصلا فاصله رو نمیده.
    من دنبال اینم که چطور بشه فاصله رو با سنسور GP2Y0A02YK بدست بیارم. کسی بلده؟؟؟
    این روش رو هم امتحان کردم. فقط یه سری عدد بین 400 تا 550 میده که خیلی نامربوطه.


    float get_Sharp_GP2Y0A02YK_Distance(int PinID)
    {
    // Read analog to digital converter value
    float ADCValue = (float)analogRead(PinID);

    // Convert in millimeters and return distance
    return( 2583.711122992086
    - 20.197897855471*ADCValue
    + 0.071746539329 *pow(ADCValue,2)
    - 0.000115854182 *pow(ADCValue,3)
    + 0.000000068590 *pow(ADCValue,4)
    );
    }

    اگه کسی بلده لطفا آموزش بده.
    خانم اسماعیل زاده من که امیدم به شما
    امیدتون به خدا باشه

    یه کتابخونه وجود داره به نام Sharp IR
    تخصصی برای این ماژول های شارپ سری های مختلفش نوشته شده
    Arduino Playground - SharpIR

    اینو تست بگیرید ببینید جواب میده یا نه

کلمات کلیدی این موضوع

مجوز های ارسال و ویرایش

  • شما نمیتوانید موضوع جدیدی ارسال کنید
  • شما امکان ارسال پاسخ را ندارید
  • شما نمیتوانید فایل پیوست کنید.
  • شما نمیتوانید پست های خود را ویرایش کنید
  •  

SEO by vBSEO