Step 1: The Dirty Bits
1. One Arduino "Whatever" (Uno, Mega, Leonardo, Lovitz, etc).
2. One small bread board (included in above kit)
3. One BLE Mini Bluetooth module from redbearlab.com
4. One Philips 12 volt 3 watt LED porcelain bulb
5. One small servo
6. One 12 volt power supply (at least 1 amp)
6. One lamp with shade
7. Assorted: aluminum sheet (soda can), wire, cardboard, tape, blade/scissors, zip ties
8. Lastly, you'll need an iPhone and an Apple developer account, or some other method of communicating with the Bluetooth module.
Red Bear Lab has an example app on the app store called "BLE Arduino". You can control the servo from here, but you'll likely want to modify and build your own version of the code which pulls in weather for your area. If this is too much to take on for some, I totally understand. You can just as well turn this project into a clever shadow clock or other indicator (insert imagination here).
I'd release the app I've modified onto the app store, but honestly, I'm afraid it would get poor reviews. ;)
Step 2: Down to the Wires
From my count, you'll need 9 wires. Mouse over each in the picture for a description of where they are going to end up.
Step 3: Blue Teeth, Like Violet Beauregarde. Huh?
Plug the BLE Mini module into the bread board (or solder it somewhere nice if you're fancy at heart).
Connect the 4 wires as shown in the picture, please.
This Bluetooth module will be responsible for getting info from your iPhone and telling the Arduino what to do (like Dorothy told Sophia what to do). Notice it has an "RX" and a "TX" pin. These should be connected to the opposite pins on the Arduino (i.e. RX connects to TX and TX to RX). The other two wires are for power. Simple.
Step 4: Servo Me a Drinko
The servo will be responsible for rotating the weather icon mask in front of the LED light source. The Arduino program (pasted at end of Instructable) is always listening to the Bluetooth module. When your iPhone app sends it new commands, the servo moves to a new position.
Step 5: Porcelain Wrapped in Aluminum... Mmmm...
Ideally, you'll find a nice high brightness single LED, but I had to make do.
If I let all three LEDs shine on, I'd get triple silhouettes being projected into my lamp shade. Not desired. I already see double typically, so that would make sixal... what?
I bend a piece of aluminum to fit over two of the LEDs so just one does the shadow casting magic. I thought to redirect the other two to illuminate the back side of the lamp shade, but alas... I am lazy.
Don't use paper or plastic. While they are LEDs, they do get very hot while running, including the porcelain enclosure.
Step 6: Let There Be Light!
Plug 'er in and connect the "GND" and "VIn" wires from Arduino to it. The bulb is reversible, so the polarity doesn't matter (nice touch, Philips).
Point the light out the side of the bread board (or your fancy pants custom PCB, if that's what you're into, fancy pants).
Select two rows on the bread board which DO NOT connect to any other components! If you inject 12 volts into the bluetooth module or servo, you'll fry them!
Step 7: Make Yourself a Breadboard Sandwich
Step 8: Stick a Servo on That Sucker!
Step 9: Get Crafty
Cut out a disc about 3-4 inches wide and attach the masks to it (or save some hassle and just cut them out of the disc to begin with).
Mark the center of the disc and attach a servo arm to it. My servo came with a bunch of the them.
Attach the disc to the servo and align it so the LED bulb can shine through the mask icons.
Step 10: Arduinie in the Lamp
Don't forget to put your shade back on!
Step 11: The IPhone App-etizer
Redbearlab.com supplies an app on iTunes app store called "BLE Arduino". With this, you can manually control the servo if you want to. It's quite easy:
1. Power up the Arduino (and BLE module will power up with it)
2. Open the app and hit connect. It will automatically find the bluetooth LE 4.0 device and connect. No pairing required!
3. Set the proper pin to be a servo control slider in the app and slide away!
It's fun for about 2 minutes.
The better way:
Download the Red Bear BLE Mini iOS SDK sample apps. Modify the XCode project called "simpleControls_BLEMini" so that the slider is driven by a timer which checks on a free weather service like OpenWeatherMapAPI.
I got this working basically using another service which seemed to cut out every 5 minutes or so. I plan to get a developer key from OpenWeather and implement this correctly. But that's another Instructable, friends...
(Did I lose you?)