<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