I’ve seen a lot of Pixel LED projects and know every maker does things differently. I wanted to show you what I am doing for my Pixel LEDs. This post will give you an Arduino Pixel LED Controller build idea.
The inspiration for this post was an old Pixel LED kit I found in my junk box (see the lead image). The locally made kit includes a small pixel LED controller module, a string of fifty WS2811S bullet LED pixels, and a compact 5V/2A switch mode power supply.
The Pixel LED controller (see below) is a bare minimum circuitry centered on a PIC16F76-I/SP microcontroller (not much is known about this design). The controller module holds a single 3-pin male-header (5V-DATA-GND pins) to plug the RGB Pixel LED strip connector (RED-GREEN-WHITE wires).
The LED strip has two key connection points: the input connector and the auxiliary power wires. The auxiliary power wires provide an alternate (and easier) connection point for LED strip power (5VDC).
Correct me if I’m wrong, but the WS2811S is a famed SOP8/MSOP8 LED driver chip widely used in common Pixel LED strips. It seems that WS2811S and WS2811 are “electrically” similar, but their packages are different (http://www.world-semi.com/DownLoadFile/106).
So, what do I learn from all of this? I can easily light up a festive location with these novel Pixel LED kits without needing extra hardware and spending much time on lengthy coding tasks. But what’s the fun in that? So, I making my own version out of readily available components. I will get more flexibility and can learn something new (win-win in my book)!
There are as many ways to do this as there are microcontrollers in the market. I wanted to be sure to use the most easy and popular piece of hardware So, I like using an Arduino Uno as the core part of my Pixel LED controller design. In terms of, I have some Attiny & PIC series microcontrollers, which are also highly recommended by others, but have not had to use them yet for similar projects. I will stick with my Arduino!
I remember my first writeup on this https://www.electroschematics.com/arduino-addressable-leds-splendid-projects/
And, a couple of sequels:
RGB Bullet Pixel LEDs
The 12mm RGB pixel we see here is the “bullet” type, and each waterproof pixel has an RGB LED and a WS2811S pixel controller chip. The RGB LED is usually an 8mm diffused type (12mm refers to the size of the mounting hole for installation). The pixels draw a maximum of 60mA per pixel at 5VDC (20mA each for red, green and blue). These are individually addressable RGB LEDs. That means, we can make each LED turn any one of 16 million colors with just 3 wires!
Arduino Pixel LED Controller
Let’s make an Arduino Pixel LED controller for controlling the common pixel LEDs.
First, you need to download a dedicated Arduino Library (FastLED) for the controller (https://codeload.github.com/FastLED/FastLED/zip/master).
The FastLED library provides a few pre-configured color palettes, and makes it easy to settle your own color schemes with palettes.
After installing the FastLED library, upload the “ColorPalette” example code included in the FastLED library to your Arduino Uno board. Note, you have to change the “NUM_LEDS”variable to the number of LEDs in your LED strip.
You can see the wiring helper in the table below.
|LED SMPS (5VDC) →||PIXEL LED STRIP →||ARDUINO UNO (Must be powered independently)|
|DATA IN (DIN)||D5|
*** For a standalone application, you can power your Arduino from the same 5VDC SMPS as the LEDs. Connect the LED’s 5V to the 5V pin on the Arduino (not Vin). If so, don’t use the DC jack (and the USB) on the Arduino. Only try this if you know what you are going to do!
This is the link to get the Arduino Sketch (adapted example code) I used for my quick tests https://drive.google.com/file/d/126TJSq6gmLH0kHoL6FmNEBIQhyqsrrtn/view?usp=sharing
Simulate your “FastLED” codes https://wokwi.com/arduino/libraries/FastLED/ColorPalette
I’ve just experimented with the library example (as a starting point). But you can modify the same example code to create fabulous visual effects (https://wp.josh.com/2014/05/13/ws2812-neopixels-are-not-so-finicky-once-you-get-to- know-them/).
I conducted my experiments first with the 50xW2811S LED strip, and it functioned well. Power for the pixels was supplied from its own 5V/2A adapter, and data for the pixels from the example code running on the Arduino Uno.
The next thought was to scale it down using a compact Pixel LED stick that requires much less power. So, I replaced the huge LED strip with a CJMCU LED Stick (CJMCU-2812-8) and tailored the example code for my new hardware setup. That’s all about it.
More about CJMCU-2812-8: https://store.qkits.com/cjmcu-2812-8-8-ws2812-5050-rgb-led.html
A few random test snaps:
In conclusion, now you know how to run your pixel LEDs with an Arduino LED controller. Recall, there was a time when making a smart LED system was not always an easy task. But today we have so many options in front to make it without any difficulty. Give it a try 👍
Personally, I would not want to go with this concept to mold a commercial model because an Arduino microcontroller is not only rather beefy but overpowered for simply driving a smart LED strip. Despite a working prototype, I wanted to switch out the Arduino for something else. Digging through a bag of old prototypes and parts, I found several Attiny & PIC microcontrollers lying around. These are hopefully a better pick for my odd project ideas. I also had a bag of Raspberry Pi Pico boards left over from some previous projects!