ماژولهای بلوتوث آردوینو HC-05 ماژولهای بلوتوث برای هر پروژه Arduino هستند! اتصال و کد در Arduino IDE آسان است. در بیشتر پروژهها، ما معمولاً به HC05 به یک Arduino وصل میشویم و از آن برای ارتباط بیسیم با یک دستگاه هوشمند دیگر مانند تلفن همراه استفاده میکنیم. جهت خرید و اطلاع از قیمت ماژول بلوتوث به فروشگاه اینترنتی دیجی قطعه مراجعه کنید.
راه اندازی ماژول بلوتوث HC05 با آردوینو
این کار بسیار ساده است و ما پروژههای جالب بسیاری را با آن ساختهایم مانند ربات کنترل شده بلوتوث، کنترل صدای صوتی بلوتوث، اتوماسیون خانگی بلوتوث و غیره. با این وجود، آیا تاکنون نیاز به اتصال دو HC-05 به یکدیگر دارید؟ اتصال ماژول بلوتوث HC05 به تلفن هوشمند به آسانی نیست بلکه مراحل دیگری نیز در آن وجود دارد. این آموزش شما را از طریق این فرآیند راهنمایی میکند. پس بیایید بیمعطلی انجامش بدیم! همچنین میتوانید با کلیک روی لینک خرید ماژول وارد دسته بندی ماژول ها شوید.
ابزار لازم برای ساخت ماژول های بلوتوث آردوینو
- 2 عدد آردوینو (هر مدلی میتواند اینکار را انجام دهد؛ من از Arduino Uno R3 و Arduino Nano استفاده میکنم)
- 2 عدد ماژولهای بلوتوث HC05
- برد بورد
- سیمهای جامپر
- 2 عدد مقاومت 1 kΩ
- 2 عدد مقاومت 2 kΩ
دیتاشیت ماژول بلوتوث hc-05
مطالعه دیتاشیت ماژول بلوتوث hc-05 و بررسی نمودار پایهای ماژولهای بلوتوث آردوینو پیش از استفاده از آن ضروری است. 2 عدد از این مدارها را وصل کنید، یکی برای مستر (Master) و دیگری برای اسلیو (Slave). برای اتصالات، تمام کاری که ما در اینجا انجام میدهیم اتصال HC05 به آردوینو است. پین گیرنده (Rx) HC05 در محدوده 0V تا 3.3V عمل میکند و Arduino در محدوده 0V تا 5V کار میکند. بنابراین، ما از مقاومت (R1 و R2) برای ایجاد تقسیم ولتاژ استفاده خواهیم کرد تا خروجی 5 ولت آردوینو را به 3.3 ولت کاهش دهیم تا به ماژول HC05 آسیب نرسانیم.
ما در ماژولهای بلوتوث آردوینو از 1kΩ برای مقاومت R1 و 2.2KΩ برای مقاومت R2 استفاده میکنیم اما میتوانید از هر مقدار مقاومت استفاده کنید تا زمانی که R2 تقریباً دو برابر مقدار R1 باشد (R2 ≈ 2R1). به طور مشابه، مدار را برای مستر و اسلیو (Slave) تکرار کنید، مدار Arduino Master Bluetooth و مدار Arduino Slave Bluetooth در زیر نشان داده شده است.
پیکربندی ماژول بلوتوث HC05
در ماژولهای بلوتوث آردوینو این مرحله اضافی لازم برای اتصال دو ماژول HC05 به یکدیگر است. ما باید برخی از تنظیمات را در داخل ماژولهای بلوتوث آردوینو HC05 تغییر دهیم، برای این کار باید به حالت فرمان ماژول HC05 برویم و از طریق مانیتور سریال Arduino IDE دستورات را برای آن ارسال کنیم.
برای این کار باید یک کد Arduino بنویسیم تا دستورات از طریق مانیتور سریال به HC05 ارسال شود. کد پیکربندی ماژول HC05 را میتوانید در پایین همین صفحه پیدا کنید ، توضیح کد به شرح زیر است.
SoftwareSerial را به این کد اضافه کنید.
#include <SoftwareSerial.h>
شماره پین انتقال (Tx) و دریافت (Rx) را تعریف کنید. من از پین 2 برای Tx و پین 3 برای Rx استفاده میکنم.
#define tx 2
#define rx 3
اتصال بلوتوث را برایش اسم بگذارید (در اینجا من از configBt استفاده میکنم)، سپس به کتابخانه SoftwareSerial بگویید که کدام پین Tx است و کدام پین Rx است.
SoftwareSerial configBt(rx, tx); // RX, TX
برای پیکربندی ماژولهای بلوتوث آردوینو، Arduino باید دستورات خود را با سرعت 38400 باود ارسال کند. به طور مشابه، ما نرخ باود اتصال بلوتوث را 38400 baud تنظیم میکنیم. انتقال(Tx) را روی پین خروجی تنظیم کنید و گیرنده (Rx) را روی پین ورودی وارد کنید.
void setup()
{
Serial.begin(38400);
configBt.begin(38400);
pinMode(tx, OUTPUT);
pinMode(rx, INPUT);
}
در داخل حلقه برای همیشه قسمت اصلی کد را داریم. ایده در اینجا فرستادن هر آنچه در باکس متنی در مانیتور سریال تایپ شده است، به HC05 از طریق پین Tx آردوینو است. سپس هر چیزی که توسط HC05 در خروجی باشد را در مانیتور سریال نمایش دهید.
void loop()
{
if(configBt.available()) // if the HC05 is sending something…
{
Serial.print(configBt.readString()); // print in serial monitor
}
if(Serial.available()) // if serial monitor is outputting something…
{
configBt.write(Serial.read()); // write to Arduino’s Tx pin
}
}
ابتدا این کد را در Arduino متصل به ماژول بلوتوث آردوینو HC05 مستر بارگذاری کنید. پس از بارگذاری کد، کابل برق آردوینو را وصل کنید. دکمه را روی HC05 فشار داده و نگه دارید. اکنون کابل برق آردوینو را در حالی که هنوز دکمه HC05 را نگه داشتید وصل کنید. حالا میتوانید دکمه HC05 را آزاد کنید.
به این ترتیب است که شما وارد حالت AT HC05 میشوید. برای بررسی اینکه آیا شما این کار را در ماژولهای بلوتوث آردوینو صحیح انجام دادهاید، مطمئن شوید که چراغ قرمز موجود در HC05 تقریباً در هر ثانیه چشمک میزند (چشمکزن آهسته!) به طور معمول قبل از اتصال HC05 به هر دستگاه بلوتوث، نور قرمز با فرکانس بسیار بالا چشمک میزند (چشمکزن سریع!).
در ادامه، مانیتور سریال را باز کنید (دکمه مانیتور سریال در سمت راست بالای آردوینو IDE است). در گوشه پایین سمت راست پنجره سریال مانیتور، اگر قبلاً این کار را نکردهاید، مطمئن شوید که تنظیمات پایان خط را روی “هر دو NL و CL” قرار داده اید و میزان baud را به 38400 برسانید.
اکنون AT را در سریال تایپ کنید. اگر همه چیز خوب پیش برود، از HC05 نمایش داده شده در پنجره مانیتور سریال “خوب” دریافت خواهید کرد. تبریک میگویم! شما با موفقیت وارد حالت فرمان AT ماژول HC05 شدهاید.
تست ارتباط بلوتوث آردوینو
در مرحله اول، هر دو ماژول اصلی و اسلیو HC05 را برق دهید. بعد از گذشت زمان از برق و چند ثانیه، به چراغ قرمز در ماژول های HC05 نگاهی بیندازید.
معنی و مفهوم آن |
سرعت چراغ چشمکزن قرمز |
خوب نیست! این بدان معنی است که ماژولهای HC05 با یکدیگر در ارتباط نیستند! زمان عیب یابی! |
چشمکزن با فرکانس بسیار بالا (چشمکزن سریع!) |
خوب! شما آن را انجام دادهاید! اما ما هنوز باید یک بررسی دیگر را انجام دهیم تا مطمئن باشیم که این راهاندازی کار میکند! |
چشمکزن با فرکانس پایین (چشمکزن آهسته!) |
هنگامی که چراغ قرمز شما در یک فرکانس پایین چشمک میزند (چشمکزن کند!)، میتوانید مطمئن باشید که هر دو HC05 شما با یکدیگر متصل هستند، اما ما آزمایش نکردهایم که آیا دادهها میتوانند به صورت ارسالی بین مستر و اسلیو ارسال شوند. بعد از همه، این هدف اصلی در اینجا است.
کد زیر را در یکی از در ماژولهای بلوتوث آردوینو بارگذاری کنید، این کد برای تست فرستنده (Tx) است، دوباره کد کامل برای فرستنده و گیرنده را میتوانید در پایین همین صفحه پیدا کنید.
به دنبال کد قبلی، کتابخانه SoftwareSerial را به این کد اضافه میکنیم و شماره پین انتقال (Tx) و گیرنده (Rx) را تعریف میکنیم. سپس اتصال بلوتوث را نامگذاری کرده و شماره های پین Tx و Rx را به کتابخانه منتقل میکنیم.
#include <SoftwareSerial.h>
#define tx 2
#define rx 3
SoftwareSerial bt(rx,tx); //RX, TX
در عملکرد تنظیمات ماژولهای بلوتوث آردوینو، ما سرعت baud را برای مانیتور سریال Arduino و بلوتوث دوباره تنظیم میکنیم. آیا در اینجا تفاوت را با کد قبلی مشاهده میکنید؟ ما در حال استفاده از نرخ 9600 baud هستیم.
این میزان پیش فرض ارتباط برقرار شده از پیش تنظیم شده ماژول بلوتوث HC05 هنگام برقراری ارتباط با سایر دستگاههای بلوتوث است. بنابراین، توجه داشته باشید در ماژولهای بلوتوث آردوینو 38400 baud برای پیکربندی HC05 با دستورات AT است و 9600 baud نرخ پیش فرض baud ماژول HC05 است. سرانجام، دقیقاً مانند قبل از پین Tx به عنوان خروجی و پین Rx به عنوان ورودی پیکربندی میشود.
void setup()
{
Serial.begin(9600);
bt.begin(9600);
pinMode(tx, OUTPUT);
pinMode(rx, INPUT);
}
در داخل حلقه، تمام کاری که ما انجام میدهیم انتقال مقدار تصادفی “123” از طریق HC05 است.
void loop()
{
bt.write(123);
}
این کد را در آردوینو دیگر بارگذاری کنید، این کد برای تست دریافت (Rx) است:
دقیقاً مانند کدهای قبلی، ما کتابخانه SoftwareSerial را پیکربندی میکنیم.
#include
<SoftwareSerial.h>
#define tx 2
#define rx 3
SoftwareSerial bt(rx, tx); //RX, TX
در ماژولهای بلوتوث آردوینو کد در عملکرد تنظیم دقیقاً برابر با کد برای تست انتقال (Tx) است.
void setup()
{
Serial.begin(9600);
bt.begin(9600);
pinMode(tx, OUTPUT);
pinMode(rx, INPUT);
}
در حلقهی دائمی در ماژولهای بلوتوث آردوینو،، فقط باید آنچه را که از انتقالدهنده آردوینو ارسال میکنیم، دریافت کنیم. اگر بافر دریافت کننده اطلاعاتی را از HC05 دریافت کرده است، پس هر آنچه را در مانیتور سریال دریافت کردهاید، نمایش میدهید.
void loop()
{
if(bt.available()>0)
{
Serial.println(bt.read());
}
}
در ماژولهای بلوتوث آردوینو، بعد از اینکه کدهای مربوطه را برای هر آردوینو بارگذاری کردید، مانیتور سریال را برای دریافت Arduino باز کنید. اطمینان حاصل کنید که در مانیتور سریال نرخ baud به عنوان 9600 و خط منتهی به Newline را انتخاب کنید. اگر همه چیز خوب پیش میرود، باید 123 را ببینید.
توجه: در ماژولهای بلوتوث آردوینو اگر آردوینو را به همان لپتاپ منتقل و دریافت کردهاید، به همان لپتاپ متصل شدهاید، اطمینان حاصل کنید که پورت COM مناسب را در زیر TOOLS> PORT انتخاب کنید. شما باید به درگاه COM دریافت آردوینو متصل شوید.
اگر همه چیز خوب پیش میرود، ماژولهای بلوتوث آردوینو HC05 را تعویض کنید تا مطمئن شوید ارتباط از هر دو جهت ممکن است رخ دهد و ما انجامش دادهایم!
HC05 Configuration:
#include <SoftwareSerial.h>
#define tx 2
#define rx 3
SoftwareSerial configBt(rx, tx); // RX, TX
void setup()
{
Serial.begin(38400);
configBt.begin(38400);
pinMode(tx, OUTPUT);
pinMode(rx, INPUT);
}
void loop()
{
if(configBt.available()) //if the bluetooth module is sending something...
{
Serial.print(configBt.readString()); //print whatever the bluetooth module is sending
}
if(Serial.available()) //if we have typed anything into the serial monitor input text box...
{
configBt.write(Serial.read()); //write whatever we typed into the serial monitor input text box to the bluetooth module
}
}
Receiver:
#include <SoftwareSerial.h>
#define tx 2
#define rx 3
SoftwareSerial bt(rx, tx); //RX, TX
void setup()
{
Serial.begin(9600);
bt.begin(9600);
pinMode(tx, OUTPUT);
pinMode(rx, INPUT);
}
void loop()
{
if(bt.available()>0)
{
Serial.println(bt.read());
}
}
Sender:
#include <SoftwareSerial.h>
#define tx 2
#define rx 3
SoftwareSerial bt(rx,tx); //RX, TX
void setup()
{
Serial.begin(9600);
bt.begin(9600);
pinMode(tx, OUTPUT);
pinMode(rx, INPUT);
}
void loop()
{
bt.write(123);
}