این مطلب قسمت پانزدهم از آموزش جامع آردوینو (مبتدی و پیشرفته) است. در این قسمت میخواهیم به معرفی ماژول بلوتوث و آموزش نحوه استفاده از آن به کمک آردوینو بپردازیم. مهمترین استفاده از ماژول بلوتوث در پروژههای IoT و هوشمندسازی و زمانی است که بخواهید با تلفن همراه چیزی را کنترل کرده یا اطلاعات سنسورها را با آن ببینید. تلفنهای هوشمند این روزها چیزی بسیار بیشتر از یک تلفن برای برقراری تماس هستند و تقریبا در هر کاربردی که فکر کنید استفاده شدهاند. این انتظار زیادی هم نیست چرا که بسیاری از آنها در حال حاضر توان پردازشی یک رایانه شخصی را دارند و سنسورهای متنوعی بر روی آنها نصب شده است. کار با تلفنهای هوشمند جذاب است و این باعث شده است تا به کارگیری آنها در پروژههای هوشمندسازی باعث سادگی کاربری آنها شود.
قطعات مورد نیاز
معرفی پروتکل بلوتوث
بلوتوث یک پروتکل ارتباطی بیسیم است که مشابه WiFi و زیگبی در همان فرکانس 2.4Gz کار میکند. دستگاههای بلوتوث به روش Master-Slave با یکدیگر ارتباط دارند. در این ارتباط هر Slave تنها میتواند با یک Master ارتباط داشته باشد در حالی که Master میتواند همزمان به چندین Slave متصل باشد.
هر وسیله بلوتوث یک آدرس منحصر به فرد دارد که با آن شناسایی میشود. این آدرس به صورت یک عدد ۴۸ بیتی یا ١٢ کاراکتر Hex است و معمولا بر روی دستگاه نوشته شده است. ۶ کاراکتر سمت چپ این آدرس، شرکت سازنده را مشخص میکند و ۶ کاراکتر بعدی آدرس خاص آن وسیله است. برای ارتباط بین دو دستگاه بلوتوث باید یک دستگاه درخواست اتصال را فرستاده و دستگاه دیگر آن را تایید کند. پس از آن دو دستگاه به هم متصل شده و قادرند به یکدیگر اطلاعات فرستاده و دریافت کنند. دو دستگاه بلوتوث میتوانند به یکدیگر Pair شوند. این عمل معمولا از طریق احراز هویت با یک کد ۴ رقمی انجام میشود. پس از Pair شدن دو دستگاه، به محض اینکه در محدوده دسترس یکدیگر قرار بگیرند میتوانند بدون نیاز به دریافت تاییدیه به یکدیگر متصل شوند. پروتکل بلوتوث از زمان ابداع تاکنون بهبودهای زیادی داشته است. نسل ۴ بلوتوث در حال حاضر پرکاربردترین آنهاست. نسلهای مختلف بلوتوث بیشتر در محدوده برد و میزان مصرف انرژی و سرعت انتقال اطلاعات تفاوت دارند.
معرفی ماژول بلوتوث
با یک جستجوی ساده میتوانید انواعی از ماژولهای بلوتوث مناسب برای کارهای DIY را پیدا کنید. معمولا برای بلوتوث از ماژولهای سری HC مانند HC-05 یا HC-06 استفاده میشود. بر روی این ماژولها یک تراشه وجود دارد که پردازشهای لازم را انجام داده و اطلاعات را بین المان بلوتوث و پورت سریال منتقل میکند. این ماژول از بلوتوث نسخه BLE استفاده میکند، به همین دلیل اگر گوشی یا دستگاه بلوتوث قدیمی دارید، ممکن است نتوانید آنرا به این ماژول متصل کنید.
تفاوت اصلی HC-05 و HC-06 در این است که مورد اول میتواند در یک ارتباط بلوتوثی Master یا Slave باشد اما HC-06 تنها در حالت Slave عمل میکند. Master دستگاهی است که یک ارتباط بلوتوث را شروع میکند و Slave این ارتباط را میپذیرد. Slave نمیتواند درخواست ارتباط بدهد. در یک شبکه بلوتوثی، یک Master میتواند به چندین Slave متصل باشد. همچنین در شبکه وجود حداقل یک Master ضروری است؛ یعنی Slave ها نمیتوانند خودشان به هم وصل شوند. پس از اتصال دو دستگاه با بلوتوث به یکدیگر، هر دو میتوانند داده بفرستند و دریافت کنند و از این نظر تفاوتی با یکدیگر ندارند. از لحاظ ظاهری نیز این دو مدل تفاوتهای کوچکی با هم دارند. اولا اینکه HC-05 دارای 6 پین است در حالی که HC-06 4 پین دارد. علاوه بر آن بر روی HC-05 یک کلید فشاری وجود دارد که HC-06 این کلید را ندارد. در مورد هر کدام از بخشها در ادامه توضیح خواهم داد.
ماژول HC-05 دارای ۶ پایه است. خوشبختانه بر روی این ماژول عنوان هر پایه نوشته شده است. حتما شما هم تا حالا با مشکل تشخیص هر پایه در بعضی از ماژولها بر خوردهاید! دو تا از این پایهها تغذیه ماژول هستند (VCC و GND). ولتاژ تغذیه میتواند بین 3.6V تا 6V باشد. بنابراین وصل کردن آن به پایه 5V آردوینو انتخاب مناسبی است. دو پایه دیگر نیز مربوط به ارتباط سریال UART با میکروکنترلر هستند (Tx و Rx). پایه En فعالساز ماژول است. ماژول در حالت عادی فعال است؛ در صورتی که این پایه را به زمین (GND) وصل کنید، ماژول غیرفعال میشود. پایه آخر که State نام دارد که وضعیت ماژول را نشان میدهد. اگر ماژول به دستگاهی متصل شده باشد، این پایه High خواهد بود.
نکته مهم این است که پایههای سریال ماژول با ولتاژ 3.3V کار میکنند. بنابراین باید ولتاژ 5V پایه Tx آردوینو را قبل از اتصال به ماژول به ولتاژ 3.3V تبدیل کنید. برای این کار میتوانید از سه مقاومت 220Ω استفاده کنید.
تنظیمات اولیه ماژول بلوتوث
قبل از اینکه از ماژول بلوتوث استفاده کنید بهتر است، تنظیمات آن را شخصیسازی کنید. میتوانید نام بلوتوث و رمز عبور آن را تغییر دهید، سرعت انتقال اطلاعات را تنظیم کنید و بسیاری کارهای دیگر. انجام تنظیمات بلوتوث ضروری نیست و میتوانید با تنظیمات کارخانه هم کارتان را انجام دهید. انجام تنظیمات ماژول بلوتوث از طریق دستورهای AT انجام میشود که در آموزش کار با ماژولهای وایرلس معرفی شد. البته بلوتوث دستورهای خاص خودش را دارد ولی طرز کار مانند قبل است. این ماژول دو حالت کاری دارد؛ حالت اول که وضعیت ارسال و دریافت دادههای بلوتوث است و حالت دوم که وضعیت تنظیمات یا AT Mode است. در شرایط عادی ماژول در حالت اول قرار دارد اما اگر بخواهید تنظیمات آن را تغییر دهید باید وارد وضعیت AT شوید. برای وارد شدن به وضعیت تنظیمات، پایه VCC را قطع کنید. کلید فشاری ماژول را فشرده و نگه دارید. سپس در همین حالت پایه VCC را وصل کنید. حالا کلید را رها کنید. خواهید دید که LED موجود بر روی ماژول با سرعت کمتری (هر دو ثانیه یک بار) چشمک میزند. این نشان میدهد که وارد حالت تنظیمات ماژول شدهاید. اگر این کار را بخواهید با ماژول HC-06 انجام دهید کمی کار مشکلتری دارید. محلی که کلید فشاری روی HC-05 وجود داشت را این بار بر روی HC-06 پیدا کنید. میبینید که جای کلید خالی است و دو پایه SMD قلعی به جای آن قرار دارد. این دو پایه را به کمک یک قطعه سیم به هم وصل کنید و مراحل بالا را تکرار کنید.
حالا باید برنامهای برای آردوینو بنویسید که دستورات AT را دریافت کرده و به ماژول بفرستد و پاسخ آن را نیز گرفته و نمایش دهد. برای این کار میتوانید از برنامه زیر استفاده کنید:
/*
automee
Arduino Tutorial Series
Author: Davood Dorostkar
Website: www.automee.ir
*/
#include <SoftwareSerial.h>
SoftwareSerial bluetooth(2, 3); // RX | TX
void setup()
{
Serial.begin(38400);
bluetooth.begin(38400);
Serial.println("Enter AT commands!");
}
void loop()
{
if (bluetooth.available())
Serial.write(bluetooth.read());
if (Serial.available())
bluetooth.write(Serial.read());
}
از آنجایی که پورت سریال را برای ارسال و دریافت پیام از طریق سریال مانیتور لازم داریم، نمیتوانیم آن را به ماژول وصل کنیم. بنابراین ماژول را به پایههای ٢ و ٣ آردوینو وصل کرده و از کتابخانه SoftwareSerial که قبلا در آموزش ماژول وایرلس معرفی شد استفاده میکنیم.
حالا میتوانید دستورات AT را وارد کنید. جدول زیر بعضی دستورات مهم ماژول بلوتوث را نشان میدهد:
برای اطلاع از سایر دستورات ماژول بلوتوث میتوانید راهنمای دستورات AT را مطالعه کنید.
کنترل LED با بلوتوث تلفن همراه
استفاده از ماژول بلوتوث زمانی جذاب میشود که بتوانید آن را به تلفن همراهتان وصل کنید. استفاده از ماژول بلوتوث میتواند کاربری پروژههای هوشمند مانند خانه هوشمند و IoT را بسیار جذاب کند. کافیست سنسورها و ماژولها را به بلوتوث وصل کنید و با تلفن همراه دستورات را ارسال کنید یا مقادیر سنسورها را بخوانید. در این بخش میخواهیم یک پروژه ساده را به کمک ارتباط با موبایل انجام دهیم. قصد داریم یک LED را با گوشی همراه روشن و خاموش کنیم.
ماژول بلوتوث را مانند قبل به آردوینو وصل کنید. LED را نیز مانند شکل زیر به پین ۵ آردوینو وصل کنید.
حالا باید برنامهای بنویسید که دستورات را از طریق بلوتوث دریافت کرده و متناسب با آن LED را روشن و خاموش کند. برنامه زیر را بر روی آردوینو آپلود کنید:
/*
automee
Arduino Tutorial Series
Author: Davood Dorostkar
Website: www.automee.ir
*/
#include <SoftwareSerial.h>
#define ledPin 5
int lastState = 0;
SoftwareSerial bluetooth(2, 3);
void setup()
{
Serial.begin(38400);
bluetooth.begin(38400);
pinMode(ledPin, OUTPUT);
digitalWrite(ledPin, lastState);
}
void loop()
{
if (bluetooth.available() > 0)
{
int message = bluetooth.read();
message -= 48;
if (message != lastState)
{
digitalWrite(ledPin, message);
lastState = message;
}
}
}
این برنامه طوری نوشته شده که ابتدا به ماژول بلوتوث از طریق سریال وصل میشود. سپس در صورتی که دادهای از بلوتوث دریافت کند، فرمانی تولید میکند که LED را روشن و خاموش میکند. دادهای که نرمافزار موبایل میفرستد، کاراکترهای ١ یا ٠ است. کاراکترهای ٠ و ١ معادل اعداد ۴۸ و ۴۹ در سیستم ASCII هستند. بنابراین عدد ۴۸ را از معادل عددی کاراکترها کم میکنیم تا اعداد ٠ و ١ را داشته باشیم. اعداد ٠ و ١ معادل Low و High بوده و مستقیما میتوانیم آنها را به پایه دیجیتال بفرستیم.
همچنین حلقه شرطی تعریف شده در برنامه، چک میکند که آیا مقدار دریافتی از بلوتوث با مقدار فعلی LED متفاوت است و تصمیم میگیرد که آیا وضعیت LED باید تغییر کند یه خیر.
if (message != lastState)
{
digitalWrite(ledPin, message);
lastState = message;
}
نرم افزار اندروید
برای این پروژه نیاز به یک برنامه اندروید هم دارید که باید بر روی گوشی همراه نصب شود. این برنامه طوری طراحی شده است که ابتدا ماژول را جستجو کرده و به آن وصل میشود. سپس با فشردن کلیدهای On و Off مقادیر ١ و ٠ را به ماژول بلوتوث میفرستد. برای ساختن این برنامه باید آشنایی با برنامهنویسی برای اندروید داشته باشید. در اینجا قصد نداریم به توضیح برنامههای اندروید بپردازیم. میتوانید این اپلیکیشن را از لینک زیر دانلود کنید.
قبل از استفاده از نرمافزار باید ماژول را با گوشیتان Pair کنید. وارد قسمت تنظیمات بلوتوث شوید، ماژول را جستجو کنید. سپس آن را انتخاب کنید تا Pair شود.
حالا وارد برنامه شوید و از لیست دستگاههای موجود، ماژول را انتخاب کنید. اگر ماژول در دسترس نباشد، پیغام خطایی را مشاهده خواهید کرد. در صورتی که اتصال موفقیتآمیز باشد، مشاهده خواهید کرد که نحوه چشمک زدن LED موجود بر روی ماژول تغییر میکند.
حالا کلیدهای روشن و خاموش را بزنید و نتیجه را ببینید.
نتیجهگیری
در این آموزش با ماژول بلوتوث، نحوه راهاندازی و کاربرد آن آشنا شدید. برای اینکه پروژههای جذابتری با این ماژول بسازید، بد نیست برنامهنویسی برای اندروید را هم یاد بگیرید.
در آموزش بعدی، نحوه کار با ماژول اترنت را خواهید آموخت.
نظرات شما باعث بهبود محتوای آموزشی ما میشود. اگر این آموزش را دوست داشتید، همینطور اگر سوالی در مورد آن دارید، از شنیدن نظراتتان خوشحال خواهیم شد.