《电子技术应用》
您所在的位置:首页 > 通信与网络 > 设计应用 > 基于Android的脑电信号无线采集与分析系统设计
基于Android的脑电信号无线采集与分析系统设计
2014年微型机与应用第13期
谢 宏,钱门超
上海海事大学 信息工程学院,上海
摘要: 提出一种基于Android平台的脑电无线采集与警觉度监测终端的设计。采用Wi-Fi作为无线通信方案,以Android手机作为上位机,在手机上设计应用程序,通过手机应用程序可以方便地实现对采集设备的参数设置、无线连接、数据接收、波形显示、数据分析和文件存储。Android手机端通过Wi-Fi与下位机建立通信,实时接收Wi-Fi模块发送的脑电数据,绘成脑电图,并能通过手机端向下位机发送控制命令,再将基于极限学习机的脑电信号分类算法通过Java编码移植到手机内部,分析脑电信号所携带的警觉度信息。立足便携式脑电信号无线采集系统,在系统中加入基于Android系统的传输控制方法,并植入训练速度快、分类效果好的算法程序,为便携式脑电信号采集提供了一个新方案。
Abstract:
Key words :

  摘  要: 提出一种基于Android平台的脑电无线采集与警觉度监测终端的设计。采用Wi-Fi作为无线通信方案,以Android手机作为上位机,在手机上设计应用程序,通过手机应用程序可以方便地实现对采集设备的参数设置、无线连接、数据接收、波形显示、数据分析和文件存储。Android手机端通过Wi-Fi与下位机建立通信,实时接收Wi-Fi模块发送的脑电数据,绘成脑电图,并能通过手机端向下位机发送控制命令,再将基于极限学习机的脑电信号分类算法通过Java编码移植到手机内部,分析脑电信号所携带的警觉度信息。立足便携式脑电信号无线采集系统,在系统中加入基于Android系统的传输控制方法,并植入训练速度快、分类效果好的算法程序,为便携式脑电信号采集提供了一个新方案。

  关键词: Android;Wi-Fi;脑电采集;无线传输

  脑电信号(EEG)是由脑神经活动产生的一种电活动,它含有大量的大脑活动信息,随着社会的快速进步,交通事故在日常伤亡事件中占有较大比重,为此采集脑电信号并实时监测驾驶人员偏劳状态对于预防由于驾驶员疲劳和警觉度不高造成的交通事故尤为重要。传统脑电采集设备大部分被应用在医院、实验室等特殊场合,在精度上能够满足医疗和研究的要求,但无法应用到日常生活中,尤其是在驾驶活动当中,并且成本昂贵、体积较大、移动不便。因此设计出一款体积较小、便携性较好的EEG信号采集与监控系统具有重要的意义和价值。

  移动通信等技术的发展为临床诊断和治疗带来了更多的技术方法[1-2]。Android手机以其成本低、用户体验好等优点已经在智能手机市场占有90%左右的份额,目前以Android为系统的智能手机、平板电脑等已经广泛应用于健康医疗、远程控制等领域,如YUNGKOOK J[3-4]等就将智能手机应用到心电信号监护系统中,用于对心电信号的实时监护、自我诊断等;Song Weibo等[5]设计了基于Android手机的身体监护系统,用户可以通过手机屏幕观察采集到的人体生理数据。大部分Android手机都自带有蓝牙、Wi-Fi通信功能,如李高尚等人[6-7]使用蓝牙作为无线传输方式,取代了传统有线传输方式,实现了无线采集的功能,但存在传输速率低和传输距离短等缺点,不便于远距离采集系统的实现。

  本文结合Android和Wi-Fi两者的优势,在手机上设计移动应用软件,通过手机完成对采集前端的控制并接收无线模块发送的数据,最后对数据进行算法分析,实现了整个采集过程以及警觉度的监控。

  1 系统总体结构


001.jpg


  系统总体结构如图1所示,包括ADS1299采集前端[8]、Wi-Fi处理发送模块、Android智能手机终端应用。前端采集模块选用TI公司的ADS1299作为脑电采集的模/数转换器,ADS1299以其便携性、紧凑性、低功耗性被专门用来进行脑电信号采集。无线传输模块采用Gain Span公司的超低功耗无线芯片GS1011[9],GS1011是1个具有超低功耗的Wi-Fi无线片上系统,它包含1个802.11射频前端、媒体控制器和基带处理器,片上Flash和片上SRAM,2个ARM7处理器。GS1011的APP CPU将ADS1299转换的脑电数据、接收到的AP的信号强度的信息进行处理,然后通过WLAN CPU将数据打包成符合IEEE 802.11协议的数据无线发送出去;在接收端,无线接入点AP接收无线载波发送过来的数据,然后传送给手机控制端,手机对接收过来的数据解包并作数据处理。

  本文主要论述手机移动终端软件的设计,手机终端的程序主要包括三个功能:(1)控制下位机采集;(2)接收下位机采集数据并作数据处理;(3)建立警觉度水平的离线和在线分析系统。控制功能的实现过程为:通过手机发送带有控制命令的数据包到Wi-Fi模块,Wi-Fi的WLAN CPU接收数据,解析自定义数据格式数据包得到命令,将命令通过SPI接口发送给ADS1299采集前端。手机接收Wi-Fi模块发送过来的数据包,解析得到反馈的信息或者有用的EEG数据,实时处理数据。

  2 Android终端软件设计与实现

  Android是一个基于Linux平台的操作系统[10],主要应用于智能手机、平板电脑等手持设备。Android的架构图如图2所示,Android的架构主要由应用程序层、应用程序框架层、库、Android运行时库、Linux内核组成。

002.jpg

  Android应用程序以Java为开发语言,以Eclipse作为开发环境,并配合Android SDK、Java JDK和ADT插件完成对软件的开发与调试。Android的SDK提供了可视化的模拟器,同时Android平台提供了2D的图形支持,在完成程序代码的编写后,可以将程序发布到模拟器上运行,如果应用程序涉及蓝牙、摄像头等操作,此时需要在真机上进行调试。

  2.1 通信协议设计

  通信协议是通信双方进行沟通的语言,协议的设计应该简单明了,避免增加冗余度,通信协议的定义与传输的数据被编排成字节数组的格式。本设计规定手机端为通信的客户端,GS1011为通信服务端。表1为定义的数据帧格式。

006.jpg

  (1)报头:固定为55AD两个字节,表示一个帧的开始。

  (2)操作指令:是用来区分控制命令,它与ack组合用来表示各种操作和具体类型。“L”代表连接服务器;“C”代表配置ADS1299相关寄存器;“A”代表采集操作,如开始、停止等。协议的具体内容如表2所示。

007.jpg

  (3)数据包长度:从报头到数据段的最后一个字节的总和。

  (4)数据:代表操作的具体数据,如往寄存器里写入的数据、采集到的数据等,如果没有数据设为0。

  服务端使用C语言开发,采用结构体封装数据,对于Android客户端,由于Java语言没有结构体这种类型,因此可以先将各种类型的数据进行转换,模拟结构体,然后将数据打包发送。

  2.2 界面显示模块

  界面显示模块主要通过Activity嵌套Fragement实现。根据功能的需求,手持终端应用程序设置了4个主要功能界面:波形显示界面、Wi-Fi管理界面、ADS1299配置界面、算法分析界面和文件列表界面。(1)主界面主要嵌套了用于波形显示的SurfaceView以及一些功能按钮,由于采集频率较高,一般的ImageView很难满足实时显示波形的需求,SurfaceView采用双缓冲模式,在高速刷新界面方面较其他View有较大优势;(2)采集配置界面用来设置ADS1299的参数;(3)为了提高系统的集成性,将Wi-Fi管理模块从手机内部集成到采集终端软件中来,方便对Wi-Fi网络的管理;(4)算法分析界面中,第一个Spinner选择控件用来选择模拟实时或者实时模式,另一个Spinner控件用来选择算法,本文中暂时集成了极限学习机的分类算法,文件界面用于显示保存的历史数据,主要使用ListView分条展示。整个界面由1个Activity嵌套了4个Fragement来实现,使用中可以通过屏幕左右滑动选择要使用的界面,布局由XML文件完成。

  2.3 网络通信模块

  本系统采用UDP传输协议,UDP(User Datagram Protocol)是一种无连接的传输层协议,通信流程图如图3所示,它不保证数据传送的可靠性[11],也正是由于它的这一特点,使得UDP协议有着快速、简单、便捷的优点,适于进行实时性要求高、数据量大的数据传输。本文利用UDP协议传输速率快、实时性高的特性,将采集到的脑电数据传输到上位机进行数据处理。

003.jpg

  当手机与GS1011处在同一个局域网之后,开始进行数据交互。系统利用基于C/S工作模式的Socket通信接口来实现上下位机之间的通信,手机作为客户端,无线采集设备作为服务端,客户端连接到服务端至少需要服务端的IP和端口号,建立UDP Socket连接主要用到两个类:DatagramSocket(端到端通信的类)和DatagramPacket(通信数据的数据报类)。DatagramSocket是Android系统提供的一个公共类,它可以和任何可用或者指定的端口进行连接。在两个端点的通信中需要用到的方法有Receive(DatagramPacket packet)、send(DatagramPacket pack)和close()。在接收和发送数据时,需要构造一个DatagramPacket对象,它有几种构造方法,这里用于接收数据的DatagramPacket带有byte[]和int length两个参数,发送数据时DatagramPacket带有4个参数:byte[]sendbuff、int length、InetAddress serverAddr和int serverPort。

  发送数据主要代码为:

  DatagramPaeket packrSend=new DatagramPacket(sendbuff,

  Sendbuff.length,serverAddr,portNumber);

  ds.send(packetSend);

  接收数据主要代码:

  DatagramPacket packRec=new DatagramPacket(recbuffer,recbuffer.length);

  ds.receive(packRec);

  2.4 算法分析模块

  对于算法模块,考虑到移动平台警觉度分析的特殊性,尤其是手机资源和配置还很有限,并且考虑到最终需要实现算法分析和数据采集的同步性和实时性,希望算法的运算过程较快速,占有资源较少。为此,本文提出基于极限学习机的脑电信号警觉度的分类算法,并将算法进行了Java编码,移植到手机内部,用于对采集到的数据进行实时和模拟实时分析。极限学习机是根据单隐含层前馈神经网络(SLFN)提出的一个新算法[12-13],极限学习机令隐含层的激活函数为无限可微函数,可以随机选择和调整隐含层节点的参数,使SLFN从复杂的非线性系统变成简单的线性系统[14],较好地解决传统神经网络训练时间长、参数难确定等问题。

  给定训练样本:

  P={(xi,y)|xi∈Rd,y∈R,i=1,2,…,n}(1)

  xi=[xi1,xi2,…,xim]∈R,y=[y1,y2,…,ym]∈R

  极限学习机分类模型的网络结构由输入层、隐含层和输出层三部分组成:输入层的n个神经元对应n个输入变量;隐含层p个节点;本文为单输出问题,令输出层为1个输出变量,输入输出变量均有m组数据,图4为极限学习机网络结构图。

004.jpg

  设输入层第i个变量与隐含层各个节点间的连接权值为wi=[wi1,wi2,…,xia]T,隐含层神经元的阈值为b=[b1,b2,…,ba]T,隐含层节点与输出变量的连接权值为,隐含层神经元的激活函数为g(x)。则具有p个隐含层节点的ELM模型的决策函数可以表示为:

  XB@_F8~1~Z~F9RPT$`~PXXU.png

  式(2)还可以表示为:H?茁=T′,H为神经网络隐含层的输出矩阵。ELM模型的输入权重w和隐含层神经元的阈值b可随机选择,并且激活函数g(x)无限可微时,ELM的参数无需全部调整。隐含层节点与输出节点的连接权值β可通过求解以下线性方程组的最小二乘解来获得:

  3.png

  其中,解β具有唯一性,可使网络的训练误差最小。

  2.5 数据存储模块

  采集到的脑电数据量比较大,此时可以将脑电数据存储到手机的存储卡中。点击保存按钮,首先使用new File(file)创建一个File对象,形参file指定了文件夹的路径,再调用对象的exist()方法判断文件夹是否存在,如果不存在会调用File对象的mkdirs()方法在SD卡内建立一个文件夹,最后调用系统的日历类Calendar类获取当前的时间,以时间作为保存文件的文件名,将接收到的字节数据保存到txt文件中。

  2.6 权限设置

  Android应用程序对手机的重要组件的访问有着严格的限制,当涉及如Wi-Fi操作、访问网络、SD卡操作时,必须在Android开发目录下的AndroidManifest.xml文件中加入权限申请。AndroidManifest是Android工程目录下都有的一个清单文件,它包含了应用程序的基本信息,这些信息包括应用程序需要的许可、程序运行需要的API级别、程序运行所需要的硬件支持和函数库等。由于本文要用到Wi-Fi、网络、SD卡的操作,因此要在AndroidManifest.xml文件中加入以下权限:Wi-Fi、网络访问和外部存储卡访问。运行程序,界面如图5所示。


  本文介绍了基于Android平台下的无线脑电采集与监测终端的设计和关键技术,包括Android系统的架构,脑电信号采集系统的整体结构,应用层帧格式的定义,传输协议的设计,算法模块的集成,以及软件的设计。系统可以克服传统脑电采集设备的缺点,应用小巧灵活、性能优越的手机终端作为上位机,配合PC完成脑电信号的实时采集,并在手机系统中加入极限学习机智能分类算法来进行脑电信号警觉度的分析,这个系统的设计为提高脑电采集设备的便携性、可操作性以及未来疲劳驾驶预测提供了一套可行的方案。

  参考文献

  [1] 张啸飞,胡大一,丁荣晶,等.中国心脑血管疾病死亡现状及流行趋势[J].中华心血管病杂志,2012,40(3):179-185.

  [2] 薛青.智慧医疗:物联网在医疗卫生领域的应用[J].信息化博览,2010(5):56-57.

  [3] 张志军,王娟,何辉.基于Android的心电监护终端的设计与实现[J].自动化与仪器仪表,2013(5):183-185.

  [4] JEON Y, LEE J D, CHOI J. Design and Implementation of a Wearable ECG System[J]. International Journal of Smart Home, 2013,7(2):61-69.

  [5] Song Weibo, Yu Hong, Liang Ce, et al. Body monitoring system design based on Android smartphone[C]. 2012 World Congress, Trivandrum: Information and Communication Technologies, 2012:1147-1151.

  [6] 李高尚,沈巍.一种应用于移动健康医疗的Android客户端的研究[J].电子测试,2012(2):64-67.

  [7] 张莉,周子龙.基于Android智能手机平台的便携式心电监护仪的设计[J].中南民族大学学报(科学版),2012,31(4):88-92.

  [8] TI.ADS1299Datasheet[EB/OL].[2013-01].http://www.ti.com.cn/cn/lit/ds/symlink/ads1299.pdf.

  [9] 谢宏,董洋洋,姚楠,等.基于ADS1298与WIFI的脑电信号采集与传输系统设计[J].现代电子技术,2013,36(6):150-153.

  [10] 朱桂英.Android实例开发完全手册[M].北京:人民邮电出版社,2012.

  [11] 周丽娟.基于UDP协议的Socket网络编程[J].计算机工程应用技术,2008(34):1867-1868.

  [12] Andrés Bueno-Crespo, Pedro J. García-Laencin, José-Luis Sancho-Gómez. Neural architecture design based on extreme learning machine[J]. Neural Networks, 2013, 48:19-24.

  [13] HORATA P, CHIEW CHANWATTANA S, SUNAT K. Robust extreme learning machine[J]. Neurocomputing, 2013,102(15):31-44.

  [14] Fre′nay Beno′t, Mark van Heeswijk, et al. Feature selection for nonlinear models with extreme learning machines[J]. Neurocomputing, 2013, 102:111-124.


此内容为AET网站原创,未经授权禁止转载。