37种传感器(十)手指心跳监测模块+Stduino Nano&UNO
* {" Y+ n" Q- h7 x$ J6 w! w, r: Q) _7 ` T
4 D7 R( D j3 `' |1 R7 W2 U$ y# o# t& Q/ b
关键词:' a% ^# x. \6 z9 } z B
51、stm32、arduino、stduino单片机、stduino UNO&Nano、手指心跳监测模块 说明:
: ^. V. S0 a5 f! ], _3 y0 a心跳检测模块,由一个红外线发射LED和红外接收器构成。手指心跳监测模块能够测量脉搏,是这样工作的:当手指放在发射器与接收器之间,红外发射LED发射的光将穿过手指,到被接收器接收。而血压会随着脉搏变化,导致红外接收器接收到的光通量也会随之变化,因此可以通过红外光接收的情况来统计监测心跳。
实验目的:
; g! ~ m# {( B1 c% K1 k7 `9 ^& o$ U利用手指心跳监测模块记录心率。 器材:
, h+ j, |% D8 a, YStduino UNO/Nano、杜邦线、手指心跳监测模块 电路连接:
代码展示: - <font face="Arial">int ledPin = 13;
0 E0 @+ ?7 ]( H2 _$ a - int sensorPin = A0;
3 C E! l$ q" R. B2 P& J
( n% n1 m/ a1 R' v2 U' k$ x- double alpha = 0.75;
7 c. ?* D: \' N$ M3 | - int period = 20;
! e9 R0 g( M" S. C7 c# [4 O - double change = 0.0;
' y, o2 K# v! Q l# q b3 h3 a - 3 I# f$ d' p ^( ^9 ]8 m
- void setup()
* r+ @- p; ~7 b/ M# ~! g1 u - {
# I' s9 I- _+ ^ L7 Q - pinMode(ledPin, OUTPUT);
. f2 u& H( I* N |4 K; W8 P$ q - pinMode(sensorPin, INPUT_ANALOG);
6 C; u2 ~( A O+ \ - Serial.begin(115200);
9 r, b$ I* k& g! N# M( p - }% m! j) k" @3 o4 \2 q
- ' B1 N8 q4 Z! a) x; G0 T
- void loop()% \) n1 k# s9 R" t* l# G
- {
* I2 W% `0 V0 s& T9 L- h2 s, R - static double oldValue = 0;& f( ]! P( U& O+ W
- static double oldChange = 0;% m9 z2 F, g# T
- int rawValue = analogRead(sensorPin);- H6 ?% N8 q4 y; a- F3 F
- double value = alpha * oldValue + (1 - alpha) * rawValue;//这个平滑就是取本次和上一次测量数据的加权平均值
8 Z% |0 p7 S" V N" I5 @& n% Z - Serial.println(value);
1 ~: u) Z* j/ o. m
8 H! [0 b# c% h, `) v2 a- oldValue = value;
3 D3 h1 L1 L l8 h. B - delay(period);
4 R4 b5 @0 j# |* A T/ e - }</font>
复制代码
6 y8 s$ f7 P* w0 F+ z7 {
实验效果:
- @7 ?: s9 p% z; z, D- ?, `) K9 b$ R将串口输出的值复制到EXCEL中,可以得到以下的折线图。可以看到,在大约16秒的时间里,出现了32个波峰。这一方面说明心跳有点快,一分钟达到了120下。另外,这种监测器只适合学习,不适用于任何医疗用途。
' H) h3 ~8 T$ ]$ {7 E; Z |