This post will describe how I used an Arduino to interface to the Ray Wu WS2811 Strobes. These are WS2811 protocol based White 3/4 Watt LED pixels, and are individually addressable using the WS2811 protocol. You can hook these up directly to a WS2811 controller and control each pixel independently, but you would use a bunch of channels (150 channels for a 50 node string), and any strobe effect would need to be custom supported in your controller or performed by your sequencing software, which may not be as fast strobing as you would like.
In this project, there is a DIP switch to select the start DMX address (8 bits, so only start addresses 1-255 can be used). There also is a jumper to select AUTO mode (self-running) and DMX mode. In DMX mode, it uses 1 channel to turn on the strobes and to set the speed.
Here is a video of it in action (in auto mode):
Strobes in Action Movie
What you will need:
- An Arduino
- 74HC165 shift register
- SN75176 or MAX485 Differential Bus Transceiver (rs485 transceiver)
- 8 position DIP switch
- A 6 volt 1.5a DC power source
- The arduino sketch at the end of this post
- And of course, Ray Wu WS2811 Strobes
I am not an electrical engineer. I do NOT claim to be a master of electronics. I tinker around with circuits until they do what I want (more or less). There may certainly be errors in the pseudo schematics or wiring diagrams I post. Use at your own risk. When in doubt, check with an expert. If you fry something or yourself, I am not responsible. This post accounts what *I* did to get these components to work for my purpose.
First up, we will build the shift register and DIP switch selector. While one can hook the DIP switches up directly to the Arduino, doing so will utilize 8 valuable pins. By using a shift register, you reduce the needed pin count down to 3 Arduino pins. You will use code in the sketch to cycle through the shifted bits to obtain the value of the DIP switches. note that the DIP switches are binary notation, such as:
DIP 1 = 1
DIP 2 = 2
DIP 3 = 4
DIP 4 = 8
DIP 5 = 16
DIP 6 = 32
DIP 7 = 64
DIP 8 = 128
So to set your start address to DMX channel 10, you would set DIP switches 2 and 4 to ON and everything else to off.
That was the hardest part since there are a lot of wires to connect. Next up, we need to connect the SN75176 or MAX485 Differential Bus Transceiver to the Arduino. This chip will allow you to receive DMX signal in and convert the signal to something the Arduino can understand. Follow the diagram below:
Note that you will be connecting the chip to the RX pin on the Arduino. Doing so will prohibit you from using normal Serial output such as Serial.print() functions since the UART is in use.
Next up, install a 3 pin jumper block. This jumper block will be used to set the mode of operation. A jumper across the first two terminals will result in it running in AUTO mode (a mode where the strobes start to flash as soon as power is applied). A jumper across terminals 2 and 3 will enable DMX mode where you can control the speed with a single DMX channel.
Lastly, you need to hook up the WS2811 Strobe pixels. I don’t have a pic handy, but you wire it as such:
Positive wire to your +6 volt power source (NOT to the Arduino embedded 5 volt regulator – the strobes draw too much power!!)
Negative wire to Ground
Data wire to Arduino pin 6
Grab the Arduino sketch from HERE and upload to your Arduino. Read through the code, it should all make sense on what values you can twiddle with if you feel the need or find bugs. The WS2811 strobe code was originally provided by justinj of AusChristmasLighting.com from THIS post. A BIG thanks to him for posting his work for all to share.
After you double check everything, set the jumper to the first 2 pins and plug everything in. If all goes well, the strobes should start flashing. To test DMX mode, unplug everything, set the jumper to pins 2-3, set the DMX start address DIP switches and power everything on. You should have speed control from the DMX channel you selected.