کنترل موقعیت سروو با حرکات دست برای آردوینو

کنترل موقعیت سروو با حرکات دست برای آردوینو

در این آموزش، یاد خواهیم گرفت که چگونه یک موتور سروو را با استفاده از حرکات دست کنترل کنیم. با حرکت دادن دست خود به چپ یا راست، می‌توانید موتور سروو را به طور متناسب واکنش نشان دهید. این پروژه از حساس(حس کننده) حرکتی APDS-9960 برای تشخیص حرکات دست و ترجمه آن‌ها به موقعیت‌های سروو استفاده می‌کند. برای توضیح بصری دقیق‌تر، حتماً ویدیو را در (در ویدیو در 00:30) مشاهده کنید.

APDS-9960 gesture sensor module -1

اجزای اصلی که ما استفاده خواهیم کرد شامل یک موتور سرو و حساس(حس کننده) حرکتی APDS-9960 است. موتور سرو بر اساس حرکات شناسایی شده به زوایای خاصی می‌چرخد، در حالی که حساس(حس کننده) APDS-9960 حرکات دست را تفسیر می‌کند. این تنظیمات امکان کنترل شهودی موتور سرو را بدون تماس فیزیکی فراهم می‌کند.

توضیح سخت‌افزار

موتور سرو یک دستگاه کوچک است که می‌تواند به زوایای خاصی بچرخد و آن را برای کاربردهایی که نیاز به موقعیت‌یابی دقیق دارند، ایده‌آل می‌سازد. این موتور معمولاً دارای سه سیم است: برق (قرمز)، زمین (سیاه) و سیگنال (نارنجی). سیم سیگنال دستورات را برای حرکت موتور سرو به زاویه مشخص دریافت می‌کند.

APDS-9960 یک حساس(حس کننده) چندمنظوره است که می‌تواند حرکات، نور محیط و رنگ را تشخیص دهد. این حساس(حس کننده) از طریق I2C با آردوینو ارتباط برقرار می‌کند و به چند پایه برای تأمین برق و انتقال داده نیاز دارد. این حساس(حس کننده) می‌تواند حرکات مانند بالا، پایین، چپ و راست را تشخیص دهد که ما از آن برای کنترل سروو استفاده خواهیم کرد.

جزئیات برگه داده

تولیدکنندهبرادکام
شماره قطعهAPDS-9960
ولتاژ منطقی/ورودی و خروجی۲.۴ - ۳.۶ ولت
ولتاژ تأمین۲.۴ - ۳.۶ ولت
جریان خروجی (به ازای هر کانال)حداکثر 20 میلی‌آمپر
راهنمایی فرکانس PWMغیر قابل اعمال
آستانه‌های منطقی ورودی۰.۳ ولت (پایین)، ۰.۷ ولت (بالا)
افت ولتاژ / RDS(on)/ اشباعغیر قابل اعمال
محدودیت‌های حرارتی-40 تا 85 درجه سانتی‌گراد
بسته۶.۰ × ۳.۰ میلی‌متر
یادداشت‌ها / واریانت‌هاحساس(حس کننده) حرکتی، حساس(حس کننده) نور RGB
  • اطمینان حاصل کنید که سروو با ولتاژ کافی (معمولاً 5 ولت) تغذیه می‌شود.
  • APDS-9960 را با استفاده از ارتباط I2C به آردوینو متصل کنید.
  • به پایه وقفه برای حساس(حس کننده) حرکتی توجه کنید.
  • در صورت لزوم از مقاومت‌های کششی استفاده کنید تا تشخیص سیگنال پایدار باشد.
  • اطمینان حاصل کنید که حساس(حس کننده) را در شرایط نوری مختلف کالیبره کنید تا دقت بهتری داشته باشید.
Arduino wiring of APDS9960 to control Servo motor using hand gesture

برای سیم‌کشی اجزا، با موتور سروو شروع کنید. سیم قرمز را به پایه 5V آردوینو وصل کنید، سیم سیاه را به زمین (GND) و سیم سیگنال نارنجی را به پایه وصل کنید.9این به آردوینو اجازه می‌دهد تا موقعیت سروو را کنترل کند.

سپس حساس(حس کننده) حرکتی APDS-9960 را سیم‌کشی کنید. به هم متصل کنیدV_Nبه 3.3 ولت آردوینو متصل کنید، وGNDبه زمین متصل کنید. INTپایه باید به پایه متصل شود.2بر روی آردوینو، در حالی کهSDAوSCLپایه‌ها به پایه‌ها می‌روندA4وA5، به ترتیب. این پیکربندی به حساس(حس کننده) اجازه می‌دهد تا به طور مؤثر با آردوینو ارتباط برقرار کند.

نمونه‌های شِفر (کود) و راهنمایی

در تابع راه‌اندازی، ما سروو و حساس(حس کننده) حرکتی را راه‌اندازی می‌کنیم. خطmyservo.attach(9);سرو را به پایه ۹ متصل می‌کند، که قبلاً به آن وصل شده بودیم. این امکان را به سرو می‌دهد تا دستورات را از آردوینو دریافت کند.

APDS-9960 gesture sensor -3
void setup() {
 myservo.attach(9);  // attaches the servo on pin 9 to the servo object
 // Set interrupt pin as input
 pinMode(APDS9960_INT, INPUT);
 // Initialize Serial port
 Serial.begin(9600);
}

سپس، نحوه‌ی مدیریت حرکات توسط سیستم در تابع حلقه را تعریف می‌کنیم. روشhandleGesture();بررسی می‌کند که آیا حرکات موجود هستند و اقدامات مربوطه را اجرا می‌کند. به عنوان مثال، اگر حرکت شناسایی شده به سمت چپ باشد، سروو به ۱۸۰ درجه حرکت خواهد کرد.

void handleGesture() {
    if ( apds.isGestureAvailable() ) {
    switch ( apds.readGesture() ) {
      case DIR_LEFT:
        myservo.write(180);  // added by RoboJax
        break;
      case DIR_RIGHT:
        myservo.write(0);   // added by RoboJax
        break;
    }
  }
}

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

نمایش / چه انتظاری باید داشت

زمانی که همه چیز متصل شد و شِفر (کود) بارگذاری شد، باید بتوانید با حرکت دست خود به چپ یا راست، سروو را کنترل کنید. سروو برای یک حرکت به سمت چپ به ۱۸۰ درجه می‌چرخد و برای یک حرکت به سمت راست به ۰ درجه برمی‌گردد. اگر حرکات شناسایی نشوند، موقعیت حساس(حس کننده) و شرایط نوری اطراف را بررسی کنید (در ویدیو در ۰۵:۳۰).

فصل‌ها

  • مقدمه - ۰۰:۰۰
  • بررسی سخت‌افزار - ۰۱:۳۰
  • دستورالعمل‌های سیم‌کشی - ۰۳:۰۰
  • توضیح شِفر (کود) - ۰۴:۳۰
  • نمایش - ۰۶:۰۰

تصاویر

APDS-9960 gesture sensor module -2
APDS-9960 gesture sensor module -2
APDS-9960 gesture sensor module -1
APDS-9960 gesture sensor module -1
Arduino wiring of APDS9960 to control Servo motor using hand gesture
Arduino wiring of APDS9960 to control Servo motor using hand gesture
APDS-9960 gesture sensor -3
APDS-9960 gesture sensor -3
12-Source code for controlling a servo with your hand
زبان: C++
کپی شد!

منابع و مراجع

هنوز هیچ منبعی موجود نیست.

فایل‌ها📁

هیچ فایلی موجود نیست.