라즈베리 파이 & 아두이노로 웹 제어 LED 애니메이션 구축하기
부품 및 소모품
| 부품 | 수량 | 비고 |
| 라즈베리 파이 3 모델 B | 1 | 웹 서버 호스트 (파이썬/플라스크) |
| 아두이노 우노 (또는 나노, 메가) | 1 | LED 스트립 직접 구동 (메가는 더 많은 픽셀 가능) |
| 네오픽셀(NeoPixel) 스트립 (WS2812B) | 1 | 개별 제어 가능한 RGB LED 스트립 |
소프트웨어 및 앱
- 아두이노 IDE
- ALA (Arduino Light Animation) 라이브러리 - 30+ 내장 애니메이션, 팔레트 제공 (블로그, GitHub)
- 파이썬 3,
pyserial, flask (라즈베리 파이)
- AlaWeb - 웹 제어 서버 (GitHub)
프로젝트 개요
ALA 라이브러리로 아두이노에서 복잡한 LED 애니메이션을 간단히 구현하고, 라즈베리 파이가 웹 인터페이스를 제공하여 스마트폰/PC 브라우저에서 애니메이션, 색상, 속도, 밝기를 실시간 제어합니다. USB 시리얼로 라즈베리 파이 ↔ 아두이노 통신.
짧은 스트립(≤10 LED)은 아두이노 5V 핀으로 전원 공급 가능
배선
기본 연결 (소형 스트립, USB 전원)
- 아두이노 GND → WS2812 GND
- 아두이노 5V → WS2812 5V
- 아두이노 핀 6 → WS2812 Ctrl/Din
고전력 연결 (긴 스트립, 별도 5V 전원 필수)
각 RGB LED 최대 60mA (백색 최대 밝기). 예: 2m, 60LED/m → 7.2A 필요.
- 전원 GND → 아두이노 GND + WS2812 GND (공통 접지 필수)
- 전원 5V → 아두이노 5V 핀 (아두이노도 동시 공급) + WS2812 5V
- 아두이노 핀 6 → WS2812 Ctrl
⚠️ 아두이노 5V 핀으로 전원 공급 시 전압 레귤레이터/보호 회로 우회. 주의 필요.
아두이노 설정
- 아두이노 IDE → 라이브러리 매니저 → ALA 라이브러리 설치
- 예제 열기: 파일 → 예제 → ALA → RgbStripSerial
NUM_PIXELS 상수를 본인 스트립 LED 개수로 수정
- 업로드 (Ctrl+U)
- 시리얼 모니터 열기 (9600 보드레이트, 줄바꿈 'Newline')
- 환영 메시지 확인 후 명령어 테스트
시리얼 명령어 레퍼런스
| 명령 | 형식 | 설명 |
| 애니메이션 | A=[코드] | AlaLed.h 참조 (예: 101=켜기, 251=라르손 스캐너, 242=다른 효과) |
| 밝기 | B=[0-100] | 백분율 |
| 주기 | D=[ms] | 애니메이션 주기 (500-5000 권장) |
| 색상 | C=[HEX] | RGB 헥스 (예: E8A240) |
| 팔레트 | P=[0-5] | 내장 팔레트 인덱스 |
라즈베리 파이 설정
- 라즈비안 OS (스트레치 이상) 설치 완료, 인터넷 연결 상태
- 라이브러리 설치:
sudo pip3 install pyserial flask
- 프로젝트 디렉토리 생성:
mkdir /home/pi/AlaWeb && cd /home/pi/AlaWeb
- AlaWeb 다운로드:
wget https://github.com/bportaluri/AlaWeb/archive/master.zip && unzip master.zip
- 아두이노 USB → 라즈베리 파이 연결
- 실행:
cd AlaWeb-master && sudo python3 AlaWeb.py
- 자동 포트 감지 실패 시:
sudo python3 AlaWeb.py /dev/ttyACM0
실행 성공 시 표시된 URL(예: https://raspberrypi.local:5000)로 브라우저 접속. 버튼 기반 웹 UI에서 애니메이션 제어 가능.
코드
AlaWeb - 파이썬/플라스크 미니 웹 서버: GitHub
ALA 라이브러리 - 아두이노 LED 애니메이션 라이브러리: GitHub, 상세 문서
회로도