Introduction: Arduino Orb Build Warden
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
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
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
- 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)
- 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)
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.
Step 5: Solder Together Your Board
- Step 1 (Image 2)
- Step 2 (Image 3)
- Step 3 (Image 4)
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)
- Step 5 (Image 6)
- Step 6 (Image 7)
- Step 7 ((Image 1)
Step 6: Build the Base
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
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
15 Comments
11 years ago on Introduction
Very nicely done. It served as inspiration for my own orb.
https://www.instructables.com/id/Arduino-Orb-controlled-via-serial-port/
12 years ago on Step 5
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.
13 years ago on Introduction
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!
Reply 13 years ago on Introduction
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.
Reply 13 years ago on Introduction
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
13 years ago on Introduction
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.
14 years ago on Step 2
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
Reply 14 years ago on Step 2
# 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)
14 years ago on Step 4
Wow, just before I saw this step, I was thinking about using just 3 r,g&b LEDs, Cool.
14 years ago on Introduction
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
Reply 14 years ago on Introduction
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.
14 years ago on Introduction
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?
Reply 14 years ago on Introduction
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.
15 years ago on Step 1
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!
15 years ago on Step 7
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..