龙空技术网

指尖心跳,通过手指测量心率波形

优信电子企业店 222

前言:

眼前各位老铁们对“pulse sensor心率传感器工作原理”大致比较珍视,咱们都想要剖析一些“pulse sensor心率传感器工作原理”的相关文章。那么小编也在网上网罗了一些对于“pulse sensor心率传感器工作原理””的相关内容,希望看官们能喜欢,朋友们快快来学习一下吧!

目录

心跳传感器检测原理传感器贴膜arduino接线arduino程序下载STM32接线STM32程序下载上位机波形总结

心跳传感器

本期介绍的pulsesensor就是一款心率传感器,是通过光电反射的原理检测人体脉搏的,人体血管在随着心跳跳动的时候的透光率不同进行的测量,传感器将光电采集到的信号经过滤波、放大等一系列电路处理之后输出为模拟电压量,我们通过检测模拟量电压的大小就可以处理计算出心率数据!

检测原理

手指贴在传感器上面输出电压模拟量,我们通过单片机实时检测电压的大小并通过串口将处理好的数据输出到电脑上,电脑再对数据进行处理,生成波形,心跳等参数,这个过程看起来有点复杂,又是单片机处理数据又是电脑处理数据的,不要担心官方有提供多种型号单片机的程序(STM32、arduino、51系列),电脑上的数据处理呢也是开源的,所以我们这里是不需要写程序的,只要会下载就行,看到这里是不是突然就松了口气哈哈!

传感器贴膜

新传感器到手我们先不要急着接线,先在正面和背面贴个膜和粘扣,一个防止手指流汗到上面的电子器件上,另一个就是避免手指触摸的静电干扰也方便固定,废话不多说,看两张贴好的图片就会了!贴之前

贴膜之后

arduino接线

硬件接线之前我们先介绍一下传感器的引脚,传感器上面有标+,-,S三个引脚丝印,具体对应功能参照下表就好

本期先用arduino去处理心率数据,我们先介绍一下和arduino开发板的接线,使用的是arduino的A0端口检测传感器输出的模拟量,其他的引脚就是供电引脚,引脚较少接线比较简单参考下表和下图接线即可

arduino程序下载

资料里面找下下面文件双击打开即可(arduino软件以及驱动安装百度官网即可,资料很多)

选择好开发板和串口

点击下载,等待下载完

接下来使用不需要使用STM32的可直接跳转到上位机的使用!

STM32接线

我们再看STM32的接线,上面arduino的使用在网上以及产品资料里面都有说明相对来说会比较容易一些,查看资料我们发现STM32的使用只提供了代码并没有文档进行说明如何操作(对了,需要资料可在下方留言邮箱或者私聊),我们这里用STM32F103ZET6的板子就行操作,打开资料,找到下方的32程序的压缩包解压出来

解压出来之后找到工程打开,没有安装MDK5的百度找安装教程即可(网上很多)

打开之后我们先看到主函数部分,下面贴出主函数代码

int main(void)

{

HAL_Init();

SystemClock_Config();

MX_GPIO_Init();

MX_ADC1_Init();

MX_TIM3_Init();

MX_USART2_UART_Init();

HAL_TIM_Base_Start_IT(&htim3);

while (1)

{

sendDataToProcessing('S', Signal); // send Processing the raw Pulse Sensor data

if (QS == true)

{

sendDataToProcessing('B',BPM); // send heart rate with a 'B' prefix

sendDataToProcessing('Q',IBI); // send time between beats with a 'Q' prefix

QS = false; // reset the Quantified Self flag for next time

}

HAL_Delay(20); //delay for 20ms

}

}

查看上面代码 MX_USART2_UART_Init(); 可以看到STM32处理传感器之后输出的数据是从串口2输出的,STM32F103 UART2对应TX为PA2,RX为PA3,我们确定串口是从这两个引脚输出之后只需要把这两个引脚连接到USB-TTL之后把数据转换到电脑上即可

打开函数 MX_ADC1_Init(); 贴出函数部分代码

void MX_ADC1_Init(void)

{

ADC_ChannelConfTypeDef sConfig;

hadc1.Instance = ADC1;

hadc1.Init.ScanConvMode = ADC_SCAN_DISABLE;

hadc1.Init.ContinuousConvMode = DISABLE;

hadc1.Init.DiscontinuousConvMode = DISABLE;

hadc1.Init.ExternalTrigConv = ADC_SOFTWARE_START;

hadc1.Init.DataAlign = ADC_DATAALIGN_RIGHT;

hadc1.Init.NbrOfConversion = 1;

HAL_ADC_Init(&hadc1);

sConfig.Channel = ADC_CHANNEL_0;

sConfig.Rank = 1;

sConfig.SamplingTime = ADC_SAMPLETIME_13CYCLES_5;

HAL_ADC_ConfigChannel(&hadc1, &sConfig);

}

分析上面代码可以看到使用的STM32的ADC1通道0,手册查看ADC管家对照表可以知道ADC1通道0对应的PA0引脚,这个采集就是使用的PA0引脚去采集传感器的信号了,接线参考下表即可

STM32程序下载

接好线之后把供电的数据线、ST-LINK、USB-TTL接到电脑上,然后下载程序进去即可(串口下载和ST-LINK之类都可以),我这里使用ST-LINK下载程序,先在魔术棒里面修改DEVICE为ZE

DEBUG里面按照下图来配置即可

配置完之后我这里使用的是ST-LINK直接在MDK里面点击下载就行

等一会STM32的程序就下载完成了

上位机查看

下载完程序arduino的话直接插到电脑上即可,STM32供好电将之前接好线的USB-TTL插到电脑上,上位机Processing可自行百度下载也可以点击下方链接下载链接:

下载好之后双击下图所示的打开

进入上位机界面后点击文件,点击打开,找到资料中名称为 PulseSensorAmpd_Processing_1dot1 的文件打开

打开之后先运行一下然后退出来查看串口号

在设备管理器里面找到arduino或者STM32对应的端口号,我这里以arduino为例

接下来找到下面这部分代码,COM1、COM5、COM6、COM8对应0、1、2、3,COM5对应1,将Serial.list()[0]中括号中的0修改成1即可对应打开COM5

port = new Serial(this, Serial.list()[1], 115200);

port.clear();

port.bufferUntil('\n');

如果前面的步骤没问题打开之后像下面这样把手指放上去就能看到波形,不要绑太紧,压着手指会让心跳测量偏高

总结

操作流程尽量做到细致,长期发布类似文章,欢迎关注,本期指尖心跳就到这里了,欢迎随时留言,需要资料也可以在下方留言!

标签: #pulse sensor心率传感器工作原理