2.9-Air302(NB-IOT)-基础外设-休眠低功耗实验
<p><iframe name="ifd" src="https://mnifdv.cn/resource/cnblogs/Learn-NB-IOT-Air302-ForLua" frameborder="0" scrolling="auto" width="100%" height="1500"></iframe></p>
说明
这节只是测试一下实现低功耗的程序,如果用户想做低功耗,请注意一下几点
1.锂电池直接接模组供电,不要加任何各种没有必要的电路(也不要加任何指示灯)
留出来复位和BOOT按键;下载接口即可;
下图是我采集NTC BC3950的电路 (加3401是为了控制传感器供电)
2.购买NB卡的时候,记得给厂商说明需要做低功耗
默认购买的NB卡可能没有设置成低功耗功能
让客服在后台改一下就可以.
程序
-- LuaTools需要PROJECT和VERSION这两个信息 PROJECT = "adcdemo" VERSION = "1.0.0" -- 一定要添加sys.lua !!!! local sys = require "sys" --PM异常唤醒检测 休眠时间最低120S --- pm_wakeup_time_check() 读取上次设置hib时间,并且与本次时间作比较,异常唤醒将直接睡眠 -- @return 无 function pm_wakeup_time_check () log.info("pm", pm.lastReson()) if pm.lastReson() == 1 then local tdata = lpmem.read(512, 6) -- 0x5A 0xA5, 然后一个32bit的taskInit local _, mark, tsleep = pack.unpack(tdata, ">HI") if mark == 0x5AA5 then local tnow = os.time() log.info("pm", "sleep time", tsleep, tnow) --下面的130S根据休眠时间设置,最大可以设置休眠时间-10S。 if tnow - tsleep < (130 - 10) then pm.request(pm.HIB) -- 建议休眠 return -- 是提前唤醒, 继续睡吧 end end end end --- PM进入休眠 -- @param sec 进入hib深睡眠时间,单位:秒 -- @返回值: 无 -- @ pm_enter_hib_mode(sec) function pm_enter_hib_mode(sec) --设置休眠唤醒时间,并开启休眠 lpmem.write(512, pack.pack(">HI", 0x5AA5, os.time())) -- 把当前时间写入lpmem pm.dtimerStart(0, sec*1000) pm.request(pm.HIB) -- 建议休眠 log.info("pm check",pm.check()) sys.wait(300*1000) end --主程序入口 sys.taskInit(function() pm_wakeup_time_check() -- 从lpmem读取上一次的休眠进入时间 sys.wait(3000) --等待3S log.info("start into sleep mode") pm_enter_hib_mode(10*60) --休眠时间10分钟 --pm_enter_hib_mode(60*60) --休眠时间60分钟 end) -- 用户代码已结束--------------------------------------------- -- 结尾总是这一句 sys.run() -- sys.run()之后后面不要加任何语句!!!!!
程序说明
pm_enter_hib_mode(10*60)
就是进入低功耗的程序,里面的是休眠时间 s
我当前只使用了这个,用户自己去测试哈.
可以用个万用表测试一下低功耗的电流
我这边测试的刚进去低功耗的时候约 0.04ma 然后也会变成 7uA