手势传感器 - 从零开始认识各种传感器【第十八期】
今天我们来学习手势传感器,将为大家介绍传感器的工作原理;常见种类;以及通过MCU实际演示对于传感器数据的读取过程。
标签
嵌入式系统
Lucia
更新2024-08-01
87

1、什么是手势传感器 

手势传感器是一种能够感知人类手势或动作的传感器。它可以捕捉、识别和解释人类的手部动作或姿势,并将其转换成电信号或数字信号,通过识别人体的手势动作来实现与电子设备的交互,如控制电视、医疗设备、游戏机及VR设备等。

2、手势传感器是如何工作的

总体来说,手势传感器的原理是利用不同的传感技术如红外线、超声波、激光等方式来感知人类手势或动作,并将这些手势或动作转换成电信号或数字信号,以供电子设备进行处理或控制。

3、常见的手势传感器的种类

依据测试原理的不同,手势传感器可以分为红外,光学,超声波,和电场手势传感器。

3.1 红外线手势传感器

红外手势传感器的原理是通过发射红外光和接收手部反射回来的红外光线来检测手的运动方向。以Broadcom的APDS-9960为例,它具备一个发光二极管LED和4个定向光电二极管,分别用来检测上下左右四个方向。

在手势动作过程中,不同位置的光电二极管检测的反射能量强度和顺序是有时间上的的差异。若用户用手从传感器的顶部轻扫至底部,则在手势动作之初,下方光电二极管检测的入射光比上方光电二极管更强;在手势动作期间,手逐渐移动到两个二极管接收能量相等的点;而在手势动作完成时,下方光电二极管接收的反射光较弱,而上方光电二极管接收的更强,这样就完成了一个典型的下扫动作的检测。

从技术上讲,采用LED可见光就足以实现手势识别,但可见光可能会影响用户体验,尤其是在光线较暗的场景中。利用红外光传感,既能保持手势识别的效果,又具备隐形特性。

3.2 光学手势传感器

光学手势传感的原理和红外光传感类似,它利用摄像头或其他光学传感器来捕捉手势,然后通过计算机视觉和模式识别算法来解析和理解这些手势。这种技术在虚拟现实、增强现实、人机交互等领域有着广泛的应用。

3.3 超声波手势传感器

超声手势识别的原理是利用超声波传感器向空中发射一定频率的超声波,当手部运动时,手部与传感器的距离会发生变化,那么反射回来的超声波会出现相位的变化,对信号进行处理和分析,可以实现对手势的识别。超声技术手势识别的距离范围比较大,从近场到远场几乎都可以做到。

3.4 电场手势传感器

对于近距离手势传感场合,还可以使用电场手势传感器。它的工作原理是对一块电容板施加直流或者交流电压,在电容板周围会形成静态或者正弦变化的电场。当手指接近传感器时,由于人体的导电性,电场线被吸引到手指并回到地。这个由于手指干扰而失真的电场可以被接收器检测到,从而实现对手势的检测。它无需照明,功耗低,但是检测距离相对比较短。

3.5 几种手势传感器的对比

从对比表格可以看出,每种技术都有相应的特点和优缺点,在实际应用中需要根据项目的实际要求进行选择。例如在一些光线比较昏暗的展馆,不能发射可见光,需要较长的识别距离,选择超声波或者红外会比较合适。

4、手势传感器实验演示 

我们来演示使用 MCU 读取显示手势传感器的数据。实验中使用的是一款常见的红外手势传感器,它可以识别前后左右等的简单手势,我们在传感器上方进行简单的手势挥动,可以看到屏幕会显示对应动作的手势方向变化。

主控板卡:基于RP2040的带屏调试助手

以下是主程序中对于手势传感器数据的获取代码示例:

from machine import UART,Pin,Timer,PWM,SPI,time_pulse_us, I2C,freq
import _thread
from time import sleep_us,ticks_us,sleep
import uos
import test.st7789 as st7789
from test.fonts import vga2_8x8 as font1
from test.fonts import vga1_16x32 as font2
import random
import math,array
import struct
from apds9960.const import *
from device import APDS9960 as APDS9960

freq(150_000_000)
bus = I2C(0, scl=Pin(21), sda=Pin(20), freq=400_000)

apds = APDS9960(bus)

dirs = {
APDS9960_DIR_NONE: "none",
APDS9960_DIR_LEFT: "left",
APDS9960_DIR_RIGHT: "right",
APDS9960_DIR_UP: "up",
APDS9960_DIR_DOWN: "down",
APDS9960_DIR_NEAR: "near",
APDS9960_DIR_FAR: "far",
}

apds.setProximityIntLowThreshold(250)

print("Gesture Test")
print("============")
apds.enableGestureSensor()

st7789_res = 0
st7789_dc = 1
disp_width = 240
disp_height = 240
CENTER_Y = int(disp_width/2)
CENTER_X = int(disp_height/2)
spi_sck=Pin(2)
spi_tx=Pin(3)
spi0=SPI(0,baudrate=60_000_000, phase=1, polarity=1, sck=spi_sck, mosi=spi_tx)

display = st7789.ST7789(spi0, disp_width, disp_width,
reset=machine.Pin(st7789_res, machine.Pin.OUT),
dc=machine.Pin(st7789_dc, machine.Pin.OUT),
xstart=0, ystart=0, rotation=1)
display.fill(st7789.BLACK)

img_up = "/up.bin" #图片文件地址
img_down = "/down.bin" #图片文件地址
img_left = "/left.bin" #图片文件地址
img_right = "/right.bin" #图片文件地址

f_image = open(img_down, 'rb')
for column in range(1,240):
buf=f_image.read(480)
display.blit_buffer(buf, 1, column, 240, 1)

while True:
sleep(0.5)
if apds.isGestureAvailable():
motion = apds.readGesture()
print(motion)
if (motion == 1) :
f_image = open(img_left, 'rb')
for column in range(1,240):
buf=f_image.read(480)
display.blit_buffer(buf, 1, column, 240, 1)
if (motion == 2) :
f_image = open(img_right, 'rb')
for column in range(1,240):
buf=f_image.read(480)
display.blit_buffer(buf, 1, column, 240, 1)
if (motion == 3) :
f_image = open(img_up, 'rb')
for column in range(1,240):
buf=f_image.read(480)
display.blit_buffer(buf, 1, column, 240, 1)
if (motion == 4) :
f_image = open(img_down, 'rb')
for column in range(1,240):
buf=f_image.read(480)
display.blit_buffer(buf, 1, column, 240, 1)
print("Gesture={}".format(dirs.get(motion, "unknown")))




团队介绍
你了解生活中常见的各种传感器是如何工作的吗?本系列将选择30种不同类型的传感器,通过5分钟左右的视频和文章带你一步步了解每个传感器的内部结构和工作原理,并推荐选型和购买合适的传感器。
团队成员
硬禾学堂
硬禾核心团队举办实战培训营已有超过6年的经验。自成立起矢志建立专业化、系统化、工程化技能培训体系,以在工业界中的最佳实践为行业培养技术中坚和领军人才。 硬禾采用Project-Based Learning(PBL)项目制教学方法,在基于实际产品和项目的教学过程中借助短期的高强度、快节奏的系统性实战训练,让学员迅速积累优秀工程师应具备的专业技能、职业素养和全区思维,加速其职业成长。
得捷电子
DigiKey 总部位于美国明尼苏达州锡夫里弗福尔斯市,是全球电子元器件和自动化产品前沿商业分销领域公认的领航者和持续创新者。我们通过分销来自 2,900 多家优质品牌制造商的 1,530 多万种元器件获得了强大的技术优势,并凭借行业领先的产品存货广度和深度以及立即发货的能力,确立了我们在分销领域的领导地位。DigiKey 还为工程师、设计师、创建者和采购专业人员提供丰富的数字解决方案、无障碍互动和工具支持,以帮助他们提升工作效率。如需了解更多信息,请访问 www.digikey.cn 并关注我们的微信、微博、腾讯视频和 BiliBili 账号。
评论
0 / 100
查看更多
硬禾服务号
关注最新动态
0512-67862536
info@eetree.cn
江苏省苏州市苏州工业园区新平街388号腾飞创新园A2幢815室
苏州硬禾信息科技有限公司
Copyright © 2024 苏州硬禾信息科技有限公司 All Rights Reserved 苏ICP备19040198号