아두이노 & 네오픽셀 옵토커플러: 단일 핀으로 다중 릴레이 효율 제어
부품 및 소모품
| WS2812B 네오픽셀 LED 스트립 (5V, 300LED/5m, 60LED/m) |
10개 단위 절단 사용, 4개만 활용 |
1 |
| 저항 27kΩ |
LDR 직렬 연결용 (10kΩ 표시이나 27kΩ 권장) |
4 |
| 포토레지스터 (LDR, CdS) |
광의존 저항 |
4 |
| 5V 릴레이 모듈 (4채널) |
아두이노/라즈베리파이 호환 타입 |
4 |
| LED 램프 (테스트용) |
230V 전구 4개 |
1 |
| 아두이노 우노 (또는 ESP32 NodeMCU) |
예제에서는 ESP32 사용, 일반 아두이노도 가능 |
1 |
필수 도구
- 납땜 인두
- 일반 공구 (가정용/작업장 보유 수준)
앱 및 참고 자료
프로젝트 개요
아두이노 출력 핀 부족 시, 단일 핀으로 다수의 릴레이(또는 액추에이터)를 제어하는 방법입니다. 네오픽셀(WS2812B) LED 스트립의 각 픽셀과 LDR을 쌍으로 조합해 DIY 옵토커플러를 만듭니다. 하나의 아두이노 핀에서 시리얼 데이터로 여러 LED를 개별 제어 → 각 LED 빛이 대응하는 LDR에 조사 → LDR 저항 변화로 릴레이 구동. 이렇게 시리얼-병렬 변환(1→다수)을 구현합니다.
1단계: 네오픽셀 옵토커플러 제작
- 10개 LED 스트립 조각, 어두운 회색 폼, 브레드보드 조각, 검은 덕트 테이프 사용
- 각 LED와 LDR을 1:1로 마주보게 배치, 인접 채널 간 빛 간섭('light cross-talk') 차단이 핵심
- 실제로는 완전 차단 어려워 소프트웨어에서 LED 밝기 낮게 설정(15/255)로 간섭 최소화
2단계: 전자 회로 구성
ESP32 NodeMCU(3.3V 로직) 사용 예시. 네오픽셀 데이터 핀 → GPIO21. 네오픽셀과 릴레이는 5V로 구동 (ESP32 5V 핀 또는 USB 전원). 각 LDR-27kΩ 직렬 회로를 5V 릴레이 제어 입력에 연결. 픽셀 번호 1~4가 릴레이 1~4에 대응.
3단계: 소프트웨어 구현
Adafruit_NeoPixel 라이브러리 사용. ControlRelais(int RelaisNo, bool RelaisState) 함수로 특정 픽셀 온/오프. 루프에서 다양한 패턴(순차 점등, 역순, 교차 패턴)으로 릴레이 제어 시연. LED 밝기 15로 설정해 크로스토크 방지.
void ControlRelais(int RelaisNo, bool RelaisState) {
strip.setPixelColor(RelaisNo, RelaisState*15, RelaisState*15, RelaisState*15);
strip.show();
Serial.print("RelaisNo "); Serial.print(RelaisNo);
Serial.print(" = "); Serial.println(RelaisState);
}
소스 코드
전체 스케치: 네오픽셀 초기화, 시리얼 디버깅, 루프 내 패턴 제어, ControlRelais 함수 포함. GPL3+ 라이선스.
회로도
Fritzing 파일(neopixel_optocoupler_relais__hNIrhGIMtD.fzz) 제공