1、 《嵌入式系统设计》项目设计汇报 题 目: 基于蓝牙技术智能遥控小车设计 专 业: 自动化
2、 班 级: 姓 名: 学号: 指导老师: 成 绩:
3、 ( .12) 摘要 伴随汽车工业快速发展,相关汽车研究也就越来越受人关注。遥控小车起源于美国,因为政府对无线遥控小车研发资助和相关资助推进作用,日本、美国、德国等工业大国在遥控小车技术上占据着显著优势。中国无线遥控小车研究工作始于20世纪中后期,在国家863、973等技术发展计划关键支持下,中国已大范围地进行无线遥控小车研究。全国电子大赛和省内电子大赛几乎每次全部有智能小车这方面题目,全国各高校也全部很重视该题目标研究,不过和国际优异还存在一定差距。可见其研究意义很大。本设计就是在这么背景下提出。设计智能电动小车能够实现无线遥控,串口通讯,实时检
4、测速度,避障碍等功效。无线遥控实现方法包含蓝牙、红外、射频多个,其中蓝牙技术含有一定优势,现在在信息家电方面应用正在铺设。多种家电共用遥控,并可组网和公众互联网相接,共享受用信息。现在蓝牙技术实现无线遥控短板在于传输距离短和芯片价格高方面。但伴随科技发展,这些问题正在逐步得以处理。 无线遥控机器人有着宽广应用前景。 无线遥控小车,能够在危险环境作业,人员搜索,能够在各类领域中发挥着它特殊作用,此次设计是选择基于蓝牙遥控多功效智能小车为对象。控制系统以C51单片机为主控芯片,采取L298N为电机驱动芯片、HC-06蓝牙无线模块、12864液晶显示模块、四路循迹模块等组成外围扩展电路。将自制控
5、制电路、控制程序和四轮小车机械相结合,制作多功效智能小车。试验调试实现了智能小车蓝牙无线遥控、自动避障、自动测距及多种灯光功效。 关键词:51单片机;蓝牙遥控;智能小车 目录 摘要 1 1. 绪论 3 1.1课题目的 4 1.2课题研究内容 5 2 .方案论证 5 2.1 总体方案设计 5 2.2设计系统的功能要求 6 2.3 系统硬件方案 6 3.系统硬件设计 8 3.1STC89C52芯片简介 8 3.2 STC89C52最小系统 10 3.3电机驱动设计 10 3.4显示电路设计 11 3.5 蓝牙模块设计 12 3.6 PCB图
6、设计 13 3.7 智能车结构分析 14 3.7.1 底板设计 14 3.7.2电机与底板的连接支架设计 15 3..7.3整体装配图 15 4.系统软件设计 16 4.1系统的程序流程 16 4.2蓝牙模块参数设置程序 16 4.3蓝牙发送程序接收程序和中断程序 17 4.4自动避障及灯光声音控制程序设计 19 4.5液晶显示程序设计 21 5 . 调试结果分析 25 5.1蓝牙遥控调试及结果分析 25 5.2避障功能调试及结果分析 25 6.参考文献\ 附录程序 26 1.绪论 1.1课题目标 此次设计小车是含有没有线遥控功效。小车能够无人驾驶和人为
7、控制两种模式,能够随意控制小车前进后退,转向时有方向灯闪烁,前方有障碍物时,有自动报警功效,实现了自动控制。 1.2课题研究内容 此次设计蓝牙遥控小车要实现功效有基于安卓手机蓝牙遥控,能够让小车前进、后退、左转、右转,和重力感应控制小车切换为无人驾驶模式时,能够让小车自动驾驶,同时小车含有自动避障,转弯灯,报警灯和即时显示小车信息等功效。系统设计关键有两个部分,软件部分和硬件部分。软件部分:C语言编程和keil uVison4 软件。在硬件方面:采取STC89C52单片机。 2. 方案论证 2.1 总体方案设计 此次设计小车采取是以51单片机为主控制器,开始由手机发送蓝牙无线信号
8、来开启并复位小车,由四路循迹模块进行障碍检测,经过单片机控制小车行驶,显示,避障和转向,采取4wd驱动,以提升整车运动平稳性;最终经过蓝牙无线传输功效将智能车行驶信息实时地传给显示器,实现监控,也能够经过蓝牙无线来控制小车行驶状态。这就是此次总体设计思绪。该方案图2-2小车设计结构图所表示。 电机驱动模块 STC89C52 手动驾驶模式 蓝牙输入模块 液晶显示模块 方向灯蜂鸣器 图2-2-1 STC89C52芯片小车结构设计图1 电机驱动模块 STC89C52
9、 液晶显示模块 传感器模块 自动避障 自动驾驶模式 方向灯蜂鸣灯 图2-2-2 STC89C52芯片小车结构设计图2 2.2设计系统功效要求 蓝牙控制智能小车是基于STC89C52单片机实现。STC89C52简单易学,有丰富资源,让大家学习效率大大提升。 该基于安卓系统蓝牙小车功效是蓝牙控制,重力感应驾驶,自动避障,即时显示小车情况,报警灯转向灯等。 2.3 系统硬件方案 手机控制模式 图2-3系统结构框图所表示。 手机重力感应 手机方向键 蓝牙 STC89C52 电机方向 方向控制电路 驱动电机 驱动控制电路
10、 液晶显示 液晶显示电路 转向灯蜂鸣灯电路 报警灯 传感器 无人驾驶模式 图2-3 系统结构框图 在图2-3系统结构图中,STC89C52输入部分:安卓系统手机,蓝牙,切换为无人驾驶模式时为传感器;输出部分有:方向控制,驱动控制,液晶显示,灯光,此次小车为四轮驱动,能够前进,后退,转弯,转弯灯,避障报警灯,液晶显示小车即时情况 3系统硬件设计 3.1STC89C52芯片介绍 STC89C52是STC企业生产一个低功耗、高性能CMOS8位微控制器,含有 8K 在系统可编程Flash存放器。STC89C52使
11、用经典MCS-51内核,但做了很多改善使得芯片含有传统51单片机不含有功效。在单芯片上,拥有灵巧8 位CPU 和在系统可编程Flash,使得STC89C52为众多嵌入式控制应用系统提供高灵活、超有效处理方案。 STC89C52性能: 1. 增强型8051单片机,6 时钟/机器周期和12 时钟/机器周期能够任意 选择,指令代码完全兼容传统8051. 2. 工作电压:5.5V~3.3V(5V单片机)/3.8V~2.0V(3V 单片机) 3.工作频率范围:0~40MHz,相当于一般8051 0~80MHz,实际工作 频率可达48MHz 4. 用户应用程序空间为8K字节 5. 片上集成5
12、12 字节RAM 6. 通用I/O 口(32 个),复位后为:P0/P1/P2/P3 是准双向口/弱上拉, P0 口是漏极开路输出,作为总线扩展用时,不用加上拉电阻,作为 I/O 口用时,需加上拉电阻。 7. ISP(在系统可编程)/IAP(在应用可编程),无需专用编程器,无 需专用仿真器,可经过串口(RxD/P3.0,TxD/P3.1)直接下载用户程 序,数秒即可完成一片 8. 含有EEPROM 功效 9. 共3 个16 位定时器/计数器。即定时器T0、T1、T2 10.外部中止4 路,下降沿中止或低电平触发电路,Power Down 模式可 由外部中止低电平触发中止方法唤醒 1
13、1. 通用异步串行口(UART),还可用定时器软件实现多个UART 3.2 STC89C52最小系统 最小系统包含电源 复位电路和晶振电路。图3-2 STC89C52最小系统所表示。 图3-2 STC89C52最小系统 3.3电机驱动设计 此次设计采取L298N直流电机驱动芯片驱动模块最大工作电流为2A,且可同时驱动两个直流电机可满足如试验室两驱动和舵机转向小车使用,如为四驱小车,需使用两块。 3-3 电机驱动引脚图 3.4显示电路设计 此次设计采取12864液晶屏,液晶显示器显示质量高,因为液晶显示器每个店在收到信号就一直保持那种色彩和亮度,恒
14、定发光,所以,液晶显示器画面质量高不会闪烁。因为液晶显示器全部是数字式,所以和单片机接口愈加简单可靠,操作方便。液晶显示器经过显示器上电机控制液晶分子状态来达成显示目标,所以,液晶显示器也有体积小,重量轻优点。液晶显示原理是利用液晶物理特征,经过电压对其显示区域进行控制,有电就显示,这么就能够显示出图形。液晶显示器现在已被广泛应用在便携式电脑,数字摄像机,PDA移动通信工具等众多领域。 3-4 12864液晶显示器 3-5 12864电路图 3.5 蓝牙模块设计 蓝牙模块关键为了实现数据传输,本设计是经过蓝牙转串口模块,实现无线通讯功效,所以本质上使用是单片机串口通信。
15、 串行通讯特点是:数据按位次序传送,最少仅需一根传输线即可完成,成本低但传送速度慢。串行通讯距离能够从几米到几千米。依据信息传送方向,串行通讯能够深入分为单工,半双工和全双工三种。信息智能单向传送为单工;能双向传输但不能同时双向传送称为半双工;信息能够同时双向传送则成为全双工。串行通讯又分为异步通讯和同时通讯两种方法。在单片机中,关键使用异步通讯方法。 3-6 HC-06蓝牙模块电路图 3.6 PCB图设计 在电路原理图设计好以后,依据布线标准对元器件进行布局,布线,最终铺铜、滴泪。 焊接芯片步骤: 1.将
16、芯片平放在PCB板上,将芯片引脚对准焊盘然后用手指按住; 2.将芯片两个对角焊牢; 3.在芯片四面上适量焊锡; 4.将PCB板向着焊接引脚方向下倾斜45度,用松香去掉烙铁头端多出焊锡; 5.把粘有松香焊铁头放在焊锡部分; 6.往返拖动烙铁,将焊锡均匀布在芯片引脚上; 7.反复上述步骤焊接芯片另外引脚,假如发觉引脚间有多出焊锡就用吸锡丝将多出焊锡吸掉。 3.7 智能车结构分析 在此次设计中,小车使用四轮驱动,四轮驱动式结构中因为后轮转动力矩增大,所以在横向上阻力要大于2轮驱动式,所以四轮驱动式车子不易发生方向偏移。而且四轮驱动车子动力更大,爬坡能力更强。但存在部分不足,如:四轮驱
17、动式车子愈加耗电,而且车体比通常2轮驱动式车体重。从整体性能来看四轮驱动式结构优势是很显著。 3.7.1 底板设计 底板是用来支撑车体关键部件。同时也是用来固定车子零部件,底板上关键有传感器安装槽,传感器安装孔,电机定位槽和走位孔,其它槽孔是用来留在以后扩展用。底板采取是高强度亚克力板。安装方便,结构可靠稳定。 3-7 小车底盘示意图 3.7.2电机和底板连接支架设计 电机支架关键是用来将电机固定在底板上,每个电机用两块支架板绑定固定,经过槽孔和圆孔来绑定电机,支架材料也是高强度亚克力板。 3..7.3整体装配图 3-8 整体装配图 4.系统软件设计 4.
18、1系统程序步骤 开始 初始化 是否开始无人驾驶模式 Y N 手机驾驶模式 实施无人驾驶程序 结束 图4-1 系统总体程序步骤图 由打开电源,选择模式,开始驾驶模式,结束几部分组成蓝牙遥控小车关键程序。 4.2蓝牙模块参数设置程序 void InitUART(void) {
19、 TMOD=0x20; //定时器1 TH1=0xfd; //装入初值 TL1=0xfd; TR1=1; //开启定时器1 SM0=0; //设置串口方法1 SM1=1; REN=1; //接收使能 EA=1; //打开总中止开关 ES=1; //打开串口中止开关 } 4.3蓝牙发送程序接收程序和中止程序 void Print_Char(uchar dat) { SBUF = dat; //写数据到UART数据寄存器 while(TI!=1); //等候发送完成 TI=0; //软件清零 } void Pri
20、nt_Str(uchar *s)//发送字符串(uchar *s) { ES=0; while (*s) //检测字符串结束标志 { Print_Char(*s++); delay(2); //发送目前字符 } ES=1; } void Uart() interrupt 4 using 1 { if (RI) { RI = 0; //清除RI位 aa= SBUF; //P0显
21、示串口数据 } } 4.4自动避障及灯光声音控制程序设计 void avoid_thing() { if(d0==0||d1==0) { P1=right; rightled=1; leftled=0; beep=0; } beep=1; if(d3==0||d2==0) { P1=left; rightled=0; leftled=1; beep=0; } beep=1; if(d0==0&&d1==0&&d2==0&&d3==0) { P1= stop; rightle
22、d=1;
leftled=1;
}
if(d0==1&&d1==1&&d2==1&&d3==1)
{
P1= up;
rightled=0;
leftled=0;
}
if(moshi==0)
{
flag=0;
}
}
4.5液晶显示程序设计
#include "reg52.h"
#include
23、);_nop_();}; #define DataPort P0 //定义P0口为LCD通讯端口 sbit RS=P2^7; //数据/命令端 sbit RW=P2^6; //读/写选择端 sbit E=P2^5; sbit RST=P2^4; sbit PSB=P2^2; sbit Busy=DataPort^7; void lcd_busy(void) { DataPort=0xff; RS=0; RW=1; E=1; while(Busy==1); E=
24、0; } void lcd_com(uchar com) { lcd_busy(); E=0; RS=0; RW=0; E=1; DataPort=com; nop(); E=0; } void lcd_dat(uchar dat) { lcd_busy(); E=0; RS=1; RW=0; E=1; DataPort=dat; nop(); E=0; } void lcd_init(void) { RST=1;
25、
PSB=1;
lcd_com(0x30); /*30---基础指令动作*/
lcd_com(0x01); /*清屏,地址指针指向00H*/
lcd_com(0x06); /*光标移动方向*/
lcd_com(0x0c); /*开显示,关游标*/
}
void lcd_disp(uchar y,uchar *str,uchar len) //向第y行 写入字符串
{
uchar i;
lcd_com(0x30);
lcd_com(y);
for(i=0;i 26、dat(*str);
str++;
}
5 调试结果分析
5.1蓝牙遥控调试及结果分析
打开手机蓝牙连上小车信号,然后点手机上方向键,看小车是否有动作。
结果分析:小车反应良好,动作灵敏。
5.2避障功效调试及结果分析
驱动小车行走,用手挡着小车前面避障传感器,小车立即向另一方向做出一定角度转向,而且方向灯亮,报警灯响。
结果分析:避障功效良好。小车能正常避障。
5.3无人驾驶模式调试及结果分析
将线插进针里,小车开启无人驾驶模式,然后小车正常行驶,碰到郑爱武立即避开。
6.总结
伴随时 27、间流逝,我们小车设计也靠近尾声,这些天我快乐过,每一次调试成功全部会给我们带来莫大鼓舞和动力。
当然这次设计不是完美,还有很多地方能够改善,比如车子能够做大,模块能够用更强大,还能够添加其它有趣功效,当然没有任何事物能够做到完美无缺,我相信只要我们不停去完善,做出来产品才会愈加出色。
参考文件
[1] 邱关源主编.电路[M].5版.北京:高等教育出版社,.
[2] 阎石主编.数字电子技术基础[M].5版.北京:高等教育出版社,.
[3] 童诗白,华成英主编.模拟电子技术基础[M].4版.北京:高等教育出版社,.
[4] 贾石峰主编.传感器原理和传感器技术[M].北京:机械工业出 28、版社,.
[5] 李全利主编.单片机原理及接口技术[M].2版.北京:高等教育出版社,.
[6] 谭浩强编.C程序设计[M].3版.北京:清华大学出版社,.
[7] 胡寿松主编.自动控制原理基础教程[M].3版.北京:科学出版社,.
[8] 高西全,丁玉美编.数字信号处理[M].3版.西安:西安电子科技大学出版社,.
[9] 吴大正主编.信号和线性系统分析[M].4版.北京:高等教育出版社,.
[10] 张友德,赵志英,涂时亮,单片机微机原理,应用和试验[M].上海:复旦大学出版社,.
附录:程序
主程序设计
void main()
{ P2=0x01;
lcd_in 29、it();
InitUART(); //初始化串口
delay(10);
Print_Str("all is ok"); //发短信内容
lcd_disp( 0x81,"重力感应小车",12) ;
while(1)
{
lcd_disp( 0x88,"手动驾驶",8) ;
while(aa=='D')
{ if(moshi==1)
{
flag=2;
break;
}
P1=right;
rightled=1;
leftled=0;
beep=0;
lcd_disp( 0x90,"接 30、收字母",9) ;
lcd_disp( 0x94,&aa,1) ;
lcd_disp( 0x96,"右转",4) ;
}
beep=1;
while(aa=='C')
{ if(moshi==1)
{
flag=2;
break;
}
lcd_disp( 0x90,"接收字母",9) ;
lcd_disp( 0x94,&aa,1) ;
lcd_disp( 0x96,"左转",4) ;
P1=left;
rightled=0;
leftled=1;
beep=0;
}
beep=1;
while(aa=='F' 31、)
{
lcd_disp( 0x90,"接收字母",9) ;
lcd_disp( 0x94,&aa,1) ;
lcd_disp( 0x96,"停止",4) ;
P1= stop;
rightled=1;
leftled=1;
if(moshi==1)
{
flag=2;
break;
}
}
while(aa=='A')
{
lcd_disp( 0x90,"接收字母",9) ;
lcd_disp( 0x94,&aa,1) ;
lcd_disp( 0x96,"直行",4) ;
P1= up;
rightled=0;
32、 leftled=0;
if(moshi==1)
{
flag=2;
break;
} }
while(aa=='B')
{
lcd_disp( 0x90,"接收字母",9) ;
lcd_disp( 0x94,&aa,1) ;
lcd_disp( 0x96,"后退",4) ;
P1= down;
rightled=0;
leftled=0;
beep=0;
if(moshi==1)
{
flag=2;
break;
}
}
while(flag==2)
{
lcd_disp( 0x88,"自动驾驶",8) ;
avo 33、id_thing();
}
}
}
5.2
5.4
5.7相关头文件和接口定义
#include






