아두이노를 파워뱅크와 컴퓨터에 연결용. 아두이노 나노와 번들로 구매 가능. 미니 USB는 USB-C라고도 함
GY-521 MPU-6050 3축 자이로스코프 + 가속도계 모듈
×1
약 $1/개 (2018년 중국 구매 기준)
MPR121 터치 센서 보드
×2
스파크펀에서는 단종. 중국산 저가 복제품 약 $2/개 (2018년 기준)
nRF24L01+ 무선 트랜시버
×2
이베이 등에서 3, 5, 10개 단위 판매. 약 $1/개. 10개 중 1개는 불량일 수 있으니 5개 이상 구매 권장. 작동하면 더 많이 필요해짐
커패시터 10µF
×2
커패시터 100nF
×2
40핀 암 헤더
×5
약 $1/10개 (2018년 중국 구매 기준)
수 헤더 40핀 1열 (2.54mm)
×2
케이블 (리본 케이블처럼 여러 색상 권장)
×2
필요 길이는 터치 전극을 센서 보드에서 얼마나 떨어뜨릴지에 따라 다름. 전극당 약 15cm 추정 시 24개 전극에 이미 3.5m 이상 필요. 밀라노 디자인 페어용 3개 컨트롤러 제작에 약 70m 사용. 나머지 배선용 약 3m. 최소 7-10m 권장. 10선 리본 케이블 1m면 충분
LED (일반)
×3
파란색 5mm 표준 LED 3개 필요. 다른 색상도 가능. (표준 LED 매칭 저항: 녹색 220옴, 파란색 120옴, 흰색 56옴. 여기서는 전류 제한용 150옴 사용)
10k 포텐셔미터
×5
150옴 저항 (1/4와트)
×3
LED 전류 제한용
220옴 저항
×3
선택 사항. 파워뱅크가 저전력 소모로 기기 미연결로 판단해 자동 꺼짐 방지용. 아두이노 5V-GND 사이에 병렬로 납땜하여 전력 소모 증가
퍼프 보드 (최소 50홀)
×1
최장 변 50홀 이상 필요. 컨트롤러용 최소 9×50홀, 수신기용 31×8홀. 편의를 위해 수 헤더 부착용 소형 보드 2×24, 2×17홀 2개 추가. 한 줄씩 잘려나간다고 가정 시 최소 50×24홀 필요
소형 박스/식품 용기 등
×1
마스터 장치 부품 수납용. 드릴/절단 용이 재질. 금속 박스는 무선 트랜시버 통신 방해 가능성 있음
파워뱅크
×1
휴대용 컨트롤러의 일부가 되므로 소형 권장
생활용품 빈 박스 등
×1
창의적 부분: 밀라노 디자인 페어에서는 수도관을 컨트롤러 하우징으로 사용. 본 튜토리얼에서는 랩/비닐봉지 박스 사용. 여러분은 무엇을 쓰시겠습니까?
납땜용 땜납
×1
구리 테이프
터치 전극 제작용. 다른 전도체도 가능하지만 납땜 잘 되는 구리 권장. 랩 박스 인클로저 사용 시 1cm 폭 구리 테이프 약 4m 미만 필요
접착제
×1
순간접착제
×1
선택 사항. 단일 열 암 헤더를 붙여 이중 열로 만들 때 사용. 일반 접착제나 글루건도 가능
고무줄
×1
필요한 도구 및 기계
납땜 인두 (납땜 스테이션이 더 좋지만 일반 인두도 가능)
드라이버 + M7 드릴 비트
커터 칼
소형 톱
스틸 자
와이어 스트리퍼
소형 펜치
글루건
클램프 (박스 접착 시 유용)
앱 및 온라인 서비스
Arduino IDE
Pure Data Vanilla
프로젝트 개요
새로운 종류의 악기
크라복스는 룬드 대학교(스웨덴) 연구 프로젝트의 일환으로 만들어졌으며, 디지털 악기 컨트롤러에 기존 기계식 악기의 느낌을 주기 위한 목적을 가집니다.
이제 크라복스를 누구나 접근 가능하게 하여 음악 실험 플랫폼으로 활용하고자, 이 상세한 튜토리얼을 통해 최대한 많은 사람들이 이 흥미로운 신악기를 사용할 수 있도록 했습니다.
크라복스 연주 방법
크라복스 연주는 매우 직관적입니다. 빗자루 같은 평범한 물체를 가지고 놀며, 그것을 만지고 공간에서 움직이는 방식이 소리 생성을 제어한다고 상상해 보세요. 비디오에서 크라복스 연주법과 소리를 확인하세요.
크라복스란?
크라복스는 크로스 플랫폼 호환 오픈 소스 디지털 악기로, 컨트롤러, 수신기, 소프트웨어 세 구성 요소로 이루어집니다.
컨트롤러
최대 3개의 무선 컨트롤러 연결 가능. 각 컨트롤러는 MPU-6050 디지털 자이로스코프의 방향/가속도 데이터와 두 개의 MPR121 터치 센서 보드의 터치 데이터를 아두이노 나노에서 처리합니다. 컨트롤러는 nRF24L01 무선 트랜시버를 통해 수신기로 데이터를 전송합니다.
둘 이상의 컨트롤러 사용 시 두 번째, 세 번째 컨트롤러에 개별 주소를 할당해야 합니다. 컨트롤러 코드의 DECLARATIONS/NRF24L01 섹션 참조.
수신기
수신기는 컨트롤러들로부터 받은 데이터와 여러 포텐셔미터 데이터를 USB로 연결된 컴퓨터에 전달합니다. 제공된 수신기 코드는 최대 3개 컨트롤러와 통신 가능하며, 1-2개만 사용 시 조정 없이 작동합니다.
소프트웨어
수신기 데이터는 Pure Data Vanilla로 작성된 프로그램에서 처리되어 소리를 출력합니다.
이 튜토리얼에서 만들 것 – 단계별 가이드
크라복스의 아름다움은 형태, 소리, 연주법을 조정할 수 있다는 점입니다. 이 튜토리얼에서는 쉽게 복제 가능한 크라복스 버전을 설계했습니다. (궁금하신 분: 제 유튜브 채널에 더 큰 버전 제작 타임랩스도 있습니다.)
위 비디오와 이 튜토리얼은 쉽게 구할 수 있는 전기 부품과 골판지로 완전히 작동하는 컨트롤러와 수신기를 만드는 모든 단계를 보여줍니다.
파트 1 – 부품 및 도구 준비
크라복스 컨트롤러 + 수신기 스테이션 제작에 필요한 부품:
{1개} 50×24홀(최소) 퍼프보드, {5개} 40핀 암 헤더, {5개} 40핀 수 헤더, {5개} 10kΩ 포텐셔미터와 노브, {3개} 파란색 5mm 표준 LED, {3개} 150옴 저항, {2개} 10µF 커패시터, {2개} 100nF 커패시터, {2개} NRF24L01 무선 트랜시버, {2개} 아두이노 나노, {3개} 220옴 저항, {2개} MPR121 터치 센서 보드, {1개} GY-521 MPU-6050 디지털 자이로스코프, {2개} USB-A - USB-C 케이블, {1개} 4m 이상 1cm 폭 구리 테이프, {1개} 파워뱅크, {2개} 7m 이상 다양한 색상 와이어, 선택 사항 {1개} 0.2m Ø3mm 수축튜브.
조립용 도구:
나중에 인클로저용 빈 골판지 박스 등도 필요:
접착제, 글루건, 테이프, 클램프, 고무줄로 인클로저 제작:
파트 2 – 컨트롤러 보드 제작
위 부품으로 컨트롤러 전자회로를 단계별로 제작합니다.
케이블 납땜 위치가 헷갈리면 아래 회로도를 참조하여 아두이노와 센서 보드 장착 시 올바르게 연결되는지 확인하세요.
2.1 퍼프보드와 암 헤더 자르기 및 조립
퍼프보드와 암 헤더를 크기에 맞게 자르고, 무선 트랜시버 신뢰성 향상을 위한 대용량/소용량 커패시터와 함께 조립합니다.
커터 칼로 퍼프보드 자르기:
핵쏘로 암 헤더 자르기 (책 위에 올려 수평 유지):
부품 납땜. 나란히 앉은 두 긴 암 헤더의 각 핀 쌍은 이미 연결 가능. 나머지 헤더는 단순히 약간의 납땜으로 고정 – 회로도에 따라 나중에 연결되지 않을 핀에 하는 것이 좋음. 커패시터 납땜 시 10µF 전해 커패시터(큰 것) 극성 주의: 줄무늬 있고 보통 다리가 짧은 쪽이 그라운드 연결. 100nF 커패시터는 무극성이라 아무 방향이나 가능.
결과는 다음과 비슷해야 함:
2.2 LED와 전류 제한 저항 납땜
LED 극성 주의: 한쪽이 평평하고 보통 다리가 짧음. 그쪽이 그라운드 연결(2.3단계). 다른 쪽을 시안색 케이블로 아두이노 핀 D3가 꽂힐 잭에 연결:
2.3 전원 공급 케이블 추가
빨간색(3.3V)과 파란색(GND) 전원 케이블 모두 추가:
결과:
2.4 I2C 통신 케이블 추가
세 센서 보드는 I2C 프로토콜로 통신하므로 같은 두 아두이노 핀에 연결 가능. 노란색/녹색 케이블로 아두이노 A4, A5 핀과 연결. 자이로스코프 인터럽트 핀용 흰색 케이블도 추가:
완료 후 모습:
2.5 SPI 통신 케이블 추가 (무선 트랜시버)
무선 트랜시버는 SPI 프로토콜 사용으로 더 많은 연결 필요. 검은색, 회색, 갈색, 보라색, 주황색 케이블 추가:
결과:
2.6 부품 준비
수 헤더 납땜(미리 납땜 안 된 경우) 외에 터치 센서 보드 특별 주의! 중국산 저가 모델은 어드레스 핀이 풀다운 저항 없이 그라운드에 하드와이어링되어 있음. 커터 칼로 보드 바닥의 ADD 표시 옆 두 솔더 패드 사이를 물리적으로 잘라야 함. 멀티미터로 패드 간 연결이 없는지 확인 권장:
모든 부품에 핀 헤더 납땜 완료 및 터치 센서 보드 준비 후, 아두이노 나노, 자이로스코프, 두 터치 센서 보드, 무선 트랜시버를 컨트롤러 보드에 꽂습니다:
(어쩌면) 완성된 컨트롤러 보드:
2.7 코드 업로드 및 라이브러리 설치
배선 재확인 후 제공된 크라복스 컨트롤러 코드(첨부 파일 참조)를 아두이노 나노에 업로드. 먼저 자이로스코프, 터치 센서, 무선 트랜시버 라이브러리 설치 필요. 아두이노 라이브러리 처음이면 여기에서 설치법 확인.
MPU-6050 자이로스코프: "I2Cdev.h"와 "MPU6050_6Axis_MotionApps20.h" (Jeff Rowberg) - 다운로드
MPR121 터치 센서: "MPR121.h" (Bare Conductive) - 여기. 최소 두 버전 존재. Bare Conductive 버전 설치 필수 (Adafruit 버전 아님)
NRF24L01 무선 트랜시버: "nRF24L01.h"와 "RF24.h" (TMRh20) - 다운로드. 동일한 이름의 다른 버전 존재. TMRh20 버전 설치 필수 (maniacbug 버전 아님)
라이브러리 설치 후 크라복스 컨트롤러 코드 업로드. 컨트롤러 작동 확인하려면 터치 센서와 자이로스코프 데이터를 시리얼 모니터로 출력하게 설정. 수신기 코드 마지막 섹션의 주석 해제:
시작( /*) 과 끝( */ )의 주석 표시를 삭제하여:
이 상태로 업로드 후 시리얼 모니터 열고 보드레이트 115200 설정. 컨트롤러 보드를 움직이고 MPR121 보드의 0-11 레이블 핀을 만지면 센서 데이터가 변하는 것을 볼 수 있습니다.
작동 안 하거나 0만 나오면 배선 꼼꼼히 확인하고 위 회로도와 비교. 이상한 출력 나오면 보드레이트 확인.
2.8 파워뱅크 연결
보드(정확히는 파워뱅크)가 일정 시간 후 자동으로 꺼지지 않으면 컨트롤러 보드 완성. 파트 3으로 진행! 그렇지 않으면 2.9단계 수행.
2.9 파워뱅크 자동 꺼짐 방지 (더티 픽스)
컨트롤러 보드 전력 소모가 너무 적어 일부 파워뱅크는 몇 초 후 자동 꺼짐. 220옴 저항 3개를 아두이노 5V-GND 핀 사이에 병렬로 납땜하면 추가 전력 소모로 열 발생, 파워뱅크가 켜진 상태 유지. 작은 파워뱅크라도 며칠간 논스톱 작동 가능.
아두이노 나노 분리 후 저항 납땜:
보드 모습:
부품 재장착 후 (확실히) 완성된 컨트롤러 보드:
파트 3 – 수신기 보드 제작
수신기 보드 제작 과정은 컨트롤러 보드와 매우 유사합니다.
케이블 연결 위치 확인용 회로도:
3.1 퍼프보드와 암 헤더 자르기 및 조립
컨트롤러와 동일하게 퍼프보드와 암 헤더를 자르고 커패시터와 조립. 가장 아래 암 헤더는 의도적으로 더 길게 남겨 향후 아두이노 그레뉼러 신스 등 다른 프로젝트 활용 가능. 자세한 내용은 2.1단계 참조.
3.1단계 완료 후 보드 사진:
3.2 전원 공급 케이블 추가
결과:
3.3 SPI 통신 케이블 납땜
3.4 부품 장착
수신기 보드 완성. 하지만 크라복스 수신기 코드(첨부 파일)를 아두이노 나노에 업로드하기 전 수신기 인터페이스 제작 필요.
파트 4 – 수신기 인터페이스 제작
4개 포텐셔미터와 LED로 구성된 수신기 인터페이스 제작. 배선은 다음과 같음:
수신기 보드에 꽂히는 형태:
진행 순서: 8선 케이블 스트랜드를 가져와 5개를 포텐셔미터 중간 핀에 납땜. 같은 색상 사용 권장:
2×17홀 퍼프보드와 17핀 수 헤더를 크기에 맞게 자름:
케이블과 핀 헤더를 보드에 부착. 회로도 참조하여 올바른 위치에 연결:
모든 포텐셔미터 한쪽에 파란색 그라운드 케이블 연결 (저보다 약간 긴 케이블 권장). 파란색 LED와 150옴 전류 제한 저항도 추가. LED 극성 주의 (2.2단계 참조):
모든 포텐셔미터 다른 쪽에 녹색 5V 케이블 연결 (약간 긴 케이블 권장):
완성된 인터페이스:
수신기 보드에 장착:
이제 크라복스 수신기 코드를 수신기 아두이노 나노에 업로드 가능.
수신기가 컨트롤러로부터 데이터 수신하는지 확인하려면 업로드 전 코드 약간 수정. 기본적으로 수신기는 퓨어 데이터가 해석 가능한 형식으로 데이터 출력하지만 시리얼 모니터엔 유용한 정보 안 보임. 코드에서 다음 줄을 주석 처리(// 추가):
#define WRITE_AS_BYTES
다음 줄의 주석 해제(// 제거):
// #define PRINT_VIA_SERIAL_MONITOR
이렇게 변경:
→ 이렇게:
수정된 코드 업로드 후 시리얼 모니터에서 컨트롤러 데이터와 4개 포텐셔미터 값 확인 가능 (비디오 참조).
파트 5 – 컨트롤러 인터페이스 & 인클로저 제작
수신기와 마찬가지로 컨트롤러도 인터페이스 필요 – 구리 테이프로 만든 터치 인터페이스:
컨트롤러 보드에 연결:
터치 인터페이스를 컨트롤러 인클로저에 직접 부착하므로, 인클로저용 비전도성 재료를 미리 준비하세요. 저는 랩/비닐봉지 박스를 사용했습니다:
터치 전극 부착 위치 표시. 서로 닿거나 겹치지 않게 주의:
24개 구리 전극 크기에 맞게 자르기:
인클로저에 부착:
플러그 제작: 2×24홀 퍼프보드와 24핀 수 헤더를 크기에 맞게 자르고 24개 케이블 납땜. 중간 케이블 최소 10cm. 바깥쪽으로 갈수록 전극 폭 + 간격만큼 케이블 길이 증가. 예: 1cm 폭 구리 테이프에 3mm 간격이면 1.3cm씩 증가 (10 / 11.3 / 12.6 / 13.9 / 15.2...):
케이블 다른 끝을 전극에 납땜:
구리 표면을 비전도성 테이프로 덮어 마무리:
인터페이스를 박스 형태로 접어 접착:
더 작은 박스를 만들어 파워뱅크 수납용으로 붙이기:
컨트롤러 보드 뒷면을 남은 골판지나 약간 두꺼운 비전도성 재료로 덮기:
LED 구멍 뚫고 LED와 파워뱅크(사진의 노란 물체) 고정. 파워뱅크는 USB 케이블 꽂고 뺄 수 있는 위치에 배치 (이게 컨트롤러 전원 온/오프). 터치 인터페이스를 컨트롤러 보드에 연결하고 박스에 넣기. 거의 움직이지 않으니 접착 불필요.
두 박스 연결 부위에 USB-A-USB-C 케이블 구멍 뚫고 통과시켜 아두이노 나노에 연결:
컨트롤러 완성!
고무줄로 닫기. 나중에 센서가 터치 없는데 터치 인식하면 터치 감지 인클로저와 보드/케이블 사이에 랩 등 비전도성 재료 끼워보세요. 파워뱅크 연결 시 터치 감지 부분이 손이나 다른 것에 닿지 않게 주의. 파트 7 참고.
파트 6 – 수신기 인클로저 제작
수신기용 인클로저도 제작. 다른 골판지 박스(저는 블루투스 트랜시버 들어있던 박스 사용 – 적절하죠?)와 포텐셔미터 노브 필요:
퓨어 데이터 설치 후 실행, 첨부 파일의 Kravox.pd 파일 열기. 드럼샘플 폴더와 같은 위치에 저장해야 퓨어 데이터가 샘플을 찾을 수 있습니다.
Kravox.pd 인터페이스 열리면 파란색 정보 박스에서 나열된 4개 익스터널 설치: 도움말 → "인터넷에서 추가 객체 찾기" (표현 다를 수 있음) → "comport", "zexy", "freeverb", "arraysize" 순차 검색 후 최신 버전 설치. 아래 그림처럼 comport, repack, freeverb, arraysize 네 객체가 실선 테두리로 보여야 함. 퓨어 데이터 재시작 필요할 수 있음.
필요한 익스터널 설치 후 수신기 박스 USB 연결. 파트 4에서 시리얼 모니터용으로 코드 수정했다면 원본 코드로 되돌려 수신기 아두이노 나노에 업로드하고 아두이노 시리얼 모니터 닫기 (수신기가 시리얼 모니터와 통신하려 하지 않게).
퓨어 데이터 로그/정보 창 확인. 빠르게 업데이트되는 데이터 스트림 보이면 성공 (퓨어 데이터가 수신기 찾음). 대부분 아래 같은 빨간 메시지가 주기적으로 나타남:
빨간 메시지는 다를 수 있지만 결과 동일: 퓨어 데이터가 아직 수신기 연결 못 함. 어떤 USB 포트 듣는지 알려줘야 함. USB 포트는 좀 복잡: 2014 맥북 프로에서 퓨어 데이터는 두 USB 포트 모두 시리얼 포트 3으로 인식. 밀라노에서는 레노버 요가 패드(작동하는 USB 포트 1개만) 사용 시 시리얼 포트 6으로 연결 필요. 최근 다른 윈도우 노트북(USB 포트 2개)에서는 시리얼 포트 8, 9로 주소 지정 필요. 제 조언: 본인 USB 포트에서 작동하는 번호 직접 찾아보기. Kravox.pd 인터페이스에 간단한 다이얼로그 만들어 숫자 클릭하며 테스트 가능. "사용 가능한 포트 표시", "연결된 USB 장치 표시" 버튼도 시도해보기 – 가끔 유용한 정보 제공. 하지만 응답까지 시간 걸림.
올바른 포트 번호 찾고 연결 수립되면 정보 창에 빠르게 업데이트되는 데이터 스트림 표시:
잘 되었습니다! 저장 클릭하면 다음 실행 시 자동으로 이 포트 연결 시도.
아직 컨트롤러 켜야 함. 2.7단계에서 컨트롤러 코드 주석 해제해 시리얼 모니터 연결했다면 이제 원본 버전 다시 업로드.
컨트롤러 보드를 파워뱅크에 연결. 이때 터치 인터페이스 인클로저가 닫혀 있고 터치 감지 부분이 손이나 다른 것에 닿지 않아야 함. 터치 센서는 전원 켜질 때 환경을 감지하여 그걸 '터치 안 된 상태'로 기준 삼음.
축하합니다 – 완료했습니다!
크라복스 연주 많이 즐기세요!
코드
아두이노 및 퓨어 데이터용 크라복스 코드
아래 링크에서 크라복스 컨트롤러와 수신기용 아두이노 코드, 퓨어 데이터용 Kravox.pd 파일, 악기용 드럼 샘플이 포함된 Zip 파일 다운로드 가능. 파일 사용법은 튜토리얼 참조.