MSGEQ7 오디오 비주얼라이저 내장 RGB LED 백라이트: TV 및 책상용 DIY 앰비라이트
부품 및 소모품
| 부품 |
수량 |
비고 |
| 아두이노 나노 R3 |
1 |
|
| WS2812 주소 지정 가능 LED 스트립 (Digilent) |
1 |
|
| MSGEQ7 (7밴드 그래픽 이퀄라이저) |
1 |
오디오 스펙트럼 분석용 |
| 5V 2.5A 스위칭 전원 공급장치 (Digilent) |
1 |
|
필요 도구 및 장비
앱 및 온라인 서비스
프로젝트 소개
이 튜토리얼은 제 원본 인스트럭터블(Instructables) 글에서 가져온 것입니다 (원문 보기).
TV나 책상 뒤에 설치할 RGB LED 백라이트를 직접 만드는 방법을 소개합니다.
회로 자체는 매우 간단합니다. WS2812 LED 스트립이 아두이노 나노 같은 MCU와 인터페이스하기 매우 쉽기 때문입니다.
참고: 오디오 비주얼라이저 기능이 필요 없다면 MSGEQ7 오디오 분석 회로는 생략하고 LED 백라이트만 구성해도 됩니다.
사용한 부품 상세 리스트와 구매처:
- 아두이노 나노/우노 (아마존 / 알리익스프레스)
- WS2812 RGB LED 스트립 (아마존 / 알리익스프레스), IP 등급은 방수 여부, 숫자는 미터당 LED 개수 (전원 공급장치 선정에 중요)
- 5V 전원 공급장치 (아마존) (LED 개수에 따라 다름) → LED 하나당 약 20mA 소모. 본 튜토리얼 스트립은 45개 LED (30개/m)라 45×20mA ≈ 0.9A, 아두이노와 MSGEQ7도 고려해 3A 짜리 연결 (충분함)
- 3.5mm 오디오 잭 (아마존 / 알리익스프레스)
- 포텐셔미터 10kΩ (아마존 / 알리익스프레스)
- 푸시 버튼 (아마존 / 알리익스프레스)
- 저항 (10kΩ 1개, 220Ω 1개, MSGEQ7용: 100kΩ 2개)
- 콘덴서 (1000μF 전해 1개, 10nF 2개, MSGEQ7용: 0.1μF 2개, 33pF 1개) (아마존 / 알리익스프레스)
- 일반 다이오드 (아마존 / 알리익스프레스)
- DC 잭 (아마존 / 알리익스프레스)
1단계: 회로도 구성
메인 회로도
WS2812 스트립을 아두이노와 연결하는 건 Adafruit_NeoPixel 라이브러리를 쓰면 아주 간단합니다.
LED 스트립은 3핀: VCC, DATA, GND. VCC는 5V, GND는 그라운드, 중간의 DATA 핀을 아두이노 D6 핀(LED_DATA)에 연결합니다. 스트립의 각 LED에는 WS2812 칩이 내장되어 있어 아두이노에서 받은 데이터를 다음 LED로 전달하므로, 첫 번째 LED에만 데이터를 주면 됩니다.
모드 변경을 위한 푸시 버튼, 밝기 조절용 포텐셔미터 로직은 다음 단계에서 설명합니다.
정확한 회로도는 프리칭(Fritzing) 파일 스크린샷을 참고하세요 (다운로드 가능).
중요: 아두이노 5V 핀을 전원 공급장치에 연결할 때 반드시 다이오드를 거쳐 연결해야 합니다. 이렇게 해야 USB 케이블을 꽂아 프로그래밍할 때 아두이노가 손상되지 않습니다. 10nF와 1000μF 콘덴서는 전원 불안정 방지를 위한 안전 장치입니다.
MSGEQ7 회로
MSGEQ7을 아두이노에 연결하는 가장 일반적인 회로입니다. 여기서 3.5mm 오디오 잭이 필요합니다. 오디오 잭의 중간 핀이 보통 GND이고, 좌/우 채널 핀이 10nF 콘덴서를 통해 MSGEQ7의 Signal In 핀으로 연결됩니다 (회로도 참조). Signal In 핀에 포텐셔미터를 추가해 오디오 신호 감도를 조절할 수도 있지만 필수는 아닙니다.
MSGEQ7 → 아두이노 연결:
- Analog Out 핀 → A1 (MSGEQ_OUT)
- Strobe 핀 → D2 (STROBE)
- Reset 핀 → D5 (RESET)
rgb_controller.fzz
2단계: 코드
깃허브 전체 스케치 링크: RGBStripe_Control_WS2812
코드 설명:
코드에서 WS2812 스트립 객체를 Adafruit_NeoPixel 객체로 선언합니다. LED 개수(본인 설정에 맞게 NUM_LEDS 변경), 아두이노 LED_DATA 핀, 색상 데이터 전송 방식 및 속도를 인자로 넘깁니다.
초기화 후 setup()에서 setBrightness(0~255)로 기본 밝기 설정하고 begin()으로 스트립 시작. 이제 setPixel(LED, Color)로 각 픽셀/LED에 개별 RGB 색상 지정 가능. 설정이 끝나면 strip.show()로 스트립 업데이트. 이게 원하는 애니메이션을 프로그래밍하는 핵심 로직입니다.
애니메이션/모드 제어를 위해 푸시 버튼/택타일 스위치를 추가했습니다. 버튼 한 쪽을 VCC, 다른 쪽을 아두이노 D3 핀과 10kΩ 저항을 통해 그라운드에 연결. setup()에서 이 핀에 인터럽트 연결해 버튼 누를 때마다 changeMode() 메서드 호출. changeMode()에서는 다음 모드로 전환하고 현재 애니메이션 중단을 알립니다. 그러면 loop()가 새로 실행되며 새 애니메이션/모드를 재생합니다.
제공되는 애니메이션: 레인보우 색상 페이드, 빨강/초록/파랑/흰색 단색, 뮤직 애널라이저 모드
추가로 10kΩ 포텐셔미터로 스트립 밝기 제어 기능 구현. checkBrightness() 메서드가 포텐셔미터 출력(A2 핀, 중간 핀)을 읽어 스트립 밝기 업데이트.
musicAnalyzer() 모드 (MSGEQ7 활용):
이 모드는 MSGEQ7의 Signal In에 연결된 오디오 신호를 시각화합니다. MSGEQ7은 단일 오디오 대역(8개 대역, 저주파~고주파)의 아날로그 신호를 출력합니다. musicAnalyzer() 메서드가 MSGEQ7을 리셋한 뒤 아날로그 값들을 버퍼링해 현재 오디오 대역 값들을 얻습니다. 출력 대역은 스트로브(Strobe) 핀에 하이 펄스를 줘서 변경합니다. 8개 대역 모두 버퍼링한 뒤 모든 LED 픽셀 값을 한 칸씩 밀고 LED 0의 새 값 계산. 색상 구성: 저주파(베이스)=빨강, 중주파=초록, 고주파=파랑. 새 값을 로드하기 전 값을 한 칸씩 미는 방식 덕분에 부드러운 타임라인 애니메이션이 나옵니다.
3단계: PC 오디오 설정
음악/오디오를 MSGEQ7에 입력하면서 스피커로도 재생하려면, 리얼텍 HD 스테레오 믹스(Stereo Mix) 기능을 쓰거나 사운드카드/메인보드의 후면 스피커 출력을 MSGEQ7 오디오 입력에 연결하면 됩니다.
윈도우 10에서 스테레오 믹스 활성화: 우측 하단 스피커 아이콘 우클릭 → '소리' → '녹음' 탭에서 스테레오 믹스 우클릭 → '사용'. 안 보이면 우클릭 → '사용 안 함 장치 표시' 체크. 스테레오 믹스 속성에서 '이 장치로 듣기' 체크하고 메인 스피커 선택.
후면 스피커 출력 사용 시: 메인 스피커 속성 → '향상' 탭 → '환경' 선택 → 드롭다운에서 '방' 선택. 이제 스피커와 MSGEQ7로 병렬 오디오 출력이 가능합니다.
4단계: 참고 사항
회로가 복잡하지 않고 크기도 작아 작은 박스에 전부 넣을 수 있었습니다. USB 커넥터, 오디오 잭, DC 잭, 포텐셔미터, 푸시 버튼용 구멍을 뚫고, 수/암 핀 헤더로 WS2812 스트립 3선을 점퍼 케이블로 연결하면 됩니다.
코드
아두이노 스케치 다운로드
https://github.com/PhilKes/RGBStripe_Control_WS2812
회로도
아두이노와 WS2812 스트립 연결 브레드보드 회로도 (포텐셔미터 밝기 제어 포함)

fvwp3zyjs5c4z851_12HuWgZiDT.fzz
오디오 비주얼라이저 모드용 독립형 MSGEQ7 회로도
Signal In을 3.5mm 오디오 잭 좌/우 채널에 연결, 나머지 제어 핀은 다른 회로도 참조
