loading
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.
 
Remove these adsRemove these ads by Signing Up

Step 1: Purpose

Picture of 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

Picture of Parts
arduino.jpg
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?

Parts List

Radio Shack:
  • Multipurpose PC Board with 417 Holes: (276-150) $1.99
  • Hookup wire, Solid, Red, Black, Green, 22 Gauge, 90 ft, (278-1221) $5.99

Jameco:
  • 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

Sparkfun:
  • Arduino NG, (Arduino-USB) $31.95

Home Depot:
  • Lighting Fixture (Portfolio #74457 or similar), ~$10.00

Other Items:
  • Red Sharpie (Optional)
  • Blue Sharpie (Optional)
  • Green Sharpie (Optional)
  • Black Spray Paint (Optional)
  • Heat Shrink tube (Optional)
  • Solder
  • 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)

Alternatives:
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
-or-
  • 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

Picture of 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

Picture of Circuit Diagram
IMG_0645.jpg
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.

Step 5: Solder together your board

These instructions assume you are using the suggested radio shack Multipurpose PC Board. The first image shows a completed board that can be used for reference.

  • Step 1 (Image 2)
Take the PC Board, and if you have the red, blue and green sharpies, use the second image on this page as a guide to color in some of the white areas on the top of the board. Given that I have staggered the 3 different colors on the board to make color mixing easier, the reference of having in colored pads on the board is useful, but not strictly necessary.

  • Step 2 (Image 3)
Using the colors as a guide, attach the 9 LEDs. The center leads are going to be ground, so be sure to solder the flat side of the LED to the long narrow leads. LEDs can only accept electricity in one direction, so if this part is messed up, you will have a bunch of wasted parts.

  • Step 3 (Image 4)
Connect 4 longer wires (about 5-7 inches long). 3 red ones, and one black one to the base of the board. the black one will attach to one of the 2 long, central leads. Solder on a short black wire to jump across from one of the long central leads to the other, turning both into the ground.

The other 3 wires should be soldered in the central holes of the colored leads at the base of the board. One to red (right side), one to green (left side) and one to blue (right side). Use the picture for reference.

  • Step 4 (Image 5)
This step will be about completing the blue connections. Fist, solder a red wire that connects the 2 blue pads at the base of the board. on the right side, solder a wire from the blue pad to the 1 blue resistor. On the left side, connect 2 red wires fom the blue pad at the base to the 2 blue resistors

  • Step 5 (Image 6)
Same as step 4, but with green, and the sides reversed

  • Step 6 (Image 7)
Same as step 4, but with red

  • Step 7 ((Image 1)
Take the 4 wires hanging from the base of the board. Use the green and blue sharpies to mark the ends of the wire, so that you know which wire goes in which pin on the Arduino. Finally, if you have the shrink tubing, put the wires in the shrink tubing, and hit it with a heat gun, or lighter.

Step 6: Build the base

Picture of Build the base
IMG_0639.jpg
IMG_0650.jpg
IMG_0651.jpg
IMG_0652.jpg
IMG_0654.jpg
Now we are going to build the base. Take the lighting fixture out of the package, and set aside the hardware, as well as the glass globe. We'll need both in a moment. If there is any fiberglass insulation, keep it around as well. Take the base, and remove the light socket from it. Then, set the base on some wood (~ 1/2 inch thick) and draw around the base with a pencil or sharpie. Also mark the location of the two bolt holes used for mounting the light fixture (If you wonder what I mean, look at the note on picture 1). Now, take the base outside, set it on some news paper, and spray paint it with the black (or whatever color you prefer) spray paint. Set this aside, and let it dry.

Go and cut out the wooden circle. Then drill holes where you marked the location of the bolt holes Make sure the bolts that come with the lighting fixture can slide through the holes easily (but not super loosely). On the underside of the wooden disk, you will probably have to use a larger drill bit, because the bolts probably will not be long enough to penetrate the disk. you'll want to drill about half way through the disk with a bit large enough for the bolt, washer and nut to fit in. A half an inch bit is probably good.

Now set your arduino in the middle of the disk, and draw around it, marking the two mounting holes in the arduino on the wood. Drill smaller holes where the two arduino mount points go. these should be large enough for the motherboard standoffs to be screwed in.

Note: If you are wondering what a "motherboard standoff" is, look at the notes on picture 4. They are the little bolts that screw into a computer case, and have threads onside their heads. Screws are then used to attach the motherboard to these. They normally have long enough heads to keep the motherboard for potentially shorting out against the metal case.

Once these are screwed in, mount the arduino on the wooden disk by screwing it to the motherboard mounting bolts.

Now that you have the arduino positioned on the board, go get the lighting fixture base (assuming it's dry). You'll need to cut a hole in the side of the base to allow the USB cable out. Plug the cable in, and then work out how much you need to cut off.

Step 7: Put it all Together

Picture of Put it all Together
IMG_0653.jpg
IMG_0664.jpg
IMG_0663.jpg
IMG_0656.jpg
IMG_0820.jpg
When you took apart the lamp, there was likely some fiber glass insulation inside of it. I took this, and rubber banded it across the back of the circuit board to act as insulation to protect from a short. Take the wires and thread them through the top of the lighting fixture base, and then hook them up the the appropriate pins on the arduino. Next screw the fixture to the wooden base.

Now you'll need a light diffuser. The LEDs mostly aim up, so without something to diffuse the light, the result when the glass is on top will be very disappointing. I took some clear plastic bag and crumpled it up, and held it down on the LEDs with the rubber bands I used for the insulation. Next I took some translucent tape and made a small dome over the circuit board. This was sufficient to diffuse the light. Experiment with this part. My solution may not be optimal. One mode of experimentation that I think may be fruitful would be to slip small sections of white straw over each led, and them tape them together.

Finally, you can put the glass on the base. And you are done!.

For a few more photos, I have a gallery and my Blog posting about it
Very nicely done. It served as inspiration for my own orb.
http://www.instructables.com/id/Arduino-Orb-controlled-via-serial-port/
IMG_20110511_095402_crop.jpg
L34h5 years ago
Hi there, I'd just like to point out that the 3rd soldering image has a misprint - the leads should be soldered on red, green and blue: not red, red, blue. Just wanted to be helpful for anyone who's using the images as a soldering guide.
xrob6 years ago
Hey, great Instructable! I used it to build an orb to monitor the health of various processes at work as well. I made a few changes that others might find interesting:

Rather than use 9 LEDs, I picked up 2 'full color' RGB LEDs from Radio Shack:
http://www.radioshack.com/product/index.jsp?productId=3020765 They combine red, green, and blue LEDs in a single package, they're very bright, and have a great viewing angle, so you don't need a diffuser. They have a common anode, so you run that pin (the long one) to the Arduino's 5V pin rather than ground. I used 100 ohm resistors to hook up each of the other three pins to the PWM pins. You then have to invert the value that the PWM pins are set to: analogWrite(redPin,0) now turns the red to full brightness, and analogWrite(redPin,255) turns it off. (I changed the code to do this automatically.) A lot less wiring, and the three colors are pretty well balanced: mine produces a pretty good white.

Since each color of the 3-color LED can draw 30-50mA, and the Arduino PWM pins can only source 40mA, to hook up the second LED (for extra brightness), I used the 3 other PWM pins (3,5,6) to drive it (and modified the software to handle this).

I'm working on other mods as well - right now I've got a toggle switch hooked up, and may try a rotary switch. The idea is to have the app on the PC side fetch data from multiple sources (eg. load, # of errors, commits/hour, etc.), and use the switch to select which one to "view" on the orb.

A great project, with a lot of room for customization!
devon.jones (author)  xrob6 years ago
Also, as a note, I have it working from multiple sources via a udp server that holds the serial connection, and can take packets from any number of programs to change the color. The code is posted at http://svn.evilsoft.org/arduino/trunk/ambient_build/src/

ambientsvr requires python, twisted and python-serial
ambientctl is a command line program that can send commands to the server. It requires python.
devon.jones (author)  xrob6 years ago
Actually, I completely agree. My latest version uses RGB leds. I use 6 really high power ones and at this point, the orb is easy to see even in direct sunlight.

I built a custom PCB that I detailed here: http://www.evilsoft.org/?p=83
Hey I figured out the light mixing LED diffusion solution. (well that's bold. I've figured out A solution.)

I picked up some cheap emery boards and spent about a minute each on the LEDs. When done, the whole LED lens looks "frosted." I put the glass orb right over these without anything else and the mix is really delightful.

Another note:

I used 2 each of the high-intensity Red Green and Blue LEDs from SparkFun.

I have yet to do the final assembly (it's all on a mini prototype board with prototype jumper wires going to the Arduino board) but I'm very very happy with the results.

willyw7 years ago
Hi, I was wondering if you can offer an alternative for the parts you have. The parts below I can't find on the jameco website. Is there another place you can get them or another part that will work the same? # 3 x Red LED, (33481) $0.27 ea # 220 ohm, 1/8W resistors (100), (107941) $0.69 Great article I'm really wanting to make one of these for my build projects at work. Thanks! :P
devon.jones (author)  willyw7 years ago
# 3 x Red LED, (333526), $0.22 ea with the resistors, looks liek Jameco doesn't sell 220 ohm on their own anymore, so that switches to radioshack: # 2x 220 ohm, 1/8W resistors (5), (271-011) $0.99 ea -or- # 500 assorted 1/8W resistors (271-003) $12,99 (yes, it has 10 220 ohm ones)
biojae7 years ago
Wow, just before I saw this step, I was thinking about using just 3 r,g&b LEDs, Cool.
XCabooseO7 years ago
Does your software allow it to do things that the ambient orb can do??? (ie. Check for email/see if "person x" is online/tell you if there is a new instructable via RSS) Cause if it does I'm DEFINETLY gonna build this. PS:Instructables thinks that the word instructables is miss spelled
devon.jones (author)  XCabooseO7 years ago
So the Orb and the software on the Orb just takes commands sent to it over the USB. If you are using linux/mac os, you can just use cron to check the thing you want to check, and then send the right color command to the orb. For example, I have a small ruby script that is run once a minute that looks at our builds and then sets the orb to roaming or red blinking. Under windows, you can use something like the windows task scheduler or cronw. So far the only PC based software for this is script based stuff for specific applications, but the things you want to do are all really easy to accomplish with some small scripts.
pierlo7 years ago
cool! i truly got inspired and wanna do it too. but isn't it possible to let the arduino work on its own and change the leds without being fed by the pc?
devon.jones (author)  pierlo7 years ago
Absolutely. The "roaming mode" is what it goes to directly when turned on, so as long as it has power, it will fade from one color to the next. You only need a PC if you want to set it to a specific color, or if you want to make it blink - the color fade is automatic, and is the default mode.
calqlater8 years ago
I like the simplicity of echoing RGB values out over the serial port. I also like that your orb sits next to a bottle of Marie Sharp's habanero sauce. Tasty stuff!
xorshift8 years ago
Well done instructable! It has been mentioned before, but I find shaving the heads off the LEDS to be a great diffuser (with a dremel cut off disc) even if you mount the LEDS in a ping pong ball..