An Arduino based Ambient Orb designed explicitly for monitoring Source Code Autobuild systems. This orb can easy be repurposed for monitoring really anything that can have alerts from time to time.
Step 1: Purpose
Some time ago a co-worker passed me an article about “Extreme Feedback” devices that could be attached to your autobuild system with the express intent of making it very visible that the build is broken, and potentially being irritating enough to help motivate people towards fixing the broken build. Since reading this article I have been somewhat consumed with the concept of creating one of these devices for my team. Keeping builds clean is hard, and without a constant reminder, it can be very easy for people to let the build stay broken for long periods of time. This essentially defeats the purpose of doing autobuilds, and potentially even unit testing.
I Looked into the Ambient Orb, but I have to admit, I wasn’t particularly thrilled with the fact that it has a monthly subscription, and you can’t talk directly to it with your computer. So I started to teach myself electronics in the hope that I would be able to build one of these devices on my own. After a month or so, I ran into the Arduino platform, which struck me as the perfect platform for building an orb from scratch. This is the end result of my project is this, The Arduino Orb Build Warden.
Step 2: Parts
The design of the Build Warden was heavily influenced by Tod E. Kurt’s Arduino Ambient Orb from his Spooky Arduino class. I started with that as a base, and went from there. So first off, what parts do we need?
- Multipurpose PC Board with 417 Holes: (276-150) $1.99
- Hookup wire, Solid, Red, Black, Green, 22 Gauge, 90 ft, (278-1221) $5.99
- 3 x Blue LED, (183222) $2.95 ea
- 3 x Green LED, (334473) $1.45 ea
- 3 x Red LED, (33481) $0.27 ea
- 220 ohm, 1/8W resistors (100), (107941) $0.69
- Arduino NG, (Arduino-USB) $31.95
- Lighting Fixture (Portfolio #74457 or similar), ~$10.00
- Red Sharpie (Optional)
- Blue Sharpie (Optional)
- Green Sharpie (Optional)
- Black Spray Paint (Optional)
- Heat Shrink tube (Optional)
- Soldering Iron
- Round cut piece of 1/2 inch wood – cut to the size of the lighting fixture base)
- 2 x Standoffs Metal Hex (Sparkfun: COM-00126 if you don’t have any, which is unlikely)
- 2 x motherboard mounting screws (that fit the standoffs)
I added this section, due to the fact that some items appear to no longer be available, here are some alternatives:
- 3 x Red LED, (Jameco #333526), $0.22 ea
- 2x 220 ohm, 1/8W resistors (5), (Radio Shack #271-011) $0.99 ea
- 500 assorted 1/8W resistors (Radio Shack #271-003) $12,99 (yes, it has 10 220 ohm ones)
Step 3: Get computer talking to the Arduino, Install software
I’m not going to take you through how to get Arduino working with your computer, and how to upload sketches to it. A full set of guides are available for getting the Arduino environment working with Linux, Windows or Mac OS X.
Once you have this environment set up and working, download the software I’ve written for the build warden. Follow the instructions from the above guides for installing the sketch on the Arduino.
Step 4: Circuit Diagram
This project is really a very simple circuit. What we are going to be doing is running three wires from pins 9, 10 and 11. Each wire will branch to 3 220 ohm resistors, and then go on to 3 LEDs of the same color (9: Red, 10: Green, 11: Blue). These will all attach back to 1 wire that will go to ground.
Strictly speaking, each color should actually use different resistors, but the end result is in my opinion Good Enough. If you want to try and get the colors perfectly balanced, you have two options. Either correct it in the software, which is easy enough, or use different resistors for each color. In talking to Tod E. Kurt about this, his suggestion was this:
“For the color balancing you mentioned, the main thing you need to worry about is that because of the physics of LEDs, each color has a different voltage drop (Red is ~2.0V, Green is ~2.6V, Blue is ~3.3V), so really one should have different value resistors for each color. (i.e. if Red’s resistor is 220 ohm, Blue’s should be scaled down to about 130 ohm). I left this out of the notes because it can be confusing. You can deal with it in software by scaling the PWM values a corresponding amount. ”
You may want to put together a prototype board that has only 1 LED of each color. I did this to make working with the software easier. I included a photo of the prototype board here.
For more detail: Arduino Orb Build Warden