在教到藍牙之間的通訊的課時,常常會搞錯藍牙型號,想寫這篇文跟大家分享,市面上常用的HC-05和HC-06外觀幾乎一樣,不知道如何對藍牙鮑率做設定,想深入研究可以來看看喔。
作者/攝影 | 許鈺莨 |
時間 | 30分鐘 |
成本 |
|
難度 | * * * |
材料表 |
|
在按照本文中步驟操作時,請讀者一定要購買時請先與商家進行確認以下幾點:
- 藍牙型號是HC-05還是HC-06
- 若是已經確認藍牙型號後,請再與商家確認出廠預設鮑率是9600、38400…..等。
如果以上兩點都已確認過,在做藍牙相關設定時會比較快上手,但一切以商家給的文件為主。
接下來教大家如何快速辨別我們買的藍牙是型號是HC-05還是HC-06,還有藍牙指令設定,所以針對以下幾個部分,我以Keyes藍牙的 HC-05和HC-06做範例:
(本文參考instructable藍牙文件、Retun的Blog)
- 藍牙HC-05和用Arduino UNO 板設定AT指令教學
- [進階設定]HC-05主動模式和手機藍牙連線
- 藍牙HC-06和用Arduino UNO 板設定AT指令教學
- 藍牙HC-05 USB轉TTL模組設定AT指令教學
- 藍牙HC-06 USB轉TTL模組設定AT指令教學
1.藍牙HC-05和Arduino UNO 板設定AT指令教學(適合課堂上多人使用)
如果看見藍牙有六隻針腳時,就可能是型號HC-05的藍牙,但是還是要依照以下步驟實際接線測試或與商家確認藍牙型號。
設定HC-05的AT指令之前,先與Arduino UNO接線,請先將Arduino的RESET和Arduino的GND接在一起,使得Arduino成為重置模式再依照下方依序接線:
藍牙 | Arduino UNO |
KEY(or En) | 3.3V |
VCC | 5V |
GND | GND |
TXD | TXD |
RXD | RXD |
STATE | 不用接 |
接完線後,將Arduino UNO 用USB連接到電腦,選擇該板子的COM Port,按下Serial Monitor,由於這是Keyes藍牙HC-05的鮑率出廠時預設為38400,所以Serial Monitor的鮑率要選38400,另外一個選項要選NL&CR,即可下AT指令,大小寫不拘。
用藍牙HC-05的好處就是如果設成別的鮑率,之後如果忘記了,在Serial Monitor還是可以固定選38400,再用「AT+UART?」指令查詢,或是設定成別的鮑率。
輸入AT指令第一次會出現ERROR:(0),第二次輸入AT出現OK,即可進入AT模式。
因為HC-05為主從一體(Slave & Master)藍牙,指令多達36種,所以接下來會告訴各位常用的指令。
如果你和我一樣是講師在課堂上教學的話,則一開始這裡有兩個步驟非常重要:
- 查詢HC-05 address
- 知道自己藍牙的address後改名字
因為在上藍牙通訊時,如果只有兩三位同學的話,還可以一個一個連address測試,但是10幾、20幾位同時在課堂上連線時會搞混,會不知道是不是會連到自己的藍牙,所以要先查出自己藍牙的address的指令,再改藍牙名字。
- 查詢HC-05 address: 「AT+ADDR?
- 改名字為CAVEDU: 「AT+NAME=CAVEDU
- 查名字 : 「AT+NAME?(確認是否改對)
- 改鮑率為9600 : 「AT+UART=9600,0,0
- 查鮑率: 「AT+UART? 」
如果改完鮑率請把藍牙電源拔掉再重新接上,再把KEY腳位接上3.3V,新的鮑率設定才會生效
- 設定配對密碼為1234: 「AT+ PSWD=1234」
HC-05還有設定主動模式(Master)的功能,指令如下:
- 設定被動模式: 「AT+ROLE=0」
- 查詢主/從模式: 「AT+ROLE? 」
- 設定主動模式: 「AT+ROLE=1」
- 預設出廠模式: 「AT+ORGL」
如上圖所示,設成出廠模式時,可以用前面所知的AT指令可以查到所有的狀態,包括名字、鮑率、密碼皆已回復。如果之前設成主端(Master),後來也會回復設成從端(Slave)。
- [進階設定]HC-05主動模式和手機藍牙連線
既然已經知道如何手動下AT指令設定HC-05為主動模式的話,接下來試著跟手機藍牙連線吧!
既然要和手機連線的話,手機裡就必須先安裝有接收藍牙字串的APP,我是用Android系統的手機,Google paly商店可以搜尋名字為「Bluetooth Terminal」的APP,而在IPHONE的App store也可以搜尋得到一樣名稱的APP,這款APP可以和HC-05雙向溝通。
而如何知道手機的藍牙位址,可以由 :設定à關於手機à狀態,知道訊息。
再上一個段落已經知道如何設定HC-05的主動模式了,所以這節以主動連到手機藍牙位址為主。
下列敘述完整步驟,從設定主動模式開始:
Step1:切換至主動模式。
輸入指令「AT+ROLE=1」,收到回應「OK」,表示藍牙模組已進入主動模式。
Step2:確認藍牙模式。
輸入指令「AT+ROLE?」,收到回應「+ROLE:1」、「OK」,表示當前藍牙為主動模式。
Step3:指定藍牙連線至手機連接模式。
輸入指令「AT+CMODE=0」,收到回應「OK」,表示藍牙將連線至手機。
Step4:重啟藍牙。
輸入指令「AT+RESET」,收到回應「OK」,表示藍牙重置。
Step5:初始化SPP 函式庫。
輸入指令「AT+INIT」,收到回應「OK」,表示藍牙SPP函式庫已初始化。
Step6:設定詢問模式。
輸入指令「AT+INQM=1,9,48」,收到回應「OK」
1:RSSI信號強度指示。
9:可以搜尋9個藍牙設備。
48:搜尋時間為48*1.28秒=61.44秒內。
Step7:開始詢問,將搜尋周遭藍牙裝置。
輸入指令「AT+INQ」,收到回應「+INQ:12:34:567890:1F1F,7FFF」(該參數為藍牙Address,不同模組Address亦不同)、「OK」。
Step8:結束詢問。
輸入指令「AT+INQC」,收到回應「OK」,需要再次輸入指令「AT+STATE?」確認藍牙狀態,若藍牙回應為「+STATE:INQUIRING」、「OK」,代表藍牙未結束詢問,必須回Step4重啟藍牙和Step5初始化SPP 函式庫後,輸入指令「AT+STATE?」,回應為「+STATE: INITIALIZED」,才能成功連線手機藍牙。
Step9:綁定連線手機藍牙Address。
輸入指令「AT+BIND=1234,56,abcdef」(在此裝置Address以12:34:56:ab:cd:ef為例),收到回應「OK」。
Step10:和手機藍牙連線。
輸入指令「AT+LINK=1234,56,abcdef」
連線後,手機會出現輸入配對密碼1234,表示配對成功,之後就都不需要配對。
當配對成功後,接下來開啟Bluetooth Terminal,先按下「send」後,會出現之前配對成功的裝置清單,選擇之後即可雙向溝通。
下列是配對成功,HC-05和手機雙向溝通的畫面:
3.藍牙HC-06和用Arduino UNO 板設定AT指令教學(適合個人使用)
目前的HC-06藍牙會有四條針腳居多,分別是VCC、GND、TX、RX,以下是HC-06的正反面:
HC-06正面 HC-06反面
在設AT指令前,也是先與Arduino UNO接線,只需要接四條線。
和前面HC-05方法一樣,要先將Arduino UNO 的RESET和自己的GND接線,再和HC-06接在一起。
藍牙 | Arduino UNO |
VCC | 5V |
GND | GND |
TXD | TXD |
RXD | RXD |
HC-06出廠後多半都已經設定為從端(Slave),而AT指令只有少數的指令如:密碼、鮑率、姓名….等,以下Arduino UNO Serial monitor示範AT指令,所有AT指令皆要大寫:
- AT測試,回應OK
和HC-05不同的是,因為Keyes的HC-06出廠時預設為9600,所以Serial monitor的鮑率選項要選9600,選擇「沒有行結尾」或「No line ending」。
測試成功後,接下來就是設定其他的AT指令:
- 查詢版本: 「AT+VERSION」
- 設定名字為CAVEDU02: 「AT+NAMECAVEDU02」
- 設定密碼為1234: 「AT+PIN1234」
- 設定鮑率為9600: 「AT+BAUD4」
編號 | 鮑率 | 備註 |
1 | 1200 | 設定鮑率為1200 |
2 | 2400 | 設定鮑率為2400 |
3 | 4800 | 設定鮑率為4800 |
4 | 9600 | 設定鮑率為9600(原廠預設) |
5 | 19200 | 設定鮑率為19200 |
6 | 38400 | 設定鮑率為38400 |
7 | 57600 | 設定鮑率為57600 |
8 | 115200 | 設定鮑率為115200 |
與前篇HC-05最大的不同點是,假設你鮑率已經設成9600,若想要改鮑率或改名時,則你的Serial monitor的鮑率選項要選9600才能成功下AT指令;如果你鮑率已經設成38400,則你的Serial monitor的鮑率選項要選38400才能成功。也就是說,當你設定好之後就要記住自己鮑率是設定多少,否則就要每個鮑率去試試看,不像HC-05有固定鮑率為38400可以容易設定,這也是HC-06最大的缺點。
那麼問題來了,大家有沒有發現HC-06的AT指令比較少,並沒有像HC-05一樣有查詢address指令,那上課時怎麼辦呢?
個人較好的做法是在上課前先一一設定藍牙名字,上課時學員們才不會連到別人的藍牙。
因此我的建議是,HC-05和HC-06價錢如果差不多的話,可以買HC-05有較多的AT指令設定,上課時學員既可以學習去查address指令,又可以不會搞混連線到別人的藍牙,重點是老師就不用在上課前花時間設定所有學員的藍牙名稱。
- 藍牙HC-05 USB轉TTL模組設定AT指令教學
如果沒有Arduino UNO板,則用USB 轉TTL模組也是可以設定AT指令,那麼要在哪裡設定AT指令呢?
其實只要能夠讀取COM Port,使用任何一種終端機軟體皆可,如Putty、RealTerm….等等,我是使用AI的 CH430G USB 轉TTL模組,和使用AccessPort這個終端機軟體。
USB 轉TTL模組
AcessPort終端機
在使用AcessPort終端機前,HC-05先與USB 轉TTL模組接線:
USB TO TTL | HC-05 |
3.3V | KEY(or En) |
5V | VCC |
GND | GND |
RXD | TXD |
TXD | RXD |
接線時要注意是和USB 轉TTL模組連接,USB 轉TTL模組TXD和HC-05的RXD互接;
USB 轉TTL模組RXD和HC-05的TXD互接。
再將USB 轉TTL模組插入電腦USB時,會自動安裝驅動程式:
驅動安裝好了之後,需來到裝置管理員查COM Port,這也是和藍牙溝通的COM Port,所以在AcessPort終端機要選同一個 COM Port。
打開AcessPort終端機後按齒輪圖示 ,設定好鮑率9600和COM Port:
再按下電源圖示 ,就可以設定HC-05 AT指令,AT指令請參考「1.分辨藍牙HC-05和Arduino UNO 板設定AT指令教學」。
並在下方發送區輸入AT指令後要先按下鍵盤Enter後再按下「發送數據」即可,以下方圖示表示:
5.藍牙HC-06 USB轉TTL模組設定AT指令教學
USB 轉TTL模組和HC-06接線圖:
要注意的一點是,USB 轉TTL模組的TX要接HC-06的RX;USB 轉TTL模組的RX要接HC-06的TX。
USB TO TTL | HC-06 |
5.0V | VCC |
GND | GND |
RXD | TXD |
TXD | RXD |
AT指令和前面一致,請參考「2.分辨藍牙HC-06和用Arduino UNO 板設定AT指令教學」
並在下方發送區輸入AT指令後按下「發送數據」即可,以下方圖示表示:
相關文章: