【项目由来】在每次体检测心电图时,总是因为心率太慢(50多)被写上“窦性心律过缓”,然后有一次去医院背了一次24小时跟踪心电图,监测睡眠时间心率,也没啥结果。参加了第一期创造营,正好利用发的积分采购了心率血氧传感器,尝试用现有的设备设计一款随时可用、可监测的简易使用仪器,来观察自己的心率。同时血氧仪在2022年也卖得非常火,传感器有这功能便一并进行监测了。通过监测自己身体所产生的数据,也可以让学生体会数据的产生,认识身边的数据;同时在监测自己产生的这些数据时,尝试使用科学方式进行呈现(数字化显示、可视化显示),并借助大模型对自己的数据进行分析,改进自己的生活习惯。
【解决方案】
首先明确什么是“窦性心律过缓”。窦性心律过缓指如果心电图是窦性,低于60次/分为心律过缓,而正常的窦性心律是60-100次/分。窦性心律过缓本身一般不需处理,主要是针对病因进行治疗。 窦性心律慢于每分钟60次称为窦性心律过缓。可见于健康的成人,尤其是运动员、老年人和睡眠时。在器质性心脏病中,窦性心律过缓可见于冠心病、急性心肌梗塞、心肌炎、心肌病和病窦综合征。
那么窦性心律过缓是不是心脏疾病呢?医生给出如下建议:
1. 正常人也可能出现窦性心率过缓:年轻人、老年人、运动员等都有可能。
2. 轻度窦性心率过缓不需要特殊治疗:若心率低于50次或60次,可见于正常人和喜欢健身的男性;可定期进行心电图检查。
3. 严重症状需要及时治疗:若症状比较严重,建议及早到正规医院接受治疗...
4. 在日常需要做好护理工作:可以到正规医院进行检查。
所以根据医生建议我也进一步进行了监测。如果在进行一些剧烈运动后,心率能恢复正常水平则一般没有大碍,进行定期检查即可。
所以准备利用行空板+心率血氧传感器,制作一款私人订制的身体监测仪,用于监控自己平时的心率、血氧数据,结合siot平台利用mind+大屏显示数据,达到数据可视化效果。
有了暑期活动的经验,搭建起来比较熟悉。
【制作原型】
利用4p线将传感器与行空板连接,行空板通过数据线接入计算机。
程序代码截图如下:
需要注意的是,mqtt设置需和行空板ip一致。
登录SIOT2平台,添加三个主题内容,同时进入大屏设置,将数据进行同步。
修改相应的单位名称。
【测试】
运行程序,进行测试。行空板屏幕显示相应数据。
同时mind+大屏也能同步进行数据可视化呈现!
由于手指有时和传感器贴合度不够,导致有时会有-1数据的产生,在后期数据分析时需要剔除这些无效数据。
通过有效监测,可以了解自己在日常生活中的心率数据情况,同时也可以进行睡眠时期的心率监测。根据网上信息显示,正常成人心率为60-100次/分,但此范围往往是清醒状况下心率的正常范围,睡眠后心率会相应降低,24小时动态心电图发现入睡后心率往往在60次/分左右。医学认为,夜间心率在50次/分以上属于正常范围,个别人熟睡时心率可降到约40次/分,如果无任何症状以及不适感觉,属于正常情况。
如果清醒状况下心率偏低,在60甚至50次/分以下,则属于心动过缓,可能是病理状态。睡眠心率超过100次/分属于心动过速,需要到医院进行相应检查,排除病理情况。
所以根据数据,可以将本项目内容改成心率报警器。如果在睡眠时心率低于40,或更低的数值,进行报警效果,可以及时给自己或者家人一个提醒。同时也适用于独居老人,为老有所依提供保障!
本项目后续可以将设备接入同一无线信号,实现无线数据监测,摆脱数据线的束缚。
(本文部分心率医学说明内容来自百度)
# -*- coding: UTF-8 -*-
# MindPlus
# Python
from pinpong.libs.dfrobot_max30102 import DFRobot_BloodOxygen_S
from pinpong.board import Board
from unihiker import GUI
import time
import siot
Board().begin()
siot.init(client_id="8170631597033082",server="10.1.2.3",port=1883,user="siot",password="dfrobot")
u_gui=GUI()
siot.connect()
siot.loop()
siot.getsubscribe(topic="siot/心率")
siot.getsubscribe(topic="siot/血氧")
siot.getsubscribe(topic="siot/体感")
p_max30102 = DFRobot_BloodOxygen_S()
while (False == p_max30102.begin()):
print("init fail!")
time.sleep(1)
u_gui.draw_text(text="身体监测仪",x=40,y=30,font_size=20, color="#333333")
XL=u_gui.draw_text(text="心率",x=20,y=80,font_size=20, color="#0000FF")
XY=u_gui.draw_text(text="血氧",x=50,y=140,font_size=20, color="#0000FF")
TW=u_gui.draw_text(text="体感",x=20,y=200,font_size=18, color="#0000FF")
while True:
print(time.strftime("%Y/%m/%d %H:%M:%S"))
p_max30102.sensor_start_collect()
XL.config(text=(str((str((str("心率:") + str(p_max30102.get_heartbeat()))))) + str("次/分钟")))
siot.publish_save(topic="siot/心率", data=p_max30102.get_heartbeat())
XY.config(text=(str((str((str("血氧:") + str(p_max30102.get_spo2()))))) + str("%")))
siot.publish_save(topic="siot/血氧", data=p_max30102.get_spo2())
TW.config(text=(str((str((str("体感:") + str(p_max30102.get_temperature_c()))))) + str("摄氏度")))
siot.publish_save(topic="siot/体感", data=p_max30102.get_temperature_c())
time.sleep(1)
附件
伦**2024.03.13
太厉害了!!!
DeadWalking2024.03.13
过奖了,谢谢!
DeadWalking2024.03.28
谢谢,互相学习!
许培享2024.01.14
学习学习
feng05392023.12.14
行空板不是做游戏吗?
DeadWalking2023.12.15
都可以吧