LEDs have a special place in every maker's heart, and it's because we all love the ability to create light at moment's notice. Almost every project I have made over the last two decades has included some form of LED lights in it, and thanks to advancements in technology, lighting up things with LEDs has never been easier.
About a year and a half ago, I purchased a spool of RGB LEDs that were mounted onto a strip to use as the under-shelf lighting for my workbench. As you can tell from the images below, that worked out very well for me. Unfortunately, the LEDs in this strip were all the same colour at once and were not individually addressable.
Fast forward 18 months, and Adafruit has started selling some LED strips that feature individually addressable LEDs. Called Neopixels, the strips contain either 30, 60, or 120 LEDs per meter. Each LED is actually a WS2812 Integrated Light Source that features red, green, and blue LEDs that have been integrated alongside a driver chip into a tiny surface-mount package that is controlled through a single wire.
This chip-per-LED design allows the NeoPixel to reduce the bulk of heavy wiring, and allows for a more self-contained package. Each Neopixel strip is sold by the meter, with a limit of 4 meters and 5 meters in length based on how many LEDs the strip contains per millimetre. The strips can be ordered with or without a weatherproof housing that is easily removable later.
In preparation for an upcoming article series, I ordered a one-meter strip of Neopixels that contained 60 LEDs per strip. I also ordered some custom made pigtail connectors that Adafruit sells just for the Neopixel line. Additionally, I ordered a female DC power adapter to 2.1mm jack to screw terminal block that will make connecting my Neopixel strip to DC power much easier.
While I have the education and knowledge to sit down and program a microcontroller to control a strip of individually addressable LEDs, I prefer to take the much easier path of using something that is easy to integrate with existing code. This was my main draw to the Neopixel; Adafruit has written a custom Arduino library and provided sample code to get things up and running quickly.
Adafruit says that the Neopixel line of products will work with most Arduino and Arduino compatible boards such as the Uno, Mega, Leonardo, and more, but it will not work with other "advanced" Arduino-like boards such as the Chipkit and Netduino boards. Basically any "Arduino compatible" that runs an 8-bit AVR with an 8-16MHz clock will work. Additionally, the Arduino Due and Teensy boards are compatible with the Neopixel lin.
Connecting the Neopixel strip to an Arduino is quite simple and only requires four wires to complete the circuit. In the diagram above (provided by Adafruit), you will see how to connect the strip to the Arduino. There is one small catch that is not pictured here. Adafruit recommends that before powering up any Neopixel strip, a 1000uF 6.3v or higher capacitor should be placed between the terminals on the DC Barrel jack connector. This helps prevent a massive surge in electricity from blowing out several of the LEDs in the strip.
For a one-meter, 60 LED strip of Neopixels such as the one I bought, Adafruit recommends a power supply that can produce a minimum of 1.2amps at 5V DC. As a safe buffer, a PSU that can output 3.6amps at 5V DC would be best. I am going to power mine with a small wall transformer that is capable of 5V at 2amps as it is what I have laying around at the moment. My future project will be battery powered, so I am not very worried about 3.5amps right now.
Additionally, Adafruit recommends connecting a 300-500 OHM resistor between the data pin of the Arduino and the data line on the Neopixel. This is another preventative measure to combat voltage spikes that may occur. Finally, Adafruit says that Neopixels should never be connected to a circuit if that circuit is already live, and that the ground line must always be connected first or the Neopixel will suffer damage.
With all the knowledge I need to get this strip of LEDs up and running, I think it is time to do just that. Following Adafruit's advice on how to connect and power the Neopixel, I broke out one of the many Arduino boards that I had laying around (about 50 now). Connecting everything was quick and easy, and it only took me about three minutes to find everything (most of that time was spent looking for a properly sized capacitor).
With everything connected, it was time to load up some code and get things going, but before I could get any programming started, I first needed to download the Neopixel library from Adafruit's Github. Installing the library is quite simple. I have pasted Adafruit's easy to follow instructions below.
Installation of the library is as follows:
1. Visit the Adafruit_NeoPixel library page at Github.com.
2. Select the "Download ZIP" button, or simply click this link to download directly.
3. Uncompress the ZIP file after it's finished downloading.
4. The resulting folder should contain the files "Adafruit_NeoPixel.cpp", "Adafruit_NeoPixel.h", and an "examples" sub-folder. Sometimes in Windows you'll get an intermediate-level folder and need to move things around.
5. Rename the folder (containing the .cpp and .h files) to "Adafruit_NeoPixel" (with the underscore and everything), and place it alongside your other Arduino libraries, typically in your (home folder)/Documents/Arduino/Libraries folder. Libraries should not be installed alongside the Arduino application itself.
6. Re-start the Arduino IDE if it's currently running.
With the library now installed, I am able to move on to the sample code that Adafruit has provided. This code is located in the file you downloaded from Github and is titled "strandtest.pde". This test runs the Neopixels through a few sequences, including color wipes, theatre chases, rainbow mode, and theatre chase rainbow mode. If everything works fine, then you can start modifying the code to match your needs. I am not going to go into this for this review as that could be an entire guide within itself. Check out the video below to see the test file in action and to see exactly how I wired things up. If you would like a tutorial on how to write custom code for the Neopixel line, please let me know in the comments, as I do all of this for the readers and want to write about what they want to see.
Overall, when you compare the Neopixel strips with the cheap Chinese LED strips I have purchased on eBay in the past, the Neopixel blows them out of the water. This is the first strip of individually addressable RGB LEDs that I have actually gotten up and running within five minutes of opening the package. The strip is extremely bright, and the colors are quite vibrant and well saturated. I did not notice any flickering or random dimming as I have seen on cheaper off-brand strips. The fact that Adafruit has an entire micro-site resource available for free is worth the extra few dollars you spend on Neopixels alone.
At the end of the day, I cannot recommend Neopixels from Adafruit enough. They are simple enough for even the most novice maker to get up and running, and for the advanced maker, the sky is the limit on what you can do with Neopixels. For that reason, the Neopixel strips from Adafruit have gained the honor of being my first perfect product review here at TweakTown.