با عرض سلام و خسته نباشید خدمت همه شما دوستان عزیز، امیدوارم حالتون خوب باشه و سالم و سرحال باشید. دراین آموزش قصدداریم با یکی از پرکاربردترین و مهمترین قطعات برای کنترل از راه دور در فواصل کوتاه آشنا شویم.
همه شما با بلوتوث آشنایی دارید آن هم بهدلیل استفاده از بلوتوث گوشی خود که به دستگاههایی مانند لپتاپ، اسپیکرهای بلوتوثی، پخشاتومبیل، انواع هدفونهای بیسیم و... متصل میشود. در این آموزش ما قصد داریم به شما آموزش دهیم که چگونه دستگاه یا ربات خود را به صورت بیسیم (wireless) به وسیله آردوینو کنترل کنید.
برخی از امکانات ماژول بلوتوث عبارتاند از:
· امکان کنترل قطعات با گوشی هوشمند به وسیله ماژول بلوتوث
· قابلیت کنترل قطعات با دو ماژول بلوتوث بدون دخالت گوشی هوشمند
با آموزشهای ما در مورد ماژول بلوتوث همراه باشید تا مهارت پیادهسازی موارد زیر را کسب کنید:
o کنترل الایدی از راه دور
o کنترل نور الایدی
o خواندن مقدار سنسورها از راه دور به وسیله گوشی هوشمند
o کنترل سرعت موتورها به وسیله گوشی هوشمند
o یادگیری راهاندازی انواع سنسورها با ارتباط سریال
o کنترل ربات با گوشی هوشمند وبلوتوث
o کنترل ربات بدون گوشی هوشمند و از راه دور
در تصویر بالا دوماژول بلوتوث hc05 و hc06 را مشاهده میکنید که ما دراین بخش با ماژول hc05 کار میکنیم. در ابتدا ما باید با پایههای بلوتوث آشنا شویم:
به پایههای HC 05 با دقت توجه کنید. میبینید که دو پایه با نامهای TX و RX دارد. آردوینو هم دو پایه به همین نامها دارد. پایههای 0 و 1 در آردوینوUNO و NANO بهترتیب پایههای RX و TX هستند.
درآموزشهای آردوینو تذکر داده شده بود که بهاین دو پایه هیچ قطعهای وصل نکنید. حال وقت آن رسیده که به توضیح این دو پایه بپردازیم. دو پایه rx , tx پایههای ارتباط سریال هستند. اما سوالی که مطرح میشود این است که ارتباط سریال چیست؟ ما در آردوینو مکرراً از این نوع ارتباط استفاده میکنیم. حتی خود شما نیز از این ارتباط بسیار استفاده کردهاید اما بهدلیل ندانستن این نوع ارتباط آن را کامل درک نکردهاید.
این ارتباط را ما هنگام پروگرام (آپلود) کردن برد آردوینو و همچنین نمایش دادهها در سریال مانیتور استفاده کردهایم. اگر دقت کرده باشید برد آردوینو به وسیله یک کابل به کامپیوتر متصل میشود این کابل از درون سختافزار به پایههای tx,rx آردوینو متصل میشود و زمانی که ما برنامه را پروگرام میکنیم، اطلاعات از طریق این دو پایه به آردوینو ارسال میشوند و هنگامی که نمایشگر سریال (serial monitor) خود را فعال میکنیم و مقدار یک متغیر را در سریال مانیتور نشان میدهیم دادهها از طریق همین دو پایه به رایانه منتقل میشوند و به همین دلیل میتوانیم مقدار دادهها را در سریال مانیتور رایانه خود مشاهده کنیم.
پس چون این دو پایه دائماً درگیر بودند، قطعهای به این دوپایه وصل نمیکردیم، زیرا با وصل کردن یک قطعه به این دو پایه این پورت مشغول میشد و دیگر نمیتوانستیم اطلاعاتی روی برد آردوینو خود پروگرام کنیم.
درآموزشهای آردوینو تذکر داده شده بود که بهاین دو پایه هیچ قطعهای وصل نکنید. حال وقت آن رسیده که به توضیح این دو پایه بپردازیم. دو پایه rx , tx پایههای ارتباط سریال هستند. اما سوالی که مطرح میشود این است که ارتباط سریال چیست؟ ما در آردوینو مکرراً از این نوع ارتباط استفاده میکنیم. حتی خود شما نیز از این ارتباط بسیار استفاده کردهاید اما بهدلیل ندانستن این نوع ارتباط آن را کامل درک نکردهاید.
این ارتباط را ما هنگام پروگرام (آپلود) کردن برد آردوینو و همچنین نمایش دادهها در سریال مانیتور استفاده کردهایم. اگر دقت کرده باشید برد آردوینو به وسیله یک کابل به کامپیوتر متصل میشود این کابل از درون سختافزار به پایههای tx,rx آردوینو متصل میشود و زمانی که ما برنامه را پروگرام میکنیم، اطلاعات از طریق این دو پایه به آردوینو ارسال میشوند و هنگامی که نمایشگر سریال (serial monitor) خود را فعال میکنیم و مقدار یک متغیر را در سریال مانیتور نشان میدهیم دادهها از طریق همین دو پایه به رایانه منتقل میشوند و به همین دلیل میتوانیم مقدار دادهها را در سریال مانیتور رایانه خود مشاهده کنیم.
پس چون این دو پایه دائماً درگیر بودند، قطعهای به این دوپایه وصل نمیکردیم، زیرا با وصل کردن یک قطعه به این دو پایه این پورت مشغول میشد و دیگر نمیتوانستیم اطلاعاتی روی برد آردوینو خود پروگرام کنیم.
Tx: فرستنده
Rx: گیرنده
دقت کنید که در شکل بالا فرستنده یک دستگاه به گیرنده دستگاه دیگر وصل میشود و بالعکس. به ارتباط بالا ارتباط سریال از نوع UART ( Universal Asynchronous Reseiver Transmitter ) گفته میشود.
در ماژول بلوتوث خود از این نوع ارتباط استفاده میکنیم. یکی از دو دستگاهی که با این ارتباط به یکدیگر متصل میشوند معمولا به عنوان master (فرمانده) و دیگری به عنوان slave (فرمانبر) استفاده میشوند.
MASTER: میتواند دستگاههای بلوتوث اطراف را جستوجو کرده و با دستگاهی خاص ارتباط برقرار کند.
SLAVE: فقط مورد جستوجو قرار گرفته و به درخواستهای ارتباط پاسخ مثبت یا منفی میدهد.
ارتباط سریال درواقع به این صورت است که دادهها از طریق یک خط به صورت سری (پشت سرهم) ارسال و دریافت میشوند. به بیانی دیگر داده اول ارسال میشود پساز آن منتظر میماند تا ارسال تکمیل شود و سپس داده بعدی ارسال میشود و به همین ترتیب این چرخه تکرار میشود.
این دادهها با یک سرعت مشخص منتقل میشوند. که در آردوینو این سرعت را به صورت زیر تعریف میکنیم:
Serial.begin(baudrate); این کد که در void setup آردوینو نوشته میشد سرعت تبادل اطلاعات را به ما نشان میدهد که معمولا از سرعت 9600 استفاده میکنیم.
در آردوینو UNO تنها دو پایه برای tx، rx وجود دارد، ممکن است این سوال برایتان مطرح شود که اگر این دو پایه برای ارتباط سریال کامپیوتر و پروگرام کردن استفاده میشوند پس بلوتوث خود را به کدام پایهها متصل کنیم؟
2 روش برای این کار وجود دارد:
· روش اول بهاین صورت است که شما ابتدا کد مورد نظر را بر روی برد آردوینو آپلود کنید سپس بلوتوث را به همان پایههای 0 و 1 آردوینو متصل کنید، دقت داشته باشید اگر ابتدا بلوتوث را به آردوینو متصل کنید چون پایههای tx, rx اشغال هستند کد آپلود نمیشود.
مشکل روش اول این است که هر بار برای آپلود کد ما باید ابتدا بلوتوث را جدا کرده سپس کد را آپلود کنیم. این مشکل در روش دوم حل میشود.
· روش دوم استفاده از سریال مجازی است. دراین روش ما با استفاده از کتابخانه SoftwareSerial دو پایه دیگر ( به عنوان مثال پایههای 2 و 3) آردوینو را تبدیل به rx، tx میکنیم و بلوتوث خود را به این دوپایه متصل میکنیم.
در ابتدا ما باید به کتابخانه SoftwareSerial مراجعه کنیم.
این کتابخانه معمولا نیاز به نصب در آردوینو ندارد چون از قبل در محیط آدوینو نصب شده است.اگر این کتابخانه در example های شما نبود باید آن را به آردوینو اضافه کنید، که نحوه اضافه کردن یک کتابخانه پیشاز این به شما آموزش داده شدهاست.
که در اینجا به توضیح مختصر آن میپردازیم:
در ابتدا برای اضافه کردن فایل کتابخانه باید آن کتابخانه را از سایت دانلود کنیم. با دانلود کردن آن یک فایل زیپ(zip) به ما داده میشود. در آردوینو خود بر روی گزینه scketch/include library/add zip library کلیک کرده و پساز آن فایلی که دانلود کرده بودیم را انتخاب میکنیم و تایید را میزنیم.
و اما راهاندازی ماژول بلوتوث به وسیله ارتباط سریال مجازی(SoftwareSerial):
در این جلسه یاد میآموزید که تنظیمات ماژول بلوتوث را چگونه انجام دهید. ماژول بلوتوث دو حالت کاری دارد:
1. حالت تنظیمات (AT COMMAND)
2. حالت اجرای دستورات
در این مرحله باید حالت AT command فعال کنیم و تنظیمات آن را انجام دهیم. در ابتدا پایههای Bluetooth و آردوینو را مطابق زیر به یکدیگر متصل خواهیم کرد:
همین که ماژول بلوتوث را به آردوینو متصل کنیم ماژول بلوتوث HC05 روشن میشود و الایدی روی ماژول با سرعت بالا شروع به چشمک زدن میکند. این الایدی نشاندهنده حالت کاری ماژول است بهاین صورت که اگر الایدی با سرعت بالا چشمک بزند به معنی قرار گرفتن در حالت ارسال و دریافت داده است و منتظر است یک دستگاه به آن متصل شود.
برایاینکه حالت کاری ماژول را به حالت تنظیمات یا AT COMMAND تبدیل کنیم باید تغذیه ماژول(VCC یا GND ) را از آردوینو جدا کرده و دکمهای که روی ماژول قرار دارد را فشار داده و دوباره تغذیه ماژول را هم زمان با اینکه دکمه را فشار دادهایم به آردوینو متصل کنیم.
پساز انجام مراحل بالا به الایدی توجه کنید، میبینید که سرعت چشمک زدن الایدی کم شده. این موضوع نشاندهنده آن است که وارد حالت AT COMMAND شدهایم. ( یا اینکه میتوانیم به جای در آوردن منبع تغذیه کابلی که به رایانه وصل شده را جدا کنیم و دست خود ار روی دکمه ماژول قرار داده و دوباره کابل را به رایانه متصل کنیم. )
حال که وارد حالت AT COMMAND شدهایم باید تنظیمات را روی برد اعمال کنیم. اما چگونه؟ به سادگی، ابتدا باید برای انتقال اطلاعات و تنظیمات AT COMMAND پایه EN ماژول را به 3.3 ولت آردوینو متصل کنیم. در شکل زیر سیمبندی حالت AT COMMAND را مشاهده میکنید.
سپس کد زیر را روی آن آپلود کنید:
پساز اینکه کد آپلود شد وارد سریال مانیتور شده و طبق مراحل زیر عمل میکنیم:
۱) baudrate تعریف شده برای حالت AT COMMAND ماژول بلوتوث HC 05 برابر است با 38400
۲)در حالت تنظیمات AT COMMAND باید این گزینه را انتخاب کنید.
۳)برای اینکه بدانید همه مراحل را درست انجام دادهاید با حروف بزرگ AT را دراینجا نوشته و منتظر تایید باشید.
۴)اگر بلافاصله پس از نوشتن AT روی صفحه کلید خود ENTER را بزنید به شما OK میدهد که به معنی درست بودن عملیات است و اکنون شما میتوانید دستورات خود را در قسمت مشخص شده در بالا (3) وارد کنید و ENTER یا SEND را بزنید تا دستورات اجرا شوند.
خب حالا که تنظیمات مربوط به حالت AT COMMAND انجام دادید نوبت به آن رسیده که تنظیمات را تغییر دهیم تا بهطور کامل برای ما قابل درک شود که این تنظیمات چهمواردی هستند و چگونه باید آنها را تغییر داد.
عملکرد دستور |
مقدار برگردانده شده |
AT COMMAND |
چک کردن ارتباط |
ok |
AT |
نشاندادن اسم ماژول |
+NAME:HC-05 |
AT+NAME? |
تغییر اسم ماژول به SAJJAD |
ok |
AT+NAME=SAJJAD |
نشاندادن BAUD RATE |
+UART:9600,0,0 |
AT+UART? |
تغییرBAUD RATE به 38400 |
ok |
AT+UART=38400,0,0 |
حالت SLAVE حالت MASTER حالتSLAVE LOOP |
+ROLE:0 +ROLE:1 +ROLE:2 |
AT+ROLE? |
انتخاب حالت SLAVE |
ok |
AT+ROLE=0 |
نشاندادن آدرس ماژول |
ADDR:21:13:2C026 + |
AT+ADDR? |
نشاندهنده ورژن ماژول |
VERSION:3.0-20170601 |
AT+VERSION? |
نشاندهنده رمز ماژول |
+PIN:"1234" |
AT+PSWD? |
بازیابی تنظیمات کارخانه |
ok |
AT+ORGL |
تغییر رمز به 123456 |
ok |
AT+PSWD=”123456” |
خروج از حالت AT COMMAND |
|
AT+RESET |
0:حالت دریافت و ارسال از یک ادرس مشخص 1:حالت ارسال و دریافت از هر ادرسی 2:حالت SLAVE LOOP
|
+CMODE:0
+CMODE:1
+CMODE:2 |
AT+CMODE? |
زمانی از این گزینه استفاده میکنیم که بخواهیم آدرس بلوتوث SLAVE را بر روی بلوتوث MASTER ثابت کنیم تا فقط به همان SLAVE متصل شود. (آدرس SLAVE دراین MASTER نوشته میشود.) برای MASTER نوشته میشود که حالت آن هم (CMODE=0) باشد |
+BIND:0:0:0 |
AT+BIND? |
AT COMMANDهای بسیاری برای HC 05 وجود دارد که هر کدام کار خاصی را انجام میدهند ما دراینجا تنها به معرفی چند مورد اکتفا کردیم. برای آشنایی بیشتر با سایر AT COMMANDها کافی است که درگوگل سرچ کنیم و آنها را مطالعه کنیم.
در بالا آموختید که چگونه دستورات AT COMMAND را برای ماژول بلوتوث hc05 خود فعال کنید و با نوشتن دستورات مختلف توانستید حالات ماژول خود را تغییر دهید. برای مثال با نوشتن دستور AT+NAME=SAJJAD اسم ماژول به SAJJAD تغییر میکند. با نوشتن دستور AT+UART میتوانیم مقدار BAUDRATE برای ماژول بلوتوث را مشاهده کنیم.
نکته: دقت کنید که برای نوشتن AT COMMAND حتما ما باید در کد خود BAUDRATE را 38400 قرار دهیم و مقدار BAUDRATE ی که در AT+UART دریافت میکنیم برای ارسال و دریافت اطلاعات از طریق گوشی هوشمند شماست. در ادامه بیشتر با این موضوع آشنا خواهید شد.
در این جلسه قصد داریم یک الایدی را با گوشی هوشمند خود کنترل کنیم. برای انجام پروژههایی با ماژول بلوتوث اجرا میشوند، باید مسیر را برای خود کاملا شناخته شده بدانید. از قبل تمام جوانب را بررسی کنید و گام به گام مراحل پیشرو را متناسب با پروژه خود اجرا کنید:
گام اول: همیشه اول بار این چند مورد را بررسی کنید :
· ابتدا بررسی کنید که ماژول باید MASTER باشد یا SLAVE؟
· نام ماژول و رمزش چیست؟
· BAUDRATE این ماژول چقدر است؟
· میخواهیم این ماژول تنها به یک دستگاه مشخص متصل شود یا به هر دستگاهی؟
همه موارد بالا در قسمت AT COMMAND باید انجام شوند.
گام دوم : انجام تنظیمات روی گوشی هوشمند خود
گام سوم: سیمبندی و اجرای پروژه
به عنوان مثال من قصد دارم با استفاده از یک کلید در گوشی موبایل خود یک الایدی را خاموش و روشن کنم.
در ابتدا با توجه به مطالب گفته شده در بالا تنظیمات AT COMMAND را فعال خواهم کرد. سپس در بخش نوشتن تنظیمات عبارات زیر را برای دستورات خود اعمال خواهم کرد:
· چک کردن اتصال: AT
· تغییر اسم ماژول به HC05: AT+NAME=HC05
· مشاهده BAUDRATE ماژول : AT+UART
· تغییر BAUDRATE به 38400: AT+UART=38400,0,0
· مشاهده رمز ماژول: AT+PSWD
· چون میخواهیم دستگاه دیگری به ماژول وصل شود (گوشی هوشمند به بلوتوث وصل شود) باید حالت آن را SLAVE قرار دهیم که مورد جستوجو قرار بگیرد: AT+ROLE=0
· دقت کنید که تنظیمات اولیه ماژول بلوتوث به گونهای است که به صورت خودکار در حالت SLAVE قراردارد.
پساز آن که تنظیمات بالا را اعمال کردیم ماژول را از حالت AT COMMAND درآورده و در حالت آماده برای اتصال به گوشی هوشمند قرار میدهیم.
میخواهیم با استفاده از گوشی هوشمند الایدی شماره 13 که بر روی برد آردوینو تعبیه شدهاست را کنترل کنیم. کد زیر را نوشته و روی برد آردوینو آپلود میکنیم:
دلیل نوشتن تمام خط های کد رو باید بفهمیم. با استفاده از این کد ما به ماژول بلوتوث دستور دادهایم که اگر به تلفن هوشمند متصل شد و مشاهده کرد که کاراکتری برای ماژول ارسال شد آن کاراکتر را بخواند و اگر آن کاراکتر 1 بود الایدی 13 را روشن و اگر 0 بود الایدی 13 را خاموش کند.
با استفاده از گوشی هوشمند خود نرمافزار ARDUINO BLUETOOTH CONTROLLER را از گوگل پلی دانلود کنید:
طبق روند بالا میتوانید با استفاده از گوشی خود به بلوتوث HC05 متصل شوید و الایدی را روشن و خاموش کنید.
امیدوارم مطالب گفتهشده برای شما مفید باشد.