基于Android的无线遥控汽车的设计与优化
2016-05-14张超
张超
摘 要:基于Android平台的远程遥控小车,可以使用智能手机通过蓝牙(或wifi)发出指令。该车可以躲避障碍物,实时视频传输,可用于在发生自然灾害时执行搜索任务。经过相关参数的测试,实验表明该智能小车性能稳定、操控性好,视频传输稳定。通过对各部件电流消耗的分析,提出了优化方案。
关键词:蓝牙;wifi;遥控小车;Android设备
1 概述
随着手机移动技术迅速发展,智能手机的功能越来越强大,从单一通话和收发短信,发展到可进行移动搜索、全球定位导航、手机电视、实时视频通信等其它强大功能。Android是一种以linux为基础的开源操作系统,基于此平台的手机应用渗透到生活的方方面面。基于Android平台的无线遥控汽车,通过蓝牙(或wifi)发出指令。该车可以躲避障碍物,实时视频传输,可用于在发生自然灾害时执行搜索任务,具有一定的实际意义。
2 系统概述
该系统是由一个遥控小车单元和一个运行在Android智能手机的应用程序组成。
总体方案设计:
总体硬件框图如图1所示。
主板采用Arduino公司的Mega开发板,它是一个开源的单板机控制器,采用了基于开放源代码的软硬件平台,构建于开放源代码 simple I/O 接口版,并且具有使用类似Java,C 语言的Processing/Wiring开发环境。Arduino Mega是一块以ATmega2560为核心的微控制器开发板,提供54个数字输入/输出引脚(其中6可以作为PWM输出)8个模拟输入,2个UART(硬件串口),一个16 MHz的晶体振荡器,一个USB连接,输入电压6-12V 。主板产生1 前进/后退,左/右脉冲,通过直流伺服电机控制小车运行。
副板采用Arduino 公司的UNO板,微处理器是ATmega328,具有14路数字输入/输出口(其中6路可作为PWM输出),6路模拟输入,一个16MHz晶体振荡器,一个USB口,一个电源插座,一个ICSP header和一个复位按钮。副板连接一个距离传感器,距离传感器提供2-400厘米的非接触式测量功能,精度可达到3毫米。
一个VGA摄像头连接到路由器模块,该装置安装在主控板后面。由摄像头拍摄的视频输入到路由器通过wifi连接到Android设备,该视频实时显示在Android应用程序。
3 下位机软件设计
主程序流程:
本系统的软件完成以下功能:
(1)系统初始化:包括I/O口工作模式、串口、中断、PWM的初始化,同步手机应用程序等。
(2)接受上位机android设备的控制命令。
(3)控制电机的运转方向和速度。
副板上安装有距离传感器,ATmega 328微处理器通过计算距离传感器发出脉冲和接受信号之间的间隔时间来确定与障碍物的距离,如果此距离小于20厘米,将产生中断,中断命令将被发送到主板的atmega2560微处理器上,主板将关闭伺服电机,避免可能出现的碰撞。如果计算出的距离大于20厘米,不产生中断,小车继续前进。
4 基于Android智能手机应用程序开发
4.1 Android系统架构
Android系统架构由5部分组成,分别是:Linux Kernel、Android Runtime、Libraries、Application Framework、Applications。
4.2 方向控制
首先我们创建一个传感器管理器和一个传感器监听器,管理器用来管理传感器以及创建各种各样的传感器,监听器用来监视传感器的变化并且进行相应的操作
private SensorManager sensorManager;private MySensorEventListener mySensorEventListener;
mySensorEventListener= new MySensorEventListener();
这个监听器当然是我们自己定义的,在方向感应器感应到手机方向有变化的时候,我们可以采取相应的操作。
private final class MySensorEventListener implements SensorEventListener{
public void onSensorChanged(SensorEvent event) {
if(event.sensor.getType()==Sensor.TYPE_ORIENTATION){
float x = event.values[SensorManager.DATA_X];
float y = event.values[SensorManager.DATA_Y];
float z = event.values[SensorManager.DATA_Z];
x表示手机指向的方位,0表示北,90表示东,180表示南,270表示西
Y表示沿x轴的倾斜度,0表示水平,90表示头向上垂直,180表示面向下水平,270表示头向下垂直。
Z表示沿y轴的滚动角度,0表示水平,90表示右侧向上垂直,-90表示左侧向上垂直。
应用程序首先调用方向传感器,获取手机和一个通过Android传感器管理器定义的默认坐标之间的角度信息,然后应用程序根据预定义的阈值将方向数据转换为执行命令。
5 系统特性和实验系统
经测试遥控小车的最大速度约为30厘米/秒,可以携带多达450克负荷。在开放空间本单元和Android设备之间通过蓝牙或Wi-Fi通信的最大范围为10米和20米。经测量,当设置在20厘米检测距离时,本单元与障碍物之间自主停车距离在2厘米至7厘米。小车是由两个9伏电池供电,经测量在满负荷条件下每个电池的最大消耗电流约0.73A
6 结论和改进
基于Android平台的无线遥控小车,可以通过Android设备(如智能手机或平板电脑)无线控制。该系统具有良好的操控性和实用性,可以通过狭小的空间执行搜索、探查任务。电流的测量结果表明,满负荷下系统的功率消耗是比较高的。然而,通过数据分析我们了解哪些组件消耗大部分的能量,这为我们进一步优化设计提供了依据。
(1)计划修改Android应用程序实现自主控制。例如,当小车前面没有障碍物的时候,我们通过Android应用程序将关闭距离传感器,这样可以减少电量消耗。
(2)电流消耗试验还表明,对于执行连续工作的小车,电量消耗还是比较大的,由于该小车可以携带更多的负载,因此可以安装更大能量的电池组。
(3)替换更强大和低功耗的单片机以增加处理能力,并将进一步降低功耗。
参考文献
[1]李宁.Android开发权威指南[M].北京:人民邮电出版社,2011.
[2]陈德益.基于嵌入式单片机的电机控制系统设计[J].计算机仿真,2010,27(1):359-362.
[3]林志翔.新型多功能智能小车的设计与应用[J].现代电子技术,2011,34(6):134-136.