摘 要: 提出一種基于Android平臺的腦電無線采集與警覺度監(jiān)測終端的設(shè)計,。采用Wi-Fi作為無線通信方案,,以Android手機作為上位機,在手機上設(shè)計應(yīng)用程序,,通過手機應(yīng)用程序可以方便地實現(xiàn)對采集設(shè)備的參數(shù)設(shè)置,、無線連接、數(shù)據(jù)接收,、波形顯示,、數(shù)據(jù)分析和文件存儲。Android手機端通過Wi-Fi與下位機建立通信,,實時接收Wi-Fi模塊發(fā)送的腦電數(shù)據(jù),,繪成腦電圖,并能通過手機端向下位機發(fā)送控制命令,,再將基于極限學(xué)習(xí)機的腦電信號分類算法通過Java編碼移植到手機內(nèi)部,,分析腦電信號所攜帶的警覺度信息。立足便攜式腦電信號無線采集系統(tǒng),,在系統(tǒng)中加入基于Android系統(tǒng)的傳輸控制方法,,并植入訓(xùn)練速度快、分類效果好的算法程序,,為便攜式腦電信號采集提供了一個新方案,。
關(guān)鍵詞: Android;Wi-Fi,;腦電采集,;無線傳輸
腦電信號(EEG)是由腦神經(jīng)活動產(chǎn)生的一種電活動,它含有大量的大腦活動信息,,隨著社會的快速進(jìn)步,,交通事故在日常傷亡事件中占有較大比重,為此采集腦電信號并實時監(jiān)測駕駛?cè)藛T偏勞狀態(tài)對于預(yù)防由于駕駛員疲勞和警覺度不高造成的交通事故尤為重要,。傳統(tǒng)腦電采集設(shè)備大部分被應(yīng)用在醫(yī)院,、實驗室等特殊場合,在精度上能夠滿足醫(yī)療和研究的要求,,但無法應(yīng)用到日常生活中,,尤其是在駕駛活動當(dāng)中,并且成本昂貴,、體積較大,、移動不便,。因此設(shè)計出一款體積較小、便攜性較好的EEG信號采集與監(jiān)控系統(tǒng)具有重要的意義和價值,。
移動通信等技術(shù)的發(fā)展為臨床診斷和治療帶來了更多的技術(shù)方法[1-2],。Android手機以其成本低、用戶體驗好等優(yōu)點已經(jīng)在智能手機市場占有90%左右的份額,,目前以Android為系統(tǒng)的智能手機,、平板電腦等已經(jīng)廣泛應(yīng)用于健康醫(yī)療、遠(yuǎn)程控制等領(lǐng)域,,如YUNGKOOK J[3-4]等就將智能手機應(yīng)用到心電信號監(jiān)護(hù)系統(tǒng)中,,用于對心電信號的實時監(jiān)護(hù)、自我診斷等,;Song Weibo等[5]設(shè)計了基于Android手機的身體監(jiān)護(hù)系統(tǒng),,用戶可以通過手機屏幕觀察采集到的人體生理數(shù)據(jù)。大部分Android手機都自帶有藍(lán)牙,、Wi-Fi通信功能,,如李高尚等人[6-7]使用藍(lán)牙作為無線傳輸方式,取代了傳統(tǒng)有線傳輸方式,,實現(xiàn)了無線采集的功能,,但存在傳輸速率低和傳輸距離短等缺點,不便于遠(yuǎn)距離采集系統(tǒng)的實現(xiàn),。
本文結(jié)合Android和Wi-Fi兩者的優(yōu)勢,,在手機上設(shè)計移動應(yīng)用軟件,通過手機完成對采集前端的控制并接收無線模塊發(fā)送的數(shù)據(jù),,最后對數(shù)據(jù)進(jìn)行算法分析,實現(xiàn)了整個采集過程以及警覺度的監(jiān)控,。
1 系統(tǒng)總體結(jié)構(gòu)
系統(tǒng)總體結(jié)構(gòu)如圖1所示,,包括ADS1299采集前端[8]、Wi-Fi處理發(fā)送模塊,、Android智能手機終端應(yīng)用,。前端采集模塊選用TI公司的ADS1299作為腦電采集的模/數(shù)轉(zhuǎn)換器,ADS1299以其便攜性,、緊湊性,、低功耗性被專門用來進(jìn)行腦電信號采集。無線傳輸模塊采用Gain Span公司的超低功耗無線芯片GS1011[9],,GS1011是1個具有超低功耗的Wi-Fi無線片上系統(tǒng),,它包含1個802.11射頻前端、媒體控制器和基帶處理器,,片上Flash和片上SRAM,,2個ARM7處理器,。GS1011的APP CPU將ADS1299轉(zhuǎn)換的腦電數(shù)據(jù)、接收到的AP的信號強度的信息進(jìn)行處理,,然后通過WLAN CPU將數(shù)據(jù)打包成符合IEEE 802.11協(xié)議的數(shù)據(jù)無線發(fā)送出去,;在接收端,無線接入點AP接收無線載波發(fā)送過來的數(shù)據(jù),,然后傳送給手機控制端,,手機對接收過來的數(shù)據(jù)解包并作數(shù)據(jù)處理。
本文主要論述手機移動終端軟件的設(shè)計,,手機終端的程序主要包括三個功能:(1)控制下位機采集,;(2)接收下位機采集數(shù)據(jù)并作數(shù)據(jù)處理;(3)建立警覺度水平的離線和在線分析系統(tǒng),??刂乒δ艿膶崿F(xiàn)過程為:通過手機發(fā)送帶有控制命令的數(shù)據(jù)包到Wi-Fi模塊,Wi-Fi的WLAN CPU接收數(shù)據(jù),,解析自定義數(shù)據(jù)格式數(shù)據(jù)包得到命令,,將命令通過SPI接口發(fā)送給ADS1299采集前端。手機接收Wi-Fi模塊發(fā)送過來的數(shù)據(jù)包,,解析得到反饋的信息或者有用的EEG數(shù)據(jù),,實時處理數(shù)據(jù)。
2 Android終端軟件設(shè)計與實現(xiàn)
Android是一個基于Linux平臺的操作系統(tǒng)[10],,主要應(yīng)用于智能手機,、平板電腦等手持設(shè)備。Android的架構(gòu)圖如圖2所示,,Android的架構(gòu)主要由應(yīng)用程序?qū)?、?yīng)用程序框架層、庫,、Android運行時庫,、Linux內(nèi)核組成。
Android應(yīng)用程序以Java為開發(fā)語言,,以Eclipse作為開發(fā)環(huán)境,,并配合Android SDK、Java JDK和ADT插件完成對軟件的開發(fā)與調(diào)試,。Android的SDK提供了可視化的模擬器,,同時Android平臺提供了2D的圖形支持,在完成程序代碼的編寫后,,可以將程序發(fā)布到模擬器上運行,,如果應(yīng)用程序涉及藍(lán)牙、攝像頭等操作,,此時需要在真機上進(jìn)行調(diào)試,。
2.1 通信協(xié)議設(shè)計
通信協(xié)議是通信雙方進(jìn)行溝通的語言,,協(xié)議的設(shè)計應(yīng)該簡單明了,避免增加冗余度,,通信協(xié)議的定義與傳輸?shù)臄?shù)據(jù)被編排成字節(jié)數(shù)組的格式,。本設(shè)計規(guī)定手機端為通信的客戶端,GS1011為通信服務(wù)端,。表1為定義的數(shù)據(jù)幀格式,。
(1)報頭:固定為55AD兩個字節(jié),,表示一個幀的開始,。
(2)操作指令:是用來區(qū)分控制命令,,它與ack組合用來表示各種操作和具體類型,。“L”代表連接服務(wù)器,;“C”代表配置ADS1299相關(guān)寄存器,;“A”代表采集操作,如開始,、停止等,。協(xié)議的具體內(nèi)容如表2所示。
?。?)數(shù)據(jù)包長度:從報頭到數(shù)據(jù)段的最后一個字節(jié)的總和,。
(4)數(shù)據(jù):代表操作的具體數(shù)據(jù),,如往寄存器里寫入的數(shù)據(jù),、采集到的數(shù)據(jù)等,如果沒有數(shù)據(jù)設(shè)為0,。
服務(wù)端使用C語言開發(fā),,采用結(jié)構(gòu)體封裝數(shù)據(jù),對于Android客戶端,,由于Java語言沒有結(jié)構(gòu)體這種類型,因此可以先將各種類型的數(shù)據(jù)進(jìn)行轉(zhuǎn)換,,模擬結(jié)構(gòu)體,,然后將數(shù)據(jù)打包發(fā)送。
2.2 界面顯示模塊
界面顯示模塊主要通過Activity嵌套Fragement實現(xiàn),。根據(jù)功能的需求,,手持終端應(yīng)用程序設(shè)置了4個主要功能界面:波形顯示界面、Wi-Fi管理界面,、ADS1299配置界面,、算法分析界面和文件列表界面,。(1)主界面主要嵌套了用于波形顯示的SurfaceView以及一些功能按鈕,由于采集頻率較高,,一般的ImageView很難滿足實時顯示波形的需求,,SurfaceView采用雙緩沖模式,在高速刷新界面方面較其他View有較大優(yōu)勢,;(2)采集配置界面用來設(shè)置ADS1299的參數(shù),;(3)為了提高系統(tǒng)的集成性,將Wi-Fi管理模塊從手機內(nèi)部集成到采集終端軟件中來,,方便對Wi-Fi網(wǎng)絡(luò)的管理,;(4)算法分析界面中,第一個Spinner選擇控件用來選擇模擬實時或者實時模式,,另一個Spinner控件用來選擇算法,,本文中暫時集成了極限學(xué)習(xí)機的分類算法,文件界面用于顯示保存的歷史數(shù)據(jù),,主要使用ListView分條展示,。整個界面由1個Activity嵌套了4個Fragement來實現(xiàn),使用中可以通過屏幕左右滑動選擇要使用的界面,,布局由XML文件完成,。
2.3 網(wǎng)絡(luò)通信模塊
本系統(tǒng)采用UDP傳輸協(xié)議,UDP(User Datagram Protocol)是一種無連接的傳輸層協(xié)議,,通信流程圖如圖3所示,,它不保證數(shù)據(jù)傳送的可靠性[11],也正是由于它的這一特點,,使得UDP協(xié)議有著快速,、簡單、便捷的優(yōu)點,,適于進(jìn)行實時性要求高,、數(shù)據(jù)量大的數(shù)據(jù)傳輸。本文利用UDP協(xié)議傳輸速率快,、實時性高的特性,,將采集到的腦電數(shù)據(jù)傳輸?shù)缴衔粰C進(jìn)行數(shù)據(jù)處理。
當(dāng)手機與GS1011處在同一個局域網(wǎng)之后,,開始進(jìn)行數(shù)據(jù)交互,。系統(tǒng)利用基于C/S工作模式的Socket通信接口來實現(xiàn)上下位機之間的通信,手機作為客戶端,,無線采集設(shè)備作為服務(wù)端,,客戶端連接到服務(wù)端至少需要服務(wù)端的IP和端口號,建立UDP Socket連接主要用到兩個類:DatagramSocket(端到端通信的類)和DatagramPacket(通信數(shù)據(jù)的數(shù)據(jù)報類)。DatagramSocket是Android系統(tǒng)提供的一個公共類,,它可以和任何可用或者指定的端口進(jìn)行連接,。在兩個端點的通信中需要用到的方法有Receive(DatagramPacket packet)、send(DatagramPacket pack)和close(),。在接收和發(fā)送數(shù)據(jù)時,,需要構(gòu)造一個DatagramPacket對象,它有幾種構(gòu)造方法,,這里用于接收數(shù)據(jù)的DatagramPacket帶有byte[]和int length兩個參數(shù),,發(fā)送數(shù)據(jù)時DatagramPacket帶有4個參數(shù):byte[]sendbuff、int length,、InetAddress serverAddr和int serverPort,。
發(fā)送數(shù)據(jù)主要代碼為:
DatagramPaeket packrSend=new DatagramPacket(sendbuff,
Sendbuff.length,,serverAddr,,portNumber);
ds.send(packetSend),;
接收數(shù)據(jù)主要代碼:
DatagramPacket packRec=new DatagramPacket(recbuffer,,recbuffer.length);
ds.receive(packRec),;
2.4 算法分析模塊
對于算法模塊,,考慮到移動平臺警覺度分析的特殊性,尤其是手機資源和配置還很有限,,并且考慮到最終需要實現(xiàn)算法分析和數(shù)據(jù)采集的同步性和實時性,,希望算法的運算過程較快速,占有資源較少,。為此,,本文提出基于極限學(xué)習(xí)機的腦電信號警覺度的分類算法,并將算法進(jìn)行了Java編碼,,移植到手機內(nèi)部,,用于對采集到的數(shù)據(jù)進(jìn)行實時和模擬實時分析。極限學(xué)習(xí)機是根據(jù)單隱含層前饋神經(jīng)網(wǎng)絡(luò)(SLFN)提出的一個新算法[12-13],,極限學(xué)習(xí)機令隱含層的激活函數(shù)為無限可微函數(shù),,可以隨機選擇和調(diào)整隱含層節(jié)點的參數(shù),使SLFN從復(fù)雜的非線性系統(tǒng)變成簡單的線性系統(tǒng)[14],,較好地解決傳統(tǒng)神經(jīng)網(wǎng)絡(luò)訓(xùn)練時間長,、參數(shù)難確定等問題。
給定訓(xùn)練樣本:
P={(xi,,y)|xi∈Rd,y∈R,i=1,,2,,…,n}(1)
xi=[xi1,,xi2,,…,xim]∈R,,y=[y1,,y2,…,,ym]∈R
極限學(xué)習(xí)機分類模型的網(wǎng)絡(luò)結(jié)構(gòu)由輸入層,、隱含層和輸出層三部分組成:輸入層的n個神經(jīng)元對應(yīng)n個輸入變量;隱含層p個節(jié)點,;本文為單輸出問題,,令輸出層為1個輸出變量,輸入輸出變量均有m組數(shù)據(jù),,圖4為極限學(xué)習(xí)機網(wǎng)絡(luò)結(jié)構(gòu)圖,。
設(shè)輸入層第i個變量與隱含層各個節(jié)點間的連接權(quán)值為wi=[wi1,wi2,,…,,xia]T,隱含層神經(jīng)元的閾值為b=[b1,,b2,,…,ba]T,,隱含層節(jié)點與輸出變量的連接權(quán)值為,,隱含層神經(jīng)元的激活函數(shù)為g(x)。則具有p個隱含層節(jié)點的ELM模型的決策函數(shù)可以表示為:
式(2)還可以表示為:H?茁=T′,,H為神經(jīng)網(wǎng)絡(luò)隱含層的輸出矩陣,。ELM模型的輸入權(quán)重w和隱含層神經(jīng)元的閾值b可隨機選擇,并且激活函數(shù)g(x)無限可微時,,ELM的參數(shù)無需全部調(diào)整,。隱含層節(jié)點與輸出節(jié)點的連接權(quán)值β可通過求解以下線性方程組的最小二乘解來獲得:
其中,解β具有唯一性,,可使網(wǎng)絡(luò)的訓(xùn)練誤差最小,。
2.5 數(shù)據(jù)存儲模塊
采集到的腦電數(shù)據(jù)量比較大,此時可以將腦電數(shù)據(jù)存儲到手機的存儲卡中,。點擊保存按鈕,,首先使用new File(file)創(chuàng)建一個File對象,,形參file指定了文件夾的路徑,再調(diào)用對象的exist()方法判斷文件夾是否存在,,如果不存在會調(diào)用File對象的mkdirs()方法在SD卡內(nèi)建立一個文件夾,,最后調(diào)用系統(tǒng)的日歷類Calendar類獲取當(dāng)前的時間,以時間作為保存文件的文件名,,將接收到的字節(jié)數(shù)據(jù)保存到txt文件中,。
2.6 權(quán)限設(shè)置
Android應(yīng)用程序?qū)κ謾C的重要組件的訪問有著嚴(yán)格的限制,當(dāng)涉及如Wi-Fi操作,、訪問網(wǎng)絡(luò),、SD卡操作時,必須在Android開發(fā)目錄下的AndroidManifest.xml文件中加入權(quán)限申請,。AndroidManifest是Android工程目錄下都有的一個清單文件,,它包含了應(yīng)用程序的基本信息,這些信息包括應(yīng)用程序需要的許可,、程序運行需要的API級別,、程序運行所需要的硬件支持和函數(shù)庫等。由于本文要用到Wi-Fi,、網(wǎng)絡(luò),、SD卡的操作,因此要在AndroidManifest.xml文件中加入以下權(quán)限:Wi-Fi,、網(wǎng)絡(luò)訪問和外部存儲卡訪問,。運行程序,界面如圖5所示,。
本文介紹了基于Android平臺下的無線腦電采集與監(jiān)測終端的設(shè)計和關(guān)鍵技術(shù),,包括Android系統(tǒng)的架構(gòu),腦電信號采集系統(tǒng)的整體結(jié)構(gòu),,應(yīng)用層幀格式的定義,,傳輸協(xié)議的設(shè)計,算法模塊的集成,,以及軟件的設(shè)計,。系統(tǒng)可以克服傳統(tǒng)腦電采集設(shè)備的缺點,應(yīng)用小巧靈活,、性能優(yōu)越的手機終端作為上位機,,配合PC完成腦電信號的實時采集,并在手機系統(tǒng)中加入極限學(xué)習(xí)機智能分類算法來進(jìn)行腦電信號警覺度的分析,,這個系統(tǒng)的設(shè)計為提高腦電采集設(shè)備的便攜性,、可操作性以及未來疲勞駕駛預(yù)測提供了一套可行的方案。
參考文獻(xiàn)
[1] 張嘯飛,,胡大一,,丁榮晶,,等.中國心腦血管疾病死亡現(xiàn)狀及流行趨勢[J].中華心血管病雜志,2012,,40(3):179-185.
[2] 薛青.智慧醫(yī)療:物聯(lián)網(wǎng)在醫(yī)療衛(wèi)生領(lǐng)域的應(yīng)用[J].信息化博覽,,2010(5):56-57.
[3] 張志軍,王娟,,何輝.基于Android的心電監(jiān)護(hù)終端的設(shè)計與實現(xiàn)[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] 李高尚,,沈巍.一種應(yīng)用于移動健康醫(yī)療的Android客戶端的研究[J].電子測試,,2012(2):64-67.
[7] 張莉,周子龍.基于Android智能手機平臺的便攜式心電監(jiān)護(hù)儀的設(shè)計[J].中南民族大學(xué)學(xué)報(科學(xué)版),,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的腦電信號采集與傳輸系統(tǒng)設(shè)計[J].現(xiàn)代電子技術(shù),2013,,36(6):150-153.
[10] 朱桂英.Android實例開發(fā)完全手冊[M].北京:人民郵電出版社,,2012.
[11] 周麗娟.基于UDP協(xié)議的Socket網(wǎng)絡(luò)編程[J].計算機工程應(yīng)用技術(shù),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.