蓝牙学习笔记一

学习蓝牙有一段时间了,整理一下一直来的学习经验与参考资料,供初学者使用. 该学习笔记系列主要记录的是低功耗蓝牙(BLE),经典蓝牙只是简单的描述,因为BlueTooth4.0及以后都是以低功耗为侧重点。
国内对于蓝牙的资料确实很少,而且也不太全面,所以,你要想真正摸透蓝牙规范及协议栈,你最好具备一定的英语水平。

蓝牙里程版本
版本1.0(基本码率 1Mbps)
版本2.0(增强码率 3Mbps)
版本3.0 (交替射频 54Mbps)
版本4.0(低功耗、含前版本功能)
版本4.1(一从多主?)
版本5.0(mesh 组网)

详细版本资料:
http://bbs.mydigit.cn/read.php?tid=1942816
https://zhuanlan.zhihu.com/p/35594074

蓝牙4.0单模与双模
单模是指蓝牙BLE(Bluetooth Low Energy),其特点是功耗更低,可以使电池的使用时间更长,成本更低且传输距离更远。蓝牙 BLE 4.0只能与BT4.0互相传输无法向下兼容(与3.0/2.1/2.0无法相通)。
双模即为蓝牙BLE和经典蓝牙(Classic Bluetooth,在此前的1.1、1.2、2.0、2.1、3.0版本上发展和完善而来)的组合。在拥有蓝牙BLE特点的同时,还向下兼容蓝牙 3.0 、 2.1、2.0标准。

经典蓝牙( BR/EDR ) 通信方式:
蓝牙学习笔记一_第1张图片



BLE 连接建立过程:
蓝牙学习笔记一_第2张图片

在BLE种,要清楚这两种角色,有多种叫法
1、主设备,也叫中心设备(mster, central)
2、从设备,也叫外围设备(slave, peripheral
主设备一般是主动发起连接的设备,从设备一般是发起广播的设备.

在Bluetooth4.0,支持一主多从,支持最多7个从设备. 这个网络叫做 Piconet(微微网),也称为PAN(个人域网络)。

绿色的为 Master ,黑色的为 Slave
蓝牙学习笔记一_第3张图片
在Bluetooth4.1时,蓝牙官方规范文档,在拓扑图中加入Scatternet (散射网),如图:
蓝牙学习笔记一_第4张图片
蓝牙学习笔记一_第5张图片



Scatternet (散射网) 基于多个Piconet网络组成,从而实现 一从多主。 一个从设备最多同时被7个主设备连接。

要想全面了解蓝牙,你必须了解蓝牙规范,可在蓝牙官网下载所有版本的规范文档:
https://www.bluetooth.com/zh-cn/specifications/bluetooth-core-specification/archived-specifications
如果官网的连接失效了, 也可以在这下载。

google 在Android方面对蓝牙的阐述以及接口:
https://developer.android.google.cn/guide/topics/connectivity/bluetooth

蜗窝科技 (概述了整个蓝牙协议的知识面,看完会有个大概的理解)
http://www.wowotech.net/sort/bluetooth

书本《低功耗蓝牙开发权威指南》比较全面地讲解bluetooth4.0,分各个层级讲解蓝牙原理以及如何工作,没有涉及到代码,个人觉得部分内容讲得还不够深入细致。

Android 5.0 谷歌提供了从设备接口,手机端也可以作为从设备,google demo: https://github.com/googlesamples/android-BluetoothAdvertisements

Android 的蓝牙协议栈使用的 bluedroid,Nordic Team 总结了一些 bluedroid 协议栈的问题. 以及如何更新最新的bluedroid。 Nordic 在蓝牙方面还是很有权威的。
https://devzone.nordicsemi.com/b/blog/posts/what-to-keep-in-mind-when-developing-your-ble-andr

android 源码对应蓝牙资料
https://source.android.com/devices/bluetooth/

在iOS与Android系统,如何让BLE最大输出
Maximizing BLE Throughput on iOS and Android
https://punchthrough.com/blog/posts/maximizing-ble-throughput-on-ios-and-android
https://punchthrough.com/blog/posts/maximizing-ble-throughput-part-2-use-larger-att-mtu

android BLE 框架:
SweetBlue https://github.com/iDevicesInc/SweetBlue/wiki/Android-BLE-Issues
RxAndroidBle: https://github.com/Polidea/RxAndroidBle
FastBle: https://github.com/Jasonchenlijian/FastBle

你可能感兴趣的:(蓝牙)