深入了解Android蓝牙Bluetooth——《基础篇》

什么是蓝牙?

??也可以说是蓝牙技术。所谓蓝牙(Bluetooth)技术,实际上是一种短距离无线电技术,是由爱立信公司公司发明的。利用“蓝牙”技术,能够有效地简化掌上电脑、笔记本电脑和移动电话手机等移动通信终端设备之间的通信,也能够成功地简化以上这些设备与因特网Internet之间的通信,从而使这些现代通信设备与因特网之间的数据传输变得更加迅速高效,为无线通信拓宽道路。

蓝牙版本的介绍

??蓝牙发展至今经历了8个版本的更新。1.1、1.2、2.0、2.1、3.0、4.0、4.1、4.2、5.0。当然5.0的蓝牙模块目前Google虽已发布,但是市场上还未见到5.0的蓝牙设备。那么我们就尽请期待5.0蓝牙设备的到来!

??那么在1.x~3.0之间的我们称之为传统蓝牙,4.x开始的蓝牙我们称之为低功耗蓝牙也就是蓝牙ble,当然4.x版本的蓝牙也是向下兼容的。android手机必须系统版本4.3及以上才支持BLE API。

蓝牙2.0标准:

  • 蓝牙2.0标准2.0 是 1.2 的改良提升版,传输率约在

    1.8M/s~2.1M/s,

  • 开始支持双工模式——即一面作语音通讯,同时亦可以传输档案/高质素图片
  • 2.0 版本当然也支持 Stereo 运作。
  • 应用最为广泛的是Bluetooth 2.0+EDR标准,该标准在2004年已经推出,支持Bluetooth 2.0+EDR标准的产品也于2006年大量出现。
  • 虽然Bluetooth 2.0+EDR标准在技术上作了大量的改进,但从1.X标准延续下来的配置流程复杂和设备功耗较大的问题依然存在。
优点:
  • 数据量可以大一些、手机不需要蓝牙4.0
缺点:
  • 需要MFI认证,认证后可以购买苹果指定的解密芯片,方可使用蓝牙传输数据。MFI认证约9.9万美元/款产品,认证周期约半年。
  • 蓝牙2.1+MFI认证芯片,可以支持苹果iPhone4、iPhone4S、iPhone5等具有蓝牙2.1以上功能的苹果IOS设备

蓝牙V2.1+EDR:

相比于2.0版本速度要更快,2.1+EDR 版本的理论传输速率能达到2.1Mbps。并且加入了“Sniff Subrating”技术。这个技术是透过设定在2个装置之间互相确认讯号的发送间隔来节省功耗。对于需要持续传输数据流的硬件设备而言,比如键盘、鼠标等,该技术可以将电池续航能力延长最多5倍。

蓝牙3.0标准:

  • 2009年4月21日,蓝牙技术联盟(Bluetooth SIG)正式颁布了新一代标准规范”Bluetooth Core Specification Version 3.0 High Speed”(蓝牙核心规范3.0版 )
  • 蓝牙3.0的核心是”Generic Alternate MAC/PHY”(AMP),这是一种全新的交替射频技术,允许蓝牙协议栈针对任一任务动态地选择正确射频。
  • 蓝牙3.0的数据传输率提高到了大约24Mbps(即可在需要的时候调用802.11 WI-FI用于实现高速数据传输)。
  • 在传输速度上,蓝牙3.0是蓝牙2.0的八倍,可以轻松用于录像机至高清电视、PC至PMP、UMPC至打印机之间的资料传输,但是需要双方都达到此标准才能实现功能。
优点
  • 在应用方面相比于V2.1+EDR版本,V3.0的数据传输速率理论已达24Mbps,可以用于高清电视、笔记本电脑、平板电脑和打印机之间的资料传输,
  • 同时相对于2.1+EDR,3.0又引入了增强电源控制机制,使空闲时功耗明显降低。

蓝牙4.0标准:

  • 蓝牙4.0规范于2010年7月7日正式发布,新版本的最大意义在于低功耗
  • 同时加强不同OEM厂商之间的设备兼容性,并且降低延迟,理论最高传输速度依然为24Mbps(即3MB/s),有效覆盖范围扩大到100米(之前的版本为10米)。
  • 该标准芯片被大量的手机、平板所采用,如苹果The New iPad平板电脑,以及苹果iPhone 5、魅族MX4、HTC One X等手机上带有蓝牙4.0功能。
优点:
  • 不需做苹果解密芯片,不需MFI苹果认证。
缺点:
  • 数据量不能太大、手机必须是蓝牙4.0的;(蓝牙4.0可以支持苹果
  • iPhone4S、iPhone5等具有蓝牙4.0功能的苹果IOS设备)
优点主要体现在:
  • 1、它拥有高出3.0蓝牙版本30%以上的续航时间。即是在同等电量下,当蓝牙3.0版本的用电量已经到达100%时,杰克的用电仅70%,甚至不到。
  • 2、高出3.0蓝牙版本4倍以上的降噪技术。其CVC6.0消噪技术,比3.0版本的CVC4.0消噪技术更上一层楼,更深度的降噪,让你的每一次通话、每一首歌曲都可以近在咫尺。
  • 3、4.0以上版本的真智能—80HZCPU,高出3.0蓝牙版本5倍以上的无线传输速率。更为快捷的传输速度,让你无论听歌、通话,或者是游戏都可以拥有更加顺畅的体验。
  • 目前4.0的蓝牙最好,传输率最大,距离也较远,待机时间最长,节约电池。
兼容性:

蓝牙4.0有几种模式,如果是蓝牙4.0低功耗模式单模的设备(常称为BLE模式),是不向下兼容的。

现在主流 4.0BLE蓝牙

BLE(4.x)低功耗蓝牙

    1. 低功耗蓝牙比传统蓝牙,传输速度更快,覆盖范围更广,安全性更高,延迟更短,耗电极低等等优点
    1. 传统的一般通过socket方式,而低功耗蓝牙是通过Gatt协议来实现。
  • ps: 若是之前没做过传统蓝牙开发,也是可以直接上手低功耗蓝牙开发的。因为它们在通信协议上都有所改变,关联不大。当然有兴趣的可以去下载些传统蓝牙开发的demo看看

??现在我们所处在一个蓝牙4.x的时代。在此之前如我们经常使用的蓝牙耳机就已经跨越了好多的版本 蓝牙耳机有v1.1 v1.2 v2.0 v2.1…等诸多版本,究竟有什么样的优势呢?当然是版本越高信号越好,2.0以上支持蓝牙立体声。

那么我们现在所处的4.x的设备大多是属于主从模式的。

什么是主从模式

一个主设备比如手机,一个从设备(这里也成为子设备或从机)主动搜索从机 可以发送 也可以接收, 从机也可以发送和接收 但只能被搜索

主动搜索从机 可以发送 也可以接收 从机也可以发送和接收 但只能被搜索。

常见的蓝牙模块BLE工作模式

对于BLE单设备来讲常见的蓝牙模块的工作模有四种:

* ##### 主设备模式

* ##### 从设备模式

* ##### 广播模式

* ##### Mesh组网模式

那么这四个模式分别是什么样的情况呢,那么我们继续开车

1. 主设备模式

??USR-BLE100支持主设备模式,可以与一个从设备进行连接。在此模式下可以对周围设备进行搜索并选择需要连接的从设备进行连接。同时可以设置默认连接从设备的MAC地址,这样模块上电之后就可以查找此模块并进行连接。并且支持白名单功能,用户只需要把需要连接的设备的MAC写入白名单中,模块搜索到符合白名单的设备时进行连接。

??用户不需要关注串口数据与无线数据包之间的数据转换过程,只需通过简单的参数设置,即可实现主设备串口与从设备串口之间的数据透明通信。

??主机连接从设备可以分为3种方式:

第一种采用搜索的方式,使用前需要设置如下参数:

  • (1)设置工作模式为主设备模式 AT+MODE=M
  • (2)开启搜索模式 AT+SCAN
  • (3)如果搜索到从设备,如果序号是1,可以使用快速连接命令进行连接。 AT+CONN=1
  • (4)完成设置后,等待指示灯常亮即可代表连接成功,此时两个串口可以进行数据的透明传输。

    第二种方式

    ??如果你知道要连接的从设备的MAC地址也可以采用下面的方式进行连接:

  • (1)使用 MAC 绑定AT指令设置模块上电默认连接从设备MAC地址 AT+CONNADD=FFFFFFFFFF11
  • (2)设置完成之后使用重启指令重启模块,模块重启之后连接设置的从设备的地址。

    AT+Z

    2. 从设备模式

    ??BLE支持从设备模式,在此模式下完全符合BLE4.1协议,用户可以根据协议自己开发APP。此模式下包含一个串口收发的Service,用户可以通过UUID找到它,里面有两个通道,分别是读和写。用户可以操作这两个通道进行数据的传输。

    ??如果用户使用USR-BLE100的主设备与该从设备相连接,那么就无需关注里面的协议,两个设备的串口直接就可以进行数据的透明传输,为用户建立一个简单的无线传输通道。

    ?? 在此模式下,用户需要将模块的工作模式设置为从设备模式。用户如果自己开发APP需要我们模块的UUID进行连接,UUID为:0x31,0x01,0x9b,0x5f,0x80,0x00,0x00,0x80,0x00,0x10,0x00,0x00,0xd0,0xcd,0x03,0x00我们提供连接的示例程序。

    • (1)设置模块工作模式为从设备,指令为 AT+MODE=S
    • (2)用户可以通过下面指令查询模块的连接情况 AT+LINK
    • (3)用户也可以使用下面指令将现在连接断开 AT+DISCONN
    • (4)用户如果不想模块被发现和连接,可以使用下面指令关闭广播数据 AT+ADP=OFF

    3. 广播模式

    ??比如说USR-BLE100支持广播模式,在这种模式下模块可以一对多进行广播。用户可以通过AT指令设置模块广播的数据,模块可以在低功耗的模式下持续的进行广播,应用于极低功耗,小数据量,单向传输的应用场合,比如无线抄表,室内定位等功能。

??常见的蓝牙模块的工作模式

在此模式下,用户可以设置模块进行小数据量广播,用户需要在APP开发时调用BLE标准的接口进行获取,数据需要使用AT指令进行设置

- (1) 首先将模块模式设置到广播模式 AT+MODE=B

- (2)使用AT指令设置模块要发送的数据,数据位16进制长度不超过30字节,广播格式请参考BLE 协议。 AT+ADVDATA=0201041Aff4c000215B9407F30F5F8466EAFF925556B57FE6D0001000251

- (3)通过蓝牙监听软件可以获取到监听的数据包,如下

4. Mesh组网模式

??USR-BLE100支持Mesh组网模式,在这种模式下模块可以实现简单的自组网络,每个模块只需要设置相同的通讯密码就可以加入到同一网络当中,每一个模块都可以发起数据,每个模块可以收到数据并且进行回复。并且不需要网关,即使某一个设备出现故障也会跳过并选择最近的设备进行传输。

?? USR-BLE100支持Mesh组网模式,可以简单的将多个模块加入到网络中来,利用星型网络和中继技术,每个网络可以连接超过65000个节点,网络和网络还可以互连,最终可将无数蓝牙模块通过手机、平板电脑或PC进行互联或直接操控。并且不需要网关,即使某一个设备出现故障也会跳过并选择最近的设备进行传输。整个联网过程只需要设备上电并设置通讯密码就可以自动组网,真正实现简单互联。

- (1)首先我们需要将模块模式切换到Mesh组网模式

AT+MODE=F

- (2)设置通讯密码,模块间联网靠密码进行区分 AT+PASS=123456

- (3)重启模块,模块进入组网模式 AT+Z

- (4)此时我们将多个模块按照这种方式进行设置,当一个模块串口发送数据时,周围靠近的模块就会收到, 然后将其输出到串口,并且将数据再发送给周围未收到数据的模块,依次类推。

- (5)当收到数据的设备需要回复时直接串口发送,最终第一次发送的模块会收到回复,完成网络内部通讯。

Android BLE蓝牙通讯学习 《本篇是深入了解Android蓝牙:Bluetooth》 基础篇,最近一直和医疗打交道,做些蓝牙有关的app,所以查些资料研究总结了一下,把应用的东西总结一下。接下来请期待——-深入了解Android蓝牙:Bluetooth《进级篇》

如果你觉得此文对您有所帮助,欢迎入群 QQ交流群 :232203809

微信公众号:终端研发部

(欢迎关注学习和交流)

时间: 2024-10-15 00:16:12

深入了解Android蓝牙Bluetooth——《基础篇》的相关文章

深入了解Android蓝牙Bluetooth——《进阶篇》

在 [深入了解Android蓝牙Bluetooth--<基础篇>](http://blog.csdn.net/androidstarjack/article/details/60468468)一篇中我们对蓝牙的各个版本的有了一个认识,蓝牙版本的历程及其优劣式介绍.那么接下来咱们就深入一点继续开车进入BLE的进及篇章. 蓝牙BLE4.x BLE分为三部分: Service Characteristic Descriptor 这三部分都用UUID作为唯一标识符.UUID为这种格式:0000ffe1

深入了解Android蓝牙Bluetooth ——《总结篇》

在我的上两篇博文中讲解了有关android蓝牙的认识以及API的相关的介绍,蓝牙BLE的搜索,连接以及读取. 没有了解的童鞋们请参考: 深入了解Android蓝牙Bluetooth--<基础篇> 深入了解Android蓝牙Bluetooth--<进阶篇> 目前项目中的效果图: 接下来我们就对蓝牙BLE4.0进行一下总结. 蓝牙API Android ble 蓝牙4.0,也就是说API level >= 18,且支持蓝牙4.0的手机才可以使用,如果手机系统版本API level

android -- 蓝牙 bluetooth (五)接电话与听音乐

前段时间似乎所有的事情都赶在一起,回家.集体出游.出差,折腾了近一个月,终于算暂时清静了,但清静只是暂时,估计马上又要出差了,所以赶紧把蓝牙这一部分的文章了结下,按之前提到的目录,本文是关于蓝牙接打电话和听音乐的流程分析,对应蓝牙HFP/A2DP的profile,由于这部分也算是蓝牙的经典功能,所以代码流程并不是很复杂,当然不复杂仅是对于代码调用流程而言,对于HFP/A2DP协议相关的东东还没有精力去看,其难易程序也无法评价.下面从两个点HFP与A2DP来展开本文的代码跟踪: 正文开始之前,先说

android -- 蓝牙 bluetooth (三)搜索蓝牙

接上篇打开蓝牙继续,来一起看下蓝牙搜索的流程,触发蓝牙搜索的条件形式上有两种,一是在蓝牙设置界面开启蓝牙会直接开始搜索,另一个是先打开蓝牙开关在进入蓝牙设置界面也会触发搜索,也可能还有其它触发方式,但最后都要来到BluetoothSettngs.java的startScanning(),我们分析的起点也从这里开始,起步代码如下 [cpp] view plaincopy private void updateContent(int bluetoothState, boolean scanState

android -- 蓝牙 bluetooth (四)OPP文件传输

在前面android -- 蓝牙 bluetooth (一) 入门文章结尾中提到了会按四个方面来写这系列的文章,前面已写了蓝牙打开和蓝牙搜索,这次一起来看下蓝牙文件分享的流程,也就是蓝牙应用opp目录下的代码,作为蓝牙最基本的一个功能,这部分的代码在之前的版本中就已经有了,新旧版本代码对比很多类名都是一样的,这一部分新东西不多,写在这里帮助大家梳理下流程吧. 有没有这种感觉,智能手机的普及让我们提高了一点对蓝牙的关注,手机间使用蓝牙互传文件应该是最常用的应用之一,手机与电脑也可以通过蓝牙做同样的

Android应用开发进阶篇-场景文字识别

由于研究生毕业项目需要完成一个基于移动终端的场景文字识别系统,虽然离毕业尚早,但出于兴趣的缘故,近一段抽时间完成了这样一套系统.基本的架构如下: 客户端:Android应用实现拍摄场景图片,大致划出感兴趣文字区域,通过socket通信上传服务器端识别; 服务器端:Python server进行socket通信监听,连通后调用文字识别引擎(exe可执行程序),将识别结果返回; 下面是系统运行示例图: 1. 客户端 包含两个Activity,: MainActivity主界面如上图左1,选择拍摄后调

android -- 蓝牙 bluetooth (一) 入门

前段时间在 网上看了一些关于android蓝牙的文章,发现大部分是基于老版本(4.1以前含4.1)的源码,虽然无碍了解蓝牙的基本原理和工作流程,但对着4.2.2的代码看起来总是有些遗憾.所以针对4.2.2版本代码整理下相关知识,当然蓝牙工作的主干流程是没有变的,上电.加载驱动这些动作少不了的,只是这些功能的实现代码位置变了不少.希望本文可以让大家对android4.2的蓝牙部分代码有一个初步的了解.         正文开始前,先明确代码版本:android  jellyBean 4.2.2,后

android -- 蓝牙 bluetooth (二) 打开蓝牙

4.2的蓝牙打开流程这一部分还是有些变化的,从界面上看蓝牙开关就是设置settings里那个switch开关,widget开关当然也可以,起点不同而已,后续的流程是一样的.先来看systemServer.java的代码,蓝牙服务开启的地方,最后一个else分支是我们关心的,前两个是模拟器的一个测试模式的. [java] view plaincopy if (SystemProperties.get("ro.kernel.qemu").equals("1")) { S

Android 蓝牙(Bluetooth)(二)

Android4.3 规范了BLE的API,但是直到目前的4.4,还有些功能不完善. 在BLE协议中,有两个角色,周边(Periphery)和中央(Central):周边是数据提供者,中央是数据使用/处理者:在iOS SDK里面,可以把一个iOS设备作为一个周边,也可以作为一个中央:但是在Android SDK里面,直到目前最新的Android4.4.2,Android手机只能作为中央来使用和处理数据:那数据从哪儿来?从BLE设备来,现在的很多可穿戴设备都是用BLE来提供数据的. 一个中央可以同