开源协议
:CERN Open Hardware License
(未经作者授权,禁止转载)描述
简介
使用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/
评论