【已解决】【TuyaOS OS】蓝牙MESH 低功耗节点如何实现

蓝牙 BLE设备、蓝牙 MESH设备、蓝牙 Beacon设备、Sub-G设备等


Post Reply
勇敢牛牛不怕代码难
Posts: 27

子设备开发:蓝牙 Mesh 设备开发包
描述 正式发布版本
TuyaOS 版本 3.5.0
组件开发包 :tuyaos-subdev-mesh_0.0.29_tlsr825x_smesh_mesh_common_1.2.14

需求:我需要做一个低功耗的传感器,需要进入低功耗模式。但是会接收指令与 上报数据两种;采用一次性7号电池供电,需要比较低的功耗;
我想了解 进入低功耗之后如何保持与APP的连接 与稳定接收数据的下发?

我在泰凌微的原始DEMO sig mesh code中有了解到有一种低功耗节点的方式:低功耗(Low-Power)特性:能够以明显较低的接收端占空比在 mesh 网络中运行。通过将无线电接收器启用时间最小化可实现节点功耗的降低,只有在绝对必要时才启动接收器。低功耗节点(LPN,low power node)通过与好友节点(FN,friend node)建立友谊(friendship)关系来实现这一点。
但是我不知道 ,涂鸦是否将部分功能加入到SDK中?


Tags:
User avatar
joey_nobug
Posts: 144

Re: 【求助】【TuyaOS OS】蓝牙MESH 低功耗节点如何实现

你好,
你所说的的 LPN 节点与 Friend 节点确实是 mesh 标准 spec 中设置的角色,LPN 节点可以大部分时间休眠,也可以外部中断或者timer唤醒后来上报数据同时周期性唤醒来跟 Friend 通信,Friend 节点会缓存其他设备发给 LPN 节点的消息,等 LPN 节点唤醒时将数据传输给 LPN 节点。
但是目前 Tuya 并未开放使用此两种角色,因为 LPN 节点如果要使用所有功能,mesh 网络中就必须存在 Friend 节点,所以实际产品必须要配套使用。但是目前我们的产品组合是很灵活的,无法彻底约束客户和用户搭配使用,所以目前此两种角色未使用。
我们目前低功耗产品有几类,第一种是大部分时间休眠,只有数据上报时才唤醒发包然后进休眠;第二种是周期性唤醒,唤醒后保持一段时间的唤醒用来接收空中包,以此达到收包的处理,但这个休眠与唤醒的占比需要调试,以及可能需要网关等发送端做特殊处理,建议此类功能联系tuya的产品经理或者项目经理沟通定制;
进入低功耗的方式可参考 software\TuyaOS\docs\TuyaOS_BLE_Mesh_Application_Guide.md 中低功耗处理相关指导,使用 tkl 层 sleep 与 wake_up 相关接口:

Code: Select all

tkl_cpu_sleep_mode_set(1, TUYA_CPU_SLEEP); 	//设置休眠唤醒方式:TUYA_CPU_SLEEP - suspend 模式;TUYA_CPU_DEEP_SLEEP - 深度休眠模式,必须先设置不同模式支持唤醒源方式可能不同

TUYA_WAKEUP_SOURCE_BASE_CFG_T param;
param.source = TUYA_WAKEUP_SOURCE_GPIO;
param.gpio_param.gpio_num = TUYA_GPIO_NUM_26;
param.gpio_param.level = TUYA_GPIO_LEVEL_HIGH;
tkl_wakeup_source_set(&param);				//设置唤醒源:GPIO26 高电平唤醒

param.source = TUYA_WAKEUP_SOURCE_GPIO;
param.gpio_param.gpio_num = TUYA_GPIO_NUM_33;
param.gpio_param.level = TUYA_GPIO_LEVEL_LOW;
tkl_wakeup_source_set(&param);				//设置唤醒源:GPIO33 低电平唤醒

param.source = TUYA_WAKEUP_SOURCE_TIMER;
param.timer_param.mode = TUYA_TIMER_MODE_ONCE;
param.timer_param.ms = 10000;
tkl_wakeup_source_set(&param);				//设置唤醒源:定时 10s 后唤醒

tkl_cpu_allow_sleep();						//进入休眠
Talk is cheap, show me the code.
Post Reply