آردوینو اپلیکیشن بلوتوث Bluetooth درایور موتور دسته‌بندی رباتیک سرگرمی نرم افزار پروژه های آردوینو

ساخت ربات بلوتوثی آردوینو با درایور L298N و ماژول بلوتوث HC05

نوشته شده توسط محمدرضا یاورزاده

L298N یکی از پرکابردترین درایورهاییست که می توان برای راه اندازی موتورهای DC با اردوینو از آن استفاده کرد. آموزش های متعددی در رابطه با راه اندازی این درایور با آردوینو در دیجی اسپارک منتشر شده است. اما در این آموزش قصد داریم تا با استفاده از درایور L298N و ماژول بلوتوث HC-05 دو موتور DC را از طریق اپلیکیشن در گوشی هوشمند کنترل کنیم. در یک کلام ربات بلوتوثی بسازیم. در ادامه این آموزش شیوه اتصالات و کدهای آردوینو را توضیح خواهیم داد. با مرجع تخصصی آردوینو به زبان فارسی، دیجی اسپارک همراه باشید.

 


قطعات مورد نیاز


  1. ماژول بلوتوث HC05
  2. برد اردوینو
  3. موتور گیربکس دار DC(حداقل دو عدد)
  4. تایر
  5. درایور موتور L298N

 


درایور 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 مراجعه کنید.

#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);
}

 

 


اپلیکشین موبایل


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

 

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

 

درباره نویسنده

محمدرضا یاورزاده

تبادل نظر و رفع عیب با ثبت دیدگاه

۷۹ دیدگاه

  • سلام
    رفیق دمت گرم کارت عالیه
    میشه یه ماژول دوربین اضافه کنی و آموزشش رو بزاری؟یا راهنما کنی چطور ماژول دوربین(اگه باشه) اضاف کنم به ربات؟

    • سلام
      من مدار رو بستم و برنامه هم هیچ مشکلی نداره
      وقتی به ماژول وصل میشم کد های ارسالی ماژول رو سریال مانیتور میاد و مشکلی نداره
      اما بهl298 فرمان نمیده

      • با سلام
        تغذیه l298 را بررسی کنید و مطمئن شوید ولتاژ کافی برای راه اندازی در اختیار درایور موتور قرار گرفته شده است.

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

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

  • سلام
    با تشکر از همه عوامل دیجی اسپارک
    من این رو ساختم و کد رو روی اردوینو اپلود کردم همه چی خوبه ولی یه ایراد کوچیک دارم اون هم اینه که وقتی اردوینو رو از کامپیوتر جدا میکنم دیگه ماژول بلوتوث به گوشی وصل نمیشه بنظرتون چیکار باید بکنم.

    • با سلام
      این مورد ارتباطی به اتصال به سیستم ندارد. تغذیه جداگانه را بررسی کنید.

  • سلام.
    من میخوام یه سروو بهش اضافه کنم ولی بلد نیستم میشه راهنمایی کنید.
    ممنون میشم راهنمایی کنید.

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

  • سلام
    ممنون از توجه شما، علامت سوال را در کجا مشاهده می کنید؟ در زمان متصل بودن موبایل خود سریال مانیتور اردوینو را چک کنید ببینید داده دریافت میشود یا خیر؟

  • من اگه بخوام این دستگاه رو به لامپ های اتاقم وصل بکنم و با بلوتوث خاموش و روشنشون بکنم باید چیکار بکنم لطفا راهنمایی بکنید مرسی ❤

  • با سلام و خسته نباشید خدمت شما
    آیا میشود برای منبع تغذیه از ۲ باتری لیتیومی ۱۸۶۵۰ استفاده شود؟ ممنون میشم بگید.

  • سلام خیر نیازی نیست چون ماژول بلوتوث از طریق پین های سریال به اردوینو متصل میشود.

  • سلام خسته نباشید ببخشید توی این مدار نیازی به برد بورد نیست؟ مقاومت یا ترانزیستور چی؟ اگه نیست به میکرو کنترل آسیب وارد نمیکنه؟

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

  • سلام
    وقت بخیر
    تشکر بابت مطالب مفیدتون
    میشه راهنمایی کنید چجوری به جای شیلد l298 از شیلد درایور l293 استفاده کنم؟
    ۴ تا موتور میخوام نصب کنم

  • با سلام خدمت شما. اگر امکانش هست میشه بفرمایید که پایه ی EN1 و پایه EN2 دقیقا کجای ماژول L298N قرار دارد
    ممنون میشم جواب بدید.
    باتشکر

  • طبق راهنمای شما مدار را نصب کردم.ولی در آپلود کردن کد در نرم افزار آردوینو با رور مواجه شدم.Arduino: 1.8.10 Hourly Build 2019/04/02 05:33 (Windows 10), Board: “Arduino/Genuino Uno”

    Sketch uses 3894 bytes (12%) of program storage space. Maximum is 32256 bytes.
    Global variables use 214 bytes (10%) of dynamic memory, leaving 1834 bytes for local variables. Maximum is 2048 bytes.
    An error occurred while uploading the sketch

    This report would have more information with
    “Show verbose output during compilation”
    option enabled in File -> Preferences.
    من باید چکار کنم

  • طبق راهنمای شما مدار را نصب کردم.ولی در آپلود کردن کد در نرم افزار آردوینو با رور مواجه شدم.Arduino: 1.8.10 Hourly Build 2019/04/02 05:33 (Windows 10), Board: “Arduino/Genuino Uno”

    Sketch uses 3894 bytes (12%) of program storage space. Maximum is 32256 bytes.
    Global variables use 214 bytes (10%) of dynamic memory, leaving 1834 bytes for local variables. Maximum is 2048 bytes.
    An error occurred while uploading the sketch

    This report would have more information with
    “Show verbose output during compilation”
    option enabled in File -> Preferences.
    من باید چکار کنم

  • سلام خیلی ممنون از اموزش خوبتون فقط وقتی من کد ها رو روی اردوینو IDE پیست میکنم خطا میده که متغیر E1 تعریف نشده
    این اتفاق برای همه متغیر ها میافته خواستم بپرس اگه خودم خواستم متغیر اضافه کنم باید از چه نوعی باشه؟int جواب میده؟

  • سلام توی قسمت اتصالات یه سری اتصالات به درایورL298N وصل شده و بعضی به درایور L268N میشه توضیح بدید دو تا درایور داره و یا اشتباه تایپی هست

  • سلام من کامل این مدار رو بستم
    فقط گوشیم ماژول hc05 رو پیدا میکنه
    رو اتصال رو هم اوکی میکنم رمز ۱۲۳۴ ر هم وارد میکنم اما اتصال برقرار نمیشه
    لطفا راهنمایی کنید مشکل از کجاس

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

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

  • سلام با l293 میشه انجام داد من برد I293دارم میخواستم با اون درست کنم میشه کدهاشو قرار بدید یا آموزش رو بزارید ممنون میشم

  • سلام من تمامی اتصالات را درست انجام میدهم اما وقتی دستوری را با گوشی اجام میدهم موتور ها کار نمیکند سریال مانیتور را هم چک کردم داده دریافت میشود را فقط علامت سوال میاد

  • با عرض سلام و خسته نباشید
    من این پروژه رو انجام دادم ولی وقتی تو گوشی دکمه رو میزنم l298 و موتور ها واکنشی نشون نمیدن ولی درون سریال مانیتور وقتی کلیک میکنم فقط علامت سوال میاد.
    مشکل از چیه؟
    ممنون میشم بگین.

    • سلام
      مهمترین نکته در استفاده از درایور موتور و موتور تامین تغذیه کافی است. اگر ولتاژ کافی نباشد، عملکرد مدار با اختلال رو به رو خواهد شد.
      بررسی و نتیجه را اعلام کنید.

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

    • با سلام
      سوالتان خیلی کلی است. تنظیمات مربوط به مد کاری ماژول بلوتوث را به درستی انجام داده اید؟ منظور این است که ماژول در حالت Pair قرار گرفته شده است؟

  • سلام من آرش هستم
    آپلود که میشه کد چراغ L روی برد روشن نمیشه و کلا دستور نمی گیره ولی کاملا گوشی به بلوتوث وصل میشه چه کار کنم؟

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

  • باسلام کد ها همه درست اپلود میشه وسیم کشی هم درست تغذیه هم درسته سریال هم دریافت میشه و علامت سواله ؟ و متور ها کار نمی کنند ممنون میشم جواب بدید

  • سلام جرا موتور درایور من روشن نشد
    من شک کردم سیم هارا اشتباه زم و دو تا سوال داشتم
    منظورتون از vcc چه بود همون منفی؟
    و منظورتون از en1 وen2 چه بود
    ممنون میشم اگه پاسخ بدید

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