پیکربندی ماژول بلوتوث HC-05 با دستورات AT (آموزش جامع)

هر کسی که با ماژول بلوتوث HC-05 کار میکند، در نهایت نیاز خواهد داشت از آنچه “دستورات AT” نامیده میشود استفاده کند.
دستورات AT مجموعهای از فرمانهای متنی ساده هستند که با پیشوند «AT» (مخفف Attention یا «توجه») آغاز میشوند. این دستورات شبیه دستوراتی هستند که در مودمهای قدیمی استفاده میشدند. با ارسال دستورهای خاص AT به ماژول HC-05، میتوانید آن را پیکربندی کرده یا اطلاعات پایهای مانند نام دستگاه، نرخ انتقال داده (Baud Rate)، کد PIN، نقش (Role) و سایر مشخصات را دریافت کنید.
در این آموزش یاد میگیرید چطور با استفاده از دستورات AT، ماژول HC-05 را مطابق نیازهای پروژه خود تنظیم و پیکربندی کنید.
برای آشنایی با این ماژول، مقاله معرفی ماژول بلوتوث HC-05 را بخوانید.
پیکربندی ماژول HC-05
برای پیکربندی ماژول HC-05 باید آن را در حالت فرمان (Command Mode) قرار داده و از طریق درگاه UART دستورات AT را ارسال کنید. در این حالت، هر داده ASCII که ارسال میکنید به عنوان دستور تفسیر میشود. پس از انجام تغییرات، باید ماژول را ریستارت کنید تا تنظیمات جدید اعمال شوند. تغییرات انجامشده تا زمانی که مجدداً تنظیم یا ریست کارخانه (Factory Reset) انجام ندهید، در حافظه ماژول باقی میمانند.
- پیکربندی پیشفرض ماژول HC-05 بهصورت زیر است:
- نام دستگاه (Device Name): HC-05
- کد استعلام: 0x009e8b33
- نقش (Role): Slave
- رمز عبور (Passkey): 1234
پارامترهای ارتباط سریال:
- Baud Rate: 38400 بیت بر ثانیه
- Stop bit: 1 بیت
- Parity bit: ندارد
اتصال ماژول HC-05 به کامپیوتر
برای اتصال ماژول HC-05 به کامپیوتر دو روش وجود دارد:
- استفاده از مبدل USB به TTL برای برقراری ارتباط مستقیم بین ماژول HC-05 و رایانه. این مبدل نقش رابطی را میان درگاه USB کامپیوتر و سیگنالهای سریال سطح TTL که توسط HC-05 درک میشوند، ایفا میکند.
- استفاده از برد Arduino بهعنوان واسطه میان کامپیوتر و ماژول HC-05، بهگونهای که آردوینو دستورات و دادهها را بین آنها منتقل میکند.
اتصال با استفاده از مبدل USB به TTL
برای اتصال ماژول HC-05 به رایانه از طریق مبدل USB به TTL، کافی است تغذیه را وصل کرده و پایههای سریال Rx و Tx را سیمکشی کنید.
پایه Tx ماژول HC-05 به RXD مبدل، پایه Rx به TXD، GND به GND و VCC به 5V متصل میشود.
نکته مهم این است که پایه Rx در ماژول HC-05 به ولتاژ 5V مقاوم نیست. بنابراین اگر از مبدل USB به TTL با سطح منطقی 5V استفاده میکنید، باید سیگنال Tx مبدل را به 3.3V کاهش دهید. سادهترین روش برای این کار استفاده از تقسیم مقاومتی است: یک مقاومت 1KΩ بین پایه Rx ماژول و TXD مبدل، و یک مقاومت 2KΩ بین Rx ماژول و GND قرار دهید.
اتصالات بهصورت خلاصه:
HC-05 Module | USB-to-TTL Converter | توضیحات |
---|---|---|
VCC | VCC | – |
GND | GND | – |
TXD | RX | – |
RXD | TX | استفاده از Level Shifter در صورت استفاده از مبدل 5V |
در تصویر زیر، اتصال ماژول HC-05 به رایانه از طریق مبدل FT232RL USB به TTL نشان داده شده است.
اتصال با استفاده از Arduino
بهطور مشابه میتوانید ماژول HC-05 را به Arduino متصل کنید. پایه TXD ماژول HC-05 به D1 آردوینو، پایه RXD به D0، پایه GND به GND و پایه VCC به 5V وصل میشود.
دوباره توجه کنید که پایه Rx ماژول HC-05 به ولتاژ 5V مقاوم نیست. بنابراین اگر از میکروکنترلر 5 ولتی مانند Arduino UNO استفاده میکنید، باید سیگنال Tx آردوینو را با تقسیم مقاومتی به 3.3V کاهش دهید (1K بین D0 و Rx، و 2K بین Rx و GND).
اتصالات بهصورت خلاصه:
HC-05 Module | Arduino | توضیحات |
---|---|---|
VCC | 5V | – |
GND | GND | – |
TXD | D1 | – |
RXD | D0 | استفاده از Level Shifter در صورت استفاده از MCU با 5V |
در تصویر زیر، نحوه اتصال ماژول HC-05 به برد Arduino Uno از طریق UART سختافزاری نشان داده شده است.
ورود ماژول HC05 به حالت AT
برای وارد شدن به حالت AT در ماژول HC-05 مراحل زیر را دنبال کنید:
- دکمهی فشاری روی ماژول HC-05 را فشار دهید و نگه دارید.
- تغذیه ماژول را وصل کنید.
- سپس دکمه را رها کنید.
اگر LED روی ماژول با فاصله زمانی حدود 2 ثانیه چشمک بزند، به این معناست که ماژول بهدرستی وارد حالت AT شده است. در غیر این صورت، مراحل را تکرار کنید.
ارسال دستورات AT
برای ارسال دستورات AT، باید روی رایانه خود یک نرمافزار ترمینال (Terminal Program) نصب داشته باشید که بتواند از طریق UART با ماژول HC-05 ارتباط برقرار کند.
پیشنهاد میشود از Arduino Serial Monitor استفاده کنید، اما نرمافزارهای دیگری مانند PuTTY یا Tera Term نیز گزینههای خوبی هستند.
ابتدا نرمافزار Arduino IDE را باز کنید.
مطمئن شوید ماژول HC-05 روشن و در حالت AT قرار دارد. LED روی ماژول باید با سرعت کم و منظم چشمک بزند.
پس از اتصال ماژول به کامپیوتر، سیستم آن را بهعنوان یک پورت COM شناسایی میکند. برای مشاهده آن، وارد بخش Device Manager شوید و در قسمت Ports (COM & LPT) پورت جدید را مشاهده خواهید کرد.
سپس در Arduino IDE از مسیر Tools > Port همان پورت COM را انتخاب کنید.
اکنون از منوی Tools > Serial Monitor وارد پنجره Serial Monitor شوید. در گوشه پایین سمت راست، نرخ انتقال داده (Baud Rate) را روی 38400 تنظیم کنید و گزینهی Both NL and CR را انتخاب نمایید. این گزینه باعث میشود هنگام ارسال هر فرمان، در انتهای آن کاراکترهای خط جدید (newline) و بازگشت (carriage return) افزوده شود.
در کادر بالای Serial Monitor، عبارت AT را تایپ کرده و دکمه Send را بزنید. در صورتی که ارتباط برقرار باشد، پاسخ “OK” از ماژول دریافت خواهید کرد. این پاسخ نشان میدهد که ارتباط با موفقیت برقرار شده است.
اکنون میتوانید دستورهای زیر را برای دریافت اطلاعات از ماژول ارسال کنید:
AT+VERSION?
→ نسخه نرمافزاری ماژول را نمایش میدهد.AT+NAME?
→ نام فعلی دستگاه را نمایش میدهد.AT+PSWD?
→ رمز عبور دستگاه را نمایش میدهد.
دستورهای بالا از نوع Read Commands (خواندنی) هستند. همچنین میتوانید از Write Commands (نوشتنی) برای تغییر تنظیمات استفاده کنید.
بهعنوان مثال:
AT+NAME=Param1
→ نام ماژول را به مقدار Param1 تغییر میدهد.
توجه داشته باشید که نام دستگاه میتواند تا 32 بایت طول داشته باشد و شامل کاراکترهای خاص نیز باشد.
لیست دستورات AT ماژول HC-05
در این بخش، فهرستی از پرکاربردترین دستورات AT ماژول بلوتوث HC-05 همراه با توضیح، پاسخ و مثال ارائه شده است. این جدول میتواند بهعنوان یک مرجع کامل برای تنظیم یا عیبیابی ماژول مورد استفاده قرار گیرد.
AT
- کاربرد: تست ارتباط با ماژول
- پاسخ: OK
- پارامتر: ندارد
- توضیح: دستور پایه برای بررسی عملکرد صحیح ماژول
مثال:
AT OK
AT+RESET
- کاربرد: ریست کردن ماژول
- پاسخ: OK
- پارامتر: ندارد
- توضیح: باعث راهاندازی مجدد (Restart) ماژول میشود.
مثال:
AT+RESET OK
AT+VERSION?
کاربرد: نمایش نسخه نرمافزار ماژول
پاسخ:
+VERSION:**** OK
پارامتر: ندارد
مثال:
AT+VERSION? +VERSION:2.0-20100601 OK
AT+ORGL
- کاربرد: بازگرداندن تنظیمات کارخانه (Factory Reset)
- پاسخ: OK
- پارامتر: ندارد
- توضیح: تنظیمات پیشفرض شامل:
- نوع دستگاه: 0
- Inquire code: 0x009e8b33
- حالت کاری: Slave
- حالت اتصال: اتصال به دستگاه بلوتوث مشخصشده
- پارامتر سریال: Baud Rate=38400، Stop Bit=1، Parity=None
- رمز عبور: “1234”
- نام دستگاه: “H-C-2010-06-01”
مثال:
AT+ORGL OK
AT+ADDR?
کاربرد: دریافت آدرس بلوتوث ماژول
پاسخ:
+ADDR:**** OK
توضیح: آدرس بلوتوث بهصورت NAP:UAP:LAP (در مبنای شانزده) نمایش داده میشود.
مثال:
AT+ADDR? +ADDR:1234:56:abcdef OK
AT+NAME?
کاربرد: پرسوجو از نام دستگاه
پاسخ در صورت موفقیت:
+NAME:**** OK
- در صورت خطا: FAIL
- توضیح: نام پیشفرض ماژول “HC-05” است.
مثال:
AT+NAME? +NAME:HC-05 OK
AT+NAME=Param1
- کاربرد: تغییر نام دستگاه بلوتوث
- پاسخ: OK
- پارامتر: Param1 = نام جدید دستگاه (حداکثر ۳۲ بایت، شامل کاراکترهای خاص)
- توضیح: دستور
AT+NAME=”HC-05″
وAT+NAME=HC-05
هر دو معادل هستند.
مثال:
AT+NAME=myBluetooth OK
AT+RNAME?Param1
کاربرد: پرسوجو از نام دستگاه بلوتوث دیگر (Remote Device)
پاسخ در صورت موفقیت:
+RNAME:Param2 OK
در صورت خطا: FAIL
پارامترها:
- Param1: آدرس دستگاه بلوتوث دیگر (NAP:UAP:LAP)
- Param2: نام دستگاه مقابل
مثال:
AT+RNAME?0002,72,od2224 +RNAME:Bluetooth OK
AT+ROLE?
کاربرد: بررسی نقش ماژول
پاسخ:
+ROLE:**** OK
توضیح:
- 0 → Slave
- 1 → Master
- 2 → Slave-Loop
مثال:
AT+ROLE? +ROLE=0 OK
AT+ROLE=Param1
کاربرد: تنظیم نقش ماژول
پاسخ: OK
پارامترها:
- 0 → Slave
- 1 → Master
- 2 → Slave-Loop
توضیح نقشها:
- Slave (پیشفرض): به صورت غیرفعال منتظر اتصال است.
- Slave-Loop: مشابه حالت Slave اما دادههای دریافتی از Master را دوباره بازمیفرستد.
- Master: دستگاههای Slave اطراف را جستوجو کرده، با یکی از آنها اتصال برقرار میکند و ارتباط دادهای شفاف (Transparent) را ایجاد مینماید.
مثال:
AT+ROLE=0 OK
AT+CLASS?
کاربرد: بررسی نوع دستگاه
پاسخ در صورت موفقیت:
+CLASS:****
OK
- در صورت خطا: FAIL
- توضیح: مقدار پیشفرض 0 است.
- AT+CLASS=Param1
- کاربرد: تنظیم نوع دستگاه
- پاسخ: OK
توضیح: مقدار CLASS عددی 32 بیتی است که نوع و قابلیتهای دستگاه بلوتوث را مشخص میکند. برای مثال، برای شناسایی سریعتر دستگاهها میتوان از مقادیر سفارشی مانند 0x1F1F
استفاده کرد.
AT+IAC?
کاربرد: دریافت «کد دسترسی جستوجو» (Inquire Access Code)
پاسخ:
+IAC: **** OK
توضیح: مقدار پیشفرض 9e8b33 است.
مثال:
AT+IAC? +IAC:9e8b3f OK
AT+IAC=Param1
- کاربرد: تنظیم «کد دسترسی جستوجو»
- پاسخ: در صورت موفقیت OK و در صورت خطا FAIL
- پارامتر: Param1 = کد دسترسی جستوجو
توضیح: کد دسترسی بهطور پیشفرض از نوع GIAC (General Inquire Access Code: 0x9e8b33) است و برای جستوجوی عمومی تمام دستگاههای بلوتوث اطراف استفاده میشود. برای جستوجوی سریعتر یا اختصاصیتر، میتوانید از کدهای دیگر (غیر GIAC و LIAC) مانند 9e8b3f استفاده کنید.
مثال:
AT+IAC=9e8b3f OK
AT+INQM?
کاربرد: بررسی حالت دسترسی جستوجو (Inquire Access Mode)
پاسخ:
+INQM:***,***,*** OK
توضیح: خروجی شامل سه مقدار است:
- حالت جستوجو
- حداکثر تعداد دستگاههای پاسخدهنده
- حداکثر زمان جستوجو
مقادیر پیشفرض: 1, 1, 48
مثال:
AT+INQM? +INQM:1,9,48 OK
AT+INQM=Param1,Param2,Param3
کاربرد: تنظیم حالت دسترسی جستوجو
پاسخ: OK در صورت موفقیت، FAIL در صورت خطا
پارامترها:
- Param1 → حالت جستوجو: 0=Standard ، 1=RSSI
- Param2 → حداکثر تعداد دستگاههای پاسخدهنده
- Param3 → حداکثر زمان جستوجو (از 1 تا 48، هر واحد معادل 1.28 ثانیه است)
مثال: تنظیم حالت جستوجو بهگونهای که:
- از نشانگر قدرت سیگنال RSSI استفاده شود
- پس از یافتن بیش از 9 دستگاه متوقف شود
- زمان جستوجو 48×1.28 = 61.44 ثانیه باشد
AT+INQM=1,9,48 OK
AT+PSWD?
کاربرد: دریافت رمز عبور ماژول
پاسخ:
+PSWD:**** OK
توضیح: رمز پیشفرض “1234” است.
مثال:
AT+PSWD? +PSWD:1234 OK
AT+PSWD=Param1
- کاربرد: تغییر رمز عبور
- پاسخ: OK
- پارامتر: Param1 = رمز جدید
مثال:
AT+PSWD=1234 OK یا AT+PSWD="1234" OK
AT+UART?
کاربرد: دریافت پارامترهای ارتباط سریال
پاسخ:
+UART=****,****,**** OK
توضیح: خروجی به ترتیب شامل Baud Rate، Stop Bit، Parity Bit است.
مقادیر پیشفرض: 9600, 0, 0
مثال:
AT+UART? +UART:115200,1,2 OK
AT+UART=Param1,Param2,Param3
کاربرد: تنظیم پارامترهای ارتباط سریال
پاسخ:
+UART=Param1,Param2,Param3 OK
پارامترها:
- Param1 (Baud Rate):
4800, 9600, 19200, 38400, 57600, 115200, 230400, 460800, 921600, 1382400 - Param2 (Stop Bit):
0 → 1 بیت
1 → 2 بیت - Param3 (Parity Bit):
0 → بدون توازن (None)
1 → فرد (Odd)
2 → زوج (Even)
مثال: تنظیم Baud Rate روی 115200، Stop Bit روی 2 بیت و Parity روی Even:
AT+UART=115200,1,2 OK
AT+CMODE?
کاربرد: بررسی حالت اتصال (Connection Mode)
پاسخ:
+CMODE:**** OK
توضیح:
- 0 (پیشفرض): اتصال به آدرس مشخصشده
- 1: اتصال به هر دستگاه
- 2: حالت Slave-Loop
مثال:
AT+CMODE? +CMODE:2 OK
AT+CMODE=Param1
کاربرد: تنظیم حالت اتصال
پاسخ: OK
پارامتر:
- 0 → اتصال به آدرس مشخصشده
- 1 → اتصال به هر آدرس
- 2 → حالت Slave-Loop
مثال:
AT+CMODE=2 OK
AT+BIND?
کاربرد: بررسی آدرس بلوتوث متصلشده (Bind Address)
پاسخ:
+BIND:**** OK
توضیح: آدرس بلوتوث بهصورت NAP:UAP:LAP نمایش داده میشود.
مثال:
AT+BIND? +BIND:1234:56:abcdef OK
AT+BIND=Param1
- کاربرد: تعیین آدرس بلوتوث برای اتصال ثابت (Bind)
- پاسخ: OK
- پارامتر: Param1 = آدرس بلوتوث دستگاه هدف (با جداکننده کاما)
- نکته: هنگام نوشتن آدرس، از کاما (,) بهجای دو نقطه (:) استفاده کنید.
مثال:
AT+BIND=1234,56,abcdef OK
AT+POLAR?
کاربرد: بررسی تنظیمات مربوط به LED و وضعیت اتصال
پاسخ:
+POLAR=****,**** OK
توضیح: خروجی شامل دو مقدار است: حالت پایه PI08 و PI09
مقدار پیشفرض: 1,1
مثال:
AT+POLAR? +POLAR=0,1 OK
AT+POLAR=Param1,Param2
کاربرد: تنظیم نحوه عملکرد LED و نشانگر وضعیت اتصال
پاسخ: OK
پارامترها:
- Param1 (PI08):
0 → خروجی سطح پایین (روشن شدن LED)
1 → خروجی سطح بالا (روشن شدن LED) - Param2 (PI09):
0 → خروجی سطح پایین نشاندهنده اتصال موفق
1 → خروجی سطح بالا نشاندهنده اتصال موفق
مثال: روشن شدن LED با سطح پایین و نمایش اتصال موفق با سطح بالا:
AT+POLAR=0,1 OK
AT+PIO=Param1, Param2
کاربرد: تنظیم خروجی پورت تکی PIO
پاسخ: OK
پارامترها:
Param1: شماره پورت PIO (بهصورت دهدهی)
Param2: وضعیت پورت PIO
- 0 → سطح پایین (Low Level)
- 1 → سطح بالا (High Level)
توضیح: ماژول HC-05 پورتهای PI00 تا PI07 و PI010 را برای ورودی و خروجی در اختیار کاربر قرار میدهد.
مثالها:
- خروجی پورت PI010 روی سطح بالا:
AT+PIO=10,1
→ OK - خروجی پورت PI010 روی سطح پایین:
AT+PIO=10,0
→ OK
AT+MPIO=Param1
- کاربرد: تنظیم خروجی چندین پورت PIO بهصورت همزمان
- پاسخ: OK
- پارامتر: Param1 = ترکیب ماسک شماره پورتهای PIO (دهدهی)
توضیح:
- ماسک شماره پورت = (1<<شماره پورت)
- ترکیب ماسک = (ماسک پورت1 | ماسک پورت2 | …)
مثالها:
- ماسک پورت PI02 = (1<<2) = 0x004
- ماسک پورت PI010 = (1<<10) = 0x400
- ترکیب دو پورت بالا = (0x004 | 0x400) = 0x404
- خروجی سطح بالا در PI010 و PI02:
AT+MPIO=404
→ OK - خروجی سطح بالا در PI04:
AT+MPIO=004
→ OK - خروجی سطح بالا در PI010:
AT+MPIO=400
→ OK - خروجی سطح پایین در تمام پورتها:
AT+MPIO=0
→ OK
AT+MPIO?
- کاربرد: بررسی وضعیت ورودی پورتهای PIO
- پاسخ:
+MPIO:****
→ OK - توضیح: هر بیت از مقدار 16 بیتی خروجی، بیانگر وضعیت یکی از پورتهای PI00 تا PI011 است.
AT+IPSCAN?
- کاربرد: استعلام پارامترهای اسکن صفحه و جستجو
- پاسخ:
+IPSCAN:****,****,****,****
→ OK - فرمت: فاصله زمانی جستجو، مدت زمان جستجو، فاصله زمانی صفحه، مدت زمان صفحه
- پیشفرض:
1024,512,1024,512
- مثال:
AT+IPSCAN?
→+IPSCAN:1234,500,1200,250
→ OK
AT+IPSCAN=Param1,Param2,Param3,Param4
- کاربرد: تنظیم پارامترهای اسکن صفحه و جستجو
- پاسخ: OK
- مثال:
AT+IPSCAN=1234,500,1200,250
→ OK
AT+SNIFF?
- کاربرد: استعلام پارامترهای مصرف انرژی (SNIFF Mode)
- پاسخ:
+SNIFF:****,****,****,****
→ OK - توضیح: شامل حداکثر زمان، حداقل زمان، زمان تست و زمان محدود است.
- پیشفرض:
0,0,0,0
AT+SENM?
- کاربرد: بررسی حالت امنیت و رمزگذاری
- پاسخ:
+SENM:****,****
→ OK - پیشفرض:
0,0
AT+SENM=Param1, Param2
- کاربرد: تنظیم حالت امنیت و رمزگذاری
- پاسخ: OK یا FAIL
- پارامترها:
Param1 (حالت امنیتی):
- 0 → sec_mode0+off
- 1 → sec_mode1+non_secure
- 2 → sec_mode2_service
- 3 → sec_mode3_link
Param2 (حالت رمزگذاری):
- 0 → خاموش
- 1 → فقط نقطه به نقطه
- 2 → نقطه به نقطه و پخش همگانی
AT+RMSAD=Param1
- کاربرد: حذف یک دستگاه جفتشده از لیست اعتماد
- پاسخ: OK
- مثال:
AT+RMSAD=1234,56,abcdef
→ OK یا FAIL
AT+RMAAD
- کاربرد: حذف تمام دستگاههای جفتشده
- پاسخ: OK
AT+FSAD=Param1
- کاربرد: جستجوی دستگاه جفتشده در لیست
- پاسخ: OK یا FAIL
AT+ADCN?
- کاربرد: دریافت تعداد دستگاههای جفتشده
- پاسخ:
+ADCN:****
→ OK
AT+MRAD?
- کاربرد: دریافت آدرس آخرین دستگاه جفتشده
- پاسخ:
+MRAD:****
→ OK
AT+STATE?
- کاربرد: بررسی وضعیت کاری ماژول بلوتوث
- پاسخ:
+STATE:****
→ OK
وضعیتهای ممکن:
- INITIALIZED
- READY
- PAIRABLE
- PAIRED
- INQUIRING
- CONNECTING
- CONNECTED
- DISCONNECTED
- UNKNOWN
AT+INIT
- کاربرد: مقداردهی اولیه به کتابخانه پروفایل SPP
- پاسخ: OK یا FAIL
AT+INQ
- کاربرد: جستجوی دستگاههای بلوتوث اطراف
- پاسخ: لیستی از دستگاهها به همراه نوع و شدت سیگنال RSSI
AT+PAIR=Param1,Param2
- کاربرد: جفتسازی با دستگاه مورد نظر
- پاسخ: OK یا FAIL
- مثال:
AT+PAIR=1234,56,abcdef,20
→ OK
AT+LINK=Param1
- کاربرد: اتصال به دستگاه بلوتوث
- پاسخ: OK یا FAIL
- مثال:
AT+LINK=1234,56,abcdef
→ OK - AT+DISC
- کاربرد: قطع ارتباط
پاسخ:
- +DISC:SUCCESS → موفق
- +DISC:LINK_LOSS → از دست رفتن لینک
- +DISC:NO_SLC → بدون ارتباط
- +DISC:TIMEOUT → اتمام زمان
- +DISC:ERROR → خطا
AT+ENSNIFF / AT+EXSNIFF
- کاربرد: ورود و خروج از حالت صرفهجویی انرژی (Energy Mode)
- پاسخ: OK