ساخت ماشین کنترلی با آردوینو و اندروید
محتویات
سلام. آموزش ساخت ماشین کنترلی و کنترل ماشین اسباب بازی با آردوینو و موبایل اندروید را آماده کردیم.
ساخت ماشین کنترلی با آردوینو
در این پروژه آردوینو قصد داریم یک خودروی کنترل شونده با بلوتوث طراحی کنیم. در اینجا ما از ماژول بلوتوث و یک برنامه اندروید برای کنترل اتومبیل استفاده کرده ایم.ماشین کنترلی ها اغلب با دکمه و دسته کنترل میشوند. اما در اینجا ما با استفاده از نرم افزار اندروید، جهت حرکت خودرو را تعیین میکنیم. ماژول بلوتوث روی ماشین قرار داده شده است که به بلوتوث گوشی شما متصل میشود دستورات را دریافت میکند. میتوانیم حرکت رو به جلو ، رو به عقب ، به راست و به چپ را با استفاده از این پروژه کنترل کنیم.
فیلم زیر به شما در درک نحوه کار پروژه ساخت ماشین کنترلی کمک میکند.
در این پروژه از یک ماشین اسباب بازی استفاده کرده ایم. این خودرو در قسمت جلو و عقب خود دارای دو موتور دی سی است. موتور سمت جلو برای هدایت اتومبیل به معنای چرخاندن سمت چپ یا راست (مانند ویژگی فرمان واقعی ماشین) استفاده می شود. و موتور عقب برای رانندگی خودرو در جهت عقب و جلو استفاده می شود. از ماژول بلوتوث برای دریافت فرمان از طریق تلفن اندرویدی و از Arduino UNO برای کنترل کل سیستم استفاده می شود.
این آموزش برای ساخت ماشین کنترلی ساده است، پیشنهاد میکنم مقاله ماشین کنترلی RC مسابقه ای را بخوانید.
نرم افزار کنترل ماشین با بلوتوث
نرم افزاری که روی تلفن شما نصب میشود میتواند Bluetooth Spp pro یا Bluetooth controller باشد که از پلی استور قابل دریافت است. لینک نصب در گوگل پلی
پس از نصب برنامه باید آن را باز کرده و سپس دستگاه بلوتوث را جستجو کرده و دستگاه بلوتوث مورد نظر خود را انتخاب کنید. و سپس کلیدها را پیکربندی کنید. در اینجا در این پروژه از برنامه Bluetooth controller استفاده کرده ایم.
- کنترلر بلوتوث را بارگیری و نصب کنید.
- بلوتوث تلفن همراه را روشن کنید.
- اکنون برنامه کنترل کننده بلوتوث را باز کنید
- اسکن را بزنید
- دستگاه بلوتوث مورد نظر خود را انتخاب کنید
اکنون کلیدها را با فشار دادن دکمه های تنظیم بر روی صفحه تنظیم کنید. برای تنظیم کلیدها باید “set button” را فشار داده و کلید را مطابق تصویر زیر درج کنید:
بعد از تنظیم کلیدها ، ok را فشار دهید.
وقتی دکمه رو به جلو را در برنامه کنترل کننده بلوتوث لمس می کنیم، ماشین شروع به حرکت می کند و به جلو حرکت می کند تا اینکه فرمان بعدی بیاید. و برای بقیه حرکت ها هم به همین صورت است. و با لمس دکمه توقف می توان خودرو را متوقف کرد.
مدار ماشین کنترل شونده با آردوینو و موبایل
شماتیک مدار پروژه ربات ماشین کنترلی در تصویر زیر نشان داده شده است.
شما می توانید پس از خرید به طور مستقیم از ماژول بلوتوث استفاده کنید، زیرا نیازی به تغییر تنظیمات ماژول بلوتوث نیست. نرخ پیش فرض baud ماژول بلوتوث 9600 bps است. شما فقط باید rx و tx را به آردوینو وصل کنید.
یک موتور درایور برای حرکت دادن ماشین به آردوینو متصل می شود. ورودی موتور درایور پین های 2 ، 7 ، 10 و 15 به ترتیب به پین دیجیتال شماره 12 ، 11 ، 10 و 9 آردوینو وصل شده اند. در اینجا ما از دو موتور DC برای حرکت اتومبیل استفاده کرده ایم که در آن یک موتور در پین خروجی 3 و 6 درایور موتور متصل شده است و یک موتور دیگر به 11 و 14 وصل می شود. همچنین از یک باتری 6 ولت نیز برای نیرو دادن به درایور موتور برای رانندگی موتور ها استفاده می شود. از باتری 9 ولت برای تغذیه مدار در پین Vin آردوینو استفاده می شود
قطعات مورد نیاز
- برد آردوینو UNO
- موتور DC
- ماژول بلوتوث HC-05
- درایور موتور L293D
- باتری 9 ولت و باتری 6 ولت
- ماشین اسباب بازی
کد کنترل ماشین اسباب بازی با آردوینو و گوشی اندروید
کد کامل پروژه در فایل دانلودی انتهای صفحه قرار داده شده است. در اینجا بعضی از قسمت های کد را توضیح میدهیم.
در برنامه اول از همه ما پین های خروجی برای موتورها را تعریف کرده ایم.
#define m11 11 // موتور عقب #define m12 12 #define m21 10 // موتور جلو #define m22 9
سپس نوع پین ها و نرخ ارتباط سریال را تعریف میکنیم. همانطور که گفته شد ماژول بلوتوث روی نرخ 9600 تنظیم است.
void setup() { Serial.begin(9600); // تنظیم نرخ ارتباط سریال pinMode(m11, OUTPUT); // تنظیم به عنوان خروجی pinMode(m12, OUTPUT); pinMode(m21, OUTPUT); pinMode(m22, OUTPUT); }
سپس ما تابعی را مینویسیم که در آن مقادیر دریافت شده توسط ماژول بلوتوث را بخوانیم و بر اساس آن عملکردی را اجرا کنیم.
void loop() { while(Serial.available()) { char ch=Serial.read(); str[i++]=ch; if(str[i-1]=='1') // اگر عدد 1 دریافت شود { Serial.println("Forward"); // حرکت رو به جلو forward(); i=0; } else if(str[i-1]=='2') // اگر عدد 2 دریافت شود { Serial.println("Left"); // حرکت رو به چپ right(); i=0; } else if(str[i-1]=='3') // اگر عدد 3 دریافت شود { Serial.println("Right"); // حرکت رو به راست left(); i=0; }
سپس ما برای جهت های مختلف خودرو توابعی را ایجاد میکنیم. پنج تابع برای ماشین تعریف کرده ایم. (رو به جلو، رو به عقب، راست، چپ، توقف). در جدول زیر میتوانید این موضوع را مشاهده کنید.
دکمه فشرده شده | موتور های جلو | موتور های عقب | |||
دکمه | M11 | M12 | M21 | M22 | عملکرد |
Stop | 0 | 0 | 0 | 0 | توقف |
Forward | 0 | 0 | 0 | 1 | رو به جلو |
Backward | 0 | 0 | 1 | 0 | رو به عقب |
Right | 1 | 0 | 0 | 1 | راست |
left | 0 | 1 | 0 | 1 | چپ |
موارد موجود در فایل : سورس کد ، شماتیک پروژه
برای دانلود فایل ها باید حساب کاربری داشته باشید ثبت نام / ورود
برنامه رو از کجا دانلود کنیم؟
لینک باز نمیشه
سلام
میتونید نقشه فنی بزاری این نقشه درست نمیفهمم که چ به چیه
سلام عزیز
اسم هر پایه و ماژول نوشته شده است کدام قسمت را متوجه نشدید؟
سلام خسته نباشید
چطور می تونم برای ماشین led جلو و عقب بزارم؟
سلام عزیز
میخواهید ال ای دی ها را کنترل کنید یا کاملا روشن باشند؟
سلام نه می خواهم کنترل بکنم ال ای دی هارو با نرم افزاری که روی گوشی نصب میشه
برای یادگیری اینکار میتوانید دوره آموزش آردوینو را مشاهده کنید
fread
sketch_sep18a:30:6: error: ‘right’ was not declared in this scope
right();
^~~~~
sketch_sep18a:37:7: error: ‘left’ was not declared in this scope
left();
^~~~
sketch_sep18a:39:5: error: expected ‘}’ at end of input
}
^
sketch_sep18a:39:5: error: expected ‘}’ at end of input
exit status 1
‘str’ was not declared in this scope
این همین ارور کدی است که در بالا گذاشتید مشکل چیه ارور STR
سلام عزیز
کد رو بررسی کردم اروری نداشت. احتمالا کد رو اشتباه آپلود کردید، دوباره کد رو به طور کامل کپی کنید و امتحان کنید
سلام خسته نباشید این ارور را میدهد
forward();
^~~~~~~
fread
APP2:32:6: error: ‘right’ was not declared in this scope
right();
^~~~~
APP2:39:7: error: ‘left’ was not declared in this scope
left();
^~~~
APP2:42:1: error: expected ‘}’ at end of input
}
^
exit status 1
‘str’ was not declared in this scope
سلام عزیز
کد رو اشتباه وارد کردید. کد کاملی که وارد کردید رو در انجمن بفرستید بررسی میشه
با سلام
برای فرمان ماشین از سرو متور استفاده شده؟؟؟
ایا میشه برای هر چرخ یک متور گذاشت یعنی هر چهار چرخ متحرک باشند و فرمان هم داشته باشه؟؟؟
۰۹۱۸۳۸۴۸۸۷۹
ممنون میشم راهنمای کنید
سلام عزیز
بله میشه، برای یادگیری برنامه نویسی آردوینو، دوره آردوینو رو مشاهده کنید
سلام ببخشید همانطور که شما گفتین من متن ارور را کپی و دوباره پیست کردن اما هنوز هم ارور میدهد برای کلمهstr
عزیز متن ارور رو اینجا ارسال کنید تا بررسی کنیم مشکل از چی هست
سلام آقای مهندس من مهدی فتح اله زاده و حدود شصت ساله . از شما تقاضایی دارم که امیدوارم اگر امکان دارد قبول زحمت فرمایید. من چند سالیست در زمینه الکترونیک ( بصورت تفننی ) فعالیت میکنم و مدتی است خودم را مشغول ساخت دو مدار که با استفاده از آردوینو کار میکنند کردم ولی متاسفانه شاید بدلیل کهولت سن و بازنشستگی توان درک برنامه نویسی آنرا ندارم هر چند من هر دو مدار را ساخته ام و آماده راه اندازی و مشکل اساسی نوشتن دو برنامه برای آنهاست لذا اگر پاسختان مثبت است اعلام فرمایید تا بنده فیلم نقشه وتصاویر مربوطه را قهر طریقی صلاح میدانید ارسال نمایم ضمنا جسارتا هزینه آها هر مقدار باشد قبل از انجام کار برایتان ارسال مینمایم.و در انتها در صورتی که جنابعالی مقدورتان نبود هر کدام از دوستان یا همکارانتان حاضر به همکاری باشند اعلام فرمایید.
باتشکر
میشه برای این پروژه به جای برد uno از تراشه ch340
استفاده کرد؟
سلام عزیز. از برد های آردوینویی که دارای تراشه ch340 هستند میتونید استفاده کنید.
سلام
خط str رو ایراد میگره
سلام جناب، متن ارور رو ارسال کنید.
سلام ببخشید میشه ساخت رادیو کنترل رودر کانال بذارید
ممنون میشم
سلام جناب، پاسختون رو قبلا دادم پروژه های مختلفی در رابطه با ارتباط های رادیویی در سایت موجود هست میتونید جستجو بفرمایید.
سلام موتور حتما باید گیربکس دار باشد ؟؟
سلام جناب، تفاوتی نداره اگر بدون گیربکس ماشینتون حرکت میکنه میتونید از موتور ساده استفاده کنید.
سلام ، خواهشا لطف کنید عکس از اتصال قطعات درونی ماشین هم بذارید . مخصوصا نحوه اتصال موتور به چرخ ها . ممنون
سلام جناب، اتصالات درونی بسیار ساده هست شما یک موتور با گیربکس به همراه تایر خریداری کنید میتونید به راحتی یک ماشین کنترلی رو طراحی کنید.
سلام فقط به یکی از چرخ های عقب و جلو موتور متصل است ؟؟
لطفا عکس قطعات را هم قرار بدید .ممنون.
سلام جناب. این مسئله بستگی به خودتون داره. میتونید موتور های سمت چپ و راست رو جداگانه در نظر بگیرید.
میشه یه سروو موتور هم اضافه کرد؟ چطوری؟
سلام جناب، بله میشه اضافه کرد. آموزش راه اندازی سروو موتور با آردوینو را مشاهده کنید.
از شیلد درایور L293D استفاده کردید یا IC L293D ؟؟؟
در واقع از موتور درایور L293D ای که در لینک زیر است استفاده کردید ؟؟
خیر در این پروژه از شیلد استفاده نشده و از آی سی موتور درایور L293D استفاده شده است.
سلام ببخشید به جای L293D از ماژول L298N می توان استفاده کرد ؟؟؟
و اینکه میشه لطفا عکس قطعات را هم قرار بدید .ممنون
سلام جناب، این دو قطعه تفاوت جزئی با هم دارند مشخصاتشون رو بررسی کنید با توجه به موتور هاتون انتخاب کنید.
سلام مهندس این شماره منه اگه لطف کنین نرم افزارشو برای من بفرستین من هرچی توی گوگل پلی گشتم نتونستمپیدا کنم اگه میشه بفرستین ممنونتون میشم
092**52
سلام جناب، لینک نرم افزار در گوگل پلی در پست قرار گرفت.
سلام وقت بخیر عذر میخوام چطوری میشه ولتاژ ورودی رسیور ماشین کنترلی رو افزایش بدیم بدون اینکه مدار از کار بیفته مثلا الان ولتاژ روی ۴.۸ ولته میخوام یه باتری ۷.۴ ولتی بزارم آیا قطعه ای رو باید عوض کنیم یا تقویت کنیم یا کلا شما میتونید همچین رسیوری که با باتری ۷.۴ ولتی کار کنه واسه من طراحی کنید ممنون میشم پاسخ بدین
موتور 3 ولت مشکلی نداره؟
سلام جناب. میتونید از موتور 3 ولت هم استفاده کنید.
سلام برای اینکه ماشین دنده عقب بیاد باید ماژول درایور موتور هم برنامه نویسی بشه ؟؟
سلام عزیز
فقط باید Input های موتور درایور را برعکس کنید. در دوره آموزش آردوینو به صورت کامل توضیح داده شده است.