BrainLink + 无人机 = ?
BrainLink 是一个中间桥梁,它本身不能直接控制无人机,但它可以读取你的脑电波信号,然后通过蓝牙将这些信号“翻译”成电脑或手机可以理解的指令,由电脑或手机上的软件(如 Scratch 3.0、Python)根据这些指令,向无人机发出飞行的命令。

工作流程如下:
你的大脑 → BrainLink (读取脑电波) → 蓝牙 → 电脑/手机 (软件处理指令) → WiF/蓝牙 → 无人机 (执行动作)
控制无人机的两种主要方式
根据你的技术水平和需求,主要有两种控制方式:
图形化编程(适合初学者、儿童、教育场景)
这是最简单、最直观的方式,通常使用 mBlock(基于 Scratch 3.0)软件。

原理: 在 mBlock 软件中,你通过拖拽积木块来编写程序,程序会不断检查 BrainLink 发送过来的脑电波数据(专注度”、“放松度”等),当某个数值达到你设定的阈值时,就触发一个无人机动作(起飞”、“左转”、“降落”)。
所需设备:
- BrainLink 主机
- 无人机 (支持 Wi-Fi 或蓝牙遥控的,如 Parrot 系列无人机、部分 Tello 无人机、或其他兼容的 DIY 无人机)
- 电脑或平板电脑
- 数据线 (用于给 BrainLink 和无人机充电)
- mBlock 软件 (在电脑或平板上安装)
详细步骤:
-
硬件连接与准备:
(图片来源网络,侵删)- 给 BrainLink 和无人机充满电。
- 打开无人机电源,确保它处于正常待机连接状态(有些无人机需要连接手机 App 先配对好 Wi-Fi)。
- 打开 BrainLink 电源,它会自动进入蓝牙配对模式。
- 在电脑或平板上,打开蓝牙,搜索并连接名为 "BrainLink" 的设备。
-
软件准备:
- 下载并安装 mBlock 5 软件。
- 打开 mBlock,在左上角的设备管理器中,选择 "添加设备",找到并连接你的 "BrainLink"。
-
编写控制程序 (示例:用“专注度”控制无人机起飞):
- 事件模块: 拖出一个
当绿旗被点击的积木。 - 脑电波模块: 从“扩展”中找到 BrainLink 的积木库,拖出一个
当 BrainLink 接收到数据的积木。 - 条件判断模块: 拖出一个
....的积木,在“的六边形槽口中,放入BrainLink 的专注度 > 80这样的积木,这意味着,当你的专注度数值超过80时,就执行下面的操作。 - 无人机控制模块: 从“扩展”中找到你的无人机品牌对应的积木库("Parrot" 或 "Tello"),拖入
无人机 起飞的积木,放在“的下面。 - 循环模块: 为了持续监测,将整个
....逻辑块,放入一个重复执行的积木中。
程序逻辑就是:
- 点击绿旗开始程序。
- 不断重复执行:
- 读取 BrainLink 的专注度。
- 如果专注度 > 80,就让无人机起飞。
- 事件模块: 拖出一个
-
上传并运行:
- 将编写好的程序上传到你的电脑或平板。
- 戴上 BrainLink 的头带,确保电极片与额头接触良好。
- 点击绿旗运行程序。
- 尝试集中注意力(比如盯着一个复杂的图形或做数学题),当你的专注度达到设定值时,无人机就会自动起飞!
其他创意玩法:
- 用“放松度”控制降落: 当你感到放松时,无人机缓缓降落。
- 用“眨眼”控制: 通过检测特定的肌肉信号(EOG)来模拟“眨眼”,实现拍照或紧急悬停。
- 手势 + 脑电波: 用挥手(通过其他传感器检测)来切换控制模式,用脑电波来执行具体动作。
Python 编程(适合有一定编程基础的开发者、进阶玩家)
这种方式提供了更高的自由度和灵活性,可以实现更复杂的逻辑和算法。
原理:
使用 Python 通过 pyserial 或 bleak 等库与 BrainLink 进行蓝牙通信,直接读取原始的脑电数据,你可以自己编写算法来解析这些数据(使用机器学习模型来判断用户的意图),并通过 Python 的无人机 SDK(如 Tello 的 tellopy)来控制无人机。
所需设备:
- 与方式一基本相同,但主机最好是电脑。
- 需要安装 Python 环境。
- 需要安装相关的库:
pyserial(或bleak)、tellopy(或其他无人机 SDK)。
详细步骤(概念性):
-
环境搭建:
- 安装 Python。
- 安装必要的库:
pip install pyserial tellopy(假设使用 Tello 无人机和串口通信)。
-
编写 Python 脚本:
import serial import tellopy import time # --- 1. 连接 BrainLink --- # 注意:这里的 COM 端口需要根据你的系统实际情况修改 # 在 Windows 上是 "COMx",在 Linux/Mac 上是 "/dev/tty.xxx" brainlink = serial.Serial('COM5', 115200, timeout=1) # --- 2. 连接无人机 --- drone = tellopy.Tello() try: drone.connect() drone.wait_for_connection(60) print("无人机已连接!") except Exception as e: print(f"连接无人机失败: {e}") brainlink.close() exit() # --- 3. 主循环:读取数据并控制 --- while True: try: # 从 BrainLink 读取一行数据 line = brainlink.readline().decode('utf-8').strip() if line: # 假设 BrainLink 发送的数据格式是 "专注度:85,放松度:20" # 这里需要你根据 BrainLink 的实际数据格式进行解析 parts = line.split(',') focus = int(parts[0].split(':')[1]) print(f"当前专注度: {focus}") # --- 4. 根据数据控制无人机 --- if focus > 80: print("专注度高,执行向前飞行!") drone.forward(30) # 向前飞行30cm time.sleep(1) # 飞行1秒 drone.hover() # 悬停 elif focus < 30: print("专注度低,执行向左旋转!") drone.counter_clockwise(90) # 逆时针旋转90度 time.sleep(1) drone.hover() except KeyboardInterrupt: print("程序被用户中断") break except Exception as e: print(f"发生错误: {e}") drone.land() break # --- 5. 清理资源 --- drone.land() drone.quit() brainlink.close()
进阶玩法:
- 信号处理: 对原始脑电波进行滤波、傅里叶变换,提取特定频段的能量(如 Alpha 波、Beta 波)。
- 机器学习: 收集大量“想象左转”、“想象右转”等不同意图下的脑电数据,训练一个简单的分类模型(如 SVM 或 神经网络),让无人机能更智能地识别你的复杂意图。
- 多自由度控制: 同时使用多个脑电指标(如专注度、放松度、眨眼)来控制无人机的多个维度(前后、左右、上下、旋转)。
注意事项与挑战
- 设备兼容性: 并非所有无人机都能被编程控制,请确保你的无人机有开放的 SDK 或 API 支持。
- 信号稳定性: 脑电波信号非常微弱,容易受到干扰,请确保:
- 电极片与皮肤接触良好、干净。
- 远离强电磁干扰源(如 Wi-Fi 路由器、微波炉、手机)。
- 保持身体放松,避免肌肉紧张(如咬牙、皱眉)产生干扰信号。
- 校准是关键: 每个人的脑电波特征都不同,甚至同一个人在不同时间、不同状态下的基
