프로젝트

나도 메이커! 메이커스 여러분들의 작품/프로젝트를 공유하는 공간입니다.

난 이제 터치로 한다! DIY 메이키 메이키 만들기

2017-03-29 09:28:44

안녕하세요! Klant입니다.

긴 겨울이 지나고 어느덧 봄이 성큼 다가왔습니다!

여러분은 따뜻한 봄 맞이 잘 하고 계신가요?

 

정말 오래간만에 포스팅인 것 같습니다.

이번에 소개해드릴 컨텐츠는 바로 'DIY 메이키 메이키 만들기'입니다. 

자 그럼 메이키 메이키를 만들어 보기 전에 간단히 프로젝트에 대한 개요를 살펴보도록 하겠습니다!

 

 

 

 

개요

 

 

여러분은 '메이키 메이키'라는 보드를 아시나요?

아직 잘 모르시겠다구요?

아시는 분들도 있겠지만, 아직 잘 모르시는 분들을 위해 간략히 메이키 메이키 보드에 대해 살펴보도록 하겠습니다.

 

<메이키 메이키 / 출처 : Global Educator Institude>

 

 

 

 

위 영상과 같이 메이키 메이키는 전류가 통하는 물체를 연결하여, 연결한 물체를 입력 장치처럼 사용할 수 있는 컨트롤러 보드입니다.

그렇다면 어떻게 주변 사물을를 입력 장치처럼 사용할 수 있는 것일까요?

 

위에서도 언급했지만 메이키 메이키를 통해 인식을 할 수 있는 물체는 '전도체'여야 합니다.

왜냐하면 메이키 메이키는 연결한 물체를 통해 들어오는 전류량 변화를 측정하여, 외부 입력을 인식 받기 때문입니다.

 

그렇다면 어떻게 전류량 변화를 측정할 수 있을까요?

해답은 바로 아래 사진에 있습니다.

 

<메이키 메이키 / 출처 : Global Educator Institude>

 

 

사진을 보면 전선 하나는 바나나에 또 다른 전선 하나는 손에 연결된 것을 확인할 수 있습니다.

전도 물체를 입력 장치로 사용하기 위해서는 인체에 '접지'를 해줘야 합니다. 

 

즉 GND(-) 부분을 인체에 접촉해준 상태에서 메이키 메이키에 연결한 문체를 만져야 메이키 메이키 쪽에서 입력 신호를 받을 수 있다는 이야기입니다. 

인체에 접지가 된 상태에서 물체를 만지게 되면, 전류가 통하기 때문에 메이키 메이키 입장에서는 물체를 만졌다라고 인식하는 원리입니다.

 

어느 사물과도 연결하여 사용자가 직접 입력 장치를 구성하는 이 재미난 아이디어를 활용하여, 아두이노, 정전식 터치 모듈, 전도성 펜을 이용해

사용가 직접 입력 장치를 그려서 구성할 수 있는 'DIY 메이키 메이키'를 만들어 보도록 하겠습니다.

 

 

 

 

 

 

 

 

 

부품 목록

 

DIY 메이키 메이키 제작을 위해서 필요한 부품 목록입니다.

 

NO 부품명 수량 상세 설명
1 아두이노 Pro Micro 1 ATmega32U4
2 12-Key 터치 센서 모듈 1 MPR121
3 전도성펜 1 드로잉 사이언스
4 실리콘 고정핀 12set  
5 Female To Female 점퍼 케이블 4  
6 O형 케이블 12  

 

부품명 아두이노 Pro Micro 12 Key 터치 센서 모듈 전도성펜 실리콘 고정핀 FF 점퍼케이브 O형 케이블
부품 사진  

 

 

부품 목록 중 눈에 띄는 것이 있죠? 

바로 12 Key 터치 센서 모듈입니다.

 

12Key 터치 센서 모듈은 Adafruit에서 제작한 모듈을 사용했으며, 터치 센서에 들어가는 정전 인식 chip의 MPR121입니다.

그냥 모듈의 이름을 MPR 121로 부르도록 할게요!^^

 

MPR 121의 사용법과 자세한 내용은 코코아팹에 있는 튜토리얼을 참고해주세요!

 

- 정전식 터치 모듈(MPR121) 사용하기

 

 

 

 

 

 

 

 

하드웨어 연결

 

DIY 메이키 메이키를 만들기 위한 하드웨어 연결은 아래와 같습니다.

오잉? 왜 오렌지보드가 아니냐구요!

 

메이키 메이키의 경우 정전식 감지를 통해 PC의 키보드를 제어할 수 있습니다. 

물론 아두이노를 활용하여도 PC 키보드 제어를 구현할 수 있습니다만 모든 아두이노 보드를 이용해 구현할 수 있는 것은 아닙니다. 

 

PC 키보드 혹은 마우스 장치를 HID(Human Input Device)라고 하는데요.

HID를 제어하기 위해서는 atmel 32u4를 탑재한 보드 혹은 Arduino Due, Zero가 가능합니다.

 

그렇기 때문에 이번 프로젝트에서는 atmel 32u4가 탑재된 Pro Micro 보드를 사용하는 것이죠!

 

 

브레드 보드 레이아웃

 

*브레드보드 레이아웃에서는 오렌지보드로 되어있지만, 사용하실 보드에 맞게 핀 연결을 바꿔주시면 됩니다.

 I2C 통신의 모듈이기 때문에 보드의 I2C 핀에 맞게 연결해주시면 되겠죠?

 

 

 

 

 

 

회로도(스키메틱)

 

 

 

 

 

 

 

 

부품 연결

 

처음에는 MPR121 모듈을 브레드보드에 꽂아서 브레드보드를 통해 점퍼케이블을 연결해보았지만, 인식률이 좋지 않은 것을 확인하였습니다. 

MPR121 사용 시에는 점퍼케이블을 직접 모듈에 납땜하여 사용하시는 것을 추천드립니다!

 

* 납땜을 할 때는 첫 째도 안전! 둘 째도 안전에 유의하세요!

 

<모듈 납땜 모습>

 

 

 

 

 

 

 

전도성펜을 이용해 도안 그리기 & 연결하기

 

정전 터치를 반응하는 모듈이니 전도성펜을 통해 마음대로 도안을 그려보고, 전도성펜을 이용해 그린 도안을 모듈과 연결해주면, 전도성펜으로 그린 그림을 터치해도 터치를 인식할 수 있겠죠?

저는 고양이 소리로 음계를 표현하는 피아노를 만들어 보고 싶어 아래 그림과 같이 도안을 디자인한 후 출력해 전도선펜으로 색칠을 해주었습니다! 

 

 

<전도성펜을 통해 그릴 도안>

 

 

 

 

아래 사진과 같이 O형 케이블과 실리콘 핀을 통해 도안과 결합해주면 완성!

 

 

<도안 연결 모습>

 

 

 

하드웨어가 완성되었으니 이제 터치를 통해 PC의 키보드가 조작될 수 있도록 코드를 짜봐야겠죠?

자 그럼 바로 한 번 알아볼까요?~ GO! GO!

 

 

 

 

 

 

 

소프트웨어 코딩

 

MPR121 예제에서 keyboard 제어에 대한 소스를 추가한 간단한 소스코드입니다!

 

/*********************************************************
This is a library for the MPR121 12-channel Capacitive touch sensor
 
Designed specifically to work with the MPR121 Breakout in the Adafruit shop 
  ----> https://www.adafruit.com/products/
 
These sensors use I2C communicate, at least 2 pins are required 
to interface
 
Adafruit invests time and resources providing this open source code, 
please support Adafruit and open-source hardware by purchasing 
products from Adafruit!
 
Written by Limor Fried/Ladyada for Adafruit Industries.  
BSD license, all text above must be included in any redistribution
**********************************************************/
 
/*********************************************************
제목 : DIY 메이키 메이키 만들기
작성자 : Klant(hyeon joong, Kwon)
이메일 : rnjsguswnd91@kocoa.or.kr
 
이 코드는 Adafruit에서 제공하는 MPR 121 예제를 바탕으로 작성한 코드입니다.
**********************************************************/
 
#include <Wire.h>
#include "Adafruit_MPR121.h"
#include <Keyboard.h>
 
char key[12= {'0','1','2','3','4','5','6','7','8','9','a','b'};
 
// You can have up to 4 on one i2c bus but one is enough for testing!
Adafruit_MPR121 cap = Adafruit_MPR121();
 
// Keeps track of the last pins touched
// so we know when buttons are 'released'
uint16_t lasttouched = 0;
uint16_t currtouched = 0;
 
void setup() {
  Serial.begin(9600);
  Keyboard.begin();
 
  while (!Serial) { // 마이크로 및 레오나르도 사용시 필요한 코드 부분입니다.
    delay(10);
  }
  
  Serial.println("Adafruit MPR121 Capacitive Touch sensor test"); 
  
// 해당 I2C 주소에 연결된 MPR121 모듈이 있는지 확인합니다. 
  if (!cap.begin(0x5A)) {
    Serial.println("MPR121 not found, check wiring?");
    while (1);
  }
  Serial.println("MPR121 found!");
}
 
void loop() {
  // 터치하였을 때의 값을 저장합니다
  currtouched = cap.touched();
  
  for (uint8_t i=0; i<12; i++) {
    // 각 채널에 대한 센서 값을 대비해 touch를 인식합니다.
    if ((currtouched & _BV(i)) && !(lasttouched & _BV(i)) ) {
      Serial.print(i); Serial.println(" touched");
      Keyboard.press(key[i]);
      
    }
    // 각 채널에 대한 센서 값을 대비해 release를 인식합니다.
    if (!(currtouched & _BV(i)) && (lasttouched & _BV(i)) ) {
      Serial.print(i); Serial.println(" released");
      Keyboard.release(key[i]);
    }
  }
 
 
  lasttouched = currtouched;
  return;
  
  Serial.print("\t\t\t\t\t\t\t\t\t\t\t\t\t 0x"); Serial.println(cap.touched(), HEX);
  Serial.print("Filt: ");
  for (uint8_t i=0; i<12; i++) {
    Serial.print(cap.filteredData(i)); Serial.print("\t");
  }
  Serial.println();
  Serial.print("Base: ");
  for (uint8_t i=0; i<12; i++) {
    Serial.print(cap.baselineData(i)); Serial.print("\t");
  }
  Serial.println();
}
cs

 

 

 

 

 

 

 

 

엔트리로 음악 재생하기

 

일종의 런치 패드가 완성되었습니다.

MiDi 쉴드 혹은 프로세싱을 사용해 음악을 재생하면 더할 나위 없겠지만, 일단 목표는 단순히 음악만 잘 재생되면 되는 것이기 때문에 엔트리를 활용해 구현해보았습니다. 

터치가 인식되면 키보드의 숫자가 눌리는 것이기 때문에 엔트리 코딩 시 블록 활성화 조건을 [           ]키가 눌렸을 때로 간편히 구현할 수 있습니다!

 

* 이미지를 클릭하시면 해당 소스 코드 주소로 이동하실 수 있습니다.

 

<엔트리 소스 코드>

 

 

 

 

 

 

 

동영상

 

귀여운 고양이 피아노가 완성되었습니다. 

전도성 펜을 이용해 내가 원하는 악기를 그려보고, 해당하는 음을 넣어 DIY 악기 혹은 밴드를 결성할 수도 있을 것 같습니다!

 

 

Klant

코코아팹, 오렌지보드, DIY 메이키 메이키, 전도성펜, 인스타서킷,kocoafab, orange board, makey makey