本帖最后由 chinaf 于 2020-1-13 18:02 编辑
简介投影键盘顾名思义是采用投影出一块键盘做为数据输入的一种方式,用内置的红外激光发射器投影出键盘的轮廓,通过一些红外跟踪技术获取到手指的动作,从而实现模拟键盘的输入。相对于实体键盘来说,投影键盘体积小携带方便,一般上采用蓝牙等无线方式连接,可以连接到PC、手机和平板等设备,不过由于没有实体按键,相对来说比较容易误触,而且对于使用环境来说,需要相对水平的平面。 本次项目使用NXP公司的LPC55S69做为核心,基于图像识别技术实现投影键盘的功能。LPC55S6x MCU家族是全球首款基于通用Cortex-M33的微控制器,随LPC5500系列推出。该高效率MCU家族采用Armv8-M架构,性能和高级安全功能达到新水平,包括TrustZone-M和协处理器扩展。LPC55S6x家族利用协处理器扩展型号,大幅提高信号处理效率,采用专有DSP加速器,使计算的时钟周期减少了10倍。还可选择使用第二个Cortex-M33内核,支持灵活地平衡高性能与功率效率。此外,LPC55S6x MCU家族依托基于40nm NVM的处理技术,具备成本效益优势,提供广泛的可扩展封装和存储器选项,并提供强大的支持,包括MCUXpresso软件和工具生态系统及低成本开发板。LPC55S69双核Arm Cortex-M33微控制器运行频率高达150 MHz。在项目中主核用于处理逻辑控制、蓝牙连接以及数据收发任务,协核用于处理图像识别。系统框图如下所示。 file:///C:/Users/zhang/AppData/Local/Temp/msohtmlclip1/01/clip_image002.jpg
硬件 项目的主要硬件有LPC55S69开发板、摄像头OV5640、红外激光键盘投影模组、一字红外激光发射器以及电源。
file:///C:/Users/zhang/AppData/Local/Temp/msohtmlclip1/01/clip_image004.jpg file:///C:/Users/zhang/AppData/Local/Temp/msohtmlclip1/01/clip_image006.jpg 一字红外激光发射器 红外激光键盘投影模组
file:///C:/Users/zhang/AppData/Local/Temp/msohtmlclip1/01/clip_image008.jpg file:///C:/Users/zhang/AppData/Local/Temp/msohtmlclip1/01/clip_image010.jpg 摄像头OV5640 电源 file:///C:/Users/zhang/AppData/Local/Temp/msohtmlclip1/01/clip_image012.jpg LPC55S69开发板
硬件框图以及原理如下图所示, file:///C:/Users/zhang/AppData/Local/Temp/msohtmlclip1/01/clip_image014.jpg file:///C:/Users/zhang/AppData/Local/Temp/msohtmlclip1/01/clip_image016.jpg 软件上电后开发板驱动红外激光键盘投影模组工作,投影出键盘,同时驱动一字红外激光发射器工作。当手指按在投影键盘区域时,手指与平面的接触部位会反射一字红外激光发射器发出的激光,同时摄像头捕捉该画面。LPC55S69的协核通过摄像头读取画面数据,通过计算得出手指按下的相对位置(x,y),从而换算出被按下的按键值。由于双核之间需要通信的数据只有键值,最简单的方法就是协核将按键值发送至MailBox的IRQ0SET寄存器,这样主核就会产生中断,并通过读取IRQ0寄存器获取到按键值。 为了简化关于摄像头获取到的图片计算内容,在摄像头前应加装红外滤光片,可以有效的避免掉一些可见光的干扰,此时再对图片进行二值化处理,将整个图像呈现出黑白效果。二值化图像本质上是对数据的二分类分割,关于其中的阈值获取的方法也有多种,主要分为手动阈值设置和自动阈值设置,由于手动阈值设置对使用环境的要求有限制,局限性比较大。由于该项目中的图片的直方图呈现明显双峰,所以我采用自动阈值设置中的OSTU即最大类间方差法,OTSU是通过计算类间最大方差来确定分割阈值的阈值选择算法,它的原理是不断地求前景和背景的类件方差。 http://www.jianshu.com/p/c7fb9be02412参照该博客的一段介绍:我们把图像分成大于阈值和小于阈值的两个部分,也就是前景与背景两个部分。我们可以计算这两个部分的类间方差。类间方差越大,就说明两个部分直接的灰度差距越大。将0~255这256个阈值都试用一遍,找到类间方差最大的值,通常就是我们要找的最佳阈值了。
实物图file:///C:/Users/zhang/AppData/Local/Temp/msohtmlclip1/01/clip_image018.jpgfile:///C:/Users/zhang/AppData/Local/Temp/msohtmlclip1/01/clip_image020.jpg
file:///C:/Users/zhang/AppData/Local/Temp/msohtmlclip1/01/clip_image022.jpg 通过摄像头捕捉的初始画面是这样的,还没有加红外滤光片。 补充接下来的程序编写以及功能实现,由于时间的原因,如果明年我依然健在的话,可能会补上。十分抱歉!
|