肖迪 章文韬
摘要:脑电波信号现今已被研究作为一个生物信号输入用于人机交互。它可以用来开发用于提升注意力的游戏,也可以被应用在残疾人治疗上。TGAM模块利用一个干式电极就可以从人脑中检测到微弱的脑电信号。该文对TGAM模块的研究和实验,控制专注度和放松度等数值。基于MDT开发包进行软件开发,研究脑电波信号的统一性与特殊性,将TGAM模块应用于播放器,通过应用程序接口,建立通讯,进行数据分析处理,实现了比较好的调控效果。
关键词: 脑电波信号;TGAM模块;专注度;放松度;音响音量
中图分类号:TP391 文献标识码:A 文章编号:1009-3044(2015)09-0249-03
Abstract: Electroencephalogram(EEG) signal now has been studied as a biological signal input for human-computer interaction. It can be used for games of lifting the attention, can also be used in the treatment of the disabled. TGAM module uses a dry-type electrode to detect the weak EEG signal from human brain. This paper studies the TGAM module, controlling the degree of focus and relaxation degree values. Software development bases on MDT-based, researching the unity and particularity of brainwave signals. Apply the TGAM module on the player, through the application interface, establishing communication, carrying out data analysis and process, to achieve better control effect.
Key words: Electroencephalogram(EEG) Signal; TGAM Module; Focus and Relaxation degree; the Sound Volume
1概述
我们的大脑无时无刻不在产生脑电波。这些自发的生物电信号的频率变动范围通常在0.1Hz-50Hz之间,根据其频率不同可划分为Delta波、Theta波、Alpha波、Beta波、Gamma波等多种类型。本文即研究通过对脑电波信号的采集、处理、分析,将脑电波信号转换成对耳机进行直接控制的电路信号,从而实现人脑“意念”对耳机的直接控制。
脑电波信号现今已被研究作为一个生物信号输入用于人机交互。在医学上,脑电波信号的人机交互可以帮助残疾人与使用脑电波的机器进行通信。[1]如今脑电波也被广泛的用于智力游戏的开发,帮助人们提高注意力。Neurosky神念科技公司开发的ThinkGear AM模块(简称TGAM)是一款世界上非常受欢迎的脑电技术应用模块,它利用一个干式电极就可以从人脑中检测到微弱的脑电信号。本文将TGAM模块应用于音响音量的控制上,实现了比较好的调控效果。
TGAM中的ASIC芯片实际上是一个芯片系统,它集成了脑电信号采集、滤波、放大、A/D转化、数据处理及分析等功能。TGAM模块可直接与干电极相连接,通过单个脑电波信号(EEG)和参考电极以及地线制作脑电波采集仪。并且它可以检测到512Hz的原始脑电信号,可以滤掉噪音,抗干扰。
2 系统构成
整个系统由TGAM模块、蓝牙模块、干电极、耳夹、电源和基于I3HGP的embedded主板、音响等部分组成。如图1所示。TGAM模块、蓝牙模块、干电极、耳夹和电源构成的部分完成脑电波的采集和特性的提取,嵌入式主板完成音量控制的编程和实现。
如图2所示,将TGAM模块与蓝牙模块、干电极以及耳夹(接地电路)、电源的连接,制成简易的脑电采集仪。图3中发光二极管亮表示该脑电采集仪通电可正常工作,通过蓝牙适配器连接电脑,可将采集到的脑电波以及由其生成的专注度、放松度在软件中显示出来。
在基于I3HGP的embedded主板上(见图4)利用VC++平台进行软件编程,動态调用专注度和眨眼数值,实现数据的提取,再将提取好的数据导入混音器中,在满足条件的情况下实现音量控制。
3 脑电波的采集与分析
在TGAM模块的处理下,已经可以将繁杂的脑电波转化为放松度、专注度两个数值,其大小用1~100表示,数值越大表示进入相应程度越深。为了确定音量增减的起始值,我们多次对脑电波进行采集(取其中10次),每次采集5分钟。观察专注度数值,除却开始和最后的1分钟,保留中间最有效3分钟。如图5所示,当我们保持专注时,专注度数值占60以上的比例为60%。图6中,当我们放松时,专注度数值基本在40以下,其中在20以下的占29%。而正常状态下(图7),脑电波专注度数值呈现的范围在20到60之间,占据最多的部分是40~49,占到36%,50~59和20~29分别占28%和20%。
因此设置音量放大、减小的阈值,确定音量控制程序思路:专注度>60时,音量增加,专注度<20时,音量减小。(如图8)音量改变开关,由眨眼值控制:当持续几秒钟能读取到眨眼数据情况下,开关开启。
4 音量控制软件
4.1 MindWare后台数据开发
4.1.1静态调控
静态调控是指对于Mind Development Tool(MDT)软件已生成的包含专注度、放松度等数值的后台excel表格的调用。具体调用方法如下:
在实现脑电波静态控制音量的基础上,预想上通过设置clock时钟刷新读取实时的数据,具体方法是,在MIC部分的micSendString的代码部分加入刷新模块,由于后台excel表中的关于脑电波数据实时变化,设置刷新时间为每1s(如果有需要,可以设置更为小的时间间隔,这里暂设置为1s即可满足需求)刷新一次,从而可以读取新的数据。
4.1.2进程与刷新的设置
除此之外,通过使用进程,设置线程为后台线程,那样进程里就不会有未关闭的程序,避免读取数据和播放音乐之间的互相干扰问题,通过定义线程Thread LogThread = new Thread(new ThreadStart(DoService))相关代码实现。
通过getTime()读取当前windows时钟Clock的值,获得当前时间,实现每隔1s的重新执行。但是会造成读取excel表的数据重复读取,音量控制上无法形成连贯性,其结果是形成无数次的重复获取数据,每次刷新后从开始播放。试图通过设置标记跟随时间变化来解决,使读取函数从标记的时间点开始读,保留之前读取过的数据,实际操作时却由于形成不断的迭代,无法执行。
4.2 MDT开发
4.2.1 MDT开发的可行性分析
主要思路为通过利用开源的神念传感器连接程序(TGC)与ThinkGear通信驱动程序(TGCD),可以直接从ThinkGear芯片中获取sSense数据(包括集中度和放松度),即直接从接口中获取数据,避免了从动态excel表中读取数据。
其中,神念传感器连接程序(TGC)在后台持续运行,并在本地用户的电脑上显示有一个打开的插口,允许应用程序与其连接,并接受已连接好的ThinkGear设备发送的信息,这意味着从插口出打开并读取的任何语言的任何程序都能够与MindSet耳机相连并从其接收数据,并且连接程序的平台包括windows。因此,此连接程序的支持PC机上的程序连接接口,让从接口获取数据成为可能。
另外,ThinkGear通信驱动(TGCD)包括一个简单的API(位于驱动程序安装文件中),是此方法主要的编程手段。通过在开发环境中加入开发文件:thinkgear.h和thinkgear.lib,利用自己的编程语言,使用TFCD API中的重要函数调用,可以方便快捷的直接读取接口中的数据。
4.2.2 MDT具体开发手段
MDT(mind develop tool)开发包与MRT(mind research tool)包的专注于研究不同,主要用于开发,其中的工具包括:ThinkGear Connector、ThinkGear Communications Driver、ThinkGear Communications Protocol三种,各自的用途如下:
ThinkGear Connector:提供了一个连接软件,获取数据的话,只需要通过socket来获取就可以了。可以把连接和控制分离,但是需要开发者自己获取socket数据并且解析。
ThinkGear Communications Driver:提供各种API,方便开发者使用。
ThinkGear Communications Protocol:属于最底层的通信协议,一般不会用到。
第一种方法:ThinkGear Connector,以TGC作为基础,也就是一个服务器,执行ThinkGear socket协议,负责在其他设备中响应授权请求与传播耳机数据。Think Gear socket协议是基于JSON的,在协议连接的使用期主要经过以下几个阶段:套接字的创建、一次性的授权、服务器的配置、耳机数据的收取、套接字服务的终止。而相比于第一种方法,第二种方法ThinkGear Communications Drive,利用提供的API建立连接获取数据流,易于使用的通信程序接口,缺点是不能模擬发送信号。适合普通的PC机上的开发。因此,我们选择第二种方法进行开发。
C语言版本使用方法:
1)新建工程,将ThinkGear.h、ThinkGear.lib、thinkgear_testapp.cpp放入工程;
2)根据开发者自己的需求进行编译,然后将thinkgear.dll文件放入exe所在的文件夹;
3)将自己焊制的耳机与接收器连接,启动程序,指示灯由红变蓝;
主程序中主要代码部分功能:1)获取连接句柄;2)COM名与电脑的连接想对应;3)读取数据包、读取attention数据;4)释放句柄。
主要API的大概说明:
TG_GetNewConnectionId():获取一个连接句柄,在之后的程序中都会用到;
TG_FreeConnection():释放句柄;
TG_Connect():连接
TG_Disconnect():取消连接,但是注意调用后一些依赖函数不可使用
TG_ReadPackets():读取若干个packet,保证读取的数据实时性
TG_GetValueStatus():判断数据是否更新
TG_GetValue():读取数据,为主要功能
TG_EnableAutoRead():开启一个后台线程,每隔1ms刷新一次
TG_EnableBlinkDetection():控制是够开启眨眼功能
参考文献:
[1] Jangwoo Park , Il Woo and Shinsuk Park, Application of EEG for Multimodal Human-Machine Interface, 2012 12th International Conference on Control, Automation and Systems, Oct. 17-21, 2012 in ICC, Jeju Island, Korea.
[2] TGAM1 Spec Sheet , Neurosky, January 27, 2011.
[3] Developer Tools 2.1 Development Guide, Neurosky, June 21, 2010.