远程控制系统设计探析

远程控制系统设计探析

摘要:为了解决行动不便人群的一些日常问题,设计了一种基于PAJ7620的远程控制系统,该控制系统采用PAJ7620手势传感器为数据采集器,经Arduino处理后控制房间中照明灯的亮灭、房门的自动开启和关闭、同时在液晶显示器显示各终端的工作状态。经实测运行效果良好,该控制系统可以应用于智能家居,医院等场合。

关键词:Arduino;手势识别;远程控制

0引言

在日常生活中,瘫痪、卧床、行动不便的患者独自一人在家时,当有客人到访,他们无法快速地开门,日常照明灯的点亮和熄灭也是需要帮助患者解决的实际问题。针对这些问题,设计了一款可远程控制房门和照明灯的智能远程控制系统,由手势识别数据采集器和智能终端的结合制作的智能控制系统可以很好地解决疾病患者的生活困难,无形中保护他们的身体健康。

1系统总体方案

本设计选用ArduinoMEGA2560电路板作为主控芯片,使用者通过手势识别传感器来采集数据信息,将采集到的数据经Arduino处理后确定将要执行的操作。例如当听到有人来访时通过手势识别传感器传输信号给控制系统,最后通过步进电机来控制房门开启和关闭,显示器则实时显示当前手势识别的状态。

2系统硬件电路设计

2.1ArduinoMEGA2560电路板

ArduinoMEGA2560电路板的处理器核心是ATmega2560,它具有4路UART端口、6路外部中断、16路模拟端口、54路数字端口、可自动选择三种供电方式。串口通信引脚中RXD和TXD是用于数据的发送和数据的接收,四路串行数据的串行引脚分别为:串口0—引脚0和引脚1、串口1—引脚19和引脚18、串口2—引脚17和引脚16、串口3—引脚15和引脚14。数字端口的工作电压为5V,每一个端口通过的最大电流为40mA,同时每一个端口都连接一个上拉电阻。6路外部中断依次端口为:引脚2、引脚3、引脚21、引脚20、引脚19、引脚18。这六种中断引脚都是可以通过多种方式产生中断,即为中断引脚提供低电平、下降沿、上升沿、改变值。16路模拟端口:分别标记为A0-A15,这部分引脚也可以作为数字I/O引脚,每个引脚分别率为0到1024,可以通过AREF和analogReference()函数更改分辨率的上限值,通过的电压为0到5V。

2.2数据采集模块

2.2.1手势识别的概述

如今计算机已经完全融入了这个社会,各行各业都涉及到了计算机的使用,而人与计算机的交流将是未来的必然趋势,传统的交流方式已经无法继续满足人们的生活需求。人机交互的屏幕由黑白二色发展到了还原度极高的的彩色屏幕,计算机的功能也从当初简单的数学运算发展到了如今各种线上贸易。作为人机交互主流的鼠标键盘已经渐渐地开始限制人们的应用体验,所以我们需要新一代的交互方式,我们需要一种自由,体验感超强的交流方式,所以手势识别的研究开始登上当今社会的舞台。基于传感器的手势识别主要分为两大类,接触式和非接触式。接触式的实现方法主要是手掌与多种传感器相连接的识别方式,如基于惯性传感器的手势识别方式。非接触式的实现方法主要是基于视觉、超声波、电磁波和红外线等识别方式。目前为止手势识别的热点算法则是基于图像处理的动态手势识别,该类算法需要高精度的检测和需要拥有强大计算能力的图形处理处理器,所以普通的智能玩具、智能家居并不适合这类算法,实用性太低。本设计采用基于红外传感器的PAJ7620手势检测算法,识别错误率低、实用性较强、同时价格适中。

2.2.2PAJ7620的工作原理

红外传感器LED阵列如图3所示,红外传感器四周分别放置一个红外发光二极管,分别记为D1、D2、D3、D4,红外接收器位于二极管的正中心,采用这种方式是为了避免识别过程中出现检测死角。当无手势进入检测区域时,红外接收器则不会接收到任何的输入信号,此时的输出电压的幅值为±0�002V。当有手势进入可检测范围时,红外发光二极管发出的红外光将会反射到红外接收器,从而形成光强反差,经过ADC的转换将光强信号转换为电信号,随后将数据存入指定的寄存器。以D1为例,手掌越靠近光源,红外接收器检测到的光信号越强,即输出的电信号越强,反之电信号即为减弱。

2.2.3PAJ7620的测试结果

为了测试LED阵列识别手势的可靠性,所以对定义的九种手势进行重复性测试,计算识别的准确率。基于检测思路的方法,将检测同样进行分类识别,接近类(靠近和远离)、挥动类(上、下、左、右、波动)、旋转类(顺时针和逆时针)。实验测试时每种手势测量次数为100次,测试的最终结果如表1所示。九种手势的平均识别率为92�9%,从表1可得知该数据采集方式的准确率和识别效率都比较高,但是单个分析可得出对于旋转类的检测误差相对最大。因为旋转类的手势检测时手指和手掌以及手臂之间的有较大面积,导致检测时对于距离的检测具有较大的误差,进而为识别的准确性带来更大的难度。

3系统软件设计

3.1主程序的设计

手势识别函数首先要确定手势的进入时间、退出时间、以及识别时间,设置时单位统一采用ms,识别时间和进入时间与系统识别的反应速度是成反比的,时间越短反应速度就越快,同时识别速度和准确率也是成反比。通过大量的实验测试,最终确定进入时间和识别时间为800ms,退出时间为1000ms。流程图如图4所示,Arduino程序首先进入的是Setup()函数,该函数的目的是进行Arduino的初始化,如库函数的调用,配置串口,波特率设置等,Setup()函数只会执行一次。接着就是执行loop()函数,该函数会不停地循环执行,也可看做Arduino自带的循环函数。如果没有loop函数和Setup函数,Arduino也是无法通过编译的。手势识别传感器会有九种输出,所以选择switch()语句比较合适,函数中使用到的PAJ7620ReadReg函数为传感器头文件里面已经定义好的函数,该函数是用来读取传感器返回的数据。传感器库函数内部已经定义了将会使用到的各种函数,使用时只需要调用就可以完成使用,PAJ7620中主要定义的函数为ReadReg函数(读取函数)与WriteReg函数(写入函数)。检测靠近手势或者远离手势时,有很大的可能性首先检测到的手势会是来自上、下、左、右四个方向其中的一个,因此当检测到上、下、左、右这四种手势时应进行进一步的检测,判断是否为靠近或者远离手势。例如:手掌从左侧向进入检测区域,此时第一个检测结果将是“右”,此时系统进入检测等待延时,在800ms中如果检测到靠近手势,则证明使用者需要输入的指令为“靠近”指令,同理;如果800ms的检测时间内检测到远离手势则证明使用者需要输入的指令为“远离”指令。在检测时间内如果没有靠近手势或者远离手势则最终输出“右”手势。同理“上”、“下”、“左”三种手势都是如“右”手势一样的检测思路。

3.2相关子程序的设计

当Arduino通过分析确认使用者的手势后将进入相应的子程序,在程序里已经定义了照明灯与步进电机的子程序,在子程序进行使用者想要的操作。表2所示为本设计通过手势识别控制的终端以及控制方法。电机转动子程序中定义当检测到靠近手势,电机开始正转固定圈数,代表房门开启,等待固定时间,电机开始反转,代表房门自动关闭。照明灯子程序中定义,以LED1为例,当第一次检测到“左”时,判断指定变量为奇数还是偶数,因变量初始值设置为0,所以判断为偶数,即LED1点亮,此时指定变量自加1变为奇数,当再次检测到“左”,判断变量为奇数控制LED1熄灭。同理LED2和LED3的控制方式也为如此。当检测到有控制终端时显示器同样会有相应的显示,当LED灯点亮时,显示器显示点亮结果,当LED灯熄灭时同样显示熄灭结果,当需要控制房门时显示开启和关闭。检测到没有控制终端时,显示器显示指令无效,同时空指令也为未来系统的扩展留下空间,用于为疾病患者提供更好的帮助。

4结论

通过一系列的仿真调试,最后组装实物进行测试达到设计要求,可以用手势控制房门的开启和照明灯的亮灭,从而解决了行动不便人群的一些实际问题,同时该系统也可用于我们日常家居等场合。

作者:李娣娜 刘强 马惠铖 单位:延安大学西安创新学院 西北工业集团有限公司