This project is our first foray into the realm of inspirational furniture -- smart household objects that know about you and encourage you to reach your goals and be your best self. Wearable sensors like the Fitbit are a great way to track your activity level, and we love using Fitbit to encourage us to get more exercise. However, the Fitbit is tiny and worn inside your clothes; if you're feeling lazy, it's easy to ignore.
To bring Fitbit data out of the internet and into our living rooms, we created an Arduino-controlled chandelier with an individually-addressable RGB LED strip whose light output is controlled by the user's current Fitbit step count. A ruby script is used to poll the Fitbit API, quantify your progress towards achieving your daily step goal, and transmit the current state to the Arduino over USB.
If your chandelier is flashing red, you'd better get off the couch and go for a walk. This project was created at Science Hack Day SF 2013 by Bonnie Barrilleaux, Gabe Martin-Dempesy, and Michelle Peters.
The design and construction of the chandeliers began long before Science Hack Day, so we'd also like to thank Toby Schachman and Monique DeSalvo for laser cutting skills, as well as patience and fortitude in the face of what turned out to be a very long day of laser cutting; Matt Ganucheau for Arduino training, interactivity consultation, and pretending there's no such thing as a stupid question; and False Profit LLC for an art grant that supported creation of the chandeliers.
Step 1: What You'll Need
- Jigsaw and drill
- Glue gun
- Soldering iron and heat gun
- Laser cutter with at least 18"x19" bed
- Large sheets of 1/4" frosted acrylic, enough for at least five 18"x18" squares
- 8" neckless white acrylic diffuser globe, like this: http://1000bulbs.com/product/7545/PLAS-199500.html
- Chandelier strands and crystals, purchased or repurposed from old chandeliers
- Clear packing tape
- Jump rings to attach chandelier strands to the acrylic arms, at least 10-12 mm in diameter
- Parachute cord to hang the chandelier
- One large washer (we used a 1.5" nylon washer)
- 2" clear polycarbonate tubing, like this: http://www.amazon.com/dp/B000OMHJJO/ref=biss_dp_t_asn
- 1 meter LED strip, WS2811 aka "Neopixel", 60 LEDs/meter, like this: http://www.adafruit.com/products/1138
- Soldering supplies, rainbow cable, break-away header pins, heat shrink tubing
- Arduino Uno and USB cable
- Fitbit (any model)
Step 2: Cut Chandelier Arms
Cut five chandelier arms and two spacers using the patterns at: https://github.com/biobonnie/ChandeliersPriceless2013. The pattern is designed with interlocking arms so that two arms can be cut from one large sheet of acrylic. One arm is about 18" x 19", and two interlocking arms will require a piece of acrylic at least 22" x 24" in size.
From scrap acrylic, cut a 4" circle with a 2" hole in the center, and a 1/2" hole in the center of that inner circle. This will yield two rings (a large 4" ring and a smaller 2" ring). The larger 4" ring should be sized so that it fits around the 2" polycarbonate tube, and fits snugly on top of the acrylic globe. The smaller 2" ring should fit atop the polycarbonate tube.
Laser cutters are hazardous and cutting acrylic generates noxious fumes, so be sure you're properly trained and your laser cutter is fitted with appropriate ventilation for cutting acrylic.
Consider cutting extra spacers as backups, because it's easy to break them. To strengthen the spacers, wrap each one in clear taping tape several times. Cut away the extra packing tape.
Step 3: Solder and Attach LED Strip
Solder three wires onto the data, +5V, and Gnd contacts on the LED strip, being careful to use the "DIN" side rather than the "DO" side. Solder header pins onto the other side of the wires. (Note that the pictures have extra wires because these globes were also used for a different project involving sensors.)
Cut the polycarbonate tube to 10" long with a jigsaw, and drill a 1/2" hole near the top end (about 1" from the top). Wrap the LED strip around the bottom 8" of the tube and secure it in place with packing tape. Run the wires through the hole into the interior of the tube so they can come out of the top end.
Step 4: Prepare Globe
Drill a ~1/2" hole in the bottom of the globe. Tie the parachute cord onto the nylon washer and insert the parachute cord through the bottom of the globe so that the washer supports the weight of the globe.
Step 5: Assemble Globe
Put the 4" acrylic ring over the top of the polycarbonate tube, then insert this apparatus into the globe. Run the parachute cord up through the inside of the tube. Use hot glue to attach the acrylic ring to the globe and the tube so the entire globe apparatus is held together. Put the wires and rope through the smaller 2" acrylic ring, and hot glue this smaller circle onto the top of the tube.
Everything should now be firmly held together so that the globe can be suspended from the rope without pulling on the wires.
Step 6: Assemble Chandelier
Assembling the chandelier is best done with lots of hands to hold the arms in place during assembly. Two people can do it, but three is better.
To attach the arms to the globe, thread a large ziptie through the top holes of all five arms and use it to secure the arms onto the top spacer, leaving the ziptie slightly slack. Then repeat the process on the bottom to attach the bottom ziptie and bottom spacer. Finally, tighten both zipties until they are snug.
To attach chandelier strands and crystals, hang the chandelier (using the rope) at a convenient working height -- we used an 8' aluminum ladder to hang it about 3' from the ground. Use jump rings to attach the strands and crystals to the laser-cut arms in whatever attractive fashion you desire. The hanging strands/crystals can be in any configuration based on what materials you have available, and they can be attached before or after assembling the arms, but it's probably easiest to assemble the arms onto the globe first, and then attach the strands and crystals.
Step 7: Load Code and Start Reaching Your Activity Goals
Plug the wires from the LED strip into the Arduino as follows:
- DIN to digital pin 5
- +5V to Arduino +5V
- Gnd to Arduino Gnd