2022年3月23日 星期三

{02}兩輪智能小車-BLE(Bluetooth LE,低功耗藍牙)模組的設定

網頁最後修改時間:2022/03/23

套件的 BLE (Bluetooth LE,低功號藍牙)模組 MLT-BT05 有兩種:一種是有按鈕的;另一種是沒按鈕的。如果單純只是想要改變模組的設定,沒有連線的情況下是不需要這顆按鈕的。

MLT-BT05 在使用之前,必須根據小車主控板的程式來做相對應的參數設定,本篇將針對這些主要的重點部分來做說明,內容有:


/*-/--*-*/*/*/*/***//-*-*-**-*/*-*-/*/*/*-*-/-////--/**/**--**/--///--//**----**//--**//**----***//*-**//*

有購買商品的使用者,網頁中所需相關資料已放置於雲端硬碟,請自行下載使用!

/*-/--*-*/*/*/*/***//-*-*-**-*/*-*-/*/*/*-*-/-////--/**/**--**/--///--//**----**//--**//**----***//*-**//*


*********************************************************************************

更多機器人(多足、智能小車)相關商品,請至分類賣場。

*********************************************************************************


【(01)BLE 模組通訊參數設定】

MLT-BT05 使用 AT 指令進行內部參數的查詢和設定,為了得到與下圖一樣的輸出結果,請跟著文中的說明進行相關參數的設定與了解。

這些指令有:

  • AT
    測試指令。
  • AT+NAME
  • 查詢/設定 BLE 模組名稱。
  • AT+PIN
    查詢/設定配對碼。
  • AT+TYPE
    查詢/設定 BLE 模組身分認證工作類型。
  • AT+ROLE
    查詢/設定主/從模式。
  • AT+BAUD
    查詢/設定序列埠通訊速率。
  • AT+UUID
    查詢/設定 Service(服務)UUID。
  • AT+CHAR
    查詢/設定 Characteristic(特徵)UUID。

該 AT 指令集文件已放置於雲端料夾中,關於 AT 指令更多的詳細說明,請自行參閱文件,下面將只針對與小車程式相關的 AT 指令部分做詳細的說明。

** 上面 Yet Another Terminal 的 Terminal 設定檔已放置於雲端硬碟,有需要可下載後再載入軟體中,畫面就會跟網頁中的一樣。


/*--*//**---/*///**---*-*////***--*/*///***----*///--*/*///**--*/*//**--**/*//
* (01-01)AT 指令的格式

MLT-BT05 的 AT 指令集區分大小寫,每一個 AT 指令的最後,必須加上 \r\n 代表指令的結束,就跟 HC-05 藍牙模組一樣。

大部分每一個 MLT-BT05 的 AT 指令,都有查詢和設定功能,在於 AT 指令名稱的最後,是否加上 <Param> 這個參數做區分,而 <Param> 代表的就是設定值。

例如,要修改 MLT-BT05 的名稱為 bt05,那麼 AT 修改名稱的指令:

AT+NAME<Param>

裡的 <Param> 就要代入bt05,上面指令就要改寫成:

AT+NAMEbt05

這樣就能改變 BLE 模組名稱。

如果要查詢 BLE 模組名稱,就只要輸入 AT+NAME 即可。


/*--*//**---/*///**---*-*////***--*/*///***----*///--*/*///**--*/*//**--**/*//
* (01-02)BLE 模組的 AT 指令

對 BLE 模組所下的 AT 指令後面都必須加上 \r\n,網頁中並不一定會為每個指令特別提起,一定要記得在所使用的軟體中確認這一點,不然是收不到任何回應的!

打開序列埠通訊軟體,設定 UART 通訊速率為 9600 bps(預設值),然後照著下面 AT 指令輸入,修改 MLT-BT05 的參數設定。


** (01-02-01)AT:測試指令

怎麼知道 MLT-BT05 是 OK 的?通訊速率對不對?MLT-BT05 提供了一個簡單的指令,讓我們可以先跟 BLE 裝置說聲 Hello。


** (01-02-02)AT+NAME:查詢/設定 BLE 模組名稱

有時候同時好幾個 MLT-BT05 在一起,為了好區別,就會希望可以修改它的名稱。下面這個 AT 指令,就是用來修改或是查詢名稱的。

假設想要修改 BLE 模組的名稱為 MLT-BT05,那麼 AT 指令就要輸入:

AT+NAMEMLT-BT05

實際執行結果如下:


** (01-02-03)AT+PIN:查詢/設定配對碼

這個配對碼就是 AT+TYPE<Param> 的 <Param> 設定值不是 0 時,連線時會要求輸入的配對碼。基本上小車不需要也不會用到這個配對碼,這裡只是提出來討論一下。

但是有一點要注意一下,接下來各小節中,不管 Windows 10 和 Android 作業系統如何頻繁的提示你要去做配對的動作,要記住!不管如何都不要手賤與 MLT-BT05 做配對(尤其是 Windows 10;Android 可以手動解除配對),否則等一下在各作業系統下的軟體測試就會失敗。

假設想要設定配對碼為 123456,那麼 AT 指令格式應該輸入:

AT+PIN123456

實際執行結果如下:

小車預設的 MLT-BT05 參數配置,不管是 Android(≥ 6.0) 或是 Windows 10 作業系統,是不需要事先與 MLT-BT05 配對的,下面我們來實際測試看看(AT+TYPE0)。

Windows 10 作業系統下,打開 Windows Store 安裝 Bluetooth LE Explorer(這是個開放原始碼的專案,原始碼可以在 Github 下載)。

打開 "Bluetooth LE Explorer",左邊選單選擇 "Discover and Pair",然後在右邊視窗按下 "Start" 按鈕,開始搜尋 BLE 裝置。

如下圖所示,搜尋到三個同樣名稱的 BLE 裝置。

在這些 BLE 裝置圖示中的欄位找 Last Seen 欄位,只有最右邊的那個 BLE 裝置的日期是有效的。在該圖示按下去,就會將該 BLE 裝置(也就是 MLT-BT05)所有的 Services(服務)和 Characteristic(特徵)列表出來。一但開始列表,可以看到 BLE 裝置上的紅燈變成常亮,也就表示現在 Windows 10 已經跟該 BLE 裝置連線上了。

這些服務和特徵的列表裡,橙線框住的部分就是代表 AT+UUIDAT+CHAR 的設定值,與其通訊做讀/寫就是針對該服務的特徵來做。

由下圖右邊的 "設定/藍牙與其他裝置" 的裝置列表可看到 Windows 10 所使用的藍牙裝置型號,裡面並沒有與 MLT-BT05,可以說明不需要做配對的動作就可與 BLE 裝置連線。

接下來,來看看 Windows 10 怎麼跟 BLE 裝置做通訊。

將 MLT-BT05 連接到 UART 轉 TTL 線並插到 Windows 10 電腦上,在電腦打開一個序列埠通訊軟體並與其連線。

按下上圖橙線下中的 Characteristic Name 那一行,就會進入到該特徵的讀、寫和監控畫面(如下圖所示)。照著完成下面的動作順序,就可將字串  Hello BLE 從 Windows 10 發送到 MLT-BT05,反之也可以,可以自己試試!

對於 ESP32 來說,並不需要特別外插 BLE 裝置,因為本身就可以實現出來這功能。為了要讓 ESP32 有相同的功能,了解 BLE 裝置的服務和特徵就很重要,ESP32 關於 BLE 的功能部分,就是實現出來類似 MLT-BT05 相同的通訊方式,之後討論這部分時會再深入一點來做介紹。


** (01-02-04)AT+TYPE:查詢/設定 BLE 模組身分認證工作類型

AT+TYPE 是與 MLT-BT05 連線時,作業系統會不會跳出要求輸入配對碼提示視窗的設定。

小車的這部分採用預設值設定為無密碼,而且也不需要事先與作業系統做配對的動作。但若是改用其他值,就會在進行連線的時候要求你輸入密碼進行配對,但這對於 Android 來說是能正確的操作,對於 Windows 10 來說只要一配對就會出現連線時有時無的狀態,所以維持預設值 AT+TYPE0 就可以!


/*-/--*-*/*/*/*/***//-*-*-**-*/*-*-/*/*/*-*-/-////--/**/**--**/--///--//**----**//--**//**----***//*-**//*

【不同 TYPE 值的測試】

首先,Windows 10 安裝 Bluetooth LE Explorer,Android 安裝 nRF Connect for Mobile,然後依序每下一個指令後,在不同的作業系統中開啟安裝的軟體與 BLE 裝置做連線,會發現:

  • Android:
    打開 "nRF Connect for Mobile" 搜尋("Scan")裝置之後進行連線("Connect"),如果 TYPE 選擇的不是 0,那麼與此同時就會出現要進行配對的通知訊息,這個時候不管你要不要進行配對或是直接移除掉,都可以正常的利用該服務的特徵接收與發送訊息。

  • Windows 10
    !!!不管怎麼樣,不要在 Windows 10 配對小車的 BLE 模組!!!
    打開 "Bluetooth LE Explorer",照著之前同樣的步驟來做測試,你會發現!如果 TYPE 不是 0 的話,而且之前又沒配對的話,作業系統會要求你輸入密碼進行配對,但千萬不要做!千萬不要做!千萬不要做!這裡只是告訴你會出現這樣的情況,但請千萬不要進行配對,因為小車使用 TYPE 等於 0 的設定。

** 不要管其他軟體或是網路上其他文章中說在 Windows 10 一定要先配對才能搜尋 BLE 裝置和其服務與特徵,反正就是不要將小車的 MLT-BT05 與 Windows 10 作業系統做配對,因為只要做過配對有可能之後的 Windows 版本的 PID 循跡控制軟體的通訊就會出現問題,而且我沒有絕對的把握可以幫你解決。如果你不小心配對,那麼可以參考下面的網頁,試著利用它裡面的解決方法,移除掉已配對的 BLE 模組,否則 BLE 模組與 Windows 10 作業系統的 BLE 通訊就會一直存在問題,請特別注意!

Can’t Remove Bluetooth Devices on Windows 10? Try these fixes

在 Bluetooth LE Explorer 點選 BLE 裝置後,搜尋該裝置服務和特徵的同時就會建立連線,也就是說在 "Device Services Page" 頁面中的 Device Connected: 欄位值必須要為 True,這時選擇特徵進行相關的讀、寫和監控才會正常,如下圖所示。

一但做了配對,那麼這個欄位就會出現 True / False 交替的情況,之後就別想跟 MLT-BT05 正常通訊了!

所以不要做沒說要做的動作!

/*-/--*-*/*/*/*/***//-*-*-**-*/*-*-/*/*/*-*-/-////--/**/**--**/--///--//**----**//--**//**----***//*-**//*


** (01-02-05)AT+ROLE:查詢/設定主/從模式

小車所使用的 BLE 模組 MLT-BT05 有主/從兩種透傳模式可以選擇:

  • 主模式(Master Mode):MLT-BT05 作為主模式,所以要自己去找尋其他 BLE 從模式模組連線。
  • 從模式(Slave Mode):MLT-BT05 作為從模式,等待主模式的 BLE 模組與其連線。

小車的 MLT-BT05 採用從模式透傳,所以請輸入下面 AT 指令進行變更:

AT+ROLE0


** (01-02-06)AT+BAUD:查詢/設定序列埠通訊速率

如下表所示,MLT-BT05 支援 7 種 UART 通訊速率。

MLT-BT05 預設的通訊速率為 9600bps,但小車使用的通訊速率為 115200 bps,所以根據上表要輸入下面的 AT 指令,改變現有預設 UART 通訊速率為 115200 bps:

AT+BAUD8

送出指令返回 OK 後,設定的 UART 通訊速率就會生效,記得改成 115200 bps,再繼續下面的參數設定!


** (01-02-07)AT+UUID:查詢/設定 Service(服務)UUID

每一個 BLE 模組會有多個服務,而每一個服務下面又有多個特徵,但不管是服務或特徵都有其代表的 UUID(通用唯一識別碼,Universally Unique IDentifier),這個號碼是不能隨便亂寫的,有它的要求和限制在。


/*-/--*-*/*/*/*/***//-*-*-**-*/*-*-/*/*/*-*-/-////--/**/**--**/--///--//**----**//--**//**----***//*-**//*

引用來源:BLE 常用標準 UUID

藍牙核心規範制定了兩種不同的 UUID,一種是基本的 UUID,一種是代替基本 UUID 的 16 位 UUID。 所有的藍牙技術聯盟定義 UUID 共用了一個基本的 UUID

0x0000xxxx-0000-1000-8000-00805F9B34FB

為了進一步簡化基本 UUID,每一個藍牙技術聯盟定義的屬性有一個唯一的 16 位 UUID,以代替上面的基本 UUID 的『x』部分。 例如,心率測量特性使用 0X2A37 作為它的 16 位 UUID,因此它完整的 128 位 UUID 為:

0x00002A37-0000-1000-8000-00805F9B34FB

雖然藍牙技術聯盟使用相同的基本 UUID,但是 16 位的 UUID 足夠唯一地識別藍牙技術聯盟所定義的各種屬性。

藍牙技術聯盟所用的基本 UUID 不能用於任何定製的屬性、服務和特性。 對於定製的屬性,必須使用另外完整的 128 位 UUID

/*-/--*-*/*/*/*/***//-*-*-**-*/*-*-/*/*/*-*-/-////--/**/**--**/--///--//**----**//--**//**----***//*-**//*


根據上面引用的說明可以知道,這裡對於服務(AT+UUID<Param>)和特徵(AT+CHAR<Param>)的設定,就是將 16-bit UUID (<Param>)加在基本 UUID 紅字的部分。

一般不需要再去修改此部分的預設設定,若是想修改服務的 UUID 名稱,例如修改為 0xFFE0,那麼 AT 指令應該下:

AT+UUIDFFE0


** (01-02-08)AT+CHAR:查詢/設定 Characteristic(特徵)UUID

這個特徵是屬於上面服務的下層,它的 UUID 與上面服務的設定有著相同的要求和限制。

一般不需要再去修改此部分的預設設定,若是想修改服務特徵的 UUID 名稱,例如修改為 0xFFE1,那麼 AT 指令應該下:

AT+CHARFFE1

不管是修改 BLE 模組的服務和特徵的設定值,都會影響控制端軟體的通訊設定。對於遙控車來說,BLEJoystick 可讓用戶自行修改服務和特徵的 UUID 值,但是對於 PID 循跡車來說,PCTCGUI 因為沒有開放這選項,所以不行!


【結論】

小車套件分類,只有 Arduino UNO 作為主控板,通訊會需要用到 MLT-BT05 BLE 模組。預設的 MLT-BT05 參數設定值中,其實只有 UART 的通訊速率需要做變更,其他的維持預設值即可。

會特別提出這幾個參數來介紹,是因為在多機環境中,可以藉由這些參數來識別出不同小車,也能藉由了解這些參數認識 BLE。多學習,有好處無壞處!


.

.


<<部落格相關文章>>


.

.

沒有留言:

張貼留言

留言屬名為"Unknown"或"不明"的用戶,大多這樣的留言都會直接被刪除掉,不會得到任何回覆!

發問問題,請描述清楚你(妳)的問題,別人回答前不會想去 "猜" 問題是什麼?

不知道怎麼發問,請看 [公告] 部落格提問須知 - 如何問問題 !