아두이노 기반 심장재활 보조장치(Heart Rehabilitation Assistant System) 사용자의 심박수를 실시간 측정하고, 목표 심박수를 초과할 경우 운동 중단 및 약 복용을 안내하는 스마트 헬스케어 장치입니다. 연령·운동강도 입력 → 목표 심박수 계산 → 실시간 모니터링 → 위험 시 자동 경고 및 약통 개방으로 이어지는 재활 안전 자동화 시스템입니다.
상세 내용은 보고서를 참고해주시기 바랍니다.
이 프로젝트는 심장질환자가 가정에서 안전하게 재활운동을 수행할 수 있도록 돕는 것을 목표로 합니다. 운동 중 심박수를 지속적으로 체크하고, 목표 심박수(카보넨 공식 기반)를 넘으면 운동을 자동으로 종료시키며, 음성 안내와 화면 표시, 약통 개방 등을 수행합니다.
상세기능:
-
심박 센서를 통한 실시간 심박수 측정
-
연령·운동강도 입력 후 목표 심박수 자동 계산
-
LCD 디스플레이를 통한 즉각적인 수치 확인
-
DFPlayer Mini + 스피커를 통한 음성 안내
-
목표 심박수 초과 시:
- 경고음 및 안내 메시지 출력
- 서보모터로 약 상자 자동 개방
- 운동 즉시 중지 프로세스 실행
| 부품명 | 용도 |
|---|---|
| Arduino Uno | 전체 장치 제어 |
| Heart Rate Sensor (SEN0203) | 심박수 실시간 측정 |
| 1602 LCD Display | 심박수·메시지 출력 |
| DFPlayer Mini + Speaker | 음성 안내 재생 |
| SG-90 Servo Motor | 약통 덮개 개폐 |
| Push Buttons (증가/감소/저장/종료) | 사용자 입력 UI |
| Breadboard, Jumpers, 9V Battery | 회로 구성 |
-
스피커 음성 안내 → 사용자에게 연령 입력 요청
-
버튼(증가/감소/저장)으로 연령 선택 후 저장
-
동일한 방식으로 운동강도 선택
-
카보넨 공식을 통해 목표 심박수 계산
-
운동 시작 안내 후 2ms 간격으로 심박수 측정
-
LCD에
현재 BPM / 목표 BPM실시간 출력 -
심박수 0 → "센서 확인" 메시지
-
목표 심박수 초과 →
- LCD “Stop exercise” 표시
- 음성 경고 + 운동 종료 안내
- 서보모터로 약 상자 자동 개방
-
종료 버튼 입력 시 시스템 종료 및 약통 닫힘
-
Heart Rate Sensor → A0
-
Servo Motor → D6
-
DFPlayer Mini →
- RX/TX → D11, D10 (SoftwareSerial)
- SPK1/SPK2 → 스피커
-
LCD → D2–D5, D8, D9
-
Buttons → A2~A5 (Pulldown 방식)
회로도 상세는 보고서 16페이지 참고
/Arduino-project
│
├── healthcare.ino # 메인 로직 (setup, loop)
├── set_age_intensity.ino # 연령/운동강도 입력 UI
├── interrupt.ino # 2ms 심박수 측정 인터럽트
└── servo.ino # 약통 서보모터 제어
- DFPlayer 초기화 및 LCD 초기화
- 버튼 입력 설정
- 운동 루프 (
loop)에서 심박수 출력 - 종료 조건 및 심박수 초과 시 프로세스 실행
- 사용자 입력 UI
- 버튼 디바운싱 처리
- 카보넨 공식으로 최대·목표 심박수 계산
- 2ms 주기로 심박 파형 측정
- BPM 계산 알고리즘 수행
- 이전 10개의 IBI 평균 기반 BPM 산출
- 서보모터를 이용한 약통 열림/닫힘 제어
- 피험자: 20대 남성
- 운동: 자전거 유산소 10분
- 운동강도: 60%, 80% 각각 테스트
- 비교 기기: 스마트워치
| 테스트 | 결과 |
|---|---|
| 심박수 실시간 측정 | 정상 동작 |
| LCD 출력 | 정상 표시 |
| 버튼 입력 | 정확하게 인식 |
| 목표 심박수 초과 시 자동 정지 | 정상 동작 |
| 서보모터 약통 개방 | 정상 동작 |
| 음성 안내 | 정상 재생 |
| 스마트워치 대비 오차율 | 약 6.48% (60%), 8.31% (80%) |
스마트워치의 심박수 업데이트 지연(약 10초)으로 인한 오차가 발생한 것으로 분석됨.