请教蓝牙mesh从机睡眠后,如何接收主机发来的蓝牙数据

1、蓝牙从机定时唤醒,向主机发数据,这个应该可以。

2、如果主机主动下发数据,从机在睡眠,如何接收呢?

“从机”是指蓝牙mesh中的低功耗节点是吗。低功耗节点需要配合朋友节点使用。

对于发送数据,低功耗节点向其他节点发送数据,是经由朋友节点立即转发出去的。

对于接收数据,低功耗节点是不能直接收到数据的,由朋友节点代收,而后低功耗节点会定时向朋友节点询问有没有发给自己的数据,若有就接收数据。


配网者.jpg

1、这个例程,是配网者例程。里面有朋友节点的开关,可以作为朋友节点使用吗?

2、如果可以,会不会影响配网、组网的功能?

3、配网最多支持40个设备,可以同时做这40个设备的朋友节点吗?

4、如果不可以,我需要再增加几个设备,只作为朋友节点,来配合剩下的低功耗节点?


我们的单片机内存容量有限,除了默认开启转发功能外,就不建议复用其他节点功能了。

需要另外增加设备专门作为朋友节点。一个朋友节点最多支持四个低功耗节点。


网络示意图.jpg是不是类似这种布局?


1、另外朋友节点用哪个工程比较合适?

2、选哪个单片机比较便宜?582、还是579


布局如5楼是可以的,若朋友节点和中心节点距离较远,可以用开启转发功能的adv_vendor中继一下。

EVT中朋友节点工程名为adv_vendor_friend。

选用582更经济。


好的,多谢。


// 低功耗节点功能

#define CONFIG_BLE_MESH_LOW_POWER              1


//睡眠

#ifndef HAL_SLEEP

#define HAL_SLEEP                           TRUE   //TRUE    //FALSE

#endif


1、是不是开启低功耗节点功能,睡眠也要设置为TRUE ? 

2、如果睡眠为FALSE,协议栈底层不会自动控制睡眠吧?

3、如果#define CONFIG_BLE_MESH_LOW_POWER    0;#define HAL_SLEEP      TRUE;是不是不会休眠?


HAL_SLEEP这个宏定义涉及的函数,用于处理蓝牙BLE那边的睡眠。蓝牙mesh的低功耗节点是通过协议栈管理任务的运行来实现的,没有用到涉及HAL_SLEEP的函数,与这个宏定义没有关系。


不好意思,没太明白。这两个宏我该如何配置呢?

1、CONFIG_BLE_MESH_LOW_POWER配置为1,是不是必须要有朋友节点才行?

2、CONFIG_BLE_MESH_LOW_POWER配置为1,是不是HAL_SLEEP不必配置为True?


第一个场景:1个中心节点、40个低功耗节点、没有朋友节点。低功耗节点平时睡眠,定时发送数据,每次发送数据后等2秒接收数据,然后睡眠。

第二个场景:1个中心节点、40个低功耗节点、10个朋友节点。低功耗节点除了第一个场景的功能外,中心节点具有主动往下发的功能。

3、这两个场景,那两个宏分别怎么配置?


CONFIG_BLE_MESH_LOW_POWER配置为1既开启低功耗节点功能,则除配网流程外必须配合朋友节点才能工作。配网流程只需低功耗节点和中心节点相靠近即可,可以在无朋友节点的情况下先行配网。朋友节点配网并上电后可以自动连接周围的低功耗节点。工作流程中低功耗节点必须要朋友节点的配合。

配网器默认可以支持40个节点,这个数值包括除了配网器外的所有节点,但只要RAM足够就可以往支持更多。目前没有测试过上限,但比40多。

HAL_SLEEP这个宏定义在蓝牙mesh工程中没有用到,它在另外的工程中使用,故它是ture或是false都不会影响工程,默认不管它就行。


好的,多谢。


11楼场景1中,“每次发送数据后等2秒接收数据”,这个接收数据是指比如说传感器接收环境数据,不是指低功耗节点接收其他节点的数据,那么是可以实现的,即低功耗节点配网后可以直接发数据给配网器,但是没有朋友节点是不能收到其他节点传来的数据的。


1、主机程序用的是self_provisioner_vendor,从机程序用的是adv_vendor_with_peripheral,朋友节点程序adv_vendor_friend。

2、之前只有主机、从机,没有朋友节点,从机也没有使能低功耗,把业务走通了。

3、现在加了朋友节点,从机也使能了低功耗,从机好像还是直接通过主机通信了,也不会进入低功耗。

4、去掉主机,从机、朋友节点重启,没有看到他们打印绑定信息。

从机朋友节点.jpg


5、低功耗节点配网不通过朋友节点,配网成功后才与朋友节点建立绑定,之后通信就只与朋友节点通信,对吧?

6、朋友节点与中心节点的通信机制是如何的?朋友节点需要配网吗?


只有登录才能回复,可以选择微信账号登录