【求助】【TuyaOS OS】使用蓝牙 Mesh 设备开发包 TuyaOS 版本3.5.0 TLSR825X deep sleep深度休眠定时与GPIO唤醒,如何能知道当前定时唤醒剩余的时间?

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


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

功能介绍:产品为7号电池低功耗产品,需要进入deep sleep深度休眠;唤醒方式有GPIO和定时唤醒两种;
APP会发送一个定时100S指令给到产品,产品需要100S进行某个IO的动作,但是100S内不能处于工作状态,因为会消耗电流,所以要进入deep sleep深度休眠,设置定时唤醒和GPIO唤醒两种方式,当这个过程中突然产生GPIO中断,我无法获取定时唤醒的剩余时间,就无法执行这个100S的动作。

提问:有什么办法可以实现我这个功能吗?

User avatar
joey_nobug
Posts: 144

Re: 【求助】【TuyaOS OS】使用蓝牙 Mesh 设备开发包 TuyaOS 版本3.5.0 TLSR825X deep sleep深度休眠定时与GPIO唤醒,如何能知道当前定时唤醒剩余的时间?

实现此需求的话首先需要将 deep sleep 模式修改为 retention 模式,休眠后保持 32K 的 ram。此修改的方法参考:

接下来实现唤醒剩余时间的处理:
休眠前调用 get_32k_tick() 记录内部 32K 时钟寄存器 tick 值,唤醒后再次读取寄存器 tick 值,做差值后除以 32K 即可得出休眠的时间(单位s)。

Talk is cheap, show me the code.
bold
Posts: 5

Re: 【求助】【TuyaOS OS】使用蓝牙 Mesh 设备开发包 TuyaOS 版本3.5.0 TLSR825X deep sleep深度休眠定时与GPIO唤醒,如何能知道当前定时唤醒剩余的时间?

按照记事本修改代码芯片进入深度休眠保持32KRam模式唤醒后调用函数tal_main_debug()打印不了数据这些了,调试要用到打印,请问怎么解决这个问题?

bold
Posts: 5

Re: 【求助】【TuyaOS OS】使用蓝牙 Mesh 设备开发包 TuyaOS 版本3.5.0 TLSR825X deep sleep深度休眠定时与GPIO唤醒,如何能知道当前定时唤醒剩余的时间?

joey_nobug 2023年 Jun 13日 11:42

实现此需求的话首先需要将 deep sleep 模式修改为 retention 模式,休眠后保持 32K 的 ram。此修改的方法参考:Tuyaos 3.5.0 Mesh SDK deep sleep retention 使能修改方法 .txt

接下来实现唤醒剩余时间的处理:
休眠前调用 get_32k_tick() 记录内部 32K 时钟寄存器 tick 值,唤醒后再次读取寄存器 tick 值,做差值后除以 32K 即可得出休眠的时间(单位s)。

按照记事本修改代码芯片进入深度休眠保持32KRam模式唤醒后调用函数tal_main_debug()打印不了数据这些了,调试要用到打印,请问怎么解决这个问题?

User avatar
joey_nobug
Posts: 144

Re: 【求助】【TuyaOS OS】使用蓝牙 Mesh 设备开发包 TuyaOS 版本3.5.0 TLSR825X deep sleep深度休眠定时与GPIO唤醒,如何能知道当前定时唤醒剩余的时间?

打印的话,在 uart init 之前 deinit 一下,因为组件里的变量没有加 No retention 的前缀,所以掉电保持,重新初始化时可能没有成功

Talk is cheap, show me the code.
bold
Posts: 5

Re: 【求助】【TuyaOS OS】使用蓝牙 Mesh 设备开发包 TuyaOS 版本3.5.0 TLSR825X deep sleep深度休眠定时与GPIO唤醒,如何能知道当前定时唤醒剩余的时间?

joey_nobug 2023年 Jun 16日 17:54

打印的话,在 uart init 之前 deinit 一下,因为组件里的变量没有加 No retention 的前缀,所以掉电保持,重新初始化时可能没有成功

感谢您的答复,还有个问题想要请教一下大佬,在芯片深度休眠的时候也要接受到APP下发的数据,请问这个有什么方式可以实现吗?

User avatar
joey_nobug
Posts: 144

Re: 【求助】【TuyaOS OS】使用蓝牙 Mesh 设备开发包 TuyaOS 版本3.5.0 TLSR825X deep sleep深度休眠定时与GPIO唤醒,如何能知道当前定时唤醒剩余的时间?

休眠期间是无法接收任何数据的,要想接收 APP 数据的话可以尝试高频的休眠唤醒,在唤醒的窗口内接收 ADV 数据和 APP 的连接请求

Talk is cheap, show me the code.
bold
Posts: 5

Re: 【求助】【TuyaOS OS】使用蓝牙 Mesh 设备开发包 TuyaOS 版本3.5.0 TLSR825X deep sleep深度休眠定时与GPIO唤醒,如何能知道当前定时唤醒剩余的时间?

joey_nobug 2023年 Jun 21日 14:32

休眠期间是无法接收任何数据的,要想接收 APP 数据的话可以尝试高频的休眠唤醒,在唤醒的窗口内接收 ADV 数据和 APP 的连接请求

你好,尝试了定时一秒唤醒然后0.2秒后进入休眠的方式,这样虽可以有时接受到APP 下发的数据但存在较高频率丢失接受不到数据的情况功耗也相对较高。是想实现一个低功耗pir人体传感器,软件功能上支持APP设置有人保持的时间要求功耗越低越好,请问有什么软件方案可以实现在低功耗的同时又能接到到APP下发的数据吗(因为要实现功能:例如用户刚设定了有人保持10s但在10S之前某个时刻又更改了设置)?期待你的回复

bold
Posts: 5

Re: 【求助】【TuyaOS OS】使用蓝牙 Mesh 设备开发包 TuyaOS 版本3.5.0 TLSR825X deep sleep深度休眠定时与GPIO唤醒,如何能知道当前定时唤醒剩余的时间?

joey_nobug 2023年 Jun 21日 14:32

休眠期间是无法接收任何数据的,要想接收 APP 数据的话可以尝试高频的休眠唤醒,在唤醒的窗口内接收 ADV 数据和 APP 的连接请求

人体运动传感器需配合网关来使用,Image,查找了资料看到sig mesh节点有低功耗、朋友、中继、代理四种角色,此开发包怎么运用这些功能的呢?

User avatar
joey_nobug
Posts: 144

Re: 【求助】【TuyaOS OS】使用蓝牙 Mesh 设备开发包 TuyaOS 版本3.5.0 TLSR825X deep sleep深度休眠定时与GPIO唤醒,如何能知道当前定时唤醒剩余的时间?

对于对功耗有更高要求的话,确实目前这种方式不适合。

对于你提到的 friend / LPN 节点类型,是 mesh 标准中定义的设备类型,这两种节点功能确实可以满足你们的需求,即保证 LPN 节点的功耗要求,又可以通过 friend 节点代理将消息传递给 LPN 节点。但是这种功能的实现必须要求 friend 节点与 LPN 节点搭配使用,而最终实际产品的形态是不确定的,所以目前我们SDK中没有开放这两种节点类型的使用。

对于你的需求,从交互上来解决是否可以。例如当有配置消息需要下发时,提醒用户通过按键方式唤醒设备,之后对数据进行下发,设备唤醒一定时间(例如30s)后自动休眠。

目前 tlsr825x 平台是没有射频唤醒功能的,所以无法通过手机或者网关直接唤醒设备。

Talk is cheap, show me the code.
Post Reply