심박 센서(XD-58C)
개요
아두이노 심박센서(XD-58C)는 심박수를 측정할 수 있는 센서 모듈로, 주로 생체 신호 모니터링에 사용됩니다.
센서 중앙에는 밝은 초록 빛이 방출되며 심장이 박동할 때 혈류가 증가하면 반사되어 돌아오는 빛의 양이 줄어드는 것을 활용하여 심박수를 측정합니다.
연결이 간편하여 아두이노로 쉽게 심박수 데이터를 출력할 수 있습니다.
사양
항목 | 세부 사항 |
---|---|
전원 인터페이스 | 핀 |
전원 공급 전압 | 3.3-5V |
작동 전류 | 10mA |
크기 | 지름 1.6cm |
무게 | 5g |
활용 예제
시리얼 모니터와 시리얼 플로터로 심박수를 확인하는 예제입니다.
1. 회로
기호 | 연결 핀 |
---|---|
S | A0 핀 |
+ | 5V |
- | GND |
2. 코드
라이브러리
PulseSensorPlayground 라이브러리를 추가해주세요.
라이브러리 관리에서 pulsesensor로 검색하시면 다운로드 받으실 수 있습니다.
자세한 라이브러리 사용 방법은 아두이노 라이브러리 문서를 참고하세요.
아두이노 코드
#include <PulseSensorPlayground.h> // PulseSensorPlayground 라이브러리 포함
// 변수 선언
const int PulseWire = 0; // PulseSensor의 보라색 와이어를 아날로그 핀 0에 연결
const int LED = LED_BUILTIN; // 아두이노 내장 LED 핀, 보통 핀 13에 가까이 있음
int Threshold = 550; // 심박으로 인식할 신호의 임계값 설정
// PulseSensorPlayground 객체 생성
PulseSensorPlayground pulseSensor;
void setup() {
Serial.begin(9600); // 시리얼 모니터 시작
// PulseSensor 객체 설정
pulseSensor.analogInput(PulseWire);
pulseSensor.blinkOnPulse(LED); // 심박이 감지되면 자동으로 아두이노 LED를 깜빡이도록 설정
pulseSensor.setThreshold(Threshold);
// PulseSensor 객체가 제대로 생성되었는지 확인
if (pulseSensor.begin()) {
Serial.println("We created a pulseSensor Object !"); // 아두이노가 전원에 연결되거나 리셋될 때 한 번 출력
}
}
void loop() {
if (pulseSensor.sawStartOfBeat()) { // 심박이 감지되었는지 지속적으로 확인
int myBPM = pulseSensor.getBeatsPerMinute(); // BPM(분당 심박수) 값을 가져옴
Serial.println(myBPM); // BPM 값을 시리얼 플로터에 출력
}
delay(20); // 간단한 스케치에서 권장되는 지연 시간
}
3. 실행 결과
하트가 그려진 면에 손가락을 덮고 가볍게 압박을 주면 BPM이 다음과 같이 출력되는 것을 확인할 수 있습니다.
응용 분야
아래 내용들과 관련된 아두이노 프로젝트들에 다양하게 사용될 수 있습니다.
- 건강 모니터링 시스템 : 개인의 심박수를 실시간으로 모니터링하여 건강 상태를 추적 관리
- 스포츠 및 피트니스 트래킹 : 운동 중 심박수를 측정하여 운동 강도를 조절, 피트니스 성과를 분석
- 의료 연구 : 생체 신호 데이터를 수집하고 분석하여 다양한 의료 연구에 활용
- 웨어러블 기기 : 스마트워치나 피트니스 밴드와 같은 웨어러블 기기에 적용되어 실시간 심박수 모니터링 기능을 제공