开关机指南

开关机

简介

Air724UGx系列模块LUAT固件默认上电自动开机。AT固件需要通过PWRKEY管脚来给出开机信号。推荐模块供电VBAT在(3.3V~4.3V)范围内时,拉低1.2s以上,模块会进入开机流程。
常用的电路是控制PWRKEY管脚的方法是直接使用一个按钮开关。按钮附近需放置一个TVS管用以ESD保护,也可以去掉tvs管。下图为参考电路

图表:按键开机参考电路


开关机接口控制

模块功能:开机键功能配置

powerKey.setup(longPrd, longCb, shortCb)

配置开机键长按弹起和短按弹起的功能.

如何定义长按键和短按键,例如长按键判断时长为3秒:
按下大于等于3秒再弹起判定为长按键;
按下后,在3秒内弹起,判定为短按键

  • 参数
传入值类型释义
number可选参数,默认为3000,longPrd,长按键判断时长,单位毫秒
function可选参数,默认为nil,longCb,长按弹起时的回调函数,如果为nil,使用默认的处理函数,会自动关机
function可选参数,默认为nil,shortCb,短按弹起时的回调函数
  • 返回值

nil

  • 例子
powerKey.setup(nil,longCb,shortCb)
powerKey.setup(5000,longCb)
powerKey.setup()
长按powerkey键3秒以上弹起,执行关机操作:powerKey.setup(3000, function() rtos.poweroff() end)

开关机使用实例

开关机的具体使用方式可以参考如下示例代码,示例代码的主要步骤如下:
1.开机一般默认是按住开机键1.2s可以开机,开机后usb会打印log.
2.关机时,是调用powerKey.lua 库中接口,设置longprd 可以修改关机按下的时间,代码如下:

  • 按键消息处理函数
--[[
sta:按键状态,IDLE表示空闲状态,PRESSED表示已按下状态,LONGPRESSED表示已经长按下状态
longprd:长按键判断时长,默认3秒;按下大于等于3秒再弹起判定为长按键;按下后,在3秒内弹起,判定为短按键
longcb:长按键处理函数
shortcb:短按键处理函数
]]
local sta,longprd,longcb,shortcb = "IDLE",3000

local function longtimercb()
    log.info("keypad.longtimercb")  
    sta = "LONGPRESSED"	
end

local function keyMsg(msg)
    log.info("keyMsg",msg.key_matrix_row,msg.key_matrix_col,msg.pressed)
    if msg.pressed then
        sta = "PRESSED"
        sys.timerStart(longtimercb,longprd)
    else
        sys.timerStop(longtimercb)
        if sta=="PRESSED" then
            if shortcb then shortcb() end
        elseif sta=="LONGPRESSED" then
           log.info("关机",sta);
           (longcb or rtos.poweroff)()
		end
		sta = "IDLE"
	end
end

  • 配置开机键长按弹起和短按弹起的功能.
-- 如何定义长按键和短按键,例如长按键判断时长为3秒:
-- 按下大于等于3秒再弹起判定为长按键;
-- 按下后,在3秒内弹起,判定为短按键
-- @number[opt=3000] longPrd,长按键判断时长,单位毫秒
-- @function[opt=nil] longCb,长按弹起时的回调函数,如果为nil,使用默认的处理函数,会自动关机
-- @function[opt=nil] shortCb,短按弹起时的回调函数
-- @return nil
-- @usage
-- powerKey.setup(nil,longCb,shortCb)
 --powerKey.setup(20000,longCb)
-- powerKey.setup()
function setup(longPrd,longCb,shortCb)
    longprd,longcb,shortcb = longPrd or 3000,longCb,shortCb
end
  • 注册按键消息,初始化模块键盘引脚

rtos.on(rtos.MSG_KEYPAD,keyMsg)
rtos.init_module(rtos.MOD_KEYPAD,0,0,0)


3.上面是对powerKey库中代码介绍,现在demo中新建一个main.lua脚本, 加载require “powerKey”,设定按下按键4s关机。

--加载powerKey测试模块
require "powerKey"
--定义长按4s 关机
powerKey.setup(4000, function() rtos.poweroff() end)

烧录代码后,按开机键,开关机,Luatools 打印如下:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-00RXRAvY-1624847578436)(http://openluat-luatcommunity.oss-cn-hangzhou.aliyuncs.com/images/20210330120137899_微信截图_20210330105248.png “undefined”)]

常见问题及故障排查

1 无法正常开机

  • 确定模块供电端是否在工作范围内,电压是否稳定
  • 是否有拉低开机信号去执行开机动作
  • 复位脚电平是否处于高电平状态

2 低电自动关机后,等电压恢复正常,为什么开不了机?

  • 1.3基线增加了低电压检测关机功能,1.2基线没这个功能不会出现上电不开机问题
  • 1.3基线低电压关机后需按复位键,或者vbat完全断电,或者vbus供电(at版本不行),都可以重新上电开机
  • AT版本不支持充电开机,AT版本如果powerkey按键接地后, 软件关机,就无法在开机了,通过AT设置电压后, 不会触发软件关机, 只会硬件掉电,这样电压上来就可以通过按键开机
  • LUA版本支持充电开机,所以vbus供电后就可以开机。
针对带电池cat1设备,烧录1.3基线后,电池电压低于3v时,重新上电不能自动开机总结如下。
硬件状态LUA固件AT固件
powerkey接地,vbus不供电1.可以自动开机
2.电池电压低于3v时自动关机后,重新上电到正常电压,不能自动开机;按照以下两种方式中任意一种方式操作,才能自动开机
(1)需按复位键,或者vbat完全断电再上电到正常电压,才能重新上电开机,
(2)需烧录大于等于v3035版本【关闭“低电自动关机”功能、关闭“开机检测低电不允许开机”功能】才能上电可以自动开机
1.可以自动开机
2.电池电压低于3v时关机后,重新上电到正常电压,不能自动开机
(1)需按复位键,或者vbat完全断电再上电到正常电压,才能重新上电开机
(2)需烧录大于等于v301840版本【关闭“低电自动关机”功能、关闭“开机检测低电不允许开机”功能】,可以上电开机
powerkey接地,vbus供电1.可以自动开机
2.电池电压低于3v时关机后,重新上电,能上电开机
1.可以自动开机
2.电池电压低于3v时关机后,重新上电,不能自动开机
(1)需按复位键,或者vbat完全断电再上电到正常电压,才能重新上电开机
(2)需烧录大于等于v301840版本可以上电开机
powerkey不接地,vbus不供电1.不能自动开机
2.需按键开机,开机后,电池电压低于3v时关机后,重新上电,不能自动开机,需烧录大于等于v3035版本才能上电开机
1.不能自动开机
2.需按键开机,开机后,电池电压低于3v时关机后,重新上电,不能自动开机,需烧录大于等于v301840版本可以上电开机
powerkey不接地,vbus供电1.能上电开机1.不能上电开机
2.需按键开机,开机后,电池电压低于3v时关机后,重新上电,不能自动开机,需烧录大于等于v301840版本可以上电开机
722ug模块 第6脚不接VBAT不开机,需烧录大于等于v3035版本才能开机,开机后和其他cat1设备一样分上述四种情况不开机,需烧录大于等于v301840版本才能开机,开机后和其他cat1设备一样分上述四种情况
722ug模块 第6脚接VBAT能自动开机,开机后和其他cat1设备一样分上述四种情况能自动开机,开机后和其他cat1设备一样分上述四种情况

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-XmJ19awU-1624847578439)(http://openluat-luatcommunity.oss-cn-hangzhou.aliyuncs.com/images/20210603173346649_微信截图_20210603173259.png “undefined”)]

相关资料以及购买链接

3 为什么上电自动开机了?

lua 如果usb供电,上电会自动开机,如果at 不会,如果设置了闹钟开机也会自动开机。

4 为什么关不了机?

看是不是开机键坏,模块供电是否正常,模块程序是不是进入了死循环,可以重新烧个程序看看。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值