아두이노 심박 센서 라이브러리 - adu-ino simbag senseo laibeuleoli

심박수 측정기 만들기

페이지 정보

작성자 James 작성일16-11-17 15:45 조회4,302회 댓글0건

첨부파일

  • 아두이노 심박 센서 라이브러리 - adu-ino simbag senseo laibeuleoli
    네오픽셀라이브러리.zip (271.4K) 72회 다운로드 DATE : 2016-11-17 15:51:58
  • 아두이노 심박 센서 라이브러리 - adu-ino simbag senseo laibeuleoli
    심박센서라이브러리,코드.zip (765.1K) 86회 다운로드 DATE : 2016-11-17 15:51:58

관련링크

  • 이전글
  • 다음글
  • 목록

본문


안녕하세요 이번에 심박측정기를 만들어보았습니다.

 

필요한 부품들은 10k 가변저항, 아두이노 우노, 브레드보드, 점퍼케이블, 심박센서, 16x2 LCD, 5v버저, 네오픽셀 LED 가 사용 되었습니다.

 

프레임은 아크릴판을 사용하였으며 레이저 커팅하여 제작하였습니다.

 

아두이노 심박 센서 라이브러리 - adu-ino simbag senseo laibeuleoli
 


아두이노 심박 센서 라이브러리 - adu-ino simbag senseo laibeuleoli


아두이노 심박 센서 라이브러리 - adu-ino simbag senseo laibeuleoli

아두이노 심박 센서 라이브러리 - adu-ino simbag senseo laibeuleoli

아두이노 심박 센서 라이브러리 - adu-ino simbag senseo laibeuleoli

아두이노 심박 센서 라이브러리 - adu-ino simbag senseo laibeuleoli

 

 

 다음은 회로도 이며 소스코드와 라이브러리는 파일 첨부 해놓았습니다.
 

아두이노 심박 센서 라이브러리 - adu-ino simbag senseo laibeuleoli

 


 

 

구입은 아래 링크 클릭하시면 바로 구입 하실 수 있습니다.

 

http://mechasolution.com/shop/goods/goods_view.php?goodsno=537792&category=117 

 

 

 

 


 


 

[출처] [아두이노 프로젝트] 심박센서를 이용해 심박수 측정하기|작성자 오픈랩

 

댓글목록

등록된 댓글이 없습니다.

  • 이전글
  • 다음글
  • 목록

아두이노 심박 센서 라이브러리 - adu-ino simbag senseo laibeuleoli

안녕하세요~~ 매드 입니다.

지난 시간에는 초음파 센서를 했었는데 재미있었는지 모르겠네요. 이번 시간에도 조금 재미있는(?) 센서를 해볼려고 하는데 바로 맥박을 측정할 수 있는 '심박센서' 입니다.

한번 알아볼까요~?


18-1. 심박센서?

아두이노 심박 센서 라이브러리 - adu-ino simbag senseo laibeuleoli
< 출처 : 구글 사진 >
심박센서에 여러 종류들이 있겠지만 최근에 웨어러블 기기부터 다양하게 사용되고 있는 방식의 원리는 초록빛의 LED를 비추고 거기에 반사되는 조도를 측정하여 이를 사용하게 됩니다.

심박이 뛸 때 마다 혈관의 변화로 인해 반사되는 조도 값이 변하게 되는데 이를 이용한 것이죠. 참 대단하지 않습니까?~ 하하; 초록색 LED를 사용하는 이유는 초록색이 가장 인간의 피부를 잘 통과시키기 때문이라고 하네요 ㅎㄷㄷ 사람의 눈도 초록색에 민감하고.. 먼가 사람의 태생이 식물이 아닌가 하는 생각이... 헛소리 죄송합니다.

머 어쨋든 그런 심박센서가 되겠는데요! 이 미세한 조도의 변화를 opamp라는 능동소자를 이용하여 증폭해서 이용하게 됩니다. 아날로그 기술이죠!

사진에 보면 이번에 사용할 오픈 하드웨어 심박센서가 있는데요.
http://pulsesensor.com 으로 가시면 어떻게 제작하는지부터 다양한 자료들을 보실 수 있습니다. 세상에는 정말 대단한 사람들도 많고 이런 중요한 기술들을 오픈하여 다양한 사람들이 혜택받을 수 있도록 돕고 있는 것 같습니다.

세상이 이제는 자연의 법칙을 따라가고 있는 것이 아닌가 하는 생각이 드네요. 필요한 만큼만 얻고 서로 공유하고 함께 살아 갈 수 있는 세상. 그것이 앞으로의 미래가 아닌가 꿈꿔봅니다. ㅎㅎ

잡다한 얘기가 길었는데!! 다시 돌아와서 초음파 센서 회로를 봐보죠.


18-2. 초음파센서 회로

아두이노 심박 센서 라이브러리 - adu-ino simbag senseo laibeuleoli
< 출처 : pulsesensor.com >
회로가 너무 간단해서 놀랐네요. 위에 보이는 것은 가장 초기에 설계했던 심박센서인것 같네요. ㅎㅎ 간단하죠? LED를 항상 켜두고 APDS-9000 이라는 조도계를 통해서 반사되는 빛의 양을 아날로그 출력을 받는게 전부네요 ㅎ

그럼 현재의 회로도를 봐볼까요!

아두이노 심박 센서 라이브러리 - adu-ino simbag senseo laibeuleoli
< 출처 : pulsesensor.com >
역시나 기존 회로의서 아날로그 회로들이 좀 더 추가되었네요. opamp를 이용해서 신호를 증폭하는 회로가 추가되었습니다~

조심해야 될 부분이 있는데 전원 연결이랑 신호 연결선이 제대로 되었는지 반드시!!! 확인하세요~ ㅎㅎ 그냥 막 꼽으면 ... 망가지더라구요 (ㅠㅠ)


18-3. 펌웨어 코드

이번 펌웨어 코드는 코드가 긴 관계로 링크로 대신하겠습니다.

https://github.com/WorldFamousElectronics/PulseSensor_Amped_Arduino

위의 코드는 아두이노 코드이기는 하지만 라이브러리가 아닙니다. 라이브러리처럼 추가하셔도 동작하지 않아요~

코드를 받아서 압축을 푸신 후 PulseSensorAmped_Arduino_1dot4.ino 파일을 여시면 나머지 파일들도 함께 열리실 겁니다. 이후에 아두이노로 업로드 하시면 동작을 보실 수 있겠네요.

생각보다 굉장히 민감하고 센서 사용 전 먼저 해두지 않으면 정상동작하지 않는 것들이 있습니다. 자세한 것들은 동영상 후반부를 통해 감상하시고 오늘은 여기까지 하겠습니다~~!

난이도가 점점(?) 올라가는 느낌이네요 ㅋㅋ

다음시간에는 우리 생활에 알게모르게 많이 사용되고 있는 RFID 센서 모듈을 다뤄보도록 하겠습니다~

그럼 다음시간에 뵐게요~ :)


https://youtu.be/FC7w9jq0jXI


SHARE SHARE

About maduinos

아두이노 심박 센서 라이브러리 - adu-ino simbag senseo laibeuleoli


안녕하세요

디바이스마트의 인간 제세동기 솔다입니다.


영화나 드라마를 보면 안타까운 죽음들이 많이 나오는데요


손목이나 턱과 목 사이를 눌러서

맥박이 뛰지 않는지 확인하고 애도를 표하는 장면을

많이 접하셨을 겁니다


아두이노 심박 센서 라이브러리 - adu-ino simbag senseo laibeuleoli


살아있다는 증거중에 하나가

심장이 열심히 일을 한다는 점인데요


특별한 센서를 이용해서 아두이노로 맥박을 측정해보려고합니다


-


아두이노 심박 센서 라이브러리 - adu-ino simbag senseo laibeuleoli


하트모양이 인쇄된 이 귀여운 기판은

아두이노 심박측정 센서 모듈입니다


이 모듈을 이용하면 아두이노로 심박수를 측정할 수 있습니다


정 가운데에 LED가 있고 그 바로 밑에 수광부가 있습니다

따라서 실제로 사용할때는 하트가 피부쪽을 향하도록 해야합니다


심박수를 측정할 수 있는 원리는 심장이 바운스바운스 하기 때문인데요

'펌프질'이라고 표현하듯이 심장은 수축과 팽창을 반복해서

피를 온몸에 보내기 때문에 수축할때는 혈류량이 높아지고

팽창할때는 혈류량이 비교적 낮습니다


아두이노 심박 센서 라이브러리 - adu-ino simbag senseo laibeuleoli


혈류량이 높을때는 혈구의 밀도가 높아서 빛이 많이 반사되고

혈류량이 낮을때는 혈구의 밀도가 낮아서 빛이 많이 투과됩니다

즉 빛의 반사율을 반복해서 측정하는 것으로 맥박을 감지할 수 있습니다


어느정도 원리도 파악되었으니

아두이노로 직접 테스트 해보겠습니다

레츠기릿~


아두이노 심박 센서 라이브러리 - adu-ino simbag senseo laibeuleoli


-


준비물 부터 체크해보겠습니다!


아두이노 심박 센서 라이브러리 - adu-ino simbag senseo laibeuleoli


아두이노 UNO 1개

심박센서모듈 1개

심박센서모듈 고정용 테이프 조금

프로그램 업로드를 위한 컴퓨터와 케이블


정도 준비해주시면 되시겠습니다


사진 왼쪽 위의 점퍼와이어는 심박센서를 구매하시면

동봉되어있습니다


아두이노 심박 센서 라이브러리 - adu-ino simbag senseo laibeuleoli


회로가 있는 면은 이렇게 생겼습니다


핀배열은 위와 같은 방향으로 놨을 때

맨 왼쪽이 SIG(아날로그 출력)

가운데가 VCC(5V 입력)

오른쪽이 GND(그라운드 연결)

입니다


기판에 S(signal)과 -(gnd)로 표시되어있기 때문에

헷갈일 일은 없을 것 같습니다


배선은 간단합니다


아두이노 심박 센서 라이브러리 - adu-ino simbag senseo laibeuleoli


이렇게 배선해주시면 되는데요

배선도로 보면


아두이노 심박 센서 라이브러리 - adu-ino simbag senseo laibeuleoli


이렇게 연결해주시면 됩니다


아두이노 심박 센서 라이브러리 - adu-ino simbag senseo laibeuleoli


이대로 컴퓨터에 연결하면 모듈 중간에 신비한 빛이 들어오는데요


아두이노 심박 센서 라이브러리 - adu-ino simbag senseo laibeuleoli


이제 연결은 끝났습니다


-


동작하려면 프로그램이 필요하지만

이미 프로그램은 다 작성되어있습니다


프로그램 링크


위 링크로 들어가셔서


아두이노 심박 센서 라이브러리 - adu-ino simbag senseo laibeuleoli


오른쪽 중간쯤에 있는 녹색 버튼을 누르면

위 스크린샷 처럼 펼쳐지는데

빨간색 네모표시한 파란 버튼을 눌러 프로그램 압축파일을 받아줍니다


아두이노 심박 센서 라이브러리 - adu-ino simbag senseo laibeuleoli


받은 파일은 압축 해제해주세요

경로는 상관 없습니다


아두이노 심박 센서 라이브러리 - adu-ino simbag senseo laibeuleoli


폴더 내부는 이렇게 생겼는데요

빨간색 네모표시한 폴더로 들어가줍니다


아두이노 심박 센서 라이브러리 - adu-ino simbag senseo laibeuleoli


파일이 4개가 있는데요

한개만 실제 작동하는 파일이고

나머지는 참조해야하는 파일입니다

모두 같은 폴더에 있어야 작동합니다


빨간 네모친 파일을 실행시켜줍니다


아두이노 심박 센서 라이브러리 - adu-ino simbag senseo laibeuleoli


파일을 실행하면 이미 코드가 다 작성되어있는데요


그대로 실행해도 실행은 되지만

코드를 일부 수정하도록 하겠습니다


아두이노 심박 센서 라이브러리 - adu-ino simbag senseo laibeuleoli


수정된 프로그램입니다

serialVisual을 False에서 True로 변경해줬습니다


False로 하면 센서값만 0~255 사이 값으로 출력되고

True로 하면 분당 심박수(BPM)으로 변환되어 출력됩니다

그리고 표준심박수 기준으로 시각적으로 표시해줍니다


밑에 딜레이는 200에서 1000으로 바꿨는데

200으로 할 경우 결과값이 너무 빠르게 나와서

1초에 한번씩 결과를 출력하도록 지연시켜줬습니다


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

/*  Pulse Sensor Amped 1.4    by Joel Murphy and Yury Gitman   http://www.pulsesensor.com

----------------------  Notes ----------------------  ---------------------- 

This code:

1) Blinks an LED to User's Live Heartbeat   PIN 13

2) Fades an LED to User's Live HeartBeat

3) Determines BPM

4) Prints All of the Above to Serial

Read Me:

https://github.com/WorldFamousElectronics/PulseSensor_Amped_Arduino/blob/master/README.md   

 ----------------------       ---------------------- ----------------------

*/


//  Variables

int pulsePin = 0;                 // Pulse Sensor purple wire connected to analog pin 0

int blinkPin = 13;                // pin to blink led at each beat

int fadePin = 5;                  // pin to do fancy classy fading blink at each beat

int fadeRate = 0;                 // used to fade LED on with PWM on fadePin


// Volatile Variables, used in the interrupt service routine!

volatile int BPM;                   // int that holds raw Analog in 0. updated every 2mS

volatile int Signal;                // holds the incoming raw data

volatile int IBI = 600;             // int that holds the time interval between beats! Must be seeded! 

volatile boolean Pulse = false;     // "True" when User's live heartbeat is detected. "False" when not a "live beat". 

volatile boolean QS = false;        // becomes true when Arduoino finds a beat.


// Regards Serial OutPut  -- Set This Up to your needs

static boolean serialVisual = true;   // Set to 'false' by Default.  Re-set to 'true' to see Arduino Serial Monitor ASCII Visual Pulse 



void setup(){

  pinMode(blinkPin,OUTPUT);         // pin that will blink to your heartbeat!

  pinMode(fadePin,OUTPUT);          // pin that will fade to your heartbeat!

  Serial.begin(115200);             // we agree to talk fast!

  interruptSetup();                 // sets up to read Pulse Sensor signal every 2mS 

   // IF YOU ARE POWERING The Pulse Sensor AT VOLTAGE LESS THAN THE BOARD VOLTAGE, 

   // UN-COMMENT THE NEXT LINE AND APPLY THAT VOLTAGE TO THE A-REF PIN

//   analogReference(EXTERNAL);   

}



//  Where the Magic Happens

void loop(){

  

    serialOutput() ;       

    

  if (QS == true){     // A Heartbeat Was Found

                       // BPM and IBI have been Determined

                       // Quantified Self "QS" true when arduino finds a heartbeat

        fadeRate = 255;         // Makes the LED Fade Effect Happen

                                // Set 'fadeRate' Variable to 255 to fade LED with pulse

        serialOutputWhenBeatHappens();   // A Beat Happened, Output that to serial.     

        QS = false;                      // reset the Quantified Self flag for next time    

  

     

  ledFadeToBeat();                      // Makes the LED Fade Effect Happen 

  delay(1000);                             //  take a break

}






void ledFadeToBeat(){

    fadeRate -= 15;                         //  set LED fade value

    fadeRate = constrain(fadeRate,0,255);   //  keep LED fade value from going into negative numbers!

    analogWrite(fadePin,fadeRate);          //  fade LED

  

Colored by Color Scripter


수정된 프로그램의 소스코드입니다

수정할 부분을 잘 못찾으시겠다면 복사 붙여넣기 해주시면 됩니다


소스코드수정이 완료되었다면

아두이노에 업로드 해줍니다


-


이제 센서를 손에 고정시켜야하는데요

측정중에 움직이거나 센서 모듈 연결부를 건드리게되면

잘못된 값이 출력될 수 있습니다


웨어러블장비를 만들 생각이라면 더 견고한게 좋겠지만

테스트만 할 예정이라서 전기테이프를 이용하여 고정하였습니다


아두이노 심박 센서 라이브러리 - adu-ino simbag senseo laibeuleoli


손목에 정맥이 잘 보이길래

혹시 손목에 하면 더 측정이 잘 되지 않을까 했는데

손가락이 더 측정이 잘 되었습니다


테스트 하실 때 왠만하면 손가락으로 테스트 하시기를 권장드립니다


-


고정도 되었다면 시리얼모니터를 눌러서 결과를 확인해봅시다


아두이노 심박 센서 라이브러리 - adu-ino simbag senseo laibeuleoli


시리얼모니터 버튼을 누르면?


아두이노 심박 센서 라이브러리 - adu-ino simbag senseo laibeuleoli


제 심박수가 체크되어 나옵니다

BPM은 79~81정도로 높은편인데요

커피의 영향이 있는 것 같습니다


개인차가 있을 수 있지만

표준 BPM은 아래와 같습니다


남성

나이

18–25

26–35

36–45

46–55

56–65

65+

운동선수

49–55

49–54

50–56

50–57

51–56

50–55

뛰어남

56–61

55–61

57–62

58–63

57–61

56–61

좋음

62–65

62–65

63–66

64–67

62–67

62–65

평균 이상

66–69

66–70

67–70

68–71

68–71

66–69

평균

70–73

71–74

71–75

72–76

72–75

70–73

평균 이하

74–81

75–81

76–82

77–83

76–81

74–79

나쁨

82+

82+

83+

84+

82+

80+


여성

나이

18–25

26–35

36–45

46–55

56–65

65+

운동선수

54–60

54–59

54–59

54–60

54–59

54–59

뛰어남

61–65

60–64

60–64

61–65

60–64

60–64

좋음

66–69

65–68

65–69

66–69

65–68

65–68

평균 이상

70–73

69–72

70–73

70–73

69–73

69–72

평균

74–78

73–76

74–78

74–77

74–77

73–76

평균 이하

79–84

77–82

79–84

78–83

78–83

77–84

나쁨

85+

83+

85+

84+

84+

85+

출처-https://ko.wikipedia.org/wiki/%EC%8B%AC%EB%B0%95%EC%88%98


저는 평균이하로 나왔네요ㅎㅎ

아마 커피를 안마셨더라도 평균으로는 못들었을거같습니다


이게 잘 작동하는건지 확신이 들지 않아서

안정상태와 운동 후 상태 두 상태로 나누어 테스트 했습니다



먼저 안정상태입니다

위 스크린샷 결과와 크게 다르지 않습니다

78~80BPM정도로 나옵니다


운동 후 상태를 측정하기 위해

지구들었다내리기푸쉬업 20개 하고 오겠습니다


아두이노 심박 센서 라이브러리 - adu-ino simbag senseo laibeuleoli



약 10BPM정도 상승한 모습을 확인할 수 있었습니다

의자에 앉으니 서서히 안정 심박수로 떨어지는게 보이네요


제대로 작동한다고 결론지었습니다

건강을 위해 운동해야겠네요


-


아두이노와 심박센서를 사용하여 맥박을 재봤는데요


스마트폰에도 맥박을 재주는 기능이 많고

스마트밴드에는 필수 내장이라서 주변에서 많이 접하셨을겁니다


원리도 배우고 직접 사용도 해보시면

당연하게 사용하던게 당연하지 않다는걸 느끼셨을 겁니다


유익한 시간이셨으면 좋겠습니다

아쉽지만 다음에 만나요!


아두이노 심박 센서 라이브러리 - adu-ino simbag senseo laibeuleoli