首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >用 BITalino 可视化生理信号并玩肌电控制版 Pong 游戏

用 BITalino 可视化生理信号并玩肌电控制版 Pong 游戏

原创
作者头像
Scivaro_科采通
发布2025-06-25 14:25:47
发布2025-06-25 14:25:47
13100
代码可运行
举报
文章被收录于专栏:biosignalspluxbiosignalsplux
运行总次数:0
代码可运行

——从传感器数据采集到 Processing 实时互动

作者:科采通


一、前言:生理信号也能玩游戏?

生理信号(如心电图 ECG、肌电图 EMG、皮肤电 EDA 等)长期用于医疗、康复、心理研究等专业领域,但通过像 BITalino 这样的开源平台,它们正变得越来越亲民,进入创客空间、课堂乃至游戏开发者手中。

本篇文章将结合一个非常有趣的案例: 我们将使用 BITalino 采集肌电信号(EMG),控制经典 Pong 游戏中的球拍移动;同时也会讲解如何通过 Processing 将包括心电、肌电等多种信号实时图形化。

BITalino
BITalino

二、设备准备

  • BITalino (r)evolution Board
  • EMG(肌电)传感器模块
  • Bluetooth Dongle 或内置蓝牙 PC
  • USB 电源线(或电池)
  • 电脑(Windows / macOS / Linux)
  • 软件:Processing IDE(推荐 2.2.1 或 3.0.2)

三、项目 1:可视化你的生理信号(Graphwriter)

1. 连接 BITalino

BITalino 支持通过 蓝牙串口(Serial over Bluetooth) 发送数据。首次连接前,需在系统中完成蓝牙配对:

代码语言:javascript
代码运行次数:0
运行
复制
# Linux 示例:绑定 BITalino 到串口设备
sudo rfcomm bind /dev/rfcomm0 XX:XX:XX:XX:XX:XX 1

macOS 和 Windows 用户也可以使用内置的 Bluetooth 设置连接设备。


2. Processing 代码框架

代码语言:javascript
代码运行次数:0
运行
复制
import processing.serial.*;

Serial myPort;
ArrayList<Integer>[] sensorData = new ArrayList[6];

void setup() {
  size(800, 400);
  for (int i = 0; i < 6; i++) sensorData[i] = new ArrayList<Integer>();
  myPort = new Serial(this, Serial.list()[PORT_INDEX], 115200);
}

void draw() {
  background(255);
  for (int i = 0; i < sensorData.length; i++) {
    stroke(i * 40, 100, 200);
    noFill();
    beginShape();
    for (int j = 0; j < sensorData[i].size(); j++) {
      vertex(j, sensorData[i].get(j) / 10 + i * 50);
    }
    endShape();
  }
}

📌 注:PORT_INDEX 需修改为你本地蓝牙串口的序号。


3. 实时波形显示效果

运行以上代码后,你将看到类似“六通道示波器”的图形界面,实时滚动展示从 BITalino 获取的传感器数据。

你可以通过以下方式将数据导出为 CSV:

代码语言:javascript
代码运行次数:0
运行
复制
java复制编辑PrintWriter output = createWriter("data.csv");
output.println("时间戳,ECG,EDA,EMG,...");
...
output.flush();
output.close();

四、项目 2:肌电控制 Pong 游戏!

1. 项目说明

本项目将通过 EMG 传感器读取肌肉电信号,当你用力握拳时,信号上升,从而控制 Pong 球拍向上或向下移动。无需按键,全靠肌肉动作


2. 核心逻辑

代码语言:javascript
代码运行次数:0
运行
复制
java复制编辑// EMG 值阈值控制球拍上下移动
int emgThreshold = 500;

void draw() {
  ...
  int emgValue = getEMGValue();
  if (emgValue > emgThreshold) paddleY -= 5;
  else paddleY += 5;
}

3. 玩法展示

  • 准备:将 EMG 电极贴在前臂或肱二头肌上。
  • 启动:运行 bitalinoPong.pde
  • 操作:握拳 = 上移球拍;放松 = 下移球拍。
  • 目标:不要让球漏到边界!

五、拓展建议

  • 使用 两个 EMG 通道 实现“左右肌群”分别控制上下移动。
  • 替换为 心跳(ECG)触发事件,做出冥想小游戏。
  • 使用 Python(如 PySerial + Matplotlib)实现更复杂的图形界面。
  • 将数据发送到 Unity / Web 浏览器,结合动画或 3D 游戏。

六、总结

BITalino 是一个极具教育性与创造力的生理信号开发工具。通过本文两个项目——实时可视化 + 游戏交互,你可以亲自体验“用身体做输入设备”的乐趣。

不论你是学生研究人员,还是开源创客,BITalino 都能帮你快速搭建身体信号相关的应用原型,打开一扇通往未来医疗与交互设计的大门。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、前言:生理信号也能玩游戏?
  • 二、设备准备
  • 三、项目 1:可视化你的生理信号(Graphwriter)
    • 1. 连接 BITalino
    • 2. Processing 代码框架
    • 3. 实时波形显示效果
  • 四、项目 2:肌电控制 Pong 游戏!
    • 1. 项目说明
    • 2. 核心逻辑
    • 3. 玩法展示
  • 五、拓展建议
  • 六、总结
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档