2014年8月5日 星期二

Bluetooth USB Dongle 初體驗 - Windows 篇 ( 7:免驅;8:BlueSoleil )

Bluetooth USB Dongle ( USB 藍牙卡 ) 是藍牙入門套件其中的一個配件,可至露天賣場訂購:

BTdongle, 2 x 虛擬 COM 連接埠, Windown 7 ( 32-bit )

此篇網頁主要在說明,如何在 Windows 7 ( 32-bit, 文中簡稱 W7-32 ) 和 Windows 8.1 ( 64-bit,文中簡稱 W81-64 ) 中使用套件中的 Bluetooth USB Dongle ( USB 藍牙卡,文中簡稱 BTdongle ) 與 HC-05 互傳文字訊息。


眾所皆知的,Windows 的藍牙介面真的是 "暈倒死",內建功能非常陽春 ! 如果真的要使用藍牙所有強大的功能的話,還要搭配第三方 Bluetooth Stack ( 堆疊軟體 ) 才能完全發揮。而這些功能中,SPP 協議模式能夠讓藍牙裝置有虛擬 COM 連接埠的能力,這樣就可以在兩個藍牙裝置中建立起一條 "無線" 的串列埠連接線,要建立兩者的連線,只要知道雙方通訊使用的 COM 連接埠號碼以及參數即可,就跟一般的 UART 通訊是一樣的 !

因為我的手邊電腦只有 W81-64W7-32,所以實機測試就這兩個 Windows 版本。也很剛好,W7-32 插上 BTdongle 後會自動安裝驅動程式,且直接可使用預設的藍牙介面設定虛擬COM 連接埠;但在 W81-64 就沒這麼幸運了 ! 需要第三方軟體來開啟 BTdongle 的 SPP 功能,而且驅動程式一定要支援 SPP 協議模式,不然即使 BTdongle 被驅動也無法建立虛擬 COM 連接埠。

所以使用 BTdongle 在兩種不同作業系統的實機測試結果如下:
  • Windows 7 ( 32-bit ) 作業系統下
    可以自己安裝 BTdongle 驅動程式,同時也支援 SPP 協議模式,可以很容易的建立與 HC-05 的虛擬 COM 連接埠。

  • Windows 8.1 ( 64-bit ) 作業系統下:
    花了很多時間找了很多種的藍牙軟體安裝測試,最多只有 Generic Bluetooth Radio ( CSR Harmony Wireless Software Stack 2.1.63.0 安裝後 ) 被驅動 ( 不過卻是意外地將我筆電裡的藍牙 4.0 驅動成可支援 SPP 協議模式 ),那可怎麼辦呢 ?
    辦法是有的 ! 使用第三方免費軟體 BlueSoleil ( 流量限制 ),或是使用現有電腦裡的藍牙裝置並依照網頁中所說明的步驟來操作。
不管使用哪一種 USB 藍牙卡或裝置,只要支援 SPP 協議模式就可以使用網頁介紹的方法與 HC-05 連線或被連線。

其他的 BTdongle 藍牙功能就自己再去發掘吧 !

在開始之前,請注意已熟悉 HC-05 的 AT 指令,若是你沒之前沒接觸過或是不熟悉,建議先到下面網頁中了解一下,裡面的 AT 指令操作對於接下來的說明是非常重要的
以下就開始詳細的說明這些操作過程。

Note: HC-05 AT 指令後面都必須加上 \r\n,所以必須確定已勾選 SSCOM 的 "Send New",文中並未特地加上,請特別注意 !!!


BTdongle @ Windows 7 ( 32-bit ):

套件中所附的 BTdongle,在 Windows 7 作業系統下插入後會自動蒐尋驅動程式,所以電腦必須要連上網路避免無法自動安裝。若安裝之後發現不能使用,請至裝置管理員確認 BTdongle 裝置的驅動程式圖示前方是否出現 "驚嘆號" ! 如果是,請先 "移除安裝",再重新插上 BTdongler 讓電腦再自動搜尋安裝驅動程式。


** 硬體基本設置

W7-32 上裝設 BTdongle,而 HC-05 使用 USB 轉串列埠線與 W81-64 連接 ( 若沒有兩台電腦,裝在同一台上也可以。但要確認裝置管理員上面所列出的 COM 連接埠號碼是哪一個,避免與藍牙的虛擬 COM 連接埠搞混了 ! 相關的 COM 連接通訊參數,點擊滑鼠右鍵再選擇內容畫面上的 "連接埠設定畫面" ,就可以看到這些參數 ( 要修改 COM 連接埠通訊參數也是在這裡 )。
COM 連接埠設定 @ Windows


** 在 Windows 7 創建虛擬串列埠 ( Virtual COM Port )

ps. 因為我的 Windows 7 是英文版的,所以有些圖上面的字是英文的,我會盡量寫出中文,不便之處請見諒 !!!

一開始未安裝藍牙裝置之前,桌面右下方不會出現 BTdongle 的藍牙圖示

插上 BTdongle 之後,Win7 會自動安裝驅動程式,要點耐心等一下 !!

好了之後,右下角會出現驅動程式已安裝好可以使用的訊息出現,同時藍牙圖示也會一併出現

BTdongle 驅動程式裝好之後,請注意一件事 !
有些電腦或是筆電會內建藍牙裝置,因此在作業系統裡面會有軟體藍牙開關,開啟它

要讓 BTdongle 能夠與 HC-05 建立連接,HC-05 必須根據 BTdongle 所開啟的串列埠 "搜尋方向" ( 最上方的那張圖片的 Direction ) 屬性來選擇不一樣的連接控制方式,下面是簡單的解釋,更詳細的說明,等完成虛擬 COM 連接埠設定之後,直接操作會更容易清楚。
在 Bluetooth 設定裡, COM 連接埠頁面中的 "方向" 屬性,指的不是的 COM 連接埠的通訊方向而是藍牙虛擬 COM 連接埠與遠端藍牙裝置連線時所使用的 Server / Client 模式選擇,也可說是主 / 從角色的選擇。
為了要完成在 W7-32 虛擬 COM 通訊埠的建立,藍牙裝置必須要能被搜尋,也就是 HC-05 必須處在可被搜尋的狀態。但不必擔心的是,HC-05 預設是從動角色的模式 ( AT+ROLE=0 ),而且是預設可被搜尋的。另外一點,需要知道 HC-05 的內部 COM 通訊參數,預設是 9600 bps, 1 stop bit, None parity bit,也就是 AT+UART=9600,0,0 可使用 AT 指令 AT+UART? 查詢。

HC-05 基本設置都確定之後,點擊桌面右下角的藍牙圖示,選擇 "新增 Bluetooth 裝置(A)" ( Add a Device )。

開啟的視窗會搜尋附近可以連線的藍牙裝置 ( 如果有其他裝置要被搜尋到,就要開啟該藍牙裝置可被搜尋的選項  )
@W7-32,新增 Bluetooth 裝置

由於附近只有 HC-05 藍牙模組預設可被搜尋,所以搜尋到的裝置就只有它。在搜尋到的裝置上用滑鼠點擊一下,進入到密碼配對方式的選擇視窗
@W7-32, 搜尋周邊 SPP 藍牙裝置

這裡有三個選項:第一個,產生一個配對碼;第二個,輸入裝置的配對碼;第三個,不使用配對碼。

請選擇第二個選項,再按下 "NEXT" 進入到輸入密碼的畫面
@W7-32, 藍牙密碼配對方式選擇視窗

輸入HC-05 藍芽模組的配對密碼,如果沒做修改的話,預設是 1234
@W7-32, 輸入藍牙配對密碼 - 01

按下 "NEXT",作業系統就會開始搜尋驅動程式
@W7-32, 輸入藍牙配對密碼 - 02

安裝驅動程式的視窗,會適時地將安裝的過程與狀態回報在上面
@W7-32, 開始安裝驅動程式 - 01
@W7-32, 開始安裝驅動程式 - 02

完成安裝之後,按下 "Close" 離開。
@W7-32, 開始安裝驅動程式 - 03

不知道看著上面的視窗,有沒覺得奇怪 ? 為什麼搜尋及安裝驅動程式的視窗有兩行 ( 也就是要安裝兩個 COM 連接埠的驅動程式 ) ?

因為這與 BTdongle 要作為 SPP 藍牙 Server 或是 SPP 藍牙 Client 有關 !!!


** Incoming ( 連入 ) 與 Outgoing ( 連出 ) 的解釋

驅動程式一旦安裝完成之後,點擊藍牙圖示叫出下面的藍牙設定設窗

畫面上會出現兩個已設定好的虛擬 COM 連接埠,一個是 Incoming ( 連入 ),另一個是 Outgoing ( 連出 )
@W7-32, 藍牙新增/移除虛擬 COM 連接埠頁面
不是只連到一個裝置,而且都是雙向通訊,怎麼會安裝兩個 COM 連接埠 ?

其實為什麼 Windows 7 會自動產生兩個驅動程式,這跟之前在 "HC-05 主從一體藍牙模組初體驗 02 ( AT 指令說明與使用演示、主動角色 ) " 說明的 Server / Client / Master / Slave ( 主 / 從 / 伺服端 / 客戶端 ) 有關
  • Outgoing ( 連出 ):BTdongle 能夠以 Client / Master ( 客戶端 / 主動角色 ) 主動 "連出" ( Outgoing ) 與 HC-05 Server / Slave ( 伺服端 / 從動角色 ) 連線

  • Incoming ( 連入 ):BTdongle 能夠讓 HC-05 以 Client / Master ( 客戶端 / 主動角色 ) 主動 "連入" 與 BTdongle Server / Slave ( 伺服端 / 從動角色 ) 連線

Incoming 與 Outgoing 就是我們曾經在 AT 02 做過的 Master / Slave / Server / Client 的測試。選定不同的 COM 連接埠,代表 BTdongle 是要為主動連接或是被動連接 HC-05;反之,HC-05 必須根據 BTdongle 選用的 COM 連接埠是連入 ( Incoming ) 或是連出 ( Outgoing ) 來設定不同的角色 ( AT+ROLE ) 設定。


** BTdongle 主動連接 HC-05

BTdongle 要主動連接 HC-05,所以在 W7-32 開啟 SSCOM 後,ComNum 要設定為 COM10 ( Outgoing, 連出 ),按下 "Open Com" 按鈕之後,就會馬上與 HC-05 連線,HC-05 上面的藍色 LED 就會馬上改變為配對成功的閃爍狀態 ( 兩秒快閃兩次 )。

等待 W8-64 也開啟 SSCOM 上的 "Open Com" 之後,就可以按下 W7-32 的 SSCOM "SEND" 按鈕送出 "I am BTdongle A W7-32" 的字串到 W81-64 的 SSCOM 通訊視窗上。
@W7-32, SSCOM 通訊畫面

@W81-64,按下 "Win + X",再按下 M 開啟裝置管理員,於 "連接埠 (COM 和 LPT) " 找到 USB 轉串列介面線的 COM 連接埠號碼,並將它輸入到 SSCOM 裡面去。當在 W8-64 的 SSCOM 按下 "Open Com" 按鈕開通與 HC-05 的連線之後,就可以按下 "SEND" 將 "I am HC-05 @ W81-64" 字串送出到 W7-32 的 SSCOM 通訊視窗上。
@W81-64, SSCOM 通訊畫與裝置管理員
要切斷兩個藍牙裝置接的連線,只要在 W7-32 的 SSCOM 按下 "Close Com" 按鈕,則 HC-05 的燈號就會變成為配對的狀態,一秒閃兩次。


** HC-05 主動連接 BTdongle

BTdongle 含有另外一個 Incoming 的虛擬 COM 連接埠還未報使用到,但這個要如何做使用呢 ?

首先,根據上面的說明得知,Incoming 是屬於被動的狀態,因此 HC-05 需要主動地對 BTdongle 連接。由於我們之前已經建立了兩者之間的連接,所以在 HC-05 連紹 BTdongle 的時候,並不需要再對其輸入配對密碼,只要讓 BTdongle 可以被搜尋 ( 預設都是關閉的 ),所以 BTdongle 要啟用可被搜尋的選項。在 W7-32 桌面右下角點擊蘭牙圖示,選擇 "Open Settings" ( 開啟設定 (O) )

在 "Options" ( 選項 ) 頁面,勾選 "Allow Bluetooth devices to find this computer" ( 允許 Bluetooth 裝置尋找這部電腦 ),再按下 "Apply" ( 套用 ) 或是 "OK" ( 確定 ) 關閉視窗
@W7-32, Bluetooth settings

開啟 W7-32 上的 BTdongle 可被搜尋的選項之後,還需要知道 BTdongle 的藍牙位址才能使用 HC-05 連過去,因此必須在 W7-32 中打開 SSCOM 輸入下面 AT 指令
@W81-64, 搜尋 W7-32 BTdongle 藍牙位址

由於我們只開啟一個藍牙裝置,最後的 AT+INQ 指令就會找出 @W7-32, BTdongle 的藍牙位址,實際的位址被我用假設的位址取代了:

BTdongle:03:44:05:0A:0B:CC(文中假設的 BTdongle 藍牙位址)

BTdongle 的藍牙位址知道了,接下來就可以直接使用 HC-05 連過去,下連接的指令

AT_LINK=344,5,A0BCC

一旦 HC-05 連接上了 BTdongle 之後,上面的藍色 LED 指示燈就會變換閃爍的方式為兩秒快閃兩次。等待 W7-32 也開啟 SSCOM 上的 "Open Com" 之後,就可以按下W8-64 的 SSCOM "SEND" 按鈕送出 "I am BTdongle A W81-64, Master Mode" 的字串到 W81-64 的 SSCOM 通訊視窗上。
@W81-64, HC-05 主動連接到 W7-32 BTdongle 並傳送訊息

在 W7-32 的 SSCOM 必須先切換 COM Port 號碼為 COM11 ( incoming 的搜尋方向 ),按下 "Open Com" 按鈕之後,就可以開始與 W7-32 的 SSCOM 做文字通訊了,而按下 "SEND" 按鈕後,就會將字串傳送到 W8-64 的 SSCOM 通訊視窗上。
@W7-32, HC-05 主動連接到 W7-32 BTdongle 並傳送訊息


BTdongle @ Windows 8.1 ( 64-bit ):

BTdongle 在 Windows 8.1 並未有適當或正確的驅動程式會被自動安裝,所以必須使用第三方軟體來輔助,不過在嘗試過很多種驅動程式的安裝之後,只有 BlueSoleil 是最適用的,幾乎所有的藍牙功能都可在 BlueSoleil 中找到,但這不是我們使用 BlueSoleil 的目的。

BlueSoleil 在網路上的版本很多,且可以在對岸找到免費版 ( 但有使用流量的限制 ) 來使用,作為程式開發階段的測試還算 OK !!! 一旦軟體安裝成功,就會自動在插入 BTdongle 時,在桌面右下角產生一個藍牙圖示,使用的方法跟上面在 W7-32 的設置一模一樣。在雲端硬碟中有提供一套試用版本,或是直接上對岸官網或外國原廠,依自己的作業系統版本選擇下載免費版或試用版安裝即可,這裡就不再贅述安裝方法與設定步驟 !

值得注意的是:若 Windows 8.1 電腦中已有藍牙模組,可以看一下你的藍牙裝置是否可以像上面一樣可以設定虛擬 COM 連接埠。如果可以的話,那恭喜你,可以直接拿來跟 HC-05 連線試試 !!! 若是不行,那你就需要安裝第三軟件來試試。

像我的 Windows 8.1 是 Broadcom Bluetooth 4.0,剛開始是不能設定虛擬 COM Port 的 ( 也就是沒這功能 ),所以為了能夠找出一套能讓 Windows 8.1 64-bit 用的驅動程式與軟體,我測試了很多套和很多不同版本的,後來是使用 CSR Harmony 2.1.63.0 安裝之後才莫名其妙地讓我電腦裡片的藍牙模組有了可創建虛擬 COM 連接埠的功能,下載網頁中的 01-BMD704 (Driver) 驅動程式,解壓縮之後就是 CSR Harmony 2.1.63.0 的藍牙驅動,如果你跟我有同樣的問題的話,試試這個驅動程式吧!


結論:

使用 SSCOM 來使用藍牙虛擬 COM 連接埠只是示範,當要使用 Windows 撰寫藍牙通訊程式時,若是傳送文字資料,就可以使用上面介紹的方式,使用串列通訊的方式來撰寫藍牙通訊程式,這將會讓工作非常便利。

雖然在文中沒有提到以及演示,還記得在 "HC-05 主從一體藍牙模組初體驗" 那三篇文章所介紹的那兩個手機程式嗎 ? 用這兩個 APP 來與你所新增的虛擬 COM 連接做連線試試,能夠完成連線,才算是熟悉了文中所說明的方法,相信這不會難倒你的 !

完成了藍牙各配件的硬體與使用介紹之後,相信其硬體接線、指令操作和連接設定都不成問題了,接下來就是進入到開始寫程式的階段。


<< 部落格藍牙相關網頁連結 >>

<<樹莓派編輯環境設置系列文章>>

13 則留言:

  1. 不好意思想請問一下win8 裡 我想連上藍芽4.0的模組 但我在藍芽設備裡都顯示問號不能用該怎麼辦?

    回覆刪除
    回覆
    1. 顯示問號就是驅動程式有問題。藍牙驅動有問題,當然連什麼都連不上!

      刪除
    2. 不好意思想請教你可否跟您聯絡呢關於win8.1和藍芽4.0的問題!!

      刪除
    3. 可以使用電子郵件或是直接在此處詢問!

      刪除
    4. 我想請問說虛擬com連接端怎麼跑出來壓
      我有買一款藍芽4.0的接收器,但都是incoming都沒有outgoing
      然後我的接收器正確安裝驅動程式叫bluetooth 無線電那我用這個去連接我的藍芽4.0模組之後成功但顯示裝置問號,想請教要怎麼做才能向您上面hc05這樣有虛擬連接埠!!
      麻煩您回答了感謝卡了好久!!

      刪除
    5. 不知道您是否真的把這篇網頁全部看過了 ?

      下面這段話的最後一句:在 Windows 中即使藍牙被驅動,也不代表就具備支援 SPP 協議的功能。至於要麼做才能解決,網頁中有說明要麼做,,但這部分您要自己去找到軟體。
      "---------------------
      眾所皆知的,Windows 的藍牙介面真的是 "暈倒死",內建功能非常陽春 ! 如果真的要使用藍牙所有強大的功能的話,還要搭配第三方 Bluetooth Stack ( 堆疊軟體 ) 才能完全發揮。而這些功能中,SPP 協議模式能夠讓藍牙裝置有虛擬 COM 連接埠的能力,這樣就可以在兩個藍牙裝置中建立起一條 "無線" 的串列埠連接線,要建立兩者的連線,只要知道雙方通訊使用的 COM 連接埠號碼以及參數即可,就跟一般的 UART 通訊是一樣的 !

      因為我的手邊電腦只有 W81-64 與 W7-32,所以實機測試就這兩個 Windows 版本。也很剛好,W7-32 插上 BTdongle 後會自動安裝驅動程式,且直接可使用預設的藍牙介面設定虛擬COM 連接埠;但在 W81-64 就沒這麼幸運了 ! 需要第三方軟體來開啟 BTdongle 的 SPP 功能,而且驅動程式一定要支援 SPP 協議模式,不然即使 BTdongle 被驅動也無法建立虛擬 COM 連接埠。
      ---------------------"

      刪除
    6. 真不好意思!!
      那我想請問一下我看我的裝置管理員連接埠那邊有寫藍芽spp驅動程式(com 4) ,藍芽spp驅動程式(com 6
      )那這樣是有代表具備支援spp協議的功能嗎?

      刪除
    7. 順便提一下我的接收器是csr的!!

      刪除
    8. 有些問題已經在網頁中清楚地說明解決的方法,由於我手邊沒有您所使用的設備,因此只能提供結決方法的建議,而這些建議必須由使用者自己去做才能解決!
      既然裝置管理員已經出現 COM 了,剩下來的就是自己動手去連線試試,別人沒辦法幫你操作!

      刪除
    9. 嗨, 你好!

      不知道Bluetooth USB Dongle ( USB 藍牙卡 )

      能不能利用電腦控制手機, 達到雙向的傳輸聲音.

      還是需要另外有音效卡這樣 謝謝你

      刪除
    10. 您好:
      藍牙聲音傳輸有協議,必須要實作這個協議,雙方才能正常傳輸聲音。

      這部分已超出網頁所說的內容,相關資料可以上網再去搜尋。

      刪除
  2. 您好:
    想請問筆電已經有內建藍芽還需要用到BTdongle嗎?

    回覆刪除
    回覆
    1. 使用內建的藍芽也可以,設定方式大抵上一樣!

      刪除