什么是BLE
BLE全稱Bluetooth Low Energy艾君,即藍(lán)牙低功耗雾家。藍(lán)牙4.0才支持BLE匈辱,藍(lán)牙4.0向下兼容滚粟,包括傳統(tǒng)藍(lán)牙技術(shù)匾浪、高速技術(shù)和低耗能技術(shù)三種規(guī)格请垛。主要用于手機(jī)與周邊設(shè)備進(jìn)行通信遏暴,當(dāng)然也可以用于所有BLE設(shè)備之間的通信班挖。使用BLE可以實(shí)現(xiàn)Android與iOS之間的藍(lán)牙通信枫绅,而普通藍(lán)牙卻不可以泉孩。
BLE利用了許多技術(shù)來降低功耗,了解這些技術(shù)可以解決許多開發(fā)問題并淋。下面分享一下我所了解的知識:
連接間隔
BLE采用可變的連接間隔寓搬,也就是兩個事件之間的間隔,間隔時間以1.25ms為單位县耽。
當(dāng)有數(shù)據(jù)進(jìn)行傳輸時句喷,必須要等到下一個事件的發(fā)生。所以間隔時間越長兔毙,事件發(fā)生的頻率也就越低唾琼,傳輸速率就越慢,功耗就越低澎剥,反之亦然锡溯。
當(dāng)然它也有取值范圍,連接間隔的值為6(7.5ms)~3200(4s)哑姚。Android手機(jī)規(guī)定連接參數(shù)最小是8祭饭,即10毫秒。iOS規(guī)定是16叙量,即20毫秒甜癞。
數(shù)據(jù)包長度
BLE數(shù)據(jù)包的結(jié)構(gòu)跟協(xié)議有關(guān),這里就不分析了宛乃。
BLE數(shù)據(jù)包中有效數(shù)據(jù)的最大長度是27字節(jié),但這27字節(jié)指的是BLE底層的協(xié)議包格式蒸辆。
對于profile層的characteristic(后面會講到)征炼,其最大的長度是20字節(jié),也就是每個包最大的長度是20字節(jié)躬贡。
傳輸速度
Android的BLE最快傳輸速度:20Byte/0.01s=2KB/s谆奥。
但有個原則:只在必要時(傳輸較大的數(shù)據(jù)),才縮短連接間隔拂玻。并且當(dāng)數(shù)據(jù)傳輸完畢后酸些,還原連接間隔宰译。
因?yàn)榭s短間隔會增大功耗,降低電池使用壽命魄懂。
組網(wǎng)方式
藍(lán)牙系統(tǒng)采用一種靈活的無基站的組網(wǎng)方式沿侈,使得一個藍(lán)牙設(shè)備可同時與7個其它的藍(lán)牙設(shè)備相連接。藍(lán)牙系統(tǒng)的網(wǎng)絡(luò)結(jié)構(gòu)的拓?fù)浣Y(jié)構(gòu)有兩種形式:微微網(wǎng)(piconet)和分布式網(wǎng)絡(luò)(Scatternet)市栗。
一個藍(lán)牙網(wǎng)絡(luò)由一個主設(shè)備和一個或多個從屬設(shè)備組成缀拭,它們都與主設(shè)備的時間和跳頻模式同步(以主設(shè)備的時鐘和藍(lán)牙設(shè)備的地址為準(zhǔn))。每個獨(dú)立的同步藍(lán)牙網(wǎng)絡(luò)就被稱為一個微微網(wǎng)(piconet)填帽,有一個主設(shè)備單元和最多7個從設(shè)備單元蛛淋。
所以BLE支持兩種角色,主設(shè)備(Master)和從設(shè)備(Slave)篡腌。Master可以同時與多個設(shè)備通信褐荷;Slave只能和一個Master通信。
BLE通信協(xié)議-GATT
GATT協(xié)議結(jié)構(gòu)
BLE技術(shù)是基于GATT進(jìn)行通信的嘹悼,GATT(Generic Attribute Profile)是一種屬性傳輸協(xié)議叛甫,簡單的講可以認(rèn)為是一種屬性傳輸?shù)膽?yīng)用層協(xié)議。它的結(jié)構(gòu)非常簡單:
結(jié)構(gòu)的組成:
- 每個BLE設(shè)備由多個Profile(GATT)組成
- 每個Profile由多個的Service服務(wù)組成
- 每個Service由多個Characteristic特征組成
- 每個Characteristic由一個Value值和多個Descriptor描述組成
結(jié)構(gòu)的用途:
- Service用于數(shù)據(jù)的分類
- Characteristic用于存放屬性
- Value是Characteristic的屬性值绘迁。而Descriptor則是對Value不同角度的描述和說明合溺,所以有多個Descriptor
GATT基礎(chǔ)知識
GATT通信的雙方是C/S關(guān)系。外設(shè)作為 GATT 服務(wù)端(Server)缀台,它維持了 ATT 的查找表以及 service 和 characteristic 的定義棠赛。中心設(shè)備是 GATT 客戶端(Client),它向 Server 發(fā)起請求膛腐。需要注意的是睛约,所有的通信事件,都是由客戶端(也叫主設(shè)備哲身,Master)發(fā)起辩涝,并且接收服務(wù)端(也叫從設(shè)備,Slave)的響應(yīng)勘天。
GATT連接是獨(dú)占的怔揩。也就是一個BLE外設(shè)同時只能被一個中心設(shè)備連接。一旦外設(shè)被連接脯丝,它就會馬上停止廣播商膊,這樣它就對其他設(shè)備不可見了。當(dāng)設(shè)備斷開宠进,它又開始廣播晕拆。
Service、Characteristic和Descriptor均有一個唯一的UUID標(biāo)識材蹬,UUID既有16位的也有128位的实幕。16位的UUID是經(jīng)過藍(lán)牙組織認(rèn)證的吝镣,是需要購買的,而128位的UUID則可以自定義昆庇,當(dāng)然也有許多通用的UUID末贾。