pyshimmer:Shimmer3 传感器的Python开发指南
·
1. 项目概述
pyshimmer是一个非官方的Python API库,专为Shimmer可穿戴传感器设备开发,提供三种核心接口:
- 蓝牙API:通过RFCOMM协议与LogAndStream固件通信
- 底座API:通过USB串口与Dock连接的设备交互
- 数据读取API:解析Shimmer设备生成的二进制数据文件

📌 兼容性提示:仅支持Linux平台,推荐使用Firmware v0.15.4及以上版本
2. 快速安装
# 通过pip安装稳定版
pip install pyshimmer
# 从源码安装(含测试套件)
git clone https://github.com/seemoo-lab/pyshimmer.git
cd pyshimmer
pip install .[test]
pytest # 运行单元测试
3. 硬件准备
3.1 蓝牙连接配置
# 扫描设备MAC地址(末尾数字对应设备背面ID)
hcitool scan
> Scanning...
> 00:12:6F:XX:XX:XX Shimmer3-XXXX
# 建立RFCOMM绑定(需root权限)
sudo rfcomm bind 42 00:12:6F:XX:XX:XX
此时会生成设备节点:/dev/rfcomm42
3.2 多设备UDEV规则(可选)
创建/etc/udev/rules.d/10-shimmer.rules:
# 示例:区分ECG和PPG设备
SUBSYSTEM=="tty" ATTRS{idVendor}=="0403" ATTRS{serial}=="A12345" SYMLINK+="ttyECGdev"
SUBSYSTEM=="tty" ATTRS{idVendor}=="0403" ATTRS{serial}=="B67890" SYMLINK+="ttyPPGdev"
生效规则:sudo udevadm control --reload
4. 核心API使用示例
4.1 蓝牙实时数据流
from pyshimmer import ShimmerBluetooth, DataPacket, EChannelType
def data_handler(pkt: DataPacket):
gsr = pkt[EChannelType.GSR] # 获取皮肤电数据
print(f"GSR值: {gsr:.2f} μS")
# 建立蓝牙连接
dev = ShimmerBluetooth("/dev/rfcomm42")
dev.initialize()
dev.add_stream_callback(data_handler)
# 开始采集(5秒后停止)
dev.start_streaming()
import time; time.sleep(5)
dev.stop_streaming()
4.2 底座模式设备控制
from pyshimmer import ShimmerDock
with ShimmerDock("/dev/ttyECGdev") as dock:
mac = dock.get_mac_address() # 获取设备MAC地址
batt = dock.get_battery_level() # 读取电量
print(f"设备 {mac} 当前电量: {batt}%")
4.3 离线数据分析
from pyshimmer import ShimmerReader
reader = ShimmerReader.open("ecg_data.bin")
print(f"采样率: {reader.sample_rate}Hz")
print(f"可用通道: {reader.channels}")
# 提取ECG数据(24位精度)
timestamps = reader[EChannelType.TIMESTAMP]
ecg_signal = reader[EChannelType.EXG_ADS1292R_1_CH1_24BIT]
5. 高级功能
5.1 多设备同步
# 主设备设置同步信号
master_dev.set_as_master()
# 从设备启用同步
slave_dev.enable_synchronization()
5.2 传感器配置
# 配置GSR采样率(128Hz)
dev.set_sample_rate(EChannelType.GSR, 128)
# 启用加速度计(±8g量程)
dev.enable_sensor(
EChannelType.ACCEL_LN_X,
range_code=0x02 # 对应±8g
)
6. 常见问题解决
| 问题现象 | 可能原因 | 解决方案 |
|---|---|---|
| 连接超时 | 固件版本过低 | 升级至v0.15.4+ |
| 数据包丢失 | 蓝牙带宽不足 | 降低采样率或关闭冗余通道 |
| 解码错误 | SD卡文件损坏 | 使用ShimmerReader的校验模式 |
7. 典型应用场景
- 情绪研究:GSR+ECG多模态分析
- 运动捕捉:9轴IMU数据融合
- 远程医疗:蓝牙传输生命体征数据
🚀 性能数据:在Raspberry Pi 4上实测支持6台设备同时连接(采样率50Hz)
关键词: Shimmer3, pyshimmer, 生物信号采集, Python API, 可穿戴设备
更多推荐


所有评论(0)