---
tags: Getting Started with Bluetooth Low Energy,BLE,IoT
---
# 1. Introduction
BLE 從藍芽4.0以後才出現,BLE為傳統Bluetooth的輕巧、優化版,***但其實BLE的設計理念與血統跟傳統Bluetooth是完全不一樣的***。
在被SIG(Bluetooth Special Interest Group)採納之前,BLE的前身是Nokia的Wibree。它的設計理念為***最低功耗、低成本、低頻寬、低複雜度*** 的無線廣播(radio)標準。
BLE可能是第一個可以僅靠鈕扣電池便運行很長一段時間的標準。
> BLE might be the first widely adopted standard that can realistically lay claim to running for an extended period of time off a humble coin cell.
## What makes BLE Different
BLE 成為了接納度(adoption rate)很高的標準,這是因為BLE的特色與手機、平板、移動電腦等裝置很合。且手機、平板市場已普及、飽和,***跟其他設備連結應用的需求逐漸提高***。讓BLE在早期就被Apple、三星等大廠採用,因此成為高接納度的標準。
> While the mobile and tablet markets become increasingly mature and costs and margins are decreasing, the need for connectivity with the outside world on these devices has a huge growth potential.
## The Specification
2010年時SIG 發表了藍芽4.0。並於2013年做了第一次重大更新,發表了藍芽4.1,藍芽4.1是目前開發人員開發BLE產品時的主要參考規格書。且藍芽4.1是具有向下兼容性的,可向下兼容4.0的藍芽,更多藍芽版本資訊請參考:
> [bluetooth-core-specification](https://www.bluetooth.com/specifications/bluetooth-core-specification/)
## Configurations
目前的藍芽規格(4.0以後)可以同時包含傳統藍芽與BLE兩種,但它們彼此互不兼容(not directly compatible),且***無線傳輸協定、高層協定層及應用都是不同的***。
### **Based on Specification Support**
![](https://i.imgur.com/ij5kOhw.jpg)
圖中可以看出,Bluetooth Smart僅提供BLE功能(Single-Mode),而Bluetooth Smart Ready則提供傳統藍芽與BLE兩種功能(Dual-Mode)。且能從Bluetooth Smart Ready看出兩標準間的不兼容性。
### **Based on Chip Count**
目前的藍芽技術可以切分成三大部分:
* Application:
應用程式與藍芽協議層(Bluetooth protocol stack)的Interface部分
* Host:
藍芽協議層上層部分
* Controller:
藍芽協議層下層部分,包含無線通訊(radio)
此外,規格書提供一套Host與Controller中間通訊協定- Host Controller Interface(HCI),HCI讓Host能與不同公司生產的Controller溝通。
HCI目前主流實現方法有三種如下圖,詳細介紹內容請自行查閱原書。
![](https://i.imgur.com/PqB5F7m.jpg)
## Key Limitations
> Like all things in engineering, good design is all about ***making the right tradeoffs***, and Bluetooth Low Energy is no different.
BLE並不是全能的,還是有以下關鍵的限制:
### **Data Throughput**
BLE的Modulation Rate(類似訊息傳輸率)被限制為1Mbps,且這只是理論上的上限值,實際應用上還會受到不支援雙向傳輸(bidirectional traffic)、協定過載(protocol overhead)、CPU、無線通訊、軟體限制等因素影響。***實際應用上理想的Modulation Rate為每秒5-10KB(40-80Kbps)***.
原書中有舉例假設試算Modulation Rate,有興趣可以查閱。
### **Operating Range**
無線通訊設備的傳輸距離會受很多因素影響: 操作環境(operating
environment)、天線設計(antenna design)、圍場(enclosure)、方向(device orientation)等,但BLE可想而知的只聚焦在***短距離*** 的通訊。
傳輸功率(dBm)可以決定傳輸距離,但越高的dBm會越耗電。BLE可以承受約30公尺的傳輸距離,但典型的傳輸距離是2-5公尺。
## Network Topology
BLE透過兩種方式與外界溝通: 廣播(broadcasting)、連結(connections),兩種機制都有它的優缺點,且皆依Generic Access Profile(GAP)執行,細節將在第三張說明。
### **Broadcasting and Observing**
使用廣播方式溝通,可以向任何scanning device或receiver發送資料,從圖中可以看出,可以透過廣播方式單向(one-way)發送資料給附近裝置。
![](https://i.imgur.com/MTcce1B.jpg)
廣播(Broadcasting)定義了兩種角色:
* Broacaster:
定期發送nonconnectable advertising packets給附近願意接收的裝置
* Observer:
設定間隔時間並反覆地接收nonconnectable advertising packets
廣播是***唯一可以一次發送給多個裝置*** 的方法,適合傳送小量資料。
標準的advertising packet包含31Bytes的payload,且目前支援提升至62Bytes.
廣播最大的限制為傳送資料***沒有安全與隱私性*** ,任何Observer裝置都能接收,因此不能傳輸機敏資料(sensitive data)。
### **Connections**
連結(Connection)提供***雙向*** 且較大量的訊息傳遞,連結是永久綁定彼此並定期交換封包訊息的模式,因此訊息是較隱私的。
連結包含兩種腳色:
* Central (master):
掃描裝置頻段,找尋是否有匹配的connectable advertising packets,建立連結並初始化後,行為改變為定期與連結裝置交換資料
* Peripheral (slave):
定期發送connectable advertising packets並允許Central的連結請求,當連結建立後,行為改變為配合Central的時段定期交換資料
![](https://i.imgur.com/jlr0R27.jpg)
在藍芽4.1版本規格書中,角色間的限制都被移除了,如:
* 裝置可以同時扮演Central與Peripheral
* Central可以連結多個Peripheral
* Peripheral可以連結多個Central
連結的最大優點是,透過Generic Attribute Profile
(GATT),把資料處理得更好更細節,簡單來說,能將許多services跟characteristics組織起來,一個service能包含多個characteristics,且各services會有自己的訪問權限(access rights)與描述檔(descriptive metadata),詳細方法將在第四章提到。
此外,比起廣播(Broadcasting),連結(Connection)更省電,因為會約定好交換資料時間間隔,不會在沒人接收的情況下發出訊息。
最後,上述溝通方式都是可以混著同時進行的,案例如下圖。
![](https://i.imgur.com/BgVVVos.jpg)
## Protocols versus Profiles
Protocols與Profiles兩者有很明顯的差異:
* Protocols:
Protocol定義、處理了各層(layer)間的種種事: 不同封包格式、路由(routing)、多路傳輸(multiplexing)、編解碼等等
* Profiles:
Profiles的主要功能是定義在不同case下如何使用Protocol
### **Generic Profiles**
規格書中定義的Generic Profiles有兩種:
* Generic Access Profile (GAP)
GAP為BLE控制層中的最頂層,其功能有: 允許裝置進行廣播、發現裝置、建立連結、管理連結、安全性等
* Generic Attribute Profile (GATT)
GATT為BLE數據層中的最頂層,其功能為: 定義基本資料模型和流程並允許裝置發現、讀、寫、推送資料。
三四章將詳細介紹兩Profiles。
### **Use-Case-Specific Profiles**
即使是Use-Case-Specific Profiles依然要基於GATT profile去做延伸,方便未來模組化的重構。
SIG官方有發表了不少基於GATT的Use-Case-Specific Profiles,可至規格書中查閱。除了官方外,許多廠商也會訂出自己的Use-Case-Specific Profiles(ex.蘋果公司提出的iBeacon)。