آموزش آردوینوپروژه های آردوینو

راه اندازی ماژول بلوتوث با آردوینو (ارتباط با اندروید)

ارتباط بلوتوثی بین موبایل اندروید و برد آردوینو یکی از جذاب ترین پروژه های آردوینو است. در این مقاله نحوه برقراری ارتباط بین برد آردوینو و یک گوشی موبایل اندرویدی از طریق ماژول بلوتوث HC-05 را توضیح میدهیم.

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

چرا برای ارتباط از بلوتوث استفاده کنیم؟

بلوتوث یکی از روش های عالی برای ارتباط بی سیم است که در بسیاری از زمینه ها استفاده می شود. بلوتوث برق بسیار کمی مصرف می کند. در اینجا ما یک ماژول بلوتوث (HC-05) را با آردوینو Uno راه اندازی می کنیم.

قبل از شروع باید در مورد HC-05 بدانیم.

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

HC-05 یک ماژول بلوتوث است که می تواند دوطرفه ارتباط برقرار کند. ما می توانیم آن را با اکثر میکرو کنترلرها راه اندازی کنیم. زیرا این ماژول از طریق ارتباط سریال میتواند با هر میکروکنترلر و برد آردوینو که دارای واحد ارتباط سریال است ارتباط برقرار کنند. باود ریت پیشفرض این ماژول 9600 است اما میتوان باود ریت آن را تغییر داد. HC-05 می تواند در دو حالت کار کند. یکی حالت داده و دیگری حالت فرمان AT. هنگامی که پین ​​Enalbe روی ماژول”LOW” است، HC-05 در حالت داده است. اگر آن پین به عنوان “HIGH” تنظیم شود، ماژول در حالت فرمان AT است. در اینجا ما با ماژول در حالت داده کار می کنیم.

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

مشخصات فنی

  • ولتاژ کاری: 4 تا 6 ولت (معمولاً 5 ولت)
  • جریان عملیاتی: 30 میلی آمپر
  • برد: <100 متر
  • با ارتباط سریال و سازگار با TTL کار می کند
  • می توان به راحتی با لپ تاپ یا تلفن همراه با بلوتوث ارتباط برقرار کرد

مدار برد بلوتوث و آردوینو

اتصالات مدار این پروژه بسیار ساده است. شما فقط کافی است 4 سیم را طبق جدول زیر به هم متصل کنید.

HC-05 Arduino Uno
Tx Rx
Rx Tx
5v 5v
GND GND

کد پروژه ارتباط آردوینو با موبایل اندروید

این پروژه به هیچ کتابخانه اضافی احتیاج ندارد.

مرحله 1: ابتدا متغیری به نام “inputByte” را با نوع داده char ایجاد میکنیم و مقدار اولیه “inputByte” را “2” تنظیم میکنیم. با توجه به شرایطی که در ادامه تعریف میکنیم، زمانی که این داده برابر 2 باشد ال ای دی خاموش است. ما برنامه رو طوری تنظیم میکنیم که در زمان شروع ال ای دی خاموش باشد.

char inputByte='z';

مرحله 2: سپس باید قسمت setup را کدنویسی کنیم. HC-05 از ارتباط سریال استفاده میکند. بنابراین ارتباط سریال را با استفاده از تابع  Serial.begin() آغاز میکنیم. نرخ باود را روی 9600 تنظیم میکنیم. سپس پایه دیجیتال 13 را به عنوان پایه “OUTPUT” تنظیم کنید.

پین 13 در آردوینو به ال ای دی روی برد متصل است. ما در ابتدا میخواهیم برای تست عملکرد مدار همین ال ای دی را کنترل کنیم. در آینده میتوانید با تعیین کردن شرط های دیگر، پایه های دیگر را کنترل کنید.

void setup(){
Serial.begin(9600);
pinMode(13,OUTPUT);
}

مرحله 3: سپس قسمت loop را کدنویسی می کنم. از حلقه while و تابع “Serial.available()” استفاده میکنیم. این تابع تعداد بایت های موجود برای خواندن را برمی گرداند. سپس داده های موجود در پورت سریال را میخواین. برای اینکار از تابع “Serial.read()” استفاده می کنیم. سپس آن را در داده “inputByte” که ایجاد کردیم ذخیره میکنیم. سپس از یک شرط “if” استفاده میکنیم. اگر “inputByte”برابر با “1” باشد، پین 13 “HIGH” میشود و ال ای دی روشن میشود. در مرحله بعد از شرط “else if” برای خاموش کردن LED استفاده می کنم. شرط خاموش کردن LED به شکل “inputByte==2” نوشته میشود.

void loop() {
while(Serial.available()>0){
  inputByte= Serial.read();
  Serial.println(inputByte);
  if (inputByte=='1'){
  digitalWrite(13,HIGH);
  }
  else if (inputByte=='2'){
  digitalWrite(13,LOW);
  } 
  }
}

قسمت loop تکمیل شده است. کد کامل در فایل دانلودی انتهای صفحه قرار داده شده است.

نرم افزار اندروید ارتباط بلوتوث با آردوینو

حالا باید یک برنامه را در موبایل خود نصب کنید. در حقیقت میتوانید از هر برنامه بلوتوث سریالی که میخواهید استفاده کنید. کافی است به پلی استور بروید و Bluetooth Serial را سرچ کنید. یکی از نرم افزار ها را نصب کنید.

سپس به قسمت بلوتوث گوشی خود بروید و با ماژول بلوتوث Hc-05 جفت سازی (pair) را انجام دهید. اگر از شما رمز خواسته شد، 1234 را وارد کنید. در نهایت وارد اپلیکیشن بلوتوث سریال شوید و مشاهده میکنید که با ارسال عدد 1 ال ای دی روشن میشود و با ارسال عدد 2 ال ای دی خاموش میشود.

اگر در مورد این مطلب سوالی دارید در قسمت نظرات بپرسید

شما میتوانید پین های دیگر آردوینو را به عنوان خروجی تعریف کنید و با شرط هایی که ایجاد میکنید تعیین کنید کدام یک از پایه ها با دریافت چه مقداری روشن و خاموش شوند.

موارد موجود در فایل : سورس کامل

5 (3 نفر)

برای دریافت مطالب جدید کانال تلگرام یا پیج اینستاگرام ما را دنبال کنید.

محمد رحیمی

محمد رحیمی هستم. سعی میکنم در آیرنکس مطالب مفید قرار بدهم. سوالات مربوط به این مطلب را در قسمت نظرات همین مطلب اعلام کنید. سعی میکنم در اسرع وقت به نظرات شما پاسخ بدهم.

27 نظر

  1. سلام من چطوری میتوانم با ماژول بلوتوث از اردوینو به موبایل اطلاعات بفرستیم یعنی مثلا اطلاعات دما رو به گوشی ارسال کرد

    1. سلام عزیز
      در دوره آموزش آردوینو آموزش داده شده

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

    1. سلام عزیز
      برای مشاهده مواردی که کاملا توسط من تدریس و تهیه شده است، قسمت دوره های آموزشی سایت را مشاهده کنید.
      مطالب سایت مثل همین مقاله اکثرا از سایت های خارجی توسط من یا سایر مترجمان سایت ترجمه شده و در سایت قرار گرفته است.

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

  3. سلام
    من وقتی پایه rxd رو به tx و txd رو به rx وصل میکنم
    نمیتونم برنامه رو آپلود کنم
    میشه دقیق بگید پایه های ماژول رو به کدوم پایه برد وصل کنیم

    1. سلام عزیز
      ابتدا آپلود کنید سپس اتصالات را برقرار کنید.

  4. سلام مهندس من اگر بخواهم که وقتی بنویسم offلامپ خاموش بشه وقتی بنویسم on روشن بشه باید چیکار کنم ممنون میشم راهنماییم کنید

    1. سلام عزیز
      داده های دریافتی را کاراکتر به کاراکتر به یک رشته اضافه کنید سپس رشته ایجاد شده را با رشته on مقایسه کنید

  5. موقع آپلود کردن، ارور زیر را می دهد:

    avrdude: stk500_recv(): programmer is not responding
    avrdude: stk500_getsync() attempt 1 of 10: not in sync: resp=0x98

    1. سلام عزیز
      این ارور مربوط به کد نیست، مربوط به برقراری ارتباط کامپیوتر با برد شما هست. دقت کنید هیچ سیمی به پایه های 0 و 1 آردوینو متصل نباشد.

  6. C:\Users\intech\AppData\Local\Temp\.arduinoIDE-unsaved202317-2320-2qqud4.2a29k\sketch_feb7a\sketch_feb7a.ino:7:26: error: expected primary-expression before ‘)’ token
    while(Serial.available()>){
    ^
    C:\Users\intech\AppData\Local\Temp\.arduinoIDE-unsaved202317-2320-2qqud4.2a29k\sketch_feb7a\sketch_feb7a.ino:8:3: error: ‘inputByte’ was not declared in this scope
    inputByte= Serial.read();

    1. سلام عزیز
      مشکل از کد بود، کد صحیح آپلود شد میتوانید استفاده کنید.

    2. خیلی ممنون از پاسخ خوبتون

    3. سلام میشه فایل همین پروژه اما برای 10 ال ای دی رو راهنماییم کنید ؟ واقعا نیاز دارم

    4. فقط باید تعداد شرط ها را بالا ببرید و بگید مثلا کاراکتر a ارسال شد ال ای دی شماره n رو روشن کنه.
      برای یادگیری برنامه نویسی آردوینو میتونید دوره آموزش آردوینو را مشاهده کنید.

  7. سلام. وقت بخیر
    من یک پروژه با آردینو نوشتم که با بلوتوث بتونم کلید رله رو کنترل کنم. تو برنامه، یه بخش هایی رو بصورت تایمر نوشتم که مثلا بعد از 15دقیقه رله 1 روشن بشه. حالا اگر بخوام کد بصورتی باشه که مثلا بعد از گذشت 5دقیقه از زمان تایمر، اگر کد 00 رو از اپلکیشن بزنم، رله 1 خاموش بشه.. باید چیکار کنم.. هر چقدر کد رو دستکاری میکنم نمیشه

    1. سلام عزیز
      برای ایجاد تاخیر 15 دقیقه ای از delay استفاده نکنین
      سوال رو در انجمن مطرح کنید

  8. سلام
    موقع (verify) کردنه برنامه این حطا (expected unqualified-id before ‘c’) رو میده
    چیکارش کنم

    1. سلام عزیز
      متن ارور رو کامل ارسال کنید

    2. سلام وقت بخیر
      یک سوال دارم من مدار اردینو با بلوتوث درس ۲۰ دوره را دقیقا رسم میکنم ،برنامه هم همانطور که توضیح دادید نوشتم اما به بلوتوث وصل نمیشم و نمیتونم باهاش کار کنم
      میشه لطفا راهنمایی بیشتری کنید

    3. سلام عزیز
      برای پشتیبانی لطفا از طریق تیکت ها در ارتباط باشید.

    4. سلام وقت بخیر
      یک سوال دارم من مدار اردینو با بلوتوث درس ۲۰ دوره را دقیقا رسم میکنم ،برنامه هم همانطور که توضیح دادید نوشتم اما به بلوتوث وصل نمیشم .و نمیتونم باهاش کار کنم
      میشه لطفا راهنمایی بیشتری کنید

    5. سلام عزیز
      لطفا با توضیحات بیشتر در تیکت ها در ارتباط باشید تا بتونم شما را راهنمایی کنم

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

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *