基于BioAmp EXG Pill与Arduino Uno的桌面级脑电采集系统搭建指南
2026/6/8 12:27:47 网站建设 项目流程

1. 项目概述:从零搭建你的桌面级脑电采集系统

如果你对大脑如何工作感到好奇,或者一直想尝试脑机接口(BCI)项目却苦于专业设备的高昂成本和复杂操作,那么这个项目可能就是为你准备的。今天,我们来聊聊如何用一块比硬币还小的传感器——BioAmp EXG Pill,配合几乎人手一块的Arduino Uno开发板,搭建一套能够采集前额叶皮层脑电信号(EEG)的简易系统。这听起来很“极客”,但实际操作起来,更像是一场严谨而有趣的生物电信号捕捉实验。

脑电信号本质上是大脑皮层大量神经元同步放电产生的微弱电信号,其幅度通常在微伏(μV)级别,频率则集中在0.5到40赫兹之间。直接测量它,就像在喧闹的体育场里试图听清远处两个人的耳语,环境噪声和干扰是最大的敌人。BioAmp EXG Pill的核心价值,就在于它集成了生物电信号采集所需的关键电路:一个高输入阻抗、高共模抑制比的仪表放大器,以及一个精心设计的带通滤波器。前者负责将微弱的差分信号(两个测量点之间的电压差)从强大的共模干扰(如50/60Hz的工频干扰)中“捞”出来并放大;后者则像一个精准的筛子,只让我们感兴趣的脑电频率范围(比如1-40Hz)通过,滤除无关的高低频噪声。

这个项目的工程意义在于,它以一种低成本、模块化和教育友好的方式,揭开了神经科学和生物信号采集的神秘面纱。你不需要昂贵的医疗级设备或深厚的模拟电路设计功底,就能亲手捕捉到源自你自身思维的原始电信号。无论是用于监测专注度(通过Beta波)、放松状态(通过Alpha波),还是作为更复杂BCI项目(如通过眨眼控制开关)的数据输入源,这套系统都提供了一个坚实的起点。接下来,我将带你一步步走过从硬件组装、皮肤准备、软件配置到信号可视化的全过程,并分享我在多次实验中积累的实操心得和避坑指南。

2. 核心硬件解析与选型考量

2.1 BioAmp EXG Pill:微型生物电信号采集引擎

BioAmp EXG Pill是这个系统的核心。它的设计非常巧妙,将传统的生物电放大器电路浓缩到了一个邮票大小的PCB上。理解它的工作原理,对于后续的调试和问题排查至关重要。

信号链解析:当电极贴附在皮肤上,捕捉到微伏级的脑电信号后,信号首先进入EXG Pill。其内部的第一级是仪表放大器(INA),这是整个系统的“心脏”。INA的关键参数是共模抑制比(CMRR),它决定了放大器抑制来自环境(如电源线)的共模干扰的能力。BioAmp EXG Pill的CMRR通常很高(>100 dB),这对于在非屏蔽的普通房间内采集EEG至关重要。放大后的信号会经过一个主动带通滤波器。对于EEG,我们通常关心Delta(0.5-4 Hz)、Theta(4-8 Hz)、Alpha(8-13 Hz)和Beta(13-30 Hz)波,因此滤波器会设置为允许大约0.5Hz到40Hz的信号通过,同时强力衰减低于0.5Hz的基线漂移(如由电极移动或出汗引起)和高于40Hz的噪声(如肌电干扰)。

供电与输出:EXG Pill需要稳定的5V供电(VCC引脚),其输出(OUT引脚)是一个0-VCC范围内的模拟电压信号,可以直接送入Arduino Uno的模拟输入引脚(如A0)进行模数转换。这里有一个关键细节:它的输出是单端信号,参考点是电路的地(GND)。这意味着,为了获得最佳的信号质量,必须确保传感器、Arduino和电脑(如果通过USB供电)共地良好。

注意:务必仔细核对VCC和GND的连接方向。反接电源即使时间很短,也极有可能永久损坏这颗精密的芯片。在连接跳线前,养成“三确认”的习惯:确认原理图、确认实物引脚、确认电源极性。

2.2 电极系统:信号进入电路的第一道门

电极是信号链的起点,其质量直接决定了最终信号的信噪比。本项目提供了两种方案:湿电极(凝胶电极)和干电极(Brain BioAmp Band配合导电凝胶)。

湿电极(凝胶电极):这是临床EEG的金标准。凝胶(通常是氯化银凝胶)充当电解质,能有效降低皮肤与电极金属界面之间的阻抗。使用前需要用NuPrep这类皮肤准备凝胶轻微打磨皮肤,去除角质层和油脂,这能将皮肤阻抗从数百千欧姆降低到几十千欧姆以下,显著提升信号质量。它的优点是信号稳定、噪声低;缺点是准备稍显繁琐,凝胶可能引起过敏,且长时间使用会干燥。

干电极(Brain BioAmp Band):这是一种更便捷的方案,尤其适合快速演示或短时测量。它直接通过金属触点与皮肤接触。然而,干电极与皮肤的接触阻抗通常较高且不稳定,容易引入运动伪迹。因此,强烈建议即使在干电极上,也点上一小滴专用的电极凝胶。这滴凝胶能填充电极与皮肤间不平整的微小空隙,形成稳定的导电通路,其效果是立竿见影的——原本毛躁、充满噪声的信号会立刻变得平滑清晰。我个人的经验是,对于前额这样相对平坦、少毛的区域,使用凝胶的干电极方案在便捷性和信号质量上取得了很好的平衡。

参考电极(REF)的放置:这是EEG测量中一个经典且容易出错的地方。REF不是一个“地”,而是一个“参考点”。我们测量的是IN+和IN-相对于这个REF点的电压差。理想的REF点应位于电学上“安静”且稳定的位置。耳后乳突骨(耳垂后方的骨性凸起)是一个经典选择,因为这里肌肉活动少,且远离主要的脑电活动源。必须确保REF电极与皮肤接触良好,否则整个测量基准就会漂移,导致信号失真。

2.3 微控制器与软件生态:Arduino Uno与Spike Recorder

Arduino Uno在这里扮演了一个简单的模数转换器(ADC)和数据串口转发器的角色。它的10位ADC足以分辨出EXG Pill放大后的EEG信号变化。代码(Spike Recorder固件)非常简单,核心就是持续读取A0引脚的模拟值,并通过串口以固定的波特率(如115200)发送到电脑。

Spike Recorder软件是由Backyard Brains开发的一款免费、跨平台的生物信号可视化工具。它的强大之处在于其易用性和内置的信号处理功能。除了实时绘图,它还能进行快速傅里叶变换(FFT)显示频谱,应用数字滤波器(如至关重要的50Hz/60Hz陷波滤波器),并录制数据。对于初学者,它省去了在Python或MATLAB中从头编写实时绘图和滤波代码的麻烦。

电脑端注意事项:一个经常被忽略但影响巨大的细节是电源噪声。如果笔记本电脑使用开关电源适配器供电,其内部高频开关噪声可能会通过USB地线引入到Arduino和EXG Pill电路中,在EEG信号上表现为高频毛刺。因此,项目指南中建议“使用电池供电的笔记本电脑,并远离交流电器”并非空穴来风。实测中,我将笔记本电脑切换到电池模式,并确保USB线远离电源线,背景噪声的基线宽度有明显改善。

3. 分步实操指南与关键细节

3.1 步骤一:硬件焊接与组装

如果你购买的是单独的BioAmp EXG Pill套件,通常需要自己焊接排针和JST PH 2.0连接器。这个过程虽然简单,但有几个要点:

  1. 焊接顺序:建议先焊接更矮小的JST连接器,再焊接排针。因为JST插座需要紧贴PCB板,焊接时烙铁头更容易操作。
  2. 温度控制:使用温度可控的烙铁,设置在320°C左右。过高的温度可能损坏PCB焊盘或芯片(尽管芯片有防护)。为JST连接器和排针上锡时,要快速准确,避免焊锡堵塞JST插座的孔洞。
  3. 检查短路:焊接完成后,务必用放大镜或手机微距模式检查焊点,确保没有锡桥短路相邻的引脚,尤其是VCC和GND之间。

3.2 步骤二:专业的皮肤准备

这是影响信号质量最关键的步骤之一,绝不能跳过或敷衍。

  1. 清洁:先用肥皂和水清洗额头和耳后区域,去除表面油脂。
  2. 打磨:取少量NuPrep凝胶于棉签上,在将要放置电极的皮肤处(约一枚硬币大小)以中等力度、画圈的方式摩擦20-30秒。你会看到轻微的去角质效果,皮肤略显发红。注意:力度要适中,目标是去除死皮细胞,而不是擦伤皮肤。
  3. 擦拭:用湿纸巾或酒精棉片彻底擦去残留的NuPrep凝胶和皮屑,直到皮肤感觉清爽。等待皮肤完全干燥。
  4. 贴电极:此时皮肤阻抗已显著降低。撕开凝胶电极背胶,将其牢固贴在处理过的皮肤位置,并用手按压边缘10-15秒,确保凝胶与皮肤充分接触。

3.3 步骤三:电极放置与10-20系统

为了可重复性和科学性,我们采用国际10-20系统来定位电极。对于前额叶皮层(Prefrontal Cortex),我们关注Fp1和Fp2点。

  • 定位方法:想象一条从鼻根(Nasion)到枕骨隆突(Inion)的连线。Fp1和Fp2大致位于这条连线的前10%处,并分别向左、右各偏移10%的头围距离。简单来说,它们就在眉毛上方、前额左右两侧对称的位置。
  • 本项目连接:将BioAmp Cable的IN+(正输入)连接到贴在Fp1位置的电极,IN-(负输入)连接到贴在Fp2位置的电极。这种连接方式测量的是Fp1和Fp2两点之间的电压差,有助于抑制两个点共有的噪声。
  • 参考电极:将REF线连接到单独的凝胶电极,并贴在右侧耳后乳突骨上(项目图示位置)。确保粘贴牢固。

3.4 步骤四:电路连接与上电

按照下图进行连接,再次强调顺序和准确性:

BioAmp EXG Pill -> Arduino Uno VCC (红色线) -> 5V GND (黑色线) -> GND OUT (黄色/白色线) -> A0

关键检查点:在给Arduino上电前,请另一位伙伴或自己用万用表通断档,双重确认VCC和GND没有接反、没有与其它引脚短路。这是保护昂贵传感器的最重要一步。

连接好后,先将USB线插入电脑,再给Arduino上电。观察EXG Pill上的电源指示灯(如果有的话)是否正常点亮。

3.5 步骤五:软件配置与信号优化

  1. 烧录固件:在Arduino IDE中打开Spike Recorder代码,选择正确的板卡(Arduino Uno)和端口,点击上传。代码本身无需修改。
  2. 启动Spike Recorder:打开Spike Recorder软件,初始界面可能显示麦克风输入。点击左上角的设置(齿轮)图标。
  3. 关键设置
    • 选择串口:在“Serial Port”下拉菜单中选择你的Arduino所对应的COM口(在Windows设备管理器中可查看)。
    • 连接:点击“Connect”。此时应该能看到波形开始滚动,虽然可能充满噪声。
    • 应用陷波滤波器立即勾选“50Hz Notch Filter”(如果你在50Hz供电地区)或“60Hz Notch Filter”(60Hz地区)。这是消除工频干扰最有效的一步,你会立刻看到波形变得干净许多。
    • 设置带通滤波器:在“High Pass Filter”中输入1,在“Low Pass Filter”中输入40。这会将信号限制在典型的EEG频率范围内。
    • 静音:确保软件和系统音量静音,避免扬声器磁场产生电磁干扰。
  4. 基线观察:保持身体放松,闭眼,尽量保持头部不动。你应该能看到一条相对平稳、带有细微波动的基线。这就是你的“静息态”脑电。

4. 信号解读、常见问题与高级技巧

4.1 识别你的脑电波

当系统稳定后,你可以尝试诱发不同的脑电节律:

  • Alpha波(8-13 Hz):闭上眼睛,放松身心。通常在闭眼后几秒钟,你会看到波形的振幅明显增大,节奏变得舒缓。这就是枕叶区(但前额叶也能记录到)产生的Alpha波,与放松、静息状态相关。尝试睁眼,振幅会立刻减小。
  • Beta波(13-30 Hz):睁开眼睛,进行一些需要集中注意力的心算(比如连续减7)。你可能会看到更高频、更低幅度的快速波动增加,这反映了前额叶皮层在认知任务中的活跃度。
  • 眨眼伪迹:故意眨一下眼睛。你会看到一个非常巨大、陡峭的脉冲信号。这是因为眼球运动(EOG)产生的电位比EEG强得多。这不是“错误”,而是生物电信号的正常现象,在数据分析时需要被识别和剔除。

4.2 常见问题排查速查表

问题现象可能原因排查与解决步骤
信号完全平坦或为一条直线1. 串口未正确连接。
2. Arduino未供电或代码未运行。
3. EXG Pill损坏或电源接反。
1. 检查Spike Recorder中串口选择是否正确,重新插拔USB线。
2. 检查Arduino电源指示灯,重新上传代码。
3.断电后检查所有连线,用万用表测量EXG Pill的VCC与GND之间是否为5V。
信号充满50/60Hz正弦波干扰工频干扰严重,陷波滤波器未开启或失效。1.首先确认已勾选正确的陷波滤波器(50/60Hz)
2. 让被试者远离显示器、电源适配器、日光灯。
3. 尝试使用电池为整个系统(包括笔记本电脑)供电。
信号基线缓慢漂移(像爬坡)1. 电极凝胶接触不良或干燥。
2. 皮肤准备不充分,阻抗过高。
3. REF电极松动。
1. 按压所有电极,确保粘贴牢固。
2.重新进行皮肤准备,这是解决漂移最有效的方法。
3. 检查并重新粘贴耳后的REF电极。
信号中有规律的“心跳”状脉冲这是心电图(ECG)的干扰。当前额电极靠近眼部时,容易拾取到来自心脏的微弱信号。1. 这是正常现象,说明放大器灵敏度很高。
2. 可以通过软件高通滤波器(如设置为5Hz)进一步衰减ECG信号(但也会损失部分Delta波)。
3. 确认电极是否贴得太靠近眼眶。
信号中有突发性尖峰毛刺1. 身体或头部突然运动。
2. 电极线被拉扯。
3. 电源噪声(如冰箱启动)。
1. 提醒被试者保持静止。
2. 用胶带或绑带固定电极线,避免其晃动。
3. 记录时关闭不必要的电器。

4.3 进阶技巧与数据利用

  1. 多通道扩展:有读者在评论中问到多通道采集。理论上,可以使用多个EXG Pill,将所有板的REF引脚连接到同一个参考电极(如右耳后),并将所有板的GND连接到Arduino的同一个GND,以实现共参考记录。但需注意,每个通道需要独立的模拟输入引脚(A0, A1, A2...),并且需要修改Arduino代码以循环读取多个引脚并通过串口发送带通道标识的数据。Spike Recorder原生不支持多通道,你可能需要自行编写Processing或Python程序来解析和显示多路数据。
  2. 数据记录与分析:Spike Recorder可以将数据保存为WAV格式。你可以用Audacity等音频软件打开它,但更专业的做法是导入到Python(使用scipy.io.wavfile读取)或MATLAB中进行处理。可以进行更精细的滤波、计算各频段功率、绘制频谱图等。
  3. 降低环境噪声:一个立竿见影的技巧是让被试者坐在一个接地的金属椅子上(如果安全允许),或者将Arduino的GND通过一个1MΩ的电阻连接到大地(如水管)。这有助于疏导静电荷。另外,使用屏蔽线(即使只是用铝箔包裹BioAmp Cable)也能显著降低射频干扰。
  4. 长时间记录:对于超过30分钟的记录,凝胶电极可能会变干。可以考虑使用专为长时间EEG设计的粘贴性更强的电极片和导电膏。同时,注意USB线可能被意外拉扯,最好用胶带将其固定在桌面上。

5. 从实验到项目:构建你的第一个BCI应用

掌握了稳定的EEG采集后,你就可以尝试一些简单的脑机接口应用了。这里提供一个基于“眨眼检测”的入门项目思路,因为眨眼产生的EOG信号非常强,易于识别。

项目目标:通过检测眨眼,用Arduino控制一个LED灯的开关。

实现步骤

  1. 硬件扩展:在现有电路基础上,在Arduino的13号引脚连接一个LED和220Ω限流电阻。
  2. 信号特征提取:在Arduino端编程,不再仅仅转发原始数据。实时分析A0读取的数值。眨眼信号的特征是幅度突然急剧升高并迅速回落(一个尖峰)。你可以设置一个幅度阈值(通过观察平静时的信号最大值来确定)。
  3. 算法设计:编写一个简单的状态机。当信号值连续超过阈值一定时间(如20毫秒),则判定为一次有效眨眼,并改变LED的状态(开->关 或 关->开)。
  4. 消抖与优化:为了避免噪声误触发,可以加入“消抖”逻辑,例如在检测到一次眨眼后,设置一个200-300毫秒的不应期,在此期间忽略新的触发。
  5. 校准:在程序开始时,让用户保持平静、不眨眼10秒钟,Arduino自动计算这期间信号的最大值和平均值,并据此动态设置阈值,以适应不同人的信号强度差异。

这个项目虽然简单,但它涵盖了BCI的核心流程:信号采集 -> 特征提取 -> 模式识别 -> 控制输出。你可以在此基础上,尝试更复杂的模式,比如通过专注度(Beta波相对强度)来控制一个舵机的角度,或者用放松度(Alpha波强度)来调节一个氛围灯的亮度。关键在于,你现在有了一个可靠的、属于自己的生物信号数据源,剩下的就是发挥你的编程和创意了。

在整个搭建和实验过程中,耐心和细致的观察比什么都重要。生物信号采集充满了不确定性,每一次信号变好或变坏,都是一个学习的机会。记录下你每次调整参数(如滤波器设置、电极位置)后的信号变化,慢慢你就会对这套系统产生直觉。最后,别忘了安全永远是第一位的,这套系统仅适用于教育、研究和娱乐目的,不能用于任何医疗诊断。享受探索你自己大脑电活动的奇妙过程吧,这本身就是一件足够酷的事情。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询