參考資料:
Bluetooth Low Energy技術及其特點
- BLE是Bluetooth 4.0的一部份
- 特點為:低功耗(很省電,可以用一顆鈕扣般大小的電池,維持運作一年以上的壽命)、低延遲、低吞吐量(傳輸速度低)
- 不需要像傳統的藍芽,一定要經過MFi認證才可與蘋果設備連接。
- 傳輸速率低於100kb/s,而傳統藍芽則大於3mb/s
- BLE、傳統藍芽以及Wifi的比較:
如上圖所示,Wifi、傳統藍芽以及BLE都是在同一個頻段下,左圖紅色部份是三個廣播頻道,避開WIFI了幾個常使用到的頻段,也因此wifi與BLE可以有良好的互存性。在右上的圖代表這三種傳輸方式所需要的供電量,右下的圖則是顯示這三種的傳輸量的比較圖。 - 現有的Bluetooth類型大致有下面三種,左邊的就是BLE,中間的可以連接BLE及傳統藍芽,右邊的只能與傳統藍芽設備或是Bluetooth Smart Ready連接,Bluetooth Smart Ready則可與這三種任何一種進行連接。
- Bluetooth Dual Mode也就是上面所畫的Bluetooth Smart Ready設備,可同時與傳統藍芽以及BLE做連接。和BLE連接時便使用BLE的模式、耗電量也與BLE相同。和傳統藍芽則也是使用傳統藍芽的功耗、傳輸速度及模式。
Bluetooth Low Energy協議
- 分為Controller、Host及App層
- Physical Layer:物理層
- Link Layer:鏈路控制層
- HCI:提供標準藍芽事件及通知層
- Logical Link Control and Adaption Protocol:負責連接和事件
- Security Manager:配對、數據加密這類
- Attribute Protocol:所有數據傳輸經過這層實現(ATT),定義了Client和Server,Client就傳Request,Server傳response。
- Generic Attribute Profile:具體實現數據的傳輸(GATT)。Server上所有的ATT都被實作了,成為一個個的。Services,通過這樣的形式把數據包給Client。把ATT定義的屬性根據不同的服務進行歸類、組合,同時把一系列的讀寫整合起來,成為一系列的數據通信操作流程,提供給上層的Profile去用。
- Generic Access Prifile:設備查找、連接建立(GAP),定義了四個角色
。Peripheral和Central:兩個設備連接後,進行通訊的角色。Peripheral通常是連接外面的設備(從設備),例如說血壓計等等。而Central則是連接主設備,例如手機、電腦等等。Peripheral通常是ATT及GATT的Client,Central通常是ATT及GATT的Server。
。Broadcaster和Observer:兩個設備在不見連接的時後,進行通訊的角色。Broadcaster會通過一個簡單的設備,不斷的把數據丟出去,例如一個單純的溫度計。Observer則接收這些封包把相應的溫度值儲存起來。 - App層:一些PROFILE和一些應用組成。在APP層經過Profile的實做,來做讀寫操作的動作。
Connection parameter連接參數
- 連接參數會直接影響BLE的性能以及功耗,非常重要
- 在兩個BLE設備建立連接以後,所有的通信都是在Connection Event進行通訊,下圖是一張BLE通訊時耗電量的示意圖,橫軸代表時間、縱軸代表耗電量。所以可以看到,設備建立連線的大部份時間,都是處於Sleeping狀態下,並且在此時耗電量很低,這也是BLE省電的主要原因。另外在每次的Connection Event開始時,會由Master發起通訊要求,然後由Slave回覆。
- 參數介紹:
。Connection Interval:多久開始一次Connection Events。這會影響到BLE的傳輸速度和耗電。
。Slave Latency:為了節省Slave的電源,當Slave沒新的事件要傳給Master時,最多可忽略幾個Master發起的通訊要求。
。Supervision Timeout:設定當多久沒有收到任何通訊要求時,中斷連線。
上面數值必需滿足以下條件Supervision Timeout > (1 + Slave Latency) * (Connection Interval)
這是因為Slave Latency不能算在Supervision Timeout裡面,否則會造成不正常斷線 - 上面三個參數都是可以在連線建立之後動態修改的,因此實際應用開發的時候,大家可以根據實際需求配置上面三個參數
產品上市
- 產品要在全球各地的市場上市,要能夠通過SIG的認證(https://www.bluetooth.org/)
- 另外有一個Unplug Fests,可以測試藍芽相關功能
- 相關資訊請看:http://v.youku.com/v_show/id_XNTk4MDU1NDY4.html
蘋果對iOS上的BLE開發要求
- 在連接時iPhone設備時,不能直接取得IEEE的地址,而是取得一個resolvable address。也因此無法直接對iOS設備做advertisements
- 連接參數上,Interval必需大於20毫秒,小於2秒。Supervisor time 小於等於6秒。Slave latency小於等於4秒。
- 在iOS裡,會隱藏藍芽物理地址、Characteristic handles、Characteristic descriptors、以及連接參數。雖然連接參數在iOS裡是可以設定的,但假如在連接後,經由Slave去修改連接參數,則這些被修改的數值是沒辦法取得的。
- 我們無法直接獲得IEEE地址,但在iOS7裡可以使用UUID來進行連線
- 重新連線的狀況:分別看前景、背景、暫停狀況下的設定方式
- 尋找外接設備