▲ HC-0x 藍芽模組 (圖左:正面圖,圖右:背面圖)
HC-0x 藍芽模組的 baud rate 預設是 9600 bps,有些時候你可能會需要改它的 baud rate,要改 baud rate,用 USB to TTL 是最簡單的,這部份可以參考這篇,不過如果手邊沒有 USB to TTL,用 Arduino 也是可以的,底下教你怎麼做。
首先,你得知道怎麼把 Arduino 跟藍芽模組連接起來,參考下圖:
連接的時候有兩點要注意:第一是電源千萬不可接錯,不然可能會燒錄藍芽模組,第二是 Arduino 的 RXD 要接藍芽模組的 TXD,而 Arduino 的 TXD 要接藍芽模組的 RXD。可參考下表:
Arduino | 藍芽模組 | 備註 |
5V | VCC | 注意電源不可接錯 |
GND | GND | 注意電源不可接錯 |
RXD (pin 0) | TXD | |
TXD (pin 1) | RXD |
通電之後,藍芽模組上的 LED 會一直閃爍:
改 Baud rate 的步驟
底下示範如何把藍芽模組 baud rate 改成 57600 bps:
1) 把底下的 sketch 上傳到 Arduino 板子上(注意!在上傳程式的時候,切記不要插著藍芽模組):
2) 打開 Serial Monitor,過 6 秒鐘之後,你應該會看到 AT+BAUD7 的訊息:
3) 關閉 Serial Monitor
4) 拔掉 Arduino 的電源
5) 插上藍芽模組
6) 給 Arduino 上電,請在上電後 6 秒鐘之內打開 Serial Monitor,過 6 秒後應該就會看到 AT+BAUD7OK57600 的訊息,代表你已經正確把藍芽模組 baud rate 修改成 57600 bps 了,如下圖所示:
由於藍芽模組 baud rate 已經改成 57600 bps,如果想改回 9600 bps,可以照底下的步驟做。
如何把 baud rate 改回 9600?
1) 把 Sketch 的 setup() 改成如下:
void setup()
{
Serial.begin(57600); // Baud rate of HC-0x bluetooth module
delay(6000);
Serial.write("AT+BAUD4"); // Set baud rate as 9600
}
2) 把 Sketch 上傳到 Arduino 板子上(注意!在上傳程式的時候,切記不要插著藍芽模組):
3) 打開 Serial Monitor,將下方的 baud rate 設定改成 57600 bps:
接著等 6 秒後,應該會看到 AT+BAUD4 的訊息:
4) 關閉 Serial Monitor
5) 拔掉 Arduino 的電源
6) 插上藍芽模組
7) 給 Arduino 上電,請在上電後 6 秒鐘之內打開 Serial Monitor,過 6 秒後應該就會看到 AT+BAUD4OK9600 的訊息,代表已經正確把藍芽模組 baud rate 改回預設值 9600 bps 了,如下圖所示:
以上的方法,希望對你有幫助。
您好:
回覆刪除看了一下說明,如果忘了參數相關設定,應該是以下處理是嗎?(HC-06 就是26 脚置高电平,或底板KEY 与电源短路一会)
Hi, Reset Pin 是 Pin 11,低電平有效
回覆刪除Pin 26 好像是跟 paring 有關的,用來清除 paring 記憶
大大你好...
回覆刪除在拜讀了你的這篇文章後...
跟著試了一下...
可是發現小弟我的LEONARDO的Serial.write不支援" <-雙引號的符號...
可是改成'<-單引號的符號好像又只會取最後一個字母
試了用Serial.print是可以送一整個字串了...
可是serialMonitor在上了BT後也不會回傳正確的回傳值...
只回傳了AT+BAUD7...而不是應有的OK57600
BT燈號正常...也有用Loop back test試過接收發送正常...
不知大大這有沒有其它的方式可以解答...
大大你好...
回覆刪除在拜讀了你的這篇文章後...
跟著試了一下...
可是發現小弟我的LEONARDO的Serial.write不支援" <-雙引號的符號...
可是改成'<-單引號的符號好像又只會取最後一個字母
試了用Serial.print是可以送一整個字串了...
可是serialMonitor在上了BT後也不會回傳正確的回傳值...
只回傳了AT+BAUD7...而不是應有的OK57600
BT燈號正常...也有用Loop back test試過接收發送正常...
不知大大這有沒有其它的方式可以解答...
看網路上的資料,Leonardo 的 Serial.write() 的行為跟 UNO 不一樣,確實只能送一個字元 (UNO 的 Serial.write() 可以送多個字元)
回覆刪除我這篇是用 UNO 測試的, leonardo 我沒試過
leonardo 的 serial 跟 UNO 是不一樣的,我不確定這篇的方法 leonardo 能不能用
我把程式改了一下,你把它傳到 leonardo 上,試試看能不能用:
// A simple sketch to set baud rate of HC-0x bluetooth module
// If successful configured, a response like "OK75600" will be shown on serial monitor
//
// Command: AT+BAUDx, where x can be:
// 1: 1200, 2:2400, 3:4800, 4:9600, 5:19200,
// 6:38400, 7:57600, 8:115200, 9:230400
void setup()
{
Serial.begin(9600);
while (!Serial) {
; // wait for serial port to connect. Needed for Leonardo only
}
Serial1.begin(9600); // Baud rate of HC-0x bluetooth module
delay(6000);
Serial1.write("AT+BAUD7"); // Set baud rate as 57600
}
void loop()
{
if (Serial1.available())
Serial.write(Serial.read());
}
感謝coopermaa大哥撥空指導...
回覆刪除新的程式碼在leonardo上是可以run的...只是serialMonitor會回傳亂碼(小寫y上再再加兩個小點)
然後進入無窮迴圈致arduino當機...
但拔電再用amarino抓BT是確定BT的名稱有改了...鮑率也有改了....
再次感謝coopermaa大大...
另想請教...
小弟有試用amarino確定BT連接了...但BT就是無法跟leonardo通信...所以這也是因為serial的關係嗎
(我有上官網看了一下leonardo RX/TX TTL通信用serial1...CDC用serial)
那amarino是走TTL還是USB CDC??又或跟這兩個沒關係??
小弟是新手...英文資料又太難啃...是是大哥可以介紹其他的BT TO 安卓的軟體...
amarino 是走 TTL,因為 bluetooth 是接在 pin 0 和 pin 1 上
回覆刪除leonardo 的 Serial 是 USB CDC, Serial1 是 RX/TX TTL 通信
要在 lenoardo 上跑的話,amarino 得改用 Serial1 才行
所以,你可能要改 MeetAndroid library,把程式裏用到 Serial 的地方全都改成 Serial1,也許還得把 CDC.h 給 include 進來
有了...感謝coopermaa大大的指點...
回覆刪除方法如同coopermaa大哥所說的...將MeetAndroid.cpp內所有的serial改成serial1...
另將TEST的sketch裡加入Serial1.begin(XXXX);
我的LED總算會閃了...感動到快哭了...QQ
(另小插曲...本來在改 MeetAndroid library將裡面的檔案先用複製的並貼在同資料夾...結果編譯錯誤...後來將那些帶中文的檔案移到該資料夾外就OK了...)
哇塞!恭禧你啊!
回覆刪除說不定你是全球第一位在 arduino leonardo 上成功執行 Amarino 的人!
大大你太誇張了...
回覆刪除應該有很多人可以使用...
只是沒幾個人會想像大大一樣替人解答而已...又或是小弟英文太爛漏看了...畢竟這方便的資訊太少了...
另小弟有在ROBOFUN論壇發了相同的問題...既然現在有解了...所以想在該論壇將解答引用到你這裡...如有不妥再跟小弟說一下...
是真的,不誇張
回覆刪除如果用 "arduino leonardo + amarino" 當關鍵字搜尋,可能現在還找不到資料咧!
BTW, 我在想 MeetAndroid 應該可以寫成兼容 Leonardo,方法是檢查 MCU 晶片有沒有 USB,像 Leonardo 有 USB 介面,就可以利用底下的方法判斷出來:
#if defined(USBCON)
Serial1.print(n); // for Leonardo
#else
Serial.print(n);
#endif
我沒試過,不過估計是辦得到的
如果你試成功,也許可以發個信給 amarino 作者,把 source code 提交上去,haha~~
您好,請問我的藍芽模組是CSR BC-4 照你上面的做法,確認有AT+BAUD7立刻拔掉接上藍芽,在開啟Sseial monitor看,也是顯示AT+BAUD7。請問這個問題是在藍芽模組嗎?
回覆刪除Hi, 我後來發現用底下這個方法最簡單,建議你試試:
回覆刪除Arduino as an USB to TTL adapter
你買的是這個模組嗎?
http://goods.ruten.com.tw/item/show?21209019709583
我沒用過這個模組,不過看拍賣網站的介紹,它好像有附一個設定軟體,也許你可以跟賣家索取設定軟體來用應該會比較容易。
BTW, 這個模組韌體功能看起比較豐富一些