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

비정상 심박수 시 즉각 이메일 & SMS 알림 시스템

부품 및 소모품

심박수 측정 센서 모듈 1개
아두이노 메가 2560 1개
볼트 IoT 볼트 와이파이 모듈 1개
점퍼 와이어 (일반) 7개

앱 및 온라인 서비스

프로젝트 소개

24시간 심박수 모니터링 기기(피트니스 밴드 등)가 요즘 흔하고 하나쯤 가지고 계실 겁니다. 그런데 비정상 심박수 감지 시 SMS나 이메일, 또는 둘 다 보내주는 비슷한 기기를 직접 만들 수 있다면 어떨까요? 기대되시나요? 이 프로젝트는 가장 쉬운 방법으로 그 방법을 보여드립니다.

1단계: 심박수 센서 모듈을 아두이노에 연결

수-암 점퍼 와이어로 다음 연결:

2단계: 아두이노 코딩

아두이노 IDE 설치 후 다음 코드 작성:

unsigned long highCounter = 0;
int pulse = 0;
int val = 0;
int lastPulse = LOW;
unsigned long oldMillis = 0;

void setup() {
  pinMode(2, INPUT);
  Serial.begin(9600);
}

void loop() {
  pulse = digitalRead(2);
  if (pulse != lastPulse) {
    lastPulse = pulse;
    if (pulse == HIGH) highCounter++;
  }
  // 10초마다 highCounter 출력 및 리셋
  if (millis() - oldMillis >= 10000) {
    oldMillis = millis();
    val = highCounter * 6; // 분당 박동수 계산
    if (highCounter > 1) Serial.println(val);
    highCounter = 0;
  }
}

저장, 검증, 업로드.

이 코드는:

3단계: 볼트 와이파이 모듈을 아두이노에 연결

수-수 점퍼 와이어로 다음 연결:

이 연결로 볼트 와이파이 모듈에 전원 공급하고 아두이노와 시리얼 통신 수립. 하드웨어 연결 완료.

4단계: 메일건으로 이메일 자동화 서비스 설정

  1. 메일건 계정 생성
  2. 전화번호 인증 후 Domains 섹션 → Add Recipient 버튼 클릭
  3. Invite New Recipient 버튼 클릭 → 수신자 이메일 ID 입력
  4. 이메일 ID 추가 후 새 샌드박스 생성 → 새로 생성된 샌드박스 ID 클릭
  5. 새 화면에 이메일 전송에 필요한 모든 자격증명 표시 → 복사해 메모장에 저장

5단계: 트윌리오로 SMS 서비스 설정

  1. 트윌리오 접속 → Get a Free API Key 클릭해 가입
  2. 가입 양식 필수 항목 기입
  3. 전화번호 입력 및 인증
  4. 화면에서 "Products" 클릭
  5. Programmable SMS와 Phone Numbers 체크박스 활성화로 SMS 서비스 활성화
  6. "Continue" 클릭 → 프로젝트 이름 입력 후 다시 "Continue"
  7. "Skip this step" 클릭 (팀원 초대 건너뛰기)
  8. "Project Info" 클릭해 계정 자격증명 확인: Account SID와 Auth Token 안전 보관
  9. 드롭다운에서 "Programmable SMS" 선택 → Get Started 클릭해 전화번호 생성
  10. Get a number 클릭 → 팝업에서 Choose this number 클릭
  11. 최종 번호 팝업 표시 → 번호 복사해 안전 보관

6단계: 디지털오션 VPS로 심박수 모니터링 코드 실행

참고: 전용 리눅스 컴퓨터나 가상머신 리눅스로 디지털오션 같은 VPS 대체 가능.

  1. 디지털오션 계정 가입
  2. 프로젝트 생성 → 우분투 실행 드로플릿 생성 → PuTTY로 접속
  3. 이메일로 받은 자격증명으로 우분투 로그인
  4. 다음 명령 실행:

우분투 패키지 업데이트

sudo apt-get -y update

파이썬3 pip3 설치

sudo apt install python3-pip

pip로 boltiot 라이브러리 설치

sudo pip3 install boltiot

conf.py 파이썬 파일 생성

sudo nano conf.py

다음 코드에 정확한 데이터 입력:

# 트윌리오 자격증명
SID = '트윌리오 대시보드에서 SID 확인'
AUTH_TOKEN = '트윌리오 대시보드에서 확인'
FROM_NUMBER = '트윌리오가 생성한 번호. 트윌리오 대시보드에서 확인'
TO_NUMBER = '본인 번호. 처음에 +91 추가 필수'

# 메일건 자격증명
MAILGUN_API_KEY = '메일건 대시보드에서 확인 가능한 프라이빗 API 키'
SANDBOX_URL = '메일건 대시보드에서 확인'
SENDER_EMAIL = 'test@your SANDBOX_URL 형태'
RECIPIENT_EMAIL = '여기에 본인 이메일 ID 입력'

# 볼트 자격증명
API_KEY = '볼트 클라우드 계정 API 키'
DEVICE_ID = '볼트 디바이스 ID'

conf.py 저장

heart_rate.py 파이썬 파일 생성

sudo nano heart_rate.py

다음 코드 작성:


import conf, json, time
from boltiot import Email, Bolt
from boltiot import Sms, Bolt

minimum_limit = 57  # 심박수 최소 임계값
maximum_limit = 100 # 심박수 최대 임계값

mybolt = Bolt(conf.API_KEY, conf.DEVICE_ID)
mailer = Email(conf.MAILGUN_API_KEY, conf.SANDBOX_URL, conf.SENDER_EMAIL, conf.RECIPIENT_EMAIL)
sms = Sms(conf.SSID, conf.AUTH_TOKEN, conf.TO_NUMBER, conf.FROM_NUMBER)

while True:
  response = mybolt.serialRead(2)
  data = json.loads(response)
  sensor_value = data['value']
  try:
    sensor_value = data['value']
    if sensor_value > maximum_limit or sensor_value < minimum_limit:
      response = mailer.send_email("Alert", "The Current Heart Rate is " + str(sensor_value))
      response = sms.send_sms("Alert! The Current Heart Rate is " + str(sensor_value))
  except Exception as e:
    print()
  time.sleep(10)

heart_rate.py 저장

실행:

sudo python3 heart_rate.py

심박수가 비정상이면 폰으로 SMS와 이메일이 각각 전송됩니다.

코드

아두이노 코드

펄스 값 계산용 코드

unsigned long highCounter = 0;
int pulse = 0;
int val = 0;
int lastPulse = LOW;
unsigned long oldMillis = 0;

void setup() {
  pinMode(2, INPUT);
  Serial.begin(9600);
}

void loop() {
  pulse = digitalRead(2);
  if (pulse != lastPulse) {
    lastPulse = pulse;
    if (pulse == HIGH) highCounter++;
  }
  if (millis() - oldMillis >= 10000) {
    oldMillis = millis();
    val = highCounter * 6;
    if (highCounter > 1) Serial.println(val);
    highCounter = 0;
  }
}

conf.py (파이썬)

볼트, 메일건, 트윌리오 사용을 위한 API 키 등 자격증명 포함


# 트윌리오 자격증명
SID = '트윌리오 대시보드에서 SID 확인'
AUTH_TOKEN = '트윌리오 대시보드에서 확인'
FROM_NUMBER = '트윌리오가 생성한 번호. 트윌리오 대시보드에서 확인'
TO_NUMBER = '본인 번호. 처음에 +91 추가 필수'

# 메일건 자격증명
MAILGUN_API_KEY = '메일건 대시보드에서 확인 가능한 프라이빗 API 키'
SANDBOX_URL = '메일건 대시보드에서 확인'
SENDER_EMAIL = 'test@your SANDBOX_URL 형태'
RECIPIENT_EMAIL = '여기에 본인 이메일 ID 입력'

# 볼트 자격증명
API_KEY = '볼트 클라우드 계정 API 키'
DEVICE_ID = '볼트 디바이스 ID'

heart_rate.py (파이썬)

펄스 값 수집 및 이상 징후 체크


import conf, json, time
from boltiot import Email, Bolt
from boltiot import Sms, Bolt

minimum_limit = 57
maximum_limit = 100

mybolt = Bolt(conf.API_KEY, conf.DEVICE_ID)
mailer = Email(conf.MAILGUN_API_KEY, conf.SANDBOX_URL, conf.SENDER_EMAIL, conf.RECIPIENT_EMAIL)
sms = Sms(conf.SSID, conf.AUTH_TOKEN, conf.TO_NUMBER, conf.FROM_NUMBER)

while True:
  response = mybolt.serialRead(2)
  data = json.loads(response)
  sensor_value = data['value']
  try:
    sensor_value = data['value']
    if sensor_value > maximum_limit or sensor_value < minimum_limit:
      response = mailer.send_email("Alert", "The Current Heart Rate is " + str(sensor_value))
      response = sms.send_sms("Alert! The Current Heart Rate is " + str(sensor_value))
  except Exception as e:
    print()
  time.sleep(10)

회로도

회로도 이미지 참조 (위 연결 설명대로 구성)

제조공정

  1. 데이터와 스토리텔링으로 유지보수 프로젝트 승인 확보하는 법
  2. 직장 유지와 경력 성장을 가속하는 9가지 검증된 전략
  3. 안티-시즈 윤활제가 MRO에서 시간·비용 절약, 골치 해소하는 5가지 방법
  4. 전문가 가이드: 용제 회수 스틸 최적 성능 유지보수
  5. 긴급 대응: 코모리 28인치 옵셋 인쇄기 급작스런 정지 해결 사례
  6. 굴착기·덤프트럭 최적 조합으로 채광 현장 효율·수익 극대화
  7. 산업용 절단 블레이드 구매 시 고려해야 할 4가지 핵심 요소
  8. 가정용 자동 부스터 펌프 선택 실전 가이드: 수압 고민 해결
  9. 나사와 볼트 유형 완벽 가이드: 최적 조립을 위한 선택 기준
  10. 나사 vs 볼트: 핵심 차이점, 유형, 용도 완벽 정리