华中科技大学传感器课设报告_第1页
华中科技大学传感器课设报告_第2页
华中科技大学传感器课设报告_第3页
华中科技大学传感器课设报告_第4页
华中科技大学传感器课设报告_第5页
已阅读5页,还剩10页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、华中科技大学计算机科学与技术学院传感器技术课程设计 课程实验报告专业班级: IOT1201姓 名: 韩雨桥 学 号: U201215110 指导老师: 宋恩民、高鹏毅 完成日期: 2015年 6 月 16 日目录一、课程设计的目的 3二、课程设计的内容 3三、课程设计相关器材 3四、课设具体结构分析与实现 4五、课设各部分功能实现 5六、调试结果 15七、课设心得与感想 151、 课程设计的目的 机器人创意设计与制作课程的总目标是提高学生的创新能力、综合设计能力和动手实践能力,进而培养和提升学生的STEM素养,强调学生在直接经验和亲身经历的基础上,通过观察、思考、设计、制作、试验等活动获得丰富

2、的学习体验,在生活中发现问题,在实践中解决问题,在活动中获得知识。2、 课程设计的内容设计并制作一个小型机器人,要求满足一下几点:1)通信功能:机器人上安装蓝牙模块,手机通过蓝牙串口助手与机器人蓝牙建立联系,实现在手机上分别发送1,2,3,4指令,机器人分别完成“追踪”、“避障”、“漫游”和“循迹”四种不同的控制功能和利用键盘方式或智能手机重力感应模块,遥控机器人做出前进、后退、左转、右转、原地旋转以及停止等动作的功能。2)红外追踪功能:无目标时,机器人静止;当目标较远时,机器人快速接近;目标较近时,机器人慢速接近;距离过近时,机器人停止。机器人可以随目标左转或右转弯。3)前进避障功能:机器人

3、先静止,拍手后(声控启动),机器人开始前进。传感器检测到障碍时,如果障碍在正前方且距离较近时,机器人减速前进;距离过近时,机器人停止,并后退一小段,然后右转绕行。如果障碍在左前方或右前方,机器人则右转或左转绕行。无障碍时,机器人全速前进。如果连拍两次手,机器人停止。4)悬崖漫游功能:机器人沿着桌子边沿行走,既不远离,也不会掉下去,遇到桌角能良好转弯。5)循迹功能:机器人可以沿着黑色或白色的直线、S形线、丁字形线或十字形轨迹行走。三、课程设计相关器材硬件要求:计算机教室、机器人比赛场地、配套ECT-EK实训箱(含全套实训设备)、PC机软件环境:需要安装Arduino IDE软件,可以采用图形化编

4、程插件Ardublock,也可以直接使用IDE环境编写代码。4、 课设具体结构分析与实现 根据课程设计的内容和要求,我们需要搭建一个对应的系统结构,同时将机器电机、红外传感器、灰度传感器、声音传感器和蓝牙模块与主控板进行通讯连接。具体实现结构应为差速运动控制、声控运动、红外追踪、前进避障、悬崖漫游、循迹追踪、蓝牙通讯递进式功能实现。1、差速运动控制编写代码,实现以下动作: (1)一侧电机转动,另一侧不转,实现转动; (2)一侧电机快动,另一侧慢转,实现转动; (3)原地等速旋转;2 、声控运动加装声控传感器,编写一段代码,使你拍手后,机器人做出一套动作。3、红外追踪安装近红外传感器,并编写代码

5、,用手做追踪目标,实现以下功能:(1) 无目标时,机器人静止;(2) 有目标时,机器人向目标行驶靠近。若左传感器检测到目标而右传感器没有检测到,则向左转。若右传感器检测到目标而左传感器没有检测到,则向右转。若两侧传感器同时检测到则前进。4、前进避障为机器人安装2个或以上近红外传感器,并编写代码,实现以下功能:(1)无障碍时,机器人前进;(2)左前方有障碍时,机器人右转绕行;(3)右前方有障碍时,机器人左转绕行;(4)正前方有障碍时,机器人后退一段距离,右转,绕行。5、悬崖漫游 为机器人加装近红外传感器和灰度传感器,编写代码,将机器人放置于桌子边缘,使机器人可以沿着悬崖漫游,既不远离,也不会掉下

6、去,遇到桌角能良好转弯。6、循迹追踪为机器人加装2个灰度传感器,在地面粘贴黑胶带(也可用深色地面粘白胶带)形成平滑的轨迹,编写代码,将机器人放置于胶带轨迹附件,使机器人可以沿着轨迹行走。7、蓝牙通讯机器人上安装蓝牙模块,手机通过蓝牙串口助手与机器人蓝牙建立联系,实现在手机上分别发送1,2,3,4指令,机器人分别完成“追踪”、“避障”、“漫游”和“循迹”四种不同的控制功能和利用键盘方式或智能手机重力感应模块,遥控机器人做出前进、后退、左转、右转、原地旋转以及停止等动作的功能。5、 课设各部分功能实现定义左右轮电机端口:char getstr;const int right = A4;const

7、int left = A3;定义各端口输入输出关系与电位关系:void setup()Serial.begin(9600);pinMode( A3, INPUT); pinMode( A2 , INPUT); pinMode( A4, INPUT); pinMode( A1 , INPUT); pinMode( left, INPUT); pinMode( right, INPUT); pinMode( 5 , OUTPUT); pinMode( 9 , OUTPUT); pinMode( 6 , OUTPUT); pinMode( 10 , OUTPUT); digitalWrite( 5

8、, LOW ); digitalWrite( 9 , LOW ); digitalWrite( 6 , LOW ); digitalWrite( 10 , LOW );定义进程循环:void loop() char a; char getstr; getstr=Serial.read(); a=getstr;红外追踪部分功能实现: while(a='1') /红外追踪 if ( !( digitalRead(right) ) && digitalRead(left) ) digitalWrite( 5 , LOW ); digitalWrite( 10 , LO

9、W ); delay( 200 ); digitalWrite( 6 , HIGH ); digitalWrite( 9 , LOW ); else if ( digitalRead(right) && !( digitalRead(left) ) ) digitalWrite( 6 , LOW ); digitalWrite( 9 , LOW ); delay( 200 ); digitalWrite( 5 , LOW ); digitalWrite( 10 , HIGH ); else if ( !( digitalRead(right) ) && !( d

10、igitalRead(left) ) ) digitalWrite( 5 , LOW ); digitalWrite( 9 , LOW ); delay( 200 ); digitalWrite( 6 , HIGH ); digitalWrite( 10 , HIGH ); else digitalWrite( 6 , LOW ); digitalWrite( 10 , LOW ); delay( 200 ); digitalWrite( 5 , LOW ); digitalWrite( 9 , LOW ); getstr=Serial.read(); if(getstr='2'

11、;|getstr='3'|getstr='4'|getstr='5'|getstr='6'|getstr='7'|getstr='8'|getstr='9'|getstr='0') a=getstr; 前进避障部分功能实现:while(a='2') /前进避障 if ( !( digitalRead(right) ) && !( digitalRead(left) ) ) digitalWrite( 5 , HIGH ); digita

12、lWrite( 6 , LOW ); digitalWrite( 9 , HIGH ); digitalWrite( 10 , LOW ); delay( 1000 ); digitalWrite( 9 , LOW ); digitalWrite( 10 , HIGH ); delay( 1000 ); else if ( !( digitalRead(right) ) && digitalRead(left) ) digitalWrite( 5 , LOW ); digitalWrite( 6 , HIGH ); digitalWrite( 9 , HIGH ); digit

13、alWrite( 10 , LOW ); delay( 500 ); digitalWrite( 9 , LOW ); digitalWrite( 6 , HIGH ); digitalWrite( 5 , LOW ); else if ( digitalRead(right) && !( digitalRead(left) ) ) digitalWrite( 6 , LOW ); digitalWrite( 5 , HIGH ); digitalWrite( 9 , LOW ); digitalWrite( 10 , HIGH ); delay( 500 ); digital

14、Write( 5 , LOW ); digitalWrite( 9 , LOW ); digitalWrite( 10 , HIGH ); else digitalWrite( 6 , HIGH ); digitalWrite( 10 , HIGH ); digitalWrite( 5 , LOW ); digitalWrite( 9 , LOW ); getstr=Serial.read();if(getstr='1'|getstr='3'|getstr='4'|getstr='5'|getstr='6'|get

15、str='7'|getstr='8'|getstr='9'|getstr='0') a=getstr;悬崖漫游部分功能实现: while(a='3') /悬崖漫游 if ( digitalRead(right) ) && ( digitalRead(left) ) ) analogWrite( 5 , 200 );digitalWrite( 6 , LOW );analogWrite( 9 , 200 );digitalWrite( 10 , LOW );delay( 50 ); if ( ( !(

16、digitalRead(right) ) && (digitalRead(left) ) digitalWrite( 5 , LOW );analogWrite( 6 , 200 );analogWrite( 9 , 200 );digitalWrite( 10 , LOW );delay( 50 ); if( digitalRead(right) ) && ( !(digitalRead(left) ) analogWrite( 5 , 200 );analogWrite( 10 , 200 );digitalWrite( 6 , LOW );digitalW

17、rite( 9 , LOW );delay( 50 ); if( !( digitalRead(right) ) && (!( digitalRead(left) ) analogWrite( 6 , 200 ); analogWrite( 10 , 200 ); digitalWrite( 5 , LOW ); digitalWrite( 9 , LOW ); delay( 50 ); getstr=Serial.read();if(getstr='1'|getstr='2'|getstr='4'|getstr='5&#

18、39;|getstr='6'|getstr='7'|getstr='8'|getstr='9'|getstr='0') a=getstr;循迹追踪部分功能实现: while(a='4') /循迹 if ( !(digitalRead(right) ) &&( digitalRead(left) ) digitalWrite( 5 , LOW ); digitalWrite( 10 , LOW ); digitalWrite( 6 , LOW ); analogWrite( 9 , 1

19、00 ); delay( 50 ); if ( digitalRead(right) &&( !( digitalRead(left) ) ) digitalWrite( 9 , LOW ); digitalWrite( 6 , LOW ); digitalWrite( 10 , LOW ); analogWrite( 5 , 100 ); delay( 50 ); if ( !( digitalRead(right) ) && (!( digitalRead(left) ) ) digitalWrite( 6 , LOW ); digitalWrite( 9

20、, LOW ); analogWrite( 5 , 100); digitalWrite( 10 , LOW ); delay( 50 ); if ( digitalRead(right) ) &&( digitalRead(left) ) analogWrite( 5 ,100); digitalWrite( 6 , LOW ); digitalWrite( 10 ,LOW ); analogWrite( 9 , 100 ); delay( 50 ); getstr=Serial.read(); if(getstr='1'|getstr='2'

21、|getstr='3'|getstr='5'|getstr='6'|getstr='7'|getstr='8'|getstr='9'|getstr='0') a=getstr;简单前进部分功能实现:while(a='5')/前进 digitalWrite( 5 ,HIGH ); digitalWrite( 6 , LOW ); digitalWrite( 9 , HIGH ); digitalWrite( 10 , LOW ); getstr=Serial.read(

22、); if(getstr='1'|getstr='2'|getstr='3'|getstr='4'|getstr='6'|getstr='7'|getstr='8'|getstr='9'|getstr='0') a=getstr; 简单后退部分功能实现: while(a='6')/后退 digitalWrite( 6 , HIGH ); digitalWrite( 5 , LOW ); digitalWrite( 10 , HIGH )

23、; digitalWrite( 9 , LOW ); getstr=Serial.read(); if(getstr='1'|getstr='2'|getstr='3'|getstr='4'|getstr='5'|getstr='7'|getstr='8'|getstr='9'|getstr='0') a=getstr; 左转功能实现:while(a='7')/左转 analogWrite( 5 , 200 ); digitalWrit

24、e( 6 , LOW ); analogWrite( 9 , 50 ); digitalWrite( 10 , LOW ); getstr=Serial.read(); if(getstr='1'|getstr='2'|getstr='3'|getstr='4'|getstr='5'|getstr='6'|getstr='8'|getstr='9'|getstr='0') a=getstr; 右转功能实现: while(a='8')/右

25、转 analogWrite( 5 , 50 ); digitalWrite( 6 ,LOW ); analogWrite( 9 , 200 ); digitalWrite( 10 , LOW ); getstr=Serial.read(); if(getstr='1'|getstr='2'|getstr='3'|getstr='4'|getstr='5'|getstr='6'|getstr='7'|getstr='9'|getstr='0') a=getstr; 原地自转部分功能实现: while(a='9'

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论