You might know the Pixelstick. “nothing compares” is one of their statements. And this is true. At least price-wise. The Original Pixelstick retails for EURO 399,– here in Germany. I have always wanted one to at least try out some lightpainting with it.
The Pixelstick is a 188cm RGB lightstrip on a stick that plays bitmap files. It weighs 1,6kg, has a nice display to select files, has a remote release and runs on 8 AA batteries. Oh and it comes in a nice bag. Still 399,– is a bit steep.
The DIY approach
So I decided to build my own Pixelstick. As I have never handled the real thing, I don’t know the kind of features it has, but I know exactly which features I want in a device like this:
- USB powered
- SD Card Slot
- Display to select files
- Custom values for
- Start delay
- Repeat times
Luckily, Michael Ross already built something like this and it has some of the features, that I want. Software wise it runs an Arduino sketch. Hardware wise I think it is a bit dated and way to big. I am not a fan of the large Arduino MEGA and the LCD Display shield as it makes the device unnecessarily large, so I decided to swap some parts.
The LCD display alone is already bigger than my complete controller
I chose an Arduino MEGA 2560 Pro, a small OLED Display, a Micro-SD reader and a digital joystick, as the display does not come with buttons.
I sourced everything from aliexpress here are all the parts that I have used:
- 144 pixels/leds/m WS2812 Smart RGB Led Light Strip Black/ PCB
- MEGA 2560 PRO Embed CH340G/ATMEGA2560-16AU Chip
- 4pin 0.96″ White/Blue/Yellow blue 0.96 inch OLED 128X64
- Five Direction Navigation Button Module for MCU
- Micro SD card mini TF card reader module SPI interfaces
- MICRO USB To DIP Adapter 5pin Female Connector B Type
Total cost EURO 20,27 (almost 20 times less then the Pixelstick)
You also need a Micro USB cable, some wire, a soldering iron, solder, electrical tape and something to mount the LED strip on. I chose a piece of wood. For the case I used an old bluetooth receiver that I have no use of anymore. To program your Arduino you need the Arduino IDE.
Pinout on the Mega PRO is different, at least on the Version that I bought. The LED strip only needs 1 connection beside power, as it gets controlled through the PWM chip that lives on the Arduino. On mine pin 6 is a PWM pin. I power the LED strip directly from the Powerbank which is attached via Micro-USB. Please make sure to connect GND of the LED strip to GND of the Arduino or your strip will display false LEDs because of signal noise.
Pins for the OLED display are easy to find. beside GND and VCC it needs SDA and SCL, pins 20 and 21, respectively.
The SD card reader needs some more ports, but all are grouped together. 50, 51, 52, 53
The buttons are wired to digital pins, using the internal pull up resistor (activated in the Arduino sketch) I use pins 22, 23, 24, 25, 26
For reference here the complete circuit for the components I used
Soldering and building the case only took a few hours, a Saturday well spent.
I took the sketch from Michael and removed the libraries for the LCD Shield, which also handles button presses, rewrote the function that watches for keys and rewrote the parts that would display text on the display. I also implemented EEPROM saving of the brightness setting, all the other values are fine from the start and seldom need tweaking.
Thanks to the great Arduino community, figuring out how to address the different modules was easy enough for me, even not being a very seasoned programmer. There is for sure room for improvement, but at the moment it does what I need and I can always come back to the code in case I need a new feature or find a bug.
Here some more pictures of ‘lighty’ and of curse some results. Oh by the way, ‘lighty’ weighs only 240 grams (without battery). I am really happy, how this turned out. Only thing missing is a diffusion panel in front of the LEDs, but even the “8-bit” look is fine with me for now.
About the Author
Dirk Essl is an IT Solution Architect working for a German television network. He is very passionate and nerdy about various operating systems – he’s not a programmer, but he likes writing software if something that he needs is not available. He also runs caffenol blog and the biggest caffenol community on the web.