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

구형 오르간을 MIDI 컨트롤러로 개조하기: 아두이노 메가 기반 완벽 가이드

프로젝트 개요

버려지거나 방치된 구형 전자 오르간 콘솔을 MIDI 마스터 키보드 컨트롤러로 변환하는 프로젝트입니다. 아두이노 메가 2560 한 대로 건반(매뉴얼 2단)과 페달보드의 키 온/오프를 감지해 표준 MIDI 메시지(Note On/Off, Control Change)를 DIN 미디 단자 또는 USB로 출력합니다. 매트릭스 방식과 버스(Bussed) 방식 두 가지 키보드 스캔 아키텍처를 모두 지원하며, 익스프레션 페달(볼륨/표현 페달)용 포텐셔미터 입력도 최대 3개까지 확장 가능합니다.

⚠️ 안전 주의사항 (반드시 읽고 진행하세요)

필요한 부품 및 재료

부품수량비고
아두이노 메가 25601플라스틱 마운트 플레이트 포함 권장
DIN 5핀 미디 플러그 (수놈)1패널 마운트 타입 권장
220Ω 저항1미디 출력 전류 제한용 (TX 라인 직렬)
USB A-B 케이블1펌웨어 업로드 및 전원 공급용
AWM 케이블 (10심 이상)1롤건반 배선용, 차폐선 권장
수핀 헤더 40핀 1열 (2.54mm)1아두이노 연결용, 나사 단자 보드 대체 가능
슬라이드 포텐셔미터 (10kΩ 리니어)1~3익스프레션 페달용 (옵션)
IDC 소켓 10핀 (옵션)여유분케이블 탈착식 구성 시 편리
수-수 점퍼 와이어 (옵션)여유분IDC 소켓 사용 시 아두이노 연결용

필요한 도구

소프트웨어

작업 전 확인 사항 (1단계: 오르간 구조 파악)

  1. 키보드 스캔 방식 식별
    • 매트릭스(Matrixed): 행(Row) × 열(Column) 교차점에 다이오드+스위치. 예: 6행 × 11열 = 61건반.
    • 버스(Bussed): 공통 버스 라인 1개에 61개 스위치가 병렬 연결, 각 스위치 다른 쪽은 개별 라인.

    본인 오르간 방식에 맞는 펌웨어를 선택해야 합니다. (아래 코드 참조)

  2. 스위치 타입 확인 (멀티미터 다이오드/저항 모드)
    • NO (Normally Open): 키 누르면 회로 닫힘 (일반적)
    • NC (Normally Closed): 키 누르면 회로 열림 (페달보드에 흔함)
    • 타입이 다르면 펌웨어 내 로직 반전 필요 (코드 내 주석 참조)
  3. 분해 및 아두이노 장착 위치 선정
    • 건반/페달 접점 접근 가능한지, 아두이노 고정 공간 확보되는지 확인
    • 전원 공급용 3핀 플러그/잭, 미디 단자 장착용 홀 가공 계획
  4. 매트릭스 크기 확인
    • 예시 오르간: 매뉴얼 2단 각 6×11(61키), 페달 6×7(32키)
    • 8×8 매트릭스라면 코드/배선 수정 또는 재배선 필요

배선 및 조립 단계별 가이드

2단계: 아두이노 본체 고정

동봉된 플라스틱 플레이트에 #4 기계 나사로 아두이노 고정 → 오르간 내부 나무 판에 #4 목나사로 플레이트 고정. 케이블 길이 여유 있게 배치할 위치 선정.

3단계: 케이블 재단 및 피복 벗기기

매트릭스 방식: 각 건반/페달의 행(6선), 열(매뉴얼 11선, 페달 7선)별로 AWM 케이블 2가닥씩 재단. 오르간 내부 기존 배선 경로 따라 여유 있게 라우팅.
버스 방식: 6가닥 AWM 케이블(각 10선) + 61번째 키용 단선 1가닥 준비.

케이블 끝단 심선 분리 → 와이어 스트리퍼로 피복 벗기기.

4단계: 케이블 끝단 수핀 헤더/나사 단자에 납땜

아두이노 핀맵(회로도 참조)에 맞춰 각 심선을 수핀 헤더 핀에 납땜. 나사 단자 보드 사용 시 해당 단자에 조임.

5단계: 스위치 측 케이블 납땜 (가장 손 많이 감)

매트릭스 방식:

버스 방식:

6단계: 미디 출력 회로 구성

DIN 5핀 미디 플러그 핀배치(앞면 기준):

※ 아두이노 메가는 하드웨어 시리얼 포트 4개 보유: Serial(USB), Serial1(핀 18/19), Serial2(핀 16/17), Serial3(핀 14/15). 본 프로젝트는 Serial1(핀 18=TX, 19=RX)을 미디 출력용으로 사용. 보드레이트 31250 bps.

7단계: 헤더를 아두이노에 꽂기

회로도 핀맵대로 모든 헤더 삽입. IDC 소켓 + 수-수 점퍼 조합 사용 시 배선 변경 용이.

8단계: 펌웨어 업로드

  1. USB 케이블로 아두이노-PC 연결
  2. 아두이노 IDE에서 본인 키보드 타입에 맞는 코드(매트릭스/버스) 복사 → 새 스케치에 붙여넣기
  3. 보드: "Arduino Mega or Mega 2560", 포트 선택 → 업로드

9단계: 테스트 및 검증

펌웨어 상세: 매트릭스 키보드 버전

아래 코드는 6×11 매트릭스 매뉴얼 2대(채널 1, 2), 6×7 매트릭스 페달보드 1대(채널 3, NC 스위치 대응), 포텐셔미터 2개(채널 16, 17)를 지원합니다.

// Arduino Mega Midi Controller v21
// Author: Larason2
// 매트릭스: Keyboard A(Manual 1), B(Manual 2) = 6x11, C(Pedal) = 6x7
// 포텐셔미터: A0(Ch16), A1(Ch17) → CC#11

byte keysA[11][6], keysB[11][6], keysC[7][6];
byte lastA[11][6], lastB[11][6], lastC[7][6];

const int noteOn1 = 144, noteOff1 = 128;  // Ch1
const int noteOn2 = 145, noteOff2 = 129;  // Ch2
const int noteOn3 = 146, noteOff3 = 130;  // Ch3
const int velocity = 100;
const int chan6 = 181, chan7 = 182;       // CC 채널 16, 17 (0xB0+15, 0xB0+16)
const int Exp = 11;                       // CC#11 Expression
int LastPot6 = 1, LastPot7 = 1;

void setup() {
  Serial1.begin(31250);  // 미디 전용 하드웨어 시리얼
  // 행 핀(풀업 입력): 2, 22, 24, 26, 28, 30
  // 열 핀(출력): 32, 34, 36, 38, 40, 42, 44, 46, 48, 50, 52 (A: 11열)
  // B: 3, 23, 25, 27, 29, 31 / 열: 33, 35, 37, 39, 41, 43, 45, 47, 49, 51, 53
  // C: A2~A7 (풀업 입력) / 열: A8~A14 (출력)
  // 핀모드 초기화 생략 (코드 참조)
}

void loop() {
  // --- Keyboard A 스캔 (열 단위로 행 읽기) ---
  for (int col = 0; col < 11; col++) {
    // 해당 열 출력 LOW, 나머지 입력
    // keysA[col][row] = digitalRead(행핀);
  }
  // --- Keyboard B 스캔 (동일 로직) ---
  // --- Keyboard C 스캔 (NC 스위치이므로 데이터 반전) ---
  // --- 상태 변화 감지 → MidiSend(noteOn/Off, note, velocity) ---
  // --- 포텐셔미터 읽기 → 변화량 >= 8이면 CC#11 전송 ---
}

void MidiSend(int cmd, int note, int val) {
  Serial1.write(cmd);
  Serial1.write(note);
  Serial1.write(val);
}

전체 코드는 원문 첨부 파일을 참조하세요. (지면 관계상 핵심 로직만 요약)

펌웨어 상세: 버스 키보드 버전

버스 방식 전용 펌웨어로, 4개 키보드(각 61키) + 포텐셔미터 3개 지원. 핀 2~53, A0~A8을 키 입력 풀업으로, A9~A12를 버스 선택 출력으로, A13~A15를 포텐셔미터 입력으로 사용.

// Arduino Mega Midi Controller 61x4 + 3 Pots
// 버스 방식: 공통 버스 라인(A9~A12)을 차례로 LOW 드라이브하며 61개 키 읽기
// 핀 2~53, A0~A8 = 키 입력 (풀업)
// A9~A12 = 버스 선택 (출력)
// A13~A15 = 포텐셔미터 (아날로그 입력)

전체 코드는 원문 첨부 파일을 참조하세요.

익스프레션 페달 하드웨어 제작 가이드 (포텐셔미터 마운트)

기존 페달 레버에 연동해 포텐셔미터 슬라이더를 작동시키는 기계 장치 제작법입니다.

필요 자재

필요 도구

제작 순서 요약

  1. 아크릴 시트 재단: 메인 플레이트 3″×4.5″, 스페이서 3″×0.5″, 힌지 플레이트 2.4″×0.3″
  2. 테플론 블록 3/4″ 잘라 3″×1.5″×3/4″ 블록 제작 → 알루미늄 로드 관통 구멍(1/4″ 비트) 가공
  3. 포텐셔미터 본체와 아크릴 메인 플레이트 사이에 스페이서 끼워 JB Weld로 접착 → 24시간 경화
  4. 힌지(아크릴 하단), 테플론 블록(아크릴 상단) 기계 나사/너트로 고정
  5. 포텐셔미터 슬라이더 돌기에 아이 볼트 부착 → 알루미늄 로드에 연결 (필요시 JB Weld 추가 고정)
  6. 알루미늄 로드 타단에 가구 브레이스 부착 → 페달 기존 브라켓 구멍에 기계 나사+테플론 락 와셔로 고정
  7. 힌지 하단을 오르간 바닥 목나사로 고정 (아크릴 플레이트가 힌지와 바닥 사이 위치하도록)
  8. 페달 밟았을 때 포텐셔미터 슬라이더가 0~전체 스트로크 범위에서 부드럽게 움직이는지 확인

자주 묻는 질문 및 트러블슈팅

회로도

프로젝트 페이지에서 다음 회로도 확인 가능:

마치며 & 추가 지원

아두이노 프로젝트 허브 댓글 알림이 작동하지 않을 수 있습니다. 더 빠른 답변을 원하시면 아두이노 공식 포럼 또는 작성자 지정 포럼 게시판에 글 남겨 주세요.

이 프로젝트로 수십 년 된 오르간이 현대적인 MIDI 컨트롤러로 다시 태어나, DAW 가상 악기, 신디사이저, 라이브 공연 장비와 연결되어 새로운 음악적 생명을 얻길 바랍니다. 즐거운 메이킹 되세요!

제조공정

  1. 자동차 소프트웨어 구성 요소의 ISO 26262 인증 달성
  2. 이클립스 디토 1.0 – 디지털 트윈 개발을 위한 디바이스-어-서비스 플랫폼
  3. IoT 기기를 위한 견고한 클라우드 기반 소프트웨어 업데이트
  4. 카펫 산업용 디지털 커팅 솔루션 - OMNI CNC
  5. 디지털 자산 관리(DAM) 마스터하기: 데이터 기반 자산 관리의 종합 전략
  6. 난연 플라스틱 부품을 위한 UL의 종합 테스트
  7. 자동차 외장 부품용 고성능 유리섬유 강화 PET 신소재
  8. 2020년 디지털 제조업을 이끌 3대 트렌드
  9. 디지털 트랜스포메이션 성공을 위한 전략적 청사진
  10. 인바 36 (Invar 36) 컴포넌트: 소재, 물성, 신뢰할 수 있는 구매 가이드