成绩评定表课程设计任务书阐述一种通过手机蓝牙遥控小车行走的软、硬件设计。
手机蓝牙作为客户端,小车上的蓝牙模块HC-05作为服务端。
客户端采用Eclipse 开发环境,J2ME编程,服务端采用单片机控制。
双方通过串口仿真协议进行通信,单片机驱动直流电机控制小车行动。
实验结果表明,小车可以接收手机遥控信号并灵活地进行前行、倒退、左转、右转和停止等功能。
关键词:89c52,hc-05,遥控小车,Andriod目录1引言 (1)1.1课题设计目的及意义 (1)1.1.1设计的目的 (1)1.1.2设计的意义 (2)2 方案比较与论证 (2)2.1无线单元方案与比较 (2)3 硬件电路设计 (4)3.1 总体设计 (4)3.2 单片机模块 (5)3.2.1 STC89C52简介 (5)3.2.2 L298N驱动模块及原理介绍 (6)3.2.3 蓝牙模块 (7)4 软件设计 (8)4.1 智能车运动控制程序 (8)4.2 Android蓝牙客户端设计与实现 (9)4.2.1 客户端界面设计 (10)4.2.2 BluetoothCar类设计 (10)4.2.3 单片机C语言代码 (10)5 实验结果及分析 (16)6 心得体会 (17)参考文献 (17)1引言1.1课题设计目的及意义1.1.1设计的目的遥控小车起源于美国,由于政府对无线遥控小车研发的资助以及相关资助的推动作用,日本、美国、德国等工业大国在遥控小车技术上占据着明显优势。
我国的无线遥控小车研究工作始于20世纪中后期,在国家的863、973等技术发展计划的重点支持下,国内已大范围地进行无线遥控小车的研究。
在研发应用方面取得了重要发展,但是与国际先进还存在一定的差距。
无线遥控实现方法包括蓝牙、红外、射频几种,其中蓝牙技术具有一定优势。
目前在信息家电方面应用正在铺。
遥控小车起源于美国,由于政府对无线遥控小车研发的资助以及相关资助的推动作用,日本、美国、德国等工业大国在遥控小车技术上占据着明显优势。
我国的无线遥控小车研究工作始于20世纪中后期,在国家的863、973等技术发展计划的重点支持下,国内已大范围地进行无线遥控小车的研究。
在研发应用方面取得了重要发展,但是与国际先进还存在一定的差距。
无线遥控实现方法包括蓝牙、红外、射频几种,其中蓝牙技术具有一定优势。
目前在信息家电方面应用正在铺开。
各种家电共用遥控,并可组网与公众互联网相接,共享有用信息。
目前蓝牙技术实现无线遥控的短板在于传输距离短和芯片价格高方面。
随着科技发展,这些问题正在逐步得以解决。
无线遥控机器人有着广阔的应用前景,但是目前国内的无线系统在传输可靠性、传输速度、抗干扰能力等方面仍有不足,亟待提高。
1.1.2设计的意义随着家用电器的越来越普及和人们生活节奏的加快,人们对电器的依赖性进一步提高,对电器的功能要求也进一步增大。
现有每个普通家庭中的遥控器包括空调遥控器、电视遥控器、DVD遥控器、汽车遥控器、门窗遥控器等,门类繁多且不通用,而另一方面,手机已成为人人必备的工具,如果可以用我们必备的手机去遥控所有这些家用电器,可摆脱将来对专用红外遥控面板的依赖,一机在手,万物尽在掌握之中。
因此,本论文先设计一种手机对智能遥控车的控制方案,利用本系统的控制模块可扩展至对所有家电的控制。
2 方案比较与论证2.1无线单元方案与比较无线控制是为了能够实现对智能车的远程遥控,使小车可以在遥控状态下代替人类完成一些危险项目。
目前短距离无线数据传输技术主要有两大类,一类是基于IrDA红外无线通信技术,另一类是基于ISM(Industrial Scientific Medical)频段射频通信技术。
较为主流的几种通信技术之间既存在着相互竞争,但又在某些实际应用领域内相互补充、相互配合,究竟选择何种技术更优越,需要由具体的工作环境来决定。
表1-3所示为四种短距离无线通讯技术主要性能参数。
结论:通过表格可以看出,他们在近距离通讯领域都可以提供可靠的通信服务,但是同时他们的应用有着各自的技术架构的限制。
在以上的几种中,我最终选择了蓝牙无线传输方式。
3 硬件电路设计3.1 总体设计智能车主要现实远程来控制智能车的运动。
其主要模块为:单片机模块、无线通讯模块、电机驱动模块。
其主要结构框图如下图所示。
总体仿真电路图:3.2 单片机模块3.2.1 STC89C52简介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 (在系统可编程)/IAP(在应用可编程),无需专用编程器,无需专用仿真器可通过串口(RxD/P3.0,TxD/P3.1)直接下载用户程序,数秒即可完成;具有EEPROM功能;具有看门狗自动复位功能;共有3个16位定时器/计数器,其中定时器0还可以当成2个八位定时器使用;外部中断4路,下降沿中断或低电平触发中断,PowerDown模式可由外部中断低电平触发中断方式唤醒。
单片机最小系统原理图3.2.2 L298N驱动模块及原理介绍蓝牙小车采用直流电机的驱动采用L298N驱动模块,其原理图如下:L298N驱动模块原理图L298N驱动模块采用ST公司原装全新的L298N芯片,采用SMT 工艺稳定性高,采用高质量铝点解电容,使电路温度工作。
可以直接驱动两路3-16V直流电机,并提供了5V输出接口(输入最低只要6V),可以给5V单片机电路供电(低纹波系数),支持3.3V MCUARM控制,可以方便的控制电流电机速度和方向,是智能小车必备利器。
驱动状态编码3.2.3 蓝牙模块蓝牙模块支持短距离无线传输,可以通过手机与蓝牙模块的配对实现对小车的无线控制。
本小车采用的是HC-05蓝牙芯片,在HC-05芯片里已经将蓝牙协议封装好,只需要通过串口通信实现上位机(手机)与下位机(51单片机)的无线通信。
蓝牙模块中蓝牙芯片的TXD与RXD分别于单片机的RXD与TXD 相接,VCC与单片机电源,GND与单片机GND相连。
HC-05使用R1114作为稳压芯片,将单片机提供的5V电压转换为3.3V的低电压,为蓝牙芯片供电。
蓝牙芯片应用范围:可用于GPS导航,水电煤气抄表系统,工业现场控制,与移动设备无线连接。
4 软件设计4.1 智能车运动控制程序在本次设计中,主程序主要是在单片机的控制下,对蓝牙模块输入的信息进行存储分析,来控制电机驱动,以达到控制小车的前进、后退、左转、右转。
在这个过程中,单片机首先进行初始化,包括设置单片机各个端口的方向,各个变量的初始化,以及单片机振荡频率的校准等。
单片机定时对蓝牙模块串口读数据,如果串口的数据读出,则对读出的数据进行分析,读出的数据如果为0x01、0x02、0x03、0x04、0x05则分别对应小车的前进、后退、左转、右转、停止。
主程序流程图4.2 Android蓝牙客户端设计与实现蓝牙客户端是用户控制智能车的一种手段。
智能车蓝牙控制客户端是基于Android平台开发的应用程序。
客户端选择在Eclipse和Android SDK组合下使用Java语言进行开发。
客户端的开发主要涉及到客户端界面的设计和功能代码的编写。
4.2.1 客户端界面设计根据智能车的实际情况,客户端选择设计成类似赛车类游戏的界面。
界面通过XML来标记和存储资源。
4.2.2 BluetoothCar类设计BluetoothCar类主要实现访问安卓手机蓝牙设备和发送智能车运动指令。
4.2.3 单片机C语言代码#include<reg51.h>#include<intrins.h>unsigned int tmp;unsigned int c=0;sbit EN_left_wheel=P2^0;sbit EN_right_wheel=P2^1;sbit left_wheel_go_ahead=P2^2;sbit left_wheel_go_back=P2^3;sbit right_wheel_go_ahead=P2^4;sbit right_wheel_go_back=P2^5;void init();void ctrl();void turn_left();void turn_right();void go_ahead();void go_back();void stop();void main(){init();while(1){if(RI==1){RI=0;tmp=SBUF;ctrl();}}}void init(){ES=0;SCON=0x50;TMOD=0x20;TH1=0xFD;TL1=0xFD;PCON&=0x71;TR1=1;TI=1;RI=0;ES=1;EN_left_wheel=1;EN_right_wheel=1;left_wheel_go_ahead=0;left_wheel_go_back=0;right_wheel_go_ahead=0;right_wheel_go_back=0; }void ctrl(){switch(tmp){case 0x01:turn_left();break;case 0x02:turn_right();break;case 0x03:go_ahead();break;case 0x04:go_back();break;case 0x05:stop();default:break;}}void turn_left(){left_wheel_go_ahead=0;left_wheel_go_back=1;right_wheel_go_ahead=1;right_wheel_go_back=0; }void turn_right(){left_wheel_go_ahead=1;left_wheel_go_back=0;right_wheel_go_ahead=0;right_wheel_go_back=1; }void go_ahead(){left_wheel_go_ahead=1;left_wheel_go_back=0;right_wheel_go_ahead=1;right_wheel_go_back=0; }void go_back(){left_wheel_go_ahead=0;left_wheel_go_back=1;right_wheel_go_ahead=0;right_wheel_go_back=1; }void stop(){left_wheel_go_ahead=0;left_wheel_go_back=0;right_wheel_go_ahead=0;right_wheel_go_back=0; }5 实验结果及分析用Keil编写程序编译运行通过后,通过串行下载口把BluetoothCar.hex文件下载到单片机中,通过手机客户端发送信息,蓝牙小车实现前进,后退,左转,右转,停止功能。