買了藍牙的HC-05模組好久了,可是一直沒有好好瞭解一下藍牙的連接方式,藍牙的功能跟先前實作的無線網路,有部分功能是一樣的,例如設定某個 Pin腳高或低電位,應用作為控制如 LED、小車行進方向以及其他的控制模組。本篇實作紀錄一下藍牙的連接與測試方式,如何將HC-05藍牙模組與 USB to TTL 的串列通訊作法,如果沒有 USB to TTL (如下圖最右方的模組)沒關係,可以使用 Arduino Uno來實作AT指令,也整理紀錄一下 AT 的指令,要查閱時會比較方便些。
安裝好 CP2102後,要使用AT指令可以執行 Realterm 終端機,程式可以到 這裡 下載。下載後執行畫面如下:
設定時有幾個地方要注意:
執行AT指令的程式如下:
[材料]
- Arduino Uno x 1
- USB 轉 UART 模組 (CP2102 晶片) x 1
- HC-05 藍牙模組 x 1
- 連接線 x 4條
[接線圖]
要設定HC-05,可以使用USB TO TTL模組,如 CP2102,也可以直接連接Arduino,以下接線圖分別列出 HC-05 與 CP2102及Arduino 的連接方式。- 連接CP2102
- 連接Arduino
[使用CP2102設定]
• 先確定插上 CP2102 時,電腦是否能取得連接埠?可以找到電腦的 [控制台] →[硬體和音效]→[裝置管理員]→[連接埠],檢查一下是否有出現 COM 的號碼?安裝好 CP2102後,要使用AT指令可以執行 Realterm 終端機,程式可以到 這裡 下載。下載後執行畫面如下:
設定時有幾個地方要注意:
- 按下 [Display] 頁籤,使用 Ansi 方式呈現,就不會像使用 ASCII 每行最後有換行符號
- 按下 [Port] 頁籤,速率選定 HC-05 預設的 38400 Buads,Port 選擇跟裝置管理員使用的COM 埠號,如果選擇的速度不對,會無法回應,修改完成後,按下 [Change]儲存。
- 按下 [Send] 頁籤,EOL處按下+CR及+LF,此時可以在其左邊的地方輸入AT指令(如上圖)。
[使用Arduino設定]
使用Arduino連接後,上傳以下的程式,上傳完成後,打開 Arduino IDE 的終端機,會看到「Enter AT Commands:」,記得終端機下方要選擇「Both NL & CR」「9600 baud」,不然下指令後都看不到反應。執行AT指令的程式如下:
#include <SoftwareSerial.h> SoftwareSerial BTSerial(10, 11); // RX | TX void setup() { Serial.begin(9600); Serial.println("Enter AT commands:"); BTSerial.begin(38400); // HC-05 預設速率 } void loop() { // 從 HC-05 讀取後送到 Arduino 串列視窗 if (BTSerial.available()) Serial.write(BTSerial.read()); // 持續從 Arduino 串列視窗讀取後,送給 HC-05 if (Serial.available()) BTSerial.write(Serial.read()); }
[AT指令]
AT 指令
|
說明
|
執行結果
|
AT
|
AT指令
|
OK
|
AT+ADDR
|
查詢藍牙位址
|
+ADDR:21:13:60ef1
OK
|
AT+VERSION
|
查詢目前版本
|
+VERSION:2.0-20100601
OK
|
AT+PSWD?
AT+PSWD=<PARAM>
|
設定/查詢密碼
|
+PSWD:1234
OK
|
AT+CMODE?
|
設定/查詢連接模式
0:指定藍牙位址連接模式,指定藍牙位址由綁定指令設置
1:任意藍牙位址連接模式,不受綁定指令設置位址的約束
2:回環角色(Slave-Loop)
|
+CMOD:1
OK
|
AT+STATE?
|
獲得藍牙工作狀態,回傳值如下:
INITIALIZED:初始化狀態
READY:準備狀態
PAIRABLE:可配對狀態
PAIRED:配對狀態
INQUIRING:查詢狀態
CONNECTING:正在連接狀態
CONNECTED:連接狀態 DISCONNECTED:斷開狀態
|
+STATE:PAIRABLE
OK
|
AT+UART?
AT+UART=<P1>,<P2>,<P3>
|
設定/查詢目前連接設備的速率
P1取值如下(十進制):4800、9600、19200、38400、57600、115200、23400、460800、921600、1382400
P2:停止位
0: 1 位
1: 2 位
P3:校驗馬校验位
0:None
1:Odd
2:Even
|
+UART:38400,0,0
OK
|
AT+ROLE?
AT+ROLE=<PARAM>
|
設置/查詢-主/從模式:
PARAM:角色設定
0–被動角色(Slave)
1–主動角色(Master)
2–迴歸迴路測試角色(Slave-loop)
預設值:0
|
+ROLE:0
OK
|
AT+RESET
|
軟體重啟(500ms 後重啟):
|
OK
|
AT+SLEEP
|
進入低功耗模式(進入後可被搜索)
|
OK
|
[參考資料]
- Instructables:AT Command Mode of HC-05 and HC-06 Bluetooth Module
張貼留言