How cool would be to work on a computer which is more colorful than the usual white-gray-black trio? You probably know the cars from the movie Fast & Furious which had cool lights at the bottom. Nah, I thought it’s time to do the same with my ride: my workstation (with color effects!). 🙂 Before I go into the details, take a look at the finished upgrade (sorry for the bad image quality):
I use an HP Probook 640 which has an elevated (around 1cm high) docking station. The height of the docking station is just perfect for some kind of lighting: it’s big enough for a pack of leds, though it also hides them.
First, I wanted to make the colors changeable. One day I’m in some kind of mood, on the other day I’m in a different mood. For this reason I decided to use RGB leds, but using RGB leds means that I can even make color effects using them.
Okay, so I needed the parts. My first thought was to use simple RGB leds but then I found the WS2812B series. These leds communicate via a serial-like protocol which makes them chainable. And this is awesome as it means less cables and simpler handling. Apart from the leds, I needed a microcontroller which was obviously Arduino as Arduino is cheap, has a serial USB interface and relatively small.
So the parts list is:
- 10 pcs WS2812B leds for ~$3
- 1 pcs Ardunio nano for ~$2.5
- Some cables
And yes, it’s definitely cheap! I could buy everything for $5.
Let’s move on to the assembly phase. There are 3 pins of every led board. You just have to solder them in order (you can see the arrows at the back of them). The chain should be similar to this (which is my assembled led chain with a bit too much cable in between the leds):
The last step of assembling is to connect the 3 cables to Ground, 5V and one to the digital pins (I used PIN 3 but it’s up to you). That is enough of the hardware. Let’s move on to the software.
The software and color effects
As WS2812B is a pretty regular module, I could use the FastLED library, which is a really awesome layer for handling these leds (say congrats to the creators and contributors ;)). It even provides a few color effects by itself! I just had to integrate them.
Apart from the built in ones, I wanted to put a few more on the palette. Fortunately, I found some demo projects for FastLED which helped me a lot. By the end, I put the following effects into the firmware: single color, easing, juggle, lightning, rainbow, ripple.
The only remaining part was the communication. I decided to create a serial interface as it’s easy to use on any platform without special softwares (PuTTY for Windows and Screen for Linux). A serial interface is easily extensible by new commands and can give us feedback about itself.
If you are interested in the code, you can find the whole project on Github, I don’t want to put that much code here. Feel free to clone/fork/send pull requests with more color effects.
You can find more pictures about my workstation here: