【Bluetooth|蓝牙开发】二、蓝牙开发入门
个人主页:董哥聊技术
我是董哥,嵌入式领域新星创作者
创作理念:专注分享高质量嵌入式文章,让大家读有所得!
【所有文章汇总】
1、蓝牙基础概念
蓝牙,是一种利用低功率无线电,支持设备短距离通信的无线电技术,能在包括移动电话、PDA、无线耳机、笔记本电脑、相关外设等众多设备之间进行无线信息交换,蓝牙工作在全球通用的2.4GHz ISM
(即工业、科学、医学)频段,使用IEEE802.11
协议。
2、蓝牙发展历程
自1994年由爱立信推出至今,蓝牙技术已经走过了20个岁月。从最初的Bluetooth V1.0
,到Bluetooth V5.2
,经历了近9个版本的修订后,发展为当前的状况。
“蓝牙”的形成背景是这样的:
1998 年 5 月,爱立信、诺基亚、东芝、 IBM和英特尔公司等五家著名厂商, 在联合开展短程无线通信技术的标准化活动时提出了蓝牙技术,其宗旨是提供一种短距离、 低成本的无线传输应用技术。
芯片霸主 Intel 公司负责半导体芯片和传输软件的开发,爱立信负责无线射频和移动电话软件的开发, IBM 和东芝负责笔记本电脑接口规格的开发。
1999 年下半年,著名的业界巨头微软、摩托罗拉、三星、朗讯与蓝牙特别小组的五家公司共同发起成立了蓝牙技术推广组织,从而在全球范围内掀起了一股“蓝牙”热潮。
全球业界即将开发一大批蓝牙技术的应用产品, 使蓝牙技术呈现出极其广阔的市场前景,并预示着 21 世纪初将迎来波澜壮阔的全球无线通信浪潮。
- 第一代蓝牙:关于短距离通讯早期的探索,使用的是BR技术,此时蓝牙的理论传输速率,只能达到721.2Kbps。
- 第二代蓝牙:新增的 EDR(Enhanced Data Rate)技术,使得蓝牙设备的传输率可达 3Mbps。
- 第三代蓝牙:核心是 AMP(Generic Alternate MAC/PHY),这是一种全新的交替射频技术,支持动态地选择正确射频,传输速率高达 24Mbps
- 第四代蓝牙:主推” Low Energy”低功耗,
BLE(Bluetooth Low Energy)
低功耗功能 - 第五代蓝牙:开启「物联网」时代大门,在低功耗模式下具备更快更远的传输能力
3、蓝牙技术概述
蓝牙协议包括两种技术:BR:Basic Rate
和LE:Low Energy
。这两种技术都包括搜索(discovery)
管理、连接(connection)
管理等机制,但它们是相互独立的,不能互通的技术!
厂商如果只实现了一种,那么只能与同样实现该技术的设备互通。
如果厂商要确保能和所有的蓝牙设备互通,那么就只能同时实现两种技术,而不去管是否真的需要。
3.1 Basic Rate(BR)
BR:Basic Rate
是正宗的蓝牙技术,可以包括**可选(optional)的EDR(Enhanced Data Rate)
技术,以及交替使用的(Alternate)**的MAC(Media Access Control)
层和PHY层扩展(简称AMP(Alternate MAC and PHY layer extension)
)。
BR
:最早期的蓝牙技术,速度只能达到721.2Kbps
,在那个年代,已为高大上了。EDR
:随着技术的提升,使用EDR
技术的蓝牙,理论速率可以达到2.1Mbps
。AMP
:使用AMP
技术的蓝牙,理论速率可以达到54Mbps
。
AMP
的Alternate交替使用
体现在:由于蓝牙自身的物理层和AMP技术差异太明显,BR/EDR
和AMP
是不能同时使用的。简单的说,就是:
BR
和EDR
是可以同时存在的,但BR/EDR
和AMP
只能二选一
3.2 Low Energy(LE)
上面所讲的BR技术的进化路线,就是传输速率的加快、加快、再加快。
但能量是守恒的,你想传的更快,代价就是消耗更多的能量。而有很多的应用场景,并不关心传输速率,反而非常关心功耗。
这就是
Bluetooth LE
(称作蓝牙低功耗)产生的背景。
从它的英文名字上就可以看出它是一种低功耗蓝牙技术,是蓝牙技术联盟设计和销售的一种个人局域网技术,旨在用于医疗保健、运动健身、信标、安防、家庭娱乐等领域的新兴应用。
低功耗蓝牙与经典蓝牙使用相同的2.4GHz
无线电频率,因此双模设备可以共享同一个天线。低功耗蓝牙使用的调制系统更简单。
LE
技术相比BR
技术,差异非常大,或者说就是两种不同的技术,凑巧都加一个“蓝牙”的前缀而已。
目前BLE
主要广泛应用于IoT产品领域。
4、常见蓝牙架构
市面上,大致有几种蓝牙架构:
4.1 SOC蓝牙单芯片方案
一般是半导体厂商半开源协议栈,把开发的蓝牙协议栈直接烧写到蓝牙芯片中,(比如CSR BC4/5,CSR8670,CSR8675,TI CC2540,NRF51xxx,NRF52xxx,乐鑫ESP32等等),架构如下:
此类芯片一般可以直接做为MCU用,这类产品一般用于消费类电子,集成度很高,调调部参数可以直接使用,常见的有蓝牙耳机等产品。
4.2 SOC蓝牙+MCU方案
在集成好的蓝牙芯片基础上,通过特定的接口(UART居多),发送自定义的command
来达到想要的功能。比如发送0x01代表搜索周围设备…
此部分的应用,将蓝牙作为一个外设使用,用于远程通信。
例如网上卖的一些蓝牙串口。
4.3 蓝牙host + controller分开方案
这种应用算是蓝牙最复杂的应用,客户需要使用蓝牙的场景有很多,牵涉到的蓝牙协议也有很多,需要将Host
与Controller
分开,集成更多的蓝牙协议,比如蓝牙电话(HFP),蓝牙音频(A2DP),蓝牙音乐控制(AVRCP),蓝牙电话本(PBAP),蓝牙短信(MAP)等。
其中Transport
是一个协议,H2
就是在USB
的基础上的协议,H4,H5,BCSP
是UART基础上的协议,当然还有SDIO
。
此部分应用,将定制蓝牙的各种服务,实现蓝牙多功能需求,
4.4 使用场景
大概列举了以下几种,帮助理解:
1)手机 -> 手机的蓝牙复杂应用,注定要用第3种方案,也就是蓝牙协议栈(host)在主芯片中,蓝牙芯片为HCI架构的
2)蓝牙音响,蓝牙耳机 -> 此种应用一般用单芯片方案就能hold住,比如CSR8670/8675/杰理蓝牙等,好处在于开发便捷
3)蓝牙手表 -> 手表要看功能复杂性,如果仅仅有时间显示,传感器交互,蓝牙,那么可以选择单芯片方案(也就是方案1),如果有网络等比较复杂的功能就要使用MCU+蓝牙芯片方案(也就是方案3)了
4)蓝牙手环,蓝牙心率带等 -> 基本上是单芯片方案
5、参考文档
[1]:蓝牙官网:https://www.bluetooth.com/
[2]:https://blog.csdn.net/XiaoXiaoPengBo/article/details/107466841
[3]:https://zhuanlan.zhihu.com/p/43516534
【Bluetooth|蓝牙开发】二、蓝牙开发入门的更多相关文章
- SpringBoot开发二十-Redis入门以及Spring整合Redis
安装 Redis,熟悉 Redis 的命令以及整合Redis,在Spring 中使用Redis. 代码实现 Redis 内置了 16 个库,索引是 0-15 ,默认选择第 0 个 Redis 的常用命 ...
- PHPCMS V9 模块开发 二次开发实例 留言本
鄙人实现了PHPCMS V9 产品开发权威指南(2011官方最新版).doc中的留言板实例,并加上模块安装和卸载功能, 程序可以运行,但只实现基本功能,目的是想让和我一样徘徊在PHPCMS门口不知道从 ...
- EasyDSS点播与直播服务器软件-二次开发接口对接说明示列
EasyDSS流媒体服务器软件,提供一站式的转码.点播.直播.时移回放服务,极大地简化了开发和集成的工作.其中,点播版本主要包含:上传.转码.分发.直播版本,主要包含:直播.录像, 直播支持RTMP输 ...
- EasyDSS高性能RTMP、HLS(m3u8)、HTTP-FLV、RTSP流媒体服务器软件二次开发接口对接说明示列
EasyDSS相关功能 EasyDSS流媒体服务器软件,提供一站式的转码.点播.直播.时移回放服务,极大地简化了开发和集成的工作.其中,点播版本主要包含:上传.转码.分发.直播版本主要包含:直播.录像 ...
- ArcGIS二次开发的几种方式
1.ArcEngine开发 二次开发的常用方式,开发提供接口齐全,功能强大,比较成熟.但是,开发的软件使用需要指定版本的运行环境才能运行. 2.Addin开发 二次开发与ArcMap嵌入,开发方便,可 ...
- Jmeter二次开发——基于Java请求
简述 这近几年,越来越多非http的协议需要进行性能测试,包括不仅限于各类rpc.mq.缓存等.对于这些协议,市面上可能没有现成的工具可以直接使用,这个时候,我们可以自己动手,通过编写相应的JavaS ...
- 【视频】零基础学Android开发:蓝牙聊天室APP(二)
零基础学Android开发:蓝牙聊天室APP第二讲 2.1 课程内容应用场景 2.2 Android UI设计 2.3 组件布局:LinearLayout和RelativeLayout 2.4 Tex ...
- iOS开发之蓝牙通讯
iOS开发之蓝牙通讯 一.引言 蓝牙是设备近距离通信的一种方便手段,在iPhone引入蓝牙4.0后,设备之间的通讯变得更加简单.相关的蓝牙操作由专门的CoreBluetooth.framework进行 ...
- 使用BleLib的轻松搞定Android低功耗蓝牙Ble 4.0开发具体解释
转载请注明来源: http://blog.csdn.net/kjunchen/article/details/50909410 使用BleLib的轻松搞定Android低功耗蓝牙Ble 4.0开发具体 ...
- iOS开发之--蓝牙开发实战
转载自:http://www.cnblogs.com/zyjzyj/p/6029968.html ,感谢英杰 前言 最近一直在开发关于蓝牙的功能,本来是不想写这一篇文章,因为网上关于ios蓝牙开发的文 ...
随机推荐
- Excelize 2.3.2 发布,Go 语言 Excel 文档基础库,2021 年首个更新
Excelize 是 Go 语言编写的用于操作 Office Excel 文档基础库,基于 ECMA-376,ISO/IEC 29500 国际标准.可以使用它来读取.写入由 Microsoft Exc ...
- day25--Java集合08
Java集合08 15.HashTable 15.1HashTable的基本介绍 存放的元素是键值对:即K-V HashTable的键和值都不能为null HashTable的使用方法基本上和Hash ...
- 微信小程序/校园社区论坛/微信云开发/云函数
一.框架来源 1.非常非常感谢B站up主"梦千的曾哥哥"的开源框架. 没有他就没有这个小程序.如果有想做的同学,可以直接移步他的视频那里开始学习.我水平不够,就不教具体怎么配置环境 ...
- python中的画图神器——turtle模块
turtle库的基础命令介绍(1)画布画布cancas是绘图区域,可以设置它的大小和初始位置 turtle.screensize(1000,600,'red') 大小的设置 turtle.setup( ...
- n【c#】委托:delegate 学习笔记
类似于c/c++的指针,只不过c#的委托存储的是某个方法的调用,派生子System.Delegate
- 「题解报告」 P3167 [CQOI2014]通配符匹配
「题解报告」 P3167 [CQOI2014]通配符匹配 思路 *和?显然无法直接匹配,但是可以发现「通配符个数不超过 \(10\) 」,那么我们可以考虑分段匹配. 我们首先把原字符串分成多个以一个通 ...
- Controller以及RestFul风格
Controller以及RestFul风格 控制器Controller 控制器复杂提供访问应用程序的行为,通常通过接口定义或注解定义两种方式实现 控制器负责解析用户的请求并将其转换为一个模型 在Spr ...
- 如何守护数据安全? 这里有一份RDS灾备方案为你支招
当今世界是一个充满着数据的互联网世界,生活的方方面面都在不断产生着数据,比如出行记录.消费记录.浏览的网页.发送的消息等等.除了文本类型的数据,图像.音乐.声音都是数据.对于企业而言,数据更是重要的生 ...
- KingbaseES DBLink 扩展介绍
DBLink 扩展插件功能与 Kingbase_FDW 类似,用于远程访问KingbaseES 数据库.相比于Kingbase_FDW,DBLink 功能更强大,可以执行DML,还可以通过 begin ...
- day35-IO流02
JavaOI流02 4.常用的类 4.1文件字节流输入流-FileInputStream InputStream抽象类是所有类字节输入流的超类 InputStream常用的子类: FileInputS ...