随着科技的进步与技术的发展,手机已成为生活中不可或缺的一部分。增强手机功能方便人们的生产生活成为各大手机制造商的共同目标。目前安装有Android (安卓系统)的手机越来越受到消费者的喜爱,调查显示Android占据全球智能手机操作系统市场52.5%的份额,中国市场占有率为68.4%,安卓平台下的智能手机已经超越塞班成为全球最具影响力的手机操作平台之一。
802.11b(即Wi—Fi技术)是一种可以将个人电脑、手持设备(如PDA、手机)等终端以无线方式互相连接的技术,它具有传输速度快、传输距离远、网络稳定性和可靠性高、方便与以太网整合和组网成本低等特点。基于这些特点Wi—Fi技术发展相当迅速,如今Wi—Fi技术已经相当成熟并且广泛应用于手机电脑等终端设备。
以往机器鱼都是用PC机来控制,但是灵活性差,且控制起来不方便,我们用安卓手机与Wi—Fi技术相结合的方法来控制机器鱼,其灵活性得到了大大增强。随着机器鱼技术的深入发展,多鱼协调操作会慢慢成为研究的热点,而日益成熟的Wi—Fi技术可以实现一点对多点的控制,并且Wi—Fi技术也有功耗低、传输速度快等优点,可以实现多鱼协调操作。
1 系统总体架构
系统的主体分为四大模块,嵌有安卓操作系统的手机模块、Uart-wifi模块、单片机模块和电源及驱动模块。系统的总体构架如图1所示。
Android手机模块主要完成基于安卓平台下的应用程序的编写及控制界面的生成,其作为客户端,能够被用户控制,是人机信息交换平台;Uart-wifi模块主要进行无线通信,接收手机发出来的信号并将MSP430F149单片机返回的信号发送给手机;单片机模块作为主控单元主要完成串口通信,并通过识别Wi—Fi模块传来的信号对执行部件做出相应控制;电源及驱动模块主要完成对各个硬件模块的供电和稳压。这四大模块相互配合构成一个完整的系统,各个模块间的联系都非常紧密,缺一不可,每一模块必须正常运行,才能保证整个系统准确高效运转。
2 安卓手机模块
首先介绍一下安卓平台和socket通信原理。
Android是以Linux为核心的开放式手机操作平台,系统架构和其它操作系统一样,采用了分层的架构。从架构图看,Android分为四个层,从高层到低层分别是应用程序层、应用程序框架层、系统运行库层和Linux核心层。目前Android已经允许开发者使用多种编程语言来开发Android应用程序,而不再是以前只能使用Java开发Android应用程序的单一局而,因而受到众多开发者的欢迎,成为真正意义上的开放式操作系统,被大多数的开发者视为最有潜力的手机操作系统。
Socket简称套接字,用于实现网络上客户和服务器之间的连接,也就是说网络上两个或两个以上双工方式通信的进程之间总有一个连接,这个连接的端点称为套接字(见图2)。套接字相当于由其名字连接起来的通信线路的端点,这种连接不仅适用于本地进程之间的通信,而且也适用于异地进程之间的通信。用套接字连接的两个进程可双向通信,且两通信端点的工作方式是不同的,一端工作于服务方,另一端工作于客户方。
手机模块作为客户端,主要完成人机信息的交换、控制命令的发出以及返回信息的接收。首先在安卓平台的应用层编写上位机程序,创建操作界面,以实现人机信息的交换并把控制指令转化为数据帧,然后Socket再把数据帧以数据流的形式传送给传输层继而传送给网络层和数据链路层,最后数据流传送至物理层由手机Wi—Fi模块发送出去,实现信息的发送。以下是socket通信的部分程序:
3 Wi—Fi模块
Wi—Fi无线网络包括两种类型的拓扑形式,基础网(Infra)和自组网(Adhoc)。要说明无线网络的拓扑形式,需要首先了解两个基本概念:
AP:也就是无线接入点,是一个无线网络的创建者,是网络的中心节点。我们一般家庭或办公室使用的无线路由器就一个AP。
STA:即站点,每一个连接到无线网络中的终端(如笔记本电脑、PDA及其它可以联网的用户设备)都可称之为一个站点。
Infra也称为基础网,是由AP创建,众多STA加入所组成的无线网络。这种类型的网络的特点是AP是整个网络的中心,网络中所有的通信都通过AP来转发完成:Adhoc也称为自组网,是仅由两个及两个以上STA自己组成,网络中不存在AP,这种类型的网络是一种松散的结构,网络中所有的STA都可以直接通信。
基于自组网中所有的STA都可以直接通信的特点,本文采用了自组网的形式建立手机与Uart-wifi模块之间的通信。手机和所有装有Uart—wifi模块的机器鱼都各自是一个STA,当手机发出控制命令后,每一条机器鱼(即每一个STA)都会接收到这个控制命令,从而做出相应的动作实现对多鱼的控制。
由于数据在网络上是以数据帧的形式传输的,而在串口中是以字节流的形式传输的,我们要想把手机传送的网络数据通过串口传送给单片机就要先进行数据类型的转换。所以我们采用了嵌入式Uart-Wifi模块。Uart-wifi模块是基与Uart接口的符合Wi—Fi无线网络标准的嵌入式模块,内置无线网络协议IEEE802.11协议栈以及TCP/IP协议栈,能够实现用户串口数据到无线网络之间的转换。通过Uart-Wifi模块,传统的串口设备也能轻松接入无线网络。当Uart-Wifi模块接收到网络上传输过来的数据帧时它会将这些数据从帧格式转换成流格式,这是比较容易的,也是大多数普通Wi—Fi模块都能够实现的,但当模块从串口接收单片机返回的数据即接收到流格式数据要将其转换成帧格式发送出去时就比较困难了,它需要一定的规则进行约束。而Uart-Wifi模块使用“自动组帧长度”和“自动组帧周期”来进行约束,能够轻易的将数据从流的形式转换成帧的形式。因此应用Uart-wifi模块作为中间模块进行手机和单片机间的通信能够轻易地解决数据类型转换难的问题(见图3)。
4 单片机模块
本项目采用MSP430F149单片机作为鱼体控制芯片,它是一种高性能、低功耗的16位控制器,广泛应用于通讯控制设备中。作为控制芯片,MSP430F149单片机显著特点是高效、低耗。它的数据处理能力非常强大,虽然寻址方式广泛(7种源操作数,4种目的操作数),但只需要简洁的27条指令即可完成,而且耗电量非常少,能够有效延长机器鱼下水的时间,非常适合做机器鱼控制芯片。
MSP430F149单片机作为“鱼体”的主控MCU,主要用来接收米自Uart-Wifi模块的数据流和控制机器鱼舵机的运转。我们用的机器鱼为三关节杆系机器鱼,这种利用杆系结构来模拟真鱼的运动的操作比较简单,只需要头尾部的配重和鱼尾各个关节转动的角度即可。
机器鱼的动力来自舵机部分,三关节机器鱼有三个舵机,每个舵机由十五位的不同占空比的PWM波控制转动不同的角度,继而控制“鱼体”摆动形成鱼体波。鱼体波是利用杆系机器鱼对真实鱼游动形态的拟合,可以认为鱼体波曲线是鱼体波幅包络线和正弦曲线的合成,它开始于鱼体的惯性。根据鱼体波原理我们编写下位机程序让单片机计算出各个关节的转动角度,产生相应的控制信号控制舵机的运作,使三个舵机相互配合产生相应的鱼体波,推动机器鱼前进。主控芯片的流程如图4所示。
5 电源及驱动模块
电源模块主要分为供电电源和稳压模块,供电电源主要为机器鱼的硬件部分提供电能,稳压模块主要完成对各硬件模块进行供电和稳压。
对于此项目稳压模块主要完成3.3V和5V稳压。我们采用7805稳压器组成的输出5V的电源电路完成5V稳压;采用M5237L外接晶体管VT1构成的输出1A/3.3V稳压电源电路完成3.3V稳压。其各部分稳压需求如图5所示。
7805稳压器是一个输出正5V直流电压的稳压电源电路(稳压电路如图6所示)。它具有使用方便、价格低廉、稳压精度高等特点,其输出的电压基本保持不变。选用它作为机器鱼舵机的稳压电路能够有效保证电压的稳定,为舵机提供稳定的工作环境。M5237L是日本三菱公司生产的输出电压可变型稳压器驱动电路,通过与外接PNP型三极管的组合,可以构成输入输出压差小的三端稳压电路,其输出电压可在1.5—36V之间任意调节,输出电流可通过选择不同的外接三极管来文现(稳压电路如图7所示)。应用M5237L来为Wi—Fi模块稳压,极大的提高了供电电池和Wi—Fi模块的工作效率,为整个系统的正常运转提供了保障。
6 结束语
如今安卓智能手机和Wi—Fi都已非常普遍,甚至美国联邦政府总务署都采购Android手机供政府人员使用,Android平台已经成为最具影响力的操作平台之一。Wi—Fi技术的发展也相当成熟,如今已经广泛的应用于各个领域。本文应用这两项先进技术提出了一种以安卓平台下的智能手机和Wi—Fi技术为基础的操控系统,该系统成功控制机器鱼正常运转,且控制效果良好,可以相信该操控系统在军用、民用和其他领域都有广阔的应用前景。我们对它的控制方法的研究只是一个开始,但已经向前迈出了重要的一步,相信在不久的将来一定会有广泛的发展。
虽然我们在这方面取得了一些成果,但由于经验,技术以及经费等各方面的原因,我们的研究还有许多计划没有实现(例如:我们希望在机器鱼上安装传感设备和自动控制设备,使机器鱼具有自动控制能力,希望通过手机联网实现实时远程控制),而且目前的研究成果也存在许多不太理想的地方,希望在下次设计中得以改进和完善。