Contec CMS50E 血氧仪 导出PPG、心率、血氧数据

编程入门 行业动态 更新时间:2024-10-08 22:14:57

Contec CMS50E 血氧仪 导出PPG、<a href=https://www.elefans.com/category/jswz/34/1743132.html style=心率、血氧数据"/>

Contec CMS50E 血氧仪 导出PPG、心率、血氧数据

Contec CMS50E 血氧仪 导出PPG、心率、血氧数据

介绍

通过HID接口实时接收Contec CMS50E串口数据,获取PPG原始信号、心率、SPO2数据并保存。您可以使用原始PPG信号执行进一步的数据分析,包括比较rPPG算法的准确性,训练深度学习网络等等。

Contec CMS50E 血氧仪

用法

  1. 安装python3和相应的pip程序。

  2. 在shell中输入:pip3 Install hidapi安装hidapi

  3. 在电脑上启动智能设备助手软件(通常可以通过血氧仪包装盒附带的U盘安装,也可以咨询客服获取)。

  1. 把手指放在血氧计上,打开它,然后把它插到电脑上。确保它运行良好,也就是说,在进入下一步之前,您可以在计算机软件上看到曲线变化。

  2. 在设备管理器中检查血氧仪的硬件id(我的设备是VENDOR_ID = 0x28E9, PRODUCT_ID = 0x028A)。修改程序中PPG文件的存放路径,保证数据能够正确存放。

  3. 运行脚本cms50e_hid.py加载数据并保存为csv文件。

代码

import time
import hid
import csv'''
This program is used to extract data information from the Contec CMS50E, 
including PPG signals, Heart rate signals, and SPO2 signals.
Before use, you need to determine the hardware ID of the CMS50E after connected to the computer.
'''# Delay the start time of data collection, ready to start collecting data
def delay_start(delay_time):print("Start recording in...")for i in range(delay_time):print(delay_time - i)time.sleep(1)def collect_data(device, csvFileName):# Initialize datacheck_bit = 0data_update_bit = 0status_bit = 0PPG_bit = 0HR_bit = 0SPO2_bit = 0data_count = 0with open(csvFileName, 'w', newline='') as file:writer = csv.writer(file)writer.writerow(['Count', 'PPG', 'HR', 'SPO2'])delay_start(3)start_time = time.time()while True:data = device.read(18)# hex_data = []# for i in range(len(data)):#     hex_data.append(hex(data[i]))# print(hex_data)print(data)current_time = time.time()time_count = current_time - start_timeif time_count > stop_time:break# Parse the received datafor i in range(3):check_bit = data[0 + 6*i]data_update_bit = data[1 + 6*i]status_bit = data[2 + 6*i]# while data_update_bit==1, Update HR and SPO2if data_update_bit == 0:PPG_bit = data[3 + 6*i]elif data_update_bit == 1:HR_bit = data[3 + 6 * i]SPO2_bit = data[4 + 6 * i]# Save PPG, HR, SPO2 in csvwith open(csvFileName, 'a', newline='') as file:writer = csv.writer(file)writer.writerow([str(data_count), str(PPG_bit), str(HR_bit), str(SPO2_bit)])data_count = data_count + 1if __name__ == '__main__':# ParametersVENDOR_ID = 0x28E9PRODUCT_ID = 0x028AcsvPath = 'G:/Project/Fatigue/data/myDataset/test/'csvFileName = csvPath + 'Output1' + '.csv'stop_time = 70device = hid.device()device.open(VENDOR_ID, PRODUCT_ID)print("Opening the device")collect_data(device, csvFileName)

规范

  • 设备的“采样频率”为60Hz。
  • 血氧仪每秒向PC发送60个数据,每个数据包含6字节,不同的数据用0xeb分隔。
  • 当第二个字节为0时,血氧仪处于采集PPG信号阶段,此时第四个字节的数据为PPG信号;当第二个字节为1时,血氧仪处于更新数据显示阶段,此时第四个字节的数据为心率值,第五个字节的数据为SPO2。数据大约每秒更新一次。

结果

PPG信号波形(前10s)

更多

更多详细信息请见GitHub仓库:

更多推荐

Contec CMS50E 血氧仪 导出PPG、心率、血氧数据

本文发布于:2024-03-23 19:10:40,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1741775.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:心率   数据   CMS50E   Contec   PPG

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!