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

آموزش راه اندازی ماژول بلوتوث HC-05 توسط برد آردوینو Arduino

آموزش ماژول بلوتوث HC-05 در آردوینو
نوشته شده توسط علیرضا قربانی

در این مطلب از سری آموزش های پروژه محور آردوینو  قصد داریم به   آموزش ساده راه اندای ماژول بلوتوث HC05  بپردازیم. در این پروژه با استفاده از یک گوشی موبایل دارای پلت فرم اندروید به ماژول HC-05  متصل میشویم و ۱۴ عدد LED را کنترل میکنیم. HC05 یک ماژول بلوتوث با امکانات فراوان می باشد و میتواند در  دو مد master و slave ، پورت سریال را  به صورت بی سیم در اختیار شما بگذارد از این رو می توانید از این ماژول  در طراحی خانه های هوشمند ، هدست های بی سیم و … استفاده کنید . با استفاده از ماژول HC05 میتوان دریتا را در فواصل معین ( ۱۰ الی ۳۳  متر) با استفاده از پروتکل بلوتوث دریافت و ارسال کرد. مزیتی که ماژول بلوتوث دارد می باشد این است که می تواند دیتا را  از آردوینو ، میکرو کنترلر ، تلفن  همراه و…… به  صورت سریال به ماژول انتقال داد و سپس خود ماژول دیتا را از طریق پروتکل بلوتوث ارسال خواهد کرد . همچنین می تواند دیتا را از طریق پرونکل بلوتوث دریافت کند و سپس آن ها را به سریال تبدیل کرده و به کاربر تحویل دهد.

 

ماژول های سری HC به دو صورت با پسوند اعداد زوج و فرد وارد بازار میشوند . ماژول ها با پسوند اعداد زوج فقط میتوانند در مد master یا slave باشند.مانند HC-04M که فقط در مد master می باشد. یا HC-04S که فقط میتواند در مد slave باشند.

 


مشخصات ماژول بلوتوث HC-05


  • ولتاز ۳٫۳ ولت
  •  فرکانس  ISM Band 2.4Hhz
  • حساسیت ۸۴dBm
  • بلوتوث کلاس ۲ ، برد ۱۰ الی ۳۳ متر
  • حداکثر سرعت ۲٫۱Mbps
  • مدولاسیون   GFSK
  • دارای مد master ,slave
  •  محدوده دمای کاری ۲۵- الی ۷۵ درجه سانتی گراد
  • پروتکل  ارتباطی USART

 


اتصالات ماژول HC-05 و برد آردوینو


پین های ماژول بلوتوث HC05 به  شکل زیر می باشند. ما نیز در این پروزه از پین های شماره ۱,۲,۱۲,۱۳,۳۱,۳۲ ماژول بلوتوث استفاده کرده ایم. نحوه ی اتصالات به شکل زیر است.

  • پین شماره ۱ ماژول به RX آردوینو متصل میشود
  • پین شماره ۲ ماژول به TX آردوینو متصل میشود
  • پین شماره ۱۲ تتغذیه ماژول میباشد و به ۳٫۳ متصل میشود(از اتصال این پین به ۵+ جدا خودداری نمایید)
  • پین شماره ۱۳ به زمین مدار نتصل میشود
  • پین شماره ۳۱ و ۳۲ نیز هر کدام به یک عدد LED متصل میشوند.
  • در این پروژه بین شماره ۳۴ را آزاد میگذاریم
آموزش ساده راه اندازی ماژول بلوتوث HC-05

LED متصل به پین شماره ۳۱ اگر با سرعت ۱Hz چشمک بزند به معنای ورود به مد  AT2 می fاشد و اگر با سرعت ۲ Hz چشمک بزند به معنای ورود به مد  AT1  می باشد.(در قسمت های بعدی به آموزش AT command می پردازیم) اگر LED ، دو بار در ثانیه به صورت آرام چشمک بزند بدین معنی است که ماژول آماده ارسال و دریافت داده از طریق پورت سریال می باشد .LED متصل به پین شماره ۳۲ نشان دهنده وضعیت pair (جفت شدن ) ماژول می باشد. قبل از pair شدن خاموش و پس از pair شدن روشن میشود.پین شماره ی ۳۴ نیز برای AT command استفاده میشود  که در قسمت های بعدی به آموزش آن ها می پردازیم.

 


برنامه نویسی ماژول HC-05


ابتدا برنامه bt simple terminal را به منظور کنترل ماژول hc05 توسط اپلیکیشن اندروید از لینک زیر دانلود نمایید و بر روی گوشی اندرویدیتان نصب کنید. دانلود bt simple terminal برنامه نویسی ماژول های بلوتوث همانند برنامه نویسی پورت سریال می باشد و در صورت تسلط به برنامه نویسی پورت سریال ، کار با ماژول HC05 برای شما بسیار ساده می باشد.

int data = 0;
void setup ()
  {
  Serial.begin (9600); //شروع ارتباط سریال با ماژول بلوتوث
  Serial.setTimeout (3);
  /*
  زمان متوقف شدن خواندن پورت سریال به صورت پیش فرض ۱ ثانیه می باشد که با به وسیله ای این تابع آن را به ۳ میلی ثانیه تغییر داده ایم
  */

  }

void loop ()

  {

    //چک میکنیم که  دیتا توسط بلوتوث دریافت شده باشد
  if ( Serial.available () > 0 )
    {
    //مقادیر دریافت شده را میخوانیم
    data = Serial.parseInt ();

    //اگر دیتا دریافتی برابر عدد ۱ باشد ، تمام ای ای دی ها را روشن میکنیم
    if ( data == 1 )
      {
      turnOn ();
      }
    //اگر دیتا دریافتی برابر عدد ۰ باشد  ، تمام ال ای دی ها را خاوش میکنیم
    else if ( data == 0 )
      {
      turnOFF ();
      }
    /*
    اگر موارد فوق اتفاق نیفتاد با استفاده از تابع زیر شماره هر پین وارد شده را دریافت میکنیم
    اگر پین مورد نظر در وضعیت صفر منطقی قرار داشت آن را یک میکنیم
    و اگر پین مورد نظر ر وضعیت ۱ منطقی قرار داشت آن را صفر میکنیم
    */

    else{
      control (data);
      }

    }
  }


//تابع صفر و یک کردن پین دریافتی
void control (int  pinnumber)
  {
  if ( digitalRead (pinnumber) == 0 )
    {

    pinMode (pinnumber, 1);
    digitalWrite (pinnumber, 1);
    }
  else  if ( digitalRead (pinnumber) == 1 )

    {
    digitalWrite (pinnumber, 0);
    }

  }

//تابع خاموش کردن تمام ال ای دی ها
void  turnOFF ()
  {
  for ( int i = 22; i< 35; i++ )
    {
    digitalWrite (i, 0);
    }
  }
//تابع روشن کرن تمام ال ای دی ها
void turnOn ()
  {
  for ( int i = 22; i < 35; i++ )
    {
    pinMode (i, 1);
    digitalWrite (i, 1);
    }
  }

[/restrict]

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

 


وسایل مورد نیاز


برد آردوینو Arduino MEGA2560

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

 

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

 

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

علیرضا قربانی

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

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

۷۴ دیدگاه

  • سلام
    ممنون بابت آموزش
    میشه مرحمت کنید at command های این ماژول رو هم آموزش بدین؟
    با تشکر

  • با سلام من یک ماژول گیرنده صوتی بلوتوثی
    SPK-8635-B Bluetooth audio receiver
    دارم که میخوام به وسیله اون اسپیکر بلوتوث دار درست کنم اما ره اندازی ماژول رو بلد نیستم اگه امکان داره کمکم کنید

  • سلام
    تشکر بابت سایت عالیتون
    نحوه اتصال ماژول اثرانگشت و همچنین ماژول وایرلس هم توضیحی بدید
    ممنون

  • اقا ترو خدا من چه جوری میتونم ماژول بلوتوث hc05رو ریست کنم ترو خدا جواب بدید خروجی در برد وجود داره یا نه که بتونم تنظیمات رو ریست کنم اگه امکان داره توضیح دهید

  • سلام آقای مهندس من می خوام بابلوتوث HC-05 دیتای TTL را به لپ تاپ بفرستم بدون استفاده از میکرو کنترلر آیا راهی هست؟ چگونه پیکر بندی کنم که اطلاعات از USB TO TTL به بلوتوث بره و با لپ تاپ مچ بشه. با تشکر

  • […] منم اوایلی که کار میکردم یه بار این اشتباه رو کردم دشواری نداره قط دیگه باید به ولتاژهایی که بهش میدید حسابی دقت کنید. یعنی منطق ttl آردوینو ۵ ولته اما منطق ttl بلوتوث ۳٫۳ هست بنابراین تقسیم مقاومتی رو انجام بدید چون اگر انجام ندید ممکنه باعث سوختن بلوتوثتون بشه اینجا روشراه اندازیش رو گفته فقط نمیدونم چرا تقسیم مقاومتی رو نگفته! HC05 ماژول بلوتوث به وسیله آردوینو – دیجی*اسپارک […]

  • سلام مهندس خسته نباشی من وقتی میخوام برنامه رو verfy کنم ارور میده و اشکال میگیره از خط ۱۷ برنامه که چک میکنه دیتا دریافت شده یانه و میگه ‘gt’ was not declared in this scope مشکل چیه عایا؟؟؟؟

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

    • سلام،این ماژول رو بنده با هدر خریدم،اصلا روی ۳.۳ ولت کار نمیکنه،کلی سر این جملتون که گفتین جدا توی ۵ ولت نزنین کلی ترسیدم و فکر کردم ماژول خراب شده در حالی که دیدم اصلا رو ۵ ولت کار میکنه،این جملتون رو لطفا تصحیح کنید،بردی که استفاده کردم هم uno r3 هست

      • با سلام
        کاربر گرامی دقت داشته باشید که ماژول بکار رفته در این آموزش از نوع SMD است. ولی اگر شما از نوع دیگر بلوتوث HC-05 که دارای برد راه انداز باشد استفاده کرده باشید. روی آن رگلاتور کاهنده وجود دارد.

  • با سلام
    اگر به کدهاى برنامه دقت کنید، پایه ٢٢ تا ٣۵ براى این منظور در نظر گرفته شده است. البته شما میتوانید با تغییراتى در برنامه پایه هاى دیگر را هم درگیر کنید.

  • سلام میخواستم بگم امکانش هست بوسیله ماژول بلوتوث یه موتور براشلسو کنترل کرد؟؟یچیز دیگه اینکه برا کنترل موتور براشلس خروجی میکرو باید pwmباشه و سوالی که واسم پیش میاد اگه بشه توسط ماژول بلوتوث کنترلش کنم بلوتوث پالس۰,۱ارسال میکنه روپایه یا برنامه ای هم هست که توسط بلوتوث بشه پالسpwmارسال کرد و خروجیمpwmبشه

  • اقا سلام
    من یه ماژول بلوتوث hc-05 دارم که وصل میشه به اردوینو uno و بعد به کنترلر حالا قراره بشه یه ماشین کنترلی فقط میخواستم بدونم ایا باید ماژول بلوتوث ژیکر بندی بشه
    اقا تروخدا کمک کنین بخدا ثواب داره من هنوز تازه دارم وارد این مباحث میشم

  • سلام من ماژول این بلوتوث رو به ۵ ولت وصل کردم امکانش هست سوخته باشه،
    اخه قبلا تو یک پروژه ای به پنج ولت وصلش کردم و اسم شو میاورد و پیر می شد( ال ای دی روی خود برد بلوتوث با فاصله خاموش روشن میشد) ولی واکنشی نسبت به دستورات ازسالی نمی داد ممکنه اینکه به خواطر اینکه به این ولتاژ متصلش کردم اسیب دیده باشه؟؟

    • درود برشما
      طبق ادعای سازنده ولتاژ مورد نیاز برای این برد ۳٫۳ ولت میباشد. به احتمال زیاد برد شما سوخته است. البته دقت کنید اگر از ماژول HC05 بدون برد راه انداز استفاده کرده‌اید، این مشکل وجود دارد. ولی مدل با برد راه انداز مشکلی ندارد.

      • باتوجه به اینکه،برد راه اندازش به صورت کارخانه ای روش لیم شده.پشت این برد راه انداز نوشته ۳٫۳v ولی جای پایه نوشته ۵v+ با این حال دستگاه باهش جفت میشه،کانکت هم میشه
        LED روی خود بردراه انداز خاموش روشن میشه بازم میشه گفت سوخته؟

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

  • سلام خسته نباشید
    من وقتی این کد هارو داخل اردوینو کپی میکردم ارور میده
    ‘gt’ was not declared in this scope
    اینو چجوری برطرف کنم ممنون

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

  • سلام.
    ببخشید چرا نمیشه با بلوتوث hc-05 برای روشن کردن چند LED استفاده کرد؟اصلا delay هم نوشتم پروژه ERROR میگیره.
    اینم کد برنامه :
    char data = 0;
    void setup() {

    Serial.begin(9600);
    pinMode(13, OUTPUT);
    pinMode(12, OUTPUT);

    }

    void loop() {

    if(Serial.available() > 0)
    data = Serial.read();
    Serial.print(data);
    Serial.print(“\n”);
    if(data == ‘1’)

    digitalWrite(13, HIGH);
    digitalWrite(12, HIGH);

    else if(data == ‘0’)
    digitalWrite(13, LOW);
    digitalWrite(12, LOW);

    }
    لطف کنید راهنماییم کنید.

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

  • با عرض سلام
    بنده میخواهم داده های اندازه گیری شده یک ماژول فشار BMP 180 که یک ماژول دیجیتالی است را از طریق ماژول بلوتوث hc-05 به سیستم منتقل کنم. یعنی در واقع میخوام به جای وصل کردن کابل USB به سیستم، به صورت وایرلس بتونم داده هایی که ماژول فشار اندازه گیری میکند را دریافت کنم و در نرم افزار آردوینو داده های دریافتی را به صورت Real Time، رسم کنم. (در حال حاضر همه این کارها را به صورت سیمی انجام داده ام، فقط میخواهم وایرلسش کنم)
    آیا چنین کاری ممکن است؟
    با تشکر

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

  • با سلام
    ضمن تشکر از پاسخ شما، جناب آقای طباطبایی ممکن است یک ایمیل به بنده ارسال بفرمائید.
    با تشکر

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

  • سلام ممنون از سایتتون
    ببخشید این ارور که نوشته gt was not declared in this scope
    اینو چطور رفعش کنم؟توی خط ۱۷ مشکل داره

  • با عرض سلام و خسته نباشید
    ببخشید یه سوال داشتم
    میخواستم بدونم اگه بخوام اسم بلوتوثی که به ماژول بلوتوثم وصل شده رو بفهمم و یه جا ذخیره اش کنم باید چیکار کنم ؟ با پیدا کردن اسمش مشکل دارم با ذخیره اش نه

          • اینو نصب کردم ولی توی کتابخونه اش هیچ کدی نبود که بشه باهاش اسم بلوتوثی که به ماژول بلوتوثم وصل شده رو بفهمم !
            لطفا کمکم کنید هرچه سریع تر باید اینو درستش کنم 🙁

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

  • سلام
    من از HC06استفاده می کنم ولی مشکل اینجاست که وقتی متن یا همون رشته از موبایل به پورت سریال میفرستم دریافت نمیکند و نمایش هم نمیدهد ولی وقتی از پورت سریال به موبایل یک رشته میفرستم دریافت و نمایش می دهد

  • سلام
    وقت بخیر ارور میده
    ‘gt’ was not declared in this scope
    lt’ was not declared in this scope
    لطفا برای اصلاح راهنمایی کنید’

  • با سلام
    یه سوال داشتم….بنده یه کدی نوشتم که در اون ماژول سه تا value دریافت میکنه…مثلا اعداد ۱٫٫۲٫٫۳ که اگر یک بود led روشن شه و دو بود led خاموش بشه و اگر سه بود led یه تابع اجرا کنه که کد اون تابع :
    (for (int i=0; i0; i-1)
    (digitalWrite(led, i

    حالا می خوام دوباره value بفرستم و led خاموش کنم….دستور فرستاده میشه اما led دستور تابع اجرا میکنه و تا برد ریست نشه دستور جدیدی نمیگیره

    راه حلی برای این حالت دارید که وقتی دستور جدیدی میاد اجرای تابع هرجا که بود قطع شه؟

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

  • سلام امکان استفاده از پروکسی های تلگرام به جای vpn server امکان پزیر نیست؟
    لطفا در مورد استفاده از vpn server و دستوراتش در اردوینو توضیح بدید تا بتونیم در ایران استفاده کنیم

  • آیا میشود یک HC-05 را با یک ESP32 CAM از طریق بلوتوث متصل کرد؟؟؟ من خیلی توی اینترنت گشت زدم ولی چیزی پیدا نکردم. آیا راه بهتری برای اتصال یک آردینو با یک ESP32 CAM هستش؟؟؟

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