Follower

2017年5月9日 星期二

【Arduino】藍芽模組HC-05 / HC-06


  雖然已經考回母校北科大,但目前還是中正大學的教學助理,負責物聯網應用系統的實作課程,個人的背景知識沒有很雄厚,也是邊做邊學。
  這次的實作課進度是藍芽模組,有鑒於前人留下的課程簡報有些許的不足,我自己在備課中也把這次的上課簡報重修製作,過程中有學到一些東西,順手寫在部落格留個記錄。

  ※是說還沒寫今年的考試心得,有空的時候會寫上來,不過今年的考試是裸考,如果沒有基礎的請不要參考,你會因此落榜;有基礎的人而且想考的人可以稍微參考一下,我會寫快速準備考試的小技巧(當然這還牽扯到投考組合,有機會再分享)。


正文開始:

藍芽(Bluetooth)
  一種無線技術標準,用來讓固定與行動裝置,在短距離間交換資料,以形成個人區域網路(PAN)。
  其使用短波特高頻(UHF)無線電波,經由2.4至2.485 GHz的ISM頻段來進行通訊。1994年由電信商愛利信(Ericsson)發展出這個技術。
  它最初的設計,是希望建立一個RS-232資料線的無線通訊替代版本。它能夠連結多個裝置,克服同步的問題。

以上擷取至 維基百科


Arduino常用的藍芽模組有HC-05和HC-06,以下為其長相:

藍芽模組HC-05

藍芽模組HC-05背面
  其Pin角都一樣,總共有六根,分別是:

  ● EN( KEY )
  ● VCC
  ● GND
  ● TXD
  ● RXD
  ● STATUE

  又HC-05和HC-06有些差異:
  1. 藍芽模組有主從之分( Master & Slave) ,HC-05可為Master 或 Slave、但是HC-06只可為Slave
  2. 藍芽模組有兩種操作模式
   (1.) 自動連線(automatic connection),又稱透通模式,預設Baud為9600。→實作2和3用此模式
   (2.) 命令回應(order-response),又稱AT模式,預設Baud為38400。→實作1用此模式
  3. HC-05支援的指令高達35條;HC-06支援的指令只有少少5條。

  藍芽模組上有LED燈,也有相對代表的意思:
  1. 連續快閃:藍芽等待配對中。
  2. 連續快閃2下後停1下:藍芽已配對成功,運作中。
  3. 連續慢速閃爍:藍芽已進入AT模式,準備設定。

HC-05支援之指令集:
編號
指令
功能
1
AT
Test UART Connection
2
AT+RESET
Reset Device
3
AT+VERSION
Query firmware version
4
AT+ORGL
Restore settings to Factory Defaults
5
AT+ADDR
Query Device Bluetooth Address
6
AT+NAME
Query/Set Device Name
7
AT+RNAME
Query Remote Bluetooth Device’s Name
8
AT+ROLE
Query/Set Device Role
9
AT+CLASS
Query/Set Class of Device CoD
10
AT+IAC
Query/Set Inquire Access Code
11
AT+INQM
Query/Set Inquire Access Mode
12
AT+PSWD
Query/Set Pairing Passkey
13
AT+UART
Query/Set UART parameter
14
AT+CMODE
Query/Set Connection Mode
15
AT+BIND
Query/Set Binding Bluetooth Address
16
AT+POLAR
Query/Set LED Output Polarity
17
AT+PIO
Set/Reset a User I/O pin
18
AT+MPIO
Set/Reset multiple User I/O pin
19
AT+MPIO?
Query User I/O pin
20
AT+IPSCAN
Query/Set Scanning Parameters
21
AT+SNIFF
Query/Set SNIFF Energy Savings Parameters
22
AT+SENM
Query/Set Security & Encryption Modes
23
AT+RMSAD
Delete Authenticated Device from List
24
AT+FSAD
Find Device from Authenticated Device List
25
AT+ADCN
Query Total Number of Device from Authenticated Device List
26
AT+MRAD
Query Most Recently Used Authenticated Device
27
AT+STATE
Query Current Status of the Device
28
AT+INIT
Initialize SPP Profile
29
AT+INQ
Query Nearby Discoverable Devices
30
AT+INQC
Cancel Search for Discoverable Devices
31
AT+PAIR
Device Pairing
32
AT+LINK
Connect to a Remote Device
33
AT+DISC
Disconnect from a Remote Device
34
AT+ENSNIFF
Enter Energy Saving mode
35
AT+EXSNIFF
Exit Energy Saving mode


HC-06支援之指令集:
編號
指令
功能
1
AT
Test UART Connection
2
AT+VERSION
Query firmware version
3
AT+NAME
Query/Set Device Name
4
AT+PIN
Set PASSKEY
5
AT+BAUD#
Set Baud Rate
※ AT+BAUD#這條指令可設定藍芽模組之Baud Rate,"#"為可填入之參數,參考下表

編號
指令
功能
1
AT+BAUD1
Baud Rate 設為1200
2
AT+BAUD2
Baud Rate 設為2400
3
AT+BAUD3
Baud Rate 設為4800
4
AT+BAUD4
Baud Rate 設為9600
5
AT+BAUD5
Baud Rate 設為19200
6
AT+BAUD6
Baud Rate 設為38400
7
AT+BAUD7
Baud Rate 設為57600
8
AT+BAUD8
Baud Rate 設為115200
9
AT+BAUD9
Baud Rate 設為230400
10
AT+BAUDA
Baud Rate 設為460800
11
AT+BAUDB
Baud Rate 設為921600
12
AT+BAUDC
Baud Rate 設為1382400


【實作1 藍芽模組之AT Mode】
最基本的Arduino藍芽模組實驗是將藍芽模組進入AT模式,我們實作採用的是HC-05的藍芽模組,當然HC-06也可以做,指令的多寡不影響這次的實作,此時可以在Arduino IDE的Serial Monitor下指令去查詢或是設定藍芽模組:
HC-05 AT模式 接線圖
結果
Code:

實作步驟:
Step 1. 先接好Arduino主版,不可以連接藍芽模組,進行燒錄。

Step 2. 連接藍芽模組,這時候藍芽模組的燈會慢速閃爍,代表藍芽已進入AT Mode。

Step 3. 開啟Monitor下指令。


【實作2 使用Blue term APP 控制LED】
接線圖
實作步驟:
Step 1. 先去Google play下載”Blue term” APP

Step 2. 不可接藍芽模組燒錄程式碼

Step 3. 接上藍芽模組,藍芽不停閃爍其燈等待配對

Step 4. 設定Blue term

Blue term之設定
Blue term APP 開啟

進入Preferences設定,把Local echo和Allow insecure  connections打勾

開啟Connect Device,案下Scan for devices,會找到你的藍芽模組
(藍芽模組名稱可用AT Mode的“ AT+NAME ?”查詢)


根據程式碼內容,案下1為LED開啟,案下0為LED關閉
(LED的開啟關閉在Arduino主版上)
Code:

※也可以使用『SoftwareSerial』函式去模擬TX / RX端口,此範例是直接使用硬體上的TX/RX端口,所以可以不必使用SoftwareSerial函式,此一函式只限定在不使用硬體本身的Digital Pin 1(TX) & Pin 0(RX),專門提供給其他的Digital Port去使用軟體(SoftwareSerial)函式去模擬TX/RX端口


【實作3 藍芽和APP傳訊息】
藍芽和APP傳訊息 接線圖


實作步驟:

Step 1. 不可接藍芽模組燒錄程式碼

Step 2. 接上藍芽模組,藍芽不停閃爍其燈等待配對

Step 3. 使用Blue term連上藍芽模組HC-05

Step 4. 開啟Serial Monitor傳訊息,手機可顯示




Code:

※此實做不可以只宣告一個Serial的Baud Rate,這會導致藍芽晶片跟電腦判斷使用Baud Rate的錯誤,在通常的情況下,是藍芽使用此Baud Rate並直接進入透通模式(測出來的),變成藍芽可以跟電腦溝通,但是電腦沒辦法跟藍芽溝通;所以針對Serial本身要宣告一個Baud Rate給電腦外,藍芽也要一個Baud Rate做切割,就如同使用『Serial Monitor』要針對Code中的Baud Rate做調整,調整成跟Code相同的Baud Rate才可以顯示。


沒有留言:

張貼留言