Quick Links

I sell on Tindie

What is Pixelblaze?

pixelblaze_small.gif

Pixelblaze V2 is an advanced LED pattern development engine. It makes it fast and fun to write new patterns with its web-based live editor and highly optimized expression engine. Pixelblaze can store hundreds of patterns and lets you write new ones by entering mathematical expressions or code that update live as you type. No more time consuming compile, upload, test cycles! Pixelblaze is optimized for speed and can produce hundreds of frames per second for extremely smooth animations.

Pixelblaze was designed for APA102 LEDs (aka DotStar). These LEDs are state-of-the-art and provide rock solid updates, faster refresh cycles, and the possibility of a dynamic range well beyond 0-255. Pixelblaze also supports WS2812 (aka NeoPixel) LEDs.

Pixelblaze also supports input from websockets and IO pins. The analog digital converter (ADC) can be used in patterns, as well as 4-5 input/output pins. 

How Does it Work?

Pixelblaze has WiFi built-in and serves up a web page with a pattern list and pattern editor. Changes in the editor are compiled on the fly and updated in Pixelblaze so you can see your changes live.

On the chip, the LED pattern engine uses high speed fixed point math and pipelines data to the LED strip while the next pixel is being calculated. Frame rates of several hundred frames per second are possible, yet the engine can generate patterns for arbitrarily long strips of LEDs (at a reduced frame rate).

IMG_9066 snap.jpg

Pixelblaze has an HDR color mode for APA102 LEDs that can produce incredibly high dynamic range of intensities. This means patterns can still look beautiful at very low light settings, adds subtle tones between transitions, and can be driven with a range that is not possible on other LEDs and is not available in most LED driver libraries.

 

What's new in V2?

v2 screen.png

Pixelblaze V2 adds a whole new editor with inline syntax and runtime error highlighting, a redesigned pattern engine and compiler, and a whole new range of language features. It now supports a subset of JavaScript for control-flow, loops, functions, etc., but retains the same simple expression capabilities for generating patterns. Arrays are also supported and can be used for creating sprite or particle effects. Its also about 30% faster than V1 running the same patterns!

WS2812 (aka NeoPixel) LED support is also new in V2. If you don't need the dynamic range or refresh rates of APA102 LEDs, or have a project already built out with WS2812/NeoPixels, Pixelblaze can now drive these LEDs as well. Most patterns will work without modification and can be calculated on the fly. More complex patterns can use the new arrays support to fully or partially buffer patterns and still work with WS2812's timing requirements.

Also new in V2 is an automatic discovery feature. If enabled and it has an internet connection, Pixelblaze reports it's IP address so that you can find it without having to scan your network. This feature is completely optional, Pixelblaze won't "call home" unless this feature is enabled.

 
 

Why Pixelblaze?

I created Pixelblaze because I wanted a better, faster way to write patterns for LED strips. I've used dedicated LED controllers and microcontrollers like Arduino, and I always felt that the compile, upload, and test iteration was cumbersome. Getting fast frame rates meant using cumbersome fixed-point math libraries as most of microcontrollers are much slower when working on floating-point numbers. 

It was designed to be embeddable and integrated into LED art pieces. Because it's 100% programmed over WiFi, the pattern can be written or updated AFTER it has been installed without needing to attach any cables.

If you've used Arduino to generate patterns for LED strips you'll appreciate the live compiler and lightning fast fixed point math engine.

Who Can Use Pixelblaze?

Pixelblaze is easy to use, and can be used as a pattern selector without any math. Out of the box, or embedded in a art piece, Pixelblaze is usable by anyone (some soldering required).

Pixelblaze really shines in the hands of someone that is familiar with programming and is comfortable writing mathematical expressions in a C-like syntax or that can write code. If you are already doing this with a microcontroller, Pixelblaze was made for you.

If you aren't a coding wizard, don't worry, many people with limited programming experience have found Pixelblaze's editor approachable and fun to use. Real-time editor, instant feedback, and expression-centric pattern generation means you won't be pulling your hair out trying to find that missing semicolon or curly brace. Even run-time errors that would usually just crash your program are harmless and show up right in the editor.

 
 

Specs

IMG_20180111_160806.jpg
  • ESP8266 @ 160MHz.
  • 39mm x 32mm including antenna and USB connector.
  • 5mm screw terminal OR .1" pin header for attaching LED strip with 5V, data, clock, and ground.
  • Powered by micro-USB (1.8A pass-through) or 5v back-feed from the strip with a 3.3v Regulator for the ESP8266.
  • Level shifters to drive APA102, APA102C, DotStar, WS2811, WS2812, WS2813, NeoPixel. Supports any RGB color-order.
  • Can drive APA102 LEDs at anything from 250khz to 20MHz (selectable).
  • 3MB of pattern storage can hold hundreds of patterns with previews and comes preloaded with dozens of patterns and annotated examples.
  • Using included patterns as a benchmark, Pixelblaze can generate between 12,000-45,000 pixels per second, and can drive up to 5000 pixels.
    • 100 LEDs: 120-400+ FPS (very fast animations, special effects, POV)
    • 1000 LEDs: 12-40+FPS (animations, backgrounds)
    • 5000 LEDS: 2-4+ FPS (slow-fading backgrounds, ambiance)
  • Memory available for writing patterns (32 bit each): 128 global variables, 512 stack variables (recursive functions supported), 64 arrays, and 3072 array elements gives quite a lot of room for complex patterns.
  • One input with pull-up for changing patterns or entering WiFi setup mode.
  • 4-5 general purpose IO ports available for buttons, etc. One pin is shared with WS2812/NeoPixel support.
  • ADC input pin for reading analog values up to 1 volt, sampled once per frame.