搜索
bottom↓
回复: 32

能否利用蓝牙广播功能实现设备双向通信

[复制链接]

出0入57汤圆

发表于 2021-7-27 17:04:20 | 显示全部楼层 |阅读模式
本帖最后由 mrf245 于 2021-7-28 08:51 编辑

这几天在设计一个低功耗蓝牙终端,该终端平时处于待机状态,受到外部触发唤醒(例如蓝牙SOC的IO电平变化)时,蓝牙终端通过蓝牙向市电供电的主机或者其他终端发送一条信息,表示该ID的设备发生状态变化。
主机收到该状态变化之后,送往上位机分析,如果收到上位机要求点灯的命令,就向该终端发送命令(或广播带有该终端ID和命令)使该终端点灯。
目前知道蓝牙有2种连接方式:广播和点对点配对。
点对点配对比较复杂,我们希望蓝牙终端在被唤醒之后就要立即将自己状态信息发送出去,发送完可能会等待主机一个ACK,如果收到ACK就进入休眠状态,休眠时间可能长达1-3个月;
广播模式不需要配对,但看了协议规定只有终端才能发起广播,主要功能是发起配对或者类似beacon的功能。也没找到主机如果收到该广播之后如何进行回复的处理。
所以想问大家,蓝牙能不能通过纯广播模式进行主机和终端交互?只需要终端主动发起即可。另外,可能一个主机附近有数十个终端,但可以确定每个时间点最多只会有1个终端发送数据(除非主机回复ACK没被终端收到这种特殊情况)

阿莫论坛20周年了!感谢大家的支持与爱护!!

曾经有一段真挚的爱情摆在我的面前,我没有珍惜,现在想起来,还好我没有珍惜……

出0入0汤圆

发表于 2021-7-27 17:13:04 | 显示全部楼层
广播 必然只能单向
反向可以由主机主动发。

另外,广播也可以考虑换成notify看看。

出0入0汤圆

发表于 2021-7-27 17:21:10 | 显示全部楼层
人家通用2.4g模拟ble广播,你ble要通用2.4g,那要看sdk好不好裁剪协议栈吧

出0入0汤圆

发表于 2021-7-27 17:24:53 | 显示全部楼层
是和手机通讯不得已ble,还是缺mcu用ble soc代替要不然这么会有这需求

出0入1209汤圆

发表于 2021-7-27 17:50:51 | 显示全部楼层
这种需求为啥要用蓝牙做?用不带协议栈的芯片,自己搞个简单的协议多好。

出90入372汤圆

发表于 2021-7-27 18:02:42 | 显示全部楼层
广播是单向的 要收ACK可以开notify

出0入57汤圆

 楼主| 发表于 2021-7-28 08:16:03 | 显示全部楼层
本帖最后由 mrf245 于 2021-7-28 08:17 编辑
kitten 发表于 2021-7-27 17:50
这种需求为啥要用蓝牙做?用不带协议栈的芯片,自己搞个简单的协议多好。 ...


第一数据要加密,蓝牙协议自带加密,自编协议不好搞
第二,如果现成协议能支持就不会再投人力做软件开发,现在给的要求就是这样。
如果蓝牙没法用可能考虑CC110L自编。也考虑过lora片子只利用物理信道,但看了下lora芯片不太好买价格和蓝牙比较没什么优势。

出0入57汤圆

 楼主| 发表于 2021-7-28 08:44:35 | 显示全部楼层
那么换一个思路:
不使用广播模式,只用常规1对1连接,终端先和主机建立好连接,然后终端进入长时间休眠。等需要发数据时,终端唤醒,立即发送数据,主机回应ACK
然后重新休眠
这样行不行?对于多终端应用有没有问题?

出0入57汤圆

 楼主| 发表于 2021-7-28 08:48:33 | 显示全部楼层
nade 发表于 2021-7-27 17:24
是和手机通讯不得已ble,还是缺mcu用ble soc代替要不然这么会有这需求

一个小终端大概只有2X3CM,使用纽扣电池供电想跑至少5年,大概1年唤醒10次,发送数据带有自身ID,在终端旁边有专用接收主机和上位机连接。在电力行业用有数据加密需求

出0入55汤圆

发表于 2021-7-28 09:35:31 | 显示全部楼层
nrf52的ESB呀,这个和nrf24L01那种是一样的,没有蓝牙协议栈。如果再底层,直接使用radio

出0入1209汤圆

发表于 2021-7-28 10:01:50 | 显示全部楼层
mrf245 发表于 2021-7-28 08:16
第一数据要加密,蓝牙协议自带加密,自编协议不好搞
第二,如果现成协议能支持就不会再投人力做软件开发 ...

首先蓝牙自身的加密强度根本达不到电里设备的要求,真正的国网设备都要上硬件加密芯片。 第二点自定义一个协议顺带实现软件加密可能比你把蓝牙协议栈用起来简单多了。当然不管是蓝牙还是lora还是别的射频芯片,都是可以买到透传模组的,难度降低一个等级。 最后lora的优势在于通讯距离较远。  
如果一定要用蓝牙,还是要用配对连接的模式,当终端需要发送数据时,终端启动广播,主机收到终端的广播后,发起连接,传输数据和应答就简单了,传完以后终端休眠。 多终端应用的情况下,蓝牙有跳频和碰撞随机延时的机制,终端数量不是特别多的情况下没问题。 另外需要提醒你一点,你设计一年只唤醒10次。实际使用它的时候体验可能不太好,比如中间主机根本不知道设备的状态,不知道他是坏了,还是发送数据没收到,还是没法数据。所以这类设备通常会固定时间比如1天或者一周发一次心跳消息,表明设备状态。

出0入57汤圆

 楼主| 发表于 2021-7-28 14:23:45 | 显示全部楼层
本帖最后由 mrf245 于 2021-7-28 14:34 编辑
kitten 发表于 2021-7-28 10:01
首先蓝牙自身的加密强度根本达不到电里设备的要求,真正的国网设备都要上硬件加密芯片。 第二点自定义一 ...


对,国网要求专用加密协议,不过我们蓝牙传输数据是不入网的。现在是友商已经做了一个类似的东西,用LORA物理层+锂亚电池方案,具体做了什么协议不详。但他们体积比较大。我们目标是尽量缩减体积并采用纽扣电池,提升终端安装便利度。实际上终端就是检测一个开关通断状态并点灯。
终端到主机距离不超过3米,都处于一个机柜里面,对功率要求不高。因为每个机柜都有一个主机(或者根据情况,2个机柜放一个主机,带2个柜的所有终端)。
实际使用时一定是终端主动发起数据传输,主机回应ACK并带有是否点灯的指令,终端收到ACK就根据点灯情况选择继续休眠还是点灯。
写到这里我突然想起点灯之后要灭灯应该怎么操作……灭灯按照逻辑应该是主机发起控制的。我得再想想

出235入235汤圆

发表于 2021-7-28 14:30:23 | 显示全部楼层
这个帖子,有深度。。学习~

出0入0汤圆

发表于 2021-7-28 15:27:30 | 显示全部楼层
mark:蓝牙 双向通信

出0入1209汤圆

发表于 2021-7-28 15:59:50 | 显示全部楼层
mrf245 发表于 2021-7-28 14:23
对,国网要求专用加密协议,不过我们蓝牙传输数据是不入网的。现在是友商已经做了一个类似的东西,用LORA ...

点灯的时候终端设备就不要休眠了,反正灯的功耗也不低,然后需要灭灯的时候,主机直接连接终端,然后发消息过去灭灯。这种办法最简单了。  如果亮灯时间比较长,对功耗还是比较在意的情况下,可以在亮灯期间,把蓝牙广播的时间缩短,比如1秒一次,这样蓝牙部分的功耗也是非常低的,主机也可以迅速的连接上设备,发送灭灯消息。

出0入17汤圆

发表于 2021-7-28 16:27:14 | 显示全部楼层
本帖最后由 hhxb 于 2021-7-28 16:30 编辑

蓝牙客户端 既发送广播,也监听广播不就行了呗

出0入57汤圆

 楼主| 发表于 2021-7-28 17:09:46 | 显示全部楼层
hhxb 发表于 2021-7-28 16:27
蓝牙客户端 既发送广播,也监听广播不就行了呗

我一开始就这样想,不过标准协议里,客户端能主机监听广播并对广播内命令做反应吗

出0入57汤圆

 楼主| 发表于 2021-7-28 17:10:31 | 显示全部楼层
kitten 发表于 2021-7-28 15:59
点灯的时候终端设备就不要休眠了,反正灯的功耗也不低,然后需要灭灯的时候,主机直接连接终端,然后发消 ...

有一个问题,完成配对后,如果终端长时间休眠再被唤醒,会不会出现连接失败的问题?

出90入372汤圆

发表于 2021-7-28 17:53:23 | 显示全部楼层
mrf245 发表于 2021-7-28 17:10
有一个问题,完成配对后,如果终端长时间休眠再被唤醒,会不会出现连接失败的问题? ...

唤醒后终端需要发广播 重新连接,有电就不会失败,这个不用担心

出90入372汤圆

发表于 2021-7-28 17:55:38 | 显示全部楼层
mrf245 发表于 2021-7-28 08:44
那么换一个思路:
不使用广播模式,只用常规1对1连接,终端先和主机建立好连接,然后终端进入长时间休眠。 ...

这个思路是蓝牙终端常用的方式,技术上没有什么问题

出90入372汤圆

发表于 2021-7-28 17:58:36 | 显示全部楼层
mrf245 发表于 2021-7-28 08:44
那么换一个思路:
不使用广播模式,只用常规1对1连接,终端先和主机建立好连接,然后终端进入长时间休眠。 ...

保持连接的低功耗方式 功耗比较高,你这种应用适合终端休眠后进入低功耗(断开连接),唤醒后发送广播 主机收到广播后连接终端,之后传数据,然后再低功耗休眠

出0入1209汤圆

发表于 2021-7-28 22:14:28 | 显示全部楼层
mrf245 发表于 2021-7-28 17:10
有一个问题,完成配对后,如果终端长时间休眠再被唤醒,会不会出现连接失败的问题? ...

我猜你是理解错配对和连接了。配对和连接是两回事的,配对只是在两个设备首次连接的时候才需要配对,配对完成后,后续连接时不需要再次配对的,除非你删除了配对信息。但是再次连接的时候需要终端处于活动状态,所以前面说要做成定期发广播的方式,就是用来让终端处于定期的活动状态,以便主机随时连接。当然也可以做成连接后保持连接状态,功耗相对高一些,但是应该也还好了,比如常见的蓝牙手环和手机之间就是这种方式。要看你亮灯的时间会有多长,如果时间短那么就保持连接最简单了。功耗肯定比你的led灯低多了。

出0入17汤圆

发表于 2021-7-29 09:39:09 | 显示全部楼层
如果想用 纽扣电池,蓝牙就放弃吧,功耗不如专用芯片

出0入57汤圆

 楼主| 发表于 2021-7-29 13:43:03 | 显示全部楼层
keshipt 发表于 2021-7-28 17:58
保持连接的低功耗方式 功耗比较高,你这种应用适合终端休眠后进入低功耗(断开连接),唤醒后发送广播 主 ...

明白了,配对完成后每次终端被唤醒要和主机连接之前都要先发一次广播,请求主机来恢复连接,连接操作完成后再发数据,这样也没啥问题,就是比我设想的多了一步广播操作

出0入57汤圆

 楼主| 发表于 2021-7-29 13:45:13 | 显示全部楼层
kitten 发表于 2021-7-28 22:14
我猜你是理解错配对和连接了。配对和连接是两回事的,配对只是在两个设备首次连接的时候才需要配对,配对 ...

要求定期处于活动状态不太理解,如果配对成功的终端很长时间没有发心跳或进行过连接,主机会有什么操作?主机设计上是一直通电没有低功耗模式的。

出0入1209汤圆

发表于 2021-7-29 13:57:02 | 显示全部楼层
mrf245 发表于 2021-7-29 13:45
要求定期处于活动状态不太理解,如果配对成功的终端很长时间没有发心跳或进行过连接,主机会有什么操作? ...

如果是保持连接的状态,那么不需要操作的,蓝牙协议栈自动保持连接的。如果主机端主动断开蓝牙连接,或者其他意外情况导致断链,那么下次连接的时候要求从机发一次广播才能继续连接。这些都是基础的蓝牙工作机制。你需要恶补蓝牙的知识

出90入372汤圆

发表于 2021-7-29 14:02:04 | 显示全部楼层
mrf245 发表于 2021-7-29 13:45
要求定期处于活动状态不太理解,如果配对成功的终端很长时间没有发心跳或进行过连接,主机会有什么操作? ...

“定期处于活动状态”他指的是心跳,把心跳频率降低一些,这样功耗也不高,比如一天醒一次 然后和主机连接发个心跳包,这样设备异常时 主机可以知道设备那一天不在线,能及时处理,如果一个月才醒来一次,设备出问题了要一个月后才能知道

出90入372汤圆

发表于 2021-7-29 14:04:58 | 显示全部楼层
kitten 发表于 2021-7-29 13:57
如果是保持连接的状态,那么不需要操作的,蓝牙协议栈自动保持连接的。如果主机端主动断开蓝牙连接,或者 ...

楼主需要一个纽扣电池可以使用几年,显然不能用哪个长连接的方式,醒来发送数据后断开连接进入最低功耗的模式,下次唤醒再重新连接发送数据 再休眠即可。

出0入4汤圆

发表于 2021-7-29 14:11:22 | 显示全部楼层
本帖最后由 acmilannast 于 2021-7-29 14:16 编辑

主机有广播扫描回复模式,

出0入57汤圆

 楼主| 发表于 2021-7-29 14:14:09 | 显示全部楼层
keshipt 发表于 2021-7-29 14:02
“定期处于活动状态”他指的是心跳,把心跳频率降低一些,这样功耗也不高,比如一天醒一次 然后和主机连 ...

明白了,是出于监控终端健康状态考虑需要心跳,假如我保证终端一直正常,可能不需要心跳包,直接在几个月用一次时候发送一次广播建立连接也可以了。

出0入1209汤圆

发表于 2021-7-29 14:14:20 | 显示全部楼层
keshipt 发表于 2021-7-29 14:04
楼主需要一个纽扣电池可以使用几年,显然不能用哪个长连接的方式,醒来发送数据后断开连接进入最低功耗的 ...

你没看完整个帖子的,他的需求分成两部分的,第一个平时休眠有数据的时候终端主动唤醒发送数据,这个部分很显然不能用长连接,只要在发送数据前发广播连接就行。第二个是终端发送完数据后要根据主机的响应可能需要点亮终端上的灯,灯的熄灭也需要主机来控制,这个部分可以采用长链接的方案的。  楼主还忽视了一个问题是,通常终端需要定期上报心跳的,比如电量和工作状态。从楼主的回复来看,他对蓝牙了解几乎为0,多说一点算给他科普一下。

出0入0汤圆

发表于 2021-7-29 14:43:06 | 显示全部楼层
mark 蓝牙 通信 学习

出5565入519汤圆

发表于 2021-8-31 09:21:12 | 显示全部楼层
马克,蓝牙,低功耗,心跳包。各位大神踊跃答疑!
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片。注意:要连续压缩2次才能满足要求!!】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-8-16 12:19

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表