왜 WiFi 간섭 때문에 LED 스트립이 깜박이는가
Source: Dev.to

Source: Hackster.io – WiFi Controlled Desk Lamp project
불꽃 효과 LED 스트립을 만들었습니다. Wi‑Fi를 끄면 완벽히 동작하지만, Wi‑Fi를 켜자마자 마지막 20개의 LED가 깜빡이거나 몇 분마다 전체 스트립이 혼란스러워집니다. 코드는 올바른데 프로젝트가 신뢰성이 떨어지는 느낌입니다.
문제는 눈에 보이지 않는다
WS2812B 프로토콜은 버퍼링 없이 연속적인 비트 스트림을 요구합니다. 스트림이 몇 마이크로초라도 중단되면 LED가 혼란스러워져 잘못된 색을 표시합니다.
Wi‑Fi가 활성화되면 ESP8266은 라디오 인터럽트를 처리해야 합니다. 이 인터럽트가 LED 데이터 스트림을 일시 정지시켜 프레임 중간에 끊깁니다. 그 결과 스트립 끝부분이 깜빡이거나 색이 틀어지거나 무작위 플래시가 발생합니다. 이는 하드웨어 타이밍 충돌이며 스케치 버그가 아닙니다.
세 가지 해결책
완벽한 해결책은 없으며, 트레이드‑오프를 선택해야 합니다.
Fix 1: 인터럽트 비활성화
#define FASTLED_ALLOW_INTERRUPTS 0
#include
깜빡임은 사라지지만 Wi‑Fi가 제때 응답하지 못해 5–10 분마다 워치독 리셋이 발생할 수 있습니다. 가끔 리셋이 허용되는 경우(예: 천장 조명)에는 괜찮지만, 장시간 운영되는 설치에는 적합하지 않습니다.
Fix 2: 재시도 횟수 감소
#define FASTLED_INTERRUPT_RETRY_COUNT 0
#include
일부 사용자는 이 방법으로 깜빡임이 사라지고 리셋도 발생하지 않는다고 보고했습니다. 효과는 LED 개수와 스트립 길이에 따라 다릅니다.
Fix 3: 비트‑뱅잉 대신 하드웨어 시리얼 사용
ESP8266 UART 하드웨어 모듈을 사용하면 DMA가 LED 데이터를 전송하면서 Wi‑Fi를 계속 사용할 수 있습니다. 이를 위해 NeoPixelBus 라이브러리가 필요합니다:
#include
NeoPixelBus> strip(LED_COUNT, pixelCount);
LED 코드를 다시 작성해야 하고 FastLED 전용 기능 및 병렬 출력 지원을 잃게 되지만, Wi‑Fi가 켜진 상태에서도 스트립이 안정적으로 동작합니다.
대부분의 메이커가 실제로 하는 일
문제 해결에 애쓰다 보면 메이커들은 보통 다음 중 하나를 선택합니다:
- 전용 RMT 하드웨어가 있어 Wi‑Fi와 독립적으로 LED 타이밍을 처리하는 ESP32로 전환한다.
- Wi‑Fi 없이 LED 스트립을 사용하고 대신 유선 시리얼 연결을 사용한다.
- 가끔 발생하는 깜빡임을 감수하고
FASTLED_ALLOW_INTERRUPTS 0을 타협점으로 삼는다.
실제 답변
- Wi‑Fi와 신뢰성 있는 LED가 모두 필요하다면 ESP32를 사용하세요. RMT 주변 장치가 WS2812‑계열 LED를 Wi‑Fi 인터럽트에 영향을 받지 않게 구동합니다.
- ESP8266에 고정돼 있고 Wi‑Fi가 필요하다면 UART1 또는 I²S 하드웨어 출력을 이용한 NeoPixelBus로 마이그레이션하세요. 작동하지만 빠른 해결책은 아닙니다.
- Wi‑Fi가 필수가 아니라면 그냥 끄세요; LED는 완벽히 안정됩니다.
이 충돌은 코딩 오류가 아니라 하드웨어 제한입니다.

