上周智能騎行系列的第一篇文章中,小碼哥介紹了自行車選手們可以如何借助Bluetooth Smart 設備提高比賽成績,大家也領略了智能騎行的魅力。(有些妹紙表示圖片撩人熱血,有想流口水的沖動)本篇將繼續從開發者的視角就藍牙騎行技術展開討論。
哪些配置文件必不可少?
與騎行相關的主要配置文件包括:心率配置文件(Heart Rate Profile)、騎行速度和踩踏速率配置文件(CyclingSpeed and Cadence Profile) 、騎行功率配置文件(Cycling PowerProfile)。
心率配置文件使用通知將心率測量結果傳輸至向與之相連的GATT客戶端。通知中包括的不僅僅是心率數據,稍后小碼哥會詳細說明。騎行速度和踩踏速率配置文件也使用通知傳輸數據,每個通知都包含車輪轉數或(和)曲柄轉數數據。騎行功率配置文件也使用“通知”這一超級有用的屬性協議(AttributeProtocol)信息來傳輸數據。
BluetoothDeveloper Studio助力開發
如果你想要深入了解并著手開發,請點擊原文鏈接下載并安裝Bluetooth Developer Studio正式版。它是藍牙技術聯盟新推出的開發工具,是助力開發的神器。其龐大的配置文件、服務、特性和描述符資源庫并不局限于之前所提到的。Bluetooth Developer Studio是探索這些配置文件的絕佳工具,讓開發者能夠通過插件生成代碼,迅速進入開發的實施。
圖1 –Bluetooth Developer Studio
可供下載的智能手機APP
許多配置文件可用的移動應用程序,可以下載并使用。下面列舉的三個是適用于安卓系統的移動應用程序:
Polar Beat
Wahoo 健身
北歐半導體BLE nRF 工具箱
開發專屬你的炫酷APP
如果你是移動開發者,你一定會想要開發自己的Bluetooth Smart應用,尤其是當藍牙技術聯盟或其他設備制造商發布新的配置文件時。而且,隨意結合采用的服務和你自己自定義服務打造自己的自定義配置文件也是完全合法的。
編寫代碼的種類取決于開發所面向的平臺以及開發的是GATT客戶端還是GATT服務器。如果你編寫的是與自行車或選手身上的一種或多種類型的傳感器協同工作的GATT客戶端應用,就需要訂閱包含所需傳感器值的特性的通知,當通知通過BluetoothSmart從傳感器傳輸至設備時,就可以依照代碼對這些通知進行相應處理。
讓我們再進一步觀察一下這三個配置文件,然后我會陸續穿插一些代碼片段。
心率配置文件 (HRM)
這一配置文件包括一項強制性服務,即心率服務;以及一項選擇性服務,即設備信息服務。心率服務定義了以下幾項特性:
心率測量特性值可分解為若干不同的字段,因此接收此特性通知的應用要做的第一件事就是對值數據進行劃分。我們可以從Flags 字段的首字符和0-4比特位中了解心率傳感器的更多功能,以及特性值其余部分的數據形式。例如,表示每分鐘心跳數的心率值可能是8位或16位字段,Flags 字段會以一個特定的通知告訴我們是哪種情況。
一個8位字段能夠保存0-225范圍的值,對于人的心率來說足夠了。一種計算心率理論最大值的方法是220-年齡,所以一個40歲的人心率理論最大值為180。但如果你要用心率測量儀給一只蜂鳥側心率,那這一數值可能在50-1260跳/每分鐘之間,就需要一個16位的值才夠。
圖2 –處理安卓系統中的心率通知
騎行速度和踩踏速率配置文件(CSC)
這一配置文件也有一個強制性的服務,即騎行速度和踩踏速率服務;以及一個選擇性的服務,即設備信息服務。CSC服務定義了以下四個特性:
特性 | 需求 | 注釋 |
CSC 測量 | 強制性 | 車輪轉數數據或/和曲柄轉數數據??赏ㄟ^通知消息發送至客戶端應用。 |
CSC 特性 | 強制性 | 只讀特性,指示是否支持車輪轉數數據或(和)曲柄轉數數據,以及是否支持多重傳感器位置。 |
傳感器位置 | 條件性 | 指示傳感器位置 (如前輪,左曲柄) ,如果支持多重傳感器位置則為必需。 |
SC 控制點 | 條件性 | 允許多個過程的啟動,如傳感器校準。 |
CSC測量特性是應用開發者最感興趣的,它的值也可以分解為若干個字段。首個字節包括一個Flags 字段, 前兩個字節可指示該值是否包含車輪轉數數據或(和)曲柄轉數數據。車輪轉數數據包括一個32位的累計車輪轉數,以及一個代表以1/1024為單位最后一次測量車輪事件的時間的16位的值。曲柄數據包括一個16位的曲柄轉數累計計數,以及一個類似的16位的最后一個事件的時間字段。有了這些數據,客戶端就能夠計算自最后一次事件的車輪轉動或踩踏的平均速度,即便藍牙連接在中間發生過中斷。如果客戶端知道車輪的圓周,那么還可以計算出自最后一次事件之后的行進距離和平均騎行速度。
圖3 – 處理安卓系統中的CSC 通知
騎行功率配置文件(CPP)
這一配置文件定義了四個角色,允許通過兩種完全不同的方式使用騎行功率傳感器。通?!笆占鳌笨梢赃B接至“CP 傳感器”, 發現GATT服務和特性并與之互動。但配置也可以把騎行功率傳感器設置為“CP廣播者“的角色,有一個或多個客戶端作為“CP觀察者”通過無定向不可連接的GAP廣播接收騎行功率數據。在后者的情況下,必須使用Bluetooth Smart傳輸數據,反之也可以通過藍牙BR/EDR調用CP 傳感器和收集器的角色。
請注意,在不同位置(如自行車左右兩側曲柄)安裝、并同時使用多個騎行速率傳感器是十分常見的。騎行功率服務的傳感器位置特性可以適應這一情況。
這一配置文件定義了一項強制性服務(即騎行功率服務)以及兩項選擇性服務(即數據信息服務和電池服務)。其中騎行功率服務定義了以下5項特性。
以上騎行功率測量時大多數應用都會利用的特性。通知可采用GATT用于從CP傳感器向與之相連的采集器傳輸數據。如果這一特性的服務器特性配置描述符被設置為0x01,特性就能采用GAP廣播數據包在服務數據字段中被廣播。
測試客戶端應用
使用藍牙開發板生成模擬傳感器讀數,就可以很更簡單地測試與傳感器設備協調工作的藍牙客戶端應用。這顯然比每次做出改動、安裝應用后都要親自騎車測試便利的多。雖然可能沒有親自騎車那么有趣,但的確非常便利。
我有一些來自不同制造商的開發板,如CSR(已被高通收購)、北歐半導體、藍兆(已被Silicon Labs收購),它們都包括心率配置文件的實施,可以生成模擬心率數據。北歐半導體SDK還包括CSC配置文件。創建常見的配置文件的模擬時,用心率配置文件做模板即簡單、又省事。
圖4 – 適用于北歐半導體nRF1DK的心率配置文件項目
另外,一個叫做LightBlue的iOS和Mac應用能幫助開發者建立Mac、iPhone或iPad的“虛擬外圍設備”, 并支持CSC、HRM、騎行功率等多項配置文件。
資源
BluetoothDeveloper Studio讓開發者能夠快速啟動開發,使用、設計服務和特性,來打造自己的解決方案。這一工具是無價的資源庫,讓開發者能夠創建自己的服務,并了解采用的服務器如何工作。
北歐半導體有一個非常不錯的安卓應用,同時支持心率配置文件、騎行速度和踩踏速率配置文件,以及其他配置文件。源代碼還公布于Github上:
我最初便攜的兩個 Bluetooth Smart APP都是針對BlackBerry 10的心率配置文件、騎行速度和踩踏速率配置文件。兩個應用的代碼現已開源(Blackberry 10 心率監測儀,Blackberry 10 CSC 監測儀),有需要請上網搜索或微信聯系小編。
-
藍牙
+關注
關注
114文章
5866瀏覽量
170971 -
Bluetooth Smart
+關注
關注
0文章
17瀏覽量
9221
發布評論請先 登錄
相關推薦
評論