目 录
1 绪论 1
1.1课题研究背景和意义 1
1.2国内外研究现状和发展 1
1.3研究内容 2
1.3.1单片机的通讯 2
1.3.2单片机的数据处理 2
1.3.3操作界面的设计与数据显示 3
1.4研究方案 3
2单片机概述 4
2.1单片机介绍与选择 4
2.2 Arduino单片机控制原理 4
2.2.1Arduino Uno概述 4
2.2.2输入输出 5
2.2.3通讯 5
2.2.4模拟信号 6
2.2.5通讯方式 7
3 手势控制技术概述 9
3.1手势识别模块介绍 9
3.2 PAJ7620型模块 9
3.3 MARS型模块 10
3.4比较分析与最终选择 11
4 控制界面概述 12
4.1图形界面 12
4.2信号的反馈与处理 12
5 硬件电路的设计与实现 14
5.1硬件总体结构 14
5.2主要硬件模块的设计 14
5.2.1电机驱动模块的设计 14
5.2.2电机模块设计 16
5.2.3触摸屏模块设计 16
5.2.4手势识别模块设计 16
5.2.5限位模块设计 16
5.3电机的选择和电机驱动模块的设计 16
6 总系统的设计与验证 18
6.1限位检测系统设计 18
6.2执行系统设计 19
6.3显示界面设计 21
6.3.1矢量图的制作 21
6.3.2背景图片的编辑 21
6.3.3数据的传递 22
6.4手势识别识别系统设计 23
6.5总系统设计与布局 24
7 总结与展望 25
7.1本文的工作总结 25
7.2展望 25
参考文献 27
致 谢 28
附页 29
1.3研究内容
1.3.1单片机的通讯
单片机通讯可以使用TX/RX的串口通讯,同时也可以使用I2C协议进行通讯。虽然它们之间的协议不尽相同,但是都可以实现设备间的通讯,完成数据间的交流与处理。TX/RX的串口通讯协议只需设备间的TX/RX相互交错连接,即可实现通讯,且可同时实现通讯。I2C通讯中总线只有两根双向信号线,一根是数据线SDA,另一根时时钟线SCL。原理如图所示:
图1-1 I2C通讯原理
1.3.2单片机的数据处理
当单片机读取到串口中的信号时,反馈给一个引脚高/低电平的数字信号,从而实现数据间的处理。
1.3.3操作界面的设计与数据显示
其操作界面可以通过自己制作贴图的方式,同时给予触摸位置按钮开关的命令,实现在满足界面的条件下,对外部设备的控制与显示的作用。
在考虑有没有下注的情况下,进行不同的反馈。同时给予一定的动画效果,让其看上去更加真实。具体效果如图所示:
本课题主要研究的内容有单片机与显示屏的通信,单片机的数据处理何显示屏的界面设计。论文分为七章:
第一章:论述了国内外对于手势识别的一些发展,并简要介绍论文的主要研究内容与研究方案。
第二章:介绍了当前的单片机的种类和未来的发展趋势,简单介绍Arduino单片机的控制原理。
第三章:阐述了手势控制的一些原理和方法,介绍选用的两种模块在对手势控制的原理,比较选用的两种手势控制传感器的不同与优缺点,和最终选用的手势识别传感器。
第四章:介绍了采用怎样的图形界面显示屏,和对其界面的设计,将单片机的信号处理并反馈在显示屏中和显示屏的信号传入单片机时单片机的处理和执行。
第五章:介绍了一些在实现这些功能的同时所需要的一些其他的电器元件,及其整个系统的电气线路图的布局。
第六章:对整个系统的整合与设计。
第七章:展望与总结。
1.4研究方案
本文将采用两个手势识别传感器对其进行可行性的探究,并发现他们在各方面的优点,并选择其中一种手势识别传感器完成接下来的工作。
使用两种以上的触碰传感器,比较优劣,并根据具体工况下选择合理的触碰传感器。选择适合的触摸屏,本文转载自http://www.biyezuopin.vip/onews.asp?id=14860并且能够设计多种方案,完成触摸屏的界面设计。
7 总结与展望
7.1本文的工作总结
本文通过使用Arduino作为控制器,电机作为执行器,触碰开关、手势识别作为传感器、触摸屏作为显示器,完成了手势识别去控制智能通风柜的操作。
本文的主要工作主要包括以下内容:
(1)对人机交互、手势识别的定义做了简单介绍,并阐述了手势识别的发展历史和当前研究情况。
(2)介绍了数字信号、模拟信号、单片机通讯、通讯方式等基本知识。
(3)分析了PAJ7620和MARS手势识别模块的优劣,并确定了在之后使用的手势识别模块。
(4)学习了使用Arduino单片机,并且能够将得到的信号作为触发信号对执行器进行控制。
(5)了解了单片机的通信协议与通信接口,能够将触摸屏、手势识别传感器、单片机、电机、触碰传感器有机地结合起来,实现特定的功能。
(6)能够自主的使用Altiun Designer软件设计系统的电路原理图,对之后的创新提供了思路。
while (Serial.available() > 0) {//判断串口是否有信号输入,有则执行switch选择
switch (item) {//使用switch来判断收到什么信号执行怎样的操作
case '0'://信号0
//停止
digitalWrite(9,HIGH);
digitalWrite(10,HIGH);
break;
//电机左转
case '1':
digitalWrite(9,HIGH);
digitalWrite(10,LOW);
break;
//电机右转
case '2':
digitalWrite(9,LOW);
digitalWrite(10,HIGH);
break;
//收到干扰信号时,保证电机停止状态
default:
digitalWrite(9,HIGH);
digitalWrite(10,HIGH);
break;
}