آردوینو آردوینو Arduino Uno آموزش آردوینو بلوتوث Bluetooth پروژه های آردوینو

کنترل سرو موتور با ماژول بلوتوث HC-05 و برد آردوینو Arduino

نوشته شده توسط CiferTech

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

 


بلوتوث Bluetooth


بلوتوث (Bluetooth) نام یک استاندارد فناوری بی‌سیم با برد کم برای فرستادن پیام، عکس یا هر اطلاعات دیگر است که از لقب یک پادشاه منطقه اسکاندیناوی به نام هارالد بلاتند گرفته شده‌ است. ارتباط ماژول های بلوتوث با فرکانس‌های رادیویی صورت می پذیرد، هر ماژول بلوتوث دارای یک تراشه فرستنده یا گیرنده مربعی‌شکل است که در باند فرکانسی GHz ۲٫۴ تا GHz ۲٫۴۸ کار می‌کند. این فرکانس از این لحاظ انتخاب شده، که در سراسر جهان به‌طور رایگان در دسترس است و محدودیت‌های داشتن مجوز را ندارد.

 


ماژول بلوتوث HC-05


اگر بخواهیم بطور خلاصه این ماژول را معرفی کنیم می توان گفت، یک مبدل بلوتوث به سریال با پروتکل ارتباطی UART که از انواع آن می توان به HC-05 و HC-06 اشاره کرد، در پروتکل ارتباطی UART برقراری ارتباط توسط دو پایه rx و tx صورت می گیرد. بلوتوث معمولا در نوع BLE و بلوتوث های معمولی که در دستگاه های صوتی و… استفاده می شوند، شناخته شده است. بلوتوث های نوع BLE یا Bluetooth Low Energy بلوتوث های نسل جدید و کم مصرف هستند.

نحوه کنترل سروو با بلوتوث (HC-05)


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


در این آموزش از سروو موتور های SG90 استفاده کرده ایم و با استفاده از یک ماژول بلوتوث HC-05 و همینطور یک اپلیکیشن موبایل قادر به کنترل چهار سروو خواهیم بود. تنها کافیست با توجه به مدار موجود در انتهای اتصالات را برقرار کنید و با آپلود کد و نصب اپلیکیشن موبایل قادر به کنترل سروو موتور ها خواهید بود، توجه داشته باشید با استفاده از این اپلیکیشن قادر به کنترل ۴ سروو در مجموع خواهید بود.

نحوه کنترل سروو با بلوتوث (HC-05)

با استفاده از لینک زیر کتابخانه برد HC-05 را به نرم افزار Arduino IDE  خود اضافه کنید در ادامه از کد موجود در آموزش برای برقراری ارتباط با ماژول استفاده کنید همچنین با استفاده از لینک زیر اپلیکیشن مورد نیاز برای کنترل سروو موتور ها را دانلود کنید.

دانلود کتابخانه مربوط 
دانلود اپلیکیشن اندروید

 


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


ماژول بلوتوث HC-05

سروو موتور مدل SG90

برد آردوینو

 


اتصال بلوتوث HC-05 به سرو موتور


اتصالات مدار را طبق تصویر زیر برقرار کنید، به این صورت که با اتصال VCC و GND سروو موتور و ماژول بلوتوث به ۵v و GND آردوینو آنها را تغذیه کنید در ادامه خروجی سریال سروو را به دیجیتال ۳ آردوینو متصل کنید همچنین TX , RX ماژول بلوتوث که مربوط به ارتباط سریال می باشند را به ترتیب به پایه های ۱۱ و ۱۰ آردوینو متصل کنید.

 


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


در این کد با استفاده از کتابخانه های SoftwareSerial و Servo قادر به برقراری ارتباط بین سخت افزار و اپلیکیشن اندرویدی خواهیم بود، همان طور که پیش تر ذکر شد در این آموزش از ماژول HC-05 استفاده خواهیم کرد، که با ارتباط سریال بین ماژول و آردوینو قادر به کنترل آن و ارسال و دریافت دستورات خواهیم بود.

#include <SoftwareSerial.h> // TX RX software library for bluetooth

#include <Servo.h> // servo library 
Servo myservo1, myservo2, myservo3, myservo4; // servo name

int bluetoothTx = 10; // bluetooth tx to 10 pin
int bluetoothRx = 11; // bluetooth rx to 11 pin

SoftwareSerial bluetooth(bluetoothTx, bluetoothRx);

void setup()
{
  myservo1.attach(3); // attach servo signal wire to pin 9
  myservo2.attach(5);
  myservo3.attach(6);
  myservo4.attach(9);
  //Setup usb serial connection to computer
  Serial.begin(9600);

  //Setup Bluetooth serial connection to android
  bluetooth.begin(9600);
}

void loop()
{
  //Read from bluetooth and write to usb serial
  if(bluetooth.available()>= 2 )
  {
    unsigned int servopos = bluetooth.read();
    unsigned int servopos1 = bluetooth.read();
    unsigned int realservo = (servopos1 *256) + servopos;
    Serial.println(realservo);

    if (realservo >= 1000 && realservo <1180) {
      int servo1 = realservo;
      servo1 = map(servo1, 1000, 1180, 0, 180);
      myservo1.write(servo1);
      Serial.println("Servo 1 ON");
      delay(10);
    }
    if (realservo >= 2000 && realservo <2180) {
      int servo2 = realservo;
      servo2 = map(servo2, 2000, 2180, 0, 180);
      myservo2.write(servo2);
      Serial.println("Servo 2 ON");
      delay(10);
    }
    if (realservo >= 3000 && realservo <3180) {
      int servo3 = realservo;
      servo3 = map(servo3, 3000, 3180, 0, 180);
      myservo3.write(servo3);
      Serial.println("Servo 3 ON");
      delay(10);
    }
    if (realservo >= 4000 && realservo <4180) {
      int servo4 = realservo;
      servo4 = map(servo4, 4000, 4180, 0, 180);
      myservo4.write(servo4);
      Serial.println("Servo 4 ON");
      delay(10);
    }
  }
}

 

 


جمع بندی


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

 

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

 

در پایان نظرات و پیشنهادات خود را با ما درمیان بگذارید و با اشتراک گذاری این آموزش در شبکه های اجتماعی , از وبسایت دیجی اسپارک حمایت کنید.

 

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

CiferTech

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

۱۸ دیدگاه

  • سلام
    رفیق دارم یه ربات آتش نشان میسازم میشه یه برنامه گوشی معرفی کنی برا کنترلش؟با همین ماژول HC05 دمت گرم ممنونم

  • سلام
    دو تا سوال داشتم
    ۱٫ چرا rx tx ماژول بلوتوث رو به پایه های ۰ و ۱ آردوینو وصل نکردیم ؟
    ۲٫ ماژول بلوتوث احتیاج به اتصال به ۳٫۳ ولت یا ۵ ولت دارد ؟
    ۳٫ بعضا شنیده شده ماژول بلوتوث بعد از اتصال به آردوینو بخاطر ولتاژ نا مناسب سوخته ، میشه راجع به همین موضوع و اتصال مقاومت سر راه این ماژول توضیحات بفرمایید . اگر مقاومت لازم هست کدوم قسمت استفاده کنیم ؟ مابین ماژول و پایه های ولتاژ ؟ یا در مسیر tx rx

    • سلام، برد های آردوینو تنها یک ارتباط سریال ندارند برای مثال در آردوینو UNO پین های ۰و۱ … ۱۰و۱۱ سریال هستند. برای تغذیه از ۵ ولت استفاده کردم و مشکلی ایجاد نشد. مدار موجود در آموزش تست شده و نیازی به قطعات اضافی نیست. همچنین می‌توانید از دیگر آموزش هایی با این موضوع دیدن کنید.

  • سلام من پروژه ای دارم که باید ۲ سرو موتور همزمان کنترل بشه
    میشه با همین آموزش انجامش داد یا باید تغییر ایجاد کنم؟

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

  • سلام خییلی ممنون بابت اموزش با اردوینو نانو هم میشه این کارو انجام داد؟ و دستورات تغیری نمیکنه؟

  • سلام
    دلیل ارور Sketch uses 4814 bytes (14%) of program storage space. Maximum is 32256 bytes.
    Global variables use 399 bytes (19%) of dynamic memory, leaving 1649 bytes for local variables. Maximum is 2048 bytes.
    Failed uploading: no upload port provided
    چیه؟