【Bluetooth开发】蓝牙开发入门
BLE
蓝牙设备在生活中无处不在,但是我们也只是将其作为蓝牙模块进行使用,发送简单的AT命令实现数据收发。
那么,像对于一些复杂的使用场合:“车载蓝牙”、"智能手表"、“蓝牙音箱”等,我们不得不去了解底层的蓝牙实现原理。
-
1、蓝牙概念
-
2、蓝牙发展历程
-
3、蓝牙技术概述
-
3.1 Basic Rate(BR)
-
3.2 Low Energy(LE)
-
4、常见蓝牙架构
-
4.1 SOC蓝牙单芯片方案
-
4.2 SOC蓝牙+MCU方案
-
4.3 蓝牙host + controller分开方案
-
4.4 使用场景
-
5、参考文档
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、使用场景
大概列举了以下几种,帮助理解:
-
手机的蓝牙复杂应用,注定要用第3种方案,也就是蓝牙协议栈(host)在主芯片中,蓝牙芯片为HCI架构的。
-
蓝牙音响,蓝牙耳机:此种应用一般用单芯片方案就能hold住,比如CSR8670/8675/杰理蓝牙等,好处在于开发便捷。
-
蓝牙手表:要看功能复杂性,如果仅仅有时间显示,传感器交互,那么可以选择单芯片方案(也就是方案1),如果有网络等比较复杂的功能就要使用MCU+蓝牙芯片方案(也就是方案3)了
-
蓝牙手环,蓝牙心率带等:基本上是单芯片方案
5、参考文档
[1] 蓝牙官网:https://www.bluetooth.com/
[2] https://blog.csdn.net/XiaoXiaoPengBo/article/details/107462426
[3] https://blog.csdn.net/XiaoXiaoPengBo/article/details/107466841
相关文章:
【Bluetooth开发】蓝牙开发入门
BLE 蓝牙设备在生活中无处不在,但是我们也只是将其作为蓝牙模块进行使用,发送简单的AT命令实现数据收发。 那么,像对于一些复杂的使用场合:“车载蓝牙”、"智能手表"、“蓝牙音箱”等,我们不得不去了解底层…...
07:进阶篇 - 在程序中嵌入 CTK Plugin Framework
作者: 一去、二三里 个人微信号: iwaleon 微信公众号: 高效程序员 如果已经创建了一个应用程序,现在要将 CTK Plugin Framework 嵌入其中,该如何进行呢? 下面,以《06:进阶篇 - Hello,CTK!》中的插件为例,来演示如何使用 CTK Plugin Framework 来加载插件并获取特定…...
快速低成本动画视频课
快速低成本动画视频课Character Animator能做什么如何用character animator制作动画视频Animate能做什么Adobe Animate和Character Animator结合,如何快速制作低成本动画视频课Character Animator能做什么 Character Animator是Adobe公司的一个动画制作软件&#x…...
大数据平台测试-软件测试常见面试回答(持续更新)
面试造航母,入职拧螺丝。面试,讲点面试官想听的。。。 1、你有过漏测的经历吗? 答:这道题肯定是回答有。然后展开描述。就类似面试官问 你印象比较深的一个bug。。。 测试无穷尽,质量也并非测试一个岗位的责任&…...
链表学习之反转链表
链表解题技巧 额外的数据结构(哈希表);快慢指针;虚拟头节点; 反转链表 分别实现单向链表和双向链表的反转。 要求:长度为N的链表,时间复杂度为O(N),额外空间复杂度为O(1)。 反转…...
ONNXRUNTUIME实例分割网络说明
ONNXRUNTUIME c使用(分割网络)与相关资料(暂记) initiate a env with an id name(使用id名称启动env) create session (创建会话 ) onnxenv -> sessioninputname [“x”] ,outputname [“t”]inputnodedim [[1,1,192,192…...
几行代码,就写完懒加载啦?
Ⅰ、前言 「懒加载」是网页中非常 常见的;为了减少系统的压力,对于一些电商系统出场频率非常高;那么大家一般用什么方式去实现 「懒加载」 呢 ? ① 通过 scroll 的形式: 通过 滚动「scroll」事件,然后去判…...
PyTorch常用的损失函数(ChatGPT)
L1Loss nn.L1Loss 也称为平均绝对误差(Mean Absolute Error,MAE)。它计算预测值与真实值之间的差异(即误差),然后取绝对值并求和,最后除以样本数量得到平均误差。具体来说,对于一批…...
LeetCode——1237. 找出给定方程的正整数解
一、题目 来源:力扣(LeetCode) 链接:https://leetcode.cn/problems/find-positive-integer-solution-for-a-given-equation/description/ 翻译一下题目 意思是,这是一个二维单调递增的函数,函数一共有 9 …...
系统编程中的进程的概念No.3【进程状态】
引言: 北京时间:2023/2/17/8:17,目前听着超能陆战队主题曲《Immortals》,感觉又要螺旋式升天,并且为我今天上午没课感到happy,所以继我们很久以前的关于进程的博客,今天我们就再来学习一下有关…...
推荐 3 款 Golang 语义化版本库
文章目录1.什么是语义化版本 2.0.02.Golang 语义化版本库比较3.小结参考文献1.什么是语义化版本 2.0.0 语义化版本 2.0.0(Semantic Versioning 2.0.0)是一种用于标识软件版本的约定和规范。它包含三个数字组成的版本号,格式为“MAJOR.MINOR.…...
Windows平台使用gdb连接qemu虚拟机上的系统
先安装MinGW; 除了gcc、g,把gdb也选上;可能选第一个就可以了,不清楚把后面几个也选上; 安装完成看一下gcc, g,gdb,编译工具和调试器都有了; 把bin目录加到环境变量; 看一…...
【博客624】MAC地址表、ARP表、路由表(RIB表)、转发表(FIB表)
MAC地址表、ARP表、路由表(RIB表/FIB表) MAC地址表 MAC地址表是交换机等网络设备记录MAC地址和端口的映射关系,代表了交换机从哪个端口学习到了某个MAC地址,交换机把这个信息记录下来,后续交换机需要转发数据的时候就可以根据报文的目的MAC地…...
【蓝桥日记⑤】2014第五届省赛(软件类)JavaA组❆答案解析
【蓝桥日记⑤】2014第五届省赛(软件类)JavaA组☃答案解析 文章目录【蓝桥日记⑤】2014第五届省赛(软件类)JavaA组☃答案解析1、猜年龄2、李白打酒3、神奇算式4、写日志5、锦标赛6、六角填数7、绳圈8、兰顿蚂蚁9、斐波那契10、波动…...
Leetcode.1139 最大的以 1 为边界的正方形
题目链接 Leetcode.1139 最大的以 1 为边界的正方形 Rating : 1744 题目描述 给你一个由若干 0 和 1 组成的二维网格 grid,请你找出边界全部由 1 组成的最大 正方形 子网格,并返回该子网格中的元素数量。 如果不存在,则返回 0。…...
Bing+ChatGPT 对传统搜索引擎的降维打击
早些时候申请了新版 Bing 的内测资格,终于收到了通过的邮件。 一天的体验之后,我的感受是:当新版 Bing 具备了 ChatGPT 的聊天能力之后,它的能力不论是对传统搜索引擎,还是 ChatGPT 自身,都将是降维打击。 …...
【JS】数组常用方法总结-功能、参数、返回值
数组常用方法总结-功能、参数、返回值 用简单的js示例 运行在线工具:链接: 菜鸟工具 菜鸟工具示意图: ![在这里插入图片描述](https://img-blog.csdnimg.cn/de8589eb1acf42abb0347d8a3a3bbdfa.png 1.会改变原有数组方法 (1)pu…...
pytest 单元测试前后置处理
文章目录方法1 setup/teardown方法2 fixture 夹具方法3 conftest.py测试用例执行前后的一些处理动作,也叫夹具。以下介绍使用前后置操作的几种方法。方法1 setup/teardown setup,每个测试用例执行前要进行的处理。 teardown,每个测试用例执行…...
汽车安全硬件扩展 AUTOSAR SHE SecureHardwareExtensions
SHE(Secure Hardware Extension)在车联网中,被应用在车端ECU中负责安全存储与安全计算。是由HIS(由Audi、BMW、Porsche、Volkswagen组成)制定的标准,中文意思“安全硬件扩展”,是对任何给定微控…...
2023年美国大学生数学建模C题:预测Wordle结果建模详解+模型代码
目录 前言 一、题目理解 背景 解析 字段含义: 建模要求 二、建模思路 灰色预测: 编辑 二次指数平滑法: person相关性 只希望各位以后遇到建模比赛可以艾特认识一下我,我可以提供免费的思路和部分源码,以后…...
5、HAL库驱动W25Qxx
一、 SPI通信驱动W25Qxx 1、使用驱动文件快速配置工程代码驱动W25Qxx (此驱动文件只适合W25Qxx 16M及以下型号,因为访问地址位数不同) 注:本次使用SPI的方式进行访问W25Qxx Flash进行数据读写,关于W25Qxx芯片不会做…...
git rebase 洐合(变基)
洐合 把一个分支整合到另一个分支的办法有两种:merge(合并) 和 rebase(衍合) 为什么使用? 使提交记录更简洁 三种情况 第一种: 合并多条commit记录 git rebase -i HEAD~合并数量 HEAD~3&a…...
Kubernetes 1.18学习笔记
文章目录一、Kubernetes 概述和架构1、kubernetes 基本介绍2、Kubernetes 功能3、Kubernetes 架构组件4、Kubernetes 核心概念5、Kubernetes 工作原理二、Kubernetes 集群搭建1、系统环境准备1.1 安装要求1.2 系统初始化2、客户端工具kubeadm搭建2.1 安装步骤2.2 安装组件2.3 集…...
AJAX技术
AJAX技术 浏览器是多进程的,简单的说就是,浏览器每打开一个标签页,就相当于创建了一个独立的浏览器进程。但是js是基于单线程的,而这个线程就是浏览器的js引擎,浏览器无论在什么时候都只且只有一个线程在运行JavaScri…...
华为OD机试 - 最大排列(JS)
最大排列 题目 给定一组整数,重排序后输出一个最大的整数 输入 数字组合 输出 最大的整数 示例一 输入 10 9输出 910解题思路 我们可以读入一个字符串,将字符串中的单词按照每个单词的字典序长度,字典序从大到小的顺序排序&#x…...
Prometheus Docker安装及监控自身
前提环境: Docker环境 涉及参考文档: 安装Prometheus开始 Prometheusnode_exporter Agent组件 一、部署Prometheus 1、启动容器将文件拷贝出来 docker run -d prom/prometheus2、容器将文件拷贝出来 docker cp 容器ID:/usr/share/prometheus/conso…...
点云处理PCL常用函数与工具
点云处理PCL常用函数与工具 文章目录点云处理PCL常用函数与工具前言一、点云读取与保存数据读取数据保存自定义的点云保存格式二、点云显示点云显示-根据颜色点云显示-根据指定轴数值点云显示-根据指定信息显示多组点云显示三、点云滤波直通滤波统计滤波均匀下采样滤波VoxelGri…...
FyListen 在 MVP 架构中的内存优化表现
FyListen 在 MVP 中的内存优化表现 本文只是分享个人开源框架的内存优化测试,你可以直接跳到最后,参考内存泄漏的分析过程! 项目地址: https://github.com/StudyNoteOfTu/fylisten2-alpha1 由于使用到 AOP,所以直接…...
Qt代码单元测试以及报告生成
简介 单元测试是所有测试中最底层的一类测试,是第一个环节,也是最重要的一个环节,是唯一一次有保证能够代码覆盖率达到100%的测试,是整个软件测试过程的基础和前提,单元测试防止了开发的后期因bug过多而失控࿰…...
vscode构建Vue3.0项目(vite,vue-cli)
构建Vue3.0项目构建Vue3.0项目1.使用Vite构建vue项目的方法以及步骤1. 安装vite2. 运行vite vue 项目3.说明2.使用vue-cli构建vue项目的方法以及步骤1.安装全局vue cli —— 脚手架2、VSCode3.报错4.运行构建Vue3.0项目 1.使用Vite构建vue项目的方法以及步骤 1. 安装vite n…...
网线制作顺序图解/谷歌seo什么意思
SQL 语言 sunRainAmazing SQL(Structured Query Language)语言的全称是结构化查询语言。数据库管理系统通过 SQL 语言来管理数据库中的数据。 SQL 语言分为三个部分: 数据定义语言(Data Definition Language,简称为 DDL) 数据操作…...
台州百度网站排名/win7一键优化工具
防火墙是一道关卡,阻止******的一种手段,防火墙是安全门,过滤网络的数据包,接下来的主要讲的iptables是一个重要的服务,现在我们隆重推出。 一、iptables基础 1.包的处理方式:DROP,ACCEPT,REJECT,LOG [root…...
成都网站空间创新互联/网推项目平台
3473: 字符串 Time Limit: 20 Sec Memory Limit: 256 MBSubmit: 354 Solved: 160[Submit][Status][Discuss]Description 给定n个字符串,询问每个字符串有多少子串(不包括空串)是所有n个字符串中至少k个字符串的子串?Input 第一行…...
大连网站建设设计公司/网络营销推广方法
需求 : 在Controller获得Service层的方法上加上自定义日志注解,实现日志管理。 一.对应的数据库(日志) : CREATE TABLE log (id int(11) NOT NULL AUTO_INCREMENT COMMENT 主键,ope_method varchar(255) DEFAULT NULL COMMENT 方法名,ope_desc varchar(255) DEFAULT NULL COMM…...
电子商务网站的特色/网站排名
celery的内存泄漏? 总结: celery执行完任务不释放内存与原worker一直没有被销毁有关,因此CELERYD_MAX_TASKS_PER_CHILD可以适当配置小点,而任务并发数与CELERYD_CONCURRENCY配置项有关, 每增加一个worker必然增…...
给国外b2b网站开发信/百度seo排名培训
Python阶乘求和的方法 题目描述: 获得用户输入的整数n,输出 1!2!…n!的值。 如果输入数值为0、负数、非数字或非整数,输出提示信息:输入有误,请输入正整数。 (推荐学习:Python视频教程&…...