现在手环测量脉搏波其实很方便,但是商家的OEM/SDK费用实在离谱。于是开始探索起DIY脉搏波设备的路程。于是从古董堆了找出了很多年前的Raspberry Model B。再搜索一圈,发现想实现其实并不难。
| 芯片 | 成本 |
|---|---|
| PulseSensor | 8.00 |
| ADS1015 | 15.00 |
其实我们原来就share过这个pulsesensor的内部电路:
PulseSensor其实是PPG光电式传感器,简单粗暴,接线口也就3根线,我们通俗说就是:接电源,接地和一个电压输出。至于ADS1015,我选了个有点贵的模拟-数字转换芯片,考虑可能后面自己琢磨其他东西也能用上,就是它了;当然它的兄弟ADS1115是更高精度,它侧重更高采样。之后就是把它们和raspberry接起来了。
我们把上图的U1看作ADS1015,DOUT就是SDA,它们俩直连Raspberry Pi的对应pin就好了。把左上角PulseSensor的信号S接到ADS1015的A0上。电路就完成了。注意我们在DOUT和SCLK接电源中间弄了两个10k的电阻,就是上拉电阻,保证初始时它们处于高电平。把一坨东西放在面包板上插好连接线。也没搞过Raspberry Pi上的电路,真怕直接烧板子,检查了很多遍,确认电线连接无误后,接通Raspberry Pi的电源:
想要看看电路是不是工作的,那得先登录Raspberry Pi,安装 python-smbus;看到pypi上竟然有现成的ads1015封装 pip install ads1015,那不肯定直接拿来用了。赶紧从网上抄一段代码改改:
#!/usr/bin/env python
import time
from ads1015 import ADS1015
CHANNELS = ['in0/ref']
ads1015 = ADS1015()
ads1015.set_mode('single')
ads1015.set_programmable_gain(5.0)
ads1015.set_sample_rate(1600)
reference = ads1015.get_reference_voltage()
print("Reference voltage: {:6.3f}v \n".format(reference))
try:
while True:
channel = CHANNELS[0]
value = ads1015.get_compensated_voltage(
channel=channel, reference_voltage=reference
)
print("{}: {:6.3f}v".format(channel, value))
time.sleep(0.05)
except KeyboardInterrupt:
pass
可是好像运行这个程序会出错,报没有i2c这个设备。
raspi-config之后,看Raspberry什么版本,现在网络上铺天盖地进第九项,而我的老古董是第七项,再进去以后外设配置,将I2C设备enable就好了。最好就是把所有的value都输出到一个文件里,然后提取出来可视化一下,搞定。后面就是去微调增益了。

Enjoy
J.Y.Lju
2021.05.01

本文介绍如何使用Raspberry Pi、PulseSensor和ADS1015搭建一个简易的脉搏波监测设备。通过低成本的组件实现了脉搏波信号的采集与处理,并通过Python编程读取和显示数据。
4万+

被折叠的 条评论
为什么被折叠?



