MOSMusic 프로젝트 키트: MOSFET, 아두이노로 음악 동기화 조명 제어
부품 및 소모품
| Infineon CoolMOS C7 Gold SJ MOSFET |
1개 |
| MOC3021 (옵토아이솔레이터 트라이액 드라이버) |
4개 |
| 2N6073AG |
1개 |
| 아두이노 우노 (Arduino UNO) |
1개 |
| SparkFun 와이어 랩 |
1개 |
| 전선 18 AWG 이상 |
1개 |
| 커패시터 1µF |
4개 |
| 저항 220옴 |
4개 |
| 저항 100k옴 |
4개 |
| 저항 10k옴 |
1개 |
| 저항 330옴 |
1개 |
| 전구 소켓 |
4개 |
| 전구 |
4개 |
| 주택용 극성 플러그 |
1개 |
| 브레드보드 (일반) |
1개 |
| 점퍼 와이어 (일반) |
1세트 |
| 12V 전원 (아두이노용) |
1개 |
| 사운드 센서 |
1개 |
| 악어 클립 |
4개 |
| 동클래드 PCB |
1개 |
필수 도구 및 장비
- 납땜 인두, 염화 제2철(에칭액), 샤프 펜, 이소프로필 알코올, 납선
앱 및 온라인 서비스
- 아두이노 IDE
- Proteus Design Suite
프로젝트 소개
MOSMusic (MM)
음악과 동기화된 휴대용 조명 스테이션.
기술은 세상을 개선하는 데 사용해야 합니다. 블랙햇/그레이햇 해커라면 여기서 멈추시길... 적어도 존중은 남겨주세요 XP
소개
요즘 이벤트나 파티에서 관객은 더 높은 수준의 엔터테인먼트를 요구합니다. 기존 조명 시스템은 복잡하고 비싼 제어 시스템이 필요하며, 곡마다 라이트 쇼를 미리 프로그래밍해야 해 비용이 더 듭니다.
시중 제품(MICTUNING RGB LED, LED Strip Lights with Music Sync 등)은 40달러 이상이며 저전력 LED만 제어 가능합니다. 고전력 기기를 아두이노 위험 없이 제어하려면 별도 회로가 필요합니다.
회로 설계
목적: 0-5V 디지털 신호 → 120V AC 제어 신호 변환
1단계: Infineon 600V CoolMOS C7 MOSFET로 옵토커플러 다이오드를 접지시킵니다. 옵토커플러는 5V 36mA 필요(아두이노 한계치 근접)하지만, CoolMOS는 5V 60µA만 필요해 소비 전류를 획기적으로 줄입니다. 덕분에 어떤 컨트롤러든 드라이버 없이 사용 가능합니다.
동작: MOSFET가 옵토커플러를 접지 → DIAC 동작 → TRIAC 도통 → 램프 점등
확장성: 드라이버 수나 용량 증설 시 메인 회로 변경 불필요(이미지 1, 2 참조).
릴레이 대비 장점: 릴레이는 기계적 스위칭으로 '딸깍' 소리가 나고, 디밍이나 고주파 스위칭이 불가능하지만 MOSFET+옵토커플러+트라이액 조합은 쉽게 구현됩니다.
PCB (또는 브레드보드)
개별 모듈로 제작해 전구 수를 자유롭게 확장하거나, 4채널 통합 모듈로 제작 가능합니다. Gerber 파일은 GitHub 'PCB Files' 폴더에 있습니다.
개발 과정
- 버튼과 안전장갑으로 1단계(램프 제어) 테스트 - 고전압 주의!
- LED 플랫폼으로 아두이노 음악 동기화 테스트 (코드는 'Arduino Code' 폴더, 주석 상세)
- 전체 회로를 브레드보드에 조립해 4개 램프 제어 테스트
단계별로 안전하게 진행했습니다. 120V AC는 위험하므로 반드시 예방 조치를 취하세요.
최종 제품
브레드보드 케이블 불량 방지를 위해 제어 모듈을 PCB로 제작했습니다. 전사지 없어 샤프 펜으로 비아(via) 그려 페릭 클로라이드 에칭하는 클래식 방식 사용했습니다. (참고 링크)
추가 PCB 3장 제작 후 박스에 넣고 4개 동일한 램프를 장착해 휴대성 좋고 미적인 제품 완성.
코멘트
마이크로컨트롤러 조명 제어가 저렴하고 효율적임을 입증하고자 했습니다. 시중 저가 제품은 품질이 낮고 비싸며, Infineon CoolMOS C7 MOSFET의 창의적 활용 사례를 보여주고자 했습니다.
참고 자료
모든 기술 정보와 레퍼런스는 위키에 있습니다: https://github.com/altaga/MOSMusic-MM-/wiki
코드
아두이노 코드 (센서 읽기 및 전구 출력 시퀀스)
int analog1=0; int analogm=0; double basemean=0; int base=0; int gain=-5; unsigned int sensibility=5; int counter=0;
void setup() {
pinMode(LED_BUILTIN,OUTPUT);
pinMode(2,OUTPUT); pinMode(3,OUTPUT); pinMode(4,OUTPUT); pinMode(5,OUTPUT);
digitalWrite(2,LOW); digitalWrite(3,LOW); digitalWrite(4,LOW); digitalWrite(5,LOW);
Serial.begin(115200);
for(int i=0;i<100;i++) basemean+=analogRead(A0);
base=(basemean/100)+gain;
analogm=analogRead(A0);
digitalWrite(LED_BUILTIN,LOW);
}
void loop() {
analog1=analogRead(A0);
if(abs(analog1-analogm)=10) {
digitalWrite(2,LOW); digitalWrite(3,LOW); digitalWrite(4,LOW); digitalWrite(5,LOW);
} else if (abs(analog1-analogm)=(base-30) && analog1<(base-10)) {
digitalWrite(2,LOW); digitalWrite(3,LOW); digitalWrite(4,LOW); digitalWrite(5,LOW);
} else if(analog1>=(base-10) && analog1<(base)) {
digitalWrite(2,HIGH); digitalWrite(3,LOW); digitalWrite(4,LOW); digitalWrite(5,LOW);
} else if(analog1>=(base) && analog1<(base+10)) {
digitalWrite(2,HIGH); digitalWrite(3,HIGH); digitalWrite(4,LOW); digitalWrite(5,LOW);
} else if(analog1>=(base+10) && analog1<(base+20)) {
digitalWrite(2,HIGH); digitalWrite(3,HIGH); digitalWrite(4,HIGH); digitalWrite(5,LOW);
} else if(analog1>=(base+20) && analog1<(base+50)) {
digitalWrite(2,HIGH); digitalWrite(3,HIGH); digitalWrite(4,HIGH); digitalWrite(5,HIGH);
}
}
analogm=analog1;
delay(50);
}
전체 프로젝트: https://github.com/altaga/MOSMusic-MM-
커스텀 파트 및 인클로저
- 4-module_kFm59jYssL.DXF
- single-module_nJVqMTooAQ.DXF
회로도