0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

快速设计您自己的低成本 3D 手势控制器

丫丫119 来源:未知 作者:Jacob Beningo 2019-08-28 17:25 次阅读

旋钮、按钮、手柄和触摸屏是人类与机器和嵌入式设备的常用交互方式。不过,传感器技术的最新进展开辟了一条全新的道路,使开发人员可为产品添加三维 (3D) 手势控制。

由于所采用的技术各不相同,购买和集成手势控制器可能成本高昂。然而,市面上手势传感器技术种类繁多,从使用红外 LED光电二极管检测动作的经济型传感器,到昂贵的手势识别相机。红外手势传感器经济实惠,可以通过数字接口与低成本微控制器连接,只需辅以简单的软件,精度足以应对许多应用。

本文探讨了使用Broadcom的APDS-9960进行手势控制的方法。几乎所有嵌入式系统都可轻松集成这款红外 (IR) 手势控制传感器。

基于 IR 的手势传感器

基于 IR 的手势传感器原理十分简单。用于检测手势时,开发人员可能需要检测以下几种不同手势:

向上/向下

向左/向右

向前/向后

在上述每种情况下,传感器都需要检测运动方向,而这主要通过传感器的两大组件来实现:一个发光二极管 (LED) 和多个定向光电二极管。定向光电二极管由至少四个光电二极管组成,分别置于距 IR LED 预定义距离处。例如,Broadcom 的 APDS-9960 环境光、接近度和手势传感器将四个光电二极管布置为菱形,每个二极管用于指示一个方向,分别为上、下、左和右(图 1)。

图 1:Broadcom 的 APDS-9960 具有一个集成 IR LED 和四个定向光电二极管,可检测反射的 IR 能量以分析手势。(图片来源:Broadcom)

当 LED 发射红外能量时,除非遇到手等物体发生反射,否则能量就会发射至空气中。光电二极管将检测到不同强度的反射能量,具体取决于物体的位置。例如,相比位于手势后边缘的光电二极管,前边缘光电二极管最初接收的反射能量较少,从而导致一个光电二极管的计数值比另一个高。在手势动作过程中,连续测量将导致不同位置的光电二极管检测的反射能量强度不同,而分析该方向信息流即可确定手势。

例如,若用户用手从传感器的顶部轻扫至底部,则在手势动作之初,下方光电二极管检测的入射光比上方光电二极管更强;在手势动作期间,手逐渐移动到两个二极管接收能量相等的点;而在手势动作完成时,下方光电二极管接收的反射光较弱,而上方光电二极管接收的更强,此时两光电二极管的曲线和相位完全反转(图 2)。

图 2:Broadcom 的 APDS-9960 检测到向下手势将生成以上光电二极管曲线,其中主导曲线指示手势方向。(图片来源:Broadcom)

了解手势数据的生成原理后,下一步就来看看如何连接到 APDS-9960。

连接 Broadcom 的 APDS-9960 手势控制器

APDS-9960 采用 8 引脚表面贴装 (SMD-8) 封装,占用印刷电路板空间极小(图 3)。传感器尺寸仅为 3.94 × 2.36 × 1.35 mm。该封装包含正常电源和接地引脚、用于连接微控制器的 I2C 数字接口,以及用于定制 LED 驱动电路的引脚。此外,该封装还包含中断引脚,可用于通知微控制器处理可用的手势数据。

图 3:APDS-9960 采用紧凑型表面贴装 SMD-8 封装,可最大限度减少电路板空间。(图片来源:Broadcom)

构建原型并连接 APDS-9960 有几种不同选项可供选择。例如,SparkFun的APDS-9960 评估板提供了包括 LED 驱动电路在内的小型分线板,以便实现开箱即用(图 4)。开发人员只需焊接针座以通过旁路绕过电源和接地,并将 I2C 总线和可选的中断引脚连接至微控制器,即可着手开发嵌入式软件了。此外,SparkFun 评估板还包含安装孔,若现有电路板有助于实现应用,则可直接运用到设计中。

图 4:SparkFun 的 APDS-9960 评估板包含着手开发手势控制所需的所有板载电路。(图片来源:Digi-Key Electronics)

或者,开发人员也可使用Adafruit的APDS-9960 分线板,这也是一款一体化解决方案(图 5)。Adafruit 分线板很有意思,尽管外形小巧,却还包含 3 V 板载稳压器,可用于为电源 LED 甚至低功耗微控制器等附加电路供电。最重要的是,Adafruit 为开发人员提供了完善的 Adafruit APDS9960 分线板用户指南,以及若干软件库可用于连接 Arduino 板或运行 Python 的开发板。因此,使用 APDS-9960 可轻松实现开箱即用,从而大幅缩短开发人员着手使用手势传感器所花费的时间。

图 5:Adafruit 的 APDS-9960 分线板包括 APDS-9960、3 V 板载稳压器和 I2C 电压转换电路以支持 3 V 或 5 V 总线。(图片来源:Digi-Key Electronics)

连接上述分线板的最简单方法是将Molex22-28-4255分离式针座焊接至电路板上。最好将针座朝下焊接,可实现多种优势:首先,可将电路板直接插入某个试验板,如Digilent的340-002-1无焊试验板套件(图 6)。其次,不要在该电路板上表面接线,以免手势动作时意外触及挂在针座上的电线。

图 6:Digilent 无焊试验板上焊接好的 Adafruit APDS-9960 分线板。(图片来源:Adafruit)

此时,需要连接电源和接地,并将 I2C 总线连接至所需的微控制器开发板。任何带微控制器的开发板都可使用。但最好选择STMicroelectronics用于物联网节点的B-L475E-IOT01A2STM32L475 开发套件(图 7)。该开发板具有 Arduino 针座,并且由 MicroPython 提供支持,可在该开发板上轻松编程。完成此操作后,即可使用 Python 脚本连接手势传感器,从而使手势控制不仅可行,而且轻而易举。

图 7:STM32L475 物联网节点开发套件包含 Arduino 针座,可轻松连接到 APDS-9960 分线板。(图片来源:STMicroelectronics)

使用 Python 检测手势

从 APDS-9960 获取手势数据虽不复杂,却要求开发人员仔细阅读规格书。APDS-9960 具有多种不同功能,其中包括:

手势感应

环境光感应

RGB 颜色感应

接近感应

上述功能均由状态机控制,而状态机的执行则基于应用的寄存器设置。例如,防止手势引擎一直执行的妙招是使用接近感应引擎来检测手的存在。一旦 IR 反射能量达到预设计数,则由接近引擎转换为手势引擎,手势引擎测量定向光电二极管并将测量值放入先进先出 (FIFO) 缓冲器。为了启用该功能,需要设置控制寄存器启用接近感应,并设置计数阈值。

开发人员可能需要编写算法以检测特定的手势,具体取决于应用所需的手势。然而,对于向上/向下和向左/向右等常见手势,开发人员可以使用 Adafruit 的 APDS-9960CircuitPython 库。将该库复制到 Python 设备后,即可使用清单 1 所示代码导入。该代码可导入 APDS-9960 库以及支持 I2C 总线的多个库。

副本 import board import busio import adafruit_apds9960.apds9960 i2c = busio.I2C(board.SCL, board.SDA) sensor = adafruit_apds9960.apds9960.APDS9960(i2c)

清单 1:用于连接 APDS-9960 手势控制器的 CircuitPython 导入和库初始化代码。(图片来源:Adafruit)

传感器对象是 APDS-9960 库中一个实例。稍后,我们将看到其易用性。为了启用手势,开发人员只需使用以下代码启用手势功能:

副本 sensor.enable_gesture = True The main program loop setup to read the gesture is itself just a few lines of code (Listing 2).gesture = sensor.gesture() while gesture == 0: gesture = sensor.gesture() print('Saw gesture: {0}'.format(gesture))

清单 2:只需简单重复调用单个库即可检测手势。(图片来源:Adafruit)

阅读该代码后,您定会发现若感测到手势,则将在屏幕上打印检测的手势(图 8)。

图 8:Adafruit 的 APDS-9960 CircuitPython 库手势输出结果示例。(图片来源:Adafruit)

手势可以数字形式输出,使用以下键值即可轻松转换:

0 = 未检测到手势

1 = 检测到向上手势

2 = 检测到向下手势

3 = 检测到向左手势

4 = 检测到向右手势

如图所示,借助预先导入的库,只需几行代码即可轻松实现基本手势识别。识别更为复杂的手势则需要修改库以分析原始手势数据。

构建手势控制器的技巧与诀窍

构建手势控制传感器并将其集成于产品着实具有一定挑战性。使用基于红外线的手势控制器时,开发人员需要考虑使用以下几个“技巧与诀窍”:

使用手势传感器的内部接近检测器来触发手势控制引擎,从而最大限度地减少无效手势启动。

从现有手势库开始,在现有功能的基础上构建其他手势。

将光电二极管增益调整为适合最终手势应用的最佳值。

将 LED 输出驱动强度调整为适合应用的最佳值,或许需要稍作调整才能获得可重复使用的数值。

无论开发何种手势应用,开发人员都应从高级软件开发入手,待充分熟悉该传感器后再转而使用较低级别的代码。

遵循上述技巧有助于确保开发人员花费最短的时间来启动和运行 IR 手势控制器。

总结

人们不断追求以更自然、更直观的方式进行人机交互,而其中一种重要方式就是使用手势控制技术。尽管市面上手势控制技术种类繁多,但论及成本最低、使用最便捷的技术还属基于红外线的手势传感器。如上所述,如果开发人员利用现有的硬件和软件技术,则将手势传感器与微控制器集成在一起,亦可省时省力,简单易用。

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

    关注

    2522

    文章

    47984

    浏览量

    739697
  • 3D
    3D
    +关注

    关注

    9

    文章

    2752

    浏览量

    106427
  • Broadcom
    +关注

    关注

    2

    文章

    737

    浏览量

    43519
收藏 人收藏

    评论

    相关推荐

    3D打印模型上色保姆级教程!低成本,高效,快速上色,包教会!

    3D打印
    学习电子知识
    发布于 :2022年12月13日 22:37:10

    如何设计高质量低成本3D眼镜_Designing Cost-Effective 3D Technol...

    如何设计高质量低成本3D眼镜_Designing Cost-Effective 3D Technology ByRobert Murphy, Cypress Semiconductor作者
    发表于 06-18 13:56

    启用因特网功能的 3D 打印机运动控制器参考设计

    `描述这款开源 3D 打印机运动控制器设计可将 BeagleBone Black 连接到 3D 打印机,从而使 3D 打印机变为连接互联网的器件,可进行超高速打印。有了该设计,再也无需
    发表于 04-13 16:42

    3D图像的速度控制

    你好! 现在我有个问题想请教大家, 我怎么做一个3D图像的涡轮扇叶然后通过控制器调整它的速度然后再3D图像中开始转并且根据控制量改变在3D
    发表于 11-30 23:25

    带有3D手势识别和手部位置追踪系统

    Microchip MGC3030 手势控制器是一个电场感测片上系统 (SoC),板载处理功能带有 3D 手势识别和手部位置追踪。它采用 Microchip 的 GestIC® 技术,
    发表于 07-03 09:40

    一枚芯片,四片铜箔,简单实现3D手势控制

    。连接上四个传感,可以达到3D手势控制的效果,其实也就是可以实现上下左右滑、旋转、点击、拖曳这种X、Y、Z三维立体轴上的移动物体识别。应用的话,就看个人脑洞的发挥啦,从这家公司的官网
    发表于 08-06 13:59

    一枚芯片,四片铜箔,简单实现3D手势控制

    ”的能力。今天将为介绍的是一款珠海普林芯驰科技有限公司推出的SPT10 A系列芯片,也就是3D手势控制芯片,核心技术是远距离电容感应技术,您可以理解为是一种推广,但这不正是我们探索世
    发表于 08-08 14:43

    针对显示屏的2D/3D触摸与手势开发工具包DV102014

    最新的PCAP控制器MTCH6303及MGC3130 3D手势控制器。它包含一个8英寸的透明触摸传感,以便对多种常用显示屏进行
    发表于 11-07 10:45

    自制低成本3d激光扫描测距仪激光雷达

    自制低成本3d激光扫描测距仪激光雷达
    发表于 05-27 16:23

    自制低成本3D激光扫描测距仪(3D激光雷达)

    自制低成本3D激光扫描测距仪(3D激光雷达)
    发表于 03-04 10:51

    手势识别控制器制作

    目录智能家居硬件小制作(含源码)《手势识别控制器》基于PAJ7620手势模块、L298N驱动板、arduino介绍材料PAJ7620手势模块参数硬件连接库文件使用其他硬件制作
    发表于 09-07 06:45

    低成本控制器单元中经常使用的内部RC振荡的优点和需求

    MCU的内部结构本文将会介绍许多低成本控制器单元(MCU)中经常使用的内部RC振荡的优点和需求,包括为获得最佳精度而进行的校准过程。低成本控制
    发表于 11-04 08:38

    基于LaunchPad + BoosterPack的3D打印机控制器参考设计

    思路。今天,我想给大家介绍下,TI是如何很好地融入这场3D打印技术革命的。我们将采用什么更合适的方法来适应3D打印技术革命,而不是生产我们自己3D打印机呢?最终的答案就是一款
    发表于 11-21 07:27

    SVPWM算法在低成本控制器中的快速实现

    SVPWM算法在低成本控制器中的快速实现
    发表于 10-28 11:59 2次下载
    SVPWM算法在<b class='flag-5'>低成本</b>微<b class='flag-5'>控制器</b>中的<b class='flag-5'>快速</b>实现

    快速设计您自己低成本 3D 手势控制器

    发表于 11-25 08:28 0次下载
    <b class='flag-5'>快速</b>设计您<b class='flag-5'>自己</b>的<b class='flag-5'>低成本</b> <b class='flag-5'>3D</b> <b class='flag-5'>手势</b><b class='flag-5'>控制器</b>