중급 예제

약간은 익숙하시거나 익숙해지셨나요? 그렇다면 조금더 깊이 다뤄볼까요?

근육센서키트(Muscle sensor kit)

2014-09-30 14:09:21

개요 및 부품 목록


동영상 출처 : Myo - wearable Gestur Control from Thalmic Labs

 

 

위의 동영상을 보면서 어떤 생각이 나십니까? 공상영화 속 한장면 같나요? 아니면 몇년 혹은 몇십년 이 후에 이야기 같나요? 

 

위에 나온 저 제품은 myo 라고 하는 제품으로 현재 실제로 판매되고 있는 제품입니다.
 


사진 출처 : Myo 홈페이지

 

 

 


이 제품에는 근육 전기신호 인식, 6축 자이로 센서, 블루투스, 배터리 등이 들어가 있습니다.

여기서 사용되고 있는 근육의 전기 신호를 인식 하는 기술은 사람의 근육이 움직일 때 근육에서 일정한 패턴의 전기 신호가 나오는데 이 패턴을 읽어 제스처에 따른 동작을 할 수 있게 만드는 기술입니다.

이 기술을 사용하면 사람의 움직임에 따라 위의 동영상에 나온것과 같이 컴퓨터를 제어 하거나, 게임을 하거나, 장비를 조정 할 수 있습니다.
(밑의 아이언맨도 팔 부분에 근육센서를 부착하여 움직임으로 빛을 제어 합니다.)

 

사진 출처 : Bionic Iron Man Armor

이번 컨텐츠 에서는 근육 센서 키트를 이용해서 부착된 부위의 근육 전기 신호를 측정해 보겠습니다.

 

 

 

미리 보기 동영상

 

 

 

부품 목록

 

NO 부품명 수량 상세설명
1 오렌지 보드 1 아두이노
2 근육 센서 키트(Muscle sensor kit) 1 근육 센서
3 9V 전지 2 9V
4 점퍼케이블 5 점퍼케이블

 

부품명 오렌지 보드 근육 센서 키트 9V전지 점퍼케이블
파트  

 

하드웨어 Making 및 소프트웨어 Coding

회로도

 

 

브레브보드 레이아웃

 

 

 

 

근육 센서 연결

 




위 사진과 같이 9V 배터리 2개를 놔둔 후 맨 왼쪽 부터 -Vs, GND(2개를 전기가 통하는 선같은 것으로 연결 후 하나의 선으로 빼면 됩니다.), +Vs에 연결 하면 됩니다.
모듈에 외부 전원 연결시 무조건 위의 연결 방법 대로 연결하셔야 합니다. 잘못 연결하실 경우 과전압으로 인해 모듈이 손상될 수 있습니다.

소프트웨어 Coding

int value; // 근육센서의 값을 저장할 변수 선언

void setup()
{
  pinMode(A0, INPUT); // A0핀을 INPUT핀으로 설정합니다.
  Serial.begin(9600);
}

void loop()
{
  value = analogRead(A0);  // A0번 핀에서 값을 받아 value 에 저장합니다.
  Serial.println(value);  // value 값을 출력합니다.
  delay(1000);
}


근육센서를 SIG를 보드의 A0, GND를 보드의 GND와 연결 한 후에, A0에서 아날로그 값을 읽어 오는 소스입니다.
(아날로그 센서 값을 읽어오는 방법은 링크를 참고하시기 바랍니다.)

analogRead()를 사용하여 읽어온 값을 Serial.println()을 통해 시리얼 모니터에 출력하여 값을 확인 하면 됩니다.

위 동영상에서와 같이 근육 센서 값에 따른 LED 제어는 밑의 소스를 참고 하시면 됩니다.(LED는 7smd RGB LED를 사용했는데, 보통 LED를 사용하셔도 됩니다.)
(지금 기준으로 잡는 근육 센서값은 제가 측정했을 때 나오는 값을 기준으로 하였습니다. 혹시 값이 초과되거나 부족해 LED제어가 잘 안되시면 시리얼 모니터에 나오는 근육 센서의 값을 보고 if문 부분을 수정하시면 됩니다.)

 

int value; 

int red = 10;
int blue = 11;
int green = 9;
 
void setup()
{
  pinMode(A0, INPUT);
  pinMode(red, OUTPUT);
  pinMode(green, OUTPUT);
  pinMode(blue, OUTPUT);
  
  Serial.begin(9600);
}

void loop()
{
  value = analogRead(A0);
  
  Serial.println(value);
  
  if(value > 70){  // 근육 센서 값이 70이 넘었을 경우 LED의 불을 킵니다.
    analogWrite(red, 255);  
    analogWrite(blue, 255); 
    analogWrite(green, 255);
  }
  else{ // 아닐경우 LED를 끕니다.
    analogWrite(red, 0);  
    analogWrite(blue, 0); 
    analogWrite(green, 0);
  }

  delay(1000);
}

 

 

kocoafabeditor

항상 진취적이고, 새로운 것을 추구하는 코코아팹 에디터입니다!

근육 센서, 아두이노, 오렌지보드

김동민 2016-01-14 23:30:42

이런 고급 센서가 더 다양하게 나오면 정말 대단한 프로토타입들이 나올 것 같습니다.

코시갱 2017-09-01 15:42:47

센서를 통해 얻은 근전도 값을 실제 mV 단위로 그래프로 나타내는 방법이 있나요???

kocoafab 2019-01-29 18:15:20

제공하는 데이터시트를 찾아보았는데 정확하게 mV 단위로 나타낼 방법은 없는 것 같습니다.

아래 링크는 제품(다음 버전)에 대한 데이터 시트입니다.

https://www.pololu.com/file/download/AT-04-001.pdf?file_id=0J1068