Python动手系列——利用MindWave读取脑波,辨认眨眼动作(一)
2015-05-14 22:33阅读:
我们暂且放下Python的基础系列,奉上Python动手实践系列的第一篇,因为最近在捣鼓的东西可以趁热打铁记录下来。写着写着发现太长,我们这一篇先只基本介绍吧。
硬件介绍
最近一直跟同学捣鼓的这个MindWave
Mobile,说白了就是淘宝上买来的一个300软妹币的可以读取头部皮层的人体电压的小玩意。小东西大概是这样的:

一个夹子一样的东西夹在左耳作为参考电极,另一个电极(图中左前的“触手”般的部件)紧贴着头部的左前额。人类左耳耳垂的电压较稳定,于是可作为参考电压,左前额的电极可探测出实时EEG。EEG是什么呢,度娘告诉我们可以这样解释:人体脑部自身产生的微弱生物电于头皮处收集,并放大记录而得到的曲线图。EEG包含Delta(δ)波、Theta(θ)、Alpha(α)波等八个波,详见度娘。而且这里mindwave还给出了分析之后的佩戴者的专注度(Attention)和冥想度(Meditation),所以mindwave可以给出专注度、冥想度和EEG共十个数据。最后通过外接蓝牙模块把数据发送出来。
除了上面的mindwave、蓝牙模块(适配器)。这里还使用到的硬件是树莓派。其实使用树莓派更多的是因为爱好以及为了后边的扩展(通过GPIO外接电器控制等和风扇等)。还有就是树莓派作为一种Linux系统,可以使用到PyBluez(Bluetooth)库,主要用于在Python里实现和蓝牙模块的沟通。Windows上面貌似安装不了这个Bluetooth,而且除了这种方法,我目前不知道在Windows上面如何使用Python读取蓝牙发来的数据,如果有高人知道告诉下我~当然如果懂的,或者电脑有装Linux系统的也可以直接使用电脑开工,树莓派不是必需品。
我们的目标
我们发现用它来辨识人的眨眼这个动作,具有较高的可行性。
刚开始满怀希望,摩拳擦掌准备各种实验和机器学习分析数据,搞出人类有史以来最伟大的情绪辨别的智能硬件。 ̄O ̄)ノ后来发现由于水平有限、
单电极脑外读取电波方式有局域性、机器精度不高、人类自我情绪难以控制等原因还是放弃了这个伟大梦想。但玩玩还是可以的,戴着它,通过程序,你眨下眼它就知道啦!
据说新版的mindwave,配合使用它的某个软件貌似也是可以直接辨识出眨眼动作的。这个没体验过,我们准备使用自己的算法来辨识眨眼!下面准备开工!
连接与准备
作为前期准备,先说硬件连接。树莓派没有是没有蓝牙接收功能的,这里通过蓝牙适配器解决。一个适配器插在树莓派的USB插口上面,打开mindwave的开关(及打开蓝牙),通常这时树莓派就可以通过适配器找到mindwave并接收数据了。
说下数据与软件方面。树莓派要先安装上文提到的PyBluez(Bluetooth)。直接sudo
apt-get install libbluetooth-dev
python-bluetooth就可以了。再安装一个blueman,就可以像Windows上面一样可视化的查看搜寻的附近的蓝牙设备了。
数据方面,要说下mindwave发送的数据格式。简单的说,它发来的数据包括“小包”和“大包”,其中小包是以大概512Hz的频率发送,大包大概以1Hz的频率发送,就是说一秒内大概发送过来512个小包,这512个小包发送完毕之后会发来一个大包,接着进入下一秒的512个小包和最后一个大包依次循环。小包的数据是脑波的原始数据,大包就是上面提到的专注度、冥想度和EEG的十个数据。如果用串口接收工具接收到的数据大概是这样的:

有点乱不要紧。因为接下来就要说到“重头戏”了。Python上面有专门应付mindwave通过蓝牙发送过来的数据的库。详情请移步github:
https://github.com/robintibor/python-mindwave-mobile
这里有较详细的介绍。以及上文说的这个
PyBluez,这里也有提及。总之介绍详细、使用方便。但记得,这个库暂时是Python2版本的。还好树莓派上面Python2好Python3都有。下文的工作环境都是在Python2中实现的。
Let it work!
上文的github中的文章最后也有提及。通过import进相关模块之后,如图中所示直接实例化一个MindwaveDataPointReader的类,最后调用这个类里的start方法,数据就滚滚而来了。使用方法如图:

如上图所说,如果你把这个库安装了之后,就能像import urllib、import
math之类的一样方便使用。不然的话就只能在同个文件夹中使用。最后我们新建一个Python文件,代码如上图,最后一句print把数据打出来。我们看看运行结果如何:

我们看到树莓派上的Python成功打印出了数据。大约每秒512个的rawdata以及大约每秒一个的大包中的
专注度、冥想度和十个EEG。此刻觉得世界如此美好。好了关于如何辨识眨眼,咱下期见!