手机遥感无线探险车设计报告.docx
《手机遥感无线探险车设计报告.docx》由会员分享,可在线阅读,更多相关《手机遥感无线探险车设计报告.docx(9页珍藏版)》请在冰豆网上搜索。
手机遥感无线探险车设计报告
设计报告
参赛题目:
手机遥感无线探险车
参赛单位:
电子信息与传媒学院
参赛队员:
手机遥感无线探险车
摘要:
阐述一种通过手机蓝牙遥控小车行走的软、硬件设计。
手机蓝牙作为客户端,小车上的蓝牙模块HC-04-D作为服务端。
客户端采用Eclipse开发环境,J2ME编程,服务端采用单片机控制。
双方通过串口仿真协议进行通信,单片机驱动直流电机控制小车行动。
实验结果表明小车可以接收手机遥控信号并灵活地进行前行、倒退、左转、右转和停止等功能。
关键词:
J2ME编程;蓝牙API;串口通信;单片机
引言
蓝牙的创始人是瑞典爱立信公司,蓝牙技术是一种无线数据与语音通信的开放性全球规范,它以低成本的近距离无线连接为基础,为固定与移动设备通信环境建立一个特别连接。
手机之间通过蓝牙实现数据共享已成为常理,将手机变身为遥控器为人们的生活带来无限方便。
遥控小车在工业国防科研等领域应用越来越广泛,例如说:
消防遥控小车、探测小车等。
本文详细阐述了使用蓝牙通信的手机遥控小车前行倒退左转右转和停止等功能的软硬件设计过程。
目录
摘要:
-1-
引言-2-
1蓝牙技术组成-4-
1.1蓝牙无线电技术-4-
1.2蓝牙协议栈-4-
1.3蓝牙互操作性-4-
2手机客户端设计-5-
2.1初始化本地蓝牙-5-
2.2搜索蓝牙设备-6-
2.3搜索蓝牙服务-6-
2.4建立连接-6-
2.5监听键盘事件-7-
3小车服务端设计-8-
3.1串口通信设计-8-
3.2单片机编程设计-9-
4结语-10-
参考文献-11-
1蓝牙技术组成
1.1蓝牙无线电技术
蓝牙无线电工作在全球通用的2.4GHzISM(即工业、科学、医学)频段,支持全双工传输使用IEEE802.15协议。
蓝牙设备即连即用,抗干扰能力强、使用方便。
1.2蓝牙协议栈
蓝牙协议栈包含一个软件栈和一个硬件栈。
蓝牙硬件协议栈由蓝牙硬件提供,蓝牙软件协议栈由软件实现蓝牙软件协议栈提供Java蓝牙API给程序开放人员使用。
1.3蓝牙互操作性
蓝牙互操作性包括三方面内容:
①通用访问Profile定义了设备管理功能性;②服务发现应用Profiles定义了服务发现方面的内容;③串口Profiles定义了互操作设备和模拟串口电缆的能力。
2
手机客户端设计
手机客户端设计采用的是Eclipse开发环境E-clipse是一个开放源代码的、基于Java的可扩展开发平台还需要为Eclipse安装一个开发J2ME程序的-clipseMe插件,同时,为了在电脑上方便模拟自己开发的程序还需要安装无线开发工具WKT这样就不必每次都要下载到手机上安装执行后才能看到效果。
软件设计框图如图1所示。
2.1初始化本地蓝牙
初始化本地蓝牙设备,建立LocalDevice类,包括取得本地设备实例、蓝牙名称、设置发现模式、获得发现代理。
部分代码如下:
publicbooleaninitBT(){
booleansuccess=false;
try{
showInfomation("正在初始化本地蓝牙");
//取得本地设备实例
localDevice=LocalDevice.getLocalDevice();
//记录蓝牙地址
localBTAddress=localDevice.getBluetoothAddress();
//记录蓝牙名称
localBTName=localDevice.getFriendlyName();
localDevice.setDiscoverable(DiscoveryAgent.GIAC);
//取得蓝牙代理
discoveryAgent=localDevice.getDiscoveryAgent();
success=true;}
catch(Exceptione){
System.err.println("初始化蓝牙设备失败:
"+e);}
returnsuccess;
}
2.2搜索蓝牙设备
初始化本地蓝牙设备成功,开始搜索周围蓝牙设备。
每发现一个设备就调用监控接口deviceDiscovered(),在这个接口中添加自己的代码,把搜索到的设备记录在List列表中搜索设备完成调用接口in-quiryCompleted()。
完成搜索后把搜索到的所有设备显示出来,这样就可以手动选择小车上的蓝牙设备,在
WTK模拟器上的模拟效果如图2所示。
2.3搜索蓝牙服务
在设别列表List中,选择一个需要的设备,开始搜索服务,发现服务时自动调用接口servicesDiscovered(),并把服务记录在serviceRecord,服务搜索完成调用接口serviceSearchCompleted()。
如图3所示。
2.4建立连接
根据上一步搜索到服务记录serviceRecord,建立连接要获得URL,调用接口函数serviceRecord.getCon-nectionURL()打开连接Connector.open(url),并打开数据流openDataInputStream()和openDataOutputStream(),就可接收和发送数据,如图4所示。
图2
图3
图4
2.5监听键盘事件
由Canvas类监听按键事件,当有按键按下时,自动调用keyPressed(),并传入按键编码,发出控制信号,控制小车的运动,如图5所示。
图5
3小车服务端设计
小车服务端的设计包括:
蓝牙串口通信设计、单片机编程设计、电源电路设计和直流电机驱动设计。
下面主要介绍蓝牙串口通信设计和单片机编程设计。
把带底板的HC-04-D蓝牙串口模块八PIN接口的第一脚接外接电源(3.3~5V),第六脚接电脑COM1(DB9公头)口的第三脚,第七脚接电脑COM1口第二脚,第八脚接电脑COM1口第五脚。
硬件接好后,设置蓝牙参数设置如下:
初始通信参数为9600,N,8,1。
在配对之前(即配对指示灯闪烁时或PIO3闪动时)发送修改波特率命令,使用超级终端或串口调试助手打开电脑COM1口,就可以输入“AT”进行手动发送命令。
3.1串口通信设计
蓝牙模块与单片机之间的通信使用虚拟串口实现
的,串口为标准配置:
波特率9600、检验位NONE、数据
8位、停止位1位。
串口的初始化函数如下:
voiduart_init()
{
TMOD=0X20;
TH1=0XFD;//晶振11.0592,波特率9600
TL1=0XFD;
SCON=0XD0;
PCON=0X00;
IE=0X90;
TR1=1;
TI=1;
}
中断接收函数只要是负责接受蓝牙发送过来的数据,函数原型如下:
voidserial()interrupt4using3
{if(RI)//接收中断标志位
{RI=0;
uart_char=SBUF;//读取}
}
3.2单片机编程设计
由于无线接收器和单片机通信的方式是串口,为了是小车能迅速响应上位机发送来的信号,单片机使用串口中断的方式,在main函数里面主要就是处理中断接收到的数据,并控制电机的转动,处理函数如下:
While
(1)
{switch(uart_char){
case's':
motor_stop();break;//停止
case'a':
motor_go();break;//前进
case'l':
motor_go_left();break;
//左转
case'r':
motor_go_right();break;
//右转
case'b':
motor_back();break;
//后退
}
}
4结语
介绍了利用手机蓝牙遥控小车行走的软、硬件设计,以蓝牙手机作为客户端,小车上的蓝牙模块作为服务端,通过串口仿真协议进行通信。
它具有编程灵活、自由、易于控制、稳定性能好、扩展容易等优点。
实现了小车的前行、倒退、左转、右转和停止等功能,将手机变身为遥控器,为人们的生活带来无限方便。
参考文献
[1]刘斌.JavaME使用详解—用Eclipse进行移动开发[M].
北京:
电子工业出版社,2007-02:
503~538
[2]金纯,林金朝等.蓝牙协议及其源代码分析[M].北京:
国防工业出版社,2006-06
[3]赵全利,肖兴达.单片机原理及应用教程(第二版)[M].北
京:
机械工业出版社,2007[4]董涛,刘进英,蒋苏.基于单片机的智能小车的设计与制作