The Hardware Setup
A look at the LEDs
The Circuit Diagram is Very Simple
The 101 is Nicely mounted in an SSD Bracket
The Processing PC Interface
And color presets...
A look at how the lights look
And in a rainbow pattern....
Red also looks very good
Bluetooth Lighting Controls
Some more glam shots...
The only sort of visible cable
The Arduino 101 in an SSD Bracket bellow the GPUs
What is it?
ÜnterGlow is a way of controlling WS2812 (or other) LED Strips by means of an Arduino Sketch and Processing/Python program or any other way that you can send serial commands to your Arduino (such as over Bluetooth with the Arduino-101!)
While imperfect, I believe it could act as at least a good template for future bluetooth and or serial controlled projects for anyone trying to add functionality to their computer or home.
How does it work?
There are two sides to ÜnterGlow:
The Arduino sketch takes serial data from a PC and controls WS2812 RGB LEDs (or any other peripherals) based on that data (and can return data as well of course, such as temperature sensor measurements)
The Processing sketch allows the user to use a GUI to select desired colors, presets and effects that are then transmitted over Serial to the Arduino. More advanced functionality could easily be added (not ready due to a lack of time on my part) to do things such as change the color of the LEDs based on temperature reported by the CPU or GPU of the system.
An optional mobile App for controlling the strips over Bluetooth thanks to the Arduino 101's prowess in this area.
What were the shortcomings?
While I genuinely believe that the Arduino-101 is a great addition to the Arduino family, if Bluetooth wasn't a feature you wanted, an Arduino Leonardo or similar would work much better, at least until Intel is able to fix two very important shortcomings:
The Intel Curie module that acts as our microcontroller does not have USB HID capabilities, and as such it cannot act as a mouse/keyboard/joystick and thus cannot do things such as play and pause music using keyboard commands. This isn't a huge deal but it would have made adding a fair amount of fun functionality a lot more trivial, something which could have easily been done by simply swapping a Leonardo (at the cost of loosing Bluetooth of course).
Arduino UNO AVR Timer Emulation: This was probably most shocking to see not being emulated for me. Despite the Curie core being incredibly powerful, so much so that it seems a lot of it's features have been disabled or at least slowed down in order to make it compatible with the Arduino UNO, this does not in fact extend as far as dealing with Interrupts. In leyman's terms, this means that none (as far as I'm aware) of the current Infrared Receiver/Remote Libraries available for the Arduino will work on the 101 due to the way that they handle very strict timing... which is a real shame as it's quite an important part of any Lighting based projects.
I've had a very limited amount of time to finish this project as I've had to leave to visit family halfway around the world but there are a great many things that I hope to improve about this project as time goes on since I've gone as far as to permanently mount this in my desktop, such as:
Automatic Baud Rate Detection
Additional Glowing Effects + Transitions (and tighter timing)
Custom Icons & Color Values
Actual mobile app
Python GUI with support for effects based on current PC Events, such as notifications and temperature or CPU load (glow red when gaming), possibly reacting to music.
Ability to add knock codes if/when Intel enables HID functionality
Add an Infrared remote to the ways in which this can be controlled
Streamlining a lot of the spaghetti code that I realize is present in a lot of places