코카콜라 키보드와 MOS

작성자
유승현
작성일
2020-12-01 03:17
조회
690

코카콜라 키보드와 MOS

코카콜라 키보드🎹 팀 (유승현, 채수권, 권정은)

코카콜라 키보드는 미디 출력장치, MOS는 미디 입력장치 입니다.

개요

MIDI란 Musical Instrument Digital Interface의 줄임말로 컴퓨터로 음악을 만들때의 기본 통신 규격이라고 생각하시면 됩니다.  컴퓨터로 음악을 만들거나 작곡할 때 음악 프로그램을 사용한다면 전부 이 규격을 사용합니다. 캔을 터치하게 되면 음악 프로그램에 노트를 입력하거나, 모터를 움직여 소리를 낼 수 있습니다. 모터들은 캔의 입력에 따라 소리를 내거나 음악 프로그램에 저장되어 있는 노래를 재생시킬 수 있습니다.

 

하드웨어

MOS의 경우, A4988 6개, NEMA 스텝모터 6개, 아두이노 메가 1개를 사용했습니다.

코카콜라 키보드의 경우 아두이노 우노 1개, MPR121 1개, 음료수 캔 12개를 사용했습니다.

코카콜라 키보드는 정전용량 터치센서의 원리로 만들어졌습니다.



send pin에서 지속적으로 출력 신호를 보내고, receive 핀에서 이 신호를 받아 핀에서 발생한 전하량을 측정할 수 있습니다. 이 때 신호를 받는 쪽에서 인체(접지역할)가 접촉할 경우, 인체는 전하를 끌어 충전하는 커패시터의 역할을 하게 됩니다. 이 새롭게 생긴 커패시턴스는 병렬로 연결되어 기존보다 정전용량이 더 커지게 됩니다. 따라서 저항성분이 증가하여 결과적으로 Receive pin에 입력되는 전류량이 감소되어 아두이노가 그 변화를 감지하게 됩니다.

이를 통해 음료수 캔은 버튼의 역할을 할 수 있고, 캔을 누른 순간에 음을 치는 MIDI 신호를 보내고, 캔에 손을 뗀 순간 음을 멈추는 신호를 보내게 됩니다. 이를 통해 음악을 연주할 수 있습니다.



반대로 MOS의 경우 다른 프로그램이나 장치가 낸 MIDI신호를 읽어들이는 역할을 합니다. MIDI신호가 들어오게 되면 이를 분석해 음을 키는 신호가 오면 해당되는 음을 모터로 재생하고, 음을 끄는 신호가 오면 그 음에 해당하는 모터의 재생을 멈춥니다. 따라서 음악 프로그램이 주는 MIDI신호를 따라 음악을 재생할 수 있습니다.


소프트웨어

아두이노 자체로는 USB를 통해 MIDI신호를 보낼 수 없습니다. USB를 통해 MIDI신호를 보내는 방법은 크게 두가지가 있습니다. 하나는 시리얼 통신을 통해 신호를 보내고, 이를 해석할 수 있는 컴퓨터 프로그램을 사용해 MIDI신호를 보내는 것입니다. 이를 위해서 Hairless midi to serial bridge와 윈도우에서는 loopmidi라는 프로그램을 깔아야 합니다. 연결 관계는 다음과 같습니다.

두번째 방법은 mocoLUFA라는 펌웨어를 아두이노에 올리는 것입니다. 아두이노에는 총 2개의 칩이 있습니다. 큰 칩은 잘 아실거고, 작은 칩의 역할은 큰 칩이 컴퓨터와 시리얼 통신을 원활히 할 수 있게 만들어 줍니다. 이 작은 칩의 기능을 바꿔 midi통신을 가능하게 만들어주는 프로그램 같은 것이 mocoLUFA입니다.



이 mocoLUFA 펌웨어를 올리게 되면 아두이노는 midi장치로 인식되고, 음악 프로그램에서 바로 인식하고, 바로 사용할 수 있습니다. 펌웨어를 올리는데 아두이노를 DFU모드로 바꿀 필요가 있고, 펌웨어를 올리는데 Flip이란 프로그램을 사용하시는 것을 추천드립니다. 펌웨어를 잘못 올리다가 문제가 생기면 그 아두이노 보드는 완전 쓸수가 없게 되어 주의가 필요합니다.

 

시연영상



 

참고하면 좋은 링크

Arduino Midi Library : https://github.com/FortySevenEffects/arduino_midi_library

mocoLUFA : https://github.com/kuwatay/mocolufa

Flip : https://www.microchip.com/DevelopmentTools/ProductDetails/PartNO/FLIP

mocoLUFA 커스터마이징 : https://moco-lufa-web-client.herokuapp.com/#/

mpr121 튜토리얼 : https://kocoafab.cc/tutorial/view/695

전체 0