2012年6月23日 星期六

Bluetooth module configuration

image_thumb352
▲ HC-0x 藍芽模組

如果你有在使用 HC-0x 藍芽模組,在某些時候,你可能會需要調整藍芽模組的設定,比如改變模組的 baud rate,這篇將教你怎麼做。

你需要一個 USB to TTL 的轉換器,比如底下的任何一塊板子:

image image
▲ 左圖:CP2102 的晶片;右圖:PL2303 的晶片,購買資訊可見文後的參考資料

全新的 HC-0x 藍芽模組,預設的設定通常是這樣:

Baud rate: 9600

Name: linvor

Pairing code: 1234

準備工作

1) 首先,把 USB to TTL 跟藍芽模組連接起來:

image

連接的時候有兩點要注意:第一是電源千萬不可接錯,不然可能會把藍芽模組燒壞,第二是 USB to TTL 的 RXD 要接藍芽模組的 TXD,而 USB to TTL 的 TXD 要接藍芽模組的 RXD。連接方法可參考下表:

USB to TTL 轉換器 藍芽模組 備註
5V VCC  
GND GND  
TXD RXD  
RXD TXD  

2) 把 USB to TTL 轉換器接到 PC 上,這時候藍芽模組上的 LED 會一直閃爍:

image

3) 打開 Arduino IDE,選擇藍芽模組所連接的 COM port

我 USB to TTL 轉換器是接在 COM20:

image

所以我選擇 COM20:

image 

4) 打開 Serial Monitor,確定下方用的是 "No line ending":

image

現在可以開始測試藍芽模組的通信,輸入 AT 指令(指令是全部大寫的),然後按下 Send 按鈕或 Enter 鍵,藍芽模組應該會回應 OK:

image
修改 Baud rate

底下示範如何把 baud rate 修改為 57600 bps:

輸入指令:

AT+BAUD7

藍芽模組應該會回應:

OK57600

如下圖所示:

image

由於藍芽模組 baud rate 已經改成 57600,你必須把 Serial Monitor 的 baud rate 改成 57600 才能再跟藍芽模組對話。

修改 baud rate 的指令格式為:

指令:AT+BAUD<p>

回應:OK<r>

baud rate 對應表如下:

<p> <r> 備註
1 1200 設定為 1200 bps
2 2400 設定為 2400 bps
3 4800 設定為 4800 bps
4 9600 設定為 9600 bps
5 19200 設定為 19200 bps
6 38400 設定為 38400 bps
7 57600 設定為 57600 bps
8 115200 設定為 115200 bps
9 230400 設定為 230400 bps
A 460800 設定為 460800 bps
B 921600 設定為 921600 bps
C 1382400 設定為 1382400 bps

注意! 一般 PC 的 COM Port 不支援超過 115200 bps,如果你用 PC 設定模組的 baud rate,不小心設超過 115200 bps,可能之後就無法與之連線。如果你使用 PC,建議不要設超過 115200 bps。或者使用高速的 USB to Serial converter 連接線,例如 Prolific PL-2303 便可以支援到 921600 bps。

修改藍芽設備名稱

底下示範如何把藍芽模組的設備名稱改成 coopermaa:

輸入指令:

AT+NAMEcoopermaa

藍芽模組應該會回應:

OKsetname

如下圖所示:

image

設備名稱要在重開藍芽模組電源後才會改變。要注意設備名稱最多是 20 個字元。

修改配對密碼 (paring code)

底下示範如何把配對密碼 (paring code) 改成 5678:

輸入指令:

AT+PIN5678

藍芽模組應該會回應:

OKsetPIN

如下圖所示:

2012-05-06 17h33_23

注意配對密碼最多為 4 個字元。配對密碼改變後會立即生效。

參考資料

6 意見:

華特 提到...

您好coopermaa大
小弟有一片HC-05
我把它改成57600以後它就不太甩我了
(雖然說之前也不太甩啦)
請問您有遇過這個問題嗎
還有想請教您
我想要他吐資料給手機或是藍芽接收端
我是要當master還是slave呢?
目前可以從PC送資料給它
可是要從他吐東西去PC就沒消息
好傷心阿QQ

Cooper Maa 提到...

HC-05 不太甩你?
一般來說用 slave mode 就好
slave mode 可以收也可以送資料,所以手機/PC送資料給它,或從 Arduino 吐資料給手機/PC,資料往哪個方向丟都可以

我還沒用過 HC-05 說

C^3 提到...

您好coopermaa大:
我也是使用HC-05的模組,一開始能正常使用,我使用的方式也很正常,但是它突然不能搜尋到,這個問題就跟我一開始使用的一顆BT-1022的模組遇到的問題差不多,不過BT1022是能配對但不能連線。
我本來以為是1022壞掉,所以才換成HC-05,但是也發生問題,所以我想請教coopermaa大這是哪方面的問題?謝謝!

Cooper Maa 提到...

@C^3
你還有其他 Arduino 板子嗎?
如果用 HC-05 和 BT1022 都這問題,建議換一張 Arduino 板子試試,另外一個可能是你所用的搜尋裝置(你是用 Android/iOS 或 ???),可以的話,換個組合交叉測試一下

嗯..讓我想一想 提到...

大大您好
我這邊有一片HC05
我用的是Arduino UNO這片
我打開Serial Monitor後
不能輸入任何AT command
我在程式中寫入
sendBlueToothCommand("AT\r\n");
他Serial Monitor有跑出AT
但是藍芽沒有給回應OK
是甚麼問題呢?
是KEY腳沒有接到高電位嗎?

Cooper Maa 提到...

我沒用過 HC-05,只有用過 HC-06
(HC-05 有 Master 跟 Slave 兩種 mode)

你照另一篇的方法試試,這個方法比較簡單:
http://coopermaa2nd.blogspot.tw/2012/07/arduino-as-usb-to-ttl-adapter.html