코코아팹은 누구나 창의적 아이디어를 현실로 만들어 낼 수 있도록
만들고, 공유하고, 배울 수 있는 터전이
되고자 합니다.
아이디와 비밀번호를 잊으셨나요?아이디 / 비밀번호 찾기
코코아팹 회원이 아니신가요? 회원가입
2014-10-02 15:17:12
아래는 NYMI 라는 제품입니다. 사람의 고유 심장 박동 패턴을 이용한 정보보안 장치입니다.
착용하는 사람의 심장 박동 패턴을 분석한 후 고유한 패턴을 알아냅니다.
회사에 출근에서 책상에 앉으면 자동으로 컴퓨터 비밀번호가 해제 되고 집의 문도 자동으로 열립니다.
신기하죠? 이런 제품을 만드는 것은 어렵겠지만 심장 박동수를 아는 것은 어렵지 않습니다.
심장 박동 센서만 있다면 아주 쉽게 심장이 얼마나 빠르게 뛰는 지 알 수 있습니다.
특히 pulse sensor는 오픈소스 프로젝트로 스케치와 이쁜 프로세싱 화면까지 무료로 제공해줍니다.
다음은 pulse sensor에 대한 여러 정보를 얻을 수 있는 웹사이트 입니다.
궁금하신 분은 사진 밑에 링크를 참고하세요.
출처 : http://pulsesensor.myshopify.com/pages/code-and-guide
심박센서를 사용해서를 이용한다면 진짜 좋아하는 지 아닌 지 알 수 있는 그린라이트 박스,
할머니, 할아버지 분들을 위한 심박수 측정기를 만들 수도 있을 것 입니다.
본 문에서는 심박 센서를 이용하여 심박을 측정하고 프로세싱 화면에서 그래프로 확인해 보겠습니다.
NO | 부품명 | 수량 | 상세설명 |
1 | 오렌지 보드 | 1 | |
2 | 심박 센서 | 1 | Pulse sensor kit를 사용하였습니다. |
3 | LED | 2 | |
4 | 330 ohm 저항 | 2 | |
5 | 점퍼 케이블 | 6 | |
6 | 브레드 보드 | 1 |
부품명 | 오렌지 보드 | 브레드 보드 | LED | 330 ohm 저항 | 점퍼 케이블 |
사진 | x1 | x1 | x2 | x2 | x6 |
부품명 | 심박 센서 |
사진 | x1 |
심박센서 키트는 다음과 같이 구성되어 있습니다. 심박센서 외에 부속품을 사용하면
다양한 형태로 심박센서를 사용하실 수 있습니다.
센서를 만지기 전에 절연을 하기 위해서 붙입니다.
2. 각종 부속품을 이용해 원하는 형태로 사용하세요.
출처 : http://pulsesensor.myshopify.com
3. 이어 클립 사용하기
글루건으로 이어 클립과 센서를 붙입니다.
출처 : http://pulsesensor.myshopify.com
다음 그림과 같이 귀, 손가락에 부착하여 사용하시면 됩니다.
출처 : http://pulsesensor.myshopify.com
* 센서 사용시 주의사항 1. 센서를 너무 강하게 누르실 경우, 모세혈관 측정이 방해가 되어 측정이 잘 되지 않을 수 있습니다. 2. 초기 인식 시, 5초 정도의 대기 시간이 필요합니다. 3. 센서를 사용하지 않을 때, 빛 등에 의해 외부 파형이 생성될 수 있으며, 고장이 아닙니다. |
다음 링크를 통해 스케치 및 프로세싱 파일 다운로드 하고 실행하세요.
(스케치 및 프로세싱 파일은 여러 파일로 되어 있기 때문에 압축 파일을 링크 하였습니다. 파일을 다운로드 하시고 열기를 이용하여 사용하세요.)
PulseSensorAmped_Arduino_1dot1.zip : 스케치 파일
PulseSensorAmpd_Processing…1dot1 : 프로세싱 파일
* 프로세싱 실행 시 주의사항
1. 보드에 먼저 스케치를 업로드 하신 후 시리얼 모니터는 꺼진 상태에서 실행하셔야 합니다.
2. 보드와 연결된 포트 번호를 확인 하신 후 연결하셔야 합니다.
: 프로세싱이 실행 버튼을 누르신 후 보드와 연결이 안되 실 경우, 포트 번호를 확인하세요.
1. 실행 버튼을 누르시면 프로세싱 콘솔창에서 포트 번호를 확인 하실 수 있습니다.
2. 보드와 실행된 포트를 확인 하시고 프로세싱 코드를 확인하세요.
println(Serial.list()); //포트번호 전부 출력
port = new Serial(this, Serial.list()[0], 115200); //첫 번재 포트로 연결
만약 COM22와 아두이노 보드가 연결되어 있다면 리스트의 두번째 있는 번호이므로 list()[1]로 수정하셔야 합니다.
스케치는 한 폴더 안에 두 개의 파일로 이뤄져 있습니다.
PulseSensorAmped 파일과 Interrupt파일로 이뤄져 있습니다.
void setup(){
pinMode(blinkPin,OUTPUT);
pinMode(fadePin,OUTPUT);
Serial.begin(115200);
interruptSetup(); // (인터럽트)0.002초 마다 심박 재기
}
심장박동을 사용하여 심박수를 잰다음 프로세싱으로 넘겨주기 위해서는 일정한 순간마다
심박을 재는 동시에 프로세싱으로 값또한 넘겨 주어야 합니다.
한 번에 한 기능만 수행 할 수 있는 아두이노에서는 이를 어떻게 처리해야 할 까요?
이럴때 사용 할 수 있는 것이 인터럽트라는 개념입니다.
만약 여러분이 밥을 먹고 있는 데 중요한 전화가 왔다면 밥을 먹다가 전화를 받을 것입니다.
여기서 밥을 먹는 행위가 메인 프로그램이 실행되는 것이고 전화가 인터럽트에 해당합니다.
즉, 어떤 특정 신호에 의해 인터럽트가 호출되면 프로세서는 수행 중이던 작업을 멈추고 해당 인터럽트에 연결된
함수를 호출합니다. 또 일정 시간마다 발생되는 인터럽트를 타이머 인터럽트라 합니다.
PulseSensorAmped 파일은 메인 프로그램입니다. 이 스케치 안에 setup함수를 보시면
interruptSetup이라는 함수를 보실 수 있습니다.
intterutSetup은 0.002초 마다 심박 수를 재는 타이머인터럽트를 발생하는 신호를 설정하는 함수입니다.
메인 스케치가 실행될 때 일정시간마다 심박수를 재는 인터럽트가 발생되는 것입니다.
void interruptSetup(){
TCCR2A = 0x02; //모드 설정 : CTC Mode
TCCR2B = 0x06; //256 PRESCALER
OCR2A = 0X7C; //CTC MODE 설정시, 이 값(124)과 같아질 때 인터럽트 발생
TIMSK2 = 0x02; //사용할 타이머 인터럽트를 enable
sei();
}
일정시간마다 인터럽트를 일어나게 하는 것은 ATmega128 내부의 타이머를 사용하는 것입니다.
이 타이머를 설정하기 위해서는 위와 같이 레지스터를 설정해야 합니다.
간단히 설명하면, 모드, 카운트 되는 시간, 비교값, 사용할 타이머 인터럽트 설정을 합니다.
레지스터 설정에 대한 자세한 원리 보다도 인터럽트 전체 원리를 이해하도록 합시다.
심박 센서 스케치 만큼은 아니지만 간단한 인터럽트는 쓰일 수 있기 때문입니다.
ISR(TIMER2_COMPA_vect){ //124가 되었을 때, 인터럽트 발생
cli();
Signal = analogRead(pulsePin); //심박수 읽음
sampleCounter += 2;
int N = sampleCounter - lastBeatTime;
}
레지스터에 설정한 대로 특정 주기에 인터럽트가 발생할 신호가 되면
실제 인터럽트에서 행해지는 기능은 ISR함수입니다.
ISR은 인터럽트 발생시 호출되는 함수입니다.
위 스케치의 경우 심박 센서를 읽어와서 처리하는 부분입니다.
위의 설명이 이해가지 않더라도 괜찮습니다.
인터럽트의 개념과 호출되는 함수ISR 개념에 대해서만 이해하셔도 좋습니다.
kocoafabeditor
항상 진취적이고, 새로운 것을 추구하는 코코아팹 에디터입니다!