산업 제조
산업용 사물 인터넷 | 산업자재 | 장비 유지 보수 및 수리 | 산업 프로그래밍 |
home  MfgRobots >> 산업 제조 >  >> Manufacturing Technology >> 제조공정

롤랜드 전자드럼 랙용 커스텀 DAW 컨트롤 박스

부품 및 소모품

부품수량
아두이노 마이크로 프로 (Arduino Micro Pro)1
푸시 버튼 (상시 개방형)1
3D 프린트 클램프 및 박스1

필요한 도구 및 기계

앱 및 온라인 서비스

프로젝트 소개

DAW(제 경우 Cubase)가 실행 중인 노트북을 드럼 녹음 중에 조작하는 게 불편했습니다. 스틱을 내려놓지 않고도 시작/정지/녹음 등 필수 명령을 실행할 수 있는 방해 없는 방법이 필요했습니다. 상용 솔루션은 너무 비싸거나 제 랙에 장착할 수 없어 실용적이지 않았습니다. 그래서 유명한 아두이노 마이크로 기반의 DIY 버튼 박스를 만들었습니다. 롤랜드 랙에서 사용하는 표준 38mm 튜브에 장착할 수 있습니다.

제작 지침

  1. 3D 프린팅: 랙 클램프 2개와 박스 본체를 출력하세요. PLA도 괜찮지만 더 튼튼하게 원하면 PETG 추천. M4x40 나사로 클램프 두 파트를 연결(회전 가능하게 적당히 조임). M6 윙나사와 너트로 랙에 단단히 고정. M3x4 나사 2개와 너트로 상단 클램프와 박스 결합.
  2. 전면 패널: 사용 버튼에 맞춰 직접 디자인하거나 제공되는 STL(3D 프린터용) 또는 SVG(CNC용) 템플릿 활용. (저는 DIY CNC로 각인된 패널을 만들었지만 3D 프린트도 충분합니다.)
  3. 버튼 장착 및 배선: 전면 패널 준비 후 버튼 삽입하고 올바른 아두이노 포트에 납땜(아래 핀 할당 참조). 별도 PCB 사용 시 4개 모서리 구멍으로 고정. 마지막으로 M3 나사 2개로 전면 패널 고정.
  4. 아두이노 프로그래밍: 반드시 아두이노 마이크로 프로여야 합니다(일반 마이크로 아님). 내장 USB로 네이티브 USB 키보드 에뮬레이션 가능해 펑션 키, 넘버패드 키 등 모든 키스트로크 트리거 가능. 디지털 핀 2-8을 내부 풀업으로 초기화하고, 버튼(상시 개방형) 누르면 핀이 GND로 풀려 감지되어 프로그래밍된 키 입력 실행.

    제 DAW(Cubase)용 설정:

    포트버튼키Cubase 기능
    2Mc메트로놈 켜기/끄기
    3L[Num] 1왼쪽 로케이터로 이동
    4>>[Num] +앞으로 이동
    5<<[Num] -뒤로 이동
    6PSPACE재생/정지
    7Bb시작 위치로
    8R[Num] *녹음

    코드에서 쉽게 변경해 본인 설정에 맞출 수 있습니다. 동봉된 코드를 예제로 활용하세요.

즐거운 제작 되세요!

코드

랙 버튼 박스용 아두이노 마이크로 프로 코드 (C/C++)

아두이노 IDE에서 보드를 마이크로 프로로 설정하세요.

/* ROLAND RACK BUTTON BOX
 * Note: 아두이노 프로 마이크로 전용!
 * 연결된 PC의 키보드를 에뮬레이트해 DAW(여기선 Steinberg Cubase) 키 명령 전송
 * 선택사항: 에뮬레이트된 UART COM 포트(USB)로 디버깅, 마이크로 보드 RX/TX LED 활용
 * 키 설정(Cubase용): https://steinberg.help/cubase_elements_le_ai/v9/de/cubase_nuendo/topics/key_commands/key_commands_default_c.html
 * 할당: 아두이노 마이크로 포트 → 버튼 박스 스위치 → 에뮬레이트 키 → Cubase 기능
 * ------------------------------------------
 * Port  Switch  Key         Cubase Function
 * 2     M       c           Metronome On/Off
 * 3     L       [Num] 1     Goto Left Locator
 * 4     >>      [Num] +     Forward
 * 5     <<      [Num] -     Backward
 * 6     P       SPACE       Play/Stop
 * 7     B       b           Begin
 * 8     R       [Num] *     Record
 * mac70 13.01.2021
 */
#define DEBUG_OUTPUT 0 // 1로 설정 시 시리얼 모니터에 디버그 출력
#include <Keyboard.h>
// 넘버패드 키 코드: https://forum.arduino.cc/index.php?topic=659117.0
#define KEYPAD_1 225
#define KEYPAD_PLUS 223
#define KEYPAD_MINUS 222
#define KEYPAD_ASTERIX 221

int RXLED = 17; // RX LED 핀

void setup() {
  pinMode(2, INPUT_PULLUP); pinMode(3, INPUT_PULLUP);
  pinMode(4, INPUT_PULLUP); pinMode(5, INPUT_PULLUP);
  pinMode(6, INPUT_PULLUP); pinMode(7, INPUT_PULLUP);
  pinMode(8, INPUT_PULLUP);
  pinMode(RXLED, OUTPUT);
  digitalWrite(RXLED, HIGH); // RX LED 끄기
  Keyboard.begin(); // 키보드 에뮬레이션 시작
  Serial.begin(9600);
  Serial.println("");
  if (DEBUG_OUTPUT == 1) Serial.println("Button Box Serial Monitor");
}

void loop() {
  Keyboard.releaseAll();
  digitalWrite(RXLED, HIGH);
  delay(50);

  if (digitalRead(2) == 0) { // M
    if (DEBUG_OUTPUT == 1) Serial.println("Button M");
    digitalWrite(RXLED, LOW);
    Keyboard.press('c'); delay(5); Keyboard.releaseAll();
    while(digitalRead(2) == 0);
  }
  if (digitalRead(3) == 0) { // L
    if (DEBUG_OUTPUT == 1) Serial.println("Button L");
    digitalWrite(RXLED, LOW);
    Keyboard.press(KEYPAD_1); delay(5); Keyboard.releaseAll();
    while(digitalRead(3) == 0);
  }
  if (digitalRead(4) == 0) { // >>
    if (DEBUG_OUTPUT == 1) Serial.println("Button >>");
    digitalWrite(RXLED, LOW);
    Keyboard.press(KEYPAD_PLUS);
    while(digitalRead(4) == 0); // PC 반복 기능이 키 재트리거
    Keyboard.releaseAll();
  }
  if (digitalRead(5) == 0) { // <<
    if (DEBUG_OUTPUT == 1) Serial.println("Button <<");
    digitalWrite(RXLED, LOW);
    Keyboard.press(KEYPAD_MINUS);
    while(digitalRead(5) == 0);
    Keyboard.releaseAll();
  }
  if (digitalRead(6) == 0) { // PLAY/STOP
    if (DEBUG_OUTPUT == 1) Serial.println("Button PLAY/STOP");
    digitalWrite(RXLED, LOW);
    Keyboard.press(' '); delay(5); Keyboard.releaseAll();
    while(digitalRead(6) == 0);
  }
  if (digitalRead(7) == 0) { // BACK
    if (DEBUG_OUTPUT == 1) Serial.println("Button BACK");
    digitalWrite(RXLED, LOW);
    Keyboard.press('b'); delay(5); Keyboard.releaseAll();
    while(digitalRead(7) == 0);
  }
  if (digitalRead(8) == 0) { // REC
    if (DEBUG_OUTPUT == 1) Serial.println("Button REC");
    digitalWrite(RXLED, LOW);
    Keyboard.press(KEYPAD_ASTERIX); delay(5); Keyboard.releaseAll();
    while(digitalRead(8) == 0);
  }
}

커스텀 파트 및 인클로저

Thingiverse 3D 파일 링크: thingiverse.com

제조공정

  1. Advantech, 스마트 제조용 콤팩트 팬리스 DIN-레일 PC ARK-1220 출시
  2. EKF SRS-1201-BLUBRICK: 철도·자동차·산업용 CompactPCI Serial CPU용 견고한 벽면 장착 박스
  3. SIGHT: 시각장애인을 돕는 스마트 안경
  4. 라즈베리파이, PIR 센서, MQTT로 만드는 모션 제어 AWS IoT 버튼
  5. DIY 월-E 영감 라즈베리 파이 CD-박스 로봇
  6. 헤쿠마, K 2019서 의료용 피펫 팁 생산 차세대 자동 탈형·포장 시스템 '헤쿠팁(Hekutip)' 공개
  7. 배송 손상 방지 5가지 검증된 포장 비법
  8. 박스 빌드 어셈블리를 위한 최적화된 레이아웃 및 배선 가이드라인
  9. 박스 빌드 조립 서비스 아웃소싱 시 고려해야 할 핵심 요소
  10. 성공적인 박스 빌드 조립을 위한 필수 가이드라인