1、合肥学院2015届 毕 业 论 文(设计)论文(设计)题目基于距离感知的自动跟踪玩具小车系统的设计与实现院系名称计算机科学与技术系专业(班级)计算机科学与技术2011级本科1班姓名(学号)俞林峰 (1104013013)指导教师肖 连 军 系负责人袁 暋 完成时间2015-5-10 基于距离感知的自动玩具小车系统的设计实现中 文 摘 要随着时代的不断发展进步,上班族越来越多,家长基本没多少时间陪他们的小孩玩耍,买智能玩具也许就会成为好多家长送给小孩的最大安慰,如今玩具车的智能化已经越来普遍,对于距离感知的玩具也是多不胜数,基于距离感知的自动跟踪玩具车由此诞生。可以给那些天真可爱的小孩带来无穷无
2、尽的乐趣。本设计下位机系统是一个52单片机作为控制核心,所使用的CPU型号为STC12C5A60S2,配合传感器有一个超声波传感器HC-SR04,2个红外循迹传感器LM393,还有一个结合2路电机驱动和电源稳压模块于一体的模块,其中双电机驱动模块采用的是全新原装L298N驱动芯片,稳压模块采用的是稳压精度高的5V稳压块AMS1117-5V,还有舵机Futaba S3003用来全方位的距离感知,小车的控制机构由两个直流电机以及L298N驱动芯片组成的两驱四轮小车,这样直流电机的输入口可由STC12C5A60S2的IO口直接控制。基于以上传感器设计的小车,结构简单成本较低,设计的空间巨大,在玩具市
3、场占据较大份额,所以相关设计较多,取材容易。还有其他领域对超声波传感器应用的比较广泛,未来玩具智能化是必然的社会趋势!关键词:STC12C5A60S2;传感器;舵机;距离感知Design and implementation of automatic toy car system based on distance perceptionABSTRACTWith continuous development and progress of the times, more and more office workers, parents didnt much time to accompany t
4、heir children to play, buy a smart toy might become a lot of parents to give children the greatest comfort, now intelligent toy car has become widespread, the perceived distance toy is numerous, based on the perceived distance automatic tracking toy car was born.For thoselovelychildbroughtinexhausti
5、blefun.This is perhaps theultimate purposewhysome parentsalwaysbuy somefuntoys for theirchildren!The design ofthe lower computer systemis a 52 microcontrolleras the control core,the use ofCPUmodel for STC12C5A60S2,with thesensor hasan ultrasonic sensor HC-SR04,2infraredtracking sensorLM393,and acomb
6、ination of2motor drive andpower supplymodulein onemodule,thedual motor drivemodule adopts thenew original L298Nthe driver chip,using the 5Vvoltageregulator moduleblock AMS1117-5Vhigh precision regulator,andsteering FutabaS3003 used tothe full range ofdistance perception,control mechanism ofcaris com
7、posed of two DC motorsand L298N driverchip consists oftwo drivefourwheel car,soDC motorcan be directly controlledby the STC12C5A60S2input portIO port.Based sensor design of car, simple structure, low cost, space design great. In the toy market occupies a larger share of, so many related design, draw
8、ing is easy.There are other areasofultrasonic sensorsare widely applied,the futureof intelligenttoysisan inevitable trend ofsociety!KEY WORDS: STC12C5A60S2;Sensors; Steering engine;目 录中文摘要IAbstractII目 录III第一章 绪论11.1课题的背景和意义11.2系统的设计与基本组成1第二章 Android蓝牙开发与移动控制的设计与实现32.1 Android系统简介32.2 Android蓝牙开发32.2
9、.1 Android蓝牙编程32.2.2 蓝牙设备搜索界面设计与实现52.3 移动控制界面设计与实现82.4 指令发送与数据包接收的实现11第三章 下位机与控制机构的设计与实现133.1单片机的简介133.2 52单片机硬件结构133.3 单片机基本电路设计153.4 下位机硬件设计与连接163.4.1 环境感知传感器的选择与设计173.4.2 环境感知传感器的硬件连接223.4.3 小车的运动控制机构设计233.4.4 蓝牙模块的使用233.5 下位机程序设计253.5.1 程序的主要组成部分253.5.2 程序文件的结构28第四章 系统整体调试294.1 上位机程序调试294.2 下位机调
10、试294.2.1 硬件调试294.2.2 软件调试31第四章 系统测试与分析324.1 测试过程324.2 测试结果324.3 结果分析35结 论36参考文献37致谢3848合肥学院计算机科学与技术系毕业论文第一章 绪论1.1课题的背景和意义如今上班族的社会化,导致好多小孩一个人在家,或者与自己的父母相处的机会少,有些父母就通过购买一些心仪的好玩的玩具给他们的小孩,以弥补自己没事时间陪自己的小孩玩耍的快乐,近年来,玩具智能化,人性化越来越成为大众主流产品,基于距离感知的追踪小车应运而生,给市场玩具带来了生机,也是如今玩具市场的一次革命!中国的留守儿童高居世界第一,国家也一直把未来祖国的花朵教育
11、和身心健康安全作为工作之重,所以给予了高度的关注。在我国好多儿童动画片都会推出相应的玩具以满足如今的小孩对玩具快乐的追求,智能追踪小车的设计与实现对那些好奇心比较强的小孩尤为热门,因为玩具小车的每一个反应都是和他有关系的,小孩前进,小车跟着前进,小孩后退小车也跟着后退,小孩转弯小车跟着转弯,始终对小孩的行为作出相应的反应,趣味性极强,同时可以开发小孩的无限想象空间,无意识的对小孩大脑的开发起到关键的作用,尤其是好奇心重的小孩,可以说非常适合那些上班族买个小孩玩具的不二之选,小车追踪的设计对玩具市场和开发小孩脑力具有重要的推动作用,具有非常重要的意义。1.2系统的设计与基本组成本小车系统的具体设
12、计思路非常简单,控制芯片选用型号为STC12C5A60S2的常用单片机,传感器主要用到超声波传感器HC-SR04和红外循迹传感器E18-D50NK,还有一个舵机伺服器Futaba S3003,还有一个电机驱动模块L298N和稳压模块78M05集成在一起的模块,以下下统一称为电机驱动模块,基本设计思路非常简单,2个外循迹传感器E18-D50NK分别安装在小车最前端的左右两边,用来感知前方物体的方位,通过细心的调试,可以确保能感知前方的物体一致性,正确性!超声波传感器HC-SR04安装在舵机伺服器Futaba S3003的转盘上上面通过舵机转盘的不断左右扫描带动超声波不断的对前方的物体位置加以再次
13、的判断和却认达到更加精确的作出相应的反应,最后将单片机对信号的处理结果用软件语言组织起来通过IO口驱动电机转动作出正确的相应,可以画出系统组成框图如下图1-1所示:单片机超声波传感器左电机红外循迹传感器1电机驱动模块红外循迹传感器2右电机舵机转向图1-1 系统组成结构图其中,电机驱动模块还是整个系统供电模块,供电能力远远满足系统所需功率的最大要求。第二章 系统分析2.1 系统需求分析对本系统整体思路的考量可知,发现玩具小车在开发小孩智力方面有着非常重要的作用。就像某某公司做出来的一款可以跟小孩捉迷藏的玩具一样是非常有意义的,纵观本课题系统设计可知,主要具备的功能有一下几点:(1)小车可以根据小
14、孩的前后移动,自然的作出前进后退的动作(2)小车还可以根据小车的左右移动,小车还可以根据移动方位判断是左转弯还是右转弯,而且要具有灵活的相应。(3)小车的设计一定要美观,可观赏性强。一个基本的距离感知小车系统必须具备上述几个功能。2.2 系统可行性分析小车的设计可以根据不同的功能选用相应的器件,首先,由小车可以前进后退,还能停止可知,小车必须具有对具体距离可以探知的能力,一般的光电开关只能在距离调节好之后对固定的距离作出相应,就是要么距离大于设定的距离要么小于设定的距离,只有两种状态,而本设计有3种判断状态,分别是前进停止后退,所以选一般的循迹开关,光电开关是不行的,在这种情况下我们选择了超声
15、波传感器HC-SR04,作为距离的精确探知。本想设计成由三个HC-SR04组成的能带转弯控制的,结果调试发现有好多不确定因素,而且抗干扰能力差,就是一个超声波传感器的发射波可能作为另一个传感器的接收器的接受信号,导致对具体距离的测量有误,从而导致小车作出错误的相应,再次设计背下选用不同的传感器进行左右感知的光电开关应运而生,在网上查阅相关的资料最后选用了E18-D50NK,具有很强的距离感知能力,光电开关左右各放一个而且呈现八字型摆放,抗干扰能力还是很强的。对于其它基本功能的实现,传感器对距离感知信号可由51单片机DIP40的,然后做数据处理。51单片机的程序开发很方便,而且可用资源较多,完全
16、具有开发下位机的能力。2.3 开发环境简介上位机程序属于Android应用程序的开发。Android程序开发环境目前比较流行的是Eclipse,这个软件的功能强大,并且可以将不同版本的Android的API集成。本次设计上位机程序开发用到的环境就是Eclipse。下位机程序主要是51单片机的程序开发。51单片机的开发环境一般都是keil,本次开发环境为keil uVision4,keil开发51单片机程序时可以使用汇编或者C51语言,本次使用的是C51,因为汇编程序需要了解不同单片机的指令集,而C51不需要,会更方便。第二章 舵机扫描测距与移动控制的设计与实现2.1 舵机模块设计实现2.1.1
17、 舵机系统简介舵机又名伺服电机, 最早用于大型船舶上实现其转向功能, 由于可以通过程序编程连续控制其转动角度,因此被广泛设计应用智能小车玩具以实现转向以及多控机器人各类关节运动中。 图2-1 舵机用于智能机器人本设计舵机是小车转向带动超声波扫描的控制机构,具有体型小、力矩大、小车外部机械设计简单、小车稳定性高等特点, 无论是在硬件小车设计还是软件编程设计, 舵机设计是小车控制扫描部分重要的组成部分,图 2-1 为舵机的外形图。图2-2 舵机外形图 2.1.2舵机组成: 一般来讲,私服舵机主要由以下几个部分构成,舵盘、减速齿轮组、位置反馈电位计、直流电机、控制电路等,如图 7、图8 所示 图2-
18、3 舵机的组成示意图 图2-4 舵机组成私服舵机的输入线总共有三条,如图 2-5 所示,红色信号线中间,是舵机电源线,一边黑色的是舵机地线,这两根供电线给舵机提供最基本的电保证,主要是小型电机的转动消耗。电源电压有两种规格,一种是 4.8V,另一个是 6.0V,分别有不同的转矩标准,即输出力矩大小不同,6.0V 对应力矩的要大一些,更强劲一些,具体看应用条件(本设计舵机用来带动超声波来回转动扫描,对转动力矩的要求没有那么高,4.8V就足够了);另外一根信号线是控制信号线,Futaba 的一般为白色的,JR 的一般为桔黄色信号线。另外要值得注意的是,SANWA 的有些型号的舵机引线电源线在排线边
19、上而不是中间,使用的时候需要辨认,不要搞错。但记住一般红色为电源线,黑色为GDN地线,一般都是这样设计的。下图2-5为输出线的实物图和信号线的说明: 图 2-5 舵机的输出线2.1.3舵机工作原理 舵机内部控制电路板模块接受来自信号线PWM的控制信号,控制小型电机转动, 电机带动一系列的齿轮组,减速后传动至舵机输出舵盘。私服舵机的输出轴与位置反馈电位计是相连通的,私服舵盘转动的同时,也带动位置反馈电位计变化,电位计同时将输出一个模拟电压信号到舵机控制电路板中,进行负反馈作用, 然后控制舵机电路板根据所在方位决定电机输出转齿转动的方向和速度变化, 从而达到转动目标的角度停止。 其一般工作流程为:
20、控制信号输入控制电路板接受导致电机转动齿轮组减速传动导致舵盘转动位置反馈电位计协调控制电路板反馈作用。最终达到转动某一个角度的目标!2.1.4舵机选购市场上的私服舵机有塑料齿的、标准尺寸的、小尺寸的、金属齿的、大尺寸的,另外还有很薄的标准尺寸舵机用在一些特殊的场合,及低重心的型号特殊型号。小舵机一般被称为微型私服舵机,扭力都相对较小,市面上所见到的 2.5g,3.7g,4.4g,7g,9g 等私服舵机指的是私服舵机的重量分别是多少克重,相应的体积和扭力也是逐渐增大的。微型私服舵机内部大多数都是塑料齿的,9g 私服舵机有金属齿的型号也有塑料齿型号的,扭力一般比塑料齿的要大些。型号为:futaba
21、S3003和辉盛 MG995 是标准私服舵机,体积与标准的差不多, 但前者是塑料齿的, 后者金属齿的, 两者标称的扭力也差很多的。 春天 sr403p和Dynamixel AX-12+是机械机器人专用私服舵机,不同的是前者是国产的,后者是韩国生产的,两者都是金属齿的标称扭力 都在13kg 以上,但前者国产只是改改样子的模拟私服舵机,后者则是RS485 串口通信控制,具有位置反馈电路,而且还具有速度反馈功能与温度反馈功能的数字私服舵机,两者在性能以及价格上相差很大的。除了体积外,外形和扭力也有不同选择,私服舵机的反应速度以及虚位也要考虑进去,一般私服舵机的标称反应速度常见为 0.22 秒/60和
22、0.18 秒/60,有些 好些的舵机有 0.12 秒/60等的,数值越小反应就快。厂商所提供的私服舵机规格资料中, 一般都会包含有外形尺寸大小(mm)、 扭力(kg/cm)、 速度(秒/60)、测试供电电压选择(V)及私服舵机重量(g)等基本参考资料。扭力的基本单位是 kg/cm,意思是在摆臂长度为 1 CM处时,能吊起多少公斤重的物体。这就是力臂大小的观念,因此摆臂长度愈长,就会导致扭力愈小。速度的单位一般是 sec/60,意思是舵机转动 60所需要 的 作用时 间 。 电 压 也会 直 接 影 响 舵 机 转动的 性 能 , 例如 Futaba S-9001 在 4.8V 时平均扭力在为3
23、.9kg/cm左右、速度平均为 0.22 秒/60,在 6.0V 时扭力平均为 5.2kg/cm、速度平均为 0.18 秒/60 。若无特别注明,JR 的私服舵机都是以 4.8V 为供电测试电压,Futaba 则是以 6.0V 作为供电测试电压。速度响应快、扭力很大的舵机,除了价格贵外,还会伴随着高耗电的特点。因此在使用高级的舵机时,一定必搭配高品质的、高容量的好电池,能提供稳定且充裕的电量。如今市面上的私服舵机鱼龙混杂,总的来说仿品不如正品好,便宜的不如贵的好,塑料齿的不如金属齿的好,老的不如新的好,国内的不如外国的好等等,大家不必过于追求极致根据自身的设计满足要求即可,根据自身购买力选择够
24、用的就行了。2.1.5 舵机控制原理及编程方法2.1.5.1、供电说明:常用私服舵机的额定工作电压一般为 6V,可以使用 LM1117 等稳压芯片提供 6V 的电压,如果为了简化硬件电路的设计直接使用 7805稳压芯片稳压5V 的供电影响也不是很大,但最好与单片机进行分开的供电,否则会造成单片机无法正常工作。因为私服舵机启动电流很大会影响同一个电路中的电流变化!2.1.5.2、 PWM信号连接说明:一般来说可以将私服舵机信号线连接至52单片机的任意引脚, 对于 52 单片机需通过定时器模块输出 PWM 才能进行控制转动。但是如果连接电路像飞思卡尔之类的芯片那样, 由于飞思卡尔内部带有 PWM
25、模块控制, 可以直接输出 PWM 信号大小, 此时应将PWM信号线连于专用的 PWM 输出引脚上。2.1.5.3、控制原理 : 舵机的控制信号周期为 S为 20MS 的脉宽调制 ( PWM ) 信号 , 其中脉冲宽度( ( 占空比) )从 0.5- - 2.5MS, 与之相对应的舵盘位置为 0 180 度 , 呈线性的变化 。 即私服舵机控制转动时 , 需要给周期为 S 为20MS 的 PWM( 方波) ) 信号输入 , 改变脉冲宽度变化( ( 占空比) ) ,就可以改变其转动的角度 变化。下图2-6即为对应的PWM信号所对应的相应转动的角度。图 2-6 舵机输出转角与输入脉冲的关系2.1.5
26、.4、编程产生PWM信号的方法: 由于52单片机不像飞思卡尔那些更加高端的控制芯片有自己单独的引脚来专门产生PWM信号,所以52单片机只能通过定时器来模拟产生相应的所需求的PWM信号,以下软件编程定时器产生一个5MS的定时,每隔5MS产生一个中断,通过中断处理子函数编程控制达到PWM的产生!/*- 定时器01初始化-*/void TIM0init(void)TMOD|=0x11;/定时器1工作方式1 (超声波),定时器0私服舵机TH1=0x00; TL1=0x00; TH0=0xff; TL0=0xa3;/11.0592MHz晶振,0.5ms ET1=1; ET0=1; EA=1; TR0=1
27、;/定时器开始 IE=0x82;中断处理函数产生相应的PWM,其中定义单片机引脚sbit pwm=P02;/PWM信号输出口,所以单片机P0.2会产生一个随角度标识angle值变化的PWM信号,从而达到控制控制小车私服舵机转向的目的!void Time1_Int() interrupt 1/舵机TH0=0xff; /定时器0高位重新赋值,因为定时中断溢出导致寄存器的值清零TL0=0xa3; /低位if(count X秒=0.0058*Y米 - 厘米=微秒/58 if(S=25) /如果测量的距离大于25厘米 n=1; /标志位n值赋值1,响应结果是控制小车前进 if(S20) /如果测量的距离
28、在20-25CM之间 n=0; /标志位n值赋值0,响应结果是控制小车停止 If(S20) /如果测量距离小于20厘米 n=-1; /标志位n值赋值-1,响应结果是控制小车后退 TH1=0; TL1=0;/清除定时器0寄存器中的值用于下一次的再次测量超声波传感器测距的主要作用是用来通过测量小车与物体之间的距离,从而判断小车是前进,后退,还是停止!2.3 小车的移动设计与实现小车的移动设计离不开电机驱动模块对电机的驱动所以有必要介绍一下小车的电源模块和小车的电机驱动模块,由于这两个模块是集成在一起的以下统称为电机驱动模块!2.3.1电机驱动模块简介本设计选择的 L298N 驱动模块,采用 ST
29、公司生产的原装全新的 L298N 芯片,采用SMT进口工艺稳定性高,采用高质量的铝电解电容,使电路更加稳定工作。可以直接驱动2路 3-16V 的直流电机,并提供了稳压5V 输出接口(输入最低只要 6V) ,可以给 5V 52单片机系统供电 (低纹波系数) ,可以很方便的控制直流电机速度和方向,也可以控制两相步进电机,五线四相步进电机,是智能小车必备利器。2.3.2电机驱动模块实物介绍L298N电机驱动芯片左电机OUT1OUT2右电机OUT3OUT4从左到右依次为5V,GND,电池+7V从左到右依次为IN4,IN3,IN2,IN1 图2-11电机驱动模块OUT1 ,OUT2 连接左电机OUT3,
30、 OUT4 连接右电机VDD 和 GND 连接电池或是外部供电 (注意充电电池,正负一定不能接反了,一接反会烧掉模块,即 VDD 接电池正极,GND 接电池的负极)78M05 图2-12 驱动模块原理图 2.3.3控制电机设计与编程 IN1 IN2 IN3 IN4分别与单片机IO口相连。 只要置相应单片机机IOIN1 =0 ; IN2=1对应电机即可正转转IN1 =0 ; IN2=0对对应电机即可反转同理:IN3 =0 ;IN4=1对应电机即可正转IN3 =0 ;IN4=0对应电机即可反转下面是软件编程实现电机正反转以及停止:sbit in1=P14;sbit in2=P15;sbit in3
31、=P16;sbit in4=P17; 定义电机驱动对应的管脚,实现单片机IO控制 void go()/前进in1=1;in2=0;in3=1;in4=0;前进过程控制只需要将IN1 IN3置1,IN2和IN4置0即可void back()/后退in1=0;in2=1;in3=0;in4=1;后退过程控制只需要将IN1 IN3置0,IN2和IN4置1即可,与前进刚好相反!void turnleft()/左转in1=0;in2=1;in3=1;in4=0;左转控制就是左边电机前进转,右边电机后退转,导致一个整体的左转效果!void turnright()/右转in1=1;in2=0;in3=0;i
32、n4=1;右转控制就是右边电机后退转,左边电机后前进转,导致一个整体的右转效果!void stop()/停车in1=0;in2=0;in3=0;in4=0;停车函数的设计实现是将4个信号都拉低,导致两个电机都不转,最后导致停车的效果!2.4 小车的转向设计与实现前面已经设计了小车的前进与后退的移动设计,还差一个转向检测控制,那用什么来实现呢?经过反复的斟酌与筛选最后选择了用两个红外循迹传感器来检测物体的左右移动,下面来具体的介绍!2.4.1红外循迹传感器简介+5V 信号指示灯可调电阻发射管接收管电源指示灯GND信号 图2-13 LM393 红外传感器模块实物说明2.4.2 LM393 红外传感
33、器模块检测原理检测原理为当发射管照射在黑白分明的物体时 ,由于黑色吸光作用 ,当红外发射管照射到黑色物体上时导致反射回来的光就较少 ,导致接收管接收到的红外光就较少 ,表现为电阻大变大 ;同理 ,当照射在白色物体时发射的红外线就比较多 ,表现为 接收管的电阻变小,此时通过其他电路就把电阻变化信号变成大小不一电压变化信号 然后通过一个比较器转换成 相应的高低电平信号,再将此送到52单片机的 I/O 口 , 单片机就可以判断是物体靠近还是远离 , 进而完成相应的检测功能 ,如循迹 、避障等2.4.3原理图说明及编程须知 图2-14 红外循迹传感器原理图根据上面原理图 , 循迹 时 , 当照在 白色
34、路面( ( 避障 时为前方 有障碍物) ) , out 输出低电平0, 指示灯亮; ; 当照在 黑色路面( ( 避障 时为前方 无障碍物) ) , out 输出高电平1 。2.4.4传感器的安装调试 左右对称安装固定传感器后 , 须对两个传感器进行调试. 方法为: 小车头部的2对红外对管分别照射在物体上,移动物体,测量距离 调节滑动变阻 当照射在白色物体时 , 信号指示灯亮 ( 低电平 ), 照在黑色物体时指示灯熄灭即可 2.4.5软件编程与实现sbit y=P34;/定义单片机连接循迹板右边光电管的引脚sbit z=P35;/定义单片机连接循迹板左边光电管的引脚void zuo()/左右轮协
35、同左转子函数you1=1;you2=0;zuo1=0;zuo2=1;delay(10-5);/pwm调速you1=0;you2=0;zuo1=0;zuo2=0;delay(5);void you()/左右轮协同右转子函数you1=0;you2=1;zuo1=1;zuo2=0;delay(10-5);/pwm调速you1=0;you2=0;zuo1=0;zuo2=0;delay(5);while(z=0)&(y=1)/判断当左边光电管遇到障碍,zuo();/调用左转函数前进过程中while(z=1)&(y=0)/判断当右边光电管遇到障碍,you();/调用右转函数前进过程中左右转向控制还有一个逆
36、向过程就是在超声波在检测到距离小于一定的距离时,小车处于后退状态是调用的左右后转函数要换过来!下面会有具体的软件设计!第三章 软件的设计与实现3.1单片机的简介单片机从上个世纪70年代创造出来以后,因其极高的性价比和可操作性受到了人们的高度重视和关注,所以各种单片机的发展速度很快,应用也很广泛。单片机的优点有重量很轻,体积很小,抗干扰能力很强,价格也很便宜,可靠性很高,灵活性很好,开发起来较为容易。可操作性比较强!那单片机具体是什么呢?个人理解为单片机就是在一块半导体硅片上把CPU,各种存储器,引脚I/O等集成在一起成为一块可控芯片,其中,CPU是单片机执行各种指令进行控制和运算的核心,存储器是协调CPU存储相关信息的部件,单片机与外部设备之间的控制及数据传输是通过引脚I/O实现的。别看这块芯片很小,但是它具备了计算机所需的大部分属性,因此其也被称为单片微小型计算机。3.2 52单片机硬件结构本次小车设计使用的是52系列的单片机。在使用52单片机前必须要了解52单片机内部硬件相关结构,其结构图总图如下图3-1: ROM/EPROM微处理器(运算器)(控制器)特殊功能寄存器(SFR)数据存储器RAMP0P2程序存储器88串行口P1定时器/计数器中断