想象一下:不需要键盘、鼠标或手柄,只靠“集中精神”,就能在电脑上操控一个游戏——屏幕中间的球,会在你和对手之间来回移动,你越专注,球就越向对面移动。
这正是本项目的核心:
利用 EEG(脑电信号) 和 BCI(脑机接口) 技术,实现一个 双人“脑控拔河”游戏。项目整体难度适合初学者,但覆盖了从硬件搭建、信号采集、上位机软件到游戏逻辑的一整条链路,非常适合作为脑机接口入门实践。脑电图(Electroencephalography, EEG) 是记录大脑自发电活动的一种方法。
特征为:
使用电极贴在头皮表面(通常采用 International 10–20 System 国际 10–20 电极系统);
记录到的是微伏级的电势变化;
不同频段(如 α 波、β 波等)与不同的认知或生理状态相关。
Brain-Computer Interface(BCI),又称 Brain-Machine Interface(BMI),指的是将脑电等生物电信号与外部设备(如电脑、机械臂、轮椅等)进行直接连接的系统。在这个项目中,BCI 的作用是:
将大脑活动 → 转换为 EEG 信号 → 由硬件放大采集 → 由软件分析转换成“专注程度” → 用于控制游戏中的球的运动。
在这个双人游戏中:
屏幕中间有一个球;
左右两侧分别为 Player A 和 Player B;
双方佩戴 EEG 采集电极,集中注意力时,大脑 β 波(13–30 Hz)会增强,α 波(8–13 Hz)相对减弱;
程序根据 β/α 比值(beta-to-alpha ratio) 估算专注程度;
谁的 β/α 比更高,谁对球施加的“力”就更大,球就会向对手一侧移动;
当球越过其中一方的边界线时,另一方获胜。
简单来说:
α 波(8–13 Hz):放松、闭眼休息、平静状态;
β 波(13–30 Hz):任务执行、思考、注意力集中。
利用这两个频段的相对强弱,就可以构建一个很直观的“专注度指标”。
BioAmp EXG Pill × 2
用于放大与过滤脑电(EEG)信号;
本项目中,一个玩家使用一个 EXG Pill,共两路 EEG。
BioAmp Cables × 2
将 EXG Pill 与凝胶电极连接到头皮与耳后骨性部位。
Arduino UNO R4 Minima × 1(含 Type-C 数据线)
作为数据采集与串口传输平台;
使用模拟输入 A0、A1 接收两个通道的 EEG 信号。
Gel electrodes 凝胶电极 × 6
IN+:Fp1 前额位置;
IN−、REF:耳后骨性区域。
每个玩家 3 片:
Nuprep 皮肤准备凝胶 × 1 + 酒精棉片 × 2
降低皮肤阻抗,去除角质与油污,提高信号质量。
面包板 × 1、跳线若干(公对公、公对母)
用于连接 EXG Pill 与 Arduino;
原型验证使用,若长期使用建议改为洞洞板/焊接板。
笔记本电脑 × 1
运行 Arduino IDE、Python 及游戏前端界面。
Arduino IDE:
用于烧录 Chords Arduino Firmware 到 UNO R4。
Python 3.11.x:
运行 Chords Python;
通过 LSL(Lab Streaming Layer)输出 EEG 数据;
启动 Web 应用,显示游戏界面。
Chords Arduino Firmware(GitHub 仓库):
针对不同开发板准备好的固件模板;
负责将 EXG Pill 的模拟信号采样并通过串口输出。
Chords Python(GitHub 仓库):
串口读取 UNO 数据;
数据预处理与滤波;
提取 α、β 波功率;
计算 β/α 比值;
将结果映射为游戏中的“球的受力”。
负责:
若你拿到的是未组装版本,需要:
焊接排针(header pins);
焊接 JST PH 2.0 插座;
确保焊点可靠、无虚焊与短路。
每个 EXG Pill 使用 3 根公对母线与面包板连接:
黑色线 → GND
红色线 → VCC(5V)
黄色线 → OUT(模拟输出)
两块 EXG Pill 分别接到不同模拟通道(A0、A1)。
注:面包板仅用于演示,若对信号质量要求更高建议使用焊接板,以减少接触不良与噪声干扰。
将 BioAmp Cable 接到 EXG Pill 对应接口;
在每条 BioAmp Cable 的末端连接凝胶电极:
IN+(信号输入正极)
IN−(信号输入负极)
REF(参考电极)
在计划贴电极的皮肤区域涂抹 Nuprep 凝胶;
轻轻揉搓一段时间,去除部分表层角质;
用湿巾或酒精棉片擦拭干净残留凝胶与污垢;
让皮肤保持洁净但略微湿润(有利于导电)。
Nuprep 的作用:
降低皮肤-电极接触阻抗;
提高信号质量;
尽量减少皮肤刺激。
本项目使用的是 前额皮层(Prefrontal Cortex) 的 EEG:
Fp1 点位:前额左侧(10–20 系统中的一个标准点位);
玩家 A:
IN+(接 A0 的 EXG Pill) → 放在 Fp1;
IN−、REF → 放在左耳后骨性区域(mastoid)。
玩家 B:
IN+(接 A1 的 EXG Pill) → 放在 Fp1(对称位置);
IN−、REF → 同样放在耳后骨性区域。
核心原则:
信号电极(IN+)贴在目标脑区;
参考与负极电极放在相对稳定的骨性位置,减少肌肉干扰。
两块 EXG Pill 到 UNO R4 Minima 的连接关系:
VCC → 5V
GND → GND
OUT1 → A0(玩家 A)
OUT2 → A1(玩家 B)
再通过 Type-C 线将 Arduino UNO R4 与笔记本相连。
⚠ 安全注意:
一定要确保 VCC 与 GND 接线正确,反接可能损坏 EXG 传感器或开发板。
从 GitHub 下载:Chords-Arduino-Firmware 仓库 ZIP 包;
解压后,根据你使用的开发板型号进入对应文件夹,例如:UNO R4;
打开 .ino 工程于 Arduino IDE 中;
选择正确的开发板与串口;
点击“Upload”上传固件;
IDE 显示 “Done Uploading” 即表示烧录成功。
此时 UNO R4 就会以预设采样率从 A0、A1 采集 EEG 信号,并通过串口输出给上位机。
从 GitHub 下载 Chords-Python 仓库 ZIP 并解压;
在该目录下打开命令行/终端:
创建虚拟环境。
激活虚拟环境(Windows 示例):
终端前缀出现 (venv) 说明激活成功。
安装通用依赖:
安装游戏相关依赖:
在虚拟环境中运行:
浏览器会打开一个 Web 界面;
点击 “Start LSL” 按钮,启动 EEG 数据的 LSL 流;
点击 “EEG Tug of War” 游戏按钮,进入脑控拔河游戏界面。
进入游戏后,你会看到:
屏幕中间有一个球;
左侧为 Player A,右侧为 Player B;
球初始位于中间位置。
游戏规则:
双方同时佩戴电极,面对屏幕;
尽量 专注于屏幕中央的球;
系统实时计算两位玩家的 β/α 比值;
比值大的一方施加的“力”更大,球向对方方向移动;
当球触碰到某一侧的边界线时,另一方获胜。
界面操作:
Start / Restart:
Start:开始游戏;
游戏进行中按钮会变为 Restart,点击后重新开始。
Pause:暂停游戏,冻结球的位置。
Resume:从暂停位置继续游戏。
Exit:退出当前游戏界面。
本项目完成了一个完整的 双通道 EEG + BCI + 实时游戏交互 示例:
硬件层:
使用两块 BioAmp EXG Pill + Arduino UNO R4 完成双通道 EEG 采集;
按照 10–20 系统在 Fp1 布置电极,采集前额皮层脑电。
软件层:
Chords Arduino Firmware 完成底层数据采集;
Chords Python 完成数据读取、频谱分析、α/β 提取与 LSL 输出;
浏览器游戏前端根据 β/α 比值实现实时“脑控拔河”。
应用层:
玩家靠“集中注意力”控制球的运动;
游戏本身既是交互娱乐,也是一种 专注训练/放松训练 工具。
引入更多 EEG 指标:如 θ 波、γ 波等,设计更复杂的游戏机制;
加入自适应难度:根据玩家当前状态自动调整游戏灵敏度;
使用机器学习对 EEG 特征进行分类,实现更复杂的指令集(比如多种操作);
将游戏拓展为单人训练模式,用于冥想、注意力训练反馈(Neurofeedback)。



0 条