• 欢迎大家分享资料!前往留言板评论即可!

Air2xx/Air8xx 系列模块的开机、关机和重启

合宙 模组资料网 2年前 (2021-05-15) 351次浏览 0个评论 扫描二维码
文章目录[隐藏]

Air系列模块以AT的完美兼容性和Luat开发的强大功能享誉物联网圈,不过很多开发者对于它的基础功能还是不很熟悉,所以本文就深入的说一下怎么开机、关机和重启模块。

开机

模块以超低功耗和超强性能可实现软件开机(闹钟开机)或硬件开机。

硬件开机

不论是AT还是Luat底层,只要模块上电后拉低 PWRKEY 大于2000ms就可以开机啦。

那么如何实现上电自动开机呢?PWRKEY接地就可以了。

不过开发者要注意的是,AT版底层的模块,开机后拉低PWRKEY 2000ms就会关机。所以AT版底层的模块PWRKEY不要直接接地(Luat 底层不受影响)。

软件开机(闹钟开机)

通过Air系列模块的闹钟功能,实现软件开机,可以在不需要额外的单片机情况下,帮助开发者更灵活的实现通信、降低功耗、延长续航时间等需求,满足多种应用场景。

使用闹钟开机,开发者首先应正确开机,同步时钟,设定闹钟后关机。此后,模块才能在正确的时间实现开机。

示例代码(alarm/testAlarm.lua):

require“ntp”

module(…,package.seeall)

–[[

函数名:ntpSucceed

功能  :网络服务器同步时间成功消息的处理函数

参数  :无

返回值:无

]]

local function ntpSucceed()

    log.info(“testAlarm.ntpSucceed”)

    跟网络服务器同步时间成功,直接参考当前时间设置闹钟即可

    设置闹钟时间为201831418180秒,用户测试时,根据当前时间修改此值

    –set_alarm接口参数说明:第一个参数1表示开启闹钟,0表示关闭闹钟;接下来的6个参数表示年月日时分秒,关闭闹钟时,这6个参数传入0,0,0,0,0,0

    rtos.set_alarm(1,2018,9,10,18,18,0)

    如果要测试关机闹钟,打开下面这行代码

    rtos.poweroff()

end

 

–[[

函数名:alarMsg

功能  :开机闹钟事件的处理函数

参数  :无

返回值:无

]]

local function alarMsg()

        print(“alarMsg”)

end

 

如果是关机闹钟开机,则需要软件主动重启一次,才能启动GSM协议栈

if rtos.poweron_reason()==rtos.POWERON_ALARM then

        sys.restart(“ALARM”)

end

 

启动网络服务器同步时间功能,同步成功后执行ntpSucceed函数

ntp.timeSync(nil,ntpSucceed)

 

注册闹钟模块

rtos.init_module(rtos.MOD_ALARM)

注册闹钟消息的处理函数(如果是开机闹钟,闹钟事件到来时会调用alarmsg

rtos.on(rtos.MSG_ALARM,alarMsg)

如果设定了闹钟开机,但是需要临时开机,那么拉低PWRKEY 大于2000ms即可。不过此时应该重新设置闹钟。

关机

硬件关机

不论是AT还是Luat,均支持硬件关机。如果是AT版底层的模块,拉低PWRKEY 大于
2000ms
,或者拉低RESET 200ms就可以实现关机;同样的,对于Luat版底层的模块,拉低RESET 200ms也可以实现关机。

有的开发者想问,Luat版底层的模块,能不能长按PWRKEY实现关机呢?答案是可以的,如下代码:

module(…,package.seeall)

require“powerKey”

 

function longCb()

        print(“PWRKEY long pressed”)

        rtos.poweroff()

end

 

function shortCb()

        print(“PWRKEY short pressed”)

end

powerKey.setup(2000, longCb, shortCb)

我们来测试一下效果如何:

Air2xx/Air8xx 系列模块的开机、关机和重启

trace中可以看到,准确识别了短按和长按,且实现了长按关机。

软件关机

AT版底层的模块,执行如下指令即可:

Air2xx/Air8xx 系列模块的开机、关机和重启

Luat版底层的模块,需要执行如下代码:

rtos.poweroff()

当然,开发者也可以是使用闹钟关机的方式。方法和“开机”章节近似,不再赘述。

重启

有的时候,由于某些特殊情况(如OTA、底层跑飞等),需要重启。

硬件重启

AT版底层的模块,开发者可以关机后开机实现重启:

·       拉低RESET 200ms关机,再拉低PWRKEY 2000ms开机;

·       拉低PWRKEY 2000ms关机,再拉低PWRKEY 2000ms开机。

Luat版底层的模块:

·       PWRKEY已接地:那么只要拉低RESET 200ms即可(拉低RESET实现关机,因正常上电且PWRKEY接地,即上电自动开机,实现重启);

·       PWRKEY未接地:需要拉低RESET 200ms关机,再拉低PWRKEY 2000ms开机。

软件重启

AT版底层的模块,需要执行如下指令:

Air2xx/Air8xx 系列模块的开机、关机和重启

Air2xx/Air8xx 系列模块的开机、关机和重启

Luat版底层的模块,可以执行如下代码实现重启:

sys.restart(“restart_reason”)

rtos.restart()

这两个代码都能实现重启,区别在于sys.restart包装了一下rtos.restart,使之可以把重启的缘由记录下来,并在下次启动时打印输出。


喜欢 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址