در این آموزش یاد خواهیم گرفت که چگونه از ماژول HC-05، برای کنترل آردوینو از طریق ارتباط بلوتوث استفاده کنیم. در ادامه با ما باشید تا باهم اتصال ماژول بلوتوث HC-05 به آردوینو را یادبگیریم.
مروری اجمالی
در این آموزش دو مثال آورده شده، یکی کنترل آردوینو با استفاده از تلفن هوشمند و دیگری کنترل آردوینو با استفاده از لپتاپ یا رایانه شخصی. برای اینکه این آموزش بیش از حد طولانی نشود، در آموزش بعدی یاد خواهیم گرفت که چگونه میتوانیم ماژول بلوتوث HC-05 را پیکربندی کنیم. آنگاه، یک ارتباط بلوتوث بین دو برد جداگانه آردوینو به عنوان دیوایسهای master و slave برقرار کنیم.
قبل از شروع اولین مثال کنترل آردوینو با استفاده از تلفن هوشمند، اجازه دهید نگاهی دقیقتر به ماژول بلوتوث HC-05 بیندازیم. در مقایسه با ماژول HC-06، که فقط میتواند به عنوان Slave تنظیم شود؛ HC-05 را میتوان در حالت (Master) نیز قرار داد که امکان برقراری ارتباط بین دو برد جداگانه آردوینو را فراهم میکند. چندین نسخه مختلف از این ماژول وجود دارد. اما من نسخهای را که روی برد چاپی قرار میگیرد، توصیه میکنم. زیرا در این روش اتصال بسیار آسانتر برقرار میشود. ماژول HC-05 یک ماژول بلوتوث Serial Port Protocol) SPP) است، به این معنی که از طریق ارتباط سریال با آردوینو مرتبط میشود.
اجزای مورد نیاز
- ماژول بلوتوث HC-05
- برد آردوینو
- برد بورد و سیم
شماتیک مدار اتصال ماژول بلوتوث HC-05 به آردوینو
در اینجا، نحوه اتصال ماژول به برد آردوینو آورده شده است.
ماژول خاصی که در اختیار دارم، میتواند از 3.6 تا 6 ولت تغذیه شود. زیرا این دیوایس در بردی شامل یک تنظیمکننده ولتاژ است. با این حال، سطح ولتاژ منطقی پینهای داده 3.3 ولت است. بنابراین، خط بین Arduino TX (انتقال پین، که دارای خروجی 5 ولت است) و ماژول بلوتوث RX (گیرنده پین، که فقط 3.3 ولت را پشتیبانی میکند) نیاز دارند که از طریق تقسیم ولتاژ به هم متصل شوند تا دچار سوختگی ماژول نشوید. از طرف دیگر خط بین، پین ماژول بلوتوث TX و پین Arduino RX میتواند به طور مستقیم متصل شود. زیرا سیگنال 3.3 ولت از ماژول بلوتوث کافی است تا به عنوان یک منطق High در برد آردوینو پذیرفته شود.
نمونه کد ارتباطی بلوتوث آردوینو
اکنون آمادهایم تا کد آردوینو را برای فعال کردن ارتباط بین برد آردوینو و تلفن هوشمند تهیه کنیم. یک مثال ساده یعنی روشن و خاموش کردن یک LED را در نظر داریم، که برای درک نحوه ارتباطات کافی خواهد بود.
#define ledPin 7 int state = 0; void setup() { pinMode(ledPin, OUTPUT); digitalWrite(ledPin, LOW); Serial.begin(38400); // Default communication rate of the Bluetooth module } void loop() { if(Serial.available() > 0){ // Checks whether data is comming from the serial port state = Serial.read(); // Reads the data from the serial port } if (state == '0') { digitalWrite(ledPin, LOW); // Turn LED OFF Serial.println("LED: OFF"); // Send back, to the phone, the String "LED: ON" state = 0; } else if (state == '1') { digitalWrite(ledPin, HIGH); Serial.println("LED: ON");; state = 0; } }
شرح : ابتدا باید پینی را که LED ما به آن وصل میشود و متغیری که در آن دادههای حاصل از تلفن هوشمند را ذخیره خواهیم کرد، تعیین کنیم. در بخش راهاندازی باید پین LED را به عنوان خروجی تعریف کنیم و آن را در low تنظیم کنید. همانطورکه قبلاً نیز اشاره شد، از ارتباط سریال استفاده خواهیم کرد. بنابراین، باید ارتباط سریال را با نرخ 38400 baud شروع کنیم، که نرخ پیش فرض baud ماژول بلوتوث است. در بخش حلقه با تابع ()Serial.available بررسی خواهیم کرد که آیا اطلاعات در دسترس پورت سریال وجود دارد که باید خوانده شود. این بدان معنی است که وقتی دادهها را به ماژول بلوتوث میفرستیم، این عبارات صحیح خواهند بود. بنابراین، با استفاده از تابع ()Serial.read آن دادهها را میخوانیم و آن را در متغیر ” state ” قرار میدهیم. بنابراین، اگر آردوینو کاراکتر ‘0’ را دریافت کند، LED را خاموش میکند و با استفاده از تابع ()Serial.println، عبارت ” LED: OFF ” را به تلفن هوشمند، از طریق پورت سریال ارسال میکند. علاوهبر این، متغیر “state” را به 0 ریست میکنیم تا دو خط فوق، فقط یک بار اجرا شوند. در اینجا توجه داشته باشید که متغیر “state” عدد صحیح است. بنابراین، وقتی کاراکتر “0” را از تلفن هوشمند دریافت میکنیم، مقدار واقعی متغیر “state” عدد صحیح 48 است که مطابق با کاراکتر “0” با توجه به جدول ASCII است. به همین دلیل، در عبارت “if” متغیر “state” را با کاراکتر “0” مقایسه میکنیم. از طرف دیگر، اگر کارکتر دریافتی ‘1’ باشد، LED روشن میشود و عبارت ” LED: ON ” ارسال میکند.
اکنون کد آماده بارگزاری است. اما برای این کار باید خطوط TX و RX را جدا کنیم زیرا هنگام بارگزاری، آردوینو از ارتباط سریال استفاده میکند. بنابراین، پینهای RX (پین دیجیتال 0) و TX (پین دیجیتال 1) مشغول هستند. در صورت استفاده از سایر پینهای TX و RX از برد آردوینو، میتوانیم از این مرحله جلوگیری کنیم. اما در این صورت برای ارتباط سریال باید از کتابخانه SoftwareSerial.h استفاده کنیم.
اتصال تلفن هوشمند به ماژول بلوتوث HC-05 و آردوینو
اکنون آماده اتصال تلفنهای هوشمند به ماژول بلوتوث و آردوینو هستیم. کاری که ما باید در اینجا انجام دهیم، فعال کردن بلوتوث است تا تلفن هوشمند ماژول بلوتوث HC-05 را پیدا کند.
سپس باید دیوایسها را جفت کنیم و 1234 رمز پیشفرض ماژول HC-05 است. بعد از اینکه دستگاهها را جفت کردیم، به برنامهای جهت کنترل آردوینو نیاز داریم. برای این منظور اپلیکیشنهای زیادی در Play Store وجود دارد که با کد آردوینویی که نوشتیم، کار خواهد کرد. با این حال، من برنامه مختص خودم را برای این آموزش با استفاده از برنامه آنلاین MIT App Inventor تهیه کردم. این برنامه، یک برنامه کاربردی عالی و آسان برای ساختن برنامه اندرویدی است و در آموزش بعدی من، میتوانید راهنمای گام به گام و تفصیلی نحوه ساخت برنامه اندروید دلخواهتان برای پروژه آردوینو خود را پیدا کنید.
میتوانید برنامهای را که برای این مثال ساختهام، در اینجا دانلود کنید:
با استفاده از دکمه اتصال، تلفن هوشمند را به ماژول بلوتوث وصل خواهیم کرد و متن وضعیت موجود در زیر این دکمه، به ما میگوید که آیا با موفقیت به هم وصل شدهایم یا خیر. با استفاده از دکمههای “روشن” و “خاموش”، میتوانیم LED را روشن یا خاموش کنیم. متن بالای دکمهها، مطلبی است که آردوینو هنگام فشار دادن یک دکمه خاص، به تلفن هوشمند ارسال میکند.
کنترل آردوینو با استفاده از لپتاپ یا رایانه شخصی از طریق ارتباط بلوتوث
بیایید ببینیم چگونه میتوانیم آردوینو را از طریق بلوتوث با استفاده از لپتاپ یا رایانه شخصی کنترل کنیم. ابتدا باید لپتاپ خود را به ماژول بلوتوث HC-05 جفت کنیم و میتوانیم آن را از طریق تنظیمات بلوتوث لپتاپ انجام دهیم. لپتاپ، ماژول HC-05 را پیدا میکند و با استفاده از رمز عبور 1234، دیوایسها را جفت میکنیم.
هنگامی که دیوایسها را در دیوایس منیجر لپتاپ جفت میکنیم، در زیر شاخه “(Ports (COM & LPT”، دو ورودی جدید با نام “Standard Serial over Bluetooth link” ظاهر میشوند. از اینجا، میتوانیم شماره پورت سری COM را که از طریق آن دیوایسها ارتباط برقرار میکنند، مشاهده کنیم.
ما به همان نمونه قبلی اتکا میکنیم. LED را روشن و خاموش میکنیم و عبارتی را به لپتاپ ارسال میکنیم. بنابراین، از همان کد آردوینو همانطور که قبلاً توضیح داده شده، استفاده خواهیم کرد.
پردازش کد IDE
اکنون با استفاده از پردازش IDE، برنامهای برای کنترل آردوینو تهیه خواهیم کرد. کد را در اینجا مشاهده میکنید.
import processing.serial.*; Serial myPort; String ledStatus="LED: OFF"; void setup(){ size(450, 500); myPort = new Serial(this, "COM5", 38400); // Starts the serial communication myPort.bufferUntil('\n'); // Defines up to which character the data from the serial port will be read. The character '\n' or 'New Line' } void serialEvent (Serial myPort){ // Checks for available data in the Serial Port ledStatus = myPort.readStringUntil('\n'); //Reads the data sent from the Arduino (the String "LED: OFF/ON) and it puts into the "ledStatus" variable } void draw(){ background(237, 240, 241); fill(20, 160, 133); // Green Color stroke(33); strokeWeight(1); rect(50, 100, 150, 50, 10); // Turn ON Button rect(250, 100, 150, 50, 10); // Turn OFF Button fill(255); textSize(32); text("Turn ON",60, 135); text("Turn OFF", 255, 135); textSize(24); fill(33); text("Status:", 180, 200); textSize(30); textSize(16); text("Program made by Dejan Nedelkovski,\n www.HowToMechatronics.com", 80, 320); text(ledStatus, 155, 240); // Prints the string comming from the Arduino // If the button "Turn ON" is pressed if(mousePressed && mouseX>50 && mouseX<200 && mouseY>100 && mouseY<150){ myPort.write('1'); // Sends the character '1' and that will turn on the LED // Highlighs the buttons in red color when pressed stroke(255,0,0); strokeWeight(2); noFill(); rect(50, 100, 150, 50, 10); } // If the button "Turn OFF" is pressed if(mousePressed && mouseX>250 && mouseX<400 && mouseY>100 && mouseY<150){ myPort.write('0'); // Sends the character '0' and that will turn on the LED stroke(255,0,0); strokeWeight(2); noFill(); rect(250, 100, 150, 50, 10); } }
شرح : برای فعال کردن ارتباط سریال، باید کتابخانه سریال را وارد کنیم و یک مورد سریالی ایجاد کنیم. همچنین یک متغیر String را برای وضعیت led تعریف کنیم. در قسمت setup باید اندازه پنجره برنامه را تنظیم کرده و ارتباط سریال را شروع کنیم. در مورد شماره درگاه COM، در اینجا باید یکی از دو پورت COM را که قبلاً در دیوایس منیجر مشاهده کرده بودیم، امتحان کنیم. خط بعدی، بافر بودن پورت سریال را تعیین میکند و در مورد ما، آن را تا زمانیکه یک خط جدید وجود ندارد تعریف میکند. در واقع خط جدید زمانی موجود است که آردوینو هر بار به دلیل تابع ()println عبارت “LED: OFF” یا “LED ON” را ارسال میکند. در مرحله بعد، با استفاده از تابع ()serialEvent بررسی میکنیم که آیا دادههای موجود که باید خوانده شود، در پورت سریال وجود دارد. در این صورت، با استفاده از تابع ()readStringUntil، دادهای را که از درگاه سریال آردوینو ارسال شده است، میخوانیم. در این مورد عبارت “LED: OFF” یا “LED: ON” است.
در تابع ()main، که به طور مداوم تکرار میشود، تمام گرافیکها و تابعهای برنامه را تهیه میکنیم. بنابراین، ابتدا به تنظیم رنگ پسزمینه، رنگ کامل، اندازه و رنگ قلم نیاز داریم و با استفاده از تابع ()rect دو دکمه را ترسیم میکنیم. با استفاده از تابع ()text، تمام متن را چاپ میکنیم؛ از جمله عبارت ledStatus که از آردوینو آمده است. چیزی که اکنون باقیمانده است، عملکرد دکمهها است. بنابراین، با استفاده از اولین عبارت “if” ناحیه دکمه “Turn ON” را محدود میکنیم. بنابراین، وقتی دکمه را فشار دهید، کارکتر “1” از طریق پورت سریال به آردوینو ارسال میشود و LED را روشن میکند. از خطوط بعدی برای برجسته کردن دکمه هنگام فشار استفاده میشود. همین روش برای دکمه “Turn OFF” انجام میشود.
اکنون برنامه آماده است. بنابراین وقتی روی دکمه run کلیک میکنیم، این برنامه به طور خودکار ارتباط بلوتوث بین لپتاپ و آردوینو را فعال میکند. ماژول بلوتوث HC-05 هر دو ثانیه شروع به چشمک زدن میکند. این نشان میدهد ماژول متصل است و قادر خواهیم بود با استفاده از لپتاپ خود، LED را کنترل کنیم.
ویدیو عملکرد اتصال ماژول بلوتوث HC-05 به آردوینو
منبع: ترجمه از HowToMechatronic
پروژه های مرتبط به اتصال ماژول بلوتوث HC-05 به آردوینو
اگر این نوشته برایتان مفید بود لطفا کامنت بنویسید.
کاش آموزش اتصال به گوشی آیفون هم قرار میدادین..
بله کاش واقعا.. منم دنبالشم
یه برنامه پیدا کردم. اما بلوتوث آیفونم اصلا ماژول HC05 رو شناسایی نمی کنه
سلام
مرسی از آموزش ها
تو این آموزش، در بخش “کنترل آردوینو با استفاده از لپتاپ یا رایانه شخصی از طریق ارتباط بلوتوث” اونجا که پردازش کد IDE رو توضیح دادین ، یه کد نوشتید بعدش. اونجا رو من متوجه نشدم این کد رو کجا باید وارد کنیم. برنامه خاصی باید روی لپ تاپ نصب بشه؟
سلام وقتی من ماؤول بلوتوثم رو وقتی به آردینو وصل میکنم کلا یه چشمک میزنه بعد خاموش میشه هیچکاری هم نمیکنه وصل نمیشه چه مشکلی داره؟؟؟