《低功耗藍芽開發權威指南》——1.2節設計目標
本節書摘來自華章社群《低功耗藍芽開發權威指南》一書中的第1章,第1.2節設計目標,作者 (英)Robin Heydon,更多章節內容可以訪問雲棲社群“華章社群”公眾號檢視
1.2 設計目標
評論一種技術,一個首先浮現的問題是設計者是如何優化該技術的。大多數技術通常具有一定的適用性,也會有一兩項顯著的優勢。而瞭解這些優勢對於加深對該技術的理解將大有裨益。
對於低功耗藍芽而言,答案非常簡單。它的設計目標就是實現最低的能耗。藍芽SIG的一個獨特之處在於該組織制定並控制從物理層到應用程式的所有層次。SIG在一個合作、開放、由商業驅動的標準化模式下執行,在過去的十多年間不斷優化無線規範的制定流程,使得藍芽規範在釋出之後不但可以立即使用,而且具有互通性、魯棒性以及極高的質量。
在設計之初,低功耗藍芽的目標在於儘可能創造一種最低功率的、短距離的無線技術。為了實現這一目標,低功耗藍芽技術對體系結構的每一層都進行了優化,以降低執行任務所需的能耗。例如,與經典藍芽相比,低功耗藍芽對於物理層的無線電參量要求有所放寬,意味著傳送或接收資料時可以使用更低的功率。同樣,鏈路層為了加快重連速度、提升資料廣播的效率也進行了優化,這使得連線的保持變得不那麼重要。此外,低功耗藍芽對主機內各協議也做了優化,主要是為了減少從連線建立到應用程式完成資料傳送所需的時間。這一切的優化只有依靠同一團隊在同一時間完成所有的系統設計才有可能實現。
藍芽技術最初的設計目標並未被人們遺忘,主要包括以下幾個方面:
全球操作
低成本
魯棒性
短距離
低功耗
全球操作,需要一個在世界範圍內都能使用的無線頻段。2.45GHz頻段是目前唯一一個可實現低成本、大批量製造的頻段。該頻段之所以可用,是因為它對天文學家、手機運營商或其他商家來說並沒有什麼吸引力。不幸的是,正如其他的“免費午餐”那樣,當人人都想分一杯羹時,擁擠就在所難免。當然還有其他一些可用的無線頻段,比如60GHz ISM頻段,但從低成本的角度來看並不適用; 800/900MHz區間的頻段也可使用,但由於不同的國家或地區對具體使用頻率的定義和使用規定各有不同,同樣缺乏可操作性。
低成本的設計目標很有意思,因為它意味著系統應該儘可能做到簡潔、高效。舉個例子,儘管可以在低功耗藍芽加入分散網(scatter net)或完整的網狀網(mesh)支援,但這要求有更多的記憶體和處理能量來維護網路,從而增加了成本。所以,低功耗藍芽系統在進行低成本優化時,並沒有涉及在學術界廣泛研究的網路拓撲學。
低功耗藍芽使用的2.45GHz頻段已經非常擁擠,僅僅考慮標準的技術就包括:經典藍芽、低功耗藍芽、IEEE 802.11、 IEEE 802.11b、IEEE 802.11g、 IEEE 802.11n以及 IEEE 802.15.4。另外,許多私有的無線電同樣使用這個頻段,包括X10視訊中繼器、無線警報、鍵盤和滑鼠等。許多其他裝置也會在該頻段發射噪聲,例如街燈和微波爐。
因此,除非沿用經典藍芽的自適應跳頻技術,否則設計一個能在各種干擾下全天候工作的無線裝置將是不可能完成的任務。自適應跳頻不僅有助於迅速確定干擾源,從而在未來靈活地規避,而且能從無線電波干擾引發的丟包中迅速恢復。任何無線技術只有具備這樣的魯棒性才能從擁擠的無線頻段裡脫穎而出。
魯棒性還包括檢測和糾正位元誤碼的能力,這類錯誤通常由背景噪聲而引起。少數短距離無線標準使用長迴圈冗餘校驗(CRC),但大部分標準做了折中,使用較短的CRC校驗碼。優良的設計應在校檢能力和傳送校驗資訊所需的時間之間取得平衡。
短距離實際上存在一些問題。比如,如果想得到一個低功耗的系統,就必須儘可能降低傳輸功率以減少用於訊號傳輸的能量。類似地,我們必須在接收方保持較高的靈敏度,才能減少從一大片噪聲中採集裝置的無線訊號時所消耗的能量。在這裡,“短距離”真正的含義在於低功耗藍芽網路並不是一個蜂窩基站系統,而是一個個人區域網。
藍芽的最初設計目標在設計低功耗時並沒有太多改變,只是後者將能量的消耗目標降低了一到兩個數量級。經典藍芽的設計目標是能夠實現長達幾天的待機以及實現若干小時的與頭戴耳機通話,而低功耗藍芽的設計目標是讓測量氣溫或測量你的步行距離的感測器能夠工作幾年時間。
相關文章
- 低功耗藍芽(5)藍芽
- 低功耗藍芽(2)藍芽
- 低功耗藍芽(3)藍芽
- BLE低功耗藍芽藍芽
- MASA MAUI Plugin 安卓藍芽低功耗(一)藍芽掃描UIPlugin安卓藍芽
- MASA MAUI Plugin IOS藍芽低功耗(三)藍芽掃描UIPluginiOS藍芽
- iOS藍芽開發 Bluetooth藍芽CoreBluetooth 藍芽中心裝置的實現 藍芽外設的實現 有DemoiOS藍芽
- iOS藍芽開發iOS藍芽
- Android 低功耗藍芽的那點事Android藍芽
- 《ExtJS權威指南》——2.6節關於字型JS
- Android 低功耗藍芽簡單整合記錄Android藍芽
- Git權威指南Git
- HTTP權威指南HTTP
- 基於Neptune開發板的鍵盤藍芽模組DIY指南藍芽模組
- iOS 藍芽開發 - swift版iOS藍芽Swift
- Android開發--藍芽操作Android藍芽
- 微信小程式藍芽開發微信小程式藍芽
- 《ExtJS權威指南》——2.2節配置使用ExtJS庫JS
- Android 傳統藍芽開發Android藍芽
- iOS 藍芽開發·基礎篇iOS藍芽
- Android 藍芽音響開發Android藍芽
- iOS藍芽4.0(BLE)開發(一)iOS藍芽
- 使用RxJava幫助低功耗藍芽(BLE)進行通訊RxJava藍芽
- JavaScript 日期權威指南JavaScript
- Netty權威指南Netty
- 《ZeroC Ice權威指南》
- 讀《Cassandra權威指南》
- Swift程式設計權威指南第2版 讀後收穫Swift程式設計
- Android程式設計權威指南 - 第10章 使用fragment argumentAndroid程式設計Fragment
- AirBuddy技巧:如何檢查您的Mac是否支援低功耗藍芽AIMac藍芽
- 有線HHKB藍芽化改造指南藍芽
- iOS藍芽Mesh開發總結一iOS藍芽
- iOS藍芽Mesh開發總結二iOS藍芽
- React Native 藍芽4.0 BLE開發React Native藍芽
- Android藍芽開發流程實踐Android藍芽
- iOS藍芽4.0開發基礎教程iOS藍芽
- Android藍芽開發全面總結Android藍芽
- 安卓微信小程式開發之“藍芽”安卓微信小程式藍芽