코코아팹은 누구나 창의적 아이디어를 현실로 만들어 낼 수 있도록
만들고, 공유하고, 배울 수 있는 터전이
되고자 합니다.
아이디와 비밀번호를 잊으셨나요?아이디 / 비밀번호 찾기
코코아팹 회원이 아니신가요? 회원가입
2017-02-06 10:20:16
안녕하세요! 코코아팹입니다.
이번 포스팅에서는 Adafruit 사에서 개발된 정전식 터치 모듈인 MPR 121 터치 모듈에 대해 알아보도록 하겠습니다.
모듈을 사용하기 전에 정전 방식(정전식 감응) 개념에 대해 살펴보도록 하겠습니다.
(출처 : 위키 백과)
전자공학에서 정전(靜電)식 감응(capacitive sensing) 기술은 정전용량 커플링 효과로 근접, 변위, 습도, 유량, 가속도 등에 의해 센서의 정전용량 값의 변화를 감지하는 장치를 의미한다.
방식 |
- 셀프 방식 :
센서 패턴 자체의 정전 용량 값과 손가락 등의 감지 대상에 의한 부하 정전 용량의 합으로 표현되는 정전 용량 값을 감지하는 것.
- 뮤추얼 방식 :
두 개의 센서 사이에 형성된 상호 정전 용량 값이 감지 대상에 의해 줄어드는 양을 감지하는 것.
앞으로 실습해 볼 MPR121 모듈의 경우도 위와 같이 정전 방식을 통해 외부 입력을 인식할 수 있는 모듈 중 하나입니다.
자 그럼 MPR121에 대해 살펴보도록 하겠습니다.
<Adafruit MPR121 12 Key Capacitive Touch Sensor Breakout Board / 출처 : Adafruit>
우리가 실습해 볼 Adafruit MPR121 12 Key Capacitive Touch Sensor Breakout Board 보드는 MPR121 chip이 내장된 모듈형 보드입니다.
MPR 121의 주요 특징 및 사양은 아래와 같습니다.
- Micro controller와 연결해 간편히 터치와 관련된 프로젝트를 제작하기 용이하다.
- MPR121 chip의 경우 최대 12개의 터치 패널을 통해 터치 인식이 가능하다.
- MPR121은 I2C를 지원하며, 4개의 I2C Adress 중 하나로 선택이 가능하다. 즉 총 48개의 터치 패널(모듈 4개)을 2개의 I2C 버스를 통해 사용할 수 있다.
- Analog Input을 통해 정전식 센싱을 하는 것보다 쉽고 정확하게 측정이 가능하다.
- MPR 121 chip의 경우 3V로 동작하나, 모듈 자체에 레귤레이터가 장착되어 있기 때문에 3~5V로 동작 가능하다.
중요한 사항만 되짚어보자면, '아두이노와 함께 사용하기 용이하며, 12개의 터치 인식이 가능하고 아두이노의 5V를 연결해서 사용하면 된다' 정도로 이해하시면 될 것 같습니다.
<Adafruit MPR121 12 Key Capacitive Touch Sensor Breakout Board / 출처 : Adafruit>
7개의 신호핀에는 소켓을 납땜하여 브레드보드 끼워서 사용할 수 있으며, 0번부터 11번 총 12개의 터치 패널에는 Wire를 납땜하여 사용하면 됩니다.
* 개인적으로 테스트해본결과 터치 패널에 소켓을 납땜 후 브레드보드 끼워 사용할 경우 터치 인식이 제대로 이뤄지지 않습니다.
<Adafruit MPR121 12 Key Capacitive Touch Sensor Breakout Board / 출처 : Adafruit>
위 모듈의 경우 가로 1.3인치(3.302cm), 세로 0.75인치(1.905cm)의 작은 크기를 가지고 있으며, 국내 전자 부품 쇼핑몰에서 구매할 수 있으며, 대략적으로 9000원 때에 구매하실 수 있습니다.
코코아팹 튜토리얼 중 터치 모듈을 사용하지 않고, 저항과 점퍼 와이어만으로 터치 센서를 구현하는 방법에 대해 설명되어 있는 튜토리얼입니다.
다만 모듈을 사용했을 때와 비교해 정확성은 다소 떨어지며, 터치 패널 개수에 제한이 있습니다.
- Capacitive Touch Sensor(정전 용량 터치 센서) 구현하기
MPR121 튜토리얼에 필요한 부품 목록들입니다.
NO | 부품명 | 수량 | 상세설명 |
1 | 오렌지보드 | 1 | 아두이노 UNO 호환 |
2 | MPR 121 | 1 | Breakout Board |
3 | 브레드보드 | 1 | half 사이즈 |
4 | 점퍼케이블 | 16개 이상 | Male To Male 타입 |
부품명 | 오렌지보드 | MPR121 | 브레드보드 | 점퍼케이블 |
부품 사진 |
오렌지보드와 연결하는 연결 방법입니다.
하단 그림을 참고해 그대로 오렌지보드와 연결을 진행해주시면 됩니다.
*점퍼 케이블의 색상은 무관합니다.
Vin | 3.3V or 5V |
3VO |
3.3V OUTPUT 모듈 레귤레이터를 통해 나오는 3.3V OUTPUT입니다. |
GND | GND |
SCL | I2C Clock 핀 / 아두이노의 경우 analog5(A5)에 연결 |
SDA | I2C Data 핀 / 아두이노의 경우 analog4(A4)에 연결 |
* ADDR : I2C Adress 핀, default Adress는 0x5A이며, 3VO, SDA, SCL에 연결하여 각 각 0x5B~D까지 연결할 수 있습니다.
아래 사진과 같이 모듈에 핀 소켓과 점퍼케이블 납땜을 진행해주시면 됩니다.
납땜 방법에 대해서는 아래 링크를 참고하시면 됩니다.
* 위 이미지를 클릭하시면 모듈에 핀소켓을 납땜하는 방법에 대한 링크로 이동합니다.
MPR121 모듈을 통해 터치 인식을 감지하기 위해서는 아래 라이브러리를 다운받아야합니다.
아래 링크를 통해 라이브러리를 다운로드할 수 있습니다.
*아직 어떻게 라이브러리를 추가하는지 모르시는 분들께서는 아래 링크를 통해 라이브러리 추가 방법에 대해 살펴보실 수 있습니다.
라이브러리 다운로드 및 등록이 완료되었다면, 예제를 통해 직접 터치 인식을 테스트해보도록 하겠습니다.
[파일] - [예제] - [Adafruit MPR121] - [MPR121test]를 클릭한 후 MPR121test를 오렌지보드에 연결해줍니다.
시리얼 모니터를 실행한 후 아래 그림과 같은 문구가 출력되면 오렌지보드 쪽에서 정상적으로 MPR121 모듈을 인식한 것 입니다.
해당 문구가 출력되지 않을 경우 오렌지보드와 MRP121 모듈의 연결을 다시 한 번 검토해보아야 합니다.
터치 패널과 납땜되어 있는 점퍼케이블을 터치하면 아래 화면과 같이 Touch / Release를 인식하는 것을 확인할 수 있습니다.
예제 소스 코드 중 아래 그림과 같이 return 코드 앞에 주석을 붙여주면 MPR121 모듈을 통해 인식되는 센서 값도 시리얼 모니터를 통해 확인할 수 있습니다.
*주석 처리한 후 소스 코드를 오렌지보드에 재 업로드 해줘야 합니다.
예제 실습을 해보았으니 라이브러리에서 사용되는 함수에 대한 레퍼런스를 간략히 살펴보도록 하겠습니다.
Adafruit_MPR121 cap = Adafruit_MPR121();
MPR121 모듈을 사용하기 위한 객체 선언 부분입니다. 이 소스 코드에서 선언한 MPR121 객체의 이름은 'cap'입니다.
cap.begin(0x5A);
오렌지보드와 통신 선언(I2C)을 해주는 부분입니다. begin 안에 들어가는 파라미터는 I2C Adress입니다.
if(cap.touched() & (1 << 인식할 터치 패널의 개수)){ do something }
터치를 인식했을 때 실행할 구문 문법(조건문)입니다.
cap.touched() 뒤 & (인식할 터치 패널의 개수)를 입력해주시면 됩니다. 만약 12개의 터치 패널을 모두 인식하고 싶다면 if문 안에 cap.touched() & (1 << 12) 라고 넣어주시면 되겠죠?
if(!cap.touched() & (1 << 인식할 터치 패널의 개수)){ do something }
터치를 인식하지 않았을 때 실행할 구문 문법(조건문)입니다.
파라미터는 위와 동일합니다.
filteredData(sensorNum);
baselineData(sensorNum);
위 함수를 통해 Raw 데이터를 추출할 수 있습니다.
setThreshholds(unit8_t touch, unit8_t release)
위 함수를 통해 Touch 와 release의 감도(대비)를 설정할 수 있습니다.
이상으로 MPR121 12 채널 터치 모듈에 대해서 간단히 살펴보았습니다.
이미 우리는 일상 생활에서 touch는 상당히 익숙하고 많이 사용하고 있는 인터렉션입니다.
그만큼 touch라는 행동이 가지고 있는 친숙함을 이용해 톡 톡 튀는 프로젝트를 해볼 수 있다고 생각합니다.
레오나르도에 연결하여 사용한다면 터치를 인식했을 때 키보드 제어를 통해 직접 makey makey 보드를 구현 해볼 수도 있을 것 같습니다.
감사합니다!
kocoafabeditor
항상 진취적이고, 새로운 것을 추구하는 코코아팹 에디터입니다!