L298N یکی از پرکابردترین درایورهاییست که می توان برای راه اندازی موتورهای DC با اردوینو از آن استفاده کرد. آموزش های متعددی در رابطه با راه اندازی این درایور با آردوینو در دیجی اسپارک منتشر شده است. اما در این آموزش قصد داریم تا با استفاده از درایور L298N و ماژول بلوتوث HC-05 دو موتور DC را از طریق اپلیکیشن در گوشی هوشمند کنترل کنیم. در یک کلام ربات بلوتوثی بسازیم. در ادامه این آموزش شیوه اتصالات و کدهای آردوینو را توضیح خواهیم داد. با مرجع تخصصی آردوینو به زبان فارسی، دیجی اسپارک همراه باشید.
قطعات مورد نیاز
درایور L298N ربات بلوتوثی
آردوینو به تنهایی نمی تواند جریان مورد نیاز برای حرکت موتورها را تامین کند زیرا حداکثر جریان خروجی اردینو ۴۰mA است و اتصال موتور باعث اسیب زدن به میکروکنترلر می شود. از این رو برای راه اندای موتورها با آردوینو از درایور موتور استفاده می شود. درایورها در یک بیان کلی باعث تقویت جریان ورودی به موتورها می شوند. ماژول درایو موتور L298N یک ماژول بسیار کاربردی برای مدیریت همزمان ۲ موتور یا بیشتر می باشد. از این ماژول برای راه اندازی استپر موتور(موتور پله ای ) نیز می توان استفاده کرد این ماژول به همراه هیت سینک مخصوص آی سی ارائه می شود تا بتوان حرارت ناشی از جریان دهی را کاهش داد. این درایور برای هر کانال مدیریت موتورها توانایی جریان دهی تا ۲ آمپر و ۳۵V را دارد و جریان مصرفی پردازش ان از ۰ تا ۳۶mA متغیر است.درایور L298N توانایی درایو و کنترل جریان و تغیر ولتاژ از طریق تغیر پالس PWM را دارد. این ماژول ۳ ترمینال ورودی (GND , 12-5V , 5V) را دارد. واضح است که پایه ۵V برای اتصال به VCC اردینو یا میکروکنترلر ،۱۲V-5V به VCC منبع تغذیه خارجی و GND برای اتصال GND مشترک اردینو و اداپتور تعبیه شده است. دو پین هدر برای فعال سازی پایه سیگنال PWM هر دو موتور قرار دارد. بر روی برود ۴ خروجی برای اتصال به میکرو کنترلر قرار گرفته شده است. و در نهایت بر روی این درایور موتور ۴ پین هدر برای ورودی و اتصال به دو موتور DCقرار گرفته شده است.
ماژول بلوتوث HC05
ماژول بلوتوث HC05 با بورد یک ماژول بلوتوث با امکانات فراوان میباشد.,ولتاژکاری آن ۳٫۳V تا ۶V و جریان کاری ۵mA است. توانایی پشتیبانی از دو مد master و slave را دارد و پورت سریال را هم به صورت بی سیم در اختیار شما میگذارد از این رو میتوانید از ماژول بلوتوث HC05 در طراحی خانههای هوشمند ، دستگاههای بی سیم و … استفاده کنید. با استفاده از ماژول HC05 Bluetooth میتوان دیتا را در فواصل معین از جمله ۱۰ تا ۳۳ متر با استفاده از پروتکل بلوتوث BT دریافت و ارسال کرد.این ماژول به سادگی به تلفن های هوشمند وصل می شود. از این ما جهت ما از این ماژول برای کنترل بی سیم ربات استفاده خواهیم کرد.
بدنه ربات و منبع تغذیه
اینکه بدنه و شاسی ربات بلوتوثی خود را چگونه طراحی میکنید به خلاقیت خودتان بستگی دارد. در نظر بگیرید درایور موتور میتواند تعدادی موتور DC را بسته به جریان مصرفی شان کنترل کند. بدین صورت که هر خروجی درایور یک سمت ربات را به حرکت در خواهد آورد. در نتیجه باید از حداقل دو موتور DC و عمدتا از زوج موتور استفاده کنید. حتما از موتور گیربکس دار در ربات استفاده کنید و اگر میخواهید سرعت ربات بیشتر باشد چرخهای پهنتری بکار بگیرید. سعی کنید از قطعاتی استفاده کنید که وزن کمتر ومقاومت بیشتری داشته باشند.
برد آردوینو به تنهایی نمی تواند جریان لازم موتور هارا تامین نماید از اینرو از درایور موتور در طراحی ربات استفاده می شود. شما به یک منبع تغذیه برای تامین جریان درایور نیاز خواهید داشت. این منبع میتواند باتری خشک یا لیتیمی یا حتی پاوربانک باشد. میتوانید از آداپتور هم به صورت سیمی استفاده کنید. همه این مسائل بسته به خلاقیت و قطعاتی که در اختیار دارید است. این نکته مهم را هم فراموش نکنید اتصالات اشتباه میتواند به قطعات شما اسیب بزند.
اتصالات مدار
اتصالات درایور
- GND ماژول L298N به GND اردوینو و منبع تغذیه ۱۲V یا ۵V
- ۱۲V ماژول L298N به VCC منبع تغذیه خارجی
- ۵V ماژول L298N به ۵V اردوینو
- EN1 ماژول L298N به پین دیجیتال ۱۰ اردوینو
- I1 ماژول L268N به پین دیجیتال ۸ اردوینو
- I2 ماژول L268N به پین دیجیتال ۹ اردوینو
- I3 ماژول L268N به پین دیجیتال ۱۲ اردوینو
- I4 ماژول L268N به پین دیجیتال ۱۳ اردوینو
- EN2 ماژول L298N به پین دیجیتال ۱۱ اردوینو
- به خروجی های ۱و۲ درایور موتور های خود را وصل کنید دقت کنید که جهت حرکت موتورها یکسان باشد.
اتصالات ماژول بلوتوث
- TX ماژول بلوتوث بهRX اردوینو
- RX ماژول بلوتوث به TX اردوینو
- VCC ماژول بلوتوث به ۵V اردوینو
- GND ماژول بلوتوث به GND اردوینو
کدهای آردوینو
چندنکته را قبل از آپلود کدها در نظر بگیرید. هنگام آپلود کدها به برد آردوینو، ماژول بلوتوث HC-05 را جداکنید یا به عبارتی ماژول بلوتوث را بعد از اپلود کدها وصل کنید. میتوانید از طریق سریال مانیتور دستورهای ارسال شده به ماژول بلوتوث را ببینید. چنانچه روش آپلود کدها را نمیدانید به آموزش کار با برد آردوینو Arduino و نصب نرم افزار Arduino IDE مراجعه کنید.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 |
#define E1 10 // Enable Pin for motor 1 #define E2 11 // Enable Pin for motor 2 #define I1 8 // Control pin 1 for motor 1 #define I2 9 // Control pin 2 for motor 1 #define I3 12 // Control pin 1 for motor 2 #define I4 13 // Control pin 2 for motor 2 String readString; int SPEED; void setup() { Serial.begin(38400); pinMode(E1, OUTPUT); pinMode(E2, OUTPUT); pinMode(I1, OUTPUT); pinMode(I2, OUTPUT); pinMode(I3, OUTPUT); pinMode(I4, OUTPUT); analogWrite(E1, 255); // Run in full speed analogWrite(E2, 255); // Run in full speed } void loop() { while (Serial.available()) { delay(50); char c = Serial.read(); readString += c; } if (readString.length() > 0) { Serial.println(readString); //main code that work repeated analogWrite(E1, 255); // Run in full speed analogWrite(E2, 255); // Run in full speed if (readString == "f") { //forward command forward(); } if (readString == "b") { //backward command backward(); } if (readString == "r") { //right command right(); } if (readString == "l") { //laft command left(); } if(readString == "s") { //stop command stoped(); } readString=""; } } void forward(void){ digitalWrite(I1, HIGH); digitalWrite(I2, LOW); digitalWrite(I3, HIGH); digitalWrite(I4, LOW); } void backward(void){ digitalWrite(I1, LOW); digitalWrite(I2, HIGH); digitalWrite(I3, LOW); digitalWrite(I4, HIGH); } void right(void){ digitalWrite(I1, LOW); digitalWrite(I2, HIGH); digitalWrite(I3, HIGH); digitalWrite(I4, LOW); } void left(void){ digitalWrite(I1, HIGH); digitalWrite(I2, LOW); digitalWrite(I3, LOW); digitalWrite(I4, HIGH); } void stoped(void){ digitalWrite(I1, LOW); digitalWrite(I2, LOW); digitalWrite(I3, LOW); digitalWrite(I4, LOW); } |
اپلیکشین موبایل
شما برای کنترل ربات از طریق بلوتوث به یک موبایل هوشمند اندروید و یک نرم افزار نیاز خواهید داشت.اپ های فراوانی را با این مضمون می توانید در گوگل پلی پیدا کنید دقت گنید اپ مورد نظر باید دستور های مدنظرشمارا طبق کدها ارسال نماید.کار با این اپلیکیشن بسیار ساده است امکاناتی نیز دارد که میتوانید بسته به خلاقیت و قطعات خود ربات بلوتوثی خود را ارتقا دهید.
چنانچه در مراحل راه اندازی و انجام این پروژه با مشکل مواجه شدید، بدون هیچ نگرانی در انتهای همین پست، به صورت ثبت نظر سوالتان را مطرح کنید. من در سریعترین زمان ممکن پاسخ رفع مشکل شما را خواهم داد. همچنین اگر ایرادی در کدها و یا مراحل اجرایی وجود دارند میتوانید از همین طریق اطلاع رسانی کنید.
سلام
رفیق دمت گرم کارت عالیه
میشه یه ماژول دوربین اضافه کنی و آموزشش رو بزاری؟یا راهنما کنی چطور ماژول دوربین(اگه باشه) اضاف کنم به ربات؟
با سلام
متشکرم از توجه شما،اینکه این اموزش رو تغییر بدم مستلزم داشتن تجهیزات مدنظر شما و کار روی اوناست و خب در این زمان متاسفانه مقدور نیست. اینکه چه دوربین بی سیمی می تونه در این نرمافزار جواب بده اطلاعی ندارم شاید دوربین های بی سیم کوادکوپتر ها جواب بده اما بنده این موضوع رو امتحان نکردم.
سلام
با تشکر از همه عوامل دیجی اسپارک
من این رو ساختم و کد رو روی اردوینو اپلود کردم همه چی خوبه ولی یه ایراد کوچیک دارم اون هم اینه که وقتی اردوینو رو از کامپیوتر جدا میکنم دیگه ماژول بلوتوث به گوشی وصل نمیشه بنظرتون چیکار باید بکنم.
با سلام
این مورد ارتباطی به اتصال به سیستم ندارد. تغذیه جداگانه را بررسی کنید.
سلام.
من میخوام یه سروو بهش اضافه کنم ولی بلد نیستم میشه راهنمایی کنید.
ممنون میشم راهنمایی کنید.
با سلام
برای این منظور به آموزش کنترل سرو موتور با ماژول بلوتوث HC-05 و برد آردوینو Arduino و یا آموزش کنترل سرو موتور Servo با استفاده از ماژول بلوتوث HC05 و برد آردوینو مراجعه کنید.
سلام خسته نباشید.من همه کار کردم حتی از رو گوشی ارسال میشه ول خب تو برنامه همش علامت سوال میاد و موتور هام روشن نمیشه چکار کنم؟؟
سلام
ممنون از توجه شما، علامت سوال را در کجا مشاهده می کنید؟ در زمان متصل بودن موبایل خود سریال مانیتور اردوینو را چک کنید ببینید داده دریافت میشود یا خیر؟
من اگه بخوام این دستگاه رو به لامپ های اتاقم وصل بکنم و با بلوتوث خاموش و روشنشون بکنم باید چیکار بکنم لطفا راهنمایی بکنید مرسی ❤
با سلام و خسته نباشید خدمت شما
آیا میشود برای منبع تغذیه از ۲ باتری لیتیومی ۱۸۶۵۰ استفاده شود؟ ممنون میشم بگید.
با سلام
بله امکان پذیر است. ولی ولتاژ خروجی را بایستی حتما متناسب با مصرف کننده تنظیم کنید.