Der Pulssensor ermöglicht es, den menschlichen Puls am Finger oder Ohr mithilfe der beiliegenden Klammer zu messen. Die Messung erfolgt dabei optisch. Unterschiedliche Blutbewegungen reflektieren das vom Sensor ausgestrahlte grüne Licht unterschiedlich auf den Sensor zurück. Durch die integrierte Messverstärkung und Aufbereitung, wird der Puls direkt ermittelt und ein digitales Signal ausgegeben.
Der Sensor kann direkt oder mithilfe eines Grove Shields an einen Arduino oder Raspberry angeschlossen werden.
Der Pulssensor kann beispielsweise als Teil eines digitalen Sport-Assistenten eingesetzt werden.
Alle weiteren Hintergrundinformationen, sowie ein Beispielaufbau und alle notwendigen Programmbibliotheken sind auf dem offiziellen Wiki (bisher nur in englischer Sprache) von Seeed Studio zusammengefasst. Zusätzlich findet man über alle gängigen Suchmaschinen durch die Eingabe der genauen Komponentenbezeichnungen entsprechende Projektbeispiele und Tutorials.
Die genaue Bezeichnung des Sensors, die bei der Suche von Beschreibungen und Anleitungen wichtig sein kann, lautet PAH8001EI-2G.
// 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(); }
Wichtige Links für die ersten Schritte:
Weiterführende Hintergrundinformationen:
ZU ALLEN MATERIALIEN