带你解锁蓝牙skill(0)
蓝牙系列文章之前言篇
0.0
一直以为自己对蓝牙很是了解,但前段时间跟一个很熟悉蓝牙的人进行交谈,才发现自己对蓝牙的学习太浅,所写的只是蓝牙最上层的东西而已,甚至可以说根本就没有扎入到蓝牙的表层,很是惭愧…..写这篇文章的目的是完善蓝牙系列博文,并给大家一个对蓝牙的整体认知。毕竟一篇好的文章不仅仅是要做到细枝末节(很显然,我距离这个还很远),也要对整体的轮廓做个概述。先是要明白蓝牙究竟是什么,有什么用,为什么要用它,这些功能又是如何实现的等等。学习过程亦是如此。如果对一个东西没有个整体印象那么又怎么能明确你所学习和掌握的跟它有没有关系呢?技术这种东西,如果没人分享造成断层,那么后人又如何才能将之发扬光大呢??!!所以,谨以此文,献给技术。若文笔有疏漏之处敬请谅解。
0.1
首先要问,为什么要叫做蓝牙–Bluetooth即名字由来 Bluetooth这个名字并不带任何技术性,它既不是缩写也不代表任何东西。据悉是来自于一名丹麦国王 (Harald Blåtand),他有两件举世闻名的事件,一是在958年统一了丹麦和挪威,二是他的坏牙是深蓝/灰色的(也因此有了Bluetooth这个别称)。在1996年的某一天,三大行业领袖因特尔、爱立信和诺基亚开会计划建立支持不同产业和行业之间短距离的无线通信标准,在会议上来自因特尔的Jim Kardash建议使用Bluetooth作为临时代码别称,Jim Kardash说“ Harald Bluetooth国王因统一了各战乱派而闻名,就像我们计划借助短距离无线连接来联合PC和电话行业”。也即因此,沿用了丹麦国王的名字。照这么说来,如果蓝牙是由中国人发明的话那就应该称之为秦始皇,毕竟统一了六国呀,开个玩笑。 但在不久之后,需要为Bluetooth重新赋予一个严肃的名字。当时给出了两个选择一是RadioWire (无线),二是PAN(个人局域网)。当时优先考虑PAN这个名字,但是调查后发现PAN已经在互联网上出现了成千上万次,所以就给否定了。而RadioWire又因为商标无法及时发布导致被弃用,别无选择,Bluetooth又成了唯一…很庆幸当时否定了pan,跟Bluetooth相比,pan简直是太难听了。 也因此Bluetooth成为了短距离无线通信的代名词。 而蓝牙的图标则取决于符文(Hagall)(ᚼ)和(Bjarkan)(ᛒ),首字母正好是丹麦国王Harald的缩写
0.2
那么蓝牙是什么呢?? 蓝牙是一种低功耗的无线连接技术,是一种设备间短距离的无线通讯方式,这句话表明以下几个信息,
- 低耗能技术
- 蓝牙跨设备使用
- 蓝牙属于短距离通讯方式
- 蓝牙是一种无线通讯方式,既然是无线通讯那么势必要有通信协议标准即蓝牙无线通信协议标准
长期以来,看到蓝牙众多的配置文件和协议一直都很乱,其实蓝牙在使用时总共有三种功能
- 跨设备传输流式音频
- 跨设备传输数据
- 广播信息
对于一个蓝牙新手来说,首先一定要明白,蓝牙技术有两种类型、四种通信方式。在研究时一定要先明白自己研究的是蓝牙的什么技术,什么通信方式。
- Basic Rate/Enhanced Data Rate (BR/EDR)基本速率/增强数据速率即所谓的传统蓝牙技术(蓝牙版本2.0/2.1):仅支持P2P一种通信方式,即1:1设备间通信,具有持续无线连接、优化音频流的特点,所以是蓝牙耳机、蓝牙扬声器等音频传输的理想方案
- Low Energy (LE)低功耗即所谓的新型的低功耗蓝牙技术(蓝牙版本4.0/4.1/4.2/4.3):支持三种通信方式,
- P2P(point-to-point)(点对点):1:1支持短时间无限连接,优化了数据传输能量消耗,可用于无线键盘、无线鼠标等
- broadcast(广播信息):1:m。可以实现本地化信息共享。广播信息顾名思义,一设备广播信息,其他对该信息感兴趣的设备接受该信息并进行处理。比如beacon
- mesh(网格):m:m
按照蓝牙模块的种类来说目前市面上有三种蓝牙规格,说白了也就是有三种蓝牙设备模块。一般手机都是蓝牙双模的。
- 蓝牙BR/EDR—-传统蓝牙模块,建立相对较短距离的持续无线连接,因此非常适用于流式音频等应用
- 蓝牙LE—-可建立短时间的长距离无线电连接,非常适用于无需持续连接但依赖电池具有较长寿命的的物联网 (IoT) 应用
- 双模—-双模芯片可支持需要连接 BR/EDR 设备(例如音频耳机)以及 LE 设备(例如穿戴设备或零售信标)的单一设备(例如智能手机或平板电脑)
按照版本来说,蓝牙又分为好多版本,常见的比如2.0/2.1/4.0/4.1/4.2/4.3,不同的版本会有不同的蓝牙规格,以及蓝牙的数据传输速率、蓝牙通信距离等都有所不同。 对于作者来说,从研究条件以及自身兴趣点出发,我会去研究双模蓝牙
0.3
那么蓝牙的应用场景呢? 蓝牙的应用到底有多广泛呢?用一组数据告诉你:蓝牙已经整合到了超过 30,000 个蓝牙 SIG 成员生产的 82 亿件产品中。蓝牙应用已经渗透到了生活的方方面面 汽车:车载蓝牙,免提呼叫,蓝牙播放音频。全球 12 家主要汽车制造商全部都提供蓝牙免提呼叫系统。智能家居,实现家居自动化,零售位置导向式服务等等
0.4
文章看到这里,你应该已经搞明白了蓝牙是什么,有什么功能,有什么技术,有什么通信方式,在什么地方用到。研究到这里,就应该研究一下蓝牙的组成了。不同种类的蓝牙模块即不同规格的蓝牙具有不同的系统结构。但也有一些共通的:包含射频收发器、基带和协议栈。
$(function () { $('pre.prettyprint code').each(function () { var lines = $(this).text().split('n').length; var $numbering = $('<ul/>').addClass('pre-numbering').hide(); $(this).addClass('has-numbering').parent().append($numbering); for (i = 1; i <= lines; i++) { $numbering.append($('<li/>').text(i)); }; $numbering.fadeIn(1700); }); });
- ORACLE:写Function时,传入参数变量名的注意事项
- spring boot 登录注册 demo (二) -- 数据库访问
- spring boot 登录注册 demo (三) -- 前后端传递
- python装饰器大详解
- spring boot 登录注册 demo (四) -- 体验小结
- jenkins 时区设置
- 什么样的密码才是安全的?
- MAC本遭遇ARP攻击的处理办法
- nodejs 语法学习(持续更新)
- Django——模板层(template)(模板语法、自定义模板过滤器及标签、模板继承)
- - Templates should only be responsible for mapping the state to the UI. Avoid placing tags with side
- Django - - - -视图层之视图函数(views)
- fiddler mock ==> AutoResponder
- 基于Node.js开发跨平台窗口程序
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- python第四十五课——继承性之多继承
- HTTP服务器Nginx服务介绍续
- python第四十六课——函数重写
- Linux系统Memcached服务介绍
- python第四十七课——类属性和函数属性
- python第四十八课——类函数和对象函数
- python第四十九课——对象序列化与反序列化
- python第五十课——多态性
- python第五十一课——__slots
- Linux系统安全配置iptables服务介绍
- ThreadLocal企业中真实应用
- python第五十二课--自定义异常类
- python第五十三课——time模块
- 从亲身经历谈谈如何用Git分支解决项目生产实践中的痛点
- mysql数据库基础命令(一)