네오픽셀(NeoPixel)이라는 이름으로 더 잘 알려진 주소 지정형 RGB LED를 다룰 때 옆에 띄워 두는 데이터시트입니다. 아두이노나 ESP 계열 보드로 LED 스트립을 제어하다 보면 결국 핀 배치, 전원, 데이터 신호 타이밍을 다시 확인해야 할 때가 오는데, 그때마다 검색하지 않으려고 페이지를 캡처해 모아 두었습니다.
WS2811과 WS2812B는 무엇이 다른가
이름이 비슷해서 헷갈리는데, WS2811은 RGB 세 채널을 구동하는 드라이버 IC이고 LED는 따로 붙는 구조입니다. 그래서 12V 스트립처럼 칩 하나가 LED 여러 개를 한 묶음으로 제어하는 제품에 많이 들어갑니다. 반면 WS2812B는 제어 회로가 5050 크기 LED 패키지 안에 들어가 있는 일체형이라, LED 한 개마다 개별 색을 줄 수 있고 5V로 동작합니다.
공통점은 데이터선 한 가닥으로 여러 개를 줄줄이 이어 붙인다는 점입니다. 앞쪽 칩이 들어온 데이터 중 자기 몫인 24비트(색당 8비트)를 가져가고 나머지를 DOUT으로 다음 칩에 넘겨 주는 방식이라, 마이컴에서는 LED 개수만큼 색 데이터를 연달아 내보내기만 하면 됩니다. 비트 0과 1은 펄스의 High 시간 길이로 구분하기 때문에 타이밍이 꽤 빡빡하고, 그래서 대부분 직접 구현하지 않고 라이브러리(Adafruit NeoPixel, FastLED 등)를 씁니다.

데이터시트에서 먼저 볼 곳
처음 배선할 때는 핀 기능(VDD, GND, DIN, DOUT)과 권장 전원 전압부터 봅니다. 그다음이 데이터 전송 시간 표인데, 비트 0/1의 High·Low 시간과 리셋(한 프레임이 끝났다고 인식하는 Low 유지 시간)이 나와 있습니다. 같은 WS2812B라도 제조사나 리비전마다 리셋 시간 같은 값이 다르게 적혀 있는 경우가 있으니, 라이브러리 설정이 안 맞는 것 같으면 갖고 있는 제품의 데이터시트 값을 다시 대조해 보는 게 좋습니다. 색 데이터의 바이트 순서도 표에 나오는데, RGB 순서로 보냈는데 빨강과 초록이 바뀌어 나온다면 대부분 이 순서 문제입니다.

실제로 연결할 때 막히는 지점
LED 개수가 많아지면 전원이 제일 먼저 문제를 일으킵니다. 흰색 최대 밝기에서는 개수에 비례해 전류가 크게 늘어나므로, 보드의 5V 핀에서 바로 끌어 쓰지 말고 별도 전원을 쓰고 GND는 마이컴과 반드시 공통으로 묶어야 합니다. 스트립이 길면 끝쪽 색이 누렇게 변하는데, 중간중간 전원을 다시 넣어 주면 해결됩니다.
3.3V 출력 보드(ESP32 등)에서 5V로 구동하는 LED에 데이터를 주면 인식이 불안정할 때가 있습니다. 데이터시트의 입력 High 전압 조건을 보면 이유를 알 수 있고, 이럴 때는 레벨 시프터를 넣으면 안정됩니다. 첫 LED가 깜빡이거나 엉뚱한 색이 나오면 배선 길이, 전원, 레벨 순서로 확인해 보세요.