산업 제조
산업용 사물 인터넷 | 산업자재 | 장비 유지 보수 및 수리 | 산업 프로그래밍 |
home  MfgRobots >> 산업 제조 >  >> Manufacturing Technology >> 제조공정

아두이노 나노와 16x2 LCD로 MAX30102 심박수 모니터 만들기

부품 및 소모품

필요한 도구 및 기계

앱 및 온라인 서비스

프로젝트 소개

이 프로젝트는 MAX30102 센서 모듈을 사용한 간단한 심박수 모니터입니다. 아두이노 라이브러리를 기반으로 간단한 코드를 작성했으며, 측정값은 16x2 LCD 화면에 표시됩니다. 첫 번째 줄에는 평균 분당 심박수(BPM)가, 두 번째 줄에는 반사된 적외선 빔의 값이 표시됩니다. 이 값이 일정해야 더 정확한 측정이 가능합니다.

소스 코드

심박수 측정 코드

/* 광학 심박수 감지 (PBA 알고리즘) - MAX30105 브레이크아웃 보드용
   작성자: Bennu @ MH-ET LIVE
   날짜: 2017년 10월 2일
   https://github.com/MHEtLive/MH-ET-LIVE-max30102
   이 데모는 펄스 비트 진폭(PBA) 알고리즘을 사용하여 심박수(분당 박동 수, BPM)를 읽는 방법을 보여줍니다.
   센서를 고무 밴드 등으로 손가락에 고정하는 것이 가장 좋습니다.
   사람은 일정한 압력을 가하는 데 서툴기 때문입니다.
   하드웨어 연결 (브레이크아웃 보드 → 아두이노):
   - 5V = 5V (3.3V도 허용)
   - GND = GND
   - SDA = A4 (또는 SDA)
   - SCL = A5 (또는 SCL)
   - INT = 미연결
   MAX30105 브레이크아웃은 5V 또는 3.3V I2C 로직을 처리할 수 있습니다.
   5V로 보드에 전원 공급을 권장하지만 3.3V에서도 동작합니다. */
#include 
#include "MAX30105.h"
#include 
#include "heartRate.h"

MAX30105 particleSensor;
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);

const byte RATE_SIZE = 4; // 평균 계산을 위한 크기 증가 가능. 4가 적당함.
byte rates[RATE_SIZE]; // 심박수 배열
byte rateSpot = 0;
long lastBeat = 0; // 마지막 박동이 발생한 시간
float beatsPerMinute;
int beatAvg;

void setup() {
  Serial.begin(9600);
  lcd.begin(16, 2);
  Serial.println("초기화 중...");
  // 센서 초기화
  if (!particleSensor.begin(Wire, I2C_SPEED_FAST)) { // 기본 I2C 포트, 400kHz 속도 사용
    Serial.println("MAX30105를 찾을 수 없습니다. 배선/전원을 확인하세요.");
    while (1);
  }
  Serial.println("검지손가락을 센서에 일정한 압력으로 대세요.");
  particleSensor.setup(); // 기본 설정으로 센서 구성
  particleSensor.setPulseAmplitudeRed(0x0A); // 적색 LED를 낮게 켜서 센서 작동 표시
  particleSensor.setPulseAmplitudeGreen(0); // 녹색 LED 끄기
}

void loop() {
  long irValue = particleSensor.getIR();
  if (checkForBeat(irValue) == true) {
    // 박동 감지!
    long delta = millis() - lastBeat;
    lastBeat = millis();
    beatsPerMinute = 60 / (delta / 1000.0);
    if (beatsPerMinute < 255 && beatsPerMinute > 20) {
      rates[rateSpot++] = (byte)beatsPerMinute; // 읽기 값 저장
      rateSpot %= RATE_SIZE; // 변수 래핑
      // 읽기 값 평균 계산
      beatAvg = 0;
      for (byte x = 0; x < RATE_SIZE; x++) beatAvg += rates[x];
      beatAvg /= RATE_SIZE;
    }
  }
  Serial.print("IR=");
  Serial.print(irValue);
  Serial.print(", BPM=");
  Serial.print(beatsPerMinute);
  Serial.print(", Avg BPM=");
  Serial.print(beatAvg);
  if (irValue < 50000) Serial.print(" 손가락 없음?");
  Serial.println();
  lcd.setCursor(0, 0);
  lcd.print("BPM: ");
  lcd.print(beatAvg);
  lcd.setCursor(0, 1);
  lcd.print(" IR: ");
  lcd.print(irValue);
}

회로도

아두이노 나노와 16x2 LCD로 MAX30102 심박수 모니터 만들기

제조공정

  1. AWS IoT 알림으로 원격 심박수 모니터링 시스템 구축
  2. 아두이노로 모니터 앰비라이트(Ambilight) 시스템 직접 만들기
  3. 아두이노 우노로 만드는 LCD 애니메이션 & 게임 기초
  4. 아두이노와 MAX30100으로 만드는 실시간 IoT 심박수 모니터
  5. 포토레지스터와 아두이노로 정확한 심박수 모니터 만들기
  6. 가스 온수기 파일럿 라이트 감시 시스템 – 열전대 전압 모니터링으로 안전 확보
  7. 아두이노 메가 기반 고급 홈 모니터링 시스템: IoT 센서 연동
  8. 아두이노 DHT 센서로 만드는 신뢰성 있는 기상 관측소
  9. 아두이노 우노로 신뢰할 수 있는 스마트 에너지 모니터 만들기 – 단계별 가이드
  10. 스마트 의류 통합 심박 센서, 신뢰도 높은 착용형 모니터링 구현