用 EEG 玩“弹球”:基于 BioAmp EXG + Arduino 的脑机接口小游戏

内容摘要想象一下:不需要键盘、鼠标或手柄,只靠“集中精神”,就能在电脑上操控一个游戏——屏幕中间的球,会在你和对手之间来回移动,你越专注,球就越向对面移动。这正是本项目的核心:利用 EEG(脑电信号) 和 BCI(脑机接口) 技术,实现一个 双人“

想象一下:不需要键盘、鼠标或手柄,只靠“集中精神”,就能在电脑上操控一个游戏——屏幕中间的球,会在你和对手之间来回移动,你越专注,球就越向对面移动。

这正是本项目的核心:

利用 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
今日推荐
浙ICP备2021030705号-9