最近打算製作一些無線的工具,方便遙距控制一些裝置,通報訊息
HC05模組
外觀
HC05模組 的正面
CSR 的 BC417藍牙晶片
Spansion 的 記憶體晶片
HC05模組 的背面
部分 HC05模組 會提供連接到 BC417藍牙晶片 刷新用的SPI引腳,可以變更 BC417藍牙晶片 的功能
部分 HC05模組 會提供連接到 BC417藍牙晶片 刷新用的SPI引腳,可以變更 BC417藍牙晶片 的功能
引腳
編號 | 引腳 | 方向 | 功能 |
---|---|---|---|
1 | EN | 輸入 | 低電壓或不接電 為 資料模式;高電壓 為 指令模式 |
2 | VCC | 電源,接受 3.6V 至 6V | |
3 | GND | 接地 | |
4 | TXD | 輸出 | UART 發送訊號引腳 |
5 | RXD | 輸入 | UART 接收訊號引腳 |
6 | STATE | 輸出 | 回應HC05狀態: 每100毫秒反覆輸出高低電壓時為資料模式 每2秒反覆輸出高低電壓時為指令模式 |
資料模式
藍牙裝置的 資料模式 是使用 UART通訊協定 傳送及接收訊號
線路原型
HC05模組 雖然有6支引腳,但如果執行資料模式,只需要使用4支引腳便可以與 HC05模組 通訊
VCC 及 GND 接通電路,及接駁 UART通訊協定 的 TXD 及 RXD 到微控制器
VCC 及 GND 接通電路,及接駁 UART通訊協定 的 TXD 及 RXD 到微控制器
實際線路
閣下可能會發現在下將 Arduino Nano 連接 HC05模組,不是使用原生的 TX 及 RX 引腳
原因是 Arduino Nano 的 TX 及 RX 引腳只能在 從機狀態 才能使用
當 Arduino Nano 透過 USB 連接到 電腦 時,屬於 主機狀態,因此不能使用 TX 及 RX 引腳連接 從機 傳送及接收訊號
原因是 Arduino Nano 的 TX 及 RX 引腳只能在 從機狀態 才能使用
當 Arduino Nano 透過 USB 連接到 電腦 時,屬於 主機狀態,因此不能使用 TX 及 RX 引腳連接 從機 傳送及接收訊號
HC05模組啟動時,便會發射藍牙訊號,讓藍牙主機搜尋及連接
LED指示燈 會以 100毫秒 速度閃動
LED指示燈 會以 100毫秒 速度閃動
在下連接 七段顯示器 作簡單測試
使用 Android 測試
Android 裝置通常都內建藍牙功能,連接方法亦比較簡單,因此使用 Android 測試
HC05模組 使用 藍牙2.0 ,只要 Android 能夠搜尋到藍牙訊號,即可連接
在下使用 Serial Bluetooth Terminal ,讓 Android 向 HC05模組 傳送 序列訊號
但 iOS 只可以與具備 藍牙低功耗 (Bluetooth Low Energy (BLE)) 連接
然而 HC05模組沒有 BLE功能,因此暫時無法使用 iOS 測試
在下使用 Serial Bluetooth Terminal ,讓 Android 向 HC05模組 傳送 序列訊號
但 iOS 只可以與具備 藍牙低功耗 (Bluetooth Low Energy (BLE)) 連接
然而 HC05模組沒有 BLE功能,因此暫時無法使用 iOS 測試
開啟 Android 的 藍牙工具,搜尋 HC模組 的名稱
選擇 HC-05 後,HC05模組 需要輸入密碼才能配對
預設的 HC05模組 使用 0000 或 1234 為配對密碼
預設的 HC05模組 使用 0000 或 1234 為配對密碼
開啟 Serial Bluetooth Terminal 到 選單 按 Devices
選擇 HC-05
HC-05 連接後,會顯示綠色標示
回到 Serial Bluetooth Terminal 的 Terminal 會顯示
Connecting to HC-05 ... Connected
Serial Bluetooth Terminal 可以自訂訊號按鈕,方便操作
透過 Android 向 HC05模組 傳送訊號,控制 七段顯示器 顯示十六進制數值
操作前,還要將 Sketch 上載到 Arduino Nano 才有效果
HC05模組 的資料模式預設以 9600鮑率運作,因此都要以 9600鮑率的速度 傳送及接收訊號
另外由於 Arduino Nano 原本的 UART引腳 只能作為 從機使用
因此使用 Arduino 預設的 SoftwareSerial.h 函式庫作為主機 傳送及接收 UART訊號
HC05模組 的資料模式預設以 9600鮑率運作,因此都要以 9600鮑率的速度 傳送及接收訊號
另外由於 Arduino Nano 原本的 UART引腳 只能作為 從機使用
因此使用 Arduino 預設的 SoftwareSerial.h 函式庫作為主機 傳送及接收 UART訊號
#include <SoftwareSerial.h> SoftwareSerial myBlue = SoftwareSerial(3, 2); const byte VCC_PIN = 12; const byte GND_PINS[] = {8, 7, 6, 5, 4, 9, 10, 11}; const byte SEGMENTS[] = {0x3F, 0x06, 0x5B, 0x4F, 0x66, 0x6D, 0x7D, 0x07, 0x7F, 0x6F, 0x77, 0x7C, 0x39, 0x5E, 0x79, 0x71, 0x80}; void setup() { myBlue.begin(9600); pinMode(VCC_PIN, OUTPUT); digitalWrite(VCC_PIN, HIGH); for (byte i = 0; i < sizeof(GND_PINS) / sizeof(byte); i++) { pinMode(GND_PINS[i], OUTPUT); digitalWrite(GND_PINS[i], HIGH); } } void loop() { while (myBlue.available()) { byte b = myBlue.read(); if ('0' <= b && b <= '9') { for (byte i = 0; i < sizeof(GND_PINS) / sizeof(byte); i++) { digitalWrite(GND_PINS[i], ((SEGMENTS[b - '0'] ^ 0xFF) & (1 << i)) > 0); } } else if ('A' <= b && b <= 'F') { for (byte i = 0; i < sizeof(GND_PINS) / sizeof(byte); i++) { digitalWrite(GND_PINS[i], ((SEGMENTS[b - 'A' + 10] ^ 0xFF) & (1 << i)) > 0); } } else if ('a' <= b && b <= 'f') { for (byte i = 0; i < sizeof(GND_PINS) / sizeof(byte); i++) { digitalWrite(GND_PINS[i], ((SEGMENTS[b - 'a' + 10] ^ 0xFF) & (1 << i)) > 0); } } else if (b == ' ') { for (byte i = 0; i < sizeof(GND_PINS) / sizeof(byte); i++) { digitalWrite(GND_PINS[i], ((SEGMENTS[16] ^ 0xFF) & (1 << i)) > 0); } } } }
使用 Minicom 測試
Minicom 是一個數據機通訊軟件,可以向序列裝置傳送訊號
由於普遍 Linux發行版 沒有預裝 Minicom ,需要在 Terminal 輸入
或 在此下載及安裝 Minicom
由於普遍 Linux發行版 沒有預裝 Minicom ,需要在 Terminal 輸入
sudo apt install minicom
或 在此下載及安裝 Minicom
由於 藍牙裝置 有 類別 區分,但 HC05模組 屬於 未分類 (Uncategory)
因此,即使已經與 HC05模組 配對,但控制版面會顯示開關按鈕無法按動
因此,即使已經與 HC05模組 配對,但控制版面會顯示開關按鈕無法按動
雖然 HC05模組 屬於未分類,但仍然可以使用 射頻通訊 (Radio frequency communication (RFCOMM)) 的方法傳送序列訊
由於系統預設未必會包含 射頻通訊裝置,因此需要使用 rfcomm指令 建立 射頻通訊裝置 的 裝置檔案
在 Terminal 輸入
<Bluetooth-MAC-Address> 為 藍牙裝置的地址
由於需要在 /dev 目錄建立 RFCOMM裝置檔案,因此必須使用 sudo 或 root帳戶 才能執行操作
由於系統預設未必會包含 射頻通訊裝置,因此需要使用 rfcomm指令 建立 射頻通訊裝置 的 裝置檔案
在 Terminal 輸入
sudo rfcomm bind hci0 <Bluetooth-MAC-Address>
<Bluetooth-MAC-Address> 為 藍牙裝置的地址
由於需要在 /dev 目錄建立 RFCOMM裝置檔案,因此必須使用 sudo 或 root帳戶 才能執行操作
輸入
-con 使用分類顏色顯示資料,可以不使用
-b 9600 設定 9600鮑率 連接藍牙裝置,預設 115200
-D /dev/rfcomm0 設定 射頻裝置 的位置 為 /dev/rfcomm0 ,預設 /dev/modem
minicom -con -b 9600 -D /dev/rfcomm0
-con 使用分類顏色顯示資料,可以不使用
-b 9600 設定 9600鮑率 連接藍牙裝置,預設 115200
-D /dev/rfcomm0 設定 射頻裝置 的位置 為 /dev/rfcomm0 ,預設 /dev/modem
連接後,控制版面會發現 HC05模組 原本在控制版面無法按動開關 顯示已連接
但仍然無法按動開關
但仍然無法按動開關
雖然 Minicom 還有更新,但 Minicom 仍然使用相對比較舊的操作方法,而且操作不太直觀
執行 Minicom 後,會發現所有按鍵都沒有反應,需要先按 Ctrl+A 後再按 Z 開啟說明選單才了解操作方法
執行基本訊號傳送,需要先啟用 local Echo (Ctrl+A 後按 E) ,才能夠在 Minicom 中直接傳送訊號
執行 Minicom 後,會發現所有按鍵都沒有反應,需要先按 Ctrl+A 後再按 Z 開啟說明選單才了解操作方法
執行基本訊號傳送,需要先啟用 local Echo (Ctrl+A 後按 E) ,才能夠在 Minicom 中直接傳送訊號
在電腦經 藍牙序列通訊 傳送訊號
測試時會發現,HC05模組 接收的速度時快時慢
主要因為 HC05模組 的 工作週期 相比現今的藍牙裝置太慢,顯得有明顯的延遲
不過作為學習或測試用途,並沒有太大問題
主要因為 HC05模組 的 工作週期 相比現今的藍牙裝置太慢,顯得有明顯的延遲
不過作為學習或測試用途,並沒有太大問題
指令模式
指令模式 可以向藍牙模組 傳送設定指令,更改藍牙模組部分設定值
閣下可能會發現 Minicom 的示範中, HC05模組 的名稱是 MyBlue 而不是 HC-05
是因為使用 AT指令 來設定藍牙裝置的資料
由於 HC05 並不支援所有 AT指令,亦並非所有指令都需要使用
因此在下只列出部分常用的指令,閣下有興趣可以自行尋找 AT指令 的清單
閣下可能會發現 Minicom 的示範中, HC05模組 的名稱是 MyBlue 而不是 HC-05
是因為使用 AT指令 來設定藍牙裝置的資料
由於 HC05 並不支援所有 AT指令,亦並非所有指令都需要使用
因此在下只列出部分常用的指令,閣下有興趣可以自行尋找 AT指令 的清單
AT指令
指令 | 回應 | 功能 |
---|---|---|
AT |
OK |
測試指令 |
AT+RESET |
OK |
重新啟動 |
AT+ORGL |
OK OK OK |
回復原始設定 |
AT+VERSION? |
+VERSION:<data> OK |
顯示版本 <data> 為版本
|
AT+ADDR? |
+ADDR:<data> OK |
顯示地址 <data> 為 Mac地址
|
AT+NAME? |
+NAME:<data> OK |
顯示名稱 <data> 為名稱 |
AT+NAME=<data> |
OK |
設定名稱 <data> 為名稱,最長22個位元組字元
|
AT+PSWD? |
+PSWD:<data> OK |
顯示密碼 <data> 為密碼 |
AT+PSWD=<data> |
OK |
設定密碼 <data> 為密碼,必須4個位元組字元
|
AT+CMODE? |
+CMODE: <data> OK |
顯示連接模式 <data> 為連接模式的類型 |
AT+CMODE=<data> |
OK |
設定連接模式 <data> 為連接模式的類型
|
AT+ROLE? |
+ROLE:<data> OK |
顯示角色模式 <data> 為角色模式的類型 |
AT+ROLE=<data> |
OK |
設定角色模式 <data> 為角色模式的類型
|
AT+UART? |
+UART:<data1>,<data2>,<data3> OK |
顯示資料模式的UART <data1> 為 鮑率 <data2> 為 停止位元 <data3> 為 校驗位元 |
AT+UART=<data1>,<data2>,<data3> |
OK |
設定資料模式的UART <data1> 為 鮑率
|
AT+STATE? |
+STATE:<data> OK |
顯示狀態 <data> 為顯示狀態
|
當中
- AT+NAME
- AT+PSWD
- AT+ROLE
- AT+CMODE
會比較常用
接駁線路
基本上與資料模式相同,只是將 EN引腳 連接到高電壓
使用序列監視器傳送 AT指令
現今的電腦已經絕少具備 D-Sub 9 介面
Arduino IDE 的 序列監視器 (Serial Monitor) 可以透過 Arduino 顯示裝置的序列訊號,還能夠將序列訊號傳送到裝置
不需要特殊裝置,而且 Arduino IDE 是跨平台軟件,可以非常簡單地在任何平台監視序列訊號
Arduino IDE 的 序列監視器 (Serial Monitor) 可以透過 Arduino 顯示裝置的序列訊號,還能夠將序列訊號傳送到裝置
不需要特殊裝置,而且 Arduino IDE 是跨平台軟件,可以非常簡單地在任何平台監視序列訊號
進入指令模式時,LED 會每 2秒 閃動
將 Sketch 上載到 Arduino Nano
HC05模組 的指令模式以 38400鮑率運作
#include <SoftwareSerial.h> const byte RX_PIN = 3; const byte TX_PIN = 2; SoftwareSerial myBlue = SoftwareSerial(RX_PIN, TX_PIN); void setup() { myBlue.begin(38400); Serial.begin(9600); } void loop() { while (Serial.available()) { char c = Serial.read(); Serial.print(c); myBlue.write(c); } while (myBlue.available()) { char c = myBlue.read(); Serial.write(c); } }
上載 Sketch 後,開啟 Arduino IDE 的 序列監視器 (Serial Monitor)
由於 AT指令 是以 回車 (Carriage Return (CR)) 及 換行 (Line Feed (LF))
如果需要透過 序列監視器 傳送訊號,先將 結束字符 設定為 Both NL & CR
如果需要透過 序列監視器 傳送訊號,先將 結束字符 設定為 Both NL & CR
序列監視器 可以在文字爛位輸入 AT指令 後按 ENTER鍵 或按 Send按鈕 向 HC05模組 傳送訊號
在 序列監視器 輸入
測試
如果 HC05模組 正常運作,會傳回
給微控調器
AT
測試
如果 HC05模組 正常運作,會傳回
OK
給微控調器
輸入
傳回
表示藍牙名稱
及輸入
傳回
表示配對密碼
AT+NAME?
傳回
+NAME:<藍牙名稱> OK
表示藍牙名稱
及輸入
AT+PSWD?
傳回
+PSWD:<配對密碼> OK
表示配對密碼
輸入
傳回
表示藍牙名稱設定成功
及輸入
傳回
表示配對密碼設定成功
AT+NAME=<藍牙名稱>
傳回
OK
表示藍牙名稱設定成功
及輸入
AT+PSWD=<配對密碼>
傳回
OK
表示配對密碼設定成功
搜尋藍牙裝置 時會發現 更新藍牙名稱 後的 HC05模組
但主機未必會即時顯示新名稱,有時需要連接後才會更新
但主機未必會即時顯示新名稱,有時需要連接後才會更新
輸入 更新後的配對密碼
(雖然配對密碼已經更新,但提示內容仍然顯示 0000 及 1234)
(雖然配對密碼已經更新,但提示內容仍然顯示 0000 及 1234)
補充資料
復原後的設定
閣下可能會發現網上有些教學會使用 按鈕 啟動 HC05模組 的指令模式,但在下卻沒有提及 HC05模組 上的按鈕
原來 HC05模組 的 指令模式,還區分 簡化指令模式 (Mini AT Mode) 及 完整指令模式 (Full AT Mode)
簡化指令模式 只能執行很少 AT指令 ,但在下無法啟動 HC05模組 的 簡化指令模式
因此沒有考慮使用 簡化指令模式
原來 HC05模組 的 指令模式,還區分 簡化指令模式 (Mini AT Mode) 及 完整指令模式 (Full AT Mode)
簡化指令模式 只能執行很少 AT指令 ,但在下無法啟動 HC05模組 的 簡化指令模式
因此沒有考慮使用 簡化指令模式
HC05模組 的指令模式是以 38400鮑率運作,而示範指 序列監視器 要設定為 38400鮑率
但 序列監視器 設定為 38400鮑率,與 SoftwareSerial.h 的 38400鮑率 沒有關係
因此在下並沒有 序列監視器設定為 38400鮑率
但 序列監視器 設定為 38400鮑率,與 SoftwareSerial.h 的 38400鮑率 沒有關係
因此在下並沒有 序列監視器設定為 38400鮑率
另外,在下測試 HC05模組 回復原始設定 指令,發現回復後無法搜尋 HC05模組
網上資料指要將 AT+CLASS 設定為 1 ,但在下的 HC05模組 無法修改 CLASS ,仍然顯示 0x1F00
可能是在下的 HC05模組 與 網上說明的 HC05模組 不完全相同導致
在下查詢 藍牙的 裝置類別 (Class of Device (CoD))
網上資料指要將 AT+CLASS 設定為 1 ,但在下的 HC05模組 無法修改 CLASS ,仍然顯示 0x1F00
可能是在下的 HC05模組 與 網上說明的 HC05模組 不完全相同導致
在下查詢 藍牙的 裝置類別 (Class of Device (CoD))
主類別位元 | 次類別位元 | 十六進制 | 主類別 | 次類別 | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |||
0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0x0000 | 雜項 | 沒有 |
0 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0x0100 | 電腦 | 未分類電腦 |
0 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 0x0104 | 電腦 | 桌上電腦 |
0 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 0x0108 | 電腦 | 伺服器電腦 |
0 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 1 | 1 | 0 | 0 | 0x010C | 電腦 | 手提電腦 |
0 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 0x0110 | 電腦 | 迷你電腦 |
0 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 1 | 0 | 1 | 0 | 0 | 0x0114 | 電腦 | 掌上電腦 |
0 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 1 | 1 | 0 | 0 | 0 | 0x0118 | 電腦 | 穿戴電腦 |
0 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 1 | 1 | 1 | 0 | 0 | 0x011C | 電腦 | 平板電腦 |
0 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0x0200 | 電話 | 未分類電話 |
0 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 0x0204 | 電話 | 蜂巢式電話 |
0 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 0x0208 | 電話 | 無線電話 |
0 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 1 | 1 | 0 | 0 | 0x020C | 電話 | 智能電話 |
0 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 0x0210 | 電話 | 數據機 |
0 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 1 | 0 | 1 | 0 | 0 | 0x0214 | 電話 | 綜合服務數碼網絡 |
0 | 0 | 0 | 1 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0x0300 | 網絡裝置 | 完全使用 |
0 | 0 | 0 | 1 | 1 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 0x0320 | 網絡裝置 | 1%~17%使用 |
0 | 0 | 0 | 1 | 1 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0x0340 | 網絡裝置 | 17%~33%使用 |
0 | 0 | 0 | 1 | 1 | 0 | 1 | 1 | 0 | 0 | 0 | 0 | 0 | 0x0360 | 網絡裝置 | 33%~50%使用 |
0 | 0 | 0 | 1 | 1 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0x0380 | 網絡裝置 | 50%~67%使用 |
0 | 0 | 0 | 1 | 1 | 1 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 0x03A0 | 網絡裝置 | 67%~83%使用 |
0 | 0 | 0 | 1 | 1 | 1 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0x03C0 | 網絡裝置 | 83%~99%使用 |
0 | 0 | 0 | 1 | 1 | 1 | 1 | 1 | 0 | 0 | 0 | 0 | 0 | 0x03E0 | 網絡裝置 | 完全不使用 |
0 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0x0400 | 影音裝置 | 未分類影音裝置 |
0 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 0x0404 | 影音裝置 | 穿戴式耳筒 |
0 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 0x0408 | 影音裝置 | 免手持式裝置 |
0 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 1 | 0 | 0 | 0x040C | 影音裝置 | <保留> |
0 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 0x0410 | 影音裝置 | 麥克風 |
0 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 1 | 0 | 0 | 0x0414 | 影音裝置 | 擴音機 |
0 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 1 | 1 | 0 | 0 | 0 | 0x0418 | 影音裝置 | 耳筒 |
0 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 1 | 1 | 1 | 0 | 0 | 0x041C | 影音裝置 | 攜帶式音響 |
0 | 0 | 1 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 0x0420 | 影音裝置 | 汽車音響 |
0 | 0 | 1 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 1 | 0 | 0 | 0x0424 | 影音裝置 | 數碼視訊轉換器 |
0 | 0 | 1 | 0 | 0 | 0 | 0 | 1 | 0 | 1 | 0 | 0 | 0 | 0x0428 | 影音裝置 | 高品質音響 |
0 | 0 | 1 | 0 | 0 | 0 | 0 | 1 | 0 | 1 | 1 | 0 | 0 | 0x042C | 影音裝置 | 錄影機 |
0 | 0 | 1 | 0 | 0 | 0 | 0 | 1 | 1 | 0 | 0 | 0 | 0 | 0x0430 | 影音裝置 | 影像鏡頭 |
0 | 0 | 1 | 0 | 0 | 0 | 0 | 1 | 1 | 0 | 1 | 0 | 0 | 0x0434 | 影音裝置 | 攝影機 |
0 | 0 | 1 | 0 | 0 | 0 | 0 | 1 | 1 | 1 | 0 | 0 | 0 | 0x0438 | 影音裝置 | 影像監視器 |
0 | 0 | 1 | 0 | 0 | 0 | 0 | 1 | 1 | 1 | 1 | 0 | 0 | 0x043C | 影音裝置 | 影像顯示器及擴音機 |
0 | 0 | 1 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0x0440 | 影音裝置 | 影像會議 |
0 | 0 | 1 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 1 | 0 | 0 | 0x0444 | 影音裝置 | <保留> |
0 | 0 | 1 | 0 | 0 | 0 | 1 | 0 | 0 | 1 | 0 | 0 | 0 | 0x0448 | 影音裝置 | 遊戲及玩具 |
0 | 0 | 1 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0x0500 | 周邊裝置 | 未分類周邊裝置 |
0 | 0 | 1 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 0x0504 | 周邊裝置 | 遊戲控制桿 |
0 | 0 | 1 | 0 | 1 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 0x0508 | 周邊裝置 | 遊戲控制器 |
0 | 0 | 1 | 0 | 1 | 0 | 0 | 0 | 0 | 1 | 1 | 0 | 0 | 0x050C | 周邊裝置 | 遙控器 |
0 | 0 | 1 | 0 | 1 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 0x0510 | 周邊裝置 | 感應裝置 |
0 | 0 | 1 | 0 | 1 | 0 | 0 | 0 | 1 | 0 | 1 | 0 | 0 | 0x0514 | 周邊裝置 | 繪圖板 |
0 | 0 | 1 | 0 | 1 | 0 | 0 | 0 | 1 | 1 | 0 | 0 | 0 | 0x0518 | 周邊裝置 | 讀卡器 |
0 | 0 | 1 | 0 | 1 | 0 | 0 | 0 | 1 | 1 | 1 | 0 | 0 | 0x051C | 周邊裝置 | 數碼筆 |
0 | 0 | 1 | 0 | 1 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 0x0520 | 周邊裝置 | 手持式掃描器 |
0 | 0 | 1 | 0 | 1 | 0 | 0 | 1 | 0 | 0 | 1 | 0 | 0 | 0x0524 | 周邊裝置 | 手勢輸入裝置 |
0 | 0 | 1 | 0 | 1 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0x0540 | 周邊裝置 | 鍵盤 |
0 | 0 | 1 | 0 | 1 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0x0580 | 周邊裝置 | 浮點裝置 |
0 | 0 | 1 | 0 | 1 | 1 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0x05C0 | 周邊裝置 | 複合鍵盤及浮點裝置 |
0 | 0 | 1 | 1 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 0x0610 | 成像裝置 | 顯示器 |
0 | 0 | 1 | 1 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 0x0620 | 成像裝置 | 相機 |
0 | 0 | 1 | 1 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0x0640 | 成像裝置 | 掃描器 |
0 | 0 | 1 | 1 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0x0680 | 成像裝置 | 印表機 |
0 | 0 | 1 | 1 | 1 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 0x0704 | 穿戴裝置 | 手錶 |
0 | 0 | 1 | 1 | 1 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 0x0708 | 穿戴裝置 | 傳呼機 |
0 | 0 | 1 | 1 | 1 | 0 | 0 | 0 | 0 | 1 | 1 | 0 | 0 | 0x070C | 穿戴裝置 | 外套 |
0 | 0 | 1 | 1 | 1 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 0x0710 | 穿戴裝置 | 頭盔 |
0 | 0 | 1 | 1 | 1 | 0 | 0 | 0 | 1 | 0 | 1 | 0 | 0 | 0x0714 | 穿戴裝置 | 眼鏡 |
0 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 0x0804 | 玩具 | 機械人 |
0 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 0x0808 | 玩具 | 汽車 |
0 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 1 | 0 | 0 | 0x080C | 玩具 | 公仔 |
0 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 0x0810 | 玩具 | 控制器 |
0 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 1 | 0 | 0 | 0x0814 | 玩具 | 遊戲 |
0 | 1 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0x0900 | 健康裝置 | 未定義健康裝置 |
0 | 1 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 0x0904 | 健康裝置 | 血壓監測器 |
0 | 1 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 0x0908 | 健康裝置 | 溫度計 |
0 | 1 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 1 | 1 | 0 | 0 | 0x090C | 健康裝置 | 重量計 |
0 | 1 | 0 | 0 | 1 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 0x0910 | 健康裝置 | 血糖計 |
0 | 1 | 0 | 0 | 1 | 0 | 0 | 0 | 1 | 0 | 1 | 0 | 0 | 0x0914 | 健康裝置 | 血氧飽和儀 |
0 | 1 | 0 | 0 | 1 | 0 | 0 | 0 | 1 | 1 | 0 | 0 | 0 | 0x0918 | 健康裝置 | 脈搏監測器 |
0 | 1 | 0 | 0 | 1 | 0 | 0 | 0 | 1 | 1 | 1 | 0 | 0 | 0x091C | 健康裝置 | 健康資料顯示器 |
0 | 1 | 0 | 0 | 1 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 0x0920 | 健康裝置 | 計步器 |
0 | 1 | 0 | 0 | 1 | 0 | 0 | 1 | 0 | 0 | 1 | 0 | 0 | 0x0924 | 健康裝置 | 身體成份分析儀 |
0 | 1 | 0 | 0 | 1 | 0 | 0 | 1 | 0 | 1 | 0 | 0 | 0 | 0x0928 | 健康裝置 | 峰值呼氣監測器 |
0 | 1 | 0 | 0 | 1 | 0 | 0 | 1 | 0 | 1 | 1 | 0 | 0 | 0x092C | 健康裝置 | 藥物監測器 |
0 | 1 | 0 | 0 | 1 | 0 | 0 | 1 | 1 | 0 | 0 | 0 | 0 | 0x0930 | 健康裝置 | 膝關節置換器 |
0 | 1 | 0 | 0 | 1 | 0 | 0 | 1 | 1 | 0 | 1 | 0 | 0 | 0x0934 | 健康裝置 | 腳踝置換器 |
0 | 1 | 0 | 0 | 1 | 0 | 0 | 1 | 1 | 1 | 0 | 0 | 0 | 0x0938 | 健康裝置 | 通用健康管理器 |
0 | 1 | 0 | 0 | 1 | 0 | 0 | 1 | 1 | 1 | 1 | 0 | 0 | 0x093C | 健康裝置 | 個人行動裝置 |
1 | 1 | 1 | 1 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0x1F00 | 未分類 | 沒有 |
根據現存的 裝置類別 顯示,暫時不存在 1 的類別
因此在下繼續閱讀 AT指令表 嘗試自行解決問題,最後在下將 AT+CMODE 設定為 1
才能讓 Android 搜尋到 HC05模組
因此在下繼續閱讀 AT指令表 嘗試自行解決問題,最後在下將 AT+CMODE 設定為 1
AT+CMODE=1
才能讓 Android 搜尋到 HC05模組
除了解裝置類別,還有 裝置服務 (Service of Device (SoD))
SoD位元 | CoD位元(共13位元) | 服務名稱 | ||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|
23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 | 15 | 14 | 13 | 第12至0位元 | |
0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | * | 可見度 |
0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | * | 定位服務 |
0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | * | 網絡服務 |
0 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | * | 渲染服務 |
0 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | * | 擷取服務 |
0 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | * | 傳輸服務 |
0 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | * | 音訊服務 |
0 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | * | 通話服務 |
1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | * | 資訊服務 |
修改名稱問題
還有,當 HC05模組 回復原始設定 後,藍牙裝置的名稱,並非 HC-05 而是 H-C-2010-06-01OK
但其實最後的 OK 是 HC05模組 傳送正確的訊息,因此實際的預設名稱是 H-C-2010-06-01
但其實最後的 OK 是 HC05模組 傳送正確的訊息,因此實際的預設名稱是 H-C-2010-06-01
嘗試在電腦連接 HC05模組 ,發現顯示連接藍牙裝置時的名稱出現斷行
在下被預設名字提示,發現 HC05模組 修改的名稱後的 OK 會在新行顯示,在下估計是因為行尾的 CR 及 LF 導致
因此將 結束字符 更改為 No line ending 後,再傳送 AT+NAME=MyBlue
因此將 結束字符 更改為 No line ending 後,再傳送 AT+NAME=MyBlue
發現 AT+NAME=MyBlue 是能夠正確傳送指令
連接藍牙裝置時的名稱沒有斷行,亦即是設定 藍牙裝置的名稱是不需要使用 CF 及 LF 為結束字元
減去 CF 及 LF ,即是藍牙裝置名稱最長是24個位元組字元
減去 CF 及 LF ,即是藍牙裝置名稱最長是24個位元組字元
總結
HC05模組 是一種常見的 藍牙模組,網絡上有很多示範資料,但在下發現很多示範都是搬字過紙
官方的文件都沒有說明清楚修改名藍牙裝置名稱的正確方式
普遍網上的資料都是使用 Android 為示範效果,而在 Android 中,藍牙裝置的名稱不會顯示 CR 及 LF (或轉換成 空格字元 顯示)
大部分資料都是將內容複製、貼上或將只是轉載內容,根本沒有正式地查證及親自研究
包括恢復原始設定後,要使用 AT+CMODE=1 來解決的方法,在下在網上找不到相關資料(亦可能是在下無法正確搜尋關鍵內容)
更加不要期望會提供經由電腦的序列裝置與藍牙裝置通訊的示範
官方的文件都沒有說明清楚修改名藍牙裝置名稱的正確方式
普遍網上的資料都是使用 Android 為示範效果,而在 Android 中,藍牙裝置的名稱不會顯示 CR 及 LF (或轉換成 空格字元 顯示)
大部分資料都是將內容複製、貼上或將只是轉載內容,根本沒有正式地查證及親自研究
包括恢復原始設定後,要使用 AT+CMODE=1 來解決的方法,在下在網上找不到相關資料(亦可能是在下無法正確搜尋關鍵內容)
更加不要期望會提供經由電腦的序列裝置與藍牙裝置通訊的示範
沒有留言 :
張貼留言