House numbers are usually conservative and quite boring devices. We lacked even a boring house number and some action was needed to change that. Now we recently installed a Giraffe mailbox which should help any visitor to identify our house with ease during the day time. But what about night time?
Obviously we needed an eccentric backlit smart house number that was colorful and fun.
Surely nobody will miss our house ever again. Not even when the dark ages start again.
Here is how we did it.
The following tools were used to complete this build:
For the house numbers, any links are just examples
This step describes the fabrication of the custom sized numbers.
This step describes the testing of the LED lights and the determination of the standoff length.
This step describes the fabrication of the standoffs.
This steps describes how to make a drill template that helps drilling the holes in your house wall or your cover sheet exactly where you need them.
In this step we are completing the electronic assembly and testing of the numbers.
In this step I'll elaborate on the software that I developed for this build. I used the arduino editor and tested using an arduino uno R3, a breadboard and the required parts. The .ino file is available for download in this step as well. Once the hardware and software was successfully tested a strip board was created that used an atmega 328P as the brain. You could call that a DIYduino.
The software is essentially a state machine that consists of 5 states. The flow chart will give you the best overview of how the software works.
State0 = it is daylight:
When the state0 exists it is daylight. The state0 checks permanently if it is dark yet. Once it realizes that it is dark it will change the state from state0 to state1, which means it is dark now.
State1 = select a color:
When state1 is reached, the software picks randomly a color, sets the color, switches the light on and changes the state1 to state2 or state4 depending on if the party button is pressed. The random color is actually three randomly chosen intensity levels, one for each red, green, or blue color in the RGB LED strip. To create each random intensity state the analog input pin0 is read. This pin is connected to a piece of wire. The wire acts as an antenna and is supposed to maximize noise and thus randomness. The value from pin0 is fed into a random seed function and a random value between 0 and 255 is created. This process is repeated for each color and the results are used for the pulse width modulation (PWM) value of each color. The three PWM signals are fed to the LEDs and together give the random color.
State2 = it is dark, no party button pressed:
This is the standard case when its dark. We essentially check if it is light yet. If the answer is yes, we go back to state0. If the answer is no, we go to state3.
State3 = it is dark, no party button pressed:
State3 and state2 build a loop. As long as it remains dark and the party button is not pressed we remain in that loop. This is essentially our standard regular night. If the party button is pressed the state is changed to state4. If daylight comes the state is changed to state0.
State4 = it is dark, the party button was pressed:
In the party mode we pick a new color every three seconds using the same method used in state2. We also check if the daylight has come back. In case of daylight we change the state to state0, in case of darkness we repeat state4 and pick the next color (or three color intensities).
In this step the electronic realization of the build and the components list is discussed.
There is a lot of thinking, attention to detail and satisfaction that comes with each project, so it's much nicer to be able to keep each finished build and not have to tear it apart for the next one. Using an arduino for each buiId quickly becomes expensive and it is definitely cheaper to build your own DIY arduino boards once you figured out the software and hardware in the development process. In a nutshell, I use a commercially available arduino Uno R3 board as a development board and then realize the build with a DIY version. You can find plenty of info about those builds on instructables and elsewhere on the net. See here, here, here, or here, to name just a few. The final version of this build uses such a DIYduino. It further uses optocouplers to uncouple the control signal from the higher power output side, and TIP147 transistors for switching the LEDs on and off. These you could argue are overkill for the task, but I had them lying around for a while, forgotten why I bought them and it was time to use them for something else.
I prefer building up one-of-a-kind circuits on strip board. It is easy to use, can be neatly organized and allows trouble shooting. Typically the footprint is a little larger, but in most of my builds that doesn't matter, so this is another of my strip board builds. You can review my method in my other builds here and here. My layout is given in the pictures. Red crosses are interruptions of the copper strips, blue color represents connections made on the copper side of the board.
4x C1 - 0.1 uF, 50V, Capacitor Ceramic, $0.12
2x C2 - 22 pF, 50V, Capacitor Ceramic, $0.04
1x IC1 - Atmega 328P, Microprocessor, 28pin, same than in Arduino Uno
1x IC2 - LM7805, Voltage Regulator, 5V, $0.42
1x LDR, Light dependent resistor, Mouser Part #:485-161, ~1$
3x IC3 - SFH600-2, Optocoupler, control and charge circuit separator, Vishay SFH 600-2, $0.222
3x IC4 - TIP147, Darlington Transistor, switching LEDs on/off, one per color, TIP 147, $2.03
1x Q - 16 MHz Quartz, 18 pF, $0.36
5x R1 - 10 kOhm, Pull up or down resistor
3x R2 - 560 Ohm, optocoupler input current limiting resistor
1x R3 - 39 kOhm, voltage divider resistor
3x R4 - 470 Ohm, base current limiting resistor
1x S1 - Push button switch, reset of atmega 328P
1x S2 - Push button switch, party button
1x Power jack for 12V supply connection
1x, T1, Terminal Block, PCB mount, 2 Positions, $0.36
1x Strip Board, 2.54mm hole pattern, $8.14
4x Spacer, Nylon, M3 x 10mm x 6mm, $0.23
8x M3 screws, Nylon
some sheet metal for heat sink
12V power supply, I used an old monitor supply
This step shows in a step-by-step fashion the realization of the electrical schematic onto the strip board. I am strictly following the layout presented in the previous step.
In this step the strip board is installed in a metal enclosure. The box I used was an old chocolate box that I had lying around.
All in all the packaging looked very clean, was dust protected and perfect for my garage environment.
The last steps turned out to be more specific to my house and my chosen install location. I am switching from a general perspective and describe what I had to do to make this work. In this step I explain the implications of overseeing that the garage door is held up by a big I-beam. Luckily I saw it just in time. It changed my whole mounting strategy.
This step describes the actual install of the numbers on the outside of the house above the garage door.
This step describes the creation of the party button and its install at the inside side of the garage door.
Thanks a lot for hanging on to the very end. May your nights be full of color as ours will be. No friends will go missing in the dark anymore. The dark nights will be with us.
We surely look forward to the next party and hope those dark winters are not going to end too fast.