【笔记】脉搏波手环自研之路开启

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

现在手环测量脉搏波其实很方便,但是商家的OEM/SDK费用实在离谱。于是开始探索起DIY脉搏波设备的路程。于是从古董堆了找出了很多年前的Raspberry Model B。再搜索一圈,发现想实现其实并不难。

芯片成本
PulseSensor8.00
ADS101515.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

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值