Heart Rate Sensor SKU: SEN0203
From Robot Wiki
Heart Rate Sensor SKU: SEN0203
Contents
1 Introduction
2 Specification
3 Board Overview
4 Tutorial
o 4.1 Requirements
o 4.2 Before start
o 4.3 Connection Diagram
o 4.4 Sample Code
4.4.1 Digital Mode
o 4.5 Draw the ECG (Electrocardiography)
4.5.1 Digital Mode
4.5.2 Analog Mode
o 4.6 Use it with LCD12864 shield
Introduction
The DFRobot heart rate sensor is a thumb-sized heart rate monitor designed for Arduino
microcontrollers. It includes a Gravity interface, for easy plug-and-play connectivity.
This sensor is a pulse sensor which is developed based on PPG (PhotoPlethysmoGraphy)
techniques. This is a simple and low-cost optical technique that can be used to detect blood
volume changing in the microvascular bed of tissues. It is relatively easy to detect the pulsatile
component of the cardiac cycle according to this theory.
The sensor has two holes that you can use to attach to your belt. You can wrap on your finger,
wrist, earlobe or other areas where it has contact with skin.
The heart sensor has two kinds of signal output mode: analog pulse mode and digital square
wave mode. You can change its output mode using the dial switch. There are many user
scenarios, including education, sport or maker/interactive projects!
Please Note: This product is NOT a medical device and is not intended
to be used as such or as an accessory to such nor diagnose or treat any
conditions.
Specification
Input Voltage (Vin): 3.3 ‐ 6V (5V recommended)
Output Voltage: 0 ‐ Vin (Analog), 0/ Vin (Digital)
Operating current: .
45
If not, see Serial Plotter menu)
5
Attach the center pin of a potentiometer to pin A
0, and the outside pins to +5V and ground.
6
7
This example code is in the public domain.
8 */
9
10 // the setup routine runs once when you press reset
:
11 void setup() {
12
// initialize serial communication at 9600 bits p
er second:
13
Serial.begin(9600);
14 }
15
16 // the loop routine runs over and over again foreve
r:
17 void loop() {
18
// read the input on analog pin 0:
19
int sensorValue = analogRead(A1);
20
// print out the value you read:
21
Serial.println(sensorValue);
22
delay(10);
tability
23 }
// delay in between reads for s
Use it with LCD12864 shield
1. Please download and install the library for LCD12846.
2. Upload the code below
3. It will display the heart rate and ECG on the LCD(12846) screen.
o Sample video on Youku
1 /*!
2 * @file HeartrateDisplay
3 * @brief Waves of blood oxygen saturation and heart ra
te value is displayed on the LCD
4 *
5 * @brief Waves of blood oxygen saturation and heart ra
te value is displayed on the LCD
6 *
7 * @author linfeng(490289303@qq.com)
8 * @version
9 * @date
2016-8-16
10 * @version
11 * @date
V1.1
V1.0
2015-12-24
12 */
13
14 #define heartratePin A1
15 #include "Heartrate.h"
16 #include "Lcd12864Shield.h"
17
18 uint16_t heartrateValue=0,heartrateValueLast=0;
19 uint8_t count;
20
21 Lcd12864Shield lcddisplay(10,9,8,13,11);
22 Heartrate heartrate(DIGITAL_MODE); ///< ANALOG_MODE or
DIGITAL_MODE
23
24 char wordDisplay[]=
///< word
25 {
26 0x00,0x00,0x01,0x03,0x07,0x0F,0x1F,0x3F,
27 0x1F,0x0F,0x07,0x03,0x01,0x00,0x00,0x00,
28 0x00,0x00,0xC0,0xE0,0xE0,0xE0,0xC0,0x80,
29 0xC0,0xE0,0xE0,0xE0,0xC0,0x00,0x00,0x00,///< ♥
30 };
31 char letterDisplay[]= ///< character
32 {
33
34 0x00,0xE0,0x10,0x08,0x08,0x10,0xE0,0x00,
35 0x00,0x0F,0x10,0x20,0x20,0x10,0x0F,0x00,///< 0
36 0x00,0x10,0x10,0xF8,0x00,0x00,0x00,0x00,
37 0x00,0x20,0x20,0x3F,0x20,0x20,0x00,0x00,///< 1
38 0x00,0x70,0x08,0x08,0x08,0x88,0x70,0x00,
39 0x00,0x30,0x28,0x24,0x22,0x21,0x30,0x00,///< 2
40 0x00,0x30,0x08,0x88,0x88,0x48,0x30,0x00,
41 0x00,0x18,0x20,0x20,0x20,0x11,0x0E,0x00,///< 3
42 0x00,0x00,0xC0,0x20,0x10,0xF8,0x00,0x00,
43 0x00,0x07,0x04,0x24,0x24,0x3F,0x24,0x00,///< 4
44 0x00,0xF8,0x08,0x88,0x88,0x08,0x08,0x00,
45 0x00,0x19,0x21,0x20,0x20,0x11,0x0E,0x00,///< 5
46 0x00,0xE0,0x10,0x88,0x88,0x18,0x00,0x00,
47 0x00,0x0F,0x11,0x20,0x20,0x11,0x0E,0x00,///< 6
48 0x00,0x38,0x08,0x08,0xC8,0x38,0x08,0x00,
49 0x00,0x00,0x00,0x3F,0x00,0x00,0x00,0x00,///< 7
50 0x00,0x70,0x88,0x08,0x08,0x88,0x70,0x00,
51 0x00,0x1C,0x22,0x21,0x21,0x22,0x1C,0x00,///< 8
52 0x00,0xE0,0x10,0x08,0x08,0x10,0xE0,0x00,
53 0x00,0x00,0x31,0x22,0x22,0x11,0x0F,0x00,///< 9
54 0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x00,
55 0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x00,///< =
56 };
57
58
59
60 void lcdBegin(void)
61 {
62
lcddisplay.initialLcd(); ///< Enable LCD
63
lcddisplay.clearScreen(); ///< Clear LCD
64
lcddisplay.drawXLine(48); ///< Draw a horizontal line
65
lcddisplay.drawYLine(7); ///< Draw a vertical line
66
lcddisplay.drawWord(7,10,0,wordDisplay); ///< Display
s a word
67
lcddisplay.drawLetter(7,30,10,letterDisplay); ///< Di
splays a character
68 }
69
70 void setup() {
71
Serial.begin(115200);
72
lcdBegin();
73 }
74
75 void loop() {
76
unsigned char rateValue;
77
heartrateValueLast = heartrateValue;
78
heartrateValue = heartrate.getValue(heartratePin);
//< A1 foot sampled values
79
count = heartrate.getCnt();
80
if(count)
81
{
/
82
lcddisplay.drawYLine(count+8,heartrateValue/24,hear
trateValueLast/24); ///< Draw a vertical line,Step 24
83
}
84
else
85
{
86
lcddisplay.drawYLine(count+8,heartrateValue/24,hear
trateValueLast/24);
87
}
88
89
rateValue = heartrate.getRate(); ///< Get heart rate
value
90
if(rateValue)
91
{
92
y);
lcddisplay.drawLetter(7,50,3,rateValue,letterDispla
///< Display values
93
Serial.println(rateValue);
94
}
95
delay(20);
96 }
For any questions, advice or cool ideas to share, please visit the DFRobot Forum
Powered By DFRobot © 2008-2017