通过简单的手势唤醒您的设备

描述

本文讨论了使用非常基本的手势识别形式唤醒基于触摸屏的设备(如平板电脑)的想法。讨论了仅使用接近传感器实现这一点的几个想法。其中包括对物理布局、速度限制、检测阈值的考虑以及高级系统集成(如上下文)的概述。还提供了一些示例代码来说明软件实现。

介绍

本文讨论如何唤醒基于触摸屏的设备,例如平板电脑...没有触摸。相反,您可以使用一种非常基本的手势识别形式和一种新颖的接近传感器。讨论的主题包括物理布局、速度限制、检测阈值、高级系统集成和“人为”因素。示例代码说明了软件实现。

想出一些天马行空的想法

如果您曾经在烹饪时使用过触摸屏设备,您可能会注意到遵循设备中的食谱并不像看起来那么容易。精通技术的厨师,比如你,喜欢在做晚餐时使用平板电脑或智能手机来参考食谱。“很好,”你说,“但这有什么挑战性的呢?”手持设备通常会在一两分钟后进入睡眠状态,因为保持屏幕打开会消耗大量电量。然后,当您想要引用某些内容并且设备处于睡眠状态时,您将面临两种选择:要么强制屏幕永久保持打开状态,要么冒着用沾满食物的手弄脏屏幕的风险。每次必须检查某些东西时,总是可以选择洗手,但不断清洗和干燥是乏味的,并且浪费水。

这就是我问自己的地方,“我是否可以避免永久打开屏幕并避免弄脏设备的风险?实际上,有一种方法可以同时做到这两点。您可以手势让屏幕重新打开,而无需实际触摸它。看起来很复杂,对吧?幸运的是,这比听起来更简单。

接近接近传感器

许多触摸屏设备,尤其是智能手机,都内置了红外 (IR) 接近传感器。这些传感器通常用于在通话期间打开和关闭屏幕,从而防止将不需要的输入应用于手机。这款传感器和一些巧妙的软件设计,只需挥手即可实现非接触式唤醒操作。

基本思想是当设备处于睡眠状态时,即当其触摸屏关闭并且应用处理器处于低功耗模式时,让接近传感器“寻找”背景读数的足够大的变化并做出适当的反应。这几乎正是接近传感器在通话期间关闭屏幕的方式。在我们的应用程序中,数据的解释略有不同。

首先记下传感器读取的“正常”背景计数量。这可能是零计数,尽管在适用的情况下考虑系统偏移(例如,反向散射或串扰)很有用。然后将其设置为在信号爬过设置的阈值时触发中断或向应用处理器发送信号。这将导致系统重新联机并打开屏幕。总体而言,这非常简单,可以通过环境光和红外接近传感器来实现。

本演示使用MAX44000,每1.56ms读取一次接近读数,或每100ms慢至10ms(与环境光传感器交错时)。假设最大检测范围为15cm,LED的辐射角为±22°,则覆盖区域约为5cm²或约35.0cm宽。必须至少对在此屏幕区域中移动的目标进行一次采样才能看到。因此,在最慢和最低功率的采样速度中,可以可靠地感知或“拾取”的最快手势约为53.<>mps。我们还假设传感器只需要感应一个高于阈值的样本,然后识别通过覆盖区域的简单目标。

一切都在手腕上...

作为一种理论方法,这非常简单。当设备进入睡眠模式时,将其接近传感器设置为扫描环境,并在检测到目标时发送中断,由信号移动到预设阈值以上指示。只需通过I²C接口反复轮询传感器即可完成此操作。不幸的是,这也会消耗比大多数运营商想要的更多的电力。

这是接近传感器的特定功能变得最重要的一点。MAX44000传感器设计用于使应用处理器更省力(和更低功耗)。

通过使能MAX44000的内部接近中断(寄存器1x0中的位01),可以将唤醒门限写入内部寄存器(0x0B和0x0C)。当邻近读数超过此阈值时,将引发中断标志。这将MAX44000的/INT引脚驱动为低电平,表示外线中断。当应用处理器看到这条线路被驱动得很低时,可以唤醒它以使设备脱离其低功耗状态并使屏幕重新联机,或者它可以执行任何其他需要执行的操作。

...但是,我们不要挥手通过这个

正如通常的那样,实际应用并不像理论那么容易。不幸的是,免提唤醒并不像寻找一个高于阈值的样本那么简单。相反,在尝试实现此设计时,需要考虑几个因素。

信号电平和布局

也许最关键的考虑因素是选择用于触发唤醒条件的信号电平。在系统的响应能力及其对错误检测的免疫力之间存在着重要的权衡。将阈值设置为低可以更轻松地检测输入(例如,挥手),但会增加瞬态噪声或入射运动错误检测的风险。相反,过高的阈值几乎肯定会将错误检测的可能性降低到零,但它也可能导致系统只能检测到非常接近的目标,甚至对大多数输入(例如,您疯狂的挥手)没有反应。

解决这个问题的最佳方法是,首先,减轻系统中的噪声量。这可以通过光学解决方案或仔细的电气布线和元件放置来完成。通过降低本底噪声,可以减少错误检测的几率。接下来,选择一个“平均”检测距离(例如,4cm到5cm),并使用基准目标测量信号。18%的灰卡是理想的。请注意,这似乎很明显,但如果应用在传感器前面使用深色玻璃,则应在该玻璃就位的情况下进行测量。测量的信号电平可用作设置阈值的最佳猜测。一个好的规则是将级别设置为满量程的 8% 到 15%,尽管您的级别可能会有所不同。

MAX44000传感器的接近门限寄存器允许根据上述实验设置唤醒门限。图1显示了18%灰卡的信号与距离的关系图,驱动电流为100mA,传感器前面没有玻璃。蓝线是唤醒阈值的可能选择。

传感器

图1.距离与信号强度的关系,采用MAX44000接近传感器,18%灰卡,100mA电流,无玻璃。

噪声和低通滤波

如果噪声仍然是一个问题,则可以使用低通滤波器来清理信号。MAX44000有两种方法可以做到这一点,因为它还有几位在引发中断标志之前使能阈值保持。此设置要求邻近读数保持在设定数量的样本的阈值之外,可用于减少噪声的影响。

一种稍微复杂的方法涉及将传感器的读数存储在数据队列中,然后在软件中对其应用定制的FIR滤波器。不幸的是,这种方法有一个缺陷。如果无法提高接近传感器的采样率,则可以通过传感器的视野滑动手并仍被检测到的速率会降低。100ms有效采样率特别容易受到此影响。使用持久性阈值时,这种减少的检测量可能高达 16 倍(尽管 4 倍持久性应该足够了)。

波速

这就引出了我们下一个考虑因素,波速。最大速度首先由传感器的视野决定;第二,波与传感器的距离;第三,采样率;第四,门槛水平。确定前两个标准是显而易见的:传感器可以看到的角度,加上目标与传感器的距离,可以与一些基本的三角函数一起使用,以计算目标在传感器试图拾取目标时可以行进的距离。例如,如果传感器的视角总计为 30 度,有效范围最大为 10 厘米,则目标可以在传感器上方移动 5.35 厘米,但仍能被看到。这是一个约78cm²的覆盖区域。这个线性距离,加上采样率,意味着速度限制。具体来说,如果采样率为T,则目标必须穿过不小于T的可见区域。例如,如果T为100ms(MAX44000最慢速率),则按照前面的示例,理论上允许的最大速度为1mps。(这实际上非常快。您可能希望捕获多个样本以确认评估,因此此速度限制可能会降低。

检测阈值在允许的最大速度中也起着一定的作用。通常,阈值越低,可以拾取的手势就越快。如上所述,应仔细选择此低阈值以避免错误检测。

“人”因素

此应用程序受制于人手和挥舞它的人的不一致。因此,设计应该涉及用例,以确定典型用户在屏幕前移动手的速度,他们与屏幕的距离以及他们是否戴着手套。与设备的这种交互也可能因智能手机、平板电脑或汽车仪表板上的某些应用程序而异。最终,应用程序必须在设计过程中考虑这些用户界面和体验变量。

还有最后一件事需要考虑,什么时候波浪不是波浪?更具体地说,设备如何知道接收到的信号是来自挥手还是其他简单的动作,例如放置在外壳内;口袋或背包,还是面朝下放在某个表面上?我们需要面对事实——这个问题没有简单的答案,除非为设备提供上下文。如何做到这一点完全是另一回事。

最后,您可以选择仅在触摸屏设备运行某些应用程序时实现此唤醒解决方案,也可以要求用户启用它。此外,其中许多设备都有加速度计,可以告诉设备何时面朝下躺着。如果用户手动将设备置于睡眠状态(例如,当设备关闭时),也可以禁用该功能。

自己尝试一下

为方便起见,本文附有三段示例代码。第一种方案通过手动检查MAX44000的接近读数来实现该唤醒方案的概念简单版本。第二个代码在第一个代码的基础上扩展,并实现前面讨论的筛选概念。最后一个代码显示了利用MAX44000的中断功能进行唤醒的快速方法。

审核编辑:郭婷

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分