基于STM32的激光虚拟键盘的硬件设计

合集下载

基于STM32和DGUS液晶屏的随机键盘设计

基于STM32和DGUS液晶屏的随机键盘设计

出的 STM32 增强型系列 STM32F103 为高密度性能线的 32 位微处理器,其内核为 Cortex-M3,具有成本低廉、功耗 较低、性能较好、集成度高、便于调试等优点,在医疗、 工业、电子等领域得到广泛应用 [3~4]。STM32F103RCT6 最 大处理速度为 72MHz,兼有串行单线调试 SWD 和 JTAG 接 口,具有 5 个串口,可与迪文 DGUS 液晶屏进行串口通信 控制;具有 2 个 I2C 接口,可挂载 EEPROM 进行密码存储。 STM32F103RCT6 内嵌晶振,为提高时钟稳定性,外接 8M 无 源 晶 振 和 32.765K 晶 振。 另 连 接 复 位 电 路 和 电 源 指 示 LED,引出 JTAG 接口,进行下载和调试。
电子电路设计与方案
液晶屏支持 SD 卡,可使用画图软件设计界面通过 SD 卡下 载使用,使界面设计丰富和多样化。其硬件结构如图 2 所示。 ■■2.2 随机数产生
本设计中随机数产生为 0~9 的随机排列,以及 26 个字 母的随机排列。对于这两种随机排列均使用两两交换法,原 理简单易操作,且随机效果较好。将 0~9 以及 26 个字母分 别随机处理,在此以 0~9 的数字排列为例说明。
关键词:随机键盘;32 位处理器;液晶显示;密码匹配
0 前言
中国是网上支付使用大国,根据《中国互联网发展报告 2018》显示,到 2017 年底,中国网上支付用户人数达 5.31 亿,第三方互联网支付金额达到 143 万亿。从网银支付到 手机支付,互联网支付已经成为中国最主流的支付方式 。 [1~2] 目前密码泄露以病毒、黑客以及旁窥为主要原因。密码泄露 不仅会造成个人财产损失,某些平台账号的密码泄露也可能 造成他人的财产损失,如盗取社交软件密码骗取失主亲友钱 财。采用随机键盘能有效地避免密码旁窥和泄露,不仅能在 公共场合避免密码旁窥,也能有效防止通过记忆键盘点击位 置的木马窃取密码。当前已经有部分银行采用随机软键盘的 控件。

激光投影虚拟键盘的基本原理设计

激光投影虚拟键盘的基本原理设计

激光投影虚拟键盘的基本原理设计发表时间:2018-11-19T10:59:35.373Z 来源:《科技研究》2018年9期作者:于家泉刘俊杰[导读] 本文主要对激光投影虚拟键盘的基本原理、设计方法及测试过程进行了研究大连民族大学辽宁大连 116600摘要:本文主要对激光投影虚拟键盘的基本原理、设计方法及测试过程进行了研究,在功能模块上可分成可视化的虚拟键盘呈现、键盘输入信号的采集、图像信号定位编码及通信接口四部分,实际分硬件和软件两部分展开工作。

关键词:红外光;图像信号定位编码;STM32F103RBT一、激光投影键盘工作原理及制作步骤 1工作原理本设计采用小功率红色激光发生器作为投射光源,并以自主设计制作的键盘字模,覆盖于激光光源表面,激光透过字模将键盘图形投射到表面上,从而实现虚拟键盘的呈现工作。

单片机对信号的采集拟采用摄像头和一字红外光源实现。

主要做法是将一字红外光源置于投影装置底部,发射出的一字红外信号用于检测是否有手指按下。

若有手指按下时,红外线就会以一定角度被反射。

而摄像头则安置于一字红外光源上方,用于接收被反射的红外信号。

手指按下的时候,将一字线激光器发射出来的红外线反射到摄像头里面,摄像头的图像通过液晶显示屏显示出来。

摄像头加上了红外滤光片的,只有红外线可以进入摄像头里面,避免了可见光的干扰存在,更好的获取到手指的反射光斑,也就是手指反射的红外光斑,将可见光(包括键盘投射的图案)过滤掉了,所以可见光是看不到的,最后得到光斑,再进行二值化+阈值调节。

2激光键盘投影单片机对信号的采集拟采用摄像头和一字红外光源实现。

主要做法是将一字红外光源置于投影装置底部,发射出的一字红外信号用于检测是否有手指按下。

若有手指按下时,红外线就会以一定角度被反射[5]。

其中键盘图案投射器将在桌面等平面上投影出人能看到的虚拟的键盘图案,当使用者用手指接触投射出的虚拟键盘图案中的“按键”时,手指将进入贴近桌面的线形激光发射器的照射范围,此时手指将被该激光器照射,产生反射光,而摄像头则安置于一字红外光源上方,用于接收被反射的红外信号。

基于STM32控制的智能键盘+程序

基于STM32控制的智能键盘+程序

基于STM32控制的智能键盘摘要:本设计选择STM32为核心控制元件,设计了用4个IO 口实现4*4矩阵键盘,使用C 语言进行编程。

矩阵式键盘提高效率进行按键操作管理有效方法,它可以提高系统准确性,有利于资源的节约,降低对操作者本身素质的要求。

关键词:STM32 矩阵键盘 ARM 显示电路1 引言随着21世纪的到来,以前的单个端口连接的按键已经不能满足人们在大型或公共场合的需求。

电子信息行业将是人类社会的高科技行业之一,4*4矩阵键盘设计师当今社会中使用的最广的技术之一。

4*4矩阵式键盘采用STM32为核心,主要由矩阵式键盘电路、显示电路等组成,软件选用C 语言编程。

STM32将检测到的按键信号转换成数字量,显示于数码管上。

该系统灵活性强,易于操作,可靠性高,将会有更广阔的开发前景。

2 总体设计方案该智能键盘电路由ARM 最小系统,矩阵键盘电路和显示电路组成,在常规的4*4矩阵键盘的基础上,通过改进实现了用4个IO 口完成4*4矩阵键盘。

2.1 总体设计框图本电路主要由3大部分电路组成:矩阵键盘电路、ARM 最小系统电路、按键显示电路。

其中ATM 最小系统主要由复位电路和时钟电路组成。

电路复位后数码管显示字符“—” 表示没有按键,显示电路由STM32的PD0—PD7来控制数码管显示是哪个按键按下。

总体设计方框图,如图1所示。

图1总体设计方框图STM32矩阵键盘电路时钟电路复位电路按键显示电路3 智能键盘设计原理分析3.1 STM32复位和时钟电路设计此电路主要是复位电路和时钟电路两部分,其中复位电路采用按键手动复位和上电自动复位组合,电路如图2(右)所示:其中14脚为STM32的复位端。

时钟电路如图2(左)所示:晶振采用的是8MHz和32.786KHz,8MKz分别接STM32的12脚和13脚,32.786KHz分别接STM32的8脚和9脚。

图2STM复位和时钟电路设计3.2 矩阵键盘电路的设计该电路的四个端子分别接STM32的PB12—PB15,电路如图3所示。

基于STM32控制的矩阵键盘的仿真设计

基于STM32控制的矩阵键盘的仿真设计

成绩课程论文题目:基于STM32控制的矩阵键盘的仿真设计课程名称: ARM 嵌入式系统学生姓名:张宇学生学号: 1314030140 系别:电子工程学院专业:通信工程年级: 2013级指导教师:权循忠电子工程学院制2015年10月目录1摘要 (1)2关键字 (1)3引言 (1)4 STM32控制的矩阵键盘系统方案计制定 (1)4.1 系统总体设计方案 (1)4.2总体设计框图 (1)4.3矩阵键盘简介 (2)5 矩阵键盘设计原理分析 (2)5.1 STM32复位和时钟电路设计 (2)5.2 矩阵键盘电路的设计 (2)5.3按键去抖动 (3)5.4 按键显示电路 (3)6程序流程图 (4)7 总体电路图 (5)8 软件仿真 (5)9 总结 (6)10 参考文献: (6)11 附录 (7)基于STM32控制的矩阵键盘的仿真设计学生:张宇指导老师:权循忠电子工程学院通信工程1摘要矩阵键盘又称行列键盘,它是用四条I/O线作为行线,四条I/O线作为列线组成的键盘。

在行线和列线的每个交叉点上设置一个按键。

这样键盘上按键的个数就为4*4个。

这种行列式键盘结构能有效地提高ARM嵌入式系统中I/O口的利用率。

2关键字矩阵键盘行列键盘 ARM嵌入式系统3引言随着人们生活水平的不断提升,ARM嵌入式无疑是人们追求的目标之一,它给人带来的方便也是不可否认的,要为现代人工作、科研、生活、提供更好更方便的设备就需要从ARM嵌入式技术入手,一切向若数字化控制,智能化控制方向发展。

用ARM嵌入式来控制的数码管显示按键也在广泛应用,其控制系统具有极大意义。

展望未来,急速的响应速度将成为个性的ARM嵌入式发展的趋势,越来越多的ARM嵌入式正如雨后春笋般涌现。

4 STM32控制的矩阵键盘系统方案计制定4.1 系统总体设计方案该智能键盘电路由ARM最小系统,矩阵键盘电路和显示电路组成,在常规的4*4矩阵键盘的基础上,通过改进实现了用4个IO口完成4*4矩阵键盘。

基于STM32的激光投射虚拟键盘设计

基于STM32的激光投射虚拟键盘设计

基于STM32的激光投射虚拟键盘设计作者:朱春华胡军委邓淼磊来源:《无线互联科技》2019年第02期摘要:针对虚拟键盘设计中位置的误判导致识别精度低的问题,文章研究了虚拟键盘设计中的空间坐标采集技术,并提出采用手指反射的红外光来确定虚拟键盘的空间坐标。

以STM32作为主处理器,其拥有的I/O口数量以及具备的高速工作频率,可以很好地支持摄像头对图像的采集和处理;使用激光进行键盘图案的投影,方法简单,不需要对其进行额外的程序操作;使用红外光进行按键的检测,相比采用空间坐标模块方案和双摄像头方案,更加简单、节约成本;使用摄像头进行图像的采集,将摄像头采集到的数据进行图像分析,从而实现其对手指的准确定位。

采用本文所提出的虚拟键盘设计方法,可以实现可靠的文字编辑等操作。

关键词:虚拟键盘;激光投射;图像处理;摄像头;STM32虚拟键盘的出现促进了电脑的智能化、小型化发展[1],近年来,人们不断地提出新的方法来解决虚拟键盘的设计问题,影响虚拟键盘位置的判断以及识别精度的关键在于空间坐标的采集技术及相应的圖像处理技术。

综述现有的文献,虚拟键盘的设计可分为两种实现方法:(1)由特定用途集成电路芯片一起来构成一个键盘扫描系统,利用集成电路芯片所有自有的扫描键盘接口和可编程的逻辑器件来实现半虚拟键盘输入,达到其对计算机的控制。

这种虚拟键盘的实现方法有点类似于将键盘的材质特殊化,通过缩小传统键盘的体积来实现半虚拟键盘,这种方法较为复杂,并且仍然占据一定的体积,不便于人们的使用。

(2)通过模块产生键盘图案,然后使用三维空间坐标定位模块,来检测对手指是否按下键盘图案。

这种方法基本上能够实现虚拟键盘的功能,但三维空间坐标定位模块价格较昂贵,成本太高,不能被人们所接受。

本文针对现在市场上对于虚拟键盘的迫切需求,设计了一套基于单片机的激光投影虚拟键盘方案,并搭建了对应的实物,经过测试,能够实现虚拟键盘的基本要求和功能,并降低了虚拟键盘的成本以及开发难度,提高了可靠性和实用性。

基于STM32的激光投射虚拟键盘设计

基于STM32的激光投射虚拟键盘设计

第2期2019年1月No.2January,2019虚拟键盘的出现促进了电脑的智能化、小型化发展[1],近年来,人们不断地提出新的方法来解决虚拟键盘的设计问题,影响虚拟键盘位置的判断以及识别精度的关键在于空间坐标的采集技术及相应的图像处理技术。

综述现有的文献,虚拟键盘的设计可分为两种实现方法:(1)由特定用途集成电路芯片一起来构成一个键盘扫描系统,利用集成电路芯片所有自有的扫描键盘接口和可编程的逻辑器件来实现半虚拟键盘输入,达到其对计算机的控制。

这种虚拟键盘的实现方法有点类似于将键盘的材质特殊化,通过缩小传统键盘的体积来实现半虚拟键盘,这种方法较为复杂,并且仍然占据一定的体积,不便于人们的使用。

(2)通过模块产生键盘图案,然后使用三维空间坐标定位模块,来检测对手指是否按下键盘图案。

这种方法基本上能够实现虚拟键盘的功能,但三维空间坐标定位模块价格较昂贵,成本太高,不能被人们所接受。

本文针对现在市场上对于虚拟键盘的迫切需求,设计了一套基于单片机的激光投影虚拟键盘方案,并搭建了对应的实物,经过测试,能够实现虚拟键盘的基本要求和功能,并降低了虚拟键盘的成本以及开发难度,提高了可靠性和实用性。

1 系统硬件的设计1.1 系统总体设计本文提出的虚拟键盘总体设计一共由5个部分组成,分别是STM32F103ZET6主控制器、OV7670摄像头模块、激光键盘显示模块、一字线性红外光发射模块和2.8寸TFT LCD 模块。

其系统设计的结构如图1所示。

图1中,选用STM32F103ZET6单片机作为主控制器,以求其能够达到满足模块需求的I/O 数量口和满足摄像头进行图像处理的高速工作频率,使其能够支持对摄像头的连接和图像的处理;选用OV7670摄像头模块作为键盘图案的采集,因为其具备红外光采集的能力和具有一定的视野范围,能够采集到键盘图像;选用激光键盘显示模块来显示键盘图案,是利用了激光具有相干性好、亮度高、传播距离远的特点[2],即使在外界环境光强较大时,也能显示出人眼可识别图形;选用一字线性红外光发射模块来作为手指触发按键的检测模块,它能够排除可见光以及激光的影响,做到更精准定位手指的位置;选择2.8寸TFT LCD 模块作为显示模块,显示模块不仅可以显示摄像头采集到的原图案,还能够显示经过STM32处理后的二值化图案,调试结束后,还可以使用显示模块显示手指按下的按键信息。

STM32开发板按键控制实验实验说明

STM32开发板按键控制实验实验说明

STM32开发板按键控制实验实验说明2STM32开发板按键控制实验实验说明通过按键控制LED灯的开关实验环境硬件:STM32F407-PZ6808L开发板STM32仿真器软件:Winddows764位操作系统内存8GBKeil5安装后需要添加32F4xx_DFP.2.7.0.packStm32CubeMx 安装后将STM32Cube_FW_F4_V1.13.0文件夹复制到C:\Users\Administrator\STM32Cube\Repository文件夹中。

文档:STM32F407-PZ6808L开发板原理图.pdf实验现象按开发板上的K_RIGHT键D2灯亮,按K_DOWN键D2灯灭。

实验步骤1.打开STM32F407-PZ6808L开发板原理图找到LED灯模块D2链接引脚LED2LED2低电平灯亮高电平灯灭找到LED2在STM32F407ZGT6核心板的链接引脚在PDF阅读器上搜索找到LED2引脚引脚为PF10查找按键K_RIGHT和K_DOWN在核心板上的引脚先查找按键模块分别对应K1和K2然后在核心板上查找K1和K2的引脚名称名称是PE2和PE3分析:按下K1则D2灯亮,按下K2则D2灯灭。

K1和K2按下后,引脚是低电平。

判断PE2和PE3引脚的信号来确定K1和K2是否按下,若为低电平,在为按下,若为高电平,则为放开。

PE2和PE2引脚为输入类型。

PF10引脚为输出类型2.打开STM32CubeMX建立工程(1)设置类型STM32F407ZGTxLQFP144(2)设置引脚类型Peripherals-SYS-Debug设置为SerialWire(仿真使用)注意:一定设置,否则以后不能使用仿真器。

找到PF10,由于是控制LED灯,设置为输出类型(GPIO_Output),同理,设置PE2和PE3类型,为GPIO_Input(3)对PE2和PE3mode进行设置依次选择【Configuration】GPIO 将GPIOPull-up/Pull-down设置为Pull-up(4)设置工程ProjectSettings-ProjectName设置为KEYToolchain/IDE设置为MDK-ARMV5通过向导,自动生成初始化代码,然后通过Keil5打开工程3.先编译工程在main.c中添加代码uint8_tCheck_Key(){if(HAL_GPIO_ReadPin(GPIOE,GPIO_PIN_2)==GPIO_PIN_RESET||HA L_GPIO_ReadPin(GPIOE,GPIO_PIN_3)==GPIO_PIN_RESET){HAL_Delay(10);if(HAL_GPIO_ReadPin(GPIOE,GPIO_PIN_2)==GPIO_PIN_RESET){return1;}if(HAL_GPIO_ReadPin(GPIOE,GPIO_PIN_3)==GPIO_PIN_RESET){return2;}}return 0;}在main函数中uint8_tkey;key=Check_Key();switch(key){case1:HAL_GPIO_WritePin(GPIOF,GPIO_PIN_10,GPIO_PIN_RESET);break;case2:HAL_GPIO_ WritePin(GPIOF,GPIO_PIN_10,GPIO_PIN_SET);break;}编译4.链接仿真器仿真调试然后按开发板上的复位键,测试。

基于STM32F103RBT6芯片的USB键盘设计与实现_张淼

基于STM32F103RBT6芯片的USB键盘设计与实现_张淼

上述这些设计都各有优势,它们在产品上都各自 发挥着自身的作用。 为了进一步优化系统、提高速度 和降低成本,本文设计了一种基于 STM32F103RBT6 芯片的 USB 键盘。
1 USB 协议简介 通用串行总线(USB,universal serial bus)是以 In- tel 公司为主制定的串行接口标准,具有高速传输速 率、即插即用和易于扩展等优点而被广泛应用。因其 相对低廉的成本和较好的性能适合应用于嵌入式系 统的设计中。USB2.0 被设计成为向下兼容的模式,比 如当有 USB1.0 设备连接到 USB2.0 主机时候,主机通 过分离传输的方式兼容它们。一个 USB 系统中,可以 同时存在 12Mb 全速模式和 1.5Mb 低速模式两种数据 传输模式,而引入后者是为了兼容成本更低的 USB 设 备,如键盘、鼠标和游戏杆等。 USB 体系定义了控制传输、中断传输、同步传输、 批量传输四种传输类型。而 USB 通信所有的传输都由 主机发起,因为它传输数据是采用轮询的广播机制, 该机制是采用“令牌包”-“数据包”-“握手包”的模式, 端点和来源的设备地址或者数据包的去向都在令牌 包中被指定,从而保证了响应数据包/令牌包的只有一 个设备。数据包:包括包结尾字段(EOP)、数据及同步 字段(SYNC)三部分,是 USB 总线上数据传输的最小 单位;端点:支持单双向的数据传输,是 USB 设备中 的可以进行数据收发的最小单元;管道:是主机和设 备端点之间数据传输的模型。USB 数据传输宏观看来 是 USB 功能设备和主机之间进行,微观来看是在 USB 功能设备的端点和应用软件的 Buffer 之间进行。
2.2 USB 接口设计 USB 通过一个四线电缆来通电与传输信号,其中 VBUS 提供 5V 电源为设备供电,D+与 D-则是一对差 分信号线。在 USB 主机上,D+和 D-都是接了 15K 的 下拉电阻到 GND,所以在没有设备接入的时候,D+、 D-均是低电平。在 USB 从机中,如果是全速设备则会 在 D+上拉一个 1.5k 电阻到 VCC,如果是低速设备则 在 D-上拉一个 1.5k 电阻到 VCC,这样主机便可以判 断是否有接入设备。 在 USB 接口电路 设计中,多设 计了一个引 脚 (PA8) 控制一个三极管的导通与断开,从而控制接在 D+信号线上的上拉电阻,更灵活地决定被 USB 主机 识别的时机。同时在此三极管后连接一个 LED,用于 指示工作状态。另外,使用的 USB 接头是 5pin mini usb,可支持连接外置设备的功能(OTG 功能)。USB 接 口的电路图如图 2 所示。

虚拟镭射键盘的设计与制作

虚拟镭射键盘的设计与制作

虚拟镭射键盘的设计与制作作者:王帅刘莉刘世捷彭翔王茂金曾亚琛来源:《企业科技与发展》2020年第03期【摘要】本款虚拟镭射键盘分为硬件和软件两个部分。

硬件部分主要为650 nm激光投射键盘、850 nm激光一字线发射器、150°广角摄像头、STM32模块、TFT彩屏等。

软件部分使用C语言编写程序,编译器使用keil4。

激光投射器投射出键盘图样,一字线激光发射器发射出覆盖键盘图样的线型结构光。

当手指点击平面上投影的键盘图案时,手指遮挡住了一字线激光发射器发射出的线型结构光,指尖会有反射光斑的产生。

摄像头拍摄到反射光斑,传输到STM32模块进行数字图像处理,TTF彩屏上显示出经图像处理后形成的二值图。

将由图像中所获得的光斑坐标与事先存储在STM32模块内的投影键盘图案各字符坐标做比对,比对完成后传输到PC端,在PC端完成字符输入和显示。

【关键词】C语言;数字图像处理;虚拟键盘【中图分类号】TP273 【文献标识码】A 【文章编号】1674-0688(2020)03-0076-021 概述随着电脑、手机、平板电脑等智能设备朝着体积小、可穿戴、功能集成度高的方向不断发展,键盘、鼠标等输入设备也随之改变。

对于键盘而言,人们需要一款便于携带且不受智能设备体积限制的键盘。

早在20世纪60年代,IBM公司就开始对虚拟键盘进行研究,不需要实质键盘,通过手套内部的传感器识别手指动作[1]。

国内汪忠德于2002年提出了红外虚拟键盘的构想[2],其主要思路是先将键盘图像投影到平坦平面上,通过红外光源发射的红外线定位手指指尖按键位置,红外摄像仪采集数据从而实现键盘输入功能。

2004年,石艳玲设计出的虚拟键盘元器件集成度高[3],采取的方案是利用摄像头和红外光源结合获取位置信息,对图像的编码方法采用霍夫曼编码。

但因设计复杂,所以最终仅实现了其中的部分功能。

此后蔡睿研提出了一种准确度较高的设计方案,其利用红外激光辅助定位,当手指点击键盘坐标时,经过摄像头图像采集及上位机数字图像处理完成指尖坐标的获取及字符输入[4]。

stmf407 案例

stmf407 案例

stmf407 案例基于STM32F407的虚拟键盘案例一、前言STM32F407是一款功能强大的微控制器,其强大的处理能力和丰富的外设接口使得它成为许多项目的理想选择。

在此,我们将展示如何使用STM32F407和寸电容屏实现一个虚拟键盘。

这个虚拟键盘可以控制数字的输入、删除,并可以通过点击OK将当前数据通过串口发送到上位机。

同时,上位机也可以发送数据到屏幕上显示。

二、硬件配置我们使用的是正点原子STM32F407探索者开发板,配合一块寸电容屏(分辨率为480x800)。

三、实现功能1. 虚拟键盘的数字输入与删除:用户可以在虚拟键盘上输入数字,并通过特定的按键进行删除操作。

2. 数据交互:当用户完成输入后,点击OK按钮,系统会将当前的数据通过串口发送到上位机。

同时,上位机也可以发送数据到屏幕上显示。

四、案例细节由于篇幅限制,我们无法在此详细展示整个项目的源代码。

但我们会提供一些关键部分的代码示例和思路,以帮助你理解整个项目的实现过程。

1. 初始化硬件:首先,我们需要初始化STM32F407的开发板和寸电容屏。

这包括设置开发板的时钟、初始化串口通信等。

2. 创建虚拟键盘:利用STM32F407的绘图功能,在电容屏上创建虚拟键盘的界面。

这包括数字、字母、符号等按键的设计和布局。

3. 检测用户输入:通过检测电容屏上的触摸事件,判断用户的点击位置,从而确定用户输入了哪个字符。

4. 数据处理与发送:当用户输入完成后,系统会将这些数据进行处理,并通过串口发送到上位机。

同时,上位机发送的数据也会被接收并显示在屏幕上。

5. 安全与稳定性:在整个过程中,我们需要考虑系统的安全性和稳定性。

例如,为了避免误操作,我们可以设置一个短暂的输入延迟;为了确保数据的准确性,我们可以对数据进行校验等。

五、总结通过这个案例,我们可以看到STM32F407的强大功能和广泛的应用场景。

无论是基础的数字输入,还是复杂的图形界面设计,STM32F407都能提供强大的支持。

基于STM32F103RBT6芯片的USB键盘设计与实现_张淼

基于STM32F103RBT6芯片的USB键盘设计与实现_张淼

的 PA8 引脚,等待计算机识别到有设备接入,根据按 键的响应情况,调用 Joystick_Send 函数,芯片将自动 发送对应的数据到计算机;LED 闪烁任务是指大小 写、小数字键盘和滚动锁定键的 LED 指示灯的闪烁任 务。系统运行的总流程图如图 4 所示。
3.3 系统初始化 (1)Set_System(void),初始化时钟系统、使能相关的 外围设备电源。 (2)USB_Interrupts_Config(),配置 USB 所用到的中 断。 (3)Set_USBClock(),配置和使能 USB 时钟。 (4)USB_Init(void),是 USB 子系统真正的初始化函 数,定义 USB 请求实现、功能实现的函数指针。最后调 用 pProperty->Init()完成设备的初始化。 (5)SysTick_Config(),为程序中用到的精确延时作 配置。 3.4 键盘扫描任务 键盘扫描任务针对按键抖动和按键连击这两种 可能引起一些错误的情况做出相应的处理方法。 消抖处理:当按键的触点在断开和闭合时都会产 生抖动,这时触点的逻辑电平不太稳定,容易错误或 者重复执行任务。本设计采用软件延时 10ms 的方式 避开抖动时段:当有按键被按下,系统延时 10ms 之 后,如果按键仍在按下,则表示按键有效,这种方式可 以确保一次按键只响应一次。 按键连击处理:按键连击是指在一段时间内按键 被一直按着没有释放,按键反复响应。按键连击的解 决方法相对容易,按键按下到按键释放只让它响应一 次,释放之后才可以执行第二次。 按键扫描任务的流程图如图 5 所示。
【关键字】STM32F103RBT6;USB 键盘;CooCox CoOS;实时操作系统;矩阵式键盘扫描
0 引言 PS/2 接口是早期电脑上常见的键盘接口之一,随 着计算机时代的飞速发展,PS/2 接口键盘因为针脚容 易弯曲、细小难以对准、传输效率低等缺点逐渐被淘 汰[1]。自 USB1.0 推出开始,USB 接口因为具有传输速 率高、体积小、即插即用、共享式通信、热插拔等特性, 键盘开始采用 USB 接口的设计[2]。 目前文献上出现很多基于各种各样芯片的 USB 键盘,各有特色。例如有文献提出基于 CY7C68013A 芯片的 USB 键盘,该芯片是 Cypress 赛普拉斯公司研 发的第一款属于低功耗 EZ-USB FX2 系列并且集成 了 USB2.0 协议的微处理器,利用芯片上封装提供的 24 个 I/O 端口(包括 PA、PB、PD 这三组)设计了矩阵 式键盘,最后利用该系列芯片自带的 USB 开发包进行 键盘软件的整合[3]。另外有文献提到现在市场上很多 USB 键盘是在原来 PS/2 接口的基础上,增加了一个 PS/2 转 USB 芯片来实现 USB 键盘的数据传输,这种 设计容易造成硬件版本的不兼容,所以提出了一款基 于一套硬件结构并采用 ARM Cortex-M0 微控制器的 USB 键盘,直接采用 NUC120 系列内置的 SIR(USB 串 行接口引擎) 并使用外设的驱动库函数完成整个设计 [4]。 还 有 文 献 提 出 一 种 基 于 AT89C5131 单 片 机 和 CPLD(复杂可编程逻辑器件)的 USB 接口用户专用键 盘,它可以满足用户自定义按键功能的要求。 AT89C5131 自带 USB 微控制器,可支持 USB2.0 协议 并兼容 USB1.1 协议。通过编写 USB 固件驱动程序和 CPLD 控制程序将硬件结构模块化实现用户专用键盘 的设计[5]。

stm32硬件电路设计

stm32硬件电路设计

本节将向大家介绍ALIENTEK MiniSTM32开发板的各部分硬件,让大家对该开发板的各部分硬件原理有个理解。

1.2.1 MCUALIENTEK MiniSTM32选择的是STM32F103RBT6作为MCU,STM32F103的型号众多,我们选择这款的原因是看重其性价比,作为一款低端开发板,选择STM32F103RBT6是最佳的选择。

128K FLASH、20K SRAM、2个SPI、3个串口、1个USB、1个CAN、2个12位的ADC、RTC、51个可用IO脚…,这样的配置无论放到哪里都是很不错的了,更重要的是其价格,18元左右的零售价,足以秒杀很多其他芯片了,所以我们选择了它作为我们的主芯片。

MCU部分原理图如下:图1.2.1.1 MCU部分原理图上图中中上部的BOOT1用于设置STM32的启动方式,其对应启动模式如下表所示:表1.2.1.1 BOOT0、BOOT1启动模式表我们用串口下载代码,则配置BOOT0为1,BOOT1为0即可,如果想让STM32一按复位键就开始跑代码,则需要配置BOOT0为0,BOOT1随便设置都可以。

P3和P1分别用于PORTA和PORTB的IO口引出,其中P2还有部分用于PORTC口的引出。

PORTA和PORTB都是按顺序排列的,这样设计的目的是为了让大家更方便地与外部设备连接。

P2连接了DS18B20的数据口以及红外传感器的数据线,它们分别对应着PA0和PA1,只需要通过跳线帽将P2和P3连接起来就可以使用了。

这里不直接连在一起的原因有二:1,防止红外传感器和DS18B20对这两个IO口作为其他功能使用的时候的影响;2,DS18B20和红外传感器还可以用来给其他板子提供输入,等于我们的板子为别的板子提供了红外接口和温度传感器,在调试的时候,还是蛮有用的。

P4口连接了PL2303的串口输出,对应着STM32的串口1(PA9/PA10),在使用的时候,也是通过跳线帽将这两处连接起来。

基于STM32和FPGA的多功能虚拟仪器的设计与实现

基于STM32和FPGA的多功能虚拟仪器的设计与实现

图1系统整体设计框架图
2硬件设计
硬件系统采用STM32F407IGT6作为主控器STM32F407IGT6为ST公司推出的高性能MCU,片内外设丰富(集成USB控制器)。

Altrea公司的Cyclone IV系
架图如图3所示。

图2STM32软件控制流程
图3PC端软件主要框架图
主运行界面用于采集的波形显示、测量信息显示、用户操作交互,信号源界面用于设置模拟信号输出,设备连接界面用软件与硬件连接、断开。

软件与硬件连接通信后,开始发送命令控制硬件采集数据、输出信号等,在主运行界面上实时更新采集信号的波形和测量数据,虚拟仪器面板如图4所示。

Science&Technology Vision科技视界
39
(上接第89页)随机森林分类器的泛化性能是有待商讨的。

3.2错误分类样本的位置
从理论上分析,如果图像中被错误分类的样本分散在函数图像附近,即仿真测试结果中,决策树输出为1的类别和-1的类别数量基本相同,那么,这样的错误样本是可以被允许的,此时的随机森林泛化性良好。

相反,如果偏离函数图像的样本都为错误分类的样本,说明在当前随机森林模型中,输出结果为1和-
随机森林人体指标数据海默病,但由函数,因此,练集之外的数改进。

同时分们也会加强对森林中最优的
直观地观察到信号的数学特征。

4结束语展,2013(7):222-225.
图4虚拟仪器面板。

基于激光的虚拟键盘的制作

基于激光的虚拟键盘的制作

Cust o mi z abl e V i r t u al K eyboar dIntroductionIt is becoming increasingly difficult for users to interact with the slew of portable gadgets they carry, especially in the area of text entry. Although miniature displays and keyboards make some portable devices, such as cell phones and PDAs, amazingly small, users’ hands do not shrink accordingly.To solve this problem, we proposed a Virtual Keyboard. This device will replace a physical keypad with a customizable keyboard printed on a standard A3 size paper whose “keystrokes” are read and translated to real input. This virtual keyboard can be placed on any flat surface, such as desktops, airplane tray tables, kitchen counters, etc. and can theoretically be interfaced with any computing device that requires text entry. This would eliminate the need to carry anything around and also prevent any chance of mechanical damage to the keypad in harsh environments if a simple lamination is used to protect the paper. In addition, buttons on this device can be reconfigured on-the-fly to give a new keyboard layout using a GUI we built in Java and then transferring that data to the device using a computer’s serial port.High Level DesignFigure 1: Finger shining bright red when passing through the laser planeThe Virtual Keyboard has three main components: the laser, camera, and printed keyboard. The laser beam is simply a conventional off-the-shelf red laser with a line-generating diffractive optical element attached to it. This assembly generates an invisible plane of red light hovering a few millimeters above the typing surface. When a finger passes through this plane, it shines bright red in that region.Figure 2: C3038 image sensor module mounted on a custom PCBThe CMOS camera continuously captures images of the region where the printed keyboard is supposed to be placed and checks these images for red color data above a specified threshold. The threshold concept works in this case because the laser shining on a typical human finger generates saturating values of red color data, which is very easily distinguishable from its surroundings.Figure 3: Comparing an actual keyboard with a printed keyboardLastly, the printed keyboard is simply a standard A3 size paper that contains a custom keyboard layout. After rigorous testing, we decided to use a black background and blue letters for the printed keyboard because our device doesn’t use its own light source. Therefore, proper contrast is necessary to distinguish the typing finger from the surrounding area in various lighting conditions. The actual programming of the printed keyboard layout into the device can be done using a serial port and a GUI we developed in Java. This GUI basically gives the user a blank grid of buttons and the user can choose to assign any button to any letter or number he/she desires.Software ImplementationThe software component was split into 5 main components:Implementing the I2C protocol to read and write registers from cameraReading values from camera to obtain 6 frames every secondProcessing the images to obtain a pressed keyConverting the pressed key into a scan code which is then transmitted using the PS/2 protocolSending serial data from a java application to update the array of scan codes in the Mega32Main OperationAt first we initialize PORTA on the Mega32 to take UV input from the camera and PORTC to communicate with the camera over the I2C interface. The baud rate is set to 19,200bps for serial communication. We then run the calibrate function on the camera, which looks at a black keyboard to determine a distinguishable value for red color threshold. Then we call a function called "init_cam" which performs a soft reset on the camera before writing the required values to corresponding camera registers. These registers change the frame size to 176x144, turn on auto white balance, set the frame rate to 6 fps, and set the output format to 16-bit on the Y/UV mode with Y=G G G G and UV = B R B R. The code then enters an infinite loop which checks for the status of the PS2 transmitting queue and tries to process the next captured frame if the queue is empty. If not, the queue is updated and the PS2 transmission is allowed to continue.Image ProcessingThe getRedIndex function captures rows of data from the camera and processes each of them. We first wait until a neg edge on the VSYNC, which indicates the arrival of new frame data on the UV and Y lines. We then wait for one HREF to go by since the first row of data is invalid. At this point, we can clock in 176 pixels of data for a given vertical line in the Bayer format.Figure 4: Bayer color patternIn the mode where the UV line receives BR data, the output is given by: B11 R22 B13 R24 and so on. Since we only needed red data, we stored an array of 88 values in which we captured the data on the UV line every 2 PCLKS. The OV6630 also repeats the same set of pixels for consecutive rows and thus 2 vertical lines processed would have data about the same pixels. We considered optimizing this by completely dropping data about the even rows, but this was not going to save us anything since all our processing could be done between one neg edge and a pos edge (when data becomes valid again) of HREF.Since we don’t have enough memory to store entire frames of data to process, we do the processing after each vertical line. After each vertical line of valid data, HREF stays negative for about 0.8ms and the camera data becomes invalid; this gives us ample time to process one line worth of data. After each vertical line was captured, we looped through each pixel to check if it exceeded the red threshold found during calibration. For every pixel that met this threshold, we then checked if the pixel was part of a contiguous line of red pixels, which would indicate the presence of a key press. If such a pixel was found, we then mapped this pixel to a scan code by binary searching through an array of x, y values. If this scan code was found to be valid, we debounced the key by checking for 4 continuous presses, and then added the detected key to the queue of keys to send to the PC.I2C CommunicationA very big part of our challenge was to figure out the correct configuration to use to capture and process the images from the camera. The communication protocol was not easy to work with and there were a total of about 92 registers we could use to set up the camera. At first we considered using the TWI interface provided by CodeVision to communicate with the camera, but we were unable to do so. Thus, we decided to modify and use a version developed by Ruibing Wang, which uses a lot of the TWI settings provided on the Mega32. The protocol uses a 2-wire communication scheme, which is activated by a10kOhm pull-up resistor. The clock signal to the camera is provided by the SCL line, and the frequency is given by: 16MHz / (16 + 2 x (TWBR)(4TWPS)). We decided the optimal solution would be to satisfy the minimum requirement which was to set the bit rate register (TWBR) to 72 and the status register (TWSR) to 0. The rest of the code just followed the standard protocol defined by Philips. The camera registers could be written by writing a start bit, followed by a target register address and then the target data. We had no need to read from the camera registers except in the initial phase when we had to make sure we had the protocol working properly.Camera SettingsWe decided to use a resolution of 176x144 since that was the minimum required to detect an entire A3 size paper on which the keyboard would be printed. At this resolution, we could capture at most 6 frames of color images per second. The camera output format was set to capture 16 bit UV/Y data, where UV had BRBR data and Y had GGGG data. The Y data was completely ignored.Figure 5: Screenshot of Java GUI to create custom keyboard layouts on-the-flyProgramming the EEPROMSince we wanted to be able to change the key assignments on the fly, we stored the array of scan codes corresponding to each key in EEPROM and turned on the RS-232 receive interrupt. We also wrote a java applet that was a simple GUI where the user can enter scan codes of the keys they desire and transmit it to the microcontroller through a standard COM port on the PC.Keyboard Output (PS/2)The code was structured using two timer compare interrupts where timer1 compare was used to start transmissions of each data byte and timer2 compare was used to reset the waiting. Since the protocol allows a range of frequencies that a computer would understand, we decided to use a clock time of 250 and wait time of 700. When the timer1 interrupt is fired, it transmits the bits in the following order when the clock is set to high: start bit(0), data bits, parity bit(xor of all bits), and a stop bit(1). If not, the clock state is updated. The rest of the code simply maintains a queue which would hold the elements to transmit as characters. The queue has a get and put method that updates the 2 pointers in an array. Hardware ImplementationThe three main components of our hardware design are as follows:Laser moduleCamera and its associated circuitryOuter casing for the entire deviceLaserFigure 6: Red laser module with a line-generating DOE attachedOur original plan, at the time of the project proposal, was to use an infrared laser to detect button presses using the CMOS camera, but we realized that user safety would be a major issue in that case. The user would never know even if he/she is staring directly at the laser and, therefore, there would be no way toprevent eye damage. In addition, we also realized that the CMOS camera we’re using (OV6630) is not very effective at detecting infrared light. Hence, we decided to use a Class II 635nm red laser instead.The laser module we bought came with a built-in driver; therefore, we didn’t have to worry about biasing the laser properly to make it operational. All we had to do was to connect the laser to a 3V power source, which we obtained using a simple 3V voltage regulator.Figure 7: Laser line generation calculationThe laser module also came with a line-generating diffractive optical element attached to it. However, since we didn’t know the fan-angle for this DOE, we had to experiment with various distances in order to obtain a line length of at least 8.5”, which was required to cover the entire width of our printed keypad. In the end, we had to place the laser at a distance of approximately 12.5” to obtain good results.CameraFigure 8: C3038-4928IR 1/4” Color Sensor ModuleFor this project we decided to use the C3038 1/4” color sensor module with digital output, which uses OmniVision’s CMOS image sensor OV6630. The two primary reasons why we chose this specific camera module were low cost and the fact that it is capable of outputting image color data in progressive scan mode. Progressive scanning was an important consideration for us since we don’t have enough computational power available on the 16Mhz Mega32 microcontroller to process entire frames at once; however, we can certainly process images line-by-line as they come in. After rigorous testing and a lot of research, we realized that we could work with only the red channel data from the camera and still be able to identify keystrokes accurately. Hence, we connected the 8-bit red channel output from the camera (UV[7:0]) to PORTA[7:0] on the Mega32.CasingThe hardware assembly for our device is designed to hold the camera at a fixed position such that it looks over the appropriate region of the printed keyboard. In addition, it also holds the laser module at a fixed position such that the plane of red light completely covers the area above the printed keyboard. In order to ensure that new custom-printed keyboards can be swapped in-and-out of the device while maintaining proper distances, we permanently attached a piece of black poster board of the right length to the assembly and mounted 4 photo-corners on it.Figure 9: Hardware casing for Virtual Keyboard deviceTestingKeystroke Accuracy:As a result of the limited viewing angle of the camera and positioning of the laser, we had to design and calibrate with various keypad layouts to make sure we could detect all of the buttons with reasonable accuracy. Our final design for the generic keypad and testing results (percentage accuracy) for this layout are given in Figure 3. For the testing, we tried 100 keystrokes per key and set the acceptance threshold at 70% for side areas and 80% for the central area. This means that if we can recognize a certain key accurately at least 70 or 80 times, respectively, out of the 100 times that it’s pressed, that key passes the test.Figure 10: Testing results for keystroke detection accuracyConclusionAlthough the final project was very satisfying, our results did not completely meet our expectations. The keyboard worked as we predicted but typing speed was minimal (about 60 characters per minute) due to limited processing capabilities of the Mega32 microcontroller.If we had more time, we would have liked to increase the theoretical maximum typing speed by possibly using another microcontroller in parallel or maybe even an external FPGA to do extra image processing. In addition, we would also like to include sound effects for keystrokes and a dynamic calibration algorithm which can be used to orient the custom-printed keyboard in any direction. This sort of functionality would require performing 2D image transforms on-the-fly, which is not feasible with theexisting microcontroller. Last but not least, we could certainly try to improve our current keystroke detection algorithm to improve typing accuracy.AppendixStandardsI2C-Bus Specification V ersion 2.1:Two wires in an I2C bus, serial data (SDA) and serial clock (SCL), carry information between the devices connected to the bus. Each device is recognized by a unique address and can operate as either a transmitter or receiver, depending on the function of the device. In addition to transmitters and receivers, devices can also be considered as masters or slaves when performing data transfers. A master is the device which initiates a data transfer on the bus and generates the clock signals to permit that transfer. At that time, any device addressed is considered a slave.PS/2 Keyboard Protocol:The PS/2 keyboard interface typically uses a bidirectional synchronous serial protocol, but for our implementation we do not need the computer (host) to communicate with the microcontroller (device). Therefore, for our purposes, the device always generates the clock signal and all data is transmitted one byte at a time. Each byte is sent in a frame consisting of 11 bits, in the following order:1 start bit. This is always 0.8 data bits, least significant bit first.1 parity bit (odd parity).1 stop bit. This is always 1.The parity bit is set to 1 if there is an even number of 1's in the data bits and set to 0 if there is an odd number of 1's in the data bits. The number of 1's in the data bits plus the parity bit always add up to an odd number (odd parity.) This is used for error detection. Data sent from the device to the host is read on the falling edge of the clock signal; the clock frequency must be in the range 10 - 16.7 kHz. This means clock must be high for 30-50 µs and low for 30-50 µs.Ethical and Legal ConsiderationsThroughout the final project, we committed ourselves to the highest ethical and professional conduct and closely adhered to the IEEE Code of Ethics. We placed an extra emphasis on the following points mentioned in the Code of Ethics:1.To accept responsibility in making decisions consistent with the safety, health and welfare of the public, and to disclose promptly factors that might endanger the public or the environment.2.To avoid real or perceived conflicts of interest whenever possible, and to disclose them to affected parties when they do exist.3.To be honest and realistic in stating claims or estimates based on available data.4.To improve the understanding of technology, its appropriate application, and potentialconsequences.To maintain and improve our technical competence and to undertake technological tasks for others 5.only if qualified by training or experience, or after full disclosure of pertinent limitations.To seek, accept, and offer honest criticism of technical work, to acknowledge and correct errors, 6.and to credit properly the contributions of others.To avoid injuring others, their property, reputation, or employment by false or malicious action.7.To assist colleagues and co-workers in their professional development and to support them in following this code of ethics.8.Since we were using a Class II laser device, we always made sure to keep the laser targeted away from other individuals in the Lab. In addition, we designed an enclosure for our device such that the laser would not be visible to the user.We did not have any legal considerations since we did not use code or algorithms from other sources, did not use parts regulated by federal agencies, and did not infringe upon any existing patents. Although a commercial product similar to our device, called the “Virtual Laser Keyboard,” is currently manufactured by a company known as I-Tech, we believe that we have significantly distinguished our product such that we will not encounter any copyright issues. The commercial product is not dynamically reconfigurable,uses a red laser to project a standard QWERTY keyboard pattern onto a surface, and uses an infrared laser for keystroke detection. Our product, on the other hand, uses a customizable printed keyboard, a red laser for keystroke detection, and custom keystroke detection algorithms.SafetyFigure 11: EM radiation absorption characteristics of the human eyeThe human body is vulnerable to the output of certain lasers, and under certain circumstances, exposure can result in damage to the eye and skin. Research relating to injury thresholds of the eye and skin has been carried out in order to understand the biological hazards of laser radiation. It is now widely accepted that the human eye is almost always more vulnerable to injury than human skin. The cornea (the clear,outer front surface of the eye’s optics), unlike the skin, does not have an external layer of dead cells to protect it from the environment. Hence, the cornea absorbs the laser energy and may be damaged. The figure below illustrates the absorption characteristics of the eye for different laser wavelength regions.Since we only used a Class II laser in this project and provided a proper enclosure for the device such that it isn’t directly visible to the user, special protection is not required for normal users. People with sensitive eyesight or other severe vision problems, however, might want to take some precautionary measures and should not use the device for extended periods of time. In addition, users are strongly advised not to look directly into the laser beam at any time.BudgetOur total budget for this project was $75.00, and we easily managed to keep our costs less than that.PARTCOST SOURCE Total $48.41--RS-232 Serial Port$1.00ECE 476 Digital Lab MAX233CPP--Sampled Red LED--ECE 476 Digital Lab Jumpers--ECE 476 Digital LabPART COST SOURCESurface mount capacitors, resistors--ECE 476 Digital Lab16 MHz Crystal Oscillator--ECE 476 Digital LabLM340T5 V oltage Regulator--SampledSlide Switch--ECE 476 Digital LabAtmel A TMega32$8.00ECE 476 Digital Lab40 pin DIP Socket$2.00ECE 476 Digital Lab8 pin DIP Socket$0.40ECE 476 Digital Lab635nm Laser$8.00Ebay9V Power supply--ECE 476 Digital LabOV6630 CMOS Camera$25.03Electronics123PS/2 cable and USB adapter--Previously ownedPoster board$3.99WalmartWood--ScrapTotal$48.41--T ask DistributionNaweed Paya:Solder prototype board and C3088 camera moduleCamera implementationDesign and assemble hardware casingPS/2 communicationTesting and debuggingFinal reportV enkat Ganesh:Laser and camera implementationJava appletI2C communicationTesting and debuggingFinal reportAcknowledgementsWe would like to thank Prof. Bruce Land and the ECE 476 staff for their continual support, insightful comments, and suggestions which altogether made this project possible. We would also like to thank Ruibing Wang, an ECE M. Eng student at Cornell University, for his assistance in getting the I2C protocol to work. This protocol was necessary to communicate with the camera, and was therefore an integralcomponent of our project.In addition, we would like to reference two past ECE 476 projects. To get an initial idea of the camerasettings required for proper operation of the OV6630 camera using a Mega32 microcontroller, we lookedat the camera implementation in the project titled “Autonomous SearchBot” by John and Diego. Inaddition, we used the “Wireless Keyboard” project by Luke Hejnar and Sean Leventhal as an example toimplement the PS/2 keyboard protocol using a Mega32 microcontroller.第11页 共11页2010/3/13 10:38。

激光虚拟键盘的设计与实现

激光虚拟键盘的设计与实现

激光虚拟键盘的设计与实现蔡睿妍【摘要】随着计算机技术的发展和移动设备的普及,传统的机械式键盘已经不能够满足用户的需要,本文基于激光投影、红外激光定位和图像分析技术,提出了激光虚拟键盘系统的设计,阐述了其工作原理,建立了实验系统,验证了系统的可靠性和稳定性,实验证明,该系统不仅可以应用到移动设备中,也可以应用到医疗和工业控制领域.%With the development of computer technology and the popularity of mobile devices, traditional mechanical keyboard can no longer meet the needs of various users. This paper presents the design scheme of a laser virtual keyboard based on laser projection, infrared laser positioning and image analysis techniques. Its working principle is introduced. Experimental system is built. The reliability and stability of the system are verified. This system could not only be applied to mobile devices,but also be applied to the medical and industrial control fields.【期刊名称】《激光与红外》【年(卷),期】2012(042)008【总页数】4页(P875-878)【关键词】虚拟键盘;激光投影;图像处理;目标检测与跟踪【作者】蔡睿妍【作者单位】大连大学信息工程学院,辽宁大连116622【正文语种】中文【中图分类】TN219随着计算机技术的发展和普及,键盘作为计算机的重要输入设备,一直以来扮演着不可替代的角色。

基于STM32的便携式搭载激光键盘的激光笔设计与实现

基于STM32的便携式搭载激光键盘的激光笔设计与实现

三一文库()〔基于STM32的便携式搭载激光键盘的激光笔设计与实现〕方海生李忠志费禹潇郭继峰摘要:随着教育高速发展,教学演示越来越普遍,但是普通的激光笔已经远远不能满足需要,为了让使用者在教学、演示时最大限度的发挥肢体语言的优势,彻底解决以往在课堂和会议上使用鼠标的不便,研究一种搭载便携式激光键盘的激光笔设计是有必要的。

文章对传统几何失真校正算法进行研究,提出一种不同角度的的校正算法,并以此构建一套实验装置,实验表明效果良好。

关键词:激光笔;激光键盘;失真校正;STM32中图分类号:TP399文献标志码:A文章编号:1006-8228(2018)03-27-04DesignandrealizationoflaserpendonSTM32portablelaser keyboardFangHaisheng,LiZhongzhi,FeiYuxiao,GuoJifeng(NortheastForestryUniversityCollegeofInformationan dComputerEngineering,Harbin,Heilongjiang150000,China)Abstract:Withtherapiddevelopmentofeducation,teachingdemonstrationismoreandmorecommon,buttheordinarylaserpointerisfarfrommeetingtheneeds. Inordertolettheusermaximizetheadvantagesofbodylangu agewhileteachingandpresenting,ontheinconvenienceofusingthemousetostudyalaserpoint erwithaportablelaserkeyboarddesignisnecessary.Inthi spaper,thetraditionalgeometricdistortioncorrectionalgorith misstudied,andadifferentanglecorrectionalgorithmisproposed.don this,asetofexperimentalapparatusisconstructed,andtheexperimentshowsthattheeffectisgood.Keywords:laserpen;laserkeyboard;distortioncorrection;STM320引言目前投影機在教育、培训、商务展示行业遭遇了“应用危机”,问题是在多媒体教学普及的过程中,普遍存在如何引进现代化教学设备和老师们的课堂教学习惯有机结合的问题。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

基于STM32的激光虚拟键盘的硬件设计
摘要:随着科技的进步,人们对电影银幕上曾经出现过的各种高新科技产品的
追求越来越强烈,虚拟化、全息技术和云计算作为未来科技的标向,目前已炙手
可热。

大到国家工业军事设备,小到身边随处可见的办公生活用品,无一不在向
这个方向发展,我们的课题——激光投影键盘便是顺从了这样的一个发展方向。

关键词:红外光;图像信号定位编码;单片机
虚拟激光投影键盘,简称激光键盘,是虚拟键盘的一种。

它是利用激光将键
盘投影在一个平面,以达到在随机环境中使用的功能。

该虚拟键盘设备需要满足: 高亮度,可在正常室内照明环境下,显示出清晰的键盘图像; 高稳定性和安全性,可长
时间稳定运行,不对人体造成伤害; 满足低成本,便于推广的要求,从而替代传统的机
械式键盘。

1硬件系统总体方案设计
系统的硬件接口图如图3-1所示。

主要电路包括:主控电路、OV7670摄像头电路、电源电路、显示电路、串口通讯电路、指示灯电路。

2 主控芯片的介绍
STM32F103RBT6单片机主要特点:程序储存器内存至少64K,足够本设计程
序的存储;工作电压3.3V,同时摄像头和TFT彩屏工作电压都是3.3V,可以在同
一电压下工作;晶振范围从4到16MHZ,通过PLL产生CPU时钟,主频可以达到72MHZ,速度快;具有两个18M位/秒SPI;3个USRT可供调试使用;JTAG接口
和串行单线调试提供在线下载和调试,为软件调试提供了很大的方便和节约时间;丰富的的I/O口,为彩屏、摄像头提供了接口资源等等;图3-2为STM32微控制
器的电路设计。

一端接复位引脚另一端接3.3V的R3上拉电阻,起限流作用,单
片机采用按键复位的方法,高电平复位,当按键按下时,单片机复位被拉为高电平,从而实现单片机复位,在S1按键没按下的时候,复位引脚为高电平,当S1
按键按下时,复位引脚变为低电平,按键松开时,复位引脚再变为高电平,这个
过程复位引脚由高变低再变高,这就实现了硬件复位;C5电容除了过滤一些杂波防止乱复位,还可以在单片机刚刚上电的时候,电容的充放电过程,电平由低变高,从而实现了上电复位。

3 OV7670摄像头电路
OV7670带FIFO模块,是针对慢速的MCU能够实现图像采集控制推出的带
有缓冲存储空间的一种模块。

带FIFO的摄像头比不带的多了个3M的缓存,可将
采集的数据暂存在这个缓存中,使用时读取缓存中的图像数据即可,因此可减少对
单片机采集图像数据时对MCU速度的要求。

接下来说明一下摄像头和单片机接口,
GDN-----接地点
SIO_C---SCCB 接口的控制时钟
SIO_D---SCCB接口的串行数据输入(出)端
VSYNC---帧同步信号(输出信号)
HREF----行同步信号(输出信号)
PCLK----像素时钟(输出信号)
XCLCK---时钟信号(输入信号)
D0-D7---数据端口(输出信号)
RESTE---复位端口(正常使用拉高)
PWDN----功耗选择模式(正常使用拉低)
STROBE—拍照闪光控制端口(正常使用可以不需要)
FIFO_RCK---FIFO内存读取时钟控制端
FIFO_WR_CTR----FIFO写控制端(1为允许CMOS写入到FIFO,0为禁止)
FIFO_OE----FIFO关断控制
FIFO_WRST—FIFO写指针服务端
FIFO_RRST—FIFO读指针复位端
由于采用了FIFO 做为数据缓冲,数据采集大大简便,用户只需要关心是如何读取即可,不需要关心具体数据是如何采集到的,这样可减小甚至不用关心CMOS的控制以及时序关系,就能够实现图像的采集。

这里我们采用的是单片机
直接采集图像的方法,只需要按照时序图控制相关的几个控制引脚即可,可以很
方便的使用在单片机上,另外一个好处是,可以直接IO口读取数据,读出的数据可以直接送屏,也可以经过 MCU 简单处理;当然也可以不经过MCU,直接送到
屏等外围器件使用。

4稳压电路
由于STM32、摄像头以及TFT彩屏采用的是3.3V的供电方式,所以我们选用了AMS1117稳压芯片。

AMS1117是一个低漏失电压调整器,它的稳压调整器是
由一个PNP驱动的NPN管组成的。

片内过热切断电路提供了过载和过热保护,
以防环境温度造成过高的结温,其中过流保护和过热保护模块,能够在应用电路
的环境温度大于120℃以上或负载电流大于900Ma时,保证芯片和系统的安全。

这里我们采用的是AMS1117的固定版本,输出电压是3.3V。

其中1脚是输入5V电压,2脚是输出的3.3V电压,3脚是接地端。

C1是旁
路电容,目的是把输入信号中的高频噪声作为滤除对象,把前级携带的高频杂波
滤除。

C2、C3的作用是滤除干扰提供纯净的3.3V电压,发光二极管是判断有没
有电压输出。

5蓝牙模块
HC-05 嵌入式蓝牙串口通讯模块(以下简称模块)具有两种工作模式:命令
响应工作模式和自动连接工作模式,在自动连接工作模式下模块又可分为主(Master)、从(Slave)和回环(Loopback)三种工作角色。

当模块处于自动连
接工作模式时,将自动根据事先设定的方式连接的数据传输;当模块处于命令响
应工作模式时能执行下述所有AT 命令,用户可向模块发送各种AT 指令,为模块
设定控制参数或发布控制命令。

通过控制模块外部引脚(PIO11)输入电平,可
以实现模块工作状态的动态转换。

结论
新型实用激光投影键盘工作稳定、输入准确、并可以在多种环境下良好工作。

与传统键盘和其他激光投影键盘相比均有一定的优越性。

参考文献:
[1]刘火良杨森,STM32库开发实战指南 [M]机械工业出版社,2016
[2]王久鹏漆晶王小平. 激光投影虚拟键盘的研究与设计[J].电视技术,2016,04
[3]王芳基于微型投影及视觉感知的虚拟键盘技术研究[D] 杭州电子科技大学,2015。

相关文档
最新文档