可控源音频大地电磁测深CSAMT[1](ControlledSource Audio Magnetotellurics)法通过同步发射接收一组不同频率的信号,测量大地的复电阻频谱,从而得到地下不同深度介质电阻率的变化规律。
在CSAMT法勘探过程中,需要根据探测目标布置发射源。在接收端,要将仪器放置到各采集点,在大部分情况下,工作人员只能通过步行的方式将设备送到采集点。这些特点决定了对数据进行补测要浪费大量的人力和物力,因此,迫切需要能够在工作现场或远程实时监测采集的数据质量,以便工作人员及时发现采集过程中发生的问题并分析原因,尽早采取相应措施。
目前,加拿大凤凰公司的V8采用TDMA进行各站之间的数据传输;吉林大学仪器科学与电气学院自主研发的JLEMI[2]分布式采集系统采用了GPRS,可以在远程工作站实时监测采集的数据。这些方法依赖于移动网络,在信号质量不好的情况下工作会受到影响,甚至无法监测。
除了移动网络之外,现在应用比较广泛的无线传输技术[3]有ZigBee、红外线数据传输、WiFi等。但当前的手机中很少直接支持ZigBee,红外线数据传输方式要求进行传输的设备之间必须对准,而且中间不能有阻挡。蓝牙是一种支持设备短距离通信(一般10 m内)的无线电技术,采用分散式网络结构以及快跳频和短包技术,支持点对点及点对多点通信,工作在全球通用的2.4 GHz ISM频段,其数据速率为1 Mb/s,采用时分双工传输方案实现全双工传输,现在手机、平板电脑等基本都配置了蓝牙设备。
基于上述分析,本文采用蓝牙无线传输技术[4],实现了采集站与Android手机间的数据传输。通过在采集站中嵌入蓝牙模块,在采集数据的同时,将数据以特定格式发送到手机中,在手机端对接收到的数据进行预处理并实时显示。将该系统应用到JLEMI工作过程中,为工作人员带来了很多便利。
1 系统组成
本系统由CSAMT采集站与Android手机端组成,二者通过蓝牙协议[5]进行数据和指令的传输,如图1所示。其中采集站安装Windows操作系统,主要负责数据采集,并通过嵌入的蓝牙模块将采集的数据传输到手机端;手机端接收数据,并对数据进行平滑预处理,然后以曲线的形式显示在屏幕上,提供给工作人员进行实时监测。
图1 系统组成示意图
2 采集站
本系统中采集站[6]主要负责数据采集,并对采集的数据进行简单预处理,将原始数据和预处理结果保存到本地磁盘中。除此以外,还可以通过嵌入的蓝牙模块将预处理结果传输到手机端。
采集站启动后,首先开启蓝牙设备并监听手机端接入请求。当有手机接入后,开启新的线程并监听处理手机端发来的命令。如果手机端需要监测数据,则必须首先向采集站发送相应指令。当采集站收到指令后,读取采集到的数据,按照自定义的协议进行封装,并向手机端传输。在数据传输期间,手机可以通过向采集站发送命令,控制数据传输的暂停与退出。
采集站端采用了开源库bluecove[7]实现对蓝牙模块编程,并引入jdom.jar包实现对xml文件的读取与解析[8]。
3 手机端
当前应用比较广泛的手机操作系统包括Android、iOS、BlackBerry和Windows Phone等。市场研究公司Strategy Analytics在2013年11月1日发表报告称,2013年第3季度全球智能手机出货量在2012年同期的1.728亿部基础上增长45%,达到2.514亿部,其中Android市场份额为81.3%,成为现在的主流手机操作系统。因此本系统的手机端基于Android操作系统开发。
目前,市面上已经存在许多基于Android操作系统的应用软件,如基于蓝牙的健康服务终端应用软件、基于GPRS通信的远程监控应用软件以及基于各种通信协议的应用软件等,这些应用软件给现代生活带来了极大便利。
3.1 工作流程
本系统的手机端应用程序包含1个Service和2个Activity。其中Service在后台运行,其作用是监听本手机端的状态,当有事件产生时,与2个Activity产生交互,控制程序的运行。主Activity控制程序初始化、数据接收、预处理和曲线绘制;Activity2的作用是搜索周围的蓝牙设备,显示搜索结果,接受用户选择,并将选择结果传递给主Activity。手机端程序流程图如图2所示。
图2 手机端整体流程图
(1)启动蓝牙
首先检查手机是否支持蓝牙,如果支持,则获取蓝牙适配器对象,并在AndroidManifest中申明蓝牙使用权限,开启蓝牙。
(2)搜索采集站蓝牙设备
在手机端搜索采集站蓝牙设备前,先要设置采集站端蓝牙设备可见,以便手机端发现采集站蓝牙设备进行配对。手机端通过使用BluetoothAdapter的startDiscovery()方法来搜索蓝牙设备,在这个过程中,系统会发送以下3个广播:
ACTION_DISCOVERY_START:开始搜索
ACTION_DISCOVERY_FINISHED:搜索结束
ACTION_FOUND:找到设备
手机端可以注册相应的BroadcastReceiver对象来接收相应的广播,以便做出响应。
(3)请求建立连接
手机端搜索到采集站蓝牙设备后,可以获取其BluetoothService,然后利用listenUsingRfcomm_WithServiceRecord(String, UUID)方法获取对应的BluetoothSocket,最后调用BluetoothSocket的connect()方法请求连接。如果手机端的UUID同采集站蓝牙设备的UUID匹配,并且连接被采集站端蓝牙设备接受,则连接成功。
(4)接收指令和数据
请求连接成功后,手机端和采集站的蓝牙设备分别监听端口。当手机端向采集站发送一个读取数据指令,采集站收到该指令后,首先根据自定义的协议对数据进行封装,然后利用蓝牙协议传输到手机端。手机端的主Activity监听数据端口,当接收到数据后,对其进行解析,得到发送的原始数据,为后期的数据预处理和曲线绘制做准备。
(5)对接收到的数据进行绘图显示,其中可以通过选项来控制是否需要在显示之前对数据进行平滑。
3.2 曲线绘制
本系统选择开源类库Achartengine[9]作为绘图工具。该类库针对Android系统开发,易于二次开发,能够绘制折线图、饼状图、柱状图等多种曲线。在本系统中,数据以折线图的形式显示。
对于CSAMT数据曲线,由于发射频率和幅值都相差多个数量级,因此,需要以对数坐标的形式显示。而Achartengine不直接支持对数坐标,本文通过对坐标轴的改进,实现了自定义坐标轴,从而实现了数据的对数显示。主要步骤如下:
(1)将x轴改造为对数坐标
利用addXTextLabel函数实现x轴坐标转换,该函数的基本格式为:addXTextLabel(double x,String text),其中x为x轴坐标点,text为转换后显示在x点的坐标值,如果不显示,则可以设为空。x和text之间的关系为x=log10(text)。利用该方法,可以添加一系列的x轴对数坐标点。
(2)将y轴改造为对数坐标
原理和x轴相同,利用addYTextLabel(double y,String text)函数实现y坐标转换。
(3)数据显示
将接收到的数据转换成对数,并利用series.add()添加到绘图中显示。图3显示了手机中基于Achartengine绘制的数据曲线图。因为本系统所应用的采集站有4个通道,所以共有8条曲线,包括4条幅频特性曲线(上半部分)与4条相频特性曲线(下半部分)。
图3 采集数据的曲线图
Achartengine为静态绘图,为达到实时更新的动态效果,需要对其进行动态刷新,即每当有新数据到来时,便进行一次点集的更新和绘图的刷新。点触曲线中某点,可以显示该点对应的值,方便现场分析和判断。
3.3曲线平滑滤波
CSAMT法测量过程中,容易受到噪声的干扰,在数据中出现“飞点”现象,会对后期的数据处理造成极大的干扰,甚至导致假结果。本文使用基于各向异性扩散的滤波方法[10]对数据进行预处理,算法模型为:
该方法以梯度的降函数做扩散速度,在梯度大的点扩散量较小,在梯度小的点扩散量较大,其优点是在滤除噪声的同时能保护曲线的局部特征。梯度的降函数相当于边界保护函数的作用,如式(2)所示:
其中,k为阈值参数。
利用该算法对数据进行平滑的效果如图4所示。
图4 基于各向异性扩散算法的数据平滑效果图
本文根据CSAMT法工作环境的特点,将蓝牙无线数据传输技术引入CSAMT法的数据采集过程中,手机端在接收到采集数据后可以进行平滑处理,并通过对Achartengine类库中坐标轴的改进,实现对数坐标显示,在实际应用中得到了较好的效果。本系统既有利于进行CSAMT数据的集中监测,也可以为现场工作人员观察数据采集质量、判断故障点提供参考和支持,提高其工作效率。本系统的应用可以使采集设备不再配备显示屏,有助于进一步减小体积,降低功耗。
蓝牙的数据传输距离有限,不能达到远距离数据监测的目的,下一步工作是基于GPRS或WiFi无线传输技术,实现手机中的远距离数据监测。
参考文献
[1] 汤井田,何继善.可控源音频大地电磁法及其应用[M].长沙:中南大学出版社,2005.
[2] 张文秀.CSAMT与IP联合探测分布式接收系统关键技术研究[D].长春:吉林大学,2012.
[3] 石明明,鲁周迅.三种无线通信协议综述[J].通信技术,2011,7(44):0072-0073.
[4] 杨瑞.基于蓝牙通信的短信平台设计与实现[J].计算机应用与软件,2011,2(28):218-219.
[5] 钱志宏,刘丹.蓝牙技术数据传输综述[J].通信学报,2012,4(33):0143-0152.
[6] 陈健.宽频带时频电磁接收机关键技术研究[D].长春:吉林大学,2012.
[7] BRUCE H,RANJITH A.Bluetooth for java[M].Berkeley:Apress,2003.
[8] 方跃坚,余枝强,翟磊,等.一种混合并行XML解析方法[J].软件学报,2013,24(9):1196-1206.
[9] Google.Achartengine-Charting library for Android Google Project[EB/OL].(2010-08)[2013-12-10].http://code.google.com/p/achartengine.
[10] 严家斌,刘贵忠.基于各向异性扩散的ROBUST阻抗估计方法[J].地球物理学进展,2007,22(5):1403-1407.