Arduino筆記(67):使用CP2102或Arduino設定HC-05藍牙模組

買了藍牙的HC-05模組好久了,可是一直沒有好好瞭解一下藍牙的連接方式,藍牙的功能跟先前實作的無線網路,有部分功能是一樣的,例如設定某個 Pin腳高或低電位,應用作為控制如 LED、小車行進方向以及其他的控制模組。本篇實作紀錄一下藍牙的連接與測試方式,如何將HC-05藍牙模組與 USB to TTL 的串列通訊作法,如果沒有 USB to TTL (如下圖最右方的模組)沒關係,可以使用 Arduino Uno來實作AT指令,也整理紀錄一下 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取值如下(十進制):48009600192003840057600115200234004608009216001382400
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

[參考資料]

Post a Comment

較新的 較舊