基于FPGA的可穿戴式激光键盘

2019-03-08 03:16许圣钧徐天翔李军平
西部论丛 2019年7期
关键词:光斑线性投影

许圣钧 徐天翔 李军平

设计目的

随着社会的发展,科技水平的不断提高,传统的键盘已不能够满足左右人的要求。传统键盘具有体积大、便携性差、使用噪声大、寿命短的缺点,而笔记本电脑的键盘也存在泛用性差、无法通用等缺点,因此有了激光键盘的问世。然而普通的激光键盘在投影平面的选择上存在一定的不足,在特殊情况下的适应性较差,无法选择想要的任意平面做为投影面,由此,我们提出可穿戴式激光键盘这一概念,希望能够解决这一问题。

设计概述

本设计基于FPGA实现,使用Pynq-Z2开发平台搭载Zynq7020芯片。使用虚拟键盘激光组件投影键盘外形,同时使用一字线性感应激光器,投射红外光于投影区域。当手指敲击键盘时,会在红外投射区域触发光斑。由摄像头采集投影平面图像,通过蓝牙模块传输给FPGA进行处理。在Zynq7020上调用opencv处理采集到的图像,确定光斑位置,转换为对应二进制信息,再通过转码生成对应的ASCII码,传输给电脑。该系统分为两个部分,将小型摄像头、一字线性感应激光头和虚拟键盘激光组件封装在一起,背面可安装弹簧夹,可以根据使用者需要安置在眼镜,衣领或者任意合适的位置,经行佩戴课根据自己的需要进行调节。通过蓝牙模块和剩余部分FPGA进行连接,从而连接至电脑。

系统组成和各部分模块介绍

1.系统组成

本设计共由Pynq-Z2开发平台、摄像头AN5640、一字线性感应激光头、虚拟键盘激光组件、蓝牙模块HC-05等部分组成。

2.各部分模块介绍

(1)Pynq-Z2

PYNQ-Z2 开发板是Xilinx 大学计划支持PYNQ开源框架的第二代最新开发平台,根据第一代的反馈做功能升级。PYNQ开源框架可以使嵌入式编程用户在无需设计可编程逻辑电路的情况下充分发挥Xilinx ZYNQ SoC的功能。PYNQ-Z2除支持传统ZYNQ开发方式外,还可支持Python进行SoC编程,并且代码可直接在PYNQ-Z2上进行开发和调试。

(2)摄像头AN5640

OV5640 摄像头模组采用美国 OmniVision(豪威)CMOS 芯片图像传感器OV5640,支持手动调焦的功能。OV5640 芯片支持 DVP 和 MIPI 接口, OV5640摄像头模组通过 DVP 接口和 FPGA 连接实现图像的传输。用以采集手指点击过程中触发的红外光斑,反馈给FPGA进行处理。

(3)蓝牙HC-05

该蓝牙由两模块组成,一端与摄像头连接,接收采集到的图像信息,通过RXD端发送到另一模块的TX端,与FPGA连接,进行图像信息的无线传输,在FPGA的SOC系统上调用opencv库,对于采集进行处理确定光斑位置。

(4)中值滤波模块

由于成像系统、传输介质和记录设备等的不完善,数字图像在其形成、传输记录过程中往往会受到多种噪声的污染。另外,在图像处理的某些环节当输入的像对象并不如预想时也会在结果图像中引入噪声。中值滤波对脉冲噪声有良好的滤除作用,特别是在滤除噪声的同时,能够保护信号的边缘,使之不被模糊。这些优良特性是线性滤波方法所不具有的。此外,中值滤波的算法比较简单,也易于用硬件实现。在这里使用中值滤波对于摄像头采集到的图像进行处理,提高识别精度。

(5)一字线性激光头

在投影平面上投射一字线性红外激光,在手指敲击过程中,会在投影平面触发光斑,以供摄像头采集。

(6)红色激光发射器

键盘的外形以及用户所能看到的键盘按键都是由红色激光发射器投影而成的,并且根据投影平面的大小和形状,可以对于键盘的外形和键位位置进行更改,内置多种模式供用户切换。

工作原理

首先,由一字线性激光头发出的激光选择红外线,并且波长选择在摄像头可以识别但是人眼不可识别的范围内,以仿扰乱视线。人眼可见的范围大约在780nm以下,780nm以上属于红外线范围,而在800nm到850nm左右的红外属于摄像头可捕捉的红外光,所以我们选择了可以发出这一范围激光的一字线性激光头。

当手指敲击某个按键时,摄像頭会捕捉到图像,并将其通过蓝牙传回FPGA进行图像处理。在捕捉之前,在摄像头之前加上滤光片,尽量只保留红外光斑,避免其他杂光的干扰。

这里我们在FPGA的片上系统上调用opencv计算机视觉库跟踪光斑位置。在这里我们调用现成的Cvblob第三方库,在视觉追踪上拥有不错的效果。首先从捕捉的图像中扣出红色激光区域,在根据键盘的边缘确定光斑于区域边缘的位置。但是由于投射的角度不同,键盘有很大程度上出现变形的可能性,距离判断会出现不准确的情况。所以对于任意平面投影的误差处理是有必要的,需要根据摄像头采集到的键盘邻边的夹角角度来确定键盘的变形情况以调整光斑的位置所对应的信息。同时在人使用的过程中,如果键盘佩戴部位出现晃动,使用同样的原理进行修正。

将采集到的位置信息转换为FPGA可以识别的二进制信息,通过预先编好的转码模块,不同的二进制信息进入查找表获取对应的ASCIl码信息。

为了适应不同的平面,不同的投影情况和用户需求。我们根据对于所需要键盘的尺寸键位排布设计多套类似的系统,甚至在平面位置不够的情况下,可以舍弃一些不重要的按键。我们将多套系统例化到同一顶层模块中,使用外置按钮控制选择投影模式。

应用领域

本设计是在原本的激光投影键盘的基础上进行改良和增加功能而出现的,所以可以满足原本的激光投影键盘的全部功能。同时,在户外、演示宣讲等不方便常规使用键盘的场合,可以将键盘投影于墙面、手掌等平面简单使用。同时可以在此基础上可以设计激光投影触控板,进行完全的无实物操作。在照明不良的情况下,也能够正常使用,调节红外激光发射器调节亮度,在白天光照较强的情况下也可以使用。可以以平躺、站立等各种不同的使用姿势使用,解决长期保持坐姿使用疲劳的问题。

设计优势

本作基于FPGA实现,具有较快的处理速度,有效解决普通红外激光键盘响应延迟的问题。采用的Pynq开发平台可以同时使用FPGA和ARM,有效解决图像处理时资源不够的问题。同时Pynq可以使用Python语言驱动,拥有较好的泛用性和扩展性,在增加扩展功能时具有一定优势。相比传统的激光键盘,可穿戴式激光键盘的适应性好,可用于不同的使用情况。将原本的一体分为两个部分,通过蓝牙传输,轻便小巧,便于佩戴。由于调用了cvblob第三方库,可以同时追踪多个光斑,在加上FPGA具有并行处理的能力可以轻易实现组合按键,例如:alt+ctrl+del。

存在问题

虽然使用无线传输来达到可穿戴的目的,但是无线传输的速度还是存在一些问题,并且存在时而不稳定的情况。同时使用购买现成的模块,在体积和重量上还不完全满足可穿戴的舒适性要求,需要进一步精简,减轻重量,缩小体积。

同时,由于佩戴部位和投影面无法保持长期的相对静止,所以会出现晃动的问题,影响操作体验,需要在后期继续改进,尝试加入自稳的技术手段,减轻因为人体轻微移动所带来的负面影响。

滤光片在滤除不需要的杂光时,不能做到完全滤除,在环境光较强时,会出现位置跟踪不准确的情况,使使用受到了一定的局限性,线性激光头和滤光片的选择还需要进一步考量。

总 结

可穿戴式激光键盘的概念在2013年已成为Google对谷歌眼镜的一种设想,但是我们在这基础上使用FPGA实现,提高了速度和并行处理的可靠性,并且希望能够让用户根据实际情况自行调节键盘的大小尺寸和键位布局。这一设想在实际操作中还有很多很多现实的问题没有解决,我们的会进一步进行尝试,希望能最终研发出成熟的产品。

猜你喜欢
光斑线性投影
有关向量上的投影的概念解读
投影向量问题
有趣的光斑
主角光环
关于非齐次线性微分方程的一个证明
有趣的光斑
夏末物语
找投影
非齐次线性微分方程的常数变易法
线性耳饰