欢迎来到冰豆网! | 帮助中心 分享价值,成长自我!
冰豆网
全部分类
  • IT计算机>
  • 经管营销>
  • 医药卫生>
  • 自然科学>
  • 农林牧渔>
  • 人文社科>
  • 工程科技>
  • PPT模板>
  • 求职职场>
  • 解决方案>
  • 总结汇报>
  • 党团工作>
  • ImageVerifierCode 换一换
    首页 冰豆网 > 资源分类 > DOCX文档下载
    分享到微信 分享到微博 分享到QQ空间

    基于安卓蓝牙控制的智能车设计报告.docx

    • 资源ID:23281334       资源大小:263.28KB        全文页数:36页
    • 资源格式: DOCX        下载积分:10金币
    快捷下载 游客一键下载
    账号登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录 QQ登录
    二维码
    微信扫一扫登录
    下载资源需要10金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP,免费下载
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    基于安卓蓝牙控制的智能车设计报告.docx

    1、基于安卓蓝牙控制的智能车设计报告摘要:在科技日益发展的今天,无线遥控的机器人小车在危险环境作业、人员搜集等应用中可发挥特殊的作用。智能车作为智能车辆的仿真车,是研究智能车辆的基础。介绍了基于蓝牙遥控的多功能智能车。该设计采用STC89C52RC芯片为主控制器,利用L298N芯片驱动直流电机。同时利用安卓手机蓝牙无线遥控小车进入蓝牙手动模式,循迹模式和避障模式。在蓝牙模式下小车采用蓝牙模块利用Android平台远程控制小车的移动;在循迹模式下,采用红外光对管对黑线检测,判断出黑线的位置,将采集到的路况信息输入STC89C52单片机中,让小车沿着黑线自动行驶;在避障模式下,让小车自由移动,避障模块

    2、将使小车不会撞上障碍物。为了避免小车撞上障碍物,该小车使用了HS-RS04超声波模块,通过超声波的发射与接受来确定障碍物的位置,避免小车撞上障碍物。关键词:智能车;51单片机;蓝牙通讯;超声波测距;红外检测;1方案比较与论证1.1循迹单元方案比较与选择方案一:采用可见光发光二极管和光敏二极管采用普通可见光发光管和光敏管组成的发射接收电路。其缺点在于易受到环境光源的影响。即便提高发光管亮度也难以抵抗外界光的干扰。 方案二:采用反射式红外发射接收器采用反射式红外发射接收器。直接用直流电压对发射管进行供电,其优点是实现简单,对环境光源的抗干扰能力强,在要求不高时可以使用。 结论:根据成本和实现容易性

    3、,以与由于传感器可以在车体的下部,发射、接收距地面都很近,外界光对其的干扰都很小。在基本不影响效果的前提下,为了简便起见,系统选用了方案二。1.2避障单元方案比较与选择方案一:超声波探测超声波测距对色彩和光照不敏感,可用于识别透明与漫反射性的物体,可在黑暗、有灰尘或烟雾的环境当中使用,超声波测距对电磁场与其他电磁干扰不敏感,可用于电磁干扰强、有毒、有害等恶劣环境中,超声波传感器结构简单、体积小、成本低、技术难度小、信息处理简单可靠、易于小型化和集成化。当然超声波测距也有一定的缺点,比如受温度、气流、材质的影响。方案二:红外式探测光电对管价格低廉,性能稳定,但探测距离过近(一般不超过3cm),使

    4、得小车必须制动迅速。而我们由于采用普通直流电机作为原动力,制动距离至少需要10cm。方案三:雷达探测雷达测距受恶劣天气的影响比较大,且成本比较高,雷达还必须满足电磁兼容要求。方案四:使用视频采集处理装置进行探测使用CCD实时采集小车前进路线上的图像并进行实时传输与处理,这是最精确的障碍物信息采集方案,可以对障碍物进行精确定位和测距。但是使用视频采集会大大增加小车成本和设计开发难度,而且考虑到我们小车行进转弯的精确度并未达到视频处理的精度,因而使用视频采集在实际应用中是个很大的浪费。结论:综上所述,再结合我们的设计目标,采用方案一最符合设计要求。1.3无线单元方案与比较无线控制是为了能够实现对智

    5、能车的远程遥控,使小车可以在遥控状态下代替人类完成一些危险项目。目前短距离无线数据传输技术主要有两大类,一类是基于IrDA红外无线通信技术,另一类是基于ISM(Industrial Scientific Medical)频段射频通信技术。较为主流的几种通信技术之间既存在着相互竞争,但又在某些实际应用领域相互补充、相互配合,究竟选择何种技术更优越,需要由具体的工作环境来决定。表1-3所示为四种短距离无线通讯技术主要性能参数。 表1.3 四种短距离无线通讯技术主要性能参数蓝牙技术红外技术WiFi技术ISM射频技术通信距离100m10m300m1000m通信速率10Mb/s16Mb/s11Mb/s5

    6、00kb/s通信频率或波长2.4GHz0.75um-24um2.4GHz315、433.868、915和2400MHz频率申请否否否否开发难度易难难易模块成本较低很低较低低结论:通过表格可以看出,他们在近距离通讯领域都可以提供可靠的通信服务,但是同时他们的应用有着各自的技术架构的限制。在以上的几种中,我最终选择了蓝牙无线传输方式。2硬件电路设计2.1总体设计智能车主要现实远程来控制智能车的运动。它要实现三种运动模式:遥控模式、自主循迹模式、自动壁障模式。根据上述功能需求和模块化思想,智能车可以分为以下几个主要模块:单片机模块、电源管理模块、无线通讯模块、循迹模块、壁障模块。其主要结构框图如图1

    7、-1所示。图2.1总体结构框图2.2单片机模块2.2.1STC89C52简介STC89C52是一种带8K字节闪烁可编程可擦除只读存储器(FPEROM-Flash Program able and Erasable Read Only Memory)的低电压,高性能COMOS8的微处理器。该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。STC89C52特性:通用I/O口,复位后为:P1/P2/P3/P4是准双向口/弱上拉(普通8051传统I/O口);P0口是开漏输出,作为总线扩展用时,不用加上拉电阻,作为I/O口用时,需要加上拉电阻;ISP(在

    8、系统可编程)/IAP(在应用可编程),无需专用编程器,无需专用仿真器可通过串口(RxD/P3.0,TxD/P3.1)直接下载用户程序,数秒即可完成;具有EEPROM功能;具有看门狗自动复位功能;共有3个16位定时器/计数器,其中定时器0还可以当成2个八位定时器使用;外部中断4路,下降沿中断或低电平触发中断,PowerDown模式可由外部中断低电平触发中断方式唤醒。图2.2.1单片机最小系统原理图2.3电机驱动模块 L298N部包含4个通道逻辑驱动电路,是一种二相和四相电机的专用驱动器,即含二个H桥的高电压大电流双全桥式驱动器,接收标准TTL逻辑电平信号,可以驱动4V、2V以下的电机。2.3.1

    9、参数1.驱动芯片:L298N双H桥直流电机驱动芯片2.驱动部分端子供电围Vs:5V35V ;如需要板取电,则供电围Vs:+7V+35V3.驱动部分峰值电流Io:2A4.逻辑部分端子供电围Vss:5V7V(可板取电5V)5.逻辑部分工作电流围:036mA6.控制信号输入电压围: 低电平:0.3VVin1.5V 高电平:2.3VVinVss7.使能信号输入电压围: 低电平:0.3Vin1.5V(控制信号无效) 高电平:2.3VVinVss(控制信号有效)8.最大功耗:20W(温度T75时)9.存储温度:25130图2.3.1驱动模块原理图表2.3.1驱动状态编码2.4电源模块考虑到电路消耗功率较多

    10、,最终采用11.1v的锂电池,可以安在小车上,为小车供电。电机所需电源由锂电池直接供给,51单片机最小系统以与其扩展模块由锂电池通过7805降压至5V后提供电源。电源电路为整个系统供电,包括单片机STC89C52、电机驱动、蓝牙模块、超声波模块与其他外围电路。电源电路分两个部分:一是接外部电源给电机供电;二是由锂电池作为电源,给系统供电,以确保单片机、电机驱动、蓝牙模块的正常运行。在电源电路给系统供电时,红色指示灯点亮,只是当前供电正常。2.5蓝牙模块蓝牙模块支持短距离无线传输,可以通过手机与蓝牙模块的配对实现对小车的无线控制。本小车采用的是HC-06蓝牙芯片,在HC-06芯片里已经将蓝牙协议

    11、封装好,只需要通过串口通信实现上位机(手机)与下位机(51单片机)的无线通信。蓝牙模块中蓝牙芯片的TXD与RXD分别于单片机的RXD与TXD相接,VCC与单片机电源,GND与单片机GND相连。HC-06使用R1114作为稳压芯片,将单片机提供的5V电压转换为3.3V的低电压,为蓝牙芯片供电。蓝牙芯片应用围:可用于GPS导航,水电煤气抄表系统,工业现场控制,与移动设备无线连接。2.6循迹模块地面发射红外光,当红外光遇到白色纸质地板时发生漫反射,反射光被安装在小车上的接收管接收;如果遇到黑线则红外光被吸收,小车上的接收管接收不倒红外光。单片机就是否反射回来的红外光为依据来确定黑线的位置和小车的行走

    12、路线。红外探测器探测的距离有限,一般最大不应超过15cm。 这里用反射式红外传感器ST188。当小车在白色地面行驶时,装在车下的红外发射管发射红外线信号,经白色反射后,被接收管接收,一旦接收管接收到信号,输出端将输出低电平;当小车行驶到黑线时,红外线信号被黑色吸收后,将输出高电平,从而实现了通过红线检测信号的功能。将检测到的信号送到单片机的I/O口,当I/O口检测到的信号为高电平时,表明红外光被地上的黑线吸收了,表明小车处在黑色的引线上;同理,当I/O口检测到的信号为低电平时,表明小车行驶在白色地面上。图2.6循迹模块原理图2.7避障模块本模块使用的是HC-RS04超声波模块。只需要在Trig

    13、/TX管脚输入一个10US以上的高电平,系统便可发出8个40KHZ的超声波脉冲,然后检测回波信号。本模块通过定时器来测量超声波脉冲从发射到接收的时间,乘以超声波在空气之中的速度,得出的距离就是超声波往返传输的距离,将结果除以2后,结果就是超声波模块与障碍物之间的距离。3软件设计整个系统的软件设计可以分为两大部分:全能车运动控制程序、Android蓝牙控制端的APP。其中全能车运动控制程序又可以细分为五个主要模块:全能车运动部分、串口通讯部分、蓝牙控制模式、循迹模式、壁障模式。3.1智能车运动控制程序3.1.1智能车运动控制程序构思与框架智能车运动程序流程主要为:首先为各个模块的初始化工作,为后

    14、面的工作做好前期准备,再就是判断智能车运动模式,最后就是在相应的运动模式下执行相应的指令。大概程序流程图如图3.1.1所示。图3.1.1主题程序流程图智能车处理器为STC89C52,根据其的CPU构架,写出了程序的主体框架。处理器启动后首先要做好设备初始化,为后面的工作做好前期的准备。模块初始化工作部分代码如表3-1所示。表3-1 源程序之初始化工作greatcar.c/main()/模块初始化工作部分代码/* 主函数 */void main(void)/* 初始化部分 */ / 定时器0初始化 Timer0_Init(); / 定时器1初始化Timer1_Init(); / 串口初始化 UA

    15、RT_Init(); / 打开总中断开关 EA = 1;/ 以下若干行省略,详细请参考源代码注释:Timer0用于超声波模块,Timer1用于模拟PWM。智能车初始化后,将进行智能车运动模式的选择。通过安卓手机APP或者拨码开关传递给智能车不同的运动模式指令,主要有三种运动模式。蓝牙手动模式,对应编码为0x01;循迹模式,对应编码为0x10;避障模式,对应编码为0x11。编码为0x00是无效编码,也是智能车启动后的默认值。拨码开关通过两个引脚接到单片机上,两个引脚分别为RM0和RM1。蓝牙控制模式选择指令有三种,分别为蓝牙手动模式0xA0,循迹模式0xB0以与避障模式0xC0。其实现的部分代码

    16、如表3-2所示。表3-2 智能车运动模式判断与选择greatcar.c/mian()/运动模式判断与选择/* 主函数 */void main(void)/ 省略初始化部分代码,详细请参考源代码/* 主体工作部分 */ for(;) / 全能车模式判断,主要判断P2.0和P2.1引脚的电平高低 if(0=RM1 & 0=RM0) Run_Mode_Flag = 0x11; / 全能壁障模式标志,也是自动避开障碍物 else if(0=RM0 & 1=RM1) Run_Mode_Flag = 0x01; / 蓝牙控制模式标志 else if(1=RM0 & 0=RM1) Run_Mode_Flag

    17、 = 0x10; / 红外循迹模式标志 else switch(R_Buffer) case 0xA0: Run_Mode_Flag = 0x01; break; case 0xB0: Run_Mode_Flag = 0x10; break; case 0xC0: Run_Mode_Flag = 0x11; break; / 中间省略若干代码,详细参考源代码 / 全能车运行模式判断 if(0x01 = Run_Mode_Flag) / 蓝牙模式,通过串口与蓝牙模块通信,获得相应的执行指令 Run_Mode_Bluetooth(); else if(0x10 = Run_Mode_Flag) /

    18、 循迹模式 Run_Mode_Track(); else if(0x11 = Run_Mode_Flag) / 自动模式 Run_Mode_Auto(); 注释:Run_Mode_Flag为智能车运动模式标识符;Run_Mode_Bluetooth()为蓝牙手动模式; Run_Mode_Track()为循迹模式; Run_Mode_Auto()为避障模式;3.1.2智能车基础运动设计与实现智能车基础运动包括前进、倒车、左转、右转和停车,其对应的功能函数名分别如下:前进Car_Go_Forward()、倒车Car_Go_Back()、左转Car_Turn_Left()、右转Car_Turn_Ri

    19、ght()以与停车Car_Stop()。智能车是通过PWM技术来实现调整其运动的速度。前进Car_Go_Forward()和左转Car_Turn_Left()部分代码如表3-3所示,而倒车和右转以与停车与前者相似。表3-3 智能车基础运动源代码greatcar.c/Car_Go_Forward() & Car_Turn_Left()/* 小车前进 */void Car_Go_Forward(void) L_LAMP = R_LAMP = 1; / 关闭左侧和右侧车灯 if( COUNT = DUTY ) / 高电平 / 左边车轮正转, LIN1=1, LIN2=0 / 右边车轮正转,RIN1=

    20、1, RIN2=0 Motor_RIN1 = Motor_LIN1 = 1; Motor_RIN2 = Motor_LIN2 = 0; else / 低电平 / 左右都停止 Motor_LIN1 = Motor_RIN1 = 1; Motor_LIN2 = Motor_RIN2 = 1; /* 小车左转 */void Car_Turn_Left(void) L_LAMP = 0; / 打开左侧车灯 R_LAMP = 1; / 关闭右侧车灯 if(COUNT 8; / 波特率9600 T2CON = 0x34; / 等效于RCLK=TCLK=TR2= 1 / 清除RI,串口接收中断标志 RI =

    21、 0; / 串口中断使能 ES = 1; / 记得主程序中要打开EA=1!注释:FOSC为系统时钟晶振,已经宏定义#define FOSC 11059200LBAUD为串口通讯波特率,已经宏定义#define BAUD 9600初始化UART后,在打开串口中断,用于接收来自蓝牙模块的数据。其实现代码如表3-5所示。表3-5 串口中断处理函数greatcar.c/UART_Handler()/* 串口通讯中断服务函数 */void UART_Handler()interrupt 4 using 1 / 串口中断号4 / 判断RI if(RI) RI = 0; / 软件方式清除RI标志 R_Buf

    22、fer = SBUF; / 获得蓝牙数据 注释:串口接收中断标志RI必须软件清零。3.1.4智能车蓝牙手动模式设计与实现在UART接口的基础上获得来自控制端的指令。通过全局变量R_Buffer来存储当前来自APP客户端的数据,并根据R_Buffer的值来执行相应的功能。蓝牙指令有0x1F前进指令、0x2F倒车指令、0x3F左转指令、0x4F右转指令、0x5F加速指令、0x6F减速指令、0x7F前车灯、0x8F喇叭。手动模式部分源代码如表3-6所示。表3-6 蓝牙手动模式部分源代码greatcar.c/Run_Mode_Bluetooth()/* 全能车模式之蓝牙遥控 */void Run_Mo

    23、de_Bluetooth(void) / 再次打开串口中断使能 ES = 1; / 根据收到的R_Buffer执行该任务 switch(R_Buffer) case 0x1F: / 前进指令 DUTY = 7; Car_Go_Forward(); break; case 0x2F: / 后退指令 DUTY = 7;Car_Go_Back(); break; case 0x3F: / 左转指令 DUTY = 7; Car_Turn_Left(); break; case 0x4F: / 右转指令 DUTY = 7;Car_Turn_Right(); break; case 0x00: / 停止指

    24、令Car_Stop(); break; case 0xD0: / 关闭前车灯 Car_Beep(); break; 注释:DUTY为占空比,用于调整电机转动速度。3.1.5智能车自主循迹模式设计与实现通过红外对管的工作原理来判断全能车相对位置,以与做出相应的决策。其部分源代码如表3-7所示。表3-7 智能车循迹模式源代码greatcar.c/Run_Mode_Track()/* 全能车模式之循迹 */void Run_Mode_Track(void) static U8 temp; / 零时存放P1低6位数据,一定要写成static,保存上次的结果。 temp = P1; temp &=0x3

    25、f; switch(temp) case 0x07: / 左1、左2和左3同时 DUTY = 5; Car_Turn_Left(); break; case 0x1F: / 左1 DUTY = 5; Car_Turn_Left(); break; / 中间省略若干行,详细参照源代码 case 0x3E: / 右1 DUTY = 5; Car_Turn_Right(); break; case 0x38: / 右1、右2和右3同时 DUTY = 5; Car_Turn_Right(); break; case 0x00: Car_Stop(); break; default: / 前行 DUTY

    26、 = 4; Car_Go_Forward(); 注释:红外对管低电平表示遇到黑色线,即没有收到返回光。3.1.6智能车自动避障模式设计与实现通过超声波电路间接测量距离的原理,计算出障碍物距离全能车的距离。部分代码如表3-8所示。表3-8 智能车避障模式源代码greatcar.c/避障模式 /* 超声波初始化 */ void Timer0_Init(void) Trig = 0; TMOD &=0xF0; TMOD |= 0x01; TH0 = 0; TL0 = 0; / 定时器0寄存器清零 TF0 = 0; / 清除定时器0溢出标志 TR0 = 0; / 暂时不启动定时器0 /* 启动触发 *

    27、/ void Trig_Start(void) Trig = 1; / 产生触发信号 _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); Trig = 0; / 关闭触发信号 TH0 = 0; TL0 = 0; while(!Echo); / 等待返回信号(高电平) TR0 = 1; / 打开定时器0 while(Echo); TR0 = 0; Distance_Cacl(); /* 计算距离 */ void Distance_Cacl(void) U16 time; time = TH0*256 + TL0; Distance = time*1.87/100; /*


    注意事项

    本文(基于安卓蓝牙控制的智能车设计报告.docx)为本站会员主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

    copyright@ 2008-2022 冰点文档网站版权所有

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

    收起
    展开