对于脉搏检测的可视化

引言:

        前面我利用树莓派pico+max30102对原始数据进行了提取,并且还实现了对其进行数据处理,计算出了血氧浓度以及心率。那么这篇文章,便是要通过数据可视化,形象的展示脉搏与心跳。并且利用波形图展示完毕后,通过分析与处理对我的健康状态进行一个检测。

硬件环境:

        树莓派pico+max30102+OLED。附上pico的引脚图,顺便自己忘了的时候来翻一翻。OLED与max30102都是利用I2C通讯进行驱动。

       

数据选择:

        首先我们要考虑的一个问题便是对于波形图的展示到底是用红光或者红外光的原始数据,还是用处理过后得到的心率????起初我用的是处理过后的心率来表示我的心跳或者说是脉搏,但是其实这是不正确的。他们三者之前确实有关联,但是他们还是有着不同的地方。心率、心跳和脉搏这三个概念在医学上有所区别:

        心率:心率是指心脏每分钟跳动的次数,通常以每分钟的脉搏数表示。心率可以通过心电图或脉搏测量来测量。

        心跳:心跳是指心脏每次搏动时的动作,即心脏的收缩和舒张。每次心跳产生的脉搏波可以在动脉中感知到,通常用于脉搏测量。

        脉搏:脉搏是血液通过动脉时产生的周期性的压力波。通过测量动脉脉搏的频率和规律性,可以了解心跳的情况和心率的大致范围。

        也就是说反射回来的红光与红外光即原始数据代表着你的心跳和脉搏的振幅。换一个角度来讲,一般测量仪器比较准确人的身体健康是正常的情况下,我们的心率大多保持在一个范围,基本上变化不大,甚至可能会有一段时间维持在一个稳定的值,那么用波形图展示就是基本趋近于一条平坦的直线。而真是情况下,当一个人的心电图呈现出一条直线的时候通常证明这死亡。所以,要用波形图来模拟心电图的话我们所要选择的数据是红光与红外光的原始数据。

        画图部分代码:

#从 machine 模块导入 I2C、Pin 子模块
from machine import SoftI2C,Pin,ADC
from ssd1306 import SSD1306_I2C #从 ssd1306 模块中导入 SSD1306_I2C 子模块
import random
import time
import math

window_size = 100
data = [1100] * window_size
x = list(range(window_size))

#SoftI2C 初始化:scl--> 10, sda --> 11
i2c = SoftI2C(scl=Pin(10), sda=Pin(11)) 
#OLED 显示屏初始化:128*64 分辨率,OLED 的 I2C 地址是 0x3c
oled = SSD1306_I2C(128, 64, i2c, addr=0x3c)
WIDTH = 128
HEIGHT = 54

def update_data(new_value):
    global data
    global average
    data.append(new_value)
    data = data[1:]

def plot_data(hr,spo2,k):
    global oled, data, x
    oled.fill(0) # 清屏显示黑色背景
    # 计算Y轴范围
    y_min = min(data)
    y_max = max(data)
    y_range = y_max - y_min
    # 横轴
    oled.hline(0,HEIGHT -1 ,WIDTH - 1,1)
    #oled.hline(0,(HEIGHT -1)//2 ,WIDTH - 1,1)
    # 纵轴
    oled.vline(0, 0, HEI
  • 36
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

@T565

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值