Grove - Ear-clip Heart Rate Sensor

The Heart Rate Ear clip kit contains a ear clip and a receiver module. The heart rate measure kit can be used to monitor heart rate of patient and athlete. The result can be displayed on a screen via the serial port and can be saved for analysis. The entire system is a high sensitivity, low power consumption and portable.
Model: MED03212P

Features

Specification

Item Min Typical Max Unit
Voltage 3.0 5.0 5.25 V
Work Current 6.5 mA
Length of ear clip wire 120 cm
Measures Range ≥30/min -

Application Ideas

Usage

The following sketch demonstrates a simple application of using the Ear-clip Heart Rate Sensor to measure heart rate.


// Function: This program can be used to measure heart rate, the lowest pulse in the program be set to 30.
//         Use an external interrupt to measure it.
// Hardware: Grove - Ear-clip Heart Rate Sensor, Grove - Base Shield, Grove - LED
// Arduino IDE: Arduino-1.0
// Author: FrankieChu		
// Date: Jan 22, 2013
// Version: v1.0
// by www.seeedstudio.com
#define LED 4//indicator, Grove - LED is connected with D4 of Arduino
boolean led_state = LOW;//state of LED, each time an external interrupt 
								//will change the state of LED
unsigned char counter;
unsigned long temp[21];
unsigned long sub;
bool data_effect=true;
unsigned int heart_rate;//the measurement result of heart rate

const int max_heartpluse_duty = 2000;//you can change it follow your system's request.
						//2000 meams 2 seconds. System return error 
						//if the duty overtrip 2 second.
void setup()
{
	pinMode(LED, OUTPUT);
	Serial.begin(9600);
	Serial.println("Please ready your chest belt.");
	delay(5000);
	arrayInit();
	Serial.println("Heart rate test begin.");
	attachInterrupt(0, interrupt, RISING);//set interrupt 0,digital port 2
}
void loop()
{
	digitalWrite(LED, led_state);//Update the state of the indicator
}
/*Function: calculate the heart rate*/
void sum()
{
 if(data_effect)
    {
      heart_rate=1200000/(temp[20]-temp[0]);//60*20*1000/20_total_time 
      Serial.print("Heart_rate_is:\t");
      Serial.println(heart_rate);
    }
   data_effect=1;//sign bit
}
/*Function: Interrupt service routine.Get the sigal from the external interrupt*/
void interrupt()
{
    temp[counter]=millis();
	Serial.println(counter,DEC);
    Serial.println(temp[counter]);
    switch(counter)
	{
		case 0:
			sub=temp[counter]-temp[20];
			Serial.println(sub);
			break;
		default:
			sub=temp[counter]-temp[counter-1];
			Serial.println(sub);
			break;
	}
    if(sub>max_heartpluse_duty)//set 2 seconds as max heart pluse duty
	{
		data_effect=0;//sign bit
		counter=0;
		Serial.println("Heart rate measure error,test will restart!" );
		arrayInit();
	}
    if (counter==20&&data_effect)
    {
		counter=0;
		sum();
    }
    else if(counter!=20&&data_effect)
    counter++;
    else 
    {
		counter=0;
		data_effect=1;
    }
    
}
/*Function: Initialization for the array(temp)*/
void arrayInit()
{
	for(unsigned char i=0;i < 20;i ++)
	{
		temp[i]=0;
	}
	temp[20]=millis();
}


In the left of the figures which is a waveform diagram of the detected heartbeat, A high pulse comes when beating. Note: If the serial monitor return an error message, please change the position of the sensor.

Resources

Grove - Ear-clip Heart Rate Sensor Demo code

Support

If you have questions or other better design ideas, you can go to our forum or wish to discuss.

Copyright (c) 2008-2016 Seeed Development Limited (www.seeedstudio.com / www.seeed.cc)
This static html page was created from http://www.seeedstudio.com/wiki