--- 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)。