Android 低功耗蓝牙(Ble) 开发总结

Android 低功耗蓝牙(Ble) 开发总结,第1张

Android 从 43(API Level 18) 开始支持低功耗蓝牙,但是只支持作为中心设备(Central)模式,这就意味着 Android 设备只能主动扫描和链接其他外围设备(Peripheral)。从 Android 50(API Level 21) 开始两种模式都支持。

低功耗蓝牙开发算是较偏技术,实际开发中坑是比较多的,网上有很多文章介绍使用和经验总结,但是有些问题答案不好找,甚至有些误导人,比如 :获取已经连接的蓝牙,有的是通过反射,一大堆判断,然而并不是对所有手机有用,关于Ble传输速率问题的解决,都是默认Android每次只能发送20个字节,然而也并不是,,,下面进入正文。

这里用的是 Android50 新增的扫描API,

这里说一下,如果做蓝牙设备管理页面,可能区分是否是已连接的设备,网上又通过反射或其他挺麻烦的 *** 作,也不见得获取到,官方Api 就有提供

与外围设备交互经常每次发的数据大于 mtu的,需要做分包处理,接收数据也要判断数据的完整性最后才返回原数据做处理,所以一般交互最少包含包长度,和包校验码和原数据。当然也可以加包头,指令还有其他完整性校验。下面分享几个公用方法:

我自己封装的一个BleUtil ,因为涉及跟公司业务关联性太强(主要是传输包的协议不同)就先不开源出来了,如果这边文章对大家有帮助反馈不错,我会考虑上传个demo到github供大家使用,
在这先给大家推荐一个不错 Demo ,里面除了没有分包,协议,和传输速率。基本的功能都有,而且调试数据到打印到界面上了。最主要是它可以用两个个手机一个当中心设备一个当外围设备调试。

首先传输速率优化有两个方向,1 外围设备传输到Android 。2 Android传输到外围设备。
我在开发中首先先使用上面那位仁兄的demo调试,两个Android 设备调试不延时,上一个成功马上下一个,最多一秒发11个20字节的包。

后来和我们的蓝牙设备调试时发现发送特别快,但是数据不完整,他蓝牙模块接收成功了,但是透传数据到芯片处理时发现不完整,我们的硬件小伙伴说因为 波特率 限制(差不多每10字节透传要耗时1ms)和蓝牙模块的buff (打印时是最多100byte,100打印的)限制,就算蓝牙模块每包都告诉你接收成功,也是没透传完就又接收了。后来通过调试每次发20K数据,最后是 Android 发是 20字节/130ms 稳定。给Android 发是 20字节/ 8ms 。 (天杀的20字节,网上都是说20字节最多了)

后来看了国外一家物联网公司总结的 Ble 吞吐量的文章(上面有连接),知道Android 每个延时是可以连续接收6个包的。就改为 120字节/ 16ms (为啥是16ms,不是每次间隔要6个包吗,怎么像间隔两次,这时因为波特率影响,多了5个包100字节,差不多 我们的单片机透传到蓝牙模块要多耗时不到10ms )
而Android 发数据可以申请 我们设备的mtu 来得到最多每次能发多少字节。延时还是130ms,即:241字节/ 130ms 提高12倍,这个速度还可以。

根据蓝牙BLE协议, 物理层physical layer的传输速率是1Mbps,相当于每秒125K字节。事实上,其只是基准传输速率,协议规定BLE不能连续不断地传输数据包,否则就不能称为低功耗蓝牙了。连续传输自然会带来高功耗。所以,蓝牙的最高传输速率并不由物理层的工作频率决定的。

在实际的 *** 作过程中,如果主机连线不断地发送数据包,要么丢包严重要么连接出现异常而断开。

在BLE里面,传输速度受其连接参数所影响。连接参数定义如下:

1)连接间隔。蓝牙基带是跳频工作的,主机和从机会商定多长时间进行跳频连接,连接上才能进行数据传输。这个连接和广播状态和连接状态的连接不是一样的意思。主机在从机广播时进行连接是应用层的主动软件行为。而跳频过程中的连接是蓝牙基带协议的规定,完全由硬件控制,对应用层透明。明显,如果这个连接间隔时间越短,那么传输的速度就增大。连接上传完数据后,蓝牙基带即进入休眠状态,保证低功耗。其是125毫秒一个单位。

2)连接延迟。其是为了低功耗考虑,允许从机在跳频过程中不理会主机的跳频指令,继续睡眠一段时间。而主机不能因为从机睡眠而认为其断开连接了。其是125毫秒一个单位。明显,这个数值越小,传输速度也高。

蓝牙BLE协议规定连接参数最小是5,即725毫秒;而Android手机规定连接参数最小是8,即10毫秒。iOS规定是16,即20毫秒。

连接参数完全由主机决定,但从机可以发出更新参数申请,主机可以接受也可以拒绝。android手机一部接受,而ios比较严格,拒绝的概率比较高。

参考:
在iOS和Android上最大化BLE吞吐量
最大化BLE吞吐量第2部分:使用更大的ATT MTU

近两年来物联网从萌芽到彷徨,再到现在被大家广泛认可,不难看出物联网是大势所趋。物联网是通过无线模块和互联网连接推动的,所有”物”连入网络都必须配备无线模块。其中物联网WiFi连接起到了承上启下的作用,给设备制造商带来了希望,而为解决功耗问题,工程师们又开始将目光转移到功耗更低的BLE蓝牙技术,低功耗蓝牙模块成为物联网应用中非常普遍的无线模块。

物联网

从定义来看,蓝牙是一种新兴无线通讯技术是一个标准的无线通讯协议,基于低成本设备的收发器芯片,近距离传输、功耗低。被广泛应用于物联网智能家居系统、智能可穿戴设备;

从技术层面看,蓝牙,低功耗、低辐射,其传输距离短、范围小的劣势近期随着蓝牙50的发布有了大幅提升;

从产品应用看,蓝牙通讯主要用来连接一些外接电子设备,或者近距离数据传输;

从产品量级看,据不完全统计显示,在民用领域以WiFi和蓝牙为通行标准的各类设备占据了全球市场的主要份额,其中又以采用蓝牙的设备占比更大。

蓝牙50:

蓝牙50

蓝牙50于2016年6月正式宣布规范,对比蓝牙42,蓝牙50在低功耗技术(BLE)可提供2倍的传输速率、8倍的广播能力、4倍的覆盖范围,尤其蓝牙50还针对物联网进行了底层优化,力求以更低的功耗和更强的性能为物联网服务,因此,越来越多的物联网应用、智能家居方案开始将蓝牙模块纳入选型范围内。

在物联网大行其道的今天,谈到高性能低功耗无线模块产品,大家都会直接想到BLE蓝牙模块,其中最让物联网工程师满意的还是基于Nordic方案的BLE蓝牙模块,采用SMD封装,性能达到50最优的SKB501,原因无它,主要是集成度高,性能稳定,且支持二次开发,不管是想直接使用的小白工程师还是想开发更多功能的大拿工程师,它都特别适用。

学物联网的有买电路书的。
物联网专业需要看的书籍具体介绍如下:
1、物联网产业与技术导论使用电子工业出版社《物联网:技术、应用、标准、安全与商业模式》等等教材。在学完高等数学,物理,化学,通信原理,数字电路,计算机原理,程序设计原理等课程后开设本课程,全面了解物联网之RFID、M2M、传感网、两化融合等技术与应用。课程2、C语言程序设计使用清华大学出版社《C
物联网专业需要看的书籍 本文内容:
课程1、
物联网产业与技术导论
使用电子工业出版社《物联网:技术、应用、标准、安全与商业模式》等等教材。
在学完高等数学,物理,化学,通信原理,数字电路,计算机原理,程序设计原理等课程后开设本课程,全面了解物联网之RFID、M2M、传感网、两化融合等技术与应用。
课程2、C语言程序设计
使用清华大学出版社《C语言程序设计》等教材。
物联网涉及底层编程,C语言为必修课,同时需要了解OSGi,OPC,Silverlight等技术标准
课程3、Java程序设计
,使用
机械工业出版社《Java语言程序设计教程》等教材。
物联网应用层,服务器端集成技术,开放Java技术也是必修课,同时需要了解Eclipse,SWT,Flash,HTML5,SaaS等技术
课程4、无线传感网络概论,使用
无线龙通讯科技出版社《现代无线传感器网络概论》、北京航空航天大学出版社《短距离无线通讯入门与实战》等教材。
学习各种无线RF通讯技术与标准,Zigbee,蓝牙,WiFi,GPRS,CDMA,3G,4G,5G等等
课程5、
TCP/IP网络与协议
,《TCP/IP网络与协议》,清华大学出版社,等教材。
TCP/IP以及OSI网络分层协议标准是所有有线和无线网络协议的基础,Socket编程技术也是基础技能,为必修课
课程6、嵌入式系统技,
《嵌入式系统技术教程》,人民邮电出版社等教材。

LoRa

LoRa(长 距离)是由Semtech公司开发的一种技术,典型工作频率在美国是915MHz,在欧洲是868MHz,在亚洲是433MHz。LoRa的物理层 (PHY)使用了一种独特形式的带前向纠错(FEC)的调频啁啾扩频技术。这种扩频调制允许多个无线电设备使用相同的频段,只要每台设备采用不同的啁啾和 数据速率就可以了。其典型范围是2km至5km,最长距离可达15km,具体取决于所处的位置和天线特性。

LoRa芯片在整个产业链中处于基础核心地位,重要性不言而喻。值得注意的是,目前美国Semtech公司是LoRa芯片的核心供应商,掌握着LoRa底层技术的核心专利。而Semtech的客户主要有两种,一是获得Semtech LoRa芯片IP授权的半导体公司;二是直接采用Semtech芯片做SIP级芯片的厂商,包括微芯 科技 (Microchip)等。

Wi-Fi

Wi-Fi被广泛用于许多物联网应用案例,最常见的是作为从网关到连接互联网的路由器的链路。然而,它也被用于要求高速和中距离的主要无线链路。

大多数Wi-Fi版本工作在24GHz免许可频段,传输距离长达100米,具体取决于应用环境。流行的80211n速度可达300Mb/s,而更新的、工作在5GHz ISM频段的80211ac,速度甚至可以超过13Gb/s。

一 种被称为HaLow的适合物联网应用的新版Wi-Fi即将推出。这个版本的代号是80211ah,在美国使用902MHz至928MHz的免许可频段, 其它国家使用1GHz以下的类似频段。虽然大多数Wi-Fi设备在理想条件下最大只能达到100米的覆盖范围,但HaLow在使用合适天线的情况下可以远达1km。

80211ah 的调制技术是OFDM,它在1MHz信道中使用24个子载波,在更大带宽的信道中使用52个子载波。它可以是BPSK、QPSK或QAM,因此可以提供宽 范围的数据速率。在大多数情况下100kb/s到数Mb/s的速率足够用了——真正的目标是低功耗。Wi-Fi联盟透露,它将在2018年前完成 80211ah的测试和认证计划。

针对物联网应用的另外一种新的Wi-Fi标准是80211af。它旨在使用从54MHz到698MHz范围内的电视空白频段或未使用的电视频道。这些频道 很适合长距离和非视距传输。调制技术是采用BPSK、QPSK或QAM的OFDM。每个6MHz信道的最大数据速率大约为24Mb/s,不过在更低的 VHF电视频段有望实现更长的距离。
ZigBee

ZigBee,也称紫蜂,是一种低速短距离传输的无线网上协议,底层是采用IEEE 802154标准规范的媒体访问层与物理层。主要特色有低速、低耗电、低成本、支持大量网上节点、支持多种网上拓扑、低复杂度、快速、可靠、安全。ZigBee是物联网的理想选择之一。

虽然ZigBee一般工作在24GHz ISM频段,但它也可以在902MHz到928MHz和868MHz频段中使用。在24GHz频段中数据速率是250kb/s。它可以用在点到点、星形和网格配置中,支持多达254个节点。与其它技术一样,安全性是通过AES-128加密来保证的。ZigBee的一个主要优势是有预先开发好的软件应用配 置文件供具体应用(包括物联网)使用。最终产品必须得到许可。

ZigBee技术所采用的自组织网是怎么回事?举一个简单的例子就可以说明这个问题,当一队伞兵空降后,每人持有一个ZigBee网络模块终端,降落到地面后,只要他们彼此间在网络模块的通信范围内,通过彼此自动寻找,很快就可以形成一个互联互通的ZigBee网络。而且,由于人员的移动,彼此间的联络还会发生变化。因而,模块还可以通过重新寻找通信对象,确定彼此间的联络,对原有网络进行刷新。这就是自组织网。

NB-IoT

窄带物联网(Narrow Band Internet of Things, NB-IoT)成为万物互联网络的一个重要分支。NB-IoT构建于蜂窝网络,只消耗大约180KHz的带宽,可直接部署于GSM网络、UMTS网络或LTE网络,以降低部署成本、实现平滑升级。

NB-IoT是IoT领域一个新兴的技术,支持低功耗设备在广域网的蜂窝数据连接,也被叫作低功耗广域网(LPWAN)。NB-IoT支持待机时间长、对网络连接要求较高设备的高效连接。据说NB-IoT设备电池寿命可以提高至少10年,同时还能提供非常全面的室内蜂窝数据连接覆盖。

蓝牙50

蓝牙是一种无线传输技术,理论上能够在最远 100 米左右的设备之间进行短距离连线,但实际使用时大约只有 10 米。其最大特色在于能让轻易携带的移动通讯设备和电脑,在不借助电缆的情况下联网,并传输资料和讯息,目前普遍被应用在智能手机和智慧穿戴设备的连结以及智慧家庭、车用物联网等领域中。新到来的蓝牙 50 不仅可以向下相容旧版本产品,且能带来更高速、更远传输距离的优势。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/dianzi/10852755.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-11
下一篇 2023-05-11

发表评论

登录后才能评论

评论列表(0条)

保存