• 모듈의 구성 및 기능
    • 전원부 : 5로 입력되어 -5V,+5V가 출력되도록 설계
    • 아날로그 출력 : 아두이노와 연결되어 아두이노의 입력단자핀을 점퍼로 설정할 수 있도록 제작
    • 생체폭부 : 전극에서 입력되어온 mV단위의 신호를 0.1~500Hz 내의 근전도 신호에서 1000배 증폭시킴
    • 전극부: +,-, 그리고 GND로 구성되어 생체의 측정하고자 하는 전극에 부착하도록 제작






  • 아두이노 우노보드와의 연결방법
    • 핀배치 우노의 근전도보드는 전극부를 우측으로 하여 핀헤더를 상하로 배치한 상태
    • 아두이노보드는 USB단자가 왼쪽으로 향하게 하고 핀헤더를 상하로 배치한 상태
    • 아래의 그림과 같이 USB가 왼쪽 3극 생체입력이 오른쪽
    • 전원부의 GND와 5V가 어긋나지 않도록 연결한다.




  • 점퍼핀의 설정와 이유
    • 점퍼핀은 A0~A5까지 연결할 수 있다.
    • 보드 한개만 사용할 경우 원하는 점퍼핀의 번호를 연결하고, 프로그램에서 해당하는 아날로그포트를 통해 입력받아 사용할 수 있게 제작되었다.
    • 다수개의 연결보드를 이용할경우 2개 이상의 점퍼를 설정하고 사용해야한다.

  • ARD-EMG센서 데이터출력 방법
    • 센서의 데이터 출력방법은 일반 아두이노에서의 아날로그출력 방법과 동일하다.
    • 일반적인 아두이노의 데이터출력예제를 사용해서 근전도의 데이터를 출력해볼 수 있다.
    • 단, 참고해야 하는 내용은 근전도를 확인할 수 있는 범위인 500Hz 이상의 영역에서 데이터를 샘플링할 수 있도록 프로그램을 만들어줘야한다. 
* 생체데이터 획득에 관한 구체적인 사안은 향후에 설명하도록 하겠습니다. 우선 모듈을 사용하는데 필요한 최소사안만을 설명드립니다.
 
  • 예제=>01.Basics=>AnalogReadSerial 클릭





  • 예제 내용은 다음과 같습니다.
// the setup routine runs once when you press reset:
void setup() {
  // initialize serial communication at 9600 bits per second:
  Serial.begin(9600);
}

// the loop routine runs over and over again forever:
void loop() {
  // read the input on analog pin 0:
  int sensorValue = analogRead(A0);
  // print out the value you read:
  Serial.println(sensorValue);
  delay(1);        // delay in between reads for stability
}
  • 출력된 데이터 형식
    • 데이터는 0~1024의 값으로 10bit의 해상도를 지니고 출력됩니다.




  • 그래프 출력
    • 회사에서 제공하는 10bit 단일그래프를 활용하면 EMG센서를 그래프로 변환해 볼수 있습니다.
    • COM포트는 아두이노가 설정되어 있는 포트로 VISA resource name을 설정합니다.
    • 출력되는 데이터는 웨이브폼 차트에서 확인 가능합니다.
    • 단, 주의할점은 아두이노의 시리얼모니터 또는 com포트를 중복으로 사용하는 프로그램을 함께 사용할 경우 에러가 발생할 수 있습니다.




'메이커스교육 > 헬스케어교육' 카테고리의 다른 글

아두이노 연결 근전도 모듈  (0) 2019.04.28
[ARD-ECG] 기본사용법  (0) 2019.04.28

- ARD-ECG 사용방법은 아주 단순하게 만들어졌다.


- 아두이노의 아날로그 단자핀을 지정하여 ARD-ECG 신호를 입력하여 신호만 입력하면 동작하도록 제품이 

만들어졌다.

- 제품을 구동하기 위해서 다음과 같은 순서로 진행하면 된다.
1. ARD-ECG 를 아두이노에 부착한다.( 핀방향 확인)
2. ARD-ECG의 점퍼를 세팅한다 ( 아두이노의 입력으로 사용한 단자에 점퍼로 설정한다)
3. 아두이노 보드에 프로그래밍 한다.
    (- 이때 프로그램은 아날로그핀의 신호를 읽어 오도록만 프로그래밍하면 된다. 단순 예제 소스를 활용해도 됨
    - 소스는 제공한다.)
4. 아두이노의 터미널을 통해 아날로그 신호가 입력됨을 확인한다. 여기까지가 기본동작이다. 

- ECG신호를 확인 하기 위해 본 사에서 제공하는 EXE 파일을 확인할 경우 ,

5. 제작사가 제공하는 설치파일을 실행한다.
6. 제작사가 제공하는 ECG그래프.EXE파일을 실행한다.
7. 전극을 부착 후 그래프 화면을 통해 동작을 확인한다.
- 이때 잘 그래프에 

▶ 다음 과정을 실제로 진행해 보자.


1. ARD-ECG 를 아두이노에 부착한다.( 핀방향 확인)

 





2. ARD-ECG의 점퍼를 세팅한다 ( 아두이노의 입력으로 사용한 단자에 점퍼로 설정한다)




3. 아두이노 보드에 프로그래밍 한다.
    (- 이때 프로그램은 아날로그핀의 신호를 읽어 오도록만 프로그래밍하면 된다. 단순 예제 소스를 활용해도 됨
    - 소스는 제공한다.)

void setup() {
  Serial.begin(9600); // 통신속도 설정
}
void loop() {
  int sensorValue = analogRead(A0);   // ECG 단자를 A0 으로 읽어 오도록 설정
  Serial.println(sensorValue);
  delay(1);       
}
- 다음과 같이 아두이노에서 제공하는 AnalogReadSerial 예제 프로그램을 활용할 경우, 
아날로그 핀설정만 하면 바로 값을 PC에서 읽어 확인 할 수 있다.

4. 아두이노의 터미널을 통해 아날로그 신호가 입력됨을 확인한다. 여기까지가 기본동작이다. 
- 아래와 같이 터미널에서 바로 확인 가능하다.




▶ ECG신호를 확인 하기 위해 본 사에서 제공하는 EXE 파일을 확인할 경우 ,

5. 제작사가 제공하는 설치파일을 아래와 같이 실행한다.








6. 제작사가 제공하는 ECG그래프.EXE파일을 실행한다.




7. 전극을 부착 후 그래프 화면을 통해 동작을 확인한다.






 

실제 프로그램에서는 어떤 내용이 들어갈지는 아이디어를 설계한 사람이 넣어줘야

하는데요. 그것은 요리 하는 행동과 비슷합니다.

 

예를 들자면 라면을 끓일 때 냄비에 물을 붓고 일정시간 가열하고 적정온도가 되면

라면회사에서 알려주는 레시피 대로 재료를 넣고 더 끓이면 완성 되겠죠.

 

간단한 레시피가 익숙해 있지 않은 사람이 처음부터 라면을 끓여본다.

이건 어떻게 보면 어렵지만...

시간이 지난 후에 라면을 만들어 먹는건 아주 쉬운 행동이었어요.

 

프로그램도 마찬가지 처음에는 기술적으로 배워야 하는 내용이 무엇인지 정도를 이해하는

것입니다.

 

요리에서 무언가를 만들기 위해 가열을 하게 되는데요.

프로그램도 원하는 형태의 내용을 작성할 때 최종적으로 회로 기판에 넣는 작업을

우리는 컴파일하고 업로드 한다고 이야기 합니다.

 

여기서 전문용어가 하나 나오내요. 컴파일과 업로드

컴파일은 실제 기계 내부에서 가장 상단에 만들어진 개발자의 프로그램을

기계언어로 변화하는 과정이고요.

업로드는 기계언어로 만들어진 파일을 회로기판에 넣을 수 있도록 하는 과정을

간단히 이야기 합니다.

 

 

물론 이 내용을 더 복잡하게 다양한 단어로 표현하지만

아직은 어려운 단어들을 최대한 적게 쓰는 것이 좋으니

이해하기 쉬운 그대로 컴파일 업로드 정도로 생각하면됩니다.

 

프로그램을 제작하게 될 때 좀 전에 이야기한 요리에서 가열하는 것과

컴파일은 동일하다고 생각하면 되고 업로드 하는 것은 만들어진 프로그램 파일을

PC에서 회로 기판으로 옮겨담는 과정이라고 생각하면 쉽습니다.

마침 큰 냄비에서 끓인 라면을 실제로 먹는 그릇으로 옮겨 담는다고 표현하면 좋겠네요.


 

아두이노를 열게되면, 상당에 탭 중에 스케치를 눌러서 들어가면 확인/컴파일업로드

내용이 있습니다.

그리고 단축키도 있는데요.


 

상단 탭 바로 아래 둥근모양이 그림에 보이죠. 체크동그라미가 확인/컴파일이고 우측화살표 모양이 업로드입니다.

 

 

 

 

 

 

하나씩 순서대로 눌러 볼까요?

다음과 같은 과정이 진행 후 최종적으로 컴파일 완료라고 뜨게 됩니다.

 



 

 

다음이 업로드를 누르면 프로그램이 다운로드 되는데요.

업로드를 누르면 컴파일이 되고 난 후 아두이노에 프로그램을 업로드 합니다.

 

그런데 그냥은 안되고 오류가 뜨게 됩니다.

다음과 같이 보드에 로딩중에 문제 발생 이라고 뜨게 되죠.


 

동작이 안되고 에러가 뜬다고 당황하시면 안됩니다.

 

컴파일 후에 컴파일 완료는 되었는데 프로그램이 안되는 이유는

다음과 같이 발생될 수 있습니다.

 

 

 

사용되는 보드가 맞는지 확인을 해봐야 됩니다.

 

=> 보드 => Arduino/Genuino Uno 로 선택해서

자신이 현재 사용되는 보드를 선택했는지

 

다른 한 가지는

 

PC에서 프로그램 후 아두이노로 프로그램을 연결해야하는데..

겉으로 보기에는 USB 단자로 연결했는데..

속으로 연결 안된 경우가 많습니다.

속이 연결 안되었다는 것은 PC의 흔히 이야기하는 포트가 잘못 연결되었다고

생각하면 되는데요.

우리가 누군가에게 전화걸 때 잘못 전화된 것과 동일하다가 생각하시면

간단합니다.

아두이노라는 회로를 USB로 연결했는데 다른 번호를 선택했다면 수정하면 되겠죠.

 

상단의 툴 탭을 누르고 아래 중간쯤 보다 조금 밑에 포트:”라는 탭이 있죠.

거기서 자기가 실제 연결되고 있는 포트에 연결을 해줍니다.

제꺼는 COM4(Arduino/Genuino Uno) 가 새로 생성되어 있는데요.

그것으로 연결을 합니다.

 

 

==========================================

혹시 포트가 잡히지 않는 분은 여기 부분을 참고해주세요.

 

PC를 우측마우스로 클릭 하면 아래와 같이 속성이 나오면 클릭

시스템 화면에 들어가면 좌측의 장치 관리자 클릭

장치관리자에서 펼처진 화면이 나올 수 있으나 우선 다음과 같이 보여드립니다.

 


 

 

장치관리자에서 포트(COM & LPT) 부분으로 내려가서 확인해 봅니다.

USB를 꼽았을 때와 빼졌을 때 Arduino Uno로 인식되어 옆에 COM4가 몇 번으로

  인식되는지 바로 확인 가능할 겁니다.

 


대게의 경우 포트의 번호가 USB와 연결 될 때와 몇 번이 된다 라고 확인이 가능하지만

여기서 인식은 되지만 알 수 없는 장치로 뜨거나 문제가 발생할 경우

USB 드라이버를 다시 설치해야합니다.

다시 말해 아두이노를 설치할 때 USB를 인식하는 장치를 잘못 설치 했을 수 있기 때문에

귀찮더라도 그냥 아두이노를 다시 설치하시는게 좋을 것 같습니다.

 

================================================================

 

별문제 없을 경우 COM포트가 잡히게 되는데 컴퓨터 마다 조금 다르게 인식될 수 있으므로

아두이노를 연결 시 몇 번으로 연결되는지 확인하고 연결하시면 됩니다.

 

제대로 연결된 상태에서 우측화살표 모양인 업로드 모양을 다시 클릭해보면

아래와 같이 업로드 완료와 “avrdude done. Thank you.”라는 메시지가

 상태 창에 나타납니다.

 


 

업로드가 원활하게 진행되었다면 이제 프로그램까지 보드로

옮길 수 있는 상태에 이르렀습니다.

 

 

그럼 가장 간단한 프로그램 입문하기 전에 지금까지 무언가 쓰여져 있는 내용을

그대로 컴파일이란 작업으로 눌려서 다운했는데 무엇인지 내용을 확인해보죠





 

void setup()하고 {}괄호를 치고 또 밑엔는

void loop()하고 괄로 하고 이렇게 되어 있었습니다.

 

void setup()이라는 부분은 { } 그 괄로 안에 실제 사용할 부분을 미리 알려둔다 라고 생각하면됩니다.

우리는 이것을 선언한다고 이야기하는데요.

우리가 실제 프로그램에서 사용할 내용을 설정하는 구문 이렇게 정도 이해하면 좋을 것 같습니다. 미리 설정해 놔야 컴퓨터도 아 내가 나중에 무얼 사용할 꺼니까 준비해야지 하고

준비단계를 만드는 겁니다.

 

void loop()라는 부분 안의 내용은

이제 입력이나 출력부분을 프로그램하는 부분이라고 이해하면 쉽니다.

그런데 한번만 동작되고 끝 나는게 아니라

기계는 계속적 반복을 하니까 지속적으로 동작 되도록

한다고 생각하시면 쉬울 겁니다.

 


 

이제 간단한 이해를 돕기 위해 LED를 한번 깜박여 보겠습니다.

 

LED를 깜박이는 예제 중에 이미작성된 내용이 있으니 한번 가져와 보죠

상단탭에서 파일 => 예제 => 01.Basics => Blink를 클릭해보시죠

 





 

아래와 같은 내용으로 예제가 출력될 겁니다.





그런데 아까부터 먼지는 몰라도

// 이런내용과

/* */내용이 보였습니다.

두 개의 명령어는 주석으로 이야기합니다.

한마디로 말해서 프로그램 작성시 내용을

작성자만 표시되고 컴퓨터에게는 작성된 내용을 보이지 않도록 하는 것입니다.

 

왜냐구요. 프로그램의 내용이 길어지면 이해하기 힘든부분도 많이 있기 때문에

가운데 주석이라는 것을 달아서 지금부분은 어떻게 처리됨 하고 표식을

남기는 것이지요.

 

또 한가지는 이제 프로그램을 작성하다가 부분적으로

지우고 테스트 해야겠는데 나중에 또 써야 할때도 있게 되죠.

그런 것을 임시로 보이지 않게 가리는 부분이라고 생각하시면 됩니다.

 

그런데 2개의 범위가 서로 다르다는 점

// 내용작성 : 한 줄 내용을 숨기고 싶을 때

/* 내용작성 */ : 줄과 관계 없이 가려져야 되는 시작과 끝을 표시할때




 

 

 

 

 

 

그러면 실제 작성할 내용의 프로그램을 이해해 봅시다

 

void setup() {

// initialize digital pin 13 as an output.

pinMode(13, OUTPUT);

}

 

// the loop function runs over and over again forever

void loop() {

digitalWrite(13, HIGH); // turn the LED on (HIGH is the voltage level)

delay(1000); // wait for a second

digitalWrite(13, LOW); // turn the LED off by making the voltage LOW

delay(1000); // wait for a second

}

 

있는 내용을 그대로 이해해 보면,

 

void setup 에 있는 내용은 사용하게될 핀의 단자가 몇 번인지 선언을 해주는 겁니다.

pinMode(13, OUTPUT); 이렇게 내용이 쓰이게 될 때

pinModevoid setup에 넣어 줌으로써 나중에 사용하는 LED가 몇 번에

사용 될 꺼니까 미리 넣어 주는 명령어를 하나 배운다고 생각하시면 됩니다.

 

향후에 배워야하는 명령어가 여러 가지 있으니 오늘은 명령어를 5개 이하로 배우도록 할께요

pinMode(13, OUTPUT);

digitalWrite(13, HIGH);

delay(1000);

이것까지 3개만 이해 하십시오

 

 

+ Recent posts