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

아두이노로 RGB 매트릭스 오디오 비주얼라이저 만들기 – 단계별 가이드

부품 및 소모품

부품 수량 비고
아두이노 우노 (Arduino UNO) 1
Adafruit 네오픽셀 쉴드 (NeoPixel Shield for Arduino) 1 40개 RGB 네오픽셀(WS2812) 내장
스파크펀 스펙트럼 쉴드 (SparkFun Spectrum Shield) 1 MSGEQ7 7밴드 그래픽 이퀄라이저 필터 2개 탑재
ProtoStax 아두이노용 인클로저 1 스택형 모듈러 인클로저 (우노/메가 호환)
SPST OFF-(ON) 블루 푸시버튼 스위치 1
3.5mm 아이솔레이티드 스테레오 잭 패널 마운트 2
90도 앵글 3.5mm 오디오 케이블 2
3.5mm 스테레오 오디오 패치 케이블 (수-수, 6피트) 1

필요 도구

프로젝트 소개

이 글에서는 아두이노, RGB LED 매트릭스 쉴드, 오디오 스펙트럼 분석기 쉴드를 사용해 RGB LED 매트릭스 오디오 비주얼라이저를 만들고, 인클로저에 넣어 완성된 프로젝트로 음악 시스템 옆에 두고 멋진 라이트 쇼를 즐기는 방법을 설명합니다.

오디오 스펙트럼 분석

SparkFun의 Spectrum Shield를 사용합니다. 두 개의 MSGEQ7 칩이 스테레오 오디오 입력을 7개 주파수 대역(채널당)으로 분할하고, 아두이노의 ADC로 각 대역의 진폭을 읽습니다. 아두이노 샘플 스케치가 제공됩니다.

RGB LED 매트릭스

Adafruit의 NeoPixel Shield를 사용합니다. 40개의 RGB 네오픽셀(WS2812)이 체인 형태로 연결되어 있으며, 단일 와이어로 제어됩니다. Adafruit_NeoMatrix 라이브러리로 매트릭스 접근과 LED 제어가 간편합니다.

인클로저

ProtoStax는 스택형 모듈러 인클로저 시스템으로, 프로토타입 단계별로 보호와 개방성을 모두 제공합니다. 측면 벽과 상판을 나중에 추가할 수 있고, 여러 유닛을 나란히 또는 위아래로 쌓을 수 있어 확장성이 뛰어납니다. 투명 아크릴로 제작되어 라이트 쇼를 감상하기 좋고, 고무 발이 있어 표면을 보호합니다.

1단계: 아두이노를 인클로저 베이스 플레이트에 장착

아두이노 우노를 베이스 플레이트에 장착하고 피트와 하드웨어를 추가해 '플랫폼 구성'으로 준비합니다. 단계별 이미지와 애니메이션 GIF로 과정을 확인하세요.

2단계: SparkFun Spectrum Shield 준비

Spectrum Shield에는 헤더가 없습니다. 다행히 NeoPixel Shield에 스태킹 헤더와 일반 헤더가 모두 포함되어 있습니다. NeoPixel Shield를 맨 위에 올리고 싶으므로 일반 헤더를 사용해 플러시 마운트하고, 스태킹 헤더는 Spectrum Shield에 사용합니다.

하지만 스태킹 헤더를 꽂으면 아두이노 우노의 USB 및 전원 포트가 간섭되어 딱 맞지 않습니다. 이를 해결하기 위해 두 가지 수정을 했습니다:

이제 완벽하게 장착됩니다.

3단계: Adafruit NeoPixel Shield를 Spectrum Shield의 스태킹 헤더에 장착

NeoPixel Shield를 Spectrum Shield 위에 올립니다. 동봉된 일반 헤더를 납땜하고, 터미널 커넥터도 납땜했습니다(이 예제에서는 모든 LED가 동시에 켜지지 않으므로 아두이노 전원으로도 충분합니다).

4단계: 데모 코드 분석

데모 코드는 두 부분으로 나뉩니다:

전체 코드는 GitHub에서 확인 가능합니다.

스펙트럼 분석

STROBE와 RESET 핀에 디지털 시퀀스를 써서 MSGEQ7 칩을 초기화한 후, 7개 주파수 대역의 크기를 순차적으로 읽습니다. STROBE 핀을 펄스해 다음 대역 읽기를 시작합니다. 값은 Frequencies_One[7]과 Frequencies_Two[7]에 저장되며, 10비트 ADC로 읽으므로 0~1023 범위입니다.

7개 대역: 63Hz, 160Hz, 400Hz, 1kHz, 2.5kHz, 6.25kHz, 16kHz.

이를 BASS(63, 160Hz), MID_RANGE(400Hz, 1kHz, 2.5kHz), TREBLE(6.25kHz, 16kHz) 세 범주로 그룹화했습니다.

RGB 매트릭스

네오픽셀 쉴드의 좌표계와 LED 번호 체계를 이해하는 것이 중요합니다. [0,0]은 항상 좌상단입니다. 쉴드는 5x8(또는 8x5) 매트릭스이며, 물리적 LED #0은 우상단에 있습니다(귀여운 Adafruit 로고로 표시). 진행 방향은 행 방향(수평) 또는 열 방향(수직)일 수 있습니다.

이 예제에서는 7개 주파수 대역을 8개 차원(한 칸 비움)에, 진폭을 5개 차원에 매핑했습니다. 원점을 좌하단(최저 주파수, 최저 진폭)으로 두고 위로 올라가도록 설정했습니다. 이를 위해 네오매트릭스 초기화 시 WIDTH=5, HEIGHT=8, TOP-RIGHT, COLUMNS PROGRESSIVE 옵션을 사용했습니다.

각 행(주파수 대역)마다 좌/우 채널 중 큰 값을 취해 0~1023 범위를 5개 열로 매핑합니다(나눔 계수 204). matrix.drawPixel()로 픽셀을 그립니다.

HSV 색상 휠을 사용해 부드러운 색상 전환을 구현했습니다. matrix.ColorHSV()는 32비트 색상을 반환하지만 drawPixel()은 16비트 색상을 기대하므로, matrix.setPassThruColor()로 우회하여 32비트 색상을 적용합니다.

색상 구성

3가지 색상 구성 제공:

주파수 범위별(BASS, MID, TREBLE) 기본 색조(hue)를 다르게 설정할 수 있도록 했습니다.

5단계: 테스트

작동 테스트 영상 참조 (원문 링크).

6단계: 인클로저 마무리

상판 브레이싱, 측면 벽, 오디오 케이블, 상판을 순서대로 조립합니다. 단계별 이미지와 애니메이션 GIF로 과정을 확인하세요.

7단계: 완성품 전시

이제 음악 시스템 옆에 두고 직접 만든 오디오 비주얼라이저로 멋진 라이트 쇼를 즐길 수 있습니다!

8단계: 더 나아가기

  1. 패널 마운트 스테레오 잭을 측면 벽에 추가해 배선을 내부로 정리
  2. 더 다양한 라이트 패턴과 색상 구성 추가
  3. 시리얼 입력으로 주파수 범위(BASS, MID, TREBLE, ALL) 선택 기능 추가
  4. 순간 푸시버튼 스위치로 색상 구성 전환, 인클로저에 구멍 뚫어 장착
  5. 두 번째 스위치로 표시 주파수 범위 전환 추가
  6. 아크릴 표면에 페인터 테이프 붙이고 드릴로 구멍 뚫기 (스테레오 잭 5/16", 스위치 0.47")
  7. 상판 표면을 가볍게 샌딩해 빛 확산 효과 내기

관심 있으시면 오디오 잭, 스위치, 불투명 확산판이 적용된 업데이트 버전을 제작해 공유하겠습니다. 댓글로 알려주세요!

코드

GitHub 저장소: ProtoStax Audio Visualizer Demo

제조공정

  1. K30 CO2 센서: 실시간 실내 공기질 모니터링
  2. 1Sheeld와 아두이노로 시각/청각 장애인 간 소통 돕기
  3. 스마트 저금통 만들기: 아두이노 나노로 동전 인식기 제어하기
  4. 아두이노 나노와 MAX7219로 만드는 24x16 LED 퐁 게임 콘솔
  5. 아두이노 오디오 주파수 감지기 - 고감도 사운드 모듈로 최대 음량 피크 주파수 측정
  6. 아두이노 블루투스로 LED 제어하기 - HC-05 & MIT App Inventor 입문 가이드
  7. DFRobot 정전식 지문 인식 센서 아두이노/ESP8266 연동 가이드
  8. 아두이노 우노와 DFPlayer Mini로 오디오 재생하기 - 단계별 가이드
  9. 빌리 배스 피쉬를 오디오 소스에 맞춰 움직이게 만들기 - 단계별 가이드
  10. 아두이노 RGB LED 컬러 믹서: 입문자 친화적 DIY 프로젝트