一键掌控全局:POWER_ON的多模态交互设计解析!

通过优化PCB布局与信号处理电路,POWER_ON按键被赋予“压力感应+长按识别+双击速触”多维输入能力。配合嵌入式系统的实时任务调度机制,单次操作可对应启动、休眠、参数校准等复杂指令,软件demo中动态演示了从用户输入到系统响应的全流程技术链路。

POWER_ON按键,即开关机键,在结构设计上可以实现一键多用——既可以有效减少结构的按键设计,也可以使整机更加简洁。

本文以Air8000核心板为例,分享POWER_ON按键功能及其硬件设计、软件demo相关内容。

最新开发资料详见:www.air8000.cn

一、常用功能简介:

按键开机:消费品常用的方法,在需要使用的时候才开机。

上电开机:在部分商用场景,可能存在一直接着电源,或者没有按键开机情况,需要上电就开机。

按键检测:在开机状态,可以通过上下沿,检测开机键按下或者释放,或者按下次数,从而实现业务目标。

按键关机:通过POWER_ON按键可以实现对设备进行关机,从而达到节省流量或者省电的目的。

二、硬件设计参考:

按键开机&按键关机&按键检测电路设计:

上电开机电路设计:

注意事项:boot(Air8000管脚1),需要悬空或者接地,不可以接到vdd_ext。

详细开机电路设计说明参见:https://docs.openluat.com/air8000/luatos/hardware/design/poweron/

三、软件demo实操:

Air8000支持LuatOS二次开发,开关机键demo示例脚本和资源文件已发布,可通过下方链接获取最新资料。

最新源码及实操教程详见:

https://docs.openluat.com/air8000/luatos/app/common/power_on/ 

3.1 示例代码:

3.2 烧录代码

参考《如何使用LuaTools给Air8000烧录软件》,将准备好的软件烧录进Air8000,详见:

https://docs.openluat.com/air8000/luatos/common/download/

3.2 运行结果

运行示例可实现Air8000核心板按键不同功能,实际应用中可根据需求灵活调整。

今天的内容就分享到这里了~

import torchimport torch.nn as nnfrom torch.nn import initfrom resnet import resnet50, resnet18class Normalize(nn.Module):def __init__(self, power=2):super(Normalize, self).__init__()self.power = powerdef forward(self, x):norm = x.pow(self.power).sum(1, keepdim=True).pow(1. / self.power)out = x.div(norm)return outclass Non_local(nn.Module):def __init__(self, in_channels, reduc_ratio=2):super(Non_local, self).__init__()self.in_channels = in_channelsself.inter_channels = reduc_ratio//reduc_ratioself.g = nn.Sequential(nn.Conv2d(in_channels=self.in_channels, out_channels=self.inter_channels, kernel_size=1, stride=1,padding=0),)self.W = nn.Sequential(nn.Conv2d(in_channels=self.inter_channels, out_channels=self.in_channels,kernel_size=1, stride=1, padding=0),nn.BatchNorm2d(self.in_channels),)nn.init.constant_(self.W[1].weight, 0.0)nn.init.constant_(self.W[1].bias, 0.0)self.theta = nn.Conv2d(in_channels=self.in_channels, out_channels=self.inter_channels,kernel_size=1, stride=1, padding=0)self.phi = nn.Conv2d(in_channels=self.in_channels, out_channels=self.inter_channels,kernel_size=1, stride=1, padding=0)def forward(self, x):''':param x: (b, c, t, h, w):return:'''batch_size = x.size(0)g_x = self.g(x).view(batch_size, self.inter_channels, -1)g_x = g_x.permute(0, 2, 1)theta_x = self.theta(x).view(batch_size, self.inter_channels, -1)theta_x = theta_x.permute(0, 2, 1)phi_x = self.phi(x).view(batch_size, self.inter_channels, -1)f = torch.matmul(theta_x, phi_x)N = f.size(-1)# f_div_C = torch.nn.functional.softmax(f, dim=-1)f_div_C = f / Ny = torch.matmul在这个代码上改进成双流网络 将网络的第一层浅层卷积块独立 分别提取可见光和红外图像的信息 后四层深层卷积块共享 提取不同模态的行人共享特征 在第三层和第四层之间加入CMA模块 第五层之后加入PAM模块 后面不用改变的完整的模型代码
03-31
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值