使用 PulseSensor 脉搏传感器测量心率之二:数据采集及保存( Processing&Python)

通常使用Pulse sensor心率传感器和arduino UNO搭建完硬件平台后,使用上位机PulseSensor_Amped_Processing_Visualizer软件,就可以查看实时心率图、心率值 BPM 和 脉搏间隔 IBI,然而传感器采集到数据只是前提,对数据的处理才是一切应用的核心,因此,需要对arduino发送过来的串口数据进行保存。
通过两种方式进行保存
1、修改现有的上位机软件(Processing)
2、使用Python读取串口数据并保存
一、修改现有的上位机软件(Processing)
在本例中使用PrintWriter对象,官方参考示列如下:

PrintWriter output;   //Create Object

void setup() {
  // Create a new file in the sketch directory
  output = createWriter("positions.txt"); 
}

void draw() {
  point(mouseX, mouseY);
  output.println(mouseX);  // Write the coordinate to the file
}

void keyPressed() {
  output.flush();  // Writes the remaining data to the file
  output.close();  // Finishes the file
  exit();  // Stops the program
}

修改上位机软件方式如下:
1、在主程序 PulseSensorAmpd_Processing_Visualizer.pde中,添加代码,当程序打开时,生成一个TXT文本,用于记录串口数据。
在void setup() { 语句前声明一个 PrintWriter 对象,名字叫output
PrintWriter的使用,请参考

PrintWriter output; //output as txt 新增代码

void setup() {      //原程序代码

数据采集后,按照年月日格式命名TXT 文件

String outputname = "PulseSensordata-"+str(year())+str(month())+ str(day())+"-"+str(hour())+" "+str(minute()) +" "+ str(second()) +".txt";    // 新增代码
output = createWriter(outputname);   // 新增代码

2 在串口读取程序serialEvent.pde添加代码

inData = trim(inData); // cut off white space (carriage return)新增代码

output.println("b'"+ inData );   // 原程序代码

程序运行后,在主程序所在目录下,将会生成Txt文本,实例如下:
PulseSensordata-2018616-18 54 42.txt
内容如下:

b'S0
b'S413
b'S439
b'S484
b'S490
b'S468
b'S450
b'S430
b'S424
b'S405

二、使用Python读取串口数据并保存
由于Python在数据处理方面的优势,上位机软件可以使用Python实现,本章节将演示Python读取串口数据并保存,需要确认设备管理中查询串口使用哪个口,本例为COM5口,演示如下:

import serial
import serial.tools.list_ports
from datetime import datetime

now = datetime.now()
outputname="PulseSensordata-" + str(now.year)+ str(now.month) + str(now.day) +"-" +str(now.hour)+" "+ str(now.minute)+" "+ str(now.second)+".txt"

t = serial.Serial('com5',115200)
while 1: 
     with open(outputname, 'a+') as f: #a在 原文件 追加中
          print(t.readline() , file=f)

后续还有很大的空间进行改写上位机以及深度开发和优化,目前我们将精力集中到后续章节:使用 PulseSensor 脉搏传感器测量心率之三:时域波形显示及频域波形显示

点赞