资源描述
《创新实践》课程总结报告
报告名称:基于Arduino的遥控PPT播放系统设计
学 院: 信息工程与自动化学院
专 业: 物联网工程
学 号:
学生姓名:
指导教师:
日 期: 2016年6月17日
l 题目:基于Arduino的遥控PPT播放系统设计
l 内容:
一、绪论
1. Arduino简介
Arduino是目前较为流行的电子互动平台,基于单片机系统开发,具有使用简单、功能多样、价格低廉等优点,广泛应用于电子系统设计和互动产品开发方面。
Arduino是2005年1月由米兰交互设计学院的两位教师David Cuartielles和Massimo Banzi联合创建,是一块基于开放原始代码的Simple I/O平台,该平台由两部分组成:硬件(包括微处理器、电路板等)和软件(编程接口和语言)。平台的两部分都是开源的,如果需要,可以下载Arduino的图表、购买需要的所有独立部件、切割电路板并制作一个电路板。Arduino具有类似java、C语言的开发环境。可以快速使用Ardu ino语言与Flash或Processing等软件完成互动作品。Arduino能够使用开发完成的电子元件,如Switch、Sensors或其它控制器、LED、步进电机或其它输入/输出装置,同时,Arduino也可以成为独立与软件沟通的平台,如flash、Processing、Max/MSP或其它互动软件。
Arduino能通过各种各样的传感器来感知环境,通过控制灯光、马达和其他的装置来反馈、影响环境。板子上的微控制器可以通过Arduino的编程语言来编写程序,编译成二进制文件,烧录进微控制器。对Arduino的编程是利用 Arduino编程语言 (基于 Wiring)和Arduino开发环境(基于 Processing)来实现的。基于Arduino的项目,可以只包含Arduino,也可以包含Arduino和其他一些在PC上运行的软件,他们之间进行通信 (比如 Flash, Processing, MaxMSP)来实现。
Ardunio平台特点:
Arduino在开发之初,就明确了其应用环境,设计了开源开放的平台,便于对其进行二次开发。Arduino的主要功能特点如下:
1)开放源代码的电路图设计。程序开发接口免费下载,也可依需求自己修改。
2)使用低价格的微处理控制器(ATmega8或ATmega128)。可以采用USB接口供电,不需外接电源,也可以使用外部9VDC输入。
3)支持ISP线上烧入器,将Bootloader固件烧入芯片。Arduino控制器内带Bootloader程序,是系统上电后运行的第一段代码,就好比PC机BIOS中的程序,启动就进行自检,配置端口等等,当然,单片机是靠烧写熔丝位来设定上电从boot区启动的,使用这个程序就可以直接把从串口发来的程序存放到flash区中。所以,使用Arduino编译环境下载程序时,就先让单片机复位,启动Boodoader程序引导串口发过来的程序顺利写入flash区中,flash可以重复烧写,因此想更新软件非常方便。有了Bootloader之后,可以通过串口或者USB to RS232线更新固件。
4)可依据官方提供的PCB和SCH电路图,简化Arduino模组,完成独立运作的微处理控制。
5)可简单地与传感器,各式各样的电子元件连接,如红外线、超音波、热敏电阻、光敏电阻、伺服马达等。
6)支持多样的互动程序,如Flash,Max/MSP,VVVV,PureData,C,Processin等。使用低价格的微处理控制器。
7)应用方面,利用hrduino,突破以往只能使用鼠标、键盘、CCD等输入的装置的互动内容,可以更简单地达成单人或多人游戏互动。Ard uino的功能特点,使其得到了越来越广泛的应用。
2. 本次实践所选项目要完成的工作
1) 根据接线图连接好板子、红外接收模块、响应模块;
2)编辑代码,对原红外遥控代码做出相关系统功能的更改;
3)编译代码,将板子和电脑连接上,下载程序进板子;
4)使用红外遥控器进行遥控,调试相应功能;
5)调试之后对代码进行相应改进,最后完成系统;
6)理解整个系统的所有代码。
二、系统结构分析
1.硬件基本组成
控制器:ardunio开发板
输入、输出:红外遥控模块(VS1838B红外接收头、CARmp3遥控器、面包板、线、开发板)、响应模块(蜂鸣器、LED灯、电阻、PC)
VS1838B红外接收头:VS1838B内含高速高灵敏度PIN光电二极管和低功耗、高增益前置放大IC,采用环氧树脂封装外加外屏蔽抗干挠设计,该产品已经通过REACH和SGS认证属于环保产品,在红外遥控系统中作为接收器使用。
结构图:
原理图:
CARmp3遥控器:遥控器由红外接收及发射电路、信号调理电路、中央控制器8031.程序及数据存储器、键盘及状态指示电路组成
2. 硬件连线图或硬件结构框图
三、系统软件设计
1.基本功能
通过红外遥控模块和响应模块对鼠标和键盘进行控制,实现遥控器控制鼠标移动至一PPT文件处并点击它,进入WPS,再控制鼠标移动至播放按钮处,点击开始播放,PPT全屏后,再通过遥控器控制PPT的翻页,实现PPT的播放功能,同时串口监视器显示相应的按键信息(用户码、数据码、数据反码)。
由于系统的可靠性不是特别高,遥控器经常需要按好几次才能成功接收到信号,所以增加接收成功反馈功能,即只有在一次按键后系统成功运行后会有LED灯闪一下和蜂鸣器响一下。
2.模块设计
2.1红外遥控模块:(VS1838B红外接收头、CARmp3遥控器、面包板、线、开发板)
2.11实现原理
使用者每按下一个控制键,CPU从指定的存储单元中读取一系列的二进制数据,串行输出给信号保持电路,同时由调制电路将信号调制在一个特定的载波平率上,将调制信号经放大后,由红外线发射二极管进行发射,红外接收装置滤掉其他杂波只接受该特定载波频率上的信号并将其还原成脉冲码。此时开发板端由定时器提供一个时钟频率对脉冲进行检测、解码,这里就需要了解遥控器的编码方式以及数据格式,
编码方式:NEC协议
遥控器发出的二进制脉冲码载波频率是38kHz,采用脉冲宽度调制,每一位的时间为1.125ms或2.25ms ,逻辑1和逻辑0;一个消息是由一个9ms的高电平开始,随后有一个4.5ms的低电平,之后就是信息码了.
数据格式:包括用户码、数据码和数据反码共占32位。数据反码可用于对数据的纠错。
根据编码原理,系统通过remote_decode(void)译码函数根据特定时间间隔的高低电平信号(9ms、4.5ms已在代码中标出)调用void pulse_deal()接收地址码和命令码脉冲函数进行解码;
而pulse_deal()函数先是调用logic_value()判断逻辑值0和1子函数得到脉冲的二进制值,再将二进制数存入之前定义好的变量中;
logic_value()函数则又是通过特定的高低电平时间间隔(560us、560us已在代码中标出)识别出逻辑0和1传给pulse_deal()函数。
系统通过以上三个函数将系统接收到的脉冲信号进行解码得到adrL_code 、adrH_code 、ir_code 三个变量分别为用户码、数据码、数据反码,再将变量传给响应模块,最终实现系统功能。
2.12、关键代码
void timer1_init(void)//定时器初始化函数
{
TCCR1A = 0X00;
TCCR1B = 0X05;//给定时器时钟源 //64us进行一次计数器累加
TCCR1C = 0X00;
TCNT1 = 0X00;
TIMSK1 = 0X00; //禁止定时器溢出中断
}
char logic_value()//判断逻辑值“0”和“1”子函数
{
TCNT1 = 0X00;
while(!(digitalRead(IR_IN))); //低等待
Pulse_Width=TCNT1;
TCNT1=0;
if(Pulse_Width>=7&&Pulse_Width<=10)//低电平560us
{
while(digitalRead(IR_IN));//是高就等待
Pulse_Width=TCNT1;
TCNT1=0;
if(Pulse_Width>=7&&Pulse_Width<=10)//接着高电平560us
return 0;
else if(Pulse_Width>=25&&Pulse_Width<=27) //接着高电平1.7ms
return 1;
}
return -1;
}
void pulse_deal()//接收地址码和命令码脉冲函数
{
int i;
int j;
ir_code=0x00;// 清零
adrL_code=0x00;// 清零
adrH_code=0x00;// 清零
//解析遥控器编码中的用户编码值
for(i = 0 ; i < 16; i++)
{
if(logic_value() == 1) //是1
ir_code |= (1<<i);//保存键值
}
//解析遥控器编码中的命令码
for(i = 0 ; i < 8; i++)
{
if(logic_value() == 1) //是1
adrL_code |= (1<<i);//保存键值
}
//解析遥控器编码中的命令码反码
for(j = 0 ; j < 8; j++)
{
if(logic_value() == 1) //是1
adrH_code |= (1<<j);//保存键值
}
remote_deal();
}
void remote_decode(void)//译码函数
{
TCNT1=0X00;
while(digitalRead(IR_IN))//是高就等待
TCNT1=0X00;
while(!(digitalRead(IR_IN))); //低等待
Pulse_Width=TCNT1;
TCNT1=0;
if(Pulse_Width>=140&&Pulse_Width<=141)//9ms
{
while(digitalRead(IR_IN));//是高就等待
Pulse_Width=TCNT1;
TCNT1=0;
if(Pulse_Width>=68&&Pulse_Width<=72)//4.5ms 此时判定为目标脉冲信号
{
pulse_deal();
return;
}
else if(Pulse_Width>=34&&Pulse_Width<=36)//2.25ms
{
while(!(digitalRead(IR_IN)));//低等待
Pulse_Width=TCNT1;
TCNT1=0;
if(Pulse_Width>=7&&Pulse_Width<=10)//560us
{
return;
}
}
}
}
2.2、响应模块(蜂鸣器、LED灯、PC)
2.21、遥控器按键对应响应功能
3
1
2
1:上一页
3:下一页
6
5
4
2:鼠标上移
8:鼠标下移
4:鼠标左移
8
6:鼠标右移
5:确定
2.22、响应原理
通过红外遥控模块传递的变量adrL_code使Deal_Print()函数作出响应,响应分为三部分:
1.鼠标和键盘的响应: Mouse.move(); Keyboard.press();
2.蜂鸣器和LED灯:BuzzerDi();digitalWrite(LED,HIGH);
3.串口显示按键相关信息:remote_deal() (该函数在InfraredRemote.h中)。
2.2.3、关键代码
#include "InfraredRemote.h"
#include <CCEventKeyboard.h>
#define Buzzer 3
#define LED 13
void setup()
{
Serial.begin(9600);
pinMode(IR_IN,INPUT_PULLUP);//设置红外接收引脚为输入
Serial.flush(); //清除串口缓冲器内容函数。
timer1_init();//定时器初始化
Keyboard.begin();
Mouse.begin();
pinMode(Buzzer,OUTPUT); //蜂鸣器为IO输出
digitalWrite(Buzzer,LOW);
pinMode(LED,OUTPUT); //LED为IO输出
digitalWrite(LED,LOW);
}
void loop()
{
remote_decode(); //译码
Deal_Print();
}
void Deal_Print() //响应
{
if(adrL_code !=0x00)
{
BuzzerDi();
digitalWrite(LED,HIGH);
delay(200);
digitalWrite(LED,LOW);
}
if( adrL_code == 0x0c)
{
Serial.println("The previous one");
Keyboard.press(KEY_LEFT_ARROW); //向电脑发送向左按键按下的指令
delay(50);
Keyboard.releaseAll();
}
else if( adrL_code == 0x18 )
{
Serial.println("Up");
Mouse.move(0,-20);
}
else if( adrL_code == 0x5e )
{
Serial.println("The next one");
Keyboard.press(KEY_RIGHT_ARROW); //向电脑发送向right按键按下的指令
delay(50);
Keyboard.releaseAll();
}
else if(adrL_code == 0x08 )
{
Serial.println("Left");
Mouse.move(-20, 0);
}
else if( adrL_code == 0x1c )
{
Serial.println("Confirm"); //双击
Mouse.click(MOUSE_LEFT);
delay(300);
Mouse.click(MOUSE_LEFT);
}
else if( adrL_code == 0x5a )
{
Serial.println("Right");
Mouse.move(20, 0);
}
else if( adrL_code == 0x52)
{
Serial.println("Down");
Mouse.move(0,20);
}
adrL_code = 0x00;//变量重新赋初值
adrH_code = 0x00;
ir_code = 0x00;
}
void BuzzerDi()
{
digitalWrite(Buzzer,HIGH); //蜂鸣器响
delay(50);
digitalWrite(Buzzer,LOW); //蜂鸣器关闭
}
四、成果
1. 结论
以上设计在实际操作后可以实现,支持设计的功能。
2. 系统运行情况(文字描述、截图)
接好线:
以下图片为之前测试时的照片,还未加上蜂鸣器和LED灯。
控制移动鼠标至PPT文件处:
控制鼠标双击打开文件:
打开文件后控制鼠标移至播放按钮:
控制键盘的right键,实现下一页:
得到下一页面:
控制键盘的left键,得到上一页:
最后安装上蜂鸣器和LED后测试,按下并成功接收到时LED灯变亮。
串口助手数据:以下为按下各个按键后的结果
五、 总结与体会
1. 基于C8051F单片机直流电动机反馈控制系统的设计与研究
2. 基于单片机的嵌入式Web服务器的研究
3. MOTOROLA单片机MC68HC(8)05PV8/A内嵌EEPROM的工艺和制程方法及对良率的影响研究
4. 基于模糊控制的电阻钎焊单片机温度控制系统的研制
5. 基于MCS-51系列单片机的通用控制模块的研究
6. 基于单片机实现的供暖系统最佳启停自校正(STR)调节器
7. 单片机控制的二级倒立摆系统的研究
8. 基于增强型51系列单片机的TCP/IP协议栈的实现
9. 基于单片机的蓄电池自动监测系统
10. 基于32位嵌入式单片机系统的图像采集与处理技术的研究
11. 基于单片机的作物营养诊断专家系统的研究
12. 基于单片机的交流伺服电机运动控制系统研究与开发
13. 基于单片机的泵管内壁硬度测试仪的研制
14. 基于单片机的自动找平控制系统研究
15. 基于C8051F040单片机的嵌入式系统开发
16. 基于单片机的液压动力系统状态监测仪开发
17. 模糊Smith智能控制方法的研究及其单片机实现
18. 一种基于单片机的轴快流CO〈,2〉激光器的手持控制面板的研制
19. 基于双单片机冲床数控系统的研究
20. 基于CYGNAL单片机的在线间歇式浊度仪的研制
21. 基于单片机的喷油泵试验台控制器的研制
22. 基于单片机的软起动器的研究和设计
23. 基于单片机控制的高速快走丝电火花线切割机床短循环走丝方式研究
24. 基于单片机的机电产品控制系统开发
25. 基于PIC单片机的智能手机充电器
26. 基于单片机的实时内核设计及其应用研究
27. 基于单片机的远程抄表系统的设计与研究
28. 基于单片机的烟气二氧化硫浓度检测仪的研制
29. 基于微型光谱仪的单片机系统
30. 单片机系统软件构件开发的技术研究
31. 基于单片机的液体点滴速度自动检测仪的研制
32. 基于单片机系统的多功能温度测量仪的研制
33. 基于PIC单片机的电能采集终端的设计和应用
34. 基于单片机的光纤光栅解调仪的研制
35. 气压式线性摩擦焊机单片机控制系统的研制
36. 基于单片机的数字磁通门传感器
37. 基于单片机的旋转变压器-数字转换器的研究
38. 基于单片机的光纤Bragg光栅解调系统的研究
39. 单片机控制的便携式多功能乳腺治疗仪的研制
40. 基于C8051F020单片机的多生理信号检测仪
41. 基于单片机的电机运动控制系统设计
42. Pico专用单片机核的可测性设计研究
43. 基于MCS-51单片机的热量计
44. 基于双单片机的智能遥测微型气象站
45. MCS-51单片机构建机器人的实践研究
46. 基于单片机的轮轨力检测
47. 基于单片机的GPS定位仪的研究与实现
48. 基于单片机的电液伺服控制系统
49. 用于单片机系统的MMC卡文件系统研制
50. 基于单片机的时控和计数系统性能优化的研究
51. 基于单片机和CPLD的粗光栅位移测量系统研究
52. 单片机控制的后备式方波UPS
53. 提升高职学生单片机应用能力的探究
54. 基于单片机控制的自动低频减载装置研究
55. 基于单片机控制的水下焊接电源的研究
56. 基于单片机的多通道数据采集系统
57. 基于uPSD3234单片机的氚表面污染测量仪的研制
58. 基于单片机的红外测油仪的研究
59. 96系列单片机仿真器研究与设计
60. 基于单片机的单晶金刚石刀具刃磨设备的数控改造
61. 基于单片机的温度智能控制系统的设计与实现
62. 基于MSP430单片机的电梯门机控制器的研制
63. 基于单片机的气体测漏仪的研究
64. 基于三菱M16C/6N系列单片机的CAN/USB协议转换器
65. 基于单片机和DSP的变压器油色谱在线监测技术研究
66. 基于单片机的膛壁温度报警系统设计
67. 基于AVR单片机的低压无功补偿控制器的设计
68. 基于单片机船舶电力推进电机监测系统
69. 基于单片机网络的振动信号的采集系统
70. 基于单片机的大容量数据存储技术的应用研究
71. 基于单片机的叠图机研究与教学方法实践
72. 基于单片机嵌入式Web服务器技术的研究及实现
73. 基于AT89S52单片机的通用数据采集系统
74. 基于单片机的多道脉冲幅度分析仪研究
75. 机器人旋转电弧传感角焊缝跟踪单片机控制系统
76. 基于单片机的控制系统在PLC虚拟教学实验中的应用研究
77. 基于单片机系统的网络通信研究与应用
78. 基于PIC16F877单片机的莫尔斯码自动译码系统设计与研究
79. 基于单片机的模糊控制器在工业电阻炉上的应用研究
80. 基于双单片机冲床数控系统的研究与开发
81. 基于Cygnal单片机的μC/OS-Ⅱ的研究
82. 基于单片机的一体化智能差示扫描量热仪系统研究
83. 基于TCP/IP协议的单片机与Internet互联的研究与实现
84. 变频调速液压电梯单片机控制器的研究
85. 基于单片机γ-免疫计数器自动换样功能的研究与实现
86. 基于单片机的倒立摆控制系统设计与实现
87. 单片机嵌入式以太网防盗报警系统
88. 基于51单片机的嵌入式Internet系统的设计与实现
89. 单片机监测系统在挤压机上的应用
90. MSP430单片机在智能水表系统上的研究与应用
91. 基于单片机的嵌入式系统中TCP/IP协议栈的实现与应用
92. 单片机在高楼恒压供水系统中的应用
93. 基于ATmega16单片机的流量控制器的开发
94. 基于MSP430单片机的远程抄表系统及智能网络水表的设计
95. 基于MSP430单片机具有数据存储与回放功能的嵌入式电子血压计的设计
96. 基于单片机的氨分解率检测系统的研究与开发
97. 锅炉的单片机控制系统
98. 基于单片机控制的电磁振动式播种控制系统的设计
99. 基于单片机技术的WDR-01型聚氨酯导热系数测试仪的研制
100. 一种RISC结构8位单片机的设计与实现
101. 基于单片机的公寓用电智能管理系统设计
102. 基于单片机的温度测控系统在温室大棚中的设计与实现
103. 基于MSP430单片机的数字化超声电源的研制
104. 基于ADμC841单片机的防爆软起动综合控制器的研究
105. 基于单片机控制的井下低爆综合保护系统的设计
106. 基于单片机的空调器故障诊断系统的设计研究
107. 单片机实现的寻呼机编码器
108. 单片机实现的鲁棒MRACS及其在液压系统中的应用研究
109. 自适应控制的单片机实现方法及基上隅角瓦斯积聚处理中的应用研究
110. 基于单片机的锅炉智能控制器的设计与研究
111. 超精密机床床身隔振的单片机主动控制
112. PIC单片机在空调中的应用
113. 单片机控制力矩加载控制系统的研究
项目论证,项目可行性研究报告,可行性研究报告,项目推广,项目研究报告,项目设计,项目建议书,项目可研报告,本文档支持完整下载,支持任意编辑!选择我们,选择成功!
项目论证,项目可行性研究报告,可行性研究报告,项目推广,项目研究报告,项目设计,项目建议书,项目可研报告,本文档支持完整下载,支持任意编辑!选择我们,选择成功!
单片机论文,毕业设计,毕业论文,单片机设计,硕士论文,研究生论文,单片机研究论文,单片机设计论文,优秀毕业论文,毕业论文设计,毕业过关论文,毕业设计,毕业设计说明,毕业论文,单片机论文,基于单片机论文,毕业论文终稿,毕业论文初稿,本文档支持完整下载,支持任意编辑!本文档全网独一无二,放心使用,下载这篇文档,定会成功!
展开阅读全文