If you’ve ever built anything with an Arduino, a Raspberry Pi, or a Particle device, you’ve probably heard the term “NeoPixel”*. That’s because they’re used everywhere in the Maker and professional engineering communities. Open up the hood of any project that blinks, flashes, or glows, and there’s probably a NeoPixel inside.
Why are NeoPixels so great?
NeoPixels are unique because they make it easy to create beautiful displays and animations. Most full color (RGB) LEDs are actually composed of three individual LEDs that can be combined in different brightness ratios to create the full spectrum of visible light. Unfortunately, wiring up so many RGB LEDs is challenging, and most LED projects end up looking like a bird’s nest of wires before anything else.
NeoPixels or, more specifically, the WS2812B LED from WorldSemi, solve this problem by packaging up each of the red, green, and blue LEDs with a small microcontroller into a package that can be arranged in series with other LEDs and controlled with a single wire. Even better, each of those LEDs can be addressed individually, so you can change the color of the 12th LED in your chain without affecting any of the others. Pretty neat!
What’s changing?
With so many NeoPixels out in the World, we thought you’d want to know that the standard behavior of new WS2812B LEDs is about to change. The original manufacturer, WorldSemi, released a low visibility change notice last December that is just starting to hit new runs of their WS2812B NeoPixels.
All of the changes to the WS2812B seem to be back-ported improvements from a successor to the WS2812B, the scarcely available WS2813. In addition to the changes we’ll discuss below, the WS2813 also includes a second data wire for redundancy in case one pixel in the LED chain burns out.
Confusingly, the upgraded WS2812Bs have the same part number as the old ones (still WS2812B), but behave differently. We’ve included a roundup from the Upgrade Notice we obtained from WorldSemi. All quoted texts are directly copied from the English release, which is available in PDF form at the bottom of this post:
1. “RGB port refresh rate increased from 400Hz to 2000Hz, there’s LOW Frame Frequency and No Flicker appear in HD Video Camera, it improves excellent Large-Screen display effect.”
This is a nice upgrade. The higher PWM refresh rate reduces flickering, and make it possible to do persistence of vision and other fast motion projects with WS2812B LEDs. There is no change needed in the software driving the WS2812B to take advantage of this feature.
2. “RGB port current-output reduced from 17.5mA to 16.5mA, it can’t be recognized by naked eyes and won’t affect the mixed OLDs & NEWs. However, it’s recommended to separate these old & new chips if your demand performance-critical.”
The current draw of the new WS2812Bs is slightly reduced, apparently without a visible change to the brightness of the LEDs. Because the new LEDs will have the same part number, WorldSemi recommends separating your inventory of parts if that change in current draw is meaningful to your application. While not significant for a single LED, a project like the Particle-powered L3D Cube, which leverages as many as 4,096 LEDs, would have reduced current draw of up to 4 amps! That’s a big change.
3. “Old & New chips go all the way in PINs, application circuits, operating voltage, and PCB drawings, and the software is also fully compatible.”
It sounds like WorldSemi is saying that the old and new WS2812Bs are fully pin, voltage, and software compatible. You’d think that you could drop in the new ones without any impact to your project, except…
4. “Old & New chips are exactly the same as in Timing, Data transmission and Data structure. However, the Reset Time increased from >50us to >280us. It won’t cause wrong reset while interruption, and what’s more, it supports the lower frequency and inexpensive MCU. When the “Reset Time<280us”, don’t mixed up and kindly please make necessary amends.”
According to WorldSemi, the new WS2812B NeoPixels have a longer required reset interval, up to 280us from 50us.
This is the kicker that tripped us up. One of our products, the Internet Button for the Particle Photon, includes 11 WS2812B LEDs arranged in a circular display alongside an accelerometer, magnetic buzzer, and 4 click buttons as a prototyping platform for simple IoT applications.
While completing quality assurance testing on the manufacturing line, our tried and true test firmware was suddenly failing to illuminate the NeoPixels on our factory fresh Internet Buttons. Why? Our test firmware included a reset delay of only 10us, well below the new 280us minimum. As a result, we had to update our test firmware as well as Internet Button and NeoPixel firmware libraries to accommodate the new minimum reset delay.
In other words, the new WS2812B NeoPixels, which carry the same part number as the old ones, may cause breaking changes to the behavior of your project. According to the release, this change will affect all new WS2812B parts produced by WorldSemi.
Be warned! Hopefully this saves you some debugging time. For those interested in reading the original change notice, it’s available below in both English and Chinese:
Happy Hacking,
The Particle Team
*Neopixel is a registered trademark of Adafruit Industries.