基于单片机的倒车雷达预警系统分解.docx

上传人:b****4 文档编号:26965215 上传时间:2023-06-24 格式:DOCX 页数:22 大小:809.18KB
下载 相关 举报
基于单片机的倒车雷达预警系统分解.docx_第1页
第1页 / 共22页
基于单片机的倒车雷达预警系统分解.docx_第2页
第2页 / 共22页
基于单片机的倒车雷达预警系统分解.docx_第3页
第3页 / 共22页
基于单片机的倒车雷达预警系统分解.docx_第4页
第4页 / 共22页
基于单片机的倒车雷达预警系统分解.docx_第5页
第5页 / 共22页
点击查看更多>>
下载资源
资源描述

基于单片机的倒车雷达预警系统分解.docx

《基于单片机的倒车雷达预警系统分解.docx》由会员分享,可在线阅读,更多相关《基于单片机的倒车雷达预警系统分解.docx(22页珍藏版)》请在冰豆网上搜索。

基于单片机的倒车雷达预警系统分解.docx

基于单片机的倒车雷达预警系统分解

分类号UDC单位代码10644

密级公开学号2012090324

 

本科毕业设计

  

基于单片机通过蓝牙与手机交互的超声波倒车预警系统(硬件)

    

学生姓名:

叶辰阳

二级学院:

计算机学院

专业:

计算机科学与技术

班级:

2012级03班

学号:

2012090324

指导教师:

蒲国林雷永辉熊敏

完成时间:

2015年12月20日

  

中国达州

2015年12月

目录

1绪论1

1.1选题目的及意义1

1.2拟解决的关键问题:

1

.1.2.1下位机方面拟解决的关键问题1

1.2.2上位机方面拟解决的关键问题2

2基于单片机通过蓝牙与手机交互的超声波倒车预警系统设计中的主要技术与分析3

2.1 总体方案设计3

2.2 主要技术5

2.2.1硬件技术5

2.2.2软件技术5

3基于单片机通过蓝牙与手机交互的超声波倒车预警系统的详细设计与实现7

3.1 电路图绘制7

3.1.1电路原理图7

3.1.2实物图9

3.2 上位机设计9

3.2.1天气查询APP9

3.2.2硬件数据接收APP10

总结15

致谢16

参考文献17

1绪论

本设计是一个为符合车联网概念的设计开发,本次设计主要是利用STC89C52RC单片机、US-100超声波测距模块以及5V有源蜂鸣器完成测距报警电路的制作,以STC89C52RC为主控芯片,US-100超声波模块不断发出超声波,返回信息由MCU进行处理,将距离信息在LCD1602上显示出来,当距离小于设定值时,STC89C5RC发出指令控制蜂鸣器报警,并且用DHT11数字式温湿度传感器收集温湿度数据给单片机,最后我们还使用HC-06从机蓝牙模块与手机进行信息交互。

上位机手机应用将收集的温湿度和距离信息显示出来,以实现碰撞预警、路线规划、天气查询并能与社交网络分享信息的功能。

1.1选题目的及意义

自19世纪末到20世纪初,在物理学上发现了压电效应与反压电效应之后,人们解决了利用电子学技术产生超声波的办法,从此迅速揭开了发展与推广超声技术的历史篇章。

由于超声波指向性强,能量消耗缓慢,在介质中传播的距离较远,因而超声波经常用于距离的测量,如测距仪和物位测量仪等都可以通过超声波来实现。

利用超声波检测往往比较迅速、方便、计算简单、易于做到实时控制,并且在测量精度方面能达到工业实用的要求,因此在移动机器人研制上也得到了广泛的应用。

如今汽车已经成为人们的基础代步工具,但是随着车辆的增多,停车空间变窄,倒车视野受限,倒车事故频频发生。

利用超声波测距原理和基于单片机处理的倒车雷达报警系统可以帮助驾驶者判断倒车距离,增加倒车安全性。

自从1991年美国麻省理工学院(MIT)的KevinAsh-ton教授首次提出物联网的概念。

2009年8月,温家宝“感知中国”的讲话把我国物联网领域的研究和应用开发推向了高潮,如今物联网产品层出不穷,原来的倒车雷达必定将被淘汰,所以为了顺应物联网中“智慧交通”的车联网的要求,一款基于单片机通过蓝牙与手机交互来实现碰撞预警、路线规划、天气查询并能与社交网络分享信息的超声波倒车预警系统成为了我这次的开发目标。

1.2拟解决的关键问题:

.1.2.1下位机方面拟解决的关键问题

1、完成LCD1602显示电路的设计,显现距离信息的显示。

2、完成超声波测距电路的设计,让它准确测距。

3、完成DHT11温湿度采集电路的设计,完成温湿度的采集。

4、完成蜂鸣器报警电路的设计,使单片机能控制蜂鸣器完成报警。

5、完成串口蓝牙电路的设计,让单片机测量的信息能通过串口传递给HC-06串口蓝牙模块。

6、完成CH340TUSB转串口供电烧录电路的设计,以完成供电和单片机烧录的功能。

1.2.2上位机方面拟解决的关键问题

1、碰撞预警界面的实现,并完成与下位机的串口蓝牙模块的正常配对、链接、通信。

2、路线规划界面的实现,利用XX地图SDK制作。

3、天气查询界面的实现,利用中国天气网的信息完成。

4、与社交网络的分享功能,主要利用友盟SDK分享,分享到微信好友和朋友圈。

5、开机界面、主界面和各个界面的跳转,以及UI的美化优化。

 

2基于单片机通过蓝牙与手机交互的超声波倒车预警系统设计中的主要技术与分析

2.1 总体方案设计

本设计包括下位机和上位机设计两个部分。

下位机模块划分为数据采集、LCD显示、报警、蓝牙通信、烧录供电等子模块,电路结构可以划分为:

LCD1602显示电路、超声波测距电路、DHT11温湿度采集电路、蜂鸣器报警电路、串口蓝牙电路、CH340TUSB转串口供电烧录电路。

MCU是STC89C52RC单片机,其将完成距离处理、碰撞预警、温湿度采集、LCD显示、以及蓝牙通信的功能。

上位机则是智能手机上的安卓应用,手机与下位机通过蓝牙通信完成数据通信,主要功能集中在DanntennActivity,MapActivity,WeatherActivity这3个活动上,DanntennActivity主要显示蓝牙发送过来的温湿度和距离信息,并且能和微信等社交网络推送信息;MapActivity借助XX地图SDK提供的api实现路线规划功能;WeatherActivity负责访问中国天气网

 

 

图1系统构架图

 

2.2 主要技术

超声波指向性强,在介质中传播的距离较远,因而超声波经常用于距离的测量,如测距仪和物位测量仪等都可以通过超声波来实现。

利用超声波检测往往比较迅速、方便、计算简单、易于做到实时控制,并且在测量精度方面能达到工业实用的要求,因此得到了广泛的应用。

为了研究和利用超声波,人们已经设计和制成了许多超声波发生器。

总体上讲,超声波发生器可以分为两大类:

一类是用电气方式产生超声波,另一类是用机械方式产生超声波。

电气方式包括压电型、磁致伸缩型和电动型等;机械方式有加尔统笛、液哨和气流旋笛等。

它们所产生的超声波的频率、功率和声波特性各不相同,因而用途也各不相同。

目前较为常用的是压电式超声波发生器。

所以我们也采用超声波测距原理:

通过超声波发射装置发出超声波,根据接收器接到超声波时的时间差就可以知道距离了。

超声波发射器向某一方向发射超声波,在发射时刻的同时开始计时,超声波在空气中传播,途中碰到障碍物就立即返回来,超声波接收器收到反射波就立即停止计时。

(超声波在空气中的传播速度为340m/s,根据计时器记录的时间t,就可以计算出发射点距障碍物的距离(s),即:

s=340t/2)。

2.2.1硬件技术

US-100超声波测距模块,可实现2cm~4.5m的非接触测距功能,拥有2.4~5.5V的宽电压输入范围,静态功耗低于2mA,自带温度传感器对测距结果进行校正,同时具有GPIO,串口等多种通信方式,内带看门狗,工作稳定可靠。

STC89C52RC是STC公司一种低功耗、高性能CMOS8位微控制器,具有8K在系统可编程Flash存储器单片机,有不低的价值,以其方便使用和功能强大受到了广大电子设计爱好者的喜爱。

HC-06是一款串口蓝牙无线通信模块,稳定可靠。

DHT11数字温湿度传感器是一款含有已校准数字信号输出的温湿度复合传感器,它应用专用的数字模块采集技术和温湿度传感技术,确保产品具有极高的可靠性和卓越的长期稳定性。

传感器包括一个电阻式感湿元件和一个NTC测温元件,并与一个高性能8位单片机相连接。

因此该产品具有品质卓越、超快响应、抗干扰能力强、性价比极高等优点。

每个DHT11传感器都在极为精确的湿度校验室中进行校准。

校准系数以程序的形式存在OTP内存中,传感器内部在检测型号的处理过程中要调用这些校准系数。

单线制串行接口,使系统集成变得简易快捷)采集环境的温湿度。

2.2.2软件技术

Android是一种基于Linux的自由及开放源代码的操作系统,主要使用于移动设备,如智能手机和平板电脑,由Google公司和开放手机联盟领导及开发。

尚未有统一中文名称,中国大陆地区较多人使用“安卓”或“安致”。

Android操作系统最初由AndyRubin开发,主要支持手机。

2005年8月由Google收购注资。

2007年11月,Google与84家硬件制造商、软件开发商及电信营运商组建开放手机联盟共同研发改良Android系统。

随后Google以Apache开源许可证的授权方式,发布了Android的源代码。

第一部Android智能手机发布于2008年10月。

Android逐渐扩展到平板电脑及其他领域上,如电视、数码相机、游戏机等。

2011年第一季度,Android在全球的市场份额首次超过塞班系统,跃居全球第一。

2013年的第四季度,Android平台手机的全球市场份额已经达到78.1%。

2013年09月24日谷歌开发的操作系统Android在迎来了5岁生日,全世界采用这款系统的设备数量已经达到10亿台。

Android的构架如图2。

 

图2安卓构架的五个部分

 

3基于单片机通过蓝牙与手机交互的超声波倒车预警系统的详细设计与实现

在该组项目中,我主要负责电路原理图、PCB图的设计绘制以及电路板的焊接还有Android端对硬件数据的接收以及天气查询APP的编写。

3.1 电路图绘制

3.1.1电路原理图

(1)USB转串口供电烧录模块:

主要为整个电路板供电,并且通过串口进行程序的烧录工作。

图3USB串口烧录供电电路

(2)时钟以及复位电路:

采用22.1184MHZ晶振的震荡时钟电路确定电路的工作时序;复位电路,就是利用它把电路恢复到起始状态。

图4时钟复位电路

(3)功能模块:

DHT11温湿度采集模块、蜂鸣器报警模块、US-100超声波测距模块、HC-06蓝牙模块。

图5功能模块

(4)STC89C52单片机控制模块:

图6单片机

 

3.1.2实物图

基于PCB图样焊接的电路板,右端即US-100测距模块,左端是LCD1602液晶显示模块,运用超声波测距原理测得距离在屏幕显示,下方的DHT11温湿度简册模块,中下部的串口蓝牙模块向Android端发送数据,中间的STC89C52RD单片机芯片控制整个电路。

图7PCB电路实物焊接图

3.2 上位机设计

3.2.1天气查询APP

天气查询需要获得HTTP许可,通过网页链接来实现对实时天气信息的获取。

功能流程如图8:

 

图8天气查询示意图

主要代码:

publicclassMainActivityextendsActivity{

privateWebViewwebView;

@Override

protectedvoidonCreate(BundlesavedInstanceState){

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

init();

}

privatevoidinit(){

webView=(WebView)findViewById(R.id.webView);

webView.loadUrl("

webView.setWebViewClient(newWebViewClient(){

@Override

publicbooleanshouldOverrideUrlLoading(WebViewview,Stringurl){

view.loadUrl(url);

returntrue;

}

});

3.2.2硬件数据接收APP

软硬件结合,硬件通过蓝牙模块发送数据,android实现对数据的接收以及处理,并在界面上直观显示。

操作流程如图9:

图9数据接收示意图

主要代码:

//变量初始化

privatevoidinit(){

//TODOAuto-generatedmethodstub

mContext=this;

mBluetoothAdapter=BluetoothAdapter.getDefaultAdapter();

mytext=(TextView)findViewById(R.id.dis);

Tem=(TextView)findViewById(R.id.tem);

Hum=(TextView)findViewById(R.id.hum);

//注册receiver监听

IntentFilterfilter=newIntentFilter(BluetoothDevice.ACTION_FOUND);

registerReceiver(mReceiver,filter);

//获取已经配对过的蓝牙设备

SetpairedDevices=mBluetoothAdapter.getBondedDevices();

if(pairedDevices.size()>0){

for(BluetoothDevicedevice:

pairedDevices){

list.add(newChatMessage(device.getName()+"\n"+device.getAddress(),true));

clientAdapter.notifyDataSetChanged();

mListView.setSelection(list.size()-1);

}

}else{

list.add(newChatMessage("没有已经配对过的设备",true));

clientAdapter.notifyDataSetChanged();

mListView.setSelection(list.size()-1);

}

Handlerhandler=newHandler(){

publicvoidhandleMessage(android.os.Messagemsg){

switch(msg.what){

case1:

bytedata[]=(byte[])msg.obj;

try{

refreshView(data);

}catch(UnsupportedEncodingExceptione){

//TODOAuto-generatedcatchblock

e.printStackTrace();

}//���յ����ݺ���ʾ

break;

privatevoidrefreshView(bytedata[])throwsUnsupportedEncodingException{

intchoice=(data[0]&0xff);

switch(choice){

case0x01:

inttem=(data[1]&0xff);

inthum=(data[2]&0xff);

if(tem!

=0&&hum!

=0){

Tem.setText(tem+"℃");

Hum.setText(hum+"%rh");

break;}

else{

break;

}

case0x02:

intdis=(data[1]&0xff);

if(0

mytext.setText(dis+"cm");

break;

}

else

{

break;

}

}

}

//开启客户端连接服务端

privateclassClientThreadextendsThread{

@Override

publicvoidrun(){

//TODOAuto-generatedmethodstub

if(device!

=null){

try{

socket=device.createRfcommSocketToServiceRecord(UUID.fromString("00001101-0000-1000-8000-00805F9B34FB"));

//连接

Messagemsg=newMessage();

msg.obj="请稍候,正在连接服务器:

"+BluetoothMsg.BlueToothAddress;

msg.what=0;

LinkDetectedHandler.sendMessage(msg);

//通过socket连接服务器,这是一个阻塞过程,直到连接建立或者连接失效

socket.connect();

Messagemsg2=newMessage();

msg2.obj="已经连接上服务端!

可以发送信息";

msg2.what=0;

privateclassReadThreadextendsThread{

@Override

publicvoidrun(){

//TODOAuto-generatedmethodstub

byte[]data=newbyte[1024];

intbytes;

InputStreamis=null;

try{

is=socket.getInputStream();

while(true){

data=newbyte[1024];

bytes=is.read(data);

intlen=is.read(data);

if(len==-1){

return;

}

System.out.println("SSS:

"+(data[0]&0xff)+":

"

+(data[1]&0xff)+":

"+(data[2]&0xff));

System.out.println(Arrays.toString(data));

Messagemessage=LinkDetectedHandler.obtainMessage();

message.what=1;

message.obj=(data[0]&0xff)+":

"

+(data[1]&0xff)+":

"+(data[2]&0xff);

LinkDetectedHandler.sendMessage(message);

//sendtotextview

handler.obtainMessage(1,data).sendToTarget();

}

}catch(IOExceptione){

e.printStackTrace();

}

}

}

//扫描设备

privatevoidscanDevice(){

//TODOAuto-generatedmethodstub

if(mBluetoothAdapter.isDiscovering()){

mBluetoothAdapter.cancelDiscovery();

}else{

list.clear();

clientAdapter.notifyDataSetChanged();

//每次扫描前都先判断一下是否存在已经配对过的设备

SetpairedDevices=mBluetoothAdapter.getBondedDevices();

if(pairedDevices.size()>0){

for(BluetoothDevicedevice:

pairedDevices){

list.add(newChatMessage(device.getName()+"\n"+device.getAddress(),true));

clientAdapter.notifyDataSetChanged();

mListView.setSelection(list.size()-1);

}

}else{

list.add(newChatMessage("Nodeviceshavebeenpaired",true));

clientAdapter.notifyDataSetChanged();

mListView.setSelection(list.size()-1);

}

BluetoothMsg.BlueToothAddress=address;

//停止扫描

//BluetoothAdapter.startDiscovery()很耗资源,在尝试配对前必须中止它

mBluetoothAdapter.cancelDiscovery();

}

}

总结

经过大约为期一个月的毕业设计,在与合作伙伴的共同努力下,完成了拟定毕设的相关功能。

本次毕业设计是把在校学习的知识和实际工作项目的一次理想结合,让我对本专业的工作的整体构架有了充分的了解。

把学习的知识进行了充分的利用,同时也激发了自己的工作欲望,培养出了自己良好的工作态度。

软硬件的结合处理,这种工作方式使得自己的工作方向有了明确的定位。

本次毕业设计也遇到了种种问题以及困难,在指导老师的帮助以及与合作伙伴的讨论下得到了充分的解决。

例如HC-06等模块的工作最小电路的设计以及和其他工作模块的电压匹配问题,STC89C52RD单片机工作晶振的选取问题,CH340串口烧录模块的设计,AM1117稳压芯片的使用,各个电路元器件的电压匹配问题,Android与硬件通信时的数据接收处理等问题,这些问题的解决正是我本次毕业设计中的重要收获,这些经验的积累对于我以后的工作提供了有很大的帮助。

 

致谢

弹指一

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 求职职场 > 简历

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1