آردوینو آردوینو Arduino Uno رباتیک پروژه های آردوینو

مدار فرمان ربات بازو MeArm با آردوینو و جوی استیک و سرو موتور

me-arm-robot-with-Joystick-digispark
نوشته شده توسط علی فلاحی

پیش از این در خصوص ربات بازو MeArm و چگونگی ساخت آن، آموزش دادیم. در این آموزش با استفاده از برد آردوینو و دو عدد جوی استیک، این ربات بازو را کنترل می‌کنیم. همچنین روش تهیه قطعات برش خورده و آماده مونتاژ را هم توضیح داده‌ام. از آنجایی که در ساخت ربات بازو meArm از سرو موتور استفاده شده است، بسته به خلاقیت کاربر، می توان از سخت افزارهای متعددی برای مدیریت آن استفاده کرد. در این آموزش از یک آردوینو uno R3  استفاده شده است. سروو موتورها به کمک ۲ عدد جوی استیک کنترل می‌شوند. یکی از مهم‌ترین قسمت‌ها که چالش زیادی هم دارد، کالیبره کردن سرو موتورها می‌باشد. در ادامه با مرجع تخصصی آردوینو به زبان فارسی، دیجی اسپارک همراه باشید.

 

 


راه اندازی ربات بازو MeArm


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

 


کالیبراسیون Servo Motor بازو


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

 

#include<Servo.h>
Servo servoX;
Servo servoY;
Servo servoV;
Servo servoH;

void setup(){
  servoX.attach(3);
  servoY.attach(5);
  servoV.attach(6);
  servoH.attach(9);
  }

void loop(){
  servoH.write(55);
  servoX.write(70);
  servoY.write(100);
  servoV.write(30);
delay(2000);
  servoH.write(20);
delay(2000);
  servoH.write(20);
  servoX.write(90);
  servoY.write(90);
  servoV.write(90);
delay(2000);
  servoH.write(40);
delay(2000);
}

 

اتصالات سرو موتورها را به ترتیب زیر برقرار کنید. دقت داشته باشید که هر سرو موتور دارای یک پایه تغذیه و یک پایه GND می‌باشد. اتصال این دو پایه هم باید برقرار شود. این موارد در پست ۳ روش راه اندازی سرو موتور با آردوینو کاملا آموزش داده شده است. نکته‌ی مهم برای راه اندازی سروو موتورها، نیاز به یک منبع تغذیه مجزا دارید. حتما از یک منبع تغذیه جداگانه با ولتاژ ۵ الی ۶ ولت استفاده کنید. جریان برد آردوینو برای راه اندازی سروو موتورها کافی نمی‌باشد.

  • سروو موتور وسط (middle) را به پایه ۱۱ آردوینو
  • سروو موتور چپ (left) را به پایه ۱۰آردوینو
  • سروو موتور راست (right) را به پایه ۹آردوینو
  • سروو موتور گیره(claw) را به پایه ۶ آردوینو

 

 

راهنمای اتصالات برد ربات بازوی meArm

 

 


اتصال جوی استیک


ماژول جوی استیک قابلیت چرخش در چهار جهت را دارد. همچنین دو پایه آنالوگ، یک پایه دیجیتال و پایه‌های تغذیه را بر روی خود جای داده است. در این پروژه از پایه دیجیتال استفاده نمی‌کنیم. پایه دیجیتال جوی استیک با تحریک شاسی اصلی به صورت کلیک، یک فرمان دیجیتال ارسال خواهد کرد. یکی از پایه‌های جوی استیک را به VRX و دیگری را به VRY وصل می‌کنیم. پایه‌ها را به ترتیب زیر متصل کنید.

  • جوی استیک ۱ :
  • VRX = analog 0
  • VRY = analog 1
  • منفی منبع تغذیه = GND
  • سیم مثبت منبع تغذیه = ۵v+

 

  • جوی استیک ۲ :
  • VRX = analog 3
  • VRY = analog 4
  • منفی منبع تغذیه = GND
  • سیم مثبت منبع تغذیه = ۵v+

 


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


ربات بازوی meArm از یک کتابخانه برای حرکت سرو موتورها به کمک جوی استیک اسنفاده می‌کند. ابتدا کتابخانه را بر روی کامپایلر Arduino IDE نصب کنید. کتابخانه سرو موتورها به صورت پیشفرض بر روی Arduino IDE قرار دارد. اگر کتابخانه‌ها را به Arduino IDE اضافه نکنید، در هنگام آپلود شدن کدها بر روی برد با خطا کتابخانه روبه رو خواهید شد. چنانچه روش نصب کتابخانه در آردوینو را نمی‌دانید، به پست نصب کتابخانه در آردوینو IDE مراجعه کنید.

#include "meArm.h"
#include <Servo.h>

 


کد آردوینو ربات بازو


کدهای زیر را کپی کرده و از طریق نرم افزار Arduino IDE روی برد آپلود کنید. دقت داشته باشید که کلیه موارد قبلی را باید به درستی اجرا کرده باشید. در غیر این صورت به هنگام آپلود با مشکل مواجه خواهید شد.

 

#include "meArm.h"
#include <Servo.h>
int basePin = 11; // Midle
int shoulderPin = 10; // Left
int elbowPin = 9; // Right
int gripperPin = 6; // Claw

int xdirPin = 0; // vrx بر روی جوی استیک ۱
int ydirPin = 1; // vry بر روی جوی استیک ۱
int zdirPin = 3; // vrx بر روی جوی استیک ۲
int gdirPin = 2; // vry بر روی جوی استیک ۲

meArm arm;

void setup() {
  arm.begin(basePin, shoulderPin, elbowPin, gripperPin);
}

void loop() {
  float dx = map(analogRead(xdirPin), 0, 1023, -5.0, 5.0);
  float dy = map(analogRead(ydirPin), 0, 1023, 5.0, -5.0);
  float dz = map(analogRead(zdirPin), 0, 1023, 5.0, -5.0);
  float dg = map(analogRead(gdirPin), 0, 1023, 5.0, -5.0);
  if (abs(dx) < 1.5) dx = 0;
  if (abs(dy) < 1.5) dy = 0;
  if (abs(dz) < 1.5) dz = 0;
  
  if (!(dx == 0 && dy == 0 && dz == 0))
    arm.goDirectlyTo(arm.getX() + dx, arm.getY() + dy, arm.getZ() + dz);
  
  if (dg < -3.0)
    arm.closeGripper();
  else if (dg > 3.0)
    arm.openGripper();  
  delay(50);
}

 

 

چنانچه در مراحل راه اندازی و انجام این پروژه با مشکل مواجه شدید، بدون هیچ نگرانی در انتهای همین پست، به صورت ثبت نظر سوالتان را مطرح کنید. من در سریع‌ترین زمان ممکن پاسخ رفع مشکل شما را خواهم داد.

 


پروژه و دریافت بن ارسال رایگان


برای دریافت بن خرید از دانشجو کیت، کاربران بایستی با استفاده از وسایل این آموزش، پروژه را اجرا کرده و یا حتی مدار جدیدی تعریف کنید. سپس از اجرای کار فیلم گرفته و در شبکه‌های اجتماعی از جمله آپارات و اینستگرام، با هشتگ‌های دیجی_اسپارک   دانشجوکیت    digispark    daneshjookit منتشر کنند. سپس از طریق بخش نظرات در ادامه همین آموزش، جهت دریافت بن خرید ارسال رایگان به ارزش ۱۲۰۰۰ تومان از دانشجو کیت، لینک را زیر همین پست ارسال کنید. در پایان نظرات و پیشنهادات خود را با ما درمیان بگذارید و با اشتراک گذاری این آموزش در شبکه های اجتماعی , از وبسایت دیجی اسپارک حمایت کنید.

 

 

درباره نویسنده

علی فلاحی

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

تبادل نظر و رفع عیب با ثبت دیدگاه

۴۷ دیدگاه

  • با سلام و سپاس فراوان. اما همانطور که خودتون فرمودین کالیبره کردن سروو ها مهمترین بخش کاره ولی زود ازش رد شدین و کامل توضیح ندادین. خب داخل loop داریم هی زاویه موتور ها رو تغییر میدیم. خب اینجوری که نمیشه وقتی آردوینو رو خاموش کنیم و موتور ها رو بخوایم مونتاژ کنیم هر کدام از موتور ها در زاویه نا معلومی ایستاده. شفت رو با چه زاویه ای بهش متصل کنیم؟ این قسمت گنگ هست. یعنی این کد که به تنهایی کار کالیبره کردن رو انجام نمیده فقط زاویه موتور ها رو تغییر میده. بخش مهم کار اینه که شافت رو بتونیم درست سر جاش قرار بدیم که من متوجه نشدم باید چیکار کنم. خواهش می کنم راهنمایی بفرمایید.
    با سپاس

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

      • شاید سوالم رو بد مطرح کردم. ببینید فرض کنید کد کالیبره کردن رو بر روی آردوینو آپلود کردیم و اجرا کردیم. در این حالت فقط برای سادگی کار، چنگک رو در نظر میگیریم که به زاویه ۹۰ درجه میره. حالا میخوایم سروو را به شفت چنگک وصل کنیم. در این حالت باید چنگک بسته باشد یا باز یا در وسط باشد؟ به همین ترتیب برای سایر موتور ها. چون اگر سرووی کالیبره شده رو به بازویی که در زاویه ای نادرست (که نمیدانم درستش چجوریه) قرار داره وصل کنیم، هنگام حرکت ممکنه که بازو به انتها برسه و فضایی برای چرخش بیشتر وجود نداشته باشه. با تشکر

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

  • در ضمن یه سوال دیگه. left و Right موتور ها نسبت به وقتی هست که از روبرو به ربات بازو و چنگک نگاه می کنیم؟ یا از پشت؟

    • با سلام
      این مورد به نوع پروژه و نیاز شما در پروژه مشخص می‌شود و تفاوتی ندارد.

      • سروو موتور ۳۶۰ در این ربات نمیتونه کاربرد داشته باشه … چون با گردش ۳۶۰ درجه ای برای کف (گردش افقی) و همینطور سگمنت های دیگر بازو، سیمکشی ها دچار کشیدگی میشه و نمیذاره گردش ۳۶۰ اتفاق بیافته …

        از همه مهمتر اینکه شما برای سرووی ۳۶۰ درجه نمیتونید «تعیین زاویه» کنید. علتش هم اینه که پتانسیومتری که در سرووهای ۱۸۰ و ۲۷۰ وجود داره، در سرووهای ۲۶۰ حذف شده که باعث گردش ۳۶۰ بشه … در این سرووها فقط به جهت گردش (چپ گرد و راست گرد) و سرعت چرخش دسترسی و کنترل داریم.

        بنابراین برای خانواده های Robot Arm باید از سرووهای کمتر از ۳۶۰ استفاده بشه.

        • با سلام
          کاربر گرامی از اینکه اطلاعات خود را با دیگر کاربران به اشتراک می‌گذارید، سپاسگزاریم.

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

  • سلام ببخشید من دانش اموز هستم و میخوام این پروژه رو انجام بدم. تو نرمافزار اردینو که میخوام این برنامه رو کامپایل کنم ارور میده به meArm کتابخانه سرو رو هم نصب کردم.مشکل از چی هست؟؟

  • با سلام
    سرو موتور x y v H کدام سرو موتور روبات هستند ؟ در داخل برنامه سرو موتور ها به پایه های ۳ ۵ ۶ ۹ متصبل است اما در متن به پایه های ۱۱ ۱۰ ۶ ۹ متصل است

    • با سلام
      در این خصوص تفاوتی ندارد. سرو موتورها را به هر پایه ای که متصل می‌کنید همان پایه ها را در کد برنامه وارد کنید.

  • سلام عرض سلام و خسته نباشید اگر میشه ویدیو
    از آموزش و کار ربات تون هم بگذارید

    ممنون از آموزش خوبتون

    • با سلام
      کاربر گرامی ضمن تشکر از شما در اینستاگرام لیدی پای یک ویدیو از عملکرد آن گذاشته شده است.

  • منظور شما از سیم مثبت منبع تغذیه و منفی منبع تغذیه در اتصال جوی استیک ها چیست؟

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

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

  • سلام. میشه مشخص کنید هرکدوم از سروو های x,y,h,v برای کدوم قسمت ربات هست؟ راست یا چپ یا وسط یا گیره

  • سلام تو نرم افزار اردینو که میخوام این برنامه رو کامپایل کنم ارور میده به meArm کتابخانه مشکل از چی هست؟؟

  • با سلام و عرض ادب و احترام
    در خصوص کتابخانه می آرم می خواستم مطلبی بگم
    من در منیج لایبرری عبارت meArm را سرچ کردم اما چیزی نمایش نداد
    خواستم بدونم لینکی برای دانلود کتابخانه هست یا خیر
    اگر نیست چگونه در اردوینو دانلود کنم

  • با سلام و خسته نباشی من در لینک دانلود کد میآرم شدم در جیت هاب و کد را دنلود کردم ام به من خطای no such file or directory میده چکار باید انجام داد؟

  • با عرض سلام وتشکر از مطالب بالا
    جناب چرا مراحل ساخت را این قدر تیکه تیکه کردید الان نقشه راه انداز مدار کجاست چرا جوی استیک نداره؟
    ایا هر بار بعد استفاده باید کالیبره بشه؟برای دفعه بعد
    خورتان ساختید این پروژه را جواب میده لطفا از کار کردش فیلم بزارید

    • سلام و تشکر از همراهی شما
      برای راه اندازی بازو می آرم هم میتوانید از جوی استیک استفاده کنید و هم میتوانید از میکروسوئیچ استفاده کنید. مهم ماهیت فرمان دادن است. در خصوص کالیبره هم خیر، یکبار بایستی کالیبره کنید. بله ساخته شده است ولی فیلم از کارکرد آن تهیه نکرده‌ایم.