赞
踩
合宙Air780e关于低功耗的介绍:
ttps://doc.openluat.com/wiki/50?wiki_page_id=4917
air 780e与air780eg均基于EC618平台增加了三种低功耗模式:响应优先模式(PRO);平衡模式(STD); PSM+模式。
不同模式的区别如下:
- local period = 30*1000 --30秒左右时间
- -- 低功耗均衡性能模式下(std)
- -- 1.普通定时器就可以使其退出均衡模式类似PM.LIGHT休眠模式
- -- 2.进入此模式后程序可以继续执行
- -- 3.使用均衡模式实测 50ua左右
- sys.taskInit(function()
- log.info("40s 后balanced mode! 开启,40s留下联网时间")
- sys.wait(40000)
- pm.power(pm.WORK_MODE,2)
- --一定要注意打开usb调试接口不然收到消息也不知道
- pm.power(pm.USB, true)
- sys.wait(period) --退出均衡模式即可
- pm.power(pm.USB, true)
- -- 1.已经证明程序是自动执行了,但是log.info被关闭了
- -- 2.使用pm.power(pm.USB, true)打开usb调试
- end)
- -- psm+ 模式
- -- 1.需要关闭mobile.flymode(0,true)
- -- 2.定时唤醒需要通过底层控制器才能唤醒pm.dtimerStart(id,timeout)
- -- 3.进入此状态后功耗可到达2.89ua左右
- -- 4.此模式下程序停止执行唤醒后,程序从头开始执行
- sys.taskInit(function()
- log.info("5s 后psm+ mode! 开启")
- sys.wait(5000)
- pm.power(pm.USB, false) -- 关闭sub调试
- mobile.flymode(0,true) --关闭手机卡
- pm.power(pm.WORK_MODE,3)
- pm.dtimerStart(3, period)-- 30秒后程序会重新执行
- end)
1.可用wakeup接口为gpio20 使用中断触发方式
gpio.RISING
gpio.FALLING
2.uart MAIN_TXD/RXD 可以通过给串口发送数据唤醒模块(未测试)
- PROJECT='demo24-2-18'
- VERSION='1.0.0'
- log.info("main",PROJECT,VERSION)
- -- sys库是标配
- _G.sys = require("sys")
- local period = 3*60000 --默认60s变化一次模式
- local reason, slp_state = pm.lastReson()
- log.info("wakeup state", pm.lastReson())
- -- 低功耗开始
- if reason > 0 then
- sys.taskInit(function()
- log.info("10s后已经从深度休眠唤醒,睡醒了重新睡看看行不行")
- sys.wait(10000)
- gpio.setup(23,nil)
- gpio.close(35)
- gpio.setup(20, function()
- log.info("触发了gpio20下降沿出发的中断")
- end, gpio.PULLUP, gpio.RISING)
- mobile.flymode(0,true)
- pm.dtimerStart(3, period)
- pm.power(pm.WORK_MODE,3)
- end)
- else
- sys.taskInit(function()
- gpio.setup(23,nil)
- gpio.close(35)
- -- 设置gpio 准备唤醒一下
- gpio.setup(20, function()
- log.info("gpio,下降沿出发这里我用干簧管和磁铁来进行中断")
- end, gpio.PULLUP, gpio.FALLING)
- log.info("3s后进入,mode3模式")
- mobile.flymode(0,true)
- pm.dtimerStart(3, period)
- pm.power(pm.WORK_MODE,3)
- sys.wait(10000)
- log.info("睡眠模式进入失败")
- end)
- end
- -- 用户代码已结束---------------------------------------------
- -- 结尾总是这一句
- sys.run()
pm.power(pm.WORK_MODE,0) --从休眠模式苏醒后如果想正常使用mqtt必须将低功耗模式完整关闭
在平衡模式下可能会出现消息延时接收的情况,但最终都能收到数据。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。