ربات چهار پا مبتنی بر آردوینو. ربات آردوینو خودتان انجام دهید چه نوع ربات هایی را می توان از آردوینو مونتاژ کرد

نتیجه یک ربات نسبتاً خنده دار است که می تواند موانع را در مقابل خود ببیند، وضعیت را تجزیه و تحلیل کند و سپس تنها با انتخاب بهترین مسیر، جلوتر می رود. معلوم شد این ربات بسیار قابل مانور است. قابلیت چرخش 180 درجه را دارد و زاویه چرخش آن 45 و 90 درجه است. نویسنده از Iteaduino به عنوان کنترل کننده اصلی استفاده کرده است که مشابه آردوینو است.

مواد و ابزار ساخت ربات:
- میکروکنترلر (Arduino یا Iteaduino مشابه)؛
- سنسور اولتراسونیک؛
- نگهدارنده باتری؛
- اسباب بازی های چینی برای ایجاد فاصله بین دو محور (می توانید به صورت آماده خریداری کنید).
- نیپک؛
- چسب؛
- سیم ها؛
- موتورها؛
- تخته فیبر؛
- اره منبت کاری اره مویی؛
- ترانزیستور (D882 P).

فرآیند ساخت ربات:

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

هنگام انتخاب اتومبیل، بهتر است اسباب بازی هایی با چرخ های معمولی بگیرید، زیرا به گفته نویسنده، با میخ هایی مانند او، ربات به شدت می پرد.

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


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


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








موتورها با استفاده از ترانزیستورهای نوع D882 P به کنترلر متصل می شوند که از کنترل پنل قدیمی دستگاه خارج شده اند. البته بهتر است از ترانزیستورهای قدرت از نوع TIP120B استفاده کنید، اما نویسنده آن را به سادگی برای ویژگی های مناسب انتخاب کرده است. کل قسمت الکترونیکی طبق طرح مشخص شده متصل می شود.

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

در مورد سنسورها، اولتراسونیک باید به خروجی دیجیتال 7 میکروکنترلر متصل شود. سروو موتور به ورودی دیجیتال 3، پایه ترانزیستور موتور سمت چپ به پایه 11 و پایه موتور سمت راست به پایه 10 متصل می شود.

اگر از Krona به عنوان منبع تغذیه استفاده شود، منفی به GND و مثبت به VIN متصل می شود. همچنین باید امیتر ترانزیستور و کنتاکت منفی را از منبع تغذیه شاسی ربات به GND وصل کنید.

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

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

مرحله 1: چگونه کار می کند؟

این ربات دارای 4 پایه است که بر روی هر یک از آنها 3 سروو قرار دارد که به آن اجازه می دهد اندام ها را در 3 درجه آزادی حرکت دهد. او با "راه رفتن خزنده" حرکت می کند. ممکن است کند باشد، اما یکی از صاف ترین هاست.

ابتدا باید به ربات آموزش دهید که به جلو، عقب، چپ و راست حرکت کند، سپس یک حسگر اولتراسونیک را اضافه کنید، که به شناسایی موانع / موانع کمک می کند، و سپس یک ماژول بلوتوث، که به لطف آن، کنترل ربات به سطح جدیدی می رسد. .

مرحله 2: جزئیات مورد نیاز

اسکلتساخته شده از پلکسی 2 میلی متری

بخش الکترونیکی محصول خانگی شامل موارد زیر خواهد بود:

  • 12 سروو؛
  • آردوینو نانو (قابل تعویض با هر برد آردوینو دیگری)؛

  • سپر برای کنترل سروو؛
  • واحد منبع تغذیه (PSU 5V 4A در پروژه استفاده شد).

  • سنسور اولتراسونیک؛
  • ماژول بلوتوث hc 05;

برای ساخت یک سپر شما نیاز دارید:

  • برد مدار (ترجیحا با خطوط مشترک برق و زمین (اتوبوس))؛
  • اتصالات پین تخته به برد - 30 عدد؛
  • اسلات در هر تخته - 36 عدد؛

  • سیم ها.

ابزار:

  • برش لیزری (یا دستان ماهر)؛
  • چسب فوق العاده؛
  • چسب داغ.

مرحله 3: اسکلت

بیایید از یک برنامه گرافیکی برای ترسیم اجزای اسکلت استفاده کنیم.

پس از آن، به هر شکل موجود، 30 قسمت از ربات آینده را برش می دهیم.

مرحله 4: مونتاژ

پس از برش، پوشش محافظ کاغذی را از پلکسی جدا کنید.

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

سپس باید سرووها را اصلاح کنید (روی پیچ مقابل شفت سرووها بچسبانید).

با این اصلاح، ربات را پایدارتر خواهیم کرد. اصلاح فقط باید برای 8 سروو انجام شود، 4 مورد باقیمانده مستقیماً به بدنه متصل می شوند.

پاها را به عنصر اتصال (قسمت منحنی) وصل می کنیم و این به نوبه خود به سروو روی بدن می رسد.

مرحله 5: ساخت سپر

اگر عکس های ارائه شده در مرحله را دنبال کنید، ساخت تخته بسیار ساده است.

مرحله 6: الکترونیک

بیایید پین های سرووها را روی برد آردوینو ثابت کنیم. پین ها باید به ترتیب صحیح وصل شوند، در غیر این صورت هیچ چیز کار نمی کند!

مرحله 7: برنامه نویسی

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

مهم: باید کتابخانه اضافی را به نرم افزار arduino IDE اضافه کنید. لینک کتابخانه در زیر ارائه شده است:

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

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

مرحله 8: سینماتیک معکوس

سینماتیک معکوس (معکوس) - این همان چیزی است که در واقع ربات را کنترل می کند (اگر به جنبه ریاضی این پروژه علاقه مند نیستید و برای تکمیل پروژه عجله دارید، می توانید از این مرحله رد شوید، اما دانستن اینکه ربات چه حرکت هایی را انجام می دهد. همیشه مفید باشید).

به عبارت ساده، سینماتیک معکوس یا به اختصار IR، «بخشی» از معادلات مثلثاتی است که موقعیت نوک تیز پا، زاویه هر سروو و غیره را تعیین می کند که در نهایت یک جفت تنظیمات اولیه را تعیین می کند. به عنوان مثال، طول هر مرحله از ربات یا ارتفاعی که بدن در هنگام حرکت / استراحت در آن قرار می گیرد. با استفاده از این پارامترهای از پیش تعریف شده، سیستم مقداری را که هر سروو باید حرکت کند تا با استفاده از دستورات داده شده ربات را کنترل کند، بازیابی می کند.

آنها با ایجاد ربات های ساده شروع به یادگیری آردوینو می کنند. امروز در مورد ساده ترین ربات Arduino Uno به شما خواهم گفت که مانند یک سگ دست شما یا هر جسم دیگری که نور مادون قرمز را منعکس می کند را دنبال می کند. همچنین این ربات بچه ها را سرگرم می کند. خواهرزاده 3 ساله من از بازی با ربات خوشحال بود :)

من با فهرست کردن جزئیاتی که در هنگام ساخت مورد نیاز است شروع می کنم - Arduino UNO.

فاصله یاب مادون قرمز؛

- موتورهای 3 ولتی با گیربکس و چرخ؛

- اتصالات برای باتری های 3A؛

- باتری (اگر باتری کافی وجود نداشته باشد)؛

رله برای کنترل موتورها

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


سپس با یک میله چوب، موتورها را گیره می کنم و این میله را پیچ می کنم

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

اکنون همه چیز را طبق طرح وصل می کنیم

در نهایت طرح زیر را در آردوینو بارگذاری کنید:

Const int R = 13; // پین هایی که فاصله یاب های IR به آنها متصل هستند، بین L = 12; int motorL = 9; // پین هایی که رله به آنها متصل است int motorR = 11; int buttonState = 0; تنظیم void () (pinMode (R, INPUT)؛ pinMode (L, INPUT)؛ pinMode (motorR, OUTPUT)؛ pinMode (motorL, OUTPUT)؛) حلقه خالی () ((buttonState = digitalRead (L)؛ if (buttonState == HIGH) (digitalWrite (motorR, HIGH)؛) other (digitalWrite (motorR, LOW);)) ((buttonState = DigitalRead (R)؛ if (buttonState == HIGH) (digitalWrite (motorL, HIGH);) دیگری (دیجیتال رایت (motorL، LOW)؛))))

اصل کار بسیار ساده است. مسافت یاب چپ مسئول چرخ راست و سمت راست برای سمت چپ است

برای واضح تر شدن موضوع، می توانید ویدیویی را تماشا کنید که روند ایجاد و عملکرد ربات را نشان می دهد.

این ربات بسیار ساده است و هر کسی می تواند آن را بسازد. این به شما کمک می کند تا درک کنید که ماژول هایی مانند رله ها و فاصله یاب های IR چگونه کار می کنند و بهترین استفاده از آنها چگونه است.

امیدوارم از این محصول خانگی لذت برده باشید، به یاد داشته باشید که محصولات خانگی عالی هستند!

روز خوب! پیش شما عزیزان یک ربات هنری است که می تواند اجسام کروی یا تخم مرغی شکل مختلف را در اندازه های 4 تا 9 سانتی متر نقاشی کند.

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

توجه: از پروژه هایی که از چاپگر سه بعدی استفاده می کنند دست نکشید. در صورت تمایل، همیشه می توانید مکان یا راهی را پیدا کنید که بتوانید چاپ جزئیات لازم برای پروژه را سفارش دهید.

مرحله 1: کمی در مورد ربات

ربات هنری - دو محوره خانگیکه می تواند روی اکثر سطوح کروی رنگ کند. ربات خود را با نوع خاصی از جسم (توپ های پینگ پنگ، تزئینات کریسمس، لامپ ها و تخم مرغ ها (اردک، غاز، مرغ ...) تنظیم می کند.

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

مرحله 2: جزئیات مورد نیاز

به منظور انجام خودتان آن را انجام دهیدنیاز داریم:

  • 2x بلبرینگ 623;
  • سنجاق سر با قطر 3 میلی متر و طول 80-90 میلی متر؛
  • 1x فنر (10 میلی متر طول و 4.5 میلی متر قطر)؛
  • 2 عدد موتور پله ای NEMA 17 (4.4 کیلوگرم بر سانتی متر گشتاور)؛
  • کابل های موتور (طول 14 + 70 سانتی متر)؛
  • کابل یو اس بی؛
  • 1x سروو SG90;
  • آردوینو لئوناردو;
  • سپر JJRobots;

  • درایورهای موتور پله ای 2xA4988؛
  • منبع تغذیه 12 ولت / 2 آمپر؛
  • 11x M3 پیچ 6 میلی متری؛
  • 4 عدد پیچ ​​M3 16 میلی متری؛
  • 4 عدد مهره M3؛
  • 2 عدد مکنده 20 میلی متری؛
  • 1 عدد مهره بال M3؛
  • 1x نشانگر؛

مرحله 3: طرح کلی

می توانید از این طرح به عنوان "برگ تقلب" استفاده کنید.

مرحله 4: بیایید شروع کنیم!

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

مرحله 5: دستکاری

مهره را در سوراخ آماده شده برای آن قرار دهید و پیچ 16 میلی متری را محکم کنید. بیایید همین کار را برای نگهدارنده آیتم (در سمت راست در تصویر بالا) انجام دهیم. هنگام ایجاد لولا برای بازو، از پیچ های 2×16 میلی متری استفاده شد. این لولا باید پس از سفت کردن پیچ ها آزادانه بچرخد.

مرحله 6: فنجان های مکنده

یکی از ساکشن کاپ ها را داخل سوراخ نگهدارنده اقلام قرار دهید.

مرحله 7: استپر موتورها را وصل کنید

هر دو استپر موتور را با 8 پیچ به قاب اصلی ثابت کنید.

مرحله 8: محور چرخش

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

  • مکنده;
  • پیچ؛
  • قسمت بالا؛
  • بهار؛
  • بلبرینگ 623 (باید در فنجان سمت چپ تعبیه شود).
  • فنجان سمت چپ؛
  • فضای خالی برای فریم اصلی؛
  • فنجان سمت راست؛
  • بلبرینگ 623;
  • حلقه اسپیسر;
  • مهره بال (M3).

مرحله 9: همه چیز را در جای خود قرار دهید

دستکاری مونتاژ شده را روی محور استپر موتور قرار دهید.

تکیه گاه سمت چپ را روی محور استپر موتور نصب کنید.

نشانگر و تخم مرغ به عنوان نمونه تنظیم شده اند (نیازی به قرار دادن آنها در حال حاضر نیست).

توجه: سروو نیاز به تنظیمات دارد. در طول فرآیند کالیبراسیون باید زاویه آن را دوباره تنظیم کنید.

مرحله 10: الکترونیک

قطعات الکترونیکی را با پیچ در پشت قاب اصلی ثابت کنید (2 کافی است).

بیایید کابل ها را وصل کنیم.

اگر هنگام اتصال استپر موتورها قطبیت ها را معکوس کنید، آنها به سادگی در جهت مخالف می چرخند، اما با یک سروو، وضعیت آنقدرها بی ضرر نخواهد بود! بنابراین، قبل از اتصال، قطبیت را دوبار بررسی کنید!

مرحله یازدهم: برنامه نویسی آردوینو لئوناردو

بیایید Arduino Leonardo را با استفاده از Arduino IDE (نسخه 1.8.1) برنامه ریزی کنیم.

  • Arduino IDE (نسخه 1.8.1) را دانلود و برنامه را نصب کنید.
  • بیایید نرم افزار را شروع کنیم. برد Arduino Leonardo و COM-PORT مربوطه را در منوی "tools-> board" انتخاب کنید.
  • بیایید کد Sphere-O-Bot را باز کرده و دانلود کنیم. همه فایل ها را در یک پوشه باز کنید و نام آن را "Ejjduino_ARDUINO" بگذارید.

مرحله 12: ربات هنری برای خلق آثار هنری آماده است

مرحله 13: ربات را کنترل کنید

نرم افزار Inkscape.نرم افزار Inkscape را دانلود و نصب کنید (نسخه پایدار 0.91 توصیه می شود).

پسوند EggBot Control را دانلود و نصب کنید (نسخه 2.4.0 به طور کامل تست شده است).

برنامه افزودنی کنترل EggBot برای Inkscape ابزاری است که باید هنگام آزمایش و کالیبره کردن EggBot و انتقال نقشه ها به تخم مرغ استفاده شود. ابتدا باید Inkscape را راه اندازی کنید. پس از راه اندازی Inkscape، منوی "Extensions" ظاهر می شود و در آن باید زیر منوی "Eggbot" را انتخاب کنید. اگر زیر منوی Eggbot را نمی بینید، پس افزونه ها را اشتباه نصب کرده اید. پشتیبان گیری کنید و دستورالعمل ها را برای نصب برنامه های افزودنی به دقت دنبال کنید.

این همه، از توجه شما متشکرم!)

آردوینو با کنترل از راه دور، سنسورهای ساده و منطق ساخت خودروهای مختلف بسیار آسان است. بنابراین، این خط فوق العاده محبوب است. بسیاری از سنسورها و کارت های توسعه سازگار با آن به فروش می رسد. اینترنت مملو از کتابخانه های نرم افزاری آماده و پروژه های منبع باز برای همه موارد است. تقریباً تمام سؤالاتی که در روند تسلط بر آردوینو خواهید داشت قبلاً توسط شخصی پرسیده شده است و همیشه پاسخ آن را خواهید یافت.

بیایید با چیزی شروع کنیم؟ سوال اصلی انتخاب کنترلر است. بسیاری از نسخه‌های آردوینو و همچنین کلون‌های شخص ثالث بر روی این نسخه‌ها ساخته شده‌اند. در اینجا، شاید، دو کلاس جالب برای ما وجود دارد:

  • Arduino Uno بهترین انتخاب برای مبتدیان، ساده ترین، مقرون به صرفه ترین و معمولی ترین برد است. این پردازنده مبتنی بر تراشه ATmega328 با سرعت کلاک 16 مگاهرتز، 32 کیلوبایت حافظه فلش، 2 کیلوبایت رم و 1 کیلوبایت EEPROM است. Uno دارای 14 ورودی / خروجی دیجیتال است که می تواند برای کنترل سنسورها و سرووها و سایر دستگاه ها استفاده شود.
  • آردوینو مگا / مگا 2560 بردی است که زمانی مناسب است که از قبل بدانید پروژه دشوار خواهد بود. تفاوت اصلی در تعداد بیشتر ورودی / خروجی است (48 در مگا، 54 در مگا 2560). همچنین حافظه بسیار بیشتری وجود دارد: 8 کیلوبایت رم، 4 کیلوبایت EEPROM، و حافظه فلش 128 و 256 کیلوبایت (به ترتیب در مگا و مگا 2560). بردها همچنین از نظر تراشه، سرعت USB و برخی ویژگی های دیگر متفاوت هستند.

البته آردوینو پرو، آردوینو لیلی پد و بسیاری دیگر وجود دارد. اما فعلا روی دو مدل اول تمرکز می کنیم. در مورد ما، همه چیز بسیار ساده است: مگا برای یک روبات با تعداد زیادی پا مورد نیاز است.

کد اول

ابتدا، اجازه دهید Arduino IDE (arduino.cc)، یک محیط توسعه رایگان بین پلتفرمی را نصب کنیم. حال، اگر آردوینو خود را وصل کنیم، می‌توانیم سعی کنیم اولین کد را با استفاده از ساده‌ترین مثال بنویسیم: برنامه چشمک زن. اکثر کنترلرهای آردوینو آن را دارند و به پین ​​13 متصل می شوند. اتفاقاً در دنیای آردوینو معمولاً برنامه ها را Sktch می نامند. اینم متن طرح همراه با نظرات:

// به این پین نام LED بدهید: const int LED = 13; تنظیم void () (// راه اندازی اولیه پین ​​دیجیتال // برای خروجی: pinMode (LED، OUTPUT)؛) حلقه خالی () (// منطق را یک سطح // به پین ​​13 تغذیه کنید (LED را روشن کنید): digitalWrite (LED) , HIGH) ؛ // توقف اجرای طرح // برای یک ثانیه: تاخیر (1000)؛ // ارسال یک سطح صفر منطقی // به پین ​​13 (ال ای دی را خاموش کنید): دیجیتال نوشتن (LED، LOW)؛ / / دوباره اجرای طرح را برای یک ثانیه متوقف کنید: تاخیر (1000)؛)

به توابع راه اندازی و حلقه توجه کنید. آنها باید در هر طرح آردوینو وجود داشته باشند. راه‌اندازی یک بار هنگام روشن شدن یا پس از راه‌اندازی مجدد کنترلر فراخوانی می‌شود. اگر می خواهید کد فقط یک بار اجرا شود باید در اینجا قرار دهید. اغلب اینها انواع رویه ها برای مقداردهی اولیه چیزی هستند. طرح ما از این قاعده مستثنی نیست: پین های دیجیتال آردوینو می توانند به عنوان ورودی و خروجی عمل کنند. در تابع setup می گوییم که پایه 13 به عنوان یک خروجی دیجیتال روی کنترلر عمل می کند.

پس از اتمام کار تابع setup، یک حلقه بسته به طور خودکار شروع می شود که در داخل آن تابع حلقه فراخوانی می شود. از ما خواسته می شود آنچه را که می خواهیم در آنجا انجام دهیم بنویسیم. و می خواهیم سطح یک واحد منطقی (5 ولت) را به پین ​​13 وارد کنیم، یعنی LED را روشن کنیم، سپس یک ثانیه صبر کنیم (1000 در میلی ثانیه)، سپس سطح صفر منطقی (0 ولت) را اعمال کنیم و دوباره منتظر بمانیم. یک ثانیه. فراخوان بعدی حلقه همه چیز را تکرار می کند.

اکنون طرح خود را در کنترلر "پر" می کنیم. نه، ما به برنامه نویس نیاز نداریم. کنترلرهای آردوینو، علاوه بر طرح های ما، حاوی یک برنامه ویژه - بوت لودر هستند که به ویژه دانلود کد از رایانه را کنترل می کند. بنابراین برای آپلود طرح، فقط به یک کابل USB و آیتم منوی File → Upload (Ctrl + U) در Arduino IDE نیاز داریم.

سوال کلیدی

واقعاً به چند پا نیاز داریم؟ بیایید پیکربندی های مختلفی را برای ربات های پیاده روی تعریف کنیم. با تعداد پاها:

  • دوپا - دوپا (نمونه اولیه انسانی)؛
  • چهارپا - چهار پا (نمونه اولیه - اکثر پستانداران)؛
  • شش پا - شش پا (نمونه اولیه - اکثر حشرات)؛
  • هشت پا - هشت پا (نمونه اولیه - عنکبوت ها، عقرب ها، خرچنگ ها و سایر بندپایان).

علاوه بر تعداد پاها، پیکربندی هر کدام نیز مهم است. مشخصه اصلی یک پا تعداد درجات آزادی یا ابعاد آزادی (DOF) است. درجه آزادی توانایی چرخش یا خم شدن حول یک محور (کمتر، حرکت تدریجی در امتداد آن) است. بدیهی است که اگر درجه آزادی یک باشد، در چنین پایی راه دوری نخواهید رفت. پاهای با دو درجه آزادی (2DOF) از قبل به ربات های چند پا اجازه حرکت می دهند، اگرچه 2DOF به نوک پا اجازه می دهد تا آزادانه تنها در یک هواپیما حرکت کند. و پایه 3DOF "پا" را در فضای سه بعدی حرکت می دهد (مگر اینکه، البته، هر سه محور موازی باشند). همچنین پایه های 4DOF وجود دارد که به سادگی انعطاف پذیری و دامنه حرکت ساق را افزایش می دهد. حشرات اغلب پنجه های 4DOF دارند.

معنی این برای ما چیست؟ در روبات‌های آماتور ارزان، هر درجه آزادی توسط یک موتور، به‌طور دقیق‌تر، یک سروو درایو یا سرویس اجرا می‌شود. پیکربندی پا به طور منحصر به فردی تعیین می کند که چه تعداد از این سرووها مورد نیاز است. برای مثال، یک هگزاپاد 3DOF به 18 سروو نیاز دارد و یک عنکبوت 4DOF به 32 سروو نیاز دارد. آنها را می توان در فروشگاه های آنلاین در صورت درخواست میکرو سروو یافت.

برای برنامه ریزی سرووها کافی است بدانید که از قبل یک کنترلر دارند که کار اصلی را انجام می دهد. و تنها چیزی که نیاز است تامین برق و یک سیگنال دیجیتال است که به کنترل کننده می گوید می خواهیم محور محرک را به کدام موقعیت بچرخانیم. به راحتی می توان اطلاعاتی در مورد طراحی آنها پیدا کرد. پروتکل آنها ساده ترین پروتکل های ارتباط دیجیتال است: مدولاسیون عرض پالس - PWM (به انگلیسی PWM). همه سرووهای ساده یک کانکتور سه پین ​​دارند: زمین، +5 ولت (ولتاژ ممکن است بسته به اندازه و قدرت متفاوت باشد)، و ورودی سیگنال. کنترلرهای آردوینو می توانند چنین سیگنالی را به دو روش مختلف تولید کنند. اولین مورد، PWM سخت افزاری است که خود تراشه قادر است از چندین پین ورودی/خروجی دیجیتال خود خارج کند. دوم نرم افزار است. نرم افزار به شما امکان می دهد همزمان سیگنال های مختلف PWM بیشتری نسبت به سخت افزار دریافت کنید. یک بسته بندی مناسب برای آن تحت آردوینو - کتابخانه Servo - ارائه شده است. این به شما امکان می دهد از 12 سروو به طور همزمان در اکثر کنترلرهای کوچک (Uno، Due، Nano) و 48 سروو در آردوینو مگا و موارد مشابه استفاده کنید. پین سیگنال سروو به پین ​​دیجیتال آردوینو متصل می شود. زمین و قدرت - بدیهی است که به زمین و قدرت، آنها می توانند برای همه سرویس ها مشترک باشند. در حلقه‌های سروو سه سیم، زمین مشکی یا قهوه‌ای است، در وسط معمولاً قرمز +5 ولت و در نهایت سفید یا زرد علامت سیگنال است. از نقطه نظر نرم افزار، کنترل بسیار ساده است:

سروو میسروو; // سروو در پین آردوینو 9 myservo.attach (9); // چرخش به موقعیت 90 درجه myservo.write (90);

اکثر سرووها می توانند شفت را 180 درجه بچرخانند و برای آنها 90 درجه موقعیت وسط است. راه حل های مختلفی برای سهولت در اتصال سرووها به برد آردوینو وجود دارد. نمادین ترین آنها Sensors Shield است. با نصب آن بر روی Uno و تامین برق سرووها به پایانه ها، می توانید کانکتورهای آنها را مستقیماً به آن وصل کنید.

باتری

موضوع مهم دیگر تغذیه است. اگر یک برد پیشرفته دارید که به شما امکان می دهد کل سیستم را با یک خط برق تامین کنید (و سروو موتورها در عملکرد کنترلر تداخلی ایجاد نخواهند کرد)، پس می توانید با یک منبع کار کنید. انتخاب بزرگ است، البته بهترین از همه، بریکت های Li-Ion / Li-Po برای مدل های رادیویی. اما آنها به شارژرهای مناسب نیز نیاز دارند. اگر کنترلر ساده تری دارید (Uno / Due / Nano)، می توانید آن را به طور جداگانه تغذیه کنید، به عنوان مثال با یک "Crown" 9 ولت، و سرووها را به باتری قدرتمند اصلی متصل کنید. بنابراین سرووها قطعا قدرت کافی خواهند داشت. در مورد باتری های لیتیومی، باید ولتاژ را حتی بیشتر از حد معمول با دقت کنترل کنید تا تخلیه بیش از حد ایجاد نشود (ولتاژهای مجاز برای نوع خاصی از باتری باید مشخص شود). برای انجام این کار، یک ولت متر دیجیتال کوچک نیز روی ربات Sleipnir پیچ می شود که در ادامه مورد بحث قرار خواهد گرفت.

روبوبگ خودت انجام بده

کیت

  • کنترلر آردوینو Uno: 1150 p.
  • سه سروو موتور من از HXT500، 200 p استفاده کردم. یک تکه
  • محفظه باتری برای "Crown" با سوئیچ: 50 r.
  • باتری "Krona": 145 روبل.
  • گیرنده IR: 90 p.
  • سیم فولادی با قطر تقریبی 1.5 میلی متر. مثلا من از همزن شکسته برای زدن تخم مرغ استفاده کردم.

مجموع: 2035 ص.

دیمیتری دز:من می خواهم به شما پیشنهاد کنم که یک ربات شش پایه کوچک کنترل از راه دور بر اساس کنترلر آردوینو Uno بسازید. پنجه ها یک درجه آزادی خواهند داشت، کنترل با استفاده از یک کنترل از راه دور تلویزیون معمولی انجام می شود.

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

یک راه ساده تر، گرفتن یک مجموعه سازنده است، زیرا در مراحل اول یک کنترلر کافی نخواهد بود. در حال حاضر بسیاری از فروشگاه ها این مجموعه ها را ارائه می دهند. به عنوان مثال، یک فروشگاه آنلاین فوق العاده "Amperka" وجود دارد. در اینجا چندین سازنده مشابه به شما پیشنهاد می شود که از نظر کامل بودن و البته قیمت متفاوت هستند. ساده ترین "Matryoshka X" برای من کاملاً کافی بود. این شامل یک کنترلر Arduino Uno، یک کابل USB برای اتصال به کامپیوتر، یک برد نمونه سازی (یک چیز غیرقابل تعویض!)، مجموعه ای از جامپرها، LED ها، مقاومت ها و سایر موارد است.

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

آنچه از ابزار مورد نیاز است:

  • یک آهن لحیم کاری و هر آنچه برای لحیم کاری نیاز دارید. شما نیازی به لحیم کاری زیادی ندارید و به مهارت خاصی نیاز ندارید.
  • تفنگ چسب داغ و میله های آن؛
  • انبردست برای کار با سیم

اگر همه چیز را جمع آوری کرده اید، بیایید شروع کنیم!

کنترل

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

در این مرحله به گیرنده IR دیگری نیاز دارید و خوب است که یک برد نمونه اولیه داشته باشید. اکثریت قریب به اتفاق ریموت های IR در فرکانس های حامل 36 کیلوهرتز، 38 کیلوهرتز یا 40 کیلوهرتز کار می کنند (پاناسونیک، سونی). استثناها عبارتند از ریموت های شارپ (56 کیلوهرتز)، Bang & Olufsen (455 کیلوهرتز) و شاید افراد عجیب و غریب تر. بنابراین، هر گیرنده IR در 36، 38 یا 40 کیلوهرتز خوب است. فرکانس ممکن است دقیقاً با فرکانس حامل سیگنال مطابقت نداشته باشد. در این مورد، حساسیت گیرنده کاهش می یابد، اما در عمل من هیچ ناراحتی را با استفاده از گیرنده TSOP2136 IR (36 کیلوهرتز - دو رقم آخر فرکانس است) و کنترل از راه دور سونی (40 کیلوهرتز) متوجه نشدم.

بنابراین، برای اکثر ریموت ها، گیرنده های IR TSOP21xx، TSOP22xx، TSOP312xx مناسب هستند. دو رقم آخر می تواند 36، 37، 38 یا 40 باشد. قبل از روشن کردن گیرنده IR، سیم کشی مخاطبین آن را مشخص کنید - فقط سه عدد از آنها وجود دارد: + 5 ولت (منبع تغذیه)، GND (زمین)، Vs (خروجی) ). بیایید مدار را مانند تصویر (سیم کشی برای TSOP2136) مونتاژ کنیم.


همانطور که می بینید ما خروجی گیرنده IR را به ورودی آنالوگ کنترلر A0 وصل کردیم.

این چیزی است که کد طرح به نظر می رسد:

#include "IRremote.h" // ورودی آنالوگ کنترلر // که گیرنده IR به آن متصل است: const int IR_PIN = A0; // یک شی گیرنده IR ایجاد کنید: IRrecv irecv (IR_PIN); تنظیم void () (Serial.begin (9600)؛ Serial.println ("آماده")؛ // شروع به گوش دادن به سیگنال های IR // irrecv.enableIRIn ()؛) حلقه خالی () (// ساختار نتایج را شرح دهید، / / که در آن // دستورات دریافتی و رمزگشایی شده // قرار می‌گیرد: نتایج decode_results؛ // اگر دستور IR پذیرفته شود و // با موفقیت رمزگشایی شود، کد دریافت‌شده را به // درگاه سریال خروجی می‌دهیم. کنترل کننده: if (irrecv.decode (& نتایج)) (Serial.println (results.value)؛ irrecv.resume ();))

این طرح از یک کتابخانه ویژه IRremote.h استفاده می کند که سیگنال های طیف گسترده ای از ریموت های IR را رمزگشایی می کند. این کتابخانه یک پروژه متن باز است، می توانید آن را از https://github.com/shirriff/Arduino-IRremote دانلود کنید. و برای اتصال آن به پروژه ما، باید سه مرحله را انجام دهید:

  • دایرکتوری کتابخانه را در فهرست کتابخانه ها کپی کنید، که به نوبه خود در دایرکتوری نصب Arduino IDE قرار دارد.
  • راه اندازی مجدد IDE؛
  • خط #include "IRremote.h" را به ابتدای طرح خود اضافه کنید.

توابع رمزگشایی مادون قرمز اکنون در طرح در دسترس خواهند بود. اما برای دیدن کدهای حاصل از شی Serial نیز استفاده خواهیم کرد. با کمک آن، ما کدها را از طریق پورت سریال (همه کابل USB یکسان) به رایانه منتقل می کنیم. در تابع setup، شی Serial را مقداردهی اولیه می کنیم. "9600" 9600 baud است - نرخی که برای انتقال داده استفاده می شود. پس از مقداردهی اولیه، می توانیم با استفاده از تابع println در پورت سریال بنویسیم. برای مشاهده نتیجه این خروجی در رایانه در Arduino IDE، آیتم منوی Tools → Serial Monitor (Ctrl + Shift + M) را انتخاب کنید. فقط مطمئن شوید که روی 9600 baud تنظیم شده است.

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

ما به 13 دکمه روی ریموت نیاز داریم. من از موارد زیر استفاده کرده ام:

  • 1 - چرخش صاف به چپ؛
  • 2 - حرکت رو به جلو.
  • 3 - گردش صاف به راست;
  • 4 - درجا به چپ بپیچید.
  • 5 - توقف؛
  • 6 - درجا به راست بپیچید.
  • 7 - حرکت به عقب با چرخش به راست.
  • 8 - حرکت به عقب;
  • 9 - حرکت به عقب با چرخش به چپ.
  • دکمه آبی - بسیار کند؛
  • زرد - به آرامی؛
  • سبز - سریع؛
  • قرمز - بسیار سریع

کدهای این دکمه ها را یادداشت کنید، بعداً برای طرح کنترل ربات به آنها نیاز خواهید داشت.

الگوریتم حرکت

طرح کنترل ربات در صفحه پروژه ما (bit.ly/1dEwNDC) موجود است. فراموش نکنید که مقادیر ثابت کدهای دکمه های فشار داده شده کنترل از راه دور را به کدهای کنترل از راه دور خود تغییر دهید (ثبات IR_COMMAND_XXX_CODES در فایل ir_command_codes.h).

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

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

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

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


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

پس این چگونه اجرا می شود؟ به یاد داریم که کنترلر دائماً تابع حلقه را فراخوانی می کند. بنابراین در این تابع باید کدی را قرار دهیم که موقعیت فعلی سروموتورها را مشخص کرده و آنها را در این موقعیت قرار می دهد. هر سروو موتور باید نوسان داشته باشد. با استفاده از فرمول زیر می توانیم موقعیت سروموتور را در زمان t محاسبه کنیم:

X = یک گناه (2πt / T)،

که در آن X موقعیت مورد نظر سروموتور، A دامنه نوسان، T دوره نوسان است.

بنابراین، بسته به لحظه زمان t، تغییر در مقدار X را در محدوده -A تا + A دریافت می کنیم. سروموتورها را می توان بین 0 تا 180 درجه قرار داد. بنابراین، برای ما بهتر است در اطراف موقعیت "صفر" در 90 درجه نوسان کنیم. و اگر بخواهیم نوساناتی را با دوره 1 ثانیه در اطراف موقعیت 90 درجه با دامنه 30 درجه ارائه کنیم، فرمول به شکل زیر تبدیل می شود:

X = 90 + 30 sin (2πt / 1000)،

که در آن t زمان بر حسب میلی ثانیه از شروع نوسان است. برای کنترل سرعت حرکت سوسک ربات می توانیم دوره نوسان را تغییر دهیم. هر چه بزرگتر باشد سرعت آن کمتر می شود.

حالا بیایید یک بار دیگر به نمودار خود برگردیم، زیرا فرمول نوشته شده در بالا هنوز کامل نشده است. چگونه از حرکت همزمان و سپس مخالف سروموتور چپ و راست اطمینان حاصل کنیم؟ چگونه فاز سروو موتور مرکزی را تغییر دهیم؟ باید یک فاز نوسان به فرمول خود اضافه کنیم. جابجایی آرگومان سینوسی توسط π برای مثال، موتور سمت راست باعث می‌شود که در پادفاز به سمت چپ کار کند، یعنی همانطور که ما نیاز داریم که در جای خود بچرخد. فرمول ما اکنون به این صورت خواهد بود:

X = 90 + 30 sin (2πt / 1000 + Φ)،

جایی که Φ فاز نوسان است، مقدار از 0 تا 2π است.

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

مونتاژ

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

این یک مرحله بسیار مهم قبل از مونتاژ است. سعی کنید کابل USB را جدا کرده و برد برد را از باتری Krona تغذیه کنید. تمام مراحل حرکت را بررسی کنید و مطمئن شوید که همه چیز کار می کند. پس از مونتاژ ربات، تغییر چیزی (به عنوان مثال، تعویض یک سروموتور بیکار) دشوارتر می شود.


حالا بریم سراغ خود مونتاژ. حامل اصلی محفظه باتری است. توصیه می کنم از یک محفظه بسته و همیشه با سوئیچ استفاده کنید.

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

کنترلر به راحتی به محفظه می چسبد، اما من واقعاً از این گزینه خوشم نمی آید، زیرا باید Arduino Uno را برای همیشه به سوسک بدهم. بنابراین، می توانید زندگی را برای خود سخت کنید و از کانکتورهای آردوینو برای ایمن کردن محفظه باتری استفاده کنید. در پایین محفظه، کانکتور پین را با فاصله 2.54 میلی متری بین پین ها بچسبانید. باید طوری قرار گیرد که در سوکت کنترلر اطراف پین های دیجیتال 8-11 قرار گیرد. ما در حال حاضر به آنها نیاز نخواهیم داشت. اگر کانکتور در دسترس نباشد، یک گیره کاغذ خم شده U شکل این کار را انجام می دهد.

سیم های محفظه باتری باید به Vin و GND مجاور متصل شوند. قطبیت را با هم مخلوط نکنید! به علاوه "Crowns" در Vin، منهای GND. برای اطمینان از تماس قابل اعتماد سیم ها با کانکتورهای آردوینو، می توانید به سادگی نوک سیم را با یک ضخیم تر آبیاری کنید، اما من از یک تکه گیره کاغذ کوتاه به عنوان دوشاخه استفاده کردم. و محل لحیم کاری را با لوله هیت شرینک بستم.


کانکتورهای حلقه های سروو باید قطع شوند، سیم های برق (+5 ولت - معمولا قرمز و GND - سیاه یا قهوه ای) باید وصل شده و به جک های 5 ولت و GND مجاور روی کنترلر آورده شوند. ما کمی بعد وصل می شویم. سیم‌های سیگنال کنترل (معمولاً زرد) به خروجی‌های دیجیتال کنترلر خروجی می‌شوند: سروموتور سمت چپ به پایه 2، مرکزی به پایه 4، سمت راست به پایه 7.

"+" و "-" گیرنده IR را می توان به سادگی به کانکتور آردوینو (5 ولت و GND مجاور) وصل کرد. درست است، خم شدن به نصف، دو برابر شدن ضخامت آنها. سیم های برق وصل شده قبلی سروو موتورها را به همان پایه های برق گیرنده IR لحیم می کنیم. خروجی سیگنال گیرنده IR به سختی به ورودی آنالوگ کنترلر A0 می رسد و باید آن را با سیم بسازید.

چند نکته برای ساخت پا ابتدا پای چپ و راست جلو و عقب را آماده کنید. مطمئن شوید که آنها متقارن هستند (به طول و زاویه خم ها توجه کنید). چسباندن پاها را فقط پس از اطمینان از اینکه سروموتورها در موقعیت "صفر" (90 درجه) تنظیم شده اند، شروع کنید.

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

بعدش چی؟

Robobug یک پلتفرم موبایل آماده است که بر اساس یکی از محبوب ترین و مقرون به صرفه ترین کنترلرها ساخته شده است. پروژه باز: https://github.com/beetle-ringo/arduino. فورک (چنگال) را در GitHub ایجاد کنید و عملکرد خود را اضافه کنید. تخیل خود را آزاد کنید - یک LED IR اضافه کنید و ربات برای نبرد روباتیک آماده است. فاصله یاب، حسگرهای لمسی، ژیروسکوپ را به هم متصل کنید ... به ربات خود بیاموزید از موانع دوری کند یا در امتداد یک خط راه برود، سعی کنید یک وب کم روی آن نصب کنید. ممکن است یک میلیون ایده وجود داشته باشد، و شما همیشه می توانید جالب ترین آنها را انتخاب کنید.

ربات اسلیپنیر

کیت

  • کنترلر ربات عنکبوتی آردوینو Uno Dagu: 2530 p.
  • Servos SG90 9g (16 قطعه) 1150 روبل.
  • بسته باتری LiPo، 7.4 ولت، 1800 میلی آمپر ساعت 490 r.
  • ماژول رادیویی 4 پین بلوتوث فرستنده RF 270 р.
  • نشانگر ولتاژ (اختیاری) DC 3.3–30 V قرمز پانل LED متر 100 р.
  • گوشه آلومینیومی. در نزدیکترین بازار ساختمان 135 روبل.
  • پیچ و مهره. در نزدیکترین بازار فروش 35 ص.

مجموع: 4710 ص.

*قطعات در زمان‌های مختلف خریداری شده‌اند و موقعیت‌های زیادی را می‌توان بهینه کرد

پوکونوکو:بیایید سعی کنیم یک پیکربندی غیر استاندارد - یک ربات 2DOF هشت پا را جمع آوری کنیم. برنامه نویسی پایه های 2DOF بسیار ساده تر است و من یکسری سرووهای استفاده نشده در انبار دارم. و مهمتر از همه، امکان نامگذاری آن به افتخار اسب هشت پا خدای اودین اسلیپنیر (همیشه رویای آن بود!).

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


یک راه حل منظم و کاربردی، اما به دور از ارزان ترین راه حل، استفاده از یک برد کنترل کننده سفارشی است که برای اتصال تعداد زیادی سروو بهینه شده است. من با یک کنترلر ربات Dagu Spider برخورد کردم - این همان آردوینو مگا است، اما روی یک برد با اتصالات پین 3 پین از قبل سیم‌کشی شده، جایی که می‌توانید بلافاصله همان 48 سروو را بدون هیچ محافظی وصل کنید. ایده آل برای ربات های آردوینو چند پا.

کنترل

ما از طریق بلوتوث کنترل خواهیم شد. راه حل های سخت افزاری مختلفی برای این کار وجود دارد. اینها شیلدها و بردهای جداگانه با رابط سریال UART هستند (مانند پورت com معمولی، فقط با سطوح سیگنال 5 ولت). به نظر من کاربردی ترین چیز یک برد کوچک با رابط UART بود. به پین ​​های UART / سریال مربوطه پورت آردوینو متصل می شود. بیایید به دو نکته توجه کنیم: فقط یک پورت از این قبیل در Uno / Due / Nano و موارد مشابه وجود دارد و همچنین برای فلش از طریق USB استفاده می شود. بنابراین، ممکن است لازم باشد ماژول بلوتوث را هنگام چشمک زدن قطع کنید. و نکته ظریف دوم - فراموش نکنید که پین ​​RX ماژول به پین ​​TX آردوینو و TX به پین ​​RX متصل است. چنین چیزهایی در UART وجود دارد.

برنامه نویسی بلوتوث پیچیده تر از سرووها نیست، داده ها را می توان بایت به بایت خواند که ما از آن استفاده خواهیم کرد:

Char cmd; Serial.begin (9600); if (Serial.available ()) cmd = Serial.read ();

در صورت استفاده از آردوینو مگا و اتصال بلوتوث به پورت دوم، به جای Serial، Serial1 نوشته می شود. قابل ذکر است که شما نمی توانید از بلوتوث استفاده کنید، اما ربات را مستقیماً از طریق USB کنترل کنید. و هیچ چیز در کد بالا تغییر نمی کند! این فقط با یک پورت سریال کار می کند و فرقی نمی کند فرستنده BT یا مبدل سریال USB در آنجا آویزان باشد.

طرف دیگر بلوتوث

راحت ترین راه برای اتصال، استفاده از ابزارهای استاندارد لینوکس است. برای کار، ما به ابزارهای sdptool، rfcomm (که در بسته bluez در مخازن اوبونتو موجود است) و همچنین minicom (بسته به آن گفته می شود) نیاز داریم. دستورالعمل استفاده از این ابزارها را می توان در وب یافت.

الگوریتم حرکت


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

بنابراین برای کار با 16 سروو و یک راه رفتن انتخابی باید چه کار کنیم؟ پاسخ صحیح این است که در مورد سینماتیک معکوس (IK) بخوانید. حجم مقاله اجازه نمی دهد موضوع را به طور گسترده گسترش دهید، اما مطالب زیادی در اینترنت وجود دارد. به طور خلاصه، IR مشکل یافتن سیگنال های کنترلی لازم را حل می کند تا سیستم موقعیت مورد نظر را در فضا بگیرد. برای پا یعنی با توجه به مختصات نقطه ای که پا باید برود باید زوایای سرووها را مشخص کنید که برای این کار باید تنظیم کنید. و با کنترل مختصات پاها می توانید وضعیت بدن را کنترل کنید. ما پاهای 2DOF داریم، محورها موازی هستند، بنابراین پا همیشه در همان صفحه حرکت می کند. وظیفه IR در این مورد به فضای 2 بعدی کاهش می یابد که آن را بسیار ساده می کند.

اجازه دهید برای هر پا، مبدأ محلی مختصات O شفت سروو فوقانی، یعنی ران باشد. و مختصات نقطه A را داریم، جایی که پا باید برود. سپس به راحتی می توان فهمید که باید مشکل پیدا کردن نقاط تقاطع دو دایره را حل کنید (نمودار پایه های یک طرف را ببینید، در آنجا در سمت راست ترین پایه نشان داده شده است). با یافتن نقطه B تقاطع دایره ها (با انتخاب هر یک از آنها)، محاسبه زوایای مورد نیاز با استفاده از ترجمه از مختصات دکارتی به مختصات قطبی آسان است. در کد، راه حل این مشکل به صورت زیر است:

شناور A = -2 * x; شناور B = -2 * y; float C = sqr (x) + sqr (y) + sqr (hipLength) - sqr (shinLength); شناور X0 = -A * C / (sqr (A) + sqr (B)); شناور Y0 = -B * C / (sqr (A) + sqr (B)); float D = sqrt (sqr (hipLength) - (sqr (C) / (sqr (A) + sqr (B)))); float mult = sqrt (sqr (D) / (sqr (A) + sqr (B))); float ax, ay, bx, by; تبر = X0 + B * مولتی؛ bx = X0 - B * multi; ay = Y0 - A * multi; توسط = Y0 + A * مولتی؛ // یا bx برای نقطه دیگری از تقاطع float jointLocalX = ax; // یا توسط برای نقطه دیگری از تقاطع float jointLocalY = ay; float hipPrimaryAngle = قطبی (jointLocalX، jointLocalY); float hipAngle = hipPrimaryAngle - hipStartAngle; float shinPrimaryAngle = قطبی Angle (x - jointLocalX، y - jointLocalY); float shinAngle = (shinPrimaryAngle - hipAngle) - shinStartAngle;

که در آن x و y مختصات نقطه ای هستند که باید با پای خود به آنجا برسید. hipStartAngle - زاویه ای که با آن "Hip" در ابتدا می چرخد ​​(در موقعیت وسط سروو)، مشابه shinStartAngle. به هر حال، در این محاسبات، زاویه ها به وضوح بر حسب رادیان هستند، اما آنها باید به اشیاء سروو به درجه منتقل شوند. کد سیستم عامل کامل کار شامل این قطعه در GitHub ارسال شده است، به لینک انتهای مقاله مراجعه کنید. این قطعه ای از آی سی است، اما علاوه بر آن، برای استفاده از این آی سی در همه پاها به کد ساده تری نیاز دارید (به توابع legsReachTo ()، legWrite () مراجعه کنید). شما همچنین به کدی نیاز دارید که در واقع راه رفتن را پیاده سازی کند - حرکت یک گروه از پاها "به عقب" (به طوری که ربات به جلو حرکت می کند)، در حالی که گروه دیگر از پاها بلند شده و برای مرحله بعدی به جلو مرتب می شوند، به StepForward مراجعه کنید. () عملکرد. او با پارامترهای داده شده یک قدم برمی دارد. به هر حال، با این پارامترها، با وجود نام تابع، می توانید یک قدم به عقب برگردید. اگر این تابع در یک حلقه فراخوانی شود، ربات به جلو می رود.

اکنون دستورات را دریافت کرده و آنها را تفسیر می کنیم. بیایید یک حالت به برنامه اضافه کنیم:

حالت شمارش (STOP، FORWARD، BACKWARD، FORWARD_RIGHT، FORWARD_LEFT)؛

و در حلقه اجرای اصلی () به وضعیت فعلی (متغیر حالت) نگاه می کنیم و اگر به جلو حرکت کنیم (با یا بدون چرخش) و دوباره stepForward () را می کشیم، اما با آرگومان xamp منفی، اگر لازم باشد به عقب برگردیم ... چرخش ها در legWrite () انجام می شود، و برای چرخش به راست، پاهای سمت راست در جای خود باقی می مانند (در حالی که پای های چپ در حال پارو زدن هستند). اینجا چنین تانک اسب است. وحشیانه، اما بسیار ساده و کار می کند. چرخش صاف فقط با پایه های 3DOF قابل انجام است، نمونه ای از آن را می توان در مخزن باگی باگ مشاهده کرد.

سوئیچ (وضعیت) (مورد FORWARD: مورد FORWARD_RIGHT: مورد FORWARD_LEFT: stepForward (h, dh, xamp, xshift)؛ شکست؛ حروف BACKWARD: stepForward (h, dh, - xamp, xshift)؛ شکست؛)

دستور Char; while (Serial1.available ()) دستور = Serial1.read (); سوئیچ (فرمان) (مورد "w": حالت = FORWARD؛ شکست؛ حالت "s": حالت = BACKWARD؛ شکست؛ حالت "d": حالت = FORWARD_RIGHT؛ شکست؛ حالت "a": حالت = FORWARD_LEFT؛ شکست؛ پیش‌فرض : حالت = STOP؛)

در این مورد، نکات اصلی سیستم عامل تمام شده است، بقیه چیزهای کوچک هستند. اگرچه یک نکته مهم دیگر وجود دارد - توانایی تنظیم دقیق سرووها. حتی با دقیق‌ترین مونتاژ، اگر به همه سرووها دستور داده شود تا 90 درجه بچرخند، برخی از آنها همچنان با زاویه کمی از بین می‌روند. بنابراین، شما به توانایی تنظیم آن نیاز دارید. چگونه این کار را انجام دادم، می توانید در روش های hipsWrite () و shinsWrite () و در آرایه های تنظیمات خوب hipsTune و shinsTune ببینید.

مونتاژ

برای چنین سازه هایی، هیچ چیز خاصی مورد نیاز نیست: یک ورق پلکسی با ضخامت مناسب (از نزدیکترین بازار فروش خانگی) و یک اره منبت کاری اره مویی یا اره برقی برای برش قطعات انجام می شود. و البته یک مته برای سوراخ کردن. به جای پلکسی، می توانید از تخته سه لا استفاده کنید (سپس می توانید یک کتیبه یادگاری روی سازه نهایی با مشعل نیز بسازید). از ورق یا گوشه های آلومینیومی نیز می توان استفاده کرد. با Sleipnir مسیر استفاده از یک گوشه آلومینیومی با دنده های 1 سانتی متری را دنبال کردم (آن را از یک سوپرمارکت ساختمانی خریدم).


پایه یک قاب مستطیلی خواهد بود. اندام ها - راه راه 4 سانتی متر. همچنین ارزش انبار کردن تعداد زیادی پیچ و مهره کوچک را دارد. گوشه را به قطعات لازم برش می دهیم، شیارها را برای سرووها برش می دهیم، سوراخ هایی را برای پیچ ها و پیچ ها دریل می کنیم. نشان دادن طرح بهتر از توصیف آن است. اندازه ها می توانند هر کدام باشند، ربات ها باید متنوع باشند. اما به یاد داشته باشید: هر چه پاها بلندتر باشند، سروو باید اهرم بیشتری را فشار دهد و استرس بیشتری به آن وارد می شود. تا عدم امکان چرخش و حتی شکستن. اما 4-5 سانتی متر - مشکلی نیست.

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

به عنوان یک قاعده، هر سروو دارای چند پیچ ​​و مجموعه ای از اتصالات است که می توانند برای کاربردهای مختلف روی شفت پیچ شوند. یک "شاخ" (یا بوق) برای ما مناسب ترین است که به شما امکان می دهد میله ای را به سروو وصل کنید. بنابراین، محورهای دو سروو به یک میله متصل می شوند و میله به یک "ران" تبدیل می شود. در این حالت، یک سروو به بدن متصل می شود و دیگری بخشی از ساق پا می شود. فقط برای طولانی کردن یا جالب تر کردن اندام ارزش دارد میله دیگری را به آن پیچ کنید. کمی کار پر زحمت - و پلت فرم آماده است (مجموعه های دستی از پیچ گوشتی، آچار، موچین، نیپر و غیره روند را تا حد زیادی سرعت می بخشد).

بعدش چی؟

کل پروژه در https://github.com/poconoco/sleipnir موجود است. من یکی از غیر عملی ترین تنظیمات را شرح داده ام - بسیاری از پاهای 2DOF، بلند، باریک، به راحتی به پهلو می افتند. سعی کنید ربات بهتری با پایه های 3DOF بسازید. با پایه های 4DOF. با چنگال یا فک. به عنوان نمونه ای از سینماتیک معکوس 3DOF، می توانید به مخزن buggybug مراجعه کنید - یک سیستم عامل هگزاپاد وجود دارد. همچنین می‌توانید ربات‌های غیرقابل کنترل، اما هوشمند بسازید، با قرار دادن سنسورهای فاصله به جای بلوتوث، به ربات آموزش می‌دهند که از دیوارها و موانع دوری کند. اگر چنین سنسوری را روی درایو سروو قرار دهید و آن را بچرخانید، تقریباً با سونار می توانید منطقه را اسکن کنید.