헬스 밴드를 만들어 보자

by 하민정 | 2017-01-23 18:37
safety 안전지킴이 웨어러블 디바이스 위험감지 헨스밴드 헬스밴드

재료

  • 절연 테이프 1개
  • 인텔 에디슨 1개
  • 가속도계 ( MPU-6050 ) 1개
  • HC06 블루투스 모듈 1개
  • 알코올 센서 ( MH HQ-6 ) 1개
  • 심박수 센서 1개
  • 아두이노 우노 1개
  • 땀 센서 ( HL-01 ) 1개

                              


갑작스러운 몸의 이상이 있을 때, 사람의 심박 수가 급격히 변화하거나, 

식은 땀을 흘리거나, 갑자기 쓰러지는 경우 들이 있습니다. 


이러한 경우 주변 사람들로 부터 빠른 도움을 받을 수 있다면 빠른 응급처치가 가능하겠지만, 

그렇지 않은 경우엔 목숨을 앗아갈 수 있습니다. 


이러한 기기를 웨어러블로 만드는 것에 관심이 있던 중 다음의 프로젝트를 insturctables 에서 접하여 

소개하고자 합니다. 이 프로젝트를 따라 헬스 밴드를 만들어 봅시다. 


헬스 밴드는 인터랙티브 디바이스로서 인터넷과 연결되어 몸의 정보를

실시간으로 전달해 줄 수 있습니다. 


이 밴드에서 제공하는 정보는 세가지 입니다. 


1. 일상의 심박 수

2. 과한 알콜 소모 때문에 올 수 있는 알콜성 쇼크 가능성 

3. 몸의 심박수 측정을 통해 감지하는 몸의 변화 

헬스 밴드는 알콜성 쇼크를 감지할 수 있는 네 가지의 감지 프로토콜을 갖고 있습니다. 

1) 혈액에 있는 알콜 감지 센서인 알코올 센서,

2) 심박 수를 감지 할 수 있는 심박 수 센서,

3) 땀을 흘리는 정도를 측정해 주는 땀 센서,

4) 사람의 급격한 위치 변화를 감지할 수 있는 가속도계 


만약 위의 네가지 프로토콜 중 세가지 조건 이상이 만족한다면, 

이러한 보고가 GSM, GPS 를 통해 입력한 번호로 알림이 전달 됩니다. 


Step 1. 준비물 





- 아두이노 우노 

- 인텔 에디슨 

- 알코올 센서 ( MH HQ-6 ) 

- 땀 센서 ( HL-01 ) 

- 가속도계 ( MPU-6050 ) 

- 심박수 센서 

- 절연 테이프 

- HC06 블루투스 모듈  


Step 2. 메이킹 


 인텔 에디슨 설정하기 


                             


인텔 에디슨 Dev 보드를 컴퓨터에 연결하여, Putty 셸에 코드를 넣습니다. 

먼저, MRAA 라이브러리를 다운 받습니다. 라이브러리는 다음 링크를 통해 다운 받을 수 있습니다. 

라이브러리를 설치했다면, 이제 인텔 에디슨에 센서를 연결한 준비가 되었습니다. 


 센서 연결하기 

  

                                       




1) 알코올 센서 (  MH HQ-6 ) 

이 센서는 가정에서 혹은 산업체에서 가스가 누출되는 것을 감지하는 센서로, 

LPG, 이소 부탄, 프로판, LNG 를 감지할 수 있는 센서 입니다. 


2) 땀 센서 ( HL-01 ) 

이 센서를 통해 몸에서 어느 정도의 땀을 흘리는지 감지하는 데 사용됩니다. 감지된 정도를 

인텔 에디슨으로 정보를 보냅니다. 


3) 가속도계  ( MPU-6050 ) 

이것은 사람의 위치를 XYZ 축을 기준으로 사람의 위치가 변화하는 방향에 따른 정보를 

아날로그 데이터로 제공하는 센서 입니다. 


4) 펄스 센서 

이 센서는 사람의 맥박을 감지하는 센서 입니다. 

펄스 센서의 인터페이스는 다음의 링크를 통해 다운 받을 수 있습니다. 

센서는 인텔 에디슨에 아두이노와 시리얼 통신을 통해 연결할 수 잇습니다. 

아두이노에 펄스 센서를 연결 시킬 수 있는 코드는 다음을 통해 받을 수 있습니다. 


 소프트웨어 연결방법 


1
2
3
#include <LGPS.h>
#include <LGSM.h>
gpsSentenceInfoStruct info;
cs


▶ 쇼크 현상이 발생하거나, 심박수 이상으로 건강에 이상이 감지된 경우 GPS, GSM 를 통해 

의사 혹은 지인에게 급히 연락을 보내기 위해 < LGPS.h > 와 > < LGSM.h > 라는 라이브러리를 

참조합니다. 


1
2
3
4
5
6
7
8
9
void setup() {
Serial.begin(9600);
while(!LSMS.ready())
delay(1000);
Serial.println("SIM ready for work!");
LSMS.beginSMS("0123456789"); // replace the no. to the receiver's no.
LGPS.powerOn();
Serial.println("GPS ready for work!");
}
cs


▶ setup ( ) 

시리얼 통신으로 인텔 에디슨과 아두이노가 교신하고 있기 때문에 Serial.begin ( ) 으로 

시리얼 출력을 연결해 줍니다. 

LSMS.beginSMS(" ... " ) 부분에 연락받을 번호를 입력해 줍니다. 

LGPS.powerOn( ) 를 통해 GPS 기능을 활성화 시킵니다. 


1
2
3
4
5
6
void loop() {
LGPS.getData(&info);
if(LSMS.available())
{
printGPGGA((char*)info.GPGGA);
delay(5000);
cs


▶ loop ( ) 

LGPS.getData ( ) 를 통해 계속해서 센서를 통해 감지할 수 있게 만듭니다. 

LSMS.available( ) 은 네개의 센서 중 세개 이상의 센서가 기준치에 부합해 만족하는 경우 

true 를 리턴하게 됩니다. 그때 GPS, GSM 모듈을 통해 유저의 현재 위치가 기입한 연락처로 

SMS 를 통해 보내지게 됩니다. 


▶ 인텔 에디슨과 아두이노 우노를 시리얼 통신으로 연결시키기 위해 아두이노 IDE 에 업로드 

해야 하는 최종 코드는 다음과 같습니다. 


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
70
71
72
73
74
#include <LGPS.h>
#include <LGSM.h>
gpsSentenceInfoStruct info;
const char *nextToken(const char* src, char* buf)
{
int i = 0;
while(src[i] != 0 && src[i] != ',')
i++;
if(buf)
{
strncpy(buf, src, i);
buf[i] = 0;
}
if(src[i])
i++;
return src+i;
}
 
void printGPGGA(const char* str)
{
char latitude[20];
char longitude[20];
char buf[20];
const char* p = str;
p = nextToken(p, 0); // GGA
p = nextToken(p, 0); // Time
p = nextToken(p, latitude); // Latitude
p = nextToken(p, 0); // N
p = nextToken(p, longitude); // Longitude
p = nextToken(p, 0); // E
p = nextToken(p, buf); // fix quality
if(buf[0] == '1')
{
// GPS fix
p = nextToken(p, buf); // number of satellites
Serial.print("GPS is fixed:");
Serial.print(atoi(buf));
Serial.println(" satellite(s) found!");
Serial.print("Latitude:");
Serial.println(latitude);
Serial.print("Longitude:");
Serial.println(longitude);
LSMS.write("GPS is fixed:");
LSMS.write("Latitude:");
LSMS.write(latitude);
LSMS.write("Longitude:");
LSMS.write(longitude);
LSMS.endSMS();
}
else
{
Serial.println("GPS is not fixed yet.");
}
}
 
 
void setup() {
Serial.begin(9600);
while(!LSMS.ready())
delay(1000);
Serial.println("SIM ready for work!");
LSMS.beginSMS("0123456789"); // replace the no. to the receiver's no.
LGPS.powerOn();
Serial.println("GPS ready for work!");
}
void loop() {
LGPS.getData(&info);
if(LSMS.available())
{
printGPGGA((char*)info.GPGGA);
delay(5000);
}
}
 
cs


④ 최종 프로토타입 


                     


맥박은 펄스 센서를 통해 정보를 읽어 들입니다. 

아두이노는 인텔 에디슨과 시리얼 통신으로 연결되어 있습니다. 

맥박은 성인 남녀의 정상 맥박인 60 - 100 bpm 를 기준으로 비교 됩니다. 


알코올 쇼크현상은 에디슨과 연결된 네개의 센서를 통해 감지할 수 있습니다. 

위와 같이 만든 인텔 에디슨 보드 및 연결된 센서 들을 케이스를 이용해 웨어러블형으로 만들어 

항상 몸의 이상을 감지할 수 있게 만들어 줍니다. 








댓글 0

MADE BY