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

无线数据传输基本都是通过UART串口来实现的,蓝牙模块和WiFi模块都支持串口透传;

基于低功耗WiFi模块的无线数据传输方案:将传感器采集到的数据通过WiFi方式上传到服务器。充分利用已架设好的WiFi通讯网络实现数据采集和传输,达到集中监控的目的。可大大减少施工量,提高施工效率、降低维护成本。

基于低功耗蓝牙模块的无线数据传输方案:将传感器采集到的数据通过蓝牙方式,用户实现手机APP的数据读取、记录及数据上传。利用蓝牙配对的无线传输,且不依赖于外部网络,直接上传到手机,再经由手机网络或WiFi信号完成数据上传。不需要接线,大大加快项目落地速度。

SKYLAB低功耗串口WiFi模块/蓝牙模块

针对万物互联时代的数据传输、智能控制、对接云平台的服务需求,SKYLAB研发推出的UART WiFi模块基于ESP8266方案的WG219/WG229,基于TR6260方案的LCS6260,基于ESP8285方案的WG231,内置无线网络协议IEEE80211协议栈以及TCP/IP协议栈,能够实现用户串口或TTL电平数据到无线网络之间的转换。满足物联网领域内智能家居,智能照明、智慧工厂和智慧医疗中的数据传输和智能控制需求。

基于Nordic nRF52832方案的SKB369是一款高度集成的BLE42蓝牙模块,专为无线24GHz ISM高速率传输设计,支持UART串口数据透传,拥有32位ARM Cortex-M4F CPU、闪存和模拟计算机和数字计算机外围设备。

基于Nordic nRF52840方案的SKB501是一款高度集成的BLE50蓝牙模块,性能良好,功耗低,接收灵敏度高,传输距离远,封装小。支持SPI/UART/TWI通信协议,产品能较好地嵌入到客户产品中,同时满足客户对蓝牙产品再次快速编程需求。

在过去的20多年里,人类经历2次大的连接,第一次是90年代起Internet 逐步普及,网线将11亿人连接到一起。第二次是2000年以后手机的普及又将地球人又一次紧密连接起来。蓝牙技术在1994年由电信巨头爱立信公司创制,随后,1998年蓝牙技术联盟成立,创始公司包括:苹果、爱立信、英特尔、联想、微软、诺基亚、东芝。
现在我们正经历物联网阶段的第三次大的连接,创立于手机时代的蓝牙技术面临挑战。蓝牙技术联盟亚太区市务高级经理李佳蓉女士介绍:逗面对IoT领域的机会,蓝牙有几项技术特性必须克服,首先,因为IoT将导致联网装置数量大幅增加,现有的IPv4支持能力将有限,IPv6的技术支持势在必行,组网的能力也会受到考验;其次,便携式移动设备对于功耗的要求更为严苛;在物联网与生活结合得更加紧密之后,安全性也是重要的考量。地
为顺应时代潮流,蓝牙低功耗(BLE)技术推出,相较传统蓝牙拥有更好的信噪比,传输距离更远,通常可以达到50米,而传统的只有6~8米。蓝牙BLE功耗低,省电,数据传输量小但速率快。尽管优点多多,然而在智能家居、智能照明等领域的应用上,一直存在着距离短、组网能力差等问题。
随后,2014年底蓝牙技术联盟推出全新蓝牙42核心规格,在隐私保护、传输速度和直接通过IPv6和6LoWPAN接入互联网等方面做出重大改进,让物联网领域的互联更加快速安全。2015年2月,蓝牙技术联盟成立Bluetooth Smart Mesh工作组,助力Bluetooth Smart技术实现标准化的mesh网络功能。
蓝牙Mesh技术
介绍蓝牙Mesh技术之前,我们首先要明白Mesh网络是什么看无线Mesh网络(无线网状网络)也称为逗多跳(multi-hop)地网络,由mesh routers(路由器)和mesh clients(客户端)组成,其中mesh routers构成骨干网络,并和有线的 internet网相连接,负责为mesh clients提供多跳的无线internet连接。无线网状网是一种基于多跳路由、对等网络技术的新型网络结构,具有移动宽带的特性,同时它本身可以动态地不断扩展,自组网、自管理,自动修复、自我平衡。
无线Mesh网将传统WLAN中的无线地热点地扩展为真正大面积覆盖的无线地热区地。无线Mesh非常适合于覆盖大面积开放区城(包括室外和室内)的无线区域网络解决方案。
蓝牙Mesh脱胎于CSR倡导的私有协议CSR Mesh。CSR Mesh是2014年2月由CSR公司推出的一款全新的Bluetooth Smart解决方案。这项技术主要是通过将蓝牙配置与控制协议整合到单一的芯片中,利用星型网络和中继技术,让每个网络可以连接超过65000个节点,网络和网络间也能实现互连,最终可对无数个搭配Bluetooth Smart的设备通过同一手机、平板电脑或PC进行互联或直接 *** 控,从而构建整体家居自动化。
号称为家庭自动化而生的CSR Mesh技术特点
特点一: CSR Mesh的功耗只有Zigbee的几十分之一。
它可以通过节点与节点之间的信息传播,让信号在Mesh网络间不断地传输,以达到控制目标设备的功能,而无需传统意义上的网关,因此,我们可以利用手机或平板上的APP来进行控制, *** 作起来十分方便。
特点二:环环相扣的加密功能保障信息安全
在提及CSR Mesh技术在安全上的性能表现时,专业人士指出,在这样一个由CSR Mesh构成的家庭网络中,一切的数据都是使用AES算法进行加密,数据间的传输也会基于经典的嵌套式密钥交换&加密协议Diffee-Hellman-Merkle来运行。每当有新设备要接入组网时,需要凭借设备自身拥有的128位UUID(通用唯一识别码)以方便手机APP识别,随后还得通过64位代码的认证才能连上手机,认证通过了设备才可以获得唯一的组网密钥,以用于通信。
除了CSR,其他厂商如恩智浦也推出了蓝牙Mesh解决方案。恩智浦Bluetooth Smart Mesh的解决方案不同于其他网格技术可能出现泛洪(Flooding)而导致逗广播风暴(broadcast storm)地、增加能源消耗等缺陷。恩智浦低功耗解决方案能够完全同步和路由各种协议,从而实现节点之间的高效端对端连接;能够创新的在整个网络中实现数量级的能效提升;还具有增强的安全性和带自愈功能的网络自组功能,并在未来保护分层网格架构(layered-mesh architecture),以更好地支持蓝牙智能设备,其所提供over-the-air 无线升级功能,可助部署之后的网络升级。恩智浦这个方案能够帮助开发商和制造商在开发智能家居产品,包括照明、传感器、温控器以及其他家用蓝牙智能设备时,实现多节点通信设计。
蓝牙Mesh的优点
一、低成本:每年十几亿部的智能手机几乎全部搭载蓝牙40,庞大的体量摊销了蓝牙协议、蓝牙芯片的软硬件研发成本。蓝牙模块的成本平均大概只有其他协议的一半。当阿里巴巴祭出99元和199元物联网无线模块包邮大法的时候,99元就是蓝牙模块,199元是Wi-Fi模块。
二、超低功率:适中的带宽、低发射功率和完备的休眠机制造就了蓝牙的超低功率,蓝牙40中BLE的出现,更是把待机功耗带到了微瓦级,而且启动快速,不像Wi-Fi,启动一次需要几百毫秒,空耗系统功耗。
三、多信道:Wi-Fi在24GHz上只定义了14个频道, 而蓝牙40定义了79个频道,在中国式公寓楼这一普遍场景,智能家居联网必须有足够多的频道才能避免同频干扰。这一点上蓝牙完胜了Wi-Fi。ZigBee在24GHz、 868MHz和915MHz一共才定义了27个信道,远远不能胜任大面积家庭使用导致的同频干扰。
四、覆盖盲区少:蓝牙自联网降低了覆盖距离的要求,而且节点越多,覆盖盲区越少。一般人家中5个以上蓝牙灯泡或开关,就可以形成全家无盲区覆盖。
五、传输速度:蓝牙42的理论带宽上限24Mb,带宽可以传送短视频或。
七、IPV6:蓝牙42可以直接接入互联网,甚至预留了未来的互联网标准,IPV6。
蓝牙技术未来怎么发展看
蓝牙技术未来的发展,主要有技术和应用两个方面。技术方面,除了发展蓝牙Mesh技术之外,蓝牙技术也将突破现在10米的通信距离,解决通信距离的限制问题。同时,在能耗不增加的基础上,蓝牙技术的传输速度将提升至当前的一倍。
未来,蓝牙技术将不仅仅是文件传输,会有更多应用场景。第一,Beacon。蓝牙Beacon应用彻底改变了人们对连接和信息发布的认识。很多人熟悉的Beacon都是觉得它是零售环节当中使用。实际这只是Beacon市场当中很小的一块,Beacon还可以用于工业、农业领域。第二,定位与发现。第三,更智能的自动化解决方案。智能建筑、智能家居、智能汽车未来都可以通过蓝牙连接到一起,包括控制温度,控制门锁,控制窗户等,蓝牙非常适合这些低功耗的小设备使用。还可以通过通过Mesh的功能,将所有设备连接到一起提供一整套的解决方案更多进行了解。
最后,至于蓝牙Mesh与ZigBee30谁能最终成为智能家居领域的标准,蓝牙Mesh技术上的有更低的功耗以及真正实现互联互通的优势,但最终谁能最终胜出还需要时间来告诉我们答案。

我觉得蓝牙技术是几大无线通信技术中最适合物联网发展的,它的低功耗和低辐射就是一大优势。据我所知,早在今年年初,蓝牙路由器就获得了美国CES大奖,上个月的世界物联网大会上,蓝牙路由器也获得了银奖,证明了在物联网行业内,对于蓝牙物联网是认同的。

无线物联网和物联网不能用区别来说

无线物联网属于物联网的其中一种,从大方向来说,物联网可以分为有线和无线两种,有线主要以总线为主,无线目前有zigbee、zwave、wifi、射频、蓝牙等几种。有线技术最大的特点是信号稳定,出现网络故障几率最低。缺点是需要布线,安装需要编程,如果出现一处问题可能会引起一连串的反应。主要应用工业比较合适,无线的特点是安装简单, *** 作简单,易学易用,一般普通人都能很容易学会并使用。一般用于比较常用的一些设备,比如最近炒得很火的智能家居,就属于无线物联网的其中一种。


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

原文地址: https://outofmemory.cn/dianzi/13018371.html

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

发表评论

登录后才能评论

评论列表(0条)

保存