How It Works

The brain of the WS2811 controller is an Arduino microcontroller.  One Arduino can control up to eight WS2811 strings of 50-bulbs each and eight strings of 50-bulb "dumb" RGB strings.  An network board is connected to the Arduino, allowing it to communicate on an Ethernet network.  

A program is installed on the Arduino (in Arduino lingo, a "sketch") that allows the Arduino to listen for DMX commands coming from xLights on a laptop computer (or from Falcon Player running on a Raspberry Pi).  These DMX commands originate from xLights or Falcon Player, travel through Ethernet, then enter the Arduino through it's network board.  The Arduino then changes the WS2811 and RGB lights that are connected to it.  

The ws2811 and RGB strings are powered from a computer power supply.  This provides 5V of power to the ws2811 strings and 12V of power to the RGB strings.  I discovered that this particular computer power supply did not provide quite enough 5V power (it was under 5V), so the Arduino and/or network board would occasionally crash and/or lose its network connection.  To solve this problem, I am powering the Arduino with a 6V DC "wall wart" power adapter, then the network board gets its power from the Arduino.

Connecting the ws2811 strings to the Arduino is easy as each string has a single data wire that connects to an output pin on the Arduino. Connecting the RGB strings to the Arduino is much more difficult.  The three data wires on the strings require 12V and also enough amps to drive the strings.  The Arduino can only provide low-amp 5V power on its output pins.  To solve this, I connected relays to the Arduino that to switch 12V on-and-off from from the computer power supply to the strings.  For six RGB strings that have three data wires each, that means wiring 18 relays!  It's a lot of work.

I discovered that the controller would randomly light-up the wrong bulbs on the ws2811 strings.  To fix this, I placed 220-ohm resistors between each string's data lines and the Arduino.  This absorbs "signal bounce" that causes stray signal from one string's data wire to affect the other strings' data wires.

Last modified on Tuesday, 02 May 2017 20:06

Leave a comment

More in this category:


Learn how to make computer controlled, affordable, and Internet capable Christmas lights.


See what animated lights (a.k.a. "props") I have made for my Christmas display.

Build It

Step-by-step instructions how to build your own Christmas light display.


Project photos, videos, and news coverage.


FAQs, instructional videos, and community support.

Go to top
JSN Boot template designed by