发作品签到
专业版

基于PPG的脉搏波及心率显示

工程标签

1.4k
0
0
5

简介

基于PPG的脉搏波及心率显示

简介:基于PPG的脉搏波及心率显示
星火计划2024

开源协议

CERN Open Hardware License

(未经作者授权,禁止转载)
创建时间:2024-04-03 07:40:28更新时间:2024-08-27 08:52:10

描述

简介

使用PulseSensor作为心率传感器的脉搏波显示器。利用PPG原理,使用绿光照射皮肤表面(通常是手指),并使用光电传感器检测反射的绿光强度,根据强度变化曲线即是脉搏曲线,这里为了方便使用了一个心率模块,模块对信号进行了放大,并将信号值固定在1/2电源电压附近,使读取更方便。

 

开源协议

CERN Open Hardware License

 

功能亮点

脉搏波形显示

心率显示

三色脉搏呼吸灯

脉搏蜂鸣音提示

多种界面切换

 

项目属性

本项目为首次公开,为本人原创项目。项目未曾在别的比赛中获奖。

 

项目进度

2024-04-03 项目立项

2024-04-06 原理图和PCB设计完成

2024-04-20 新增了功能按键用于切换界面

2024-04-24 外壳设计完成

2024-04-28 面板设计完成

2024-05-11 面板改进,显示区域扩大1mm

2024-06-01 软件部分开发完成

2024-08-26 资料整理完成,发布开源工程

 

硬件设计

MCU使用ATMEGA328P-PU,Arduino UNO R3的主控。因项目为复刻改进国外的开源项目,且当时刚学完示波器训练营,知识储备不足,只能沿用原来的硬件设计,有机会再继续改进设计,选用性价比更高的MCU。

供电部分使用Type-C 2P供电,后面可考虑改用锂电池+电源管理芯片,提高便携性

显示部分使用一个0.96寸白色OLED,采用排针排母的方式连接,不用了可以直接拆卸用于其它项目

按键部分用于循环切换显示界面

程序下载部分仅预留接口,不内置串口芯片,需要使用串口下载工具进行程序下载,使用带DTR引脚的烧录器可实现自动下载程序

LED部分使用一个三色的RGB LED雾状灯

蜂鸣器部分使用一个有源蜂鸣器,只需输出高电平即可发声,之前使用的是一个无源蜂鸣器,需要PWM驱动,实测与其它定时器冲突导致声音失真,尝试多种方法均无法解决,估计和MCU性能有关,故换为无源蜂鸣器。同时加入一个蜂鸣器开关,可单独关闭声音

 

软件设计

软件部分比较简单,心率传感器输出的是模拟信号,通过ADC采集到数据经过PulseSensorPlayground官方库处理后即可获得心率,波形部分则将数据处理到适合屏幕显示,最后通过I2C协议显示到屏幕;灯光部分根据不同的心率区间点亮不同颜色的LED;蜂鸣器则在每次检测到心跳时响起;按键按下时触发中断然后改变模式,OLED再根据不同模式显示不同的界面

 

实物展示

实物效果图

 

未安装屏幕和心率传感器

 

组装结构

 

面板

面板配色参考:小红书@YUI_Design,https://www.xiaohongshu.com/user/profile/640eee95000000000f0105c8

 

成本估算

物料 价格
PCB 免费
OLED 8.4
心率传感器 7.8
ATMEGA328P 10
蜂鸣器 0.6
RGB LED 0.2
16MHz晶振 0.3
阻容 0.2
排针排母 0.5
螺丝铜柱 1
开关 0.6
LED 0.1
TypeC母座 0.1
面板 1.3
外壳 14.43
总计 45.53

注意:以上价格为单价,不含运费

 

复刻注意事项

1、PCB

厚度1.6mm

 

2、3D打印外壳

上下壳材质 Black

支撑柱材质 LEDO6060

 

3、面板

面板类型:薄膜面板

面板款数:多款自主拼版

拼版尺寸:200mm*300mm

拼版套数:1

定制材料:PET

打印材质:高透明

基材厚度:0.2mm

打印方式:正面

鼓包按键:无鼓包

遮光程度:常规

背胶:3M9448A(通用款)

 

4、元件物料

以下列出不在BOM表或者BOM表中的元件尺寸不对需要按照我提供的链接购买的元件物料:

心率传感器:https://m.tb.cn/h.gNKutecyDynzuaD?tk=Thvj3Uh60AO

OLED(GND开头,27.3*27.8mm):https://m.tb.cn/h.gmbY7lScoVBnXzm?tk=KS3p34kHjA1,规格:0.96寸白色OLED模块/4P

11mm 3p加长排母:https://m.tb.cn/h.gmRGD0rT6kV4tS9?tk=9BJz34kN12t,规格:3p,一层塑高11针长8.5,单排

3+6mm正弯排针:https://m.tb.cn/h.gmzCu6yqvK189ws?tk=wnG934knb6l

6*6*6.5mm开关:https://m.tb.cn/h.gOHsXqQB6bcQF85?tk=wD1734knBaQ,规格:6*6*6.5 4脚立式微动开关

雾状RGB LED:https://m.tb.cn/h.gmzyniGQD26Mxix?tk=h9AZ34kLoZf

ATMEGA328P-PU:https://m.tb.cn/h.gOHtGOLzGVXJs9T?tk=TIUB34kouAa

有源蜂鸣器:https://m.tb.cn/h.gOHtzTn4JxDvVde?tk=IVsP34kptEU

拨动开关:https://m.tb.cn/h.gmRx6CjPJf2CoBZ?tk=MmrT34kLXOP,规格:MSK-12D19 1P2T 3脚 拨动开关

TypeC 2P:https://m.tb.cn/h.gm0AktYsF17Kh8E?tk=jbJq34kp9f2,规格:TYPE-C 2P卧式

M2x4螺丝:https://m.tb.cn/h.gmRCj4FwItln7Jx?tk=Bg9s34kqKWy

M3x8螺丝:https://m.tb.cn/h.gmbZHYP3JFPG3L0?tk=Q3rd34kqkb2

M2x11铜柱:https://m.tb.cn/h.gmbZUfpZVVaXGkz?tk=yHp434kJKN6

1x4p排母:https://m.tb.cn/h.gmb0coOGh1UYSjb?tk=GV9034kJSrW,规格:1x4p 2.54mm直插单排母黑色(20个)

注意:市面上心率传感器有两种,另外一种的信号幅度很小,原因不明,尽量按照以上链接购买

 

5、焊接

(1) 心率传感器上的排针需要拆掉,换上上面的弯排针,排针与模块相对位置如下图

(2) OLED和心率传感器排母需尽量横平竖直,以免影响后面外壳和面板对齐效果

(3) 阻容封装最小为0603,可以直接电烙铁搞定

(4) RGB LED引脚间隔较小,需注意避免连锡

(5) 其他均为插件封装,没有什么难度

 

6、烧录

使用烧录工具例如CH340的烧录器

连线如下:

PCB 烧录器
5V 5V
GND GND
RX TXD
TX RXD
DTR DTR

使用Arduino IDE打开ino工程文件,选择串口后点上传按钮即完成程序烧录

 

7、组装

(1) 面板粘贴到上壳

(2) 首先将OLED屏幕固定到PCB上,使用M2x4螺丝*8,M2x11铜柱*4

(3) 再将心率传感器装上,用3D打印的支撑柱固定好传感器

(4) 整体放到底壳上,安装上壳,用M3x8*4螺丝固定好上下壳,完成

 

8、使用

(1) 将TypeC线插入,建议使用5V供电

(2) 向上拨动打开左侧电源开关,屏幕和心率传感器绿灯亮起即代表正常工作,将手指轻轻按压在心率传感器上,稍等片刻,屏幕上即显示心率和脉搏波曲线

(3) 按下下侧轻触开关可切换显示界面,分别为两行显示带BPM、两行显示无BPM、单行显示带BPM、单行显示无BPM

(4) LED呼吸灯根据不同的区间显示不同的颜色,0为红灯常亮,1-59闪蓝灯,表示心率过低,60-89闪绿灯,表示心率正常,90以上闪红灯,表示心率过高

(5) 下侧拨动开关控制提示音,左为关闭,右为打开

 

附件说明

Heartbeat_RELEASE.zip - 程序代码

心率传感器支撑柱V2-小孔.STL - 用于支撑心率传感器的零件,3D打印下单

 

其他

参考国外项目:https://hackaday.io/project/167919-arduino-heart-beat-with-ecg-display-sound

项目改进部分:硬件部分缩小PCB面积,将所有元件尽量紧凑摆放,目的是尽可能做一个便携的迷你脉搏波及心率显示器。软件部分对显示界面进行了优化,用新曲线覆盖旧曲线的方式显示,使其更接近医院的监视器,并增加了功能按键用于切换界面。

心率传感器PulseSensor官网:https://pulsesensor.com/

设计图

未生成预览图,请在编辑器重新保存一次

BOM

暂无BOM

附件

序号文件名称下载次数
1
Heartbeat_RELEASE.zip
32
2
心率传感器支撑柱V2-小孔.STL
13
3
演示视频1.mp4
6
4
演示视频2.mp4
5
克隆工程
添加到专辑
0
0
分享
侵权投诉

评论

全部评论(1
按时间排序|按热度排序
粉丝0|获赞0
相关工程
暂无相关工程

底部导航