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

ویراستار توضیح داد که می‌دانید، «باید سرگرم‌کننده، تازه، پر از ماجراهای جالب باشد... به طوری که خواننده نتواند خود را پاره کند.
I. Ilf، E. Petrov "چگونه رابینسون خلق شد".


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


تصمیم گرفتم با یک پروژه پیشرفته شروع کنم، از جمله امید پنهانی برای دور کردن نسل جوان از Counter-Strike (این کار به نتیجه نرسید).


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


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


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


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


کدام برد آردوینو را انتخاب کنم؟


من آردوینو UNO را گرفتم، پروژه های زیادی با توضیحات برای آن وجود دارد. اما حالا آردوینو مگا 2560 را می‌گیرم، خروجی‌های دیجیتال و آنالوگ بیشتری دارد و کاملاً با پروژه‌های UNO سازگار است.

توضیحات کلی پروژه

در دنیای توسعه نرم افزار، به این موارد "نیازمندی های سیستم" نیز گفته می شود.


ایده پروژه به شرح زیر بود. اولین نسخه از ماشین روباتیک، به نام RoboCar4W، باید اقدامات ساده ای را انجام دهد:

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

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


برای بهتر کردن کار خود، در اینجا کل پروژه نهایی RoboCar4W مونتاژ شده است (اینجا بدون بلوتوث).



در اینجا یک ویدیو از آزمایشات دریایی است.


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



در ویدئوی دوم، RoboCar4W با استفاده از دستورات ارسال شده توسط "راننده" از طریق بلوتوث از تلفن همراه اندرویدی حرکت می کند. برنامه «Bluetooth RC Car» روی گوشی نصب شده است. علاوه بر این، اگر مانعی در جلو وجود داشته باشد، ربات متوقف می شود، یعنی. شما نمی توانید چیزی را رم کنید (با این حال، یک دکمه "مخفی" وجود دارد که حالت ایمن را غیرفعال می کند).



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

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

اشتباه است که روش خود را «الگوریتم اجتناب از موانع» یا «مسیریابی» بنامیم. اینها رشته های ریاضی جداگانه هستند، ریاضیات محض. اگر واقعاً ریاضیات را دوست دارید، عبارات ذکر شده را در گوگل جستجو کنید، به مدت شش ماه مطالب خواندنی در اختیار شما قرار می گیرد.


در حال حاضر، ما به چیزهای بسیار ساده تری علاقه مندیم. بنابراین، ما آن را به سادگی می نامیم - الگوریتمی برای کنترل حرکت یک ربات 4 چرخ. البته ما در مورد آن صحبت می کنیم کنترل خودکاربدون دخالت انسان


این الگوریتم ساده با کلمات نوشته شده است.

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

داشتن 4 چرخ و همه رانش چه خوبی دارد؟ ما می توانیم چندین نوع چرخش را انجام دهیم (برنامه ریزی کنیم):

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

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


و با یک بار فشار دادن دوباره آن را روشن کنید.


یادداشت مهم. تمام منطق توسط آردوینو کنترل می شود. اندروید در اینجا به سادگی به عنوان یک کنترل از راه دور بازی (بدون مغز) از کنسول عمل می کند، وظیفه آن انتقال احمقانه فشردن دکمه ها (یعنی دستورات) از طریق بلوتوث به Arduino RoboCar4W است.

اجزاء

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


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


برای آینده، ساده ترین و ارزان ترین درایو سروو را بخرید، سرعت و دقت چرخش در یک زاویه مشخص مورد نیاز نیست، و همانطور که معلوم شد آسیب رساندن به سروو بسیار آسان است. SG90 2 دلاری به خوبی عمل خواهد کرد.


بنابراین، اجزای پروژه RoboCar4W، توضیحاتی به زبان انگلیسی برای تسهیل جستجو در ebay و موارد مشابه داده شده است:

  • آردوینو UNO R3
  • پلت فرم ربات متحرک شاسی آماده 4 چرخ محرک شاسی ماشین هوشمند سازگار با آردوینو
  • موتورها جریان مستقیم(DC) با چرخش در هر دو جهت - 4 عدد.
  • چرخ - 4 عدد.
  • برد کنترل 4 موتور DC Motor Drive Shield L293D
  • سنسور فاصله سنج التراسونیک HC-SR04 سنسور اندازه گیری فاصله ماژول اولتراسونیک
  • باتری های Ni-MH 1.2 V - 8 عدد.
  • نگهدارنده جعبه پلاستیکی برای باتری، نگهدارنده جعبه باتری 4 باتری AA - 2 عدد.
  • نوع باتری "Krona" 8.4 V - 1 pc.
  • سوئیچ ضامن اختیاری - کلید پاور

شاسی، موتورهای DC و چرخ ها بلافاصله به صورت کیت و حتی با دستورالعمل مونتاژ خریداری شدند.


ورودی های آنالوگ را می توان به عنوان پین های دیجیتال I/O استفاده کرد. پین های آردوینو مربوط به ورودی های آنالوگ از 14 تا 19 شماره گذاری می شوند. این فقط به پین ​​های آردوینو اشاره دارد و نه شماره پین ​​های فیزیکی میکروکنترلر Atmega.


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



در صورت استفاده از موتورهای DC یا پله ای، پین های D4، D7، D8، D12 اشغال خواهند شد.


پین‌های D9 (کنترل سروو شماره 1)، D10 (کنترل سروو شماره 2) تنها در صورت استفاده از سرووها اشغال خواهند شد.


خود برد برای کنترل موتورهای Motor Drive Shield L293D پین های آردوینو را نمی گیرد.


پایه های برق 3.3 ولت، 5 ولت و زمین به مقدار کافی روی محافظ موتور درایو کپی شده اند. بنابراین نیازی به نگرانی در مورد کمبود آنها نیست.


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


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


در هر صورت، اگر از موتور در کاردستی خود استفاده می کنید، یک محافظ موتور محرک (یا مدار مشابه) ضروری است.


بنابراین، ما 4 موتور جریان مستقیم (DC)، یک سروو درایو، خود برد آردوینو و چندین سنسور داریم. موتورها بیشترین انرژی را دارند، اما حسگرها می توانند با موفقیت از اتصالات برد آردوینو تغذیه شوند، بنابراین همه چیز با آنها ساده است. برای راحتی، کل خانواده را در یک جدول خلاصه کرده ام.


ولتاژ توصیه شده یا معمولی مصرف فعلی حداکثر ولتاژ چه برنامه ای برای خوردن دارید؟ یادداشت
برد آردوینو UNO R3 7 - 12 ولت، 200 میلی آمپر (متوسط) 6 - 20 "Krona 9V" Li-ion 650mAh، 8.4V کانکتور با مثبت در مرکز
سروموتور MG-995 5-6 ولت، 0.1 - 0.3A (پیک) 4.8 - 7.2 باتری (5) عدد Ni-Mh 1.2V = 6V منبع تغذیه فقط از یک منبع جداگانه. اگر آن را همراه با آردوینو روشن کنید، همه چیز خراب می شود. ولتاژها باتری های Ni-MH 4 چیز * 1.2 ولت = 4.8 ولت کافی نیست. برخی استدلال می کنند که این سروو نباید در 6 ولت استفاده شود، فقط 4.8
موتورهای DC (4 عدد) 6 - 8 ولت، جریان از 70 میلی آمپر تا 250 میلی آمپر 3 - 12 باتری (5+3) عدد. Ni-Mh 1.2V = 9.6V شما نمی توانید موتورها را به درستی با باتری 9 ولت کار کنید، بنابراین حتی زمان (و باتری) خود را هدر ندهید!
موتور درایو شیلد L293D لازم نیست 4.5 - 36 لازم نیست
ماژول بلوتوث HC-0506 3.3 ولت، 50 میلی آمپر 1.8-3.6 از پایه 3.3 ولت برد آردوینو
فاصله سنج اولتراسونیک HC-SR04 5 ولت، 2 میلی آمپر 5 از پایه 5 ولت برد آردوینو

من مبدل ولتاژ DC/DC در دسترس نداشتم. Krona 9V منبع تغذیه خوبی نیست، من قبلاً آن را داشتم.


اما از استفاده باتری های لیتیوم یونی ظرفیت بزرگمن مخالفت نمودم. اولاً به دلیل هزینه بالا و ثانیاً در فروشگاه های آنلاین چینی به راحتی می توان به جعلی برخورد کرد. به طور دقیق تر، نه "آسان"، بلکه "همیشه". علاوه بر این، Li-ion نیاز به حمل و نقل ویژه دارد و ایمن نیست.


بنابراین، همانطور که از جدول می بینیم، به 3 منبع تغذیه مستقل نیاز داریم:

  • برای برد و سنسورهای آردوینو.
  • برای سرو موتور
  • برای 4 موتور DC.

از کجا انقدر بیارم؟ در هر صورت، خود برد آردوینو باید از یک منبع جداگانه تغذیه شود، زیرا به عنوان مثال، هنگامی که ولتاژ در اثر روشن شدن موتورها کاهش می یابد، برد ممکن است راه اندازی مجدد شود یا به سادگی از کار بیفتد. در اینجا ما از یک باتری از فرم فاکتور Krona 9V استفاده می کنیم و کانکتوری که به آردوینو متصل می شود باید با یک "پلاس در مرکز" باشد.


برای یک سروموتور و 4 موتور DC، می توانید با یک منبع تغذیه کار کنید. تنها مشکل این است که سروموتور برای ولتاژ 5-6 ولت (حداکثر 7.2 ولت) و جریان 100 - 300 میلی آمپر (پیک) طراحی شده است، در حالی که موتورهای DC به 6 - 8 ولت (حداکثر 12 ولت) و جریان 250 میلی آمپر نیاز دارند.


برای حل مشکل وجود دارد مبدل های DC-DC، اما من نداشتم. در نتیجه، من از طرح اتصال "اختصاصی" خود (بدون هیچ گامی به پایین) استفاده کردم مدارهای الکترونیکی، فقط ولتاژ و جریان سازگار با محیط زیست!): متصل 8 عدد. باتری‌های 1.2 ولتی به‌صورت سری و در مکان‌های مناسب، همانطور که در نمودار نشان داده شده است، ضربه‌هایی زده‌اند.



6 ولت به سروموتور و 9.6 به موتورهای DC رفت. واضح است که باتری های 1-5 افزایش بار را تجربه خواهند کرد.


برای کنترل موتورهای سروو و DC از یک موتور درایو شیلد 4 کانالی مبتنی بر تراشه L293D استفاده کردم.


مونتاژ شاسی تمام شده یک مشکل کوچک است. اما فکر نکنید که بدون تمام کردن آن همه چیز فوراً جمع می شود. بنابراین فایل های سوزن خود را آماده کنید.




به طور معمول نمی توان چندین موتور، سروو موتور یا استپر موتور را مستقیماً به آردوینو متصل کرد. از آنجایی که پین ​​ها (نتیجه گیری) آردوینو جریان پایینی دارند. برای حل مشکل، یک ماژول کنترل درایو اضافی - Motor Drive Shield بر اساس تراشه L293D وجود دارد که یکی از رایج ترین تراشه های طراحی شده برای این منظور است. تراشه L293D با نام H-Bridge نیز شناخته می شود.


من از بردی استفاده کردم که 4 کانال اتصال را روی دو تراشه L293D و یک شیفت رجیستر فراهم می کند. در eBay با قیمت 5 دلار موجود است.


این برد ماژول کنترل درایو دارای مشخصات زیر است.

  • محافظ موتور L293D سازگار با آردوینو مگا 1280 و 2560، UNO، Duemilanove، Diecimila
  • کنترل 4 کانال
  • منبع تغذیه موتور از 4.5 ولت تا 36 ولت
  • جریان بار مجاز 600 میلی آمپر در هر کانال، جریان اوج - 1.2 آمپر
  • حفاظت از گرمای بیش از حد
  • 2 رابط با یک تایمر دقیق آردوینو (هیچ "جیت" وجود نخواهد داشت) برای اتصال سروو موتورها به ولتاژ 5 ولت، اگر ولتاژ منبع تغذیه بالاتر مورد نیاز است، اتصال برق باید دوباره به شرح زیر انجام شود
  • شما می توانید به طور همزمان 4 موتور کموتاتور DC دو طرفه یا 2 موتور پله ای و 2 موتور سروو را کنترل کنید.
  • 4 موتور DC دو طرفه که هر کدام به یک اتوبوس 8 بیتی برای انتخاب سرعت جداگانه متصل می شوند
  • اتصال حداکثر 2 درایو پله ای (تک قطبی یا دوقطبی)، سیم پیچ تک، سیم پیچ دوبل یا استپ متناوب
  • کانکتور برای اتصال یک منبع خارجی برای منبع تغذیه جداگانه منطق کنترل و موتورها
  • دکمه RESET آردوینو
  • کتابخانه Adafruit AFMotor برای کنترل استفاده می شود.

Motor Drive Shield به کمی تغییر نیاز دارد تا بتوان هر چیزی را بعد از آن وصل کرد. من اتصالات لازم را در بالا لحیم کردم و این اتفاق افتاد.



موتورها را می توان به منبع تغذیه ای که علاوه بر برد آردوینو است وصل کرد. این روش اتصالی است که من توصیه می کنم. برای انجام این کار، همانطور که در تصویر نشان داده شده است، باید جامپر را بردارید و باز کنید.



در این حالت آردوینو نیرو می گیرد و موتورها مستقل از یکدیگر تغذیه می شوند.


ال ای دی روی محافظ موتور روشن می شود که اگر موتورها روشن نباشد، موتورها کار نمی کنند.


مشکل جدید


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



هنگام اتصال Motor Drive Shield، از پین های آنالوگ استفاده نمی شود. پین های دیجیتال 2، 13 استفاده نمی شود.


پین های زیر فقط در صورتی استفاده می شوند که موتورهای DC مناسب یا موتورهای پله ای متصل و استفاده شوند:

  • D11: موتور DC شماره 1 / پله شماره 1 (فعال سازی و کنترل سرعت)
  • D3: موتور DC شماره 2 / پله شماره 1 (فعال سازی و کنترل سرعت)
  • D5: موتور DC شماره 3 / پله شماره 2 (فعال سازی و کنترل سرعت)
  • D6: موتور DC شماره 4 / پله شماره 2 (فعال سازی و کنترل سرعت)

این پین ها در صورت استفاده از هر DC/stepper اشغال خواهند شد: D4، D7، D8، D12.


پین های زیر فقط در صورتی اشغال می شوند که از سرووهای مربوطه استفاده شود:

  • D9: کنترل سروو شماره 1
  • D10: کنترل سروو شماره 2


برای شروع کار با Motor Drive Shield، باید کتابخانه Adafruit AFMotor را دانلود و نصب کنید.


کد مثال برای کنترل موتورها:


#عبارتند از // شامل کتابخانه Adafruit #include // کتابخانه سروو موتور AF_DCMotor موتور (1) را وصل کنید. // یک شی موتور ایجاد کنید، تعداد کانکتور موتور DC را روی برد محافظ موتور و به صورت اختیاری، فرکانس سروو سروو فرکانس را مشخص کنید. // ایجاد یک شیء سروموتور servo.attach(10); // سروو را به پایه 9 یا 10 (خارجی ترین کانکتور روی برد محافظ موتور) وصل کنید motor.setSpeed(speed); // سرعت موتور DC را از 0 (توقف) به 255 (فول دریچه گاز) تنظیم کنید motor.run(RELEASE); // موتور DC stop motor.run(FORWARD); // موتور DC رو به جلو motor.run(BACKWARD); // موتور DC معکوس servo.write(90); // سروو را 90 درجه بچرخانید.

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


برای موتورهای متصل به M1 و M2، می توانید فرکانس را تنظیم کنید: MOTOR12_64KHZ، MOTOR12_8KHZ، MOTOR12_2KHZ، MOTOR12_1KHZ. بالاترین سرعت چرخش در 64 کیلوهرتز به دست می آید، این فرکانس قابل شنیدن، فرکانس کمتر و سرعت در 1 کیلوهرتز خواهد بود اما انرژی کمتری نیز مصرف می کند. موتورهای 3 و 4 همیشه با فرکانس 1 کیلوهرتز کار می کنند. پیش فرض در همه جا 1 کیلوهرتز است.


پس از این، شما باید تست موتور را انجام دهید. . در ابتدای طرح، شماره موتور را در یک خط (یا خطوط) تغییر دهید:


موتور AF_DCMotor(…);

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


ماژول التراسونیک فاصله سنج اولتراسونیک HC-SR04 را وصل می کنیم. پینوت:

  • Trig (T)
  • اکو (R)

زمان صرف شده توسط یک فاصله یاب اولتراسونیک برای اندازه گیری ها (تعیین شده به صورت تجربی):

  • حداکثر 240 میلی‌ثانیه اگر فاصله خیلی زیاد باشد (خارج از محدوده)
  • اگر فاصله خیلی کوتاه باشد حداقل 1 میلی ثانیه
  • فاصله 1.5 متری تقریباً در 10 میلی ثانیه تعیین می شود


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

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

به عبارت دیگر، در حالت ایده آل برای فاصله یاب اولتراسونیک، عالی خواهد بود اگر همه موانع به شکل یک صفحه جامد عمود بر جهت تابش اولتراسوند باشند.


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

  • حداکثر برد کوچک در مقایسه با اولتراسونیک: 0.3-0.8 متر در مقابل 4 متر
  • حداقل فاصله بزرگ در مقایسه با اولتراسونیک: 10 سانتی متر در مقابل 2 سانتی متر
  • وابستگی حساسیت سنسور به روشنایی عمومی

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

بلوتوث HC-05 را وصل کنید

همانطور که از دیتاشیت می بینیم، پین های اصلی HC-05 "برهنه":

  • انتقال TX (پین 1).
  • RX (پین 2) دریافت کنید
  • منبع تغذیه 3.3 ولت (پین 12) 3.3 ولت
  • GND (پایه 13) زمین
  • نشانگر حالت PIO8 (پین 31).
  • وضعیت اتصال PIO9 (پین 32)، اگر اتصال برقرار شود، خروجی بالا خواهد بود
  • PIO11 (پین 34) برای فعال کردن حالت فرمان AT

ماژول ما به برد Breakout/Base لحیم شده است، که قبلاً یک تقسیم کننده ولتاژ دارد، بنابراین محدوده ولتاژ کاری آن از 3.3 ولت تا 6 ولت است.


ما مجموعه ماژول بلوتوث خود را وصل می کنیم:

  • آردوینو (TX) - (RX) HC-05
  • آردوینو (RX) - (TX) HC-05
  • آردوینو (+5 ولت) - (VCC) بلوتوث
  • آردوینو (GND) - (GND) بلوتوث
  • پین های LED و KEY استفاده نمی شود

پس از برق رسانی به ماژول بلوتوث HC-05، LED روی آن باید چشمک بزند که به این معنی است که بلوتوث کار می کند.


بلوتوث موبایل را روشن می کنیم، دستگاه را با نام HC-05 پیدا می کنیم و وصل می کنیم، رمز عبور 1234 است.


برای آزمایش، یک طرح ساده در آردوینو آپلود کنید:


تعداد int = 0; void setup() ( Serial.begin(9600)؛ Serial.println ("آردوینو + بلوتوث را آزمایش کنید. http://localhost")؛ ) void loop() (count++; Serial.print("Count =")؛ سریال. println(شمارش) تاخیر(1000);

در تلفن اندرویدی ما ترمینال بلوتوث را نصب می کنیم. ما به دستگاه HC-05 وصل می‌شویم و خطوط تیک تاک را با شمارنده افزایشی روی صفحه تلفن تماشا می‌کنیم.


برای اینکه ماژول دستورات AT را بپذیرد، باید در حالت مناسب قرار گیرد - برای انجام این کار، باید پین KEY (PIO11) را روی منطق 1 تنظیم کنید. در برخی از تخته های Breakout/Base، به جای پین KEY، یک پین EN (ENABLE) وجود دارد که ممکن است به پین ​​روی خود تراشه لحیم شود یا نباشد. این فقط برای تراشه های HC05 صدق می کند. فقط این است که پین ​​EN برد من در جایی لحیم نشده است. بنابراین، می توان آن را با یک سیم جداگانه به پین ​​KEY (PIO11) تراشه لحیم کرد. یا در حین کار، برای تغییر HC05 به حالت فرمان AT، پایه تراشه KEY(PIO11) را برای چند ثانیه به پایه برق Vcc متصل کنید. برای HC06، پین KEY مورد نیاز نیست.

نرم افزار

توجه داشته باشید. هر بار قبل از بارگذاری برنامه در آردوینو، مطمئن شوید که ماژول بلوتوث به آردوینو متصل نیست. این باعث ایجاد مشکل در پر کردن طرح می شود. به سادگی برق را از ماژول بلوتوث یا سیم های اتصال آردوینو و پین های RX، TX ماژول قطع کنید.


در ابتدای طرح، اعداد موتور را در خطوطی مانند:


موتور AF_DCMotor(…);

اگر خط را جایگزین کنید


بایت اشکال زدایی = 0;

بایت اشکال زدایی = 10;

سپس حالت اشکال زدایی روشن می شود.


در حالت اشکال زدایی، ربات RoboCar4W در واقع چرخ های خود را نمی راند یا نمی چرخد. در عوض، مانیتور پورت سریال را فعال کنید و ببینید که چگونه به صورت مجازی "درایو" می کند. به جای اینکه واقعاً به جلو حرکت کنید، رشته «Forward» در مانیتور پورت سریال نوشته می‌شود معکوسبا چرخش به چپ - "به عقب برگرد L(eft)" و غیره. سنسور فاصله اولتراسونیک نیز کاری انجام نمی دهد، در عوض فاصله تا موانع به صورت برنامه ریزی شده و تصادفی ایجاد می شود.


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



باشه الان همه چی تموم شد! جاده مبارک!


آردوینو یک پلتفرم جهانی برای میکروکنترلرهای DIY است. سپرها (کارت های توسعه) و سنسورهای زیادی برای آن وجود دارد. این تنوع به شما امکان می دهد تعدادی پروژه جالب با هدف بهبود زندگی خود و افزایش راحتی آن ایجاد کنید. حوزه های کاربردی این برد نامحدود است: اتوماسیون، سیستم های امنیتی، سیستم های جمع آوری و تجزیه و تحلیل داده ها و غیره.

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

با آردوینو چه کاری می توانید انجام دهید؟

ربات جاروبرقی

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

برای مونتاژ آن شما نیاز دارید:

1. Arduino Pro-mini یا هر سایز مشابه و مناسب دیگری ...

2. اگر از Pro mini استفاده می کنید، آداپتور USB-TTL. اگر آردوینو نانو را انتخاب کردید، پس نیازی به آن نیست. قبلاً روی برد نصب شده است.

3. درایور L298N برای کنترل و معکوس کردن موتورهای DC مورد نیاز است.

4. موتورهای کوچک با گیربکس و چرخ.

5. 6 سنسور IR.

6. موتور برای توربین (بزرگتر).

7. خود توربین یا بهتر است بگوییم پروانه از جاروبرقی.

8. موتور برای برس (کوچک).

9. 2 سنسور برخورد.

10. 4 عدد باتری 18650.

11. 2 مبدل DC-DC (تقویت و کاهش).

13. کنترل کننده عملکرد (شارژ و دشارژ) باتری ها.

سیستم کنترل به شکل زیر است:

و این هم سیستم قدرت:

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

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

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

عکس نمونه ای از استفاده از یک LED RGB را نشان می دهد. برای کنترل نوار، به یک منبع تغذیه 12 ولت اضافی نیاز دارید، سپس آنها دروازه های ترانزیستورهای اثر میدان موجود در مدار را کنترل می کنند. جریان شارژ گیت توسط مقاومت های 10 کیلو اهم محدود می شود که بین پین آردوینو و گیت به صورت سری با آن نصب می شوند.

با استفاده از یک میکروکنترلر می توانید انجام دهید ریموت جهانی کنترل از راه دوراز طریق تلفن همراه کنترل می شود.

برای این شما نیاز خواهید داشت:

    آردوینو از هر مدلی؛

    گیرنده مادون قرمز TSOP1138;

    IR LED;

    ماژول بلوتوث HC-05 یا HC-06.

این پروژه می تواند کدها را از ریموت کارخانه بخواند و مقادیر آنها را ذخیره کند. پس از آن می توانید این محصول خانگی را از طریق بلوتوث کنترل کنید.

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

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

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

مراقب حیوانات خود باشید!

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

در این مورد، ابعاد دستگاه در اینجا نقش تعیین کننده ای دارد، زیرا حیوان نباید از آن احساس ناراحتی کند. برای ضبط داده ها، می توانید از آن برای کار با کارت های حافظه Micro-SD استفاده کنید.

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

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

برای غذا استفاده می شود عنصر لیتیوم یون, ظرفیت کم. باتری کوچک حدود 6 ساعت دوام می آورد.نویسنده در نهایت همه چیز را در یک شیشه تیک تاک برش داد. شایان ذکر است که آنتن جی‌پی‌اس باید به سمت بالا باشد تا خوانش‌های حسگر قابل اعتمادی داشته باشد.

سارق قفل رمزی

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

البته بعید است که چنین وسیله ای برای استفاده عملی مناسب باشد، اما یک وسیله نمایشی عالی است.

آردوینو در موسیقی

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

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

رتبه بندی قطعات:

    ترانزیستور نوع NPN، به عنوان مثال 2n3904 - 1 عدد.

    مقاومت 1 کیلو اهم (R2، R4، R5) - 3 عدد.

    330 اهم (R6) - 1 عدد.

    10 کیلو اهم (R1) - 1 عدد.

    100 کیلو اهم (R3) - 1 عدد.

    خازن الکترولیتی 3.3 uF - 1 pc.

برای اینکه پروژه کار کند، باید کتابخانه را برای گسترش سریع سری فوریه وصل کنید.

این کاملا ساده است و پروژه جالباز دسته "شما می توانید به دوستان خود لاف بزنید."

3 پروژه ربات

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

ربات BEAM در آردوینو

برای مونتاژ یک ربات راه رفتن چهار پا به موارد زیر نیاز دارید:

    برای حرکت دادن پاها به سروموتور نیاز دارید، به عنوان مثال، Tower Hobbies TS-53.

    یک قطعه سیم مسی با ضخامت متوسط ​​(به طوری که بتواند وزن سازه را تحمل کند و خم نشود، اما خیلی ضخیم نباشد، زیرا منطقی نیست).

    میکروکنترلر - برد AVR ATMega 8 یا آردوینو از هر مدلی.

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

در نتیجه دریافت خواهید کرد:

قابل ذکر است که این ربات رانندگی نمی کند، بلکه راه می رود، می تواند از ارتفاع 1 سانتی متری بالا برود.

بنا به دلایلی این پروژه مرا به یاد ربات کارتون Wall-e انداخت. ویژگی خاص آن استفاده از آن برای شارژ باتری است. مانند ماشین روی 4 چرخ حرکت می کند.

اجزای تشکیل دهنده آن:

    بطری پلاستیکی با اندازه مناسب؛

  • جامپرهای مامان و بابا;

    پنل خورشیدی با ولتاژ خروجی 6 ولت؛

    به عنوان اهدا کننده چرخ، موتور و سایر قطعات - یک ماشین رادیویی کنترل شده.

    دو سروو چرخش پیوسته؛

    دو سروو معمولی (180 درجه)؛

    نگهدارنده برای باتری های AA و برای "تاج"؛

    سنسور برخورد؛

    LED ها، مقاومت های نوری، مقاومت های ثابت 10 کیلو اهم - در مجموع 4 قطعه؛

    دیود 1n4001.

در اینجا اساس است - یک برد آردوینو با یک محافظ اولیه.

این همان چیزی است که قطعات یدکی از - چرخ ها به نظر می رسد.

ساختار تقریباً مونتاژ شده است، سنسورها نصب شده اند.

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

این بیشتر یک دستگاه CNC است تا یک ربات، اما پروژه بسیار سرگرم کننده است. این ماشین نقشه کشی 2 محوره است. در اینجا لیستی از اجزای اصلی که شامل آن است آورده شده است:

    درایوهای CD (DVD) - 2 عدد؛

    2 درایور برای موتورهای پله ای A498.

    سروو درایو MG90S;

    آردوینو اونو;

    منبع تغذیه 12 ولت؛

    قلم توپ و سایر عناصر طراحی.

درایو دیسک نوری از بلوک هایی با یک موتور پله ای و یک میله راهنما استفاده می کند که سر نوری را قرار می دهد. موتور، شفت و کالسکه از این بلوک ها حذف می شوند.

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

روند کامل مونتاژ و عملیات در این ویدئو نشان داده شده است.

همچنین ۱۶ پروژه برتر آردوینو از AlexGyver را ببینید:

نتیجه

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

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


همچنین می‌توانید پروژه‌های مختلفی را تکمیل کنید و از پتانسیل باورنکردنی آردوینو قدردانی کنید، که شما را به ایجاد و اختراع، تنها با تخیل محدود می‌کند. تمامی پروژه ها با استفاده از کنترلر Arduino UNO توسعه یافته اند.
برای مخترعان و برنامه نویسان جوان و همچنین تمام کسانی که به رباتیک علاقه دارند.

معرفی
این کتاب درباره چیست؟
این کتاب مال کیه؟
نحوه استفاده از کتاب

فصل 1: معرفی آردوینو
Arduino UNO: میکروکنترلر برای مبتدیان
سایر محصولات آردوینو
الکترونیک
مقررات ایمنی
در فصل بعد

فصل 2. چیدمان
مونتاژ نمودارهای الکتریکیبا استفاده از بردهای توسعه سوکت بدون لحیم کاری
© پروژه: LED چشمک زن روی تخته نان
© پروژه: سیگنالینگ لیزری
© پروژه: آشکارساز مادون قرمز
در فصل بعد

فصل 3. کار با آهن لحیم کاری
لوازم لحیم کاری
لحیم کاری
سیم کشی
تمیز کردن
3 پروژه: میز قهوه با نوار LED
در فصل بعد

فصل 4. راه اندازی یک اتصال بی سیم
ماژول های رادیویی XVee
بردهای آداپتور برای ماژول رادیویی XVee
اجزای ماژول رادیویی XVee
ماژول های بی سیم جایگزین
© پروژه: سوئیچینگ LED بی سیم
© پروژه: زنگ درب بی سیم.
در فصل بعد

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

فصل 6. ادراک جهان
درس: حسگرها
مقدمه ای بر حسگرها
© پروژه: "چراغ خلقی"
© پروژه: کرلبندینگ
در فصل بعد

فصل 7 مدیریت سیالات
درس: کنترل جریان سیال
© پروژه: ظرف تحت فشار
© پروژه: ربات آبیاری گیاهان
در فصل بعد

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

فصل 9. اکولوکاسیون اولتراسونیک
درس: تشخیص اولتراسوند
© پروژه: نور شب اولتراسونیک
© پروژه: اسباب بازی برای گربه ها
ماشین تراش
نکات ایمنی هنگام کار با ماشین تراش
در فصل بعد

فصل 10. تولید صدا
صداهای الکترونیکی
© پروژه: دکمه ملودیک
© پروژه: تولید کننده صدا
در فصل بعد

فصل 11. زمان بندی
سرور زمان دقیق
تایمر آردوینو
ماژول ساعت واقعی (RTC).
پروژه: ساعت دیجیتال
© پروژه: زنگ چینی "موسیقی باد"
ماشین های کنترل عددی کامپیوتری (CNC).
در فصل بعد

فصل 12. کار ایمنبا ولتاژ بالا
درس: مدیریت ولتاژ بالا
© پروژه: کنترلر فن
© پروژه: لامپ گدازه "بادی"
در فصل بعد

فصل 13. کنترل موتور
نحوه کنترل موتورها
موتور را با استفاده از TIP-120 روشن کنید
© پروژه: چراغ راهنما پله ای
© پروژه: "Bubblebot".
واژه نامه

ناشر: م.: آزمایشگاه دانش
سال: 2016
صفحات: 323
زبان روسی
فرمت: PDF
کیفیت: عالی
حجم: 131 مگابایت

دانلود Beiktal J. طراحی ربات با استفاده از آردوینو. اولین قدم ها

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



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

Codebender یک IDE مبتنی بر مرورگر است که ساده ترین راه برای برنامه نویسی ربات از طریق مرورگر است. شما باید روی دکمه "Run on Arduino" کلیک کنید و تمام است، ساده تر از این نیست.

باتری را داخل محفظه قرار دهید و یک بار دکمه عملکرد را فشار دهید و ربات شروع به حرکت به جلو می کند. برای توقف حرکت، دکمه را دوباره فشار دهید.

/* ربات پرهیز از موانع آردوینو با موتور سروو و حسگر اولتراسونیک HC-SR04 LED و buzzer */ //Libraries #include #include "Ultrasonic.h" //Constants const int button = 2; //پین دکمه به پین ​​2 const int led = 3; //پین LED (از طریق مقاومت) به پین ​​3 const int buzzer = 4; //پین توییتر به پین ​​4 const int motorA1= 6; //پین مثبت (+) موتور A به پایه 6 (PWM) (از ماژول L298!) const int motorA2= 9; //پایه منفی (-) موتور A به پایه 9 (PWM) const int motorB1=10; // پایه مثبت (+) موتور B به پایه 10 (PWM) const int motorB2=11; // پایه منفی (-) موتور B به پایه 11 (PWM) اولتراسونیک (A4 ,A5); //ایجاد یک شی اولتراسونیک (پین trig، echo pin) Servo myservo; //یک شی Servo برای کنترل سرووها ایجاد کنید //Variables int distance; //متغیر برای ذخیره فاصله تا شی int checkRight; int checkLeft; تابع int=0; //متغیر برای ذخیره تابع ربات: "1" - حرکت یا "0" - متوقف شد. متوقف شده توسط پیش فرض int buttonState=0; //متغیر برای ذخیره وضعیت دکمه. پیش فرض "0" int pos=90; //متغیر برای ذخیره موقعیت سروو. به طور پیش فرض 90 درجه - حسگر به جلو نگاه خواهد کرد int flag=0; //پرچم مفید برای ذخیره وضعیت دکمه هنگام آزاد شدن دکمه void setup() ( myservo.attach(5)؛ //پین سروو به پایه 5 متصل است myservo.write(pos)؛ // به سروو می گوید برای رفتن به موقعیت در حالت pinMode (دکمه INPUT_PULLUP) pinMode(motorA1,OUTPUT); OUTPUT(motorB2, OUTPUT) ) void loop() ( //بررسی دکمه حالتState = digitalRead(button)؛ بدون علامت فعلیMillis = millis(); //count... //تغییر عملکرد اصلی ( توقف/حرکت) هنگامی که دکمه فشار داده می شود اگر (buttonState = = LOW) (//اگر دکمه یک بار فشار داده شود... تاخیر (500)؛ اگر (پرچم == 0) (تابع = 1؛ پرچم=1؛ / /تغییر متغیر پرچم) else if (پرچم == 1)( / /اگر دکمه دو بار فشار داده شود تابع = 0؛ flag=0؛ //تغییر متغیر پرچم دوباره ) ) if (تابع == 0)( // اگر دکمه دو بار رها یا فشار داده شود، پس از آن: myservo.write(90) //set for servo 90° – سنسور به جلو نگاه می کند stop(); //روبات بدون حرکت می ماند noTone(buzzer); //بیپر خاموش است DigitalWrite(led, HIGH);// و دیود روشن است ) وگرنه اگر (عملکرد == 1)(//اگر دکمه فشار داده شود، پس: //خواندن فاصله... فاصله = ultrasonic.Ranging(CM) //نکته: از "CM" برای سانتی متر و "INC" برای اینچ استفاده کنید //بررسی اشیا. .. if (distance > 10)( forward(); //همه چیز واضح است، بیایید جلو برویم! noTone(buzzer); digitalWrite(led,LOW);<=10){ stop(); //Обнаружен объект! Останавливаемся и проверяем слева и справа лучший способ обхода! tone(buzzer,500); // издаём звук digitalWrite(led,HIGH); // включаем светодиод //Начинаем сканировать... for(pos = 0; pos =0; pos-=1){ //идём от 180 градусов к 0 myservo.write(pos); // говорим серво пройти на позицию в переменной "pos" delay(10); // ждём 10 мс, пока сервопривод достигнет нужной позиции } checkRight= ultrasonic.Ranging(CM); myservo.write(90); // Датчик снова смотрит вперёд //Принимаем решение – двигаться влево или вправо? if (checkLeft checkRight){ right(); delay(400); // задержка, меняем значение при необходимости, чтобы заставить робота повернуться. } else if (checkLeft <=10 && checkRight <=10){ backward(); //Дорога перекрыта... возвращаемся и идём налево;) left(); } } } } void forward(){ digitalWrite(motorA1, HIGH); digitalWrite(motorA2, LOW); digitalWrite(motorB1, HIGH); digitalWrite(motorB2, LOW); } void backward(){ digitalWrite(motorA1, LOW); digitalWrite(motorA2, HIGH); digitalWrite(motorB1, LOW); digitalWrite(motorB2, HIGH); } void left(){ digitalWrite(motorA1, HIGH); digitalWrite(motorA2, LOW); digitalWrite(motorB1, LOW); digitalWrite(motorB2, HIGH); } void right(){ digitalWrite(motorA1, LOW); digitalWrite(motorA2, HIGH); digitalWrite(motorB1, HIGH); digitalWrite(motorB2, LOW); } void stop(){ digitalWrite(motorA1, LOW); digitalWrite(motorA2, LOW); digitalWrite(motorB1, LOW); digitalWrite(motorB2, LOW); }

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

به عنوان مثال، با تغییر مقدار "10" فاصله اندازه گیری شده به یک مانع بر حسب سانتی متر، فاصله ای را که ربات آردوینو در جستجوی مانع اسکن می کند، کاهش یا افزایش می دهید.

اگر ربات حرکت نکند، می تواند کنتاکت موتورهای الکتریکی (motorA1 و motorA2 یا motorB1 و motorB2) را تغییر دهد.

مرحله 7: ربات کامل شده

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

اگر خطایی پیدا کردید، لطفاً یک متن را انتخاب کنید و Ctrl+Enter را فشار دهید.