蓝牙小车作品展示_第1页
蓝牙小车作品展示_第2页
蓝牙小车作品展示_第3页
蓝牙小车作品展示_第4页
蓝牙小车作品展示_第5页
已阅读5页,还剩20页未读 继续免费阅读

下载本文档

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

文档简介

1、河南理工大学电器开发部电子作品设计报告题目:手机控制的蓝牙小车2015年 4月24日摘要本设计是做成这样的一款蓝牙小车,灵感来自于无线电-一本偶然碰到的书,书中对车的制作勾起了我对童年的回忆。我曾经玩 过四驱赛车,也玩过遥控车,但还没有玩过通过手机便可控制的蓝牙 小车,所以头脑发热从京东上买了一辆小遥控车决定自己改装一下。 当各种模块都做好之后,我先仔细研究了几天L298N电路原理,然后我下载了好几种手机蓝牙软件通过比较确定了一款好用的。然后我对51单片机最小系统进行了简化,只留下了晶振电路,这样不仅不 影响整体功能的实现,也减少了投入成本和工作量。通过改装买来的遥控小车,将其遥控设备用手机蓝

2、牙代替, 将从 360助手上下载的蓝牙小车软件作为上位机,将拥有hc06蓝牙模块的蓝牙小车作为下位机,将 L298作为小车的电机驱动。可以实现小 车的前进、后退、左拐、右拐、刹车、重力感应、加速、减速等功能。 做完这件作品我的收获有很多,对单片机的一些知识有了更深一步的 理解。同时给了我一种畅想,我畅想着未来我们将会用手机控制我们 所有的家用电器,不再需要那么多的遥控器了,我们的生活将会更便 捷。这也是我的梦想,用科技改变生活。目录1概述42系统总体方案及硬件设计52.1 L298N 电机驱动模块 52.2 HC06 蓝牙模块说明52.3 最小系统板说明53课程设计体会6附1:源程序代码7附2

3、:系统原理图231概述通过改装买来的遥控小车,将其遥控设备用手机蓝牙代替, 将从 360助手上下载的蓝牙小车软件作为上位机,将拥有hc06蓝牙模块的蓝牙小车作为下位机,将 L298作为小车的电机驱动。可以实现小 车的前进、后退、左拐、右拐、刹车、重力感应、加速、减速等功能。在我眼里没有完美的东西,只有更完美的东西,而快乐就在追 求完美的路上。小车能动后我发现从网上下载的程序有错误,导致小车的左拐右拐相反,并且前进后退都会拐弯,没有加速减速。这样的 作品我怎么能拿的出手?刚好那时电开给我们培训中断,定时器等内容,再加上寒假我学了点C语言,便对程序进行了大刀阔斧的改革。 终于前进后退左拐右拐正常了

4、,可加减速怎么办呢?之前通过学长我 稍微了解了 pwm,随后我对pwm的原理深入了解了一下,我先通过 借用延时函数模拟pwm让led灯渐亮渐灭随后我应用到直流电机上, 结果,成功了!当然对于目前的作品,我还是觉得不太完美,我准备 再给他加上转向灯、喇叭甚至更多功能。做完这件作品我的收获有很多,对单片机的一些知识有了更深一 步的理解。同时给了我一种畅想,我畅想着未来我们将会用手机控制 我们所有的家用电器,不再需要那么多的遥控器了,我们的生活将会 更便捷。这也是我的梦想,用科技改变生活。2系统总体方案及硬件设计2.1 L298N电机驱动模块298n是直流电机驱动集成电路,内部包含4通道逻辑驱动电路

5、,可 以方便地驱动两个直流电机,或一个两相步进电机。1298n可接受标准ttl逻辑电平信号vss , 9脚vss可接4.5 7v的电压。4脚vs接电 源电压,vs电压范围vih为+ 2.546v2。1脚和15管脚下的发射 极分别单独引出以便接入电流采样电阻,形成电流传感信号。1298可驱动2个电动机,此时outl , out2和out3 , out4之间可分别接电 动机。5、7、10、12脚接输入控制电平,控制电机正反转;ena ,enb脚接控制使能端,控制电机的停转3。l298n采取输入输出并联的连接方式,即in1与in4 (5脚和12 脚)、in2 与 in3 (7 脚和 10 脚)、ou

6、t1 与 out4 (2 脚和 14 脚)、 out2与out3 (3脚和13脚)分别连接在一起。(电路图见附录 2)2.2 HC06蓝牙模块说明本作品使用的是hc06从机,设置其波特率为96002.3最小系统板说明经过多次修改简化本作品只使用了晶振电路,这样不仅对作品的功能没有影响而且减少了成本与工作量。(电路图见附录2)3课程设计及体会做成这样的一款蓝牙小车,灵感来自于无线电-一本偶然碰 到的书,书中对车的制作勾起了我对童年的回忆。 我曾经玩过四驱赛 车,也玩过遥控车,但还没有玩过通过手机便可控制的蓝牙小车,所 以头脑发热从京东上买了一辆小遥控车决定自己改装一下。买回来的当天我就把它拆了(

7、一副很败家的样子)。当时我对单片机知识还是 零基础,对于串口、中断、定时器什么的都不懂,于是我就去问负责 我的学长,我说:“我要做这么个车,但我对单片机还什么都不懂, 你说我可以吗?”他说:“赶紧做吧,做好的话就可以进实验室了。 ” 激情再一次被点燃,本来只想自己做个玩的,没想到做好还能进实验 室,下定决心get it!从图书馆借了基本单片机入门的书,便疯狂的搞 起。做完这件作品之后我的收获有很多,首先我对单片机的一些知识 有了更深一步的理解。同时给了我一种畅想,我畅想着未来我们将会 用手机控制我们所有的家用电器,不再需要那么多的遥控器了,我们 的生活将会更便捷。这也是我的梦想,用科技改变生活

8、。成功的道路是被无数的失败铺就的。当各种模块都做好之后,我 迫不及待的将它们连接起来,连接蓝牙之后却发现小车没像预想的那 样动起来。我百度了蓝牙模块的连接方式后发现 RXD与TXD应交叉 连接,交换之后,还是不能动。我又仔细研究了几天L298N电路原理,发现原来自己的电路驱动连接有错误,改过之后小车还是没反应, 再次陷入绝望。我又怀疑是不是手机软件的是我又换了好几个软件, 都不行。持续一个星期没有任何进展。有一天我在单片机上的txd上加了一个上拉电阻,小车奇迹般的动了,我简直欣喜若狂,赶紧跑到 实验室告诉丁柯学长,可到实验室怎么连蓝牙也连不上。 沮丧地又回 到宿舍研究了一下午用万用表测量到底哪

9、的问题,可什么也没发现。我又一次绝望。躺在床上想既然能动一次就一定能再动一次。 我要从 头再来!我把原来的最小系统板扔掉,重新再焊一个,这次我把复位 电路甩掉,只留下晶振电路,重新连接,这一次没再让我失望蓝牙连 接非常顺利。在我眼里没有完美的东西,只有更完美的东西,而快乐就在追求 完美的路上。小车能动后我发现从网上下载的程序有错误, 导致小车 的左拐右拐相反,并且前进后退都会拐弯,没有加速减速。这样的作 品我怎么能拿的出手?刚好那时电开给我们培训中断,定时器等内 容,再加上寒假我学了点C语言,便对程序进行了大刀阔斧的改革。 终于前进后退左拐右拐正常了,可加减速怎么办呢?之前通过学长我 稍微了解

10、了 pwm,随后我对pwm的原理深入了解了一下,我先通过 借用延时函数模拟pwm让led灯渐亮渐灭随后我应用到直流电机上, 结果,成功了!当然对于目前的作品,我还是觉得不太完美,我准备 再给他加上转向灯、喇叭甚至更多功能。*作品名称:蓝牙小车*作者:王怀江(新加入刘丁柯)*功能:实现通过手机蓝牙控制小车*#i nclude #in elude #defi ne uchar un sig ned char#defi ne uint un sig ned int uchar Buffer 10 = 1;从串口接收的数据sbit en1 =P2A4;/* L298的 Enable A */sbit

11、en2 =P2A5;/* L298的 Enable B */sbits1 =P2A0;/* L298的 In put 1*/sbits2 =P2A1;/* L298的 In put 2*/sbits3 =P2A2;/* L298的 In put 3*/sbits4 =P2A3;/* L298的 In put 4*/uchart :=0;/*中断计数器*/uchar m1=0;/*电机1速度值*/uchar m2=0;/*电机2速度值*/uint i,j;uchar tmp1, tmp2;/*电机当前速度值 */* 参数范围:1us65535us(0.001ms65.535ms)* 运行环境:S

12、TC1232.000MHz*最大误差:0.00%*作者日期:电器开发部-(2015-2-23)函数功能:微秒级精确延时*/# pragma optimize(4, SPEED)附1源程序代码*void delay_us( un sig ned int n)exter n void _n op_(void);register un sig ned char i = n, j = (n 8);_nop_(); _ nop_(); _ nop_();if (-i) | j)do_n op_(); _ nop_(); _ no p_(); _ nop_(); _ nop_(); _ nop_(); _

13、nop_(); _nop_();if (OxFF = (i-) j-; else _n op_(); _inop_(); _ nop_(); _ nop_(); _ nop_(); _ nop_(); while (i | j);/*毫秒延时函数*/void delay_ms( un sig ned int n) while (n-) delay_us(1000);*名称:Init()系统初始化*功能:初始化,晶振11.0592,波特率9600,使串口中断,同时定时器0控制PWM ?*输入:无*输出:无*/void In it()TMOD = 0x22;/T/c方式寄存器PCON = 0x00

14、;/电源控制寄存器SCON = 0x50;/UART串口控制寄存器,此处为10位异步收发TH0 = 0x9b;高八位TL0 = 0x9b;/低八位TH1 = 0xFd;设置波特率9600TL1 = OxFd;T/c1计数寄存器低八位TR1 = 1;ET0 = 1;/*启动定时器1/* ET0时定时计数器0溢出中断允许控制位ET1时定时计数器1溢出中断允许控制位*/开串口中断/开总中断m1 = abs(speed);/取速度的绝对值(返回数字的绝对值)TR0 = 1;ES = 1;EA = 1;void motorL( char speed)if(speed 0)s1 = 0;s2 = 1;el

15、se if(speed = 0)s1 = 1;s2 = 1;elses1 = 1;s2 = 0;void motorR( char speed)m2 = abs(speed);/*电机2的速度控制*/if(speed 0)s3 = 0;s4 = 1;else if(speed = 0)s3 = 1;s4 = 1;elses3 = 1;s4 = 0; void GO(void)motorL(50);motorR(O);void BACK()motorL(-20);motorR(O);void TR(void)motorL(20); motorR(-20);void TL(void)motorL(

16、-20);motorR(20);void STOP(void)si = 1;s2 = 1;S3 = 1;s4 = 1;void SPEED1(void)通过不同的速度,实现加减速 s2 = 1; s3 = 1; s4 = 1;si = 0; delay_us(1);si = 1; delay_us(10000);void SPEED2(void)s2 = 1; s3 = 1; s4 = 1;s1 = 0; delay_us(100);s1 = 1; delay_us(1000);void SPEED3(void)s2 = 1; s3 = 1; s4 = 1;s1 = 0; delay_us(2

17、00);s1 = 1; delay_us(1000);void SPEED4(void)s2 = 1; s3 = 1; s4 = 1; s1 = 0; delay_us(300);si = 1; delay_us(100);void SPEED5(void)s2 = 1; s3 = 1; s4 = 1;si = 0; delay_us(400);s1 = 1; delay_us(100);void SPEED6(void)s2 = 1; s3 = 1; s4 = 1; s1 = 0; delay_us(500); s1 = 1; delay_us(100);void SPEED7(void)s

18、2 = 1; s3 = 1; s4 = 1; s1 = 0; delay_us(600); s1 = 1; delay_us(100);void SPEED8(void)s2 = 1; s3 = 1; s4 = 1; si = 0; delay_us(700); si = 1; delay_us(100);void SPEED9(void)s2 = 1; s3 = 1; s4 = 1;s1 = 0; delay_us(800);s1 = 1; delay_us(100);void SPEED10(void)s2 = 1; s3 = 1; s4 = 1;s1 = 0; delay_us(900)

19、;s1 = 1; delay_us(100);void SPEED11(void)s2 = 1; s3 = 1; s4 = 1;si = 0; delay_us(1000);si = 1; delay_us(100);void SPEED12(void)s2 = 1; s3 = 1; s4 = 1; s1 = 0; delay_us(1100);s1 = 1; delay_us(100);void SPEED13(void)s2 = 1; s3 = 1; s4 = 1;s1 = 0; delay_us(1200);s1 = 1; delay_us(100);void SPEED14(void)

20、s2 = 1; s3 = 1; s4 = 1; s1 = 0; delay_us(1300);void SPEED15(void)s2 = 1; s3 = 1; s4 = 1;si = 0; delay_us(1400);si = 1; delay_us(100);void SPEED16(void)s2 = 1; s3 = 1; s4 = 1; s1 = 0; delay_us(1500);s1 = 1; delay_us(100);void SPEED17(void)s2 = 1; s3 = 1; s4 = 1;s1 = 0; delay_us(1600);s1 = 1; delay_us

21、(100);void SPEED18(void) si = 1; delay_us(100);void SPEED19(void)s2 = 1; s3 = 1; s4 = 1; si = 0; delay_us(1900);s1 = 1; delay_us(100);void SPEED20(void)s2 = 1; s3 = 1; s4 = 1;s1 = 0; delay_us(2000);s1 = 1; delay_us(100);void SPEED21(void)s2 = 1; s3 = 1; s4 = 1;s1 = 0; delay_us(2100);s1 = 1; delay_us

22、(100);void SPEED22(void)s2 = 1; s3 = 1; s4 = 1;si = 0; delay_us(2200);si = 1; delay_us(100);void SPEED23(void)s2 = 1; s3 = 1; s4 = 1;s1 = 0; delay_us(2300);s1 = 1; delay_us(100);void SPEED24(void)s2 = 1; s3 = 1; s4 = 1;s1 = 0; delay_us(2400);s1 = 1; delay_us(100);void SPEED25(void)s2 = 1; s3 = 1; s4

23、 = 1;s1 = 0; delay_us(2500);void SPEED26(void)s2 = 1; s3 = 1; s4 = 1; si = 0; delay_us(2600);si = 1; delay_us(100);void SPEED27(void)s2 = 1; s3 = 1; s4 = 1;s1 = 0; delay_us(2700);s1 = 1; delay_us(100);void mai n(void)delay_ms(100);初始化In it();while(1)switch(BufferO)case 1: STOP();break;case 4: G0();b

24、reak;case 5: TL();break;case 7: BACK(); break;case 6: TR();break;case 0x7D:SPEED1(); break;case 0x82:SPEED2(); break;case 0x87:SPEED3(); break;case 0x8C:SPEED4(); break;case 0x91:SPEED5(); break;case 0x96:SPEED6(); break;case 0x9B:SPEED7(); break;case 0xA0:SPEED8(); break;case 0xA5:SPEED9(); break;case 0xAA:S

温馨提示

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

评论

0/150

提交评论