As most guys I don't tell my wife that "I love you" as often as I should, but this little gadget will at least improve that situation as bit.
So by combining a nice box and some hardcore electronics nerdiness I've made a nice christmas gift for my wife. The LoveBox is a small box that when opened displays a random message of love to the viewer.
Step 1: Alternative Usages
Love might be what makes the world go around - or was that money?
So in order to get the world spinning the LoveBox can be changed into a DecisionBox by altering the software to give a random answer of "YES", "NO" and once in a while even an "MAYBE" when the box is opened. That's the perfect gift for the undecided decision maker. ;-)
For gamblers the box could be adapted to show lotto numbers when opened.
The possibilities are endless as most people needs to be told something or make decisions....
Step 2: What You Need
- A nice box
- A alphanumeric display
- A microcontroller
- A 74HTC138 (3-to-8 decoder)
- Some resistors
- Two 3-volt batteries
- A microswitch (NC)
- Wires, hot glue gun, soldering iron and other small tools.
Step 3: Schematics & Software
The schematics for this projects is rather simple.
There's the microcontroller , the digit "driver" and the display and some resistors to limit the current between the microcontroller and the display.
There are 14 anodes (positive)on the display, one for each segment on a digit, and 8 cathodes (negative), one for each digit.
The anodes are connected to 14 of the available ports on the microcontroller via 330 ohm resistors to reduce the current to a level that the display is not harmed by. U/R=I , that is Voltage divided by Resistance gives Current. The power supply is 6 volts and the display itself it dropping that by 1.8 volt so the resistor of 330 ohm will have 4.2 volts left to take care of. 4.8/330=0.012 (12 mA).
The datasheet for the displays says 2 mA per segment, and I choose to interpret that as as average figure. Since only one digit is lit at the same time each digit will only be lit for 1/8 of the total time. So to get 2 mA of average current is can be driven by 16 mA (2 mA times 8).
Even if this is not according to specs there are both safety margins and the display is only used intermittently and it if should break - who really cares? ;-)
The 74HTC138 that drives the anodes is really abused. If all segments on a digit is lit all of the 14 segment want to force 12 mA down through the poor '138. This would be a total current of 168 mA and that's far far far beyond what it can handle to sink.
Depending on the exact model of the chip the specified sink current is more like 5-10 mA. If I short circuit the output and measure it it can sink about 40 mA with an increased voltage level.
Now, all of the segments won't be lit at the same time, but the 40 mA limit will be reached quite often. Luckily enough the brightness of the display is rather constant whether it gets 4 mA or 15 mA, so it really doesn't matter that much.
It works, but it's a really sloppy and unprofessional design. It can be much better, but since I didn't have any better parts at hand I just used whats worked.
The software is also really simple.
When the microcontroller starts is will read a seed for the random number generator from the non-volatile eeprom of it's memory, generate a new random number and then write back the new seed to the eeprom. Without keeping track of the seed that random number generator would generate the same number for each start. Hardly not any randomness in that ;-)
It then takes the generated random number and uses that for selecting one of several messages and scrolls that past the display.
When the entire message is displayed the microcontroller shuts itself down to a low power mode in order to save the batteries from draining too quickly if the lid inadvertently is left open.
Step 4: Building It
Because the number of components are low and the box is rather small I decided to build it in dead-bug style.
Dead bug style is when the components are put upside down with the legs in the air, like a dead bug, and then connected either by wires or directly to the legs of other components.
The pictures here shows a few steps of the soldering process.
If it looks really tight and messy it because it's is really tight and messy! I soldered a few of the resistors in the wrong position and decided to fix those errors by some extra bit fiddling on the software rather than staring to desolder and reconnect it in this mess... Do what's simplest, it's not like anybody will notice it anyway. :-)
Step 5: The Box
I needed some kind of inner lid in the box so that it's innards wouldn't spill out or be seen because it really looks awful in there.
I took a CD case and cut out a fitting piece of plastic from it and spray painted the bottom of it with a golden color leaving a hole where the display is beneath it. It really didn't turn out that bad for this application as a LoveBox. For a DecisionBox as a gift to a CTO maybe a some other covering would look better.
The box should be turned on when it's opened. But most switches are activated when pressed, not when released, so I tried to make my own switch using a safety pin that would be pressed down when the box is closed and springs back up when its opened, but I didn't succeed with it.
After a bit of rummaging in my junkboxes I found a miniature microswitch that has both a normally open contact as well as a normally closed. After fitting that switch in a corner of the box it worked like a charm.
Step 6: The Finished Product
Here's the finished box in it's splendor. I'd have to say that it looks at least half decent.
Now I only have to wrap it up and give it the the wifey together with a kiss at Christmas eve. (In Sweden the gift giving day is the 24'th, not on the 25'th as in US...)