Arduino DMX-512 테스터 컨트롤러 – 안정적인 조명 제어를 위한 풀 파츠 키트
부품 및 소모품
| 부품명 |
수량 |
| Arduino Mega 2560 | 1 |
| SparkFun 로터리 포텐셔미터 - 10k 옴, 리니어 | 1 |
| 택트 푸시 버튼 스위치 (SPST Off Momentary) | 5 |
| SparkFun 20x4 문자 LCD - 블랙 온 그린 5V | 1 |
| 트랜지스터 2N2222A TO-18 NPN 75V 0.6A | 2 |
| 키 매트릭스 4x4 | 1 |
| MAX485 저전력 RS-485/RS-422 트랜시버 | 1 |
| 저항 330 옴 | 2 |
| 저항 1k 옴 | 2 |
| 저항 120 옴 | 1 |
| 3mm LED: 그린 | 2 |
| 커패시터 1 nF | 6 |
| 대형 터미널 블록 3핀 | 1 |
| 대형 터미널 블록 2핀 | 1 |
| 슬라이드 스위치 1극 2투 2위치 | 1 |
| XLR 커넥터 3핀 PCB 마운트 (Amphenol AC3FAH2-AU-PRE) | 1 |
| XLR 커넥터 5핀 PCB 마운트 (Amphenol AC5FAH-AU-B) | 1 |
| 수컷 헤더 40핀 1열 (0.1") | 4 |
| 페놀릭 페이스 플레이트 15 x 20 cm | 1 |
| IC 소켓 8핀 | 1 |
| 감광성 드라이 필름 PCB 30cm x 200cm | 1 |
프로젝트 소개
DMX-512 프로토콜을 이용한 테스트 및 라이트 쇼 제어 도구로, 고정식 또는 임시 조명 설치에서 빠른 테스트에 이상적입니다. 이 프로젝트는 조명 콘솔, 인터페이스, 컴퓨터를 설치할 필요 없이 열악하거나 접근하기 어려운 외부 환경에서 신속한 테스트를 위한 휴대용 시스템이 필요하다는 점에서 시작되었습니다.
기반 기술
- Arduino Mega 2560 Rev-3
- Arduino 라이브러리 4 유니버스 DMX v0.3 - Deskontrol
- LCD 라이브러리 v1.2.1 - Francisco Malpartida
- Proteus 시뮬레이션용 Arduino - Microcontrolandos
하드웨어 v0.4
릴리스 노트
- 펌웨어 v0.9 ~ v1.3 지원
- 백라이트 및 대비 소프트웨어 제어 가능한 4x20 LCD
- USB, 배터리 또는 외부 전원 공급 가능
- 네비게이션 키패드 및 4x4 키패드
- 아날로그 제어 포텐셔미터
- 전원 온/오프 스위치 (USB 전원 시 미적용)
- 터미널 블록, XLR 3핀, XLR 5핀에서 DMX 출력
- DMX 출력 상태 LED
- Proteus V7.7 SP2 시뮬레이션 지원
- Proteus v8.0 SP1 회로도 및 PCB 설계
회로도, PCB, 시뮬레이터
프로젝트 저장소에서 회로도, PCB 레이아웃, Proteus 시뮬레이션 화면을 확인할 수 있습니다.
제작 과정
페놀릭 단면 기판을 사용했으며, 수연마지로 동박을 정리하고 원형으로 세척했습니다. Proteus에서 아세테이트 네거티브 프리프레스 출력 파일을 생성하여 감광성 필름 공정으로 패턴을 전사했습니다. 페이퍼 라미네이터로 필름을 밀착시키고, 아세테이트와 기판 사이에 물을 약간 넣어 고정한 후 UV 노광했습니다. 제2철산철로 에칭한 후 홀 가공하고 부품을 납땜했습니다. 포텐셔미터 가이드를 벗겨내고 페놀릭 기판에 장착한 뒤 노브와 핀을 패드에 납땜했습니다. 키보드 헤더를 상단에 납땜하고 핀을 샌딩으로 정리했습니다. 양면 테이프로 키보드를 플레이트에 부착했으나 헤더가 키보드 플렉스와 간섭하여 절단했습니다(차기 버전 개선 예정). 키보드 하단 헤더를 납땜하고 뒤로 구부려 측면 연결했습니다. 키보드를 LCD 보드에 장착했으며, MAX485 소켓이 키보드와 근접해 약간 강제로 장착했습니다(차기 버전 개선 예정). Arduino Mega USB 포트에 테이프를 붙여 트랙 간 쇼트 방지했습니다. 모든 부품 장착 후 펌웨어를 업로드했습니다.
펌웨어 v1.2
릴리스 노트
- 하드웨어 v0.3 ~ v0.4 지원
- 직관적이고 접근하기 쉬운 커서 네비게이션
- 키패드에서 빠른 값 입력
- 아날로그 포텐셔미터로 값 입력
- 8개 DMX 유니버스 저장 가능한 메모리 뱅크
- EEPROM에서 사전 선택된 DMX 유니버스 읽기 및 시작
- 시작 메모리 옵션 선택
- 단일 채널 제어: 특정 채널 선택, 이전/다음 채널 값 표시
- 매트릭스 제어: 3x5 매트릭스로 채널 값 표시
- 체이서 제어: 선택한 채널을 설정된 시간으로 시퀀싱
- 시퀀서: EEPROM에 저장된 유니버스 간 시퀀싱
- 곱하기 제어: 선택한 채널에 값 채우기
- 선택한 채널에서 조명기구 위치 찾기 기능
- 메모리 옵션 빠른 접근
- 메모리 옵션: 저장, 로드, 클리어, 전체 클리어 (뱅크 및 빈 RAM)
- 8개 DMX 유니버스 뱅크용 메모리 옵션
- 블랙아웃 기능
- LCD 백라이트 조명 제어
- LCD 대비 제어
- LCD 백라이트 키보드 단축키
- Arduino IDE v1.0.6으로 컴파일
- Arduino 4 유니버스 DMX 라이브러리 v0.3 - Deskontrol.net
- LCD 라이브러리 v1.2.1 - Francisco Malpartida
소스 코드
전체 소스 코드는 GitHub 저장소에서 확인할 수 있습니다. 주요 기능으로는 DMX 송수신, LCD 메뉴 시스템, 키패드 입력 처리, EEPROM 메모리 관리, 아날로그 포텐셔미터 읽기, 백라이트/대비 PWM 제어 등이 구현되어 있습니다.
사용자 입력 가이드
- 시작 시 '초기 메모리' 옵션으로 RAM 초기값 설정
- '>' 기호로 커서 위치 표시
- '+'와 깜빡이는 커서로 숫자 입력 대기 표시
- 상하좌우 및 센터(엔터) 버튼으로 메뉴 탐색
- 숫자 입력 시 3자리 미만이면 '#' 키로 엔터 기능
- DMX 채널 값 입력 시 'A' 키로 255(최대값), 'B' 키로 000(최소값) 바로 입력
- 'C' 키로 조명기구/채널 위치 찾기: 채널 값을 000↔255로 토글, 다시 'C'로 정지
- '*' 키로 백라이트 온/오프
- 'D' 키로 아날로그 포텐셔미터 값 입력 모드 진입
- 'Ctrl'로 '제어 옵션' 메뉴 복귀
주요 메뉴 구조
초기 메모리
EEPROM에서 읽어 RAM 초기값 설정: Empty(EEPROM 유지, 모든 채널 000), Load(저장된 DMX 유니버스 로드), Clear(EEPROM 지우고 채널 000)
제어 옵션
DMX 채널 제어 방식 선택: Memory(메모리 옵션), Unitary(특정 채널 빠른 접근), Matrix(3x5 매트릭스로 채널 값 표시), Chaser(채널 간 시퀀스), Multiply(특정 간격으로 채널에 값 할당), Config(시스템 설정)
단일 채널 제어 (Unitary Control)
특정 채널 빠른 접근: Channel(채널 선택), Value(채널 값 설정), Ctrl(제어 옵션), Memory(메모리 옵션)
매트릭스 제어 (Matrix Control)
3x5 매트릭스로 현재 채널 값 표시: C---(선택된 채널 번호), Mem(메모리 옵션), Ctrl(제어 옵션), 001-015(표시할 채널 범위)
체이서 제어 (Chaser Control)
채널 간 특정 시퀀스 실행: ChaserCH(현재 시퀀스 채널), Delay(스텝 간 시간, x10=mS), First CH(시작 채널), Final CH(끝 채널), Ctrl(제어 옵션), Start/Stop(시퀀스 시작/정지)
곱하기 제어 (Multiply Control)
특정 간격으로 채널에 값 할당: Value(쓸 값 000-255), First CH(첫 채널), Multiply(채널 간격), Quantity(반복 횟수), Ctrl(제어 옵션), Memory(메모리 옵션), Apply(적용 및 검증)
메모리 옵션
EEPROM 접근: Save(현재 값 저장), Load(저장된 값 로드), Empty(RAM만 초기화), Clear(EEPROM 지우기), Black(블랙아웃 - 모든 채널 000, 메모리 영향 없음, 엔터로 복구), Cancel(이전 메뉴 복귀)
설정 (Config)
시스템 전체 설정: Backlight(LCD 백라이트 000-255), Contrast(LCD 대비 150-255, 하한 150), Exit(이전 메뉴), 값 자동 EEPROM 저장
정보 (About)
프로젝트 정보 및 하드웨어/펌웨어 버전 표시. 엔터/센터로 종료.
저장소 및 추가 자료
GitHub: https://github.com/daniel3514/Arduino-DMX-512-Tester-Controller
Proteus 프로젝트 파일 및 회로도 포함