基于Android和WiFi的冲击波测试系统设计*
2018-11-13任小军梁志剑尤文斌牛跃听
任小军,梁志剑,尤文斌,牛跃听
(1 中北大学计算机与控制工程学院,太原 030051;2 中北大学电子测试技术重点实验室,太原 030051;3 解放军军械工程学院,石家庄 050000)
0 引言
爆炸冲击波是武器装备的重要杀伤因素之一,因此对冲击波的测试成为武器评测中的重要环节。目前最常用的冲击波测试办法有引线电测法和存储测试法,中北大学电子测试技术重点实验室提出了ZigBee无线传感网络和存储测试相结合的设计方案[1-2],在一定程度上避免了引线电测法前期布置现场的繁琐准备,实现了对冲击波测试记录仪的远程控制。然而,ZigBee由于其传输距离短,且各厂商之间通信协议不同[3],相互之间无法兼容使其抗干扰能力差、安全性能低等缺点逐渐暴露,无法在日益复杂化、恶劣化测试环境下满足系统的要求;另外,ZigBee工作模式下仍需要一台PC机连接ZigBee中心节点,配合无线信号功率放大器才能对记录仪实现远程控制,布置这些装置仍需要连接较长的引线,工作也是相当繁琐[4]。最终,数据采集完成后ZigBee也无法满足大容量、高速率的无线传输要求[5]。
针对以上问题,文中在分析了存储测试法的基础上,以Android智能手机等便携式移动终端作为数据显示和控制终端的开发平台,结合无线WiFi/ARM处理器CC3200和CPLD等设备,通过手机连接无线WiFi实现终端和记录仪的互连及数据传输,最终实现该冲击波测试系统。
1 冲击波无线系统介绍
1.1 系统关键技术
Android是基于Linux操作系统的开源手机操作系统[6],结合智能手机强大的数据处理能力在生产、生活中逐渐占据了广阔的应用市场,大有取代PC的势头。Linux平台为Android提供了基本的用户界面、中间层、底层内核等基础功能,用户可以在此基础上利用JAVA语言开发自定义APP程序。总之,Android操作系统具有其独有优势[7],即开放性、广泛的应用选择,软件设计时可以有较多的选择和参考。
WiFi技术又称为802.11b标准,采用2.45 GHz无线频率,传输速率可达1~600 Mbit/s,与各种直接序列扩频技术(DSSS)兼容。在数据链路层(MAC),WiFi使用了载波监听多点接入/碰撞避免(CDMA/CA)传输模式,同时增加了网络层,使用动态分配ip机制提高了数据传输的安全性[8],具有突出的技术优势[9]。WiFi无线电波覆盖范围广,传输半径可达50~300 m,无需布线,非常合适移动应用。健康安全,支持WAP/WAP2等高等级加密和安全机制,具有极强的抗干扰和安全加密机制,资费低成本。
1.2 系统结构和工作流程
该冲击波测试系统采用C/S架构[10],主要由智能手机客户端、记录仪服务器和数据采集端组成。系统的结构布局如图1所示,电源管理模块给WiFi模块、CPU模块和时序模块供电;准备就绪后,用户在智能手机客户端点击对应按钮通过无线WiFi向记录仪传输命令信息;WiFi模块网络处理器接收到来自手机的无线信息后,从中解密提取有效命令并传输给CPU主控模块ARM微处理器,CPU根据命令控制时序模块产生时钟、片选存储芯片或进行数据采集和发送等。
2 系统设计与实现
2.1 硬件平台设计
系统传输和控制单元采用TI公司的CC3200,这是一款集成应用MCU子系统、WiFi网络处理器子系统和电源管理子系统于一体的强大功能处理芯片[11],大大减少系统芯片使用量,记录仪体积更加微型化。应用MCU采用ARM Context-M4内核,运行频率为80 MHz,具有强大的运算处理能力、丰富的片内外设和独立可编程、通用/复用输入输出(GIOP),可以控制冲击波数据采集和传输等;WiFi网络处理器特有WiFi Internet-on-a-chip专用MCU,ROM中自带了WiFi以及互联网TCP/UDP协议栈、802.11b/g/n射频基带、MAC等,完全省去了WiFi模块和其他MCU互联的处理负担;电源管理功能支持宽范围电源电压,可以配置为高/级低功耗模式。CPLD芯片选用Xlinx公司的XCR3256,该芯片强大的并行处理能力能够为系统的多线程并行工作提供准确的时序。选用三星公司的大容量FLASH存储芯片k9k8g08u0b作为数据存储单元,其读写速度高达5~7 MB/s[12],通过SPI串行外部接口与WiFi模块传输数据。如图2所示为系统的硬件设计框图。
2.2 Android平台软件设计
2.2.1 整体设计方案
Android客户端在系统中主要的功能分为两部分:装置读数和配置记录仪工作状态。读数前,软件后台自动载入记录仪装置的WiFi热点网络配置文件供软件选对目标服务器,然后连接记录仪服务器读取数据并实时显示数据波形;配置记录仪工作状态时,点击装置号按钮向对应的记录仪发送控制命令并实时监测记录仪的工作状态转换,给出状态指示,此功能通过Android系统的多线程实现。图3所示为智能手机软件系统的基本功能流程,图4所示为软件程序模块结构框图。
2.2.2 用户界面设计
软件的界面系统主要通过Android Studio的图形用户界面编程系统(GUI)设计,其具有丰富的图形界面组件[13]。人性化的操作界面极大程度的吸引了用户的青睐,系统在界面设计时采取了极简主题,操作简单,上手迅速。如图5所示为记录仪工作状态控制中心界面示意图。
数据波形绘制界面主要功能是显示数据波形,主要采用了Github最新发布的hellocharts-android开源图表库,该库在图形绘制方面支持以下Chart类型:Line Chart、Column Chart、Pie Chart、Bubble chart、Combo chart和Preview charts;此外,还支持滑动、平移、缩放、自定义坐标、预览、动画等图像处理功能。系统实现时,用到LineChartView控件的主要实现代码以下:
LineChartView.setZoomEnabled(true)∥支持缩放;
LineChartView.setInteractive(true)∥支持图表与用户互动;
LineChartView.setValueSelectionEnabled(true)∥支持波形选中;
LineChartView.setLineChartData(LineChartData)∥添加波形数据。
3 系统网络通信功能的实现
3.1 系统网络组织
系统采用WiFi的无线mesh自组网技术形成自定义的类Ad Hoc局域网,所有记录仪装置将处于同一个无线局域网内。主要实现方案为:将某一记录仪装置设置为WiFi站点模式(SP),其余记录仪设备配置为一般接入点(AP)建立关联,并加入当前站点设备局域网中。此过程中关联设备扫描周围WiFi信号并发出连接请求,WiFi站点对其进行认证,使用动态主机配置协议(DHCP)为加入的关联设备动态分配IP地址,所有AP设备完成“入网”,客户端只需连接站点WIFI信号即可通过IP地址路由实现对局域网内所有记录仪的远程控制,可以通过局域网广播形式实现对所有记录仪的统一触发。如图6所示为系统的网络拓扑结构。
3.2 UDP通信实现
基于Android手机和记录仪通信的实现主要分为数据接收和发送两部分[14],系统记录仪CC3200芯片采用多线程完成,使用Socket机制的UDP协议编写数据收发函数,函数名分别为UDPRecThread和UDPSendThread。Socket(套接字)在通信时由客户端和服务端两部分组成,CC3200服务端使用ServerSocket,Android手机客户端使用ClientSocket,两个Socket之间建立连接可以相互发送信息,实现系统的协调工作。
基于UDP的Socket服务器设计流程主要是:1)创建一个套接字对象Socket,开启服务端套接字;2)绑定设置本地IP、端口;3)循环等待客户端连接;4)响应客户端请求;5)关闭连接和套接字[15]。
基于UDP的Socket客户端设计流程是:1)创建套接字对象,开启客户端套接字;2)设置套接字远程端口和IP,这是正确找到目标服务器和数据准确发送的保障;3)连接服务器;4)发送数据请求;5)接收数据;6)关闭连接和套接字[15]。
3.2.1 客户端网络设计
Android客户端系统在通信过程中主要功能包括AP信号的扫描、AP信号选择以及与服务端的交互,这里主要调用了SDK中的WiFiManager和WiFiInfo两个类[16]。通过WifiManager.getScanResults()返回一个ScanResult列表,其中包含了扫描WiFi热点的网络名字(SSID)、接入点地址(BSSID)、信号强度(Level)等信息,根据SSID连接服务器WiFi热点信号;WiFiinfo对象通过WifiManager.getConnectioninfo()方法获取,通过WiFiinfo.getIpAddress()来获取AP的IP地址,供ClientSocket找到目标服务器,实现客户端到服务器的信息传输。
3.2.2 服务器网络设计
CC3200服务器系统在通信过程中主要功能包括配置工作模式、WiFi热点SSID和PassWord以及响应与客户端交互,主要调用了CC3200的SimpleLinkNetAppEventHandler和SimpleLinkWlanEventHandler事件机制。首先,使用sl_WlanSetMode函数设置CC3200为AP(接入点)工作模式;通过TI公司提供的WiFi SmartConfig工具配置CC3200的WiFi热点的Network Name(SSID)和Password[17];在客户端连接到无线WiFi AP时,触发网络连接事件SimpleLinkWlanEvent,在事件处理函数中获取客户端设备网络接口信息;客户端向服务器发送信息触发SimpleLinkNetAppEvent,函数得到客户端的网络IP地址和网关,ServerSocket使用该IP和网关信息获取客户端发来的命令信息和向客户端返回响应数据。
4 系统测试
将设计好的硬件记录仪和手机APP搭建成测试系统,在记录仪无线WiFi覆盖范围内,使用智能手机在不同距离范围内远程操控记录仪,测试结果表明:手机在距离记录仪110 m范围内WiFi连接稳定,指令发送和响应准确,系统运行稳定正常;使用iperf和Network Tools软件测得该过程中数据平均传输速率为40 Mbit/s。
使用该测试系统在靶场对某型号对地炮弹进行了冲击波超压测试,18套冲击波测试记录仪分布在如图7所示的编号结点处,爆心和记录仪传感器距地高度为0 m。如图8(左)所示为11 m处10号记录仪节点测得的冲击波数据经过WiFi网路传输到Android智能手机显示的波形曲线,图8(右)为左图定标、滤波处理后波形曲线,可以看出基本符合冲击波的衰减规律,与预期试验数据基本吻合,证明了设计的可靠和成功。
5 结语
文中采用Simple Link WiFi CC3200微控制器和Android智能终端设计并实现了基于Android和WiFi冲击波测试系统。该系统利用时下广泛流行的Android智能手机作为控制终端开发平台,应用程序开源设计和实现,极大的提高了软件系统的开发效率和跨平台性,软件系统具有了升级换代的特性;利用开放的Android平台结合WiFi实现对记录仪远程控制和装置读数,避免繁琐的前期布线准备和笨重的PC,具有很好的便捷性,大大提高了试验效率;无线WiFi保证数据传输的安全性。