作者:科采通 标签:Shimmer3、肌电控制、MATLAB、Arduino、机器人手、EMG
肌电图(EMG)作为一种能够反映人体肌肉活动的生理信号,广泛应用于假肢控制、人机交互、康复工程等领域。本文以 Shimmer3 EMG 模块 为基础,搭建一个完整的系统,使机械手能够模仿用户的手指动作。系统整体使用 MATLAB 进行信号处理与识别,通过 Arduino 控制五个伺服电机驱动机械手五指,实现自然的肌电控制。
模块 | 说明 |
---|---|
Shimmer3 EMG | 肌电采集传感器,支持蓝牙/USB 数据传输,采样率高达 1024Hz |
MATLAB | 用于信号读取、带通滤波、特征提取(如 RMS)、模式识别与指令生成 |
Arduino UNO | 接收 MATLAB 发出的串口指令,驱动对应伺服电机动作 |
5指机械手 | 每个舵机控制一根手指的屈伸动作,实现肌电驱动手势控制 |
💡 本文以单通道 EMG 作为示范,便于初学者理解,但可拓展至多通道或更复杂的模式识别。
在 MATLAB 中读取 Shimmer3 蓝牙串口数据,可使用 serialport
函数:
matlab复制编辑shimmerPort = serialport("COM3", 115200); % COM3 是 Shimmer3 蓝牙端口
flush(shimmerPort); % 清除缓冲区
推荐使用 Shimmer 官方的 LogAndStream 固件,将 EMG 数据作为 ASCII 或二进制流发送至上位机。
以下为简化版主控程序流程:
matlab复制编辑% 初始化串口
shimmerPort = serialport("COM3", 115200);
arduinoPort = serialport("COM4", 9600); % 连接 Arduino
% 信号采样与滤波
windowSize = 200;
fs = 1000;
[b, a] = butter(4, [20 450]/(fs/2), 'bandpass');
while true
data = read(shimmerPort, windowSize, "double");
emg = filter(b, a, data);
% 特征提取:均方根(RMS)
feature = rms(emg);
% 简单分类逻辑
if feature > 0.35
write(arduinoPort, "F1", "string"); % 触发食指动作
elseif feature > 0.25
write(arduinoPort, "F2", "string"); % 触发中指动作
else
write(arduinoPort, "R0", "string"); % 复位
end
pause(0.05); % 控制频率
end
可根据用户的肌电幅值个性化设定阈值,或使用机器学习模型实现更智能识别。
Arduino 接收串口指令,控制对应伺服电机动作:
cpp复制编辑#include <Servo.h>
Servo finger1, finger2;
void setup() {
Serial.begin(9600);
finger1.attach(3); // 舵机端口
finger2.attach(5);
}
void loop() {
if (Serial.available()) {
String cmd = Serial.readStringUntil('\n');
if (cmd == "F1") {
finger1.write(90); // 食指握拳
} else if (cmd == "F2") {
finger2.write(90); // 中指握拳
} else if (cmd == "R0") {
finger1.write(0);
finger2.write(0);
}
}
}
Shimmer3 EMG 模块在稳定性与信噪比方面表现出色,结合 MATLAB 与 Arduino 可快速实现基于肌电的控制系统。本文提供了一套完整的软硬件流程,适合初学者入门 EMG 控制技术,也为科研开发者提供了一个可拓展的基础架构。
如需获取完整代码或多通道支持,欢迎评论区留言交流,后续将发布系列教程。
📌 关于作者 科采通,专注于可穿戴设备、脑机接口与生物信号分析的工程实践,致力于打造科研友好的技术文章与工具链方案。关注我,获取更多实时信号处理与智能控制相关内容!
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。