• 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
     
     
  • 相关阅读:
    【LG3231】[HNOI2013]消毒
    【LG3230】[HNOI2013]比赛
    【LG3236】[HNOI2014]画框
    【BZOJ3142】[HNOI2013]数列
    【BZOJ2395】[Balkan 2011]Timeismoney
    【CF613D】Kingdom and its Cities
    【LG4103】[HEOI2014]大工程
    【LG3320】[SDOI2015]寻宝游戏
    【LG4841】城市规划
    【CF960G】Bandit Blues
  • 原文地址:https://www.cnblogs.com/yangfengwu/p/14081345.html
Copyright © 2020-2023  润新知