华中科技大学传感器课设报告.doc

上传人:叶*** 文档编号:34980749 上传时间:2022-08-19 格式:DOC 页数:12 大小:37KB
返回 下载 相关 举报
华中科技大学传感器课设报告.doc_第1页
第1页 / 共12页
华中科技大学传感器课设报告.doc_第2页
第2页 / 共12页
点击查看更多>>
资源描述

《华中科技大学传感器课设报告.doc》由会员分享,可在线阅读,更多相关《华中科技大学传感器课设报告.doc(12页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

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

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

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

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

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

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

9、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) ) & !( digitalRead(left) ) ) digitalWrite( 5

10、, 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|getstr=3|getstr=4|getstr=5|getstr=6|getstr=7|g

11、etstr=8|getstr=9|getstr=0) a=getstr;前进避障部分功能实现:while(a=2) /前进避障if ( !( digitalRead(right) ) & !( digitalRead(left) ) ) digitalWrite( 5 , HIGH ); digitalWrite( 6 , LOW ); digitalWrite( 9 , HIGH ); digitalWrite( 10 , LOW ); delay( 1000 ); digitalWrite( 9 , LOW ); digitalWrite( 10 , HIGH ); delay( 1000

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

13、eft) ) ) digitalWrite( 6 , LOW ); digitalWrite( 5 , HIGH ); digitalWrite( 9 , LOW ); digitalWrite( 10 , HIGH ); delay( 500 ); digitalWrite( 5 , LOW ); digitalWrite( 9 , LOW ); digitalWrite( 10 , HIGH ); else digitalWrite( 6 , HIGH ); digitalWrite( 10 , HIGH ); digitalWrite( 5 , LOW ); digitalWrite(

14、9 , LOW );getstr=Serial.read();if(getstr=1|getstr=3|getstr=4|getstr=5|getstr=6|getstr=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 );d

15、elay( 50 );if ( ( !(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

16、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|getstr=6|getstr=7|getstr=8|getstr=9|getstr=0)

17、a=getstr;循迹追踪部分功能实现: while(a=4) /循迹 if ( !(digitalRead(right) ) &( digitalRead(left) ) digitalWrite( 5 , LOW ); digitalWrite( 10 , LOW ); digitalWrite( 6 , LOW ); analogWrite( 9 , 100 ); delay( 50 ); if ( digitalRead(right) &( !( digitalRead(left) ) ) digitalWrite( 9 , LOW ); digitalWrite( 6 , LOW )

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

19、00); digitalWrite( 6 , LOW ); digitalWrite( 10 ,LOW ); analogWrite( 9 , 100 ); delay( 50 );getstr=Serial.read(); if(getstr=1|getstr=2|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 ,

20、HIGH ); digitalWrite( 10 , LOW ); getstr=Serial.read(); 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 ); digitalWrite( 9 , LOW ); getstr=Serial.read();

21、 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 ); digitalWrite( 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=

22、8|getstr=9|getstr=0) a=getstr;右转功能实现: while(a=8)/右转 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)/原地旋转 digital

23、Write( 5 , LOW ); digitalWrite( 6 ,HIGH ); digitalWrite( 9 , HIGH ); digitalWrite( 10 , LOW ); getstr=Serial.read(); if(getstr=1|getstr=2|getstr=3|getstr=4|getstr=5|getstr=6|getstr=7|getstr=8|getstr=0) a=getstr;停止功能实现:while(a=0)/停止 digitalWrite( 6 , LOW ); digitalWrite( 5 , LOW ); digitalWrite( 9 ,

24、LOW ); digitalWrite( 10 , LOW ); getstr=Serial.read(); if(getstr=1|getstr=2|getstr=3|getstr=4|getstr=5|getstr=6|getstr=7|getstr=8|getstr=9) a=getstr;六、 调试结果执行结果为随压缩包附上的视频,在此不便过多赘述。七、 课设心得与感想 在这次课设中,出力最大的当属组长聂刚,一开始茫无头绪的时候最先动手进行尝试的就是聂刚同学,在编写各部分功能代码时,很多问题和bug也都仰赖了他的帮助。尽管由于器材原因,我们未能完成超声波测距相关功能,两轮的电机自然差速也非常大,但是我们依然尽到了我们最大的努力去完成这次实验。

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 初中资料

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁