Every apartment needs awesome furniture, so why not make your own? This coffee table contains LED strips that light up into various customizable patterns and colors. The lights are controlled by an Arduino and a hidden button, and the entire thing is battery powered so there are no cords.
If you don't want to make your own table, you can also use the same code and circuitry to modify an existing table.
Step 1: Table Design
This was my first woodworking project using nice wood and "advanced" tools, so please do not consider me an expert. Rather than describing in detail how I made the table, I'll give more of a broad overview of what I did*.
The design of the table is an open-framed cube, with space in the top for the electronics and additional LED strips around the legs. The lights are diffused through plastic which is embedded flush with the wood to create a smooth surface.
*Note that I did a few things in ways that were not ideal. In the instructions I will outline a better method for making the table than what I actually did. Generally, the changes involve cutting certain pieces all at the same time to ensure that they are the same length.
EDIT: I added the part files for the table. Note that they are Inventor files, not generic stls. (I don't have Inventor anymore so I can't open/convert them).
Step 2: Make the top and base frames
The top and base of the table are essentially open frames with various grooves cut out for joining and assembly.
For both of them, I started by jointing and planing lengths of maple to the thicknesses specified in the design. Next, I used the table saw to carefully cut out long notches from the edges of the parts. The base frame only has one groove, but the top frame has multiple. Make sure to check that your piece of plastic fits flush after you cut the groove it will sit in (you won't be able to go back and make it deeper).
You should then miter all eight pieces to length using a jig (this is something that I did not do, so my top and base frames were slightly different sizes). Also cut grooves for adding splines (strips of wood) when you glue the frames together. With the top frame, make sure that you cut the grooves so the splines won't be visible on the finished top surface (make sure they pass through the inner edge, where the plastic will sit and cover them).
Set all the pieces near their places and glue/clamp the frames together. Take care that the edges of the miters are touching and that the frames are sitting flush with the surface they are on. Once they are dry, trim away any part of the spline that is sticking above the surface of the frame.
Step 3: Cut and attach the inner frame
A thin plywood frame sits inside the top frame and acts as a connecting surface between the top frame and the legs, as well as a mounting surface for the electronics tray.
I started by cutting all my plywood strips to the same length and width on the table saw. Next, I marked and drilled holes near the edges so that later on I would be able to access the cables from the LEDs in the legs. I then cut the corners to 45 degree angles on the chop saw so the strips would fit neatly together as a frame. I routed a groove along the inside edge so the electronics tray would be able to sit flush with the frame's surface. Finally, I attached the strips of the inner frame to the bottom of the top frame with wood glue and brads.
Step 4: Make the electronics tray
Most of the electronics for the table are mounted on a removable plywood tray underneath the top frame.The tray fits flush to the inner frame, with routed edges on all sides. After routing, I cut squares from all four corners of the tray so it could fit around the legs and be removed if I ever needed to access the electronics. Finally, I drilled holes for the power switch and control button.
Step 5: Make the legs
The legs are made of two pieces of planed maple (which face outwards) and two pieces of plywood (which face the inside of the table). I cut all the parts (both plywood and maple) for the legs at the same time, so I knew they were the same width and length.
Some of the LED strips are embedded in the maple, so I had to cut a deep groove using a dado blade on the table saw. I then used a normal blade to cut a space for the embedded plastic. Without moving the blade, I trimmed off a thin strip at the edge of the plywood pieces for where the edges of the plastic would lie. I did the same thing to create the raised step where the legs would attach to the underside of the top frame. Lastly, I cut the mitered long edges of the parts.
One of the shop staff taught me a useful trick for gluing together the legs, which was to hold the parts together using blue tape. Arrange the parts, then tightly connect the edges with strips of tape. Unfold the leg and apply glue to the joints. Refold the leg and seal the last corner before letting it dry. Since the tape holds everything in place, the corners are nicely flush without fighting with clamps.
Step 6: Finish the base
I cut another plywood square to fit on the top of the base frame and be connected with L-brackets. To install them I measured and marked the holes for the plywood panel, which I drilled half-way through with the drill press (I didn't want to see the holes when I flipped the base right-side-up). Once the brackets were attached to the plywood, I hand drilled the pilot holes for connecting to the frame and put in the screws.
Step 7: Rout the edges
After the major components of the table were completed, I routed the external edges of the parts to keep them from splintering or chipping when I use the finished table.
Step 8: Sand and fill the parts
I sanded the all of the parts with 180 and 220 grit sandpapers and an orbital sander until smooth. I made sure to get as many of the interior edges as possible. After sanding, I filled gaps in the edges with small amounts of filler and sanded them flush again.
Step 9: Seal the parts
Once everything was sanded, I finished the parts with Watco Danish Oil to harden and seal the wood. I found it easiest to use a foam brush for applying the oil and a clean rag for removing it.
Step 10: Attach the electronics shelf
I didn't want to worry about applying the oil around exposed metal parts, so I left the installation of the electronics shelf until after I applied the finish. I used T-brackets to attach it to the underside of the top frame. The holes in the shelf itself only go halfway through the wood to make sure the screws don't poke out the top.
Step 11: Attach the legs
The legs fit tightly into the corners to the top frame. I had a small gap between the surface of the legs and the top frame, which I filled using a scrap of 1/4" plywood. I drilled the pilot holes first, tacked the plywood in place using brads, and finally attached the legs with screws.
Step 12: Attach the base
Similarly, I attached the base to the top/legs assembly. I marked where the center of the interior sides of the legs would be and drilled pilot holes before adding screws. To finish the table, I applied strips of adhesive-backed furniture felt to make sure it wouldn't damage the floor and could slide easily.
Step 13: Solder the LED strips
The LED strips come in lengths of ten sections, but for the table I needed six lengths of six sections (for the top grid) and four lengths of two sections (for the legs). This meant I needed forty-four sections, or five cut-up strips in total. They also needed the proper connectors so I could easily plug them in to the circuit.
I ended up making:
(6x) Six control sections, 3 pin male header on starting end
(3x) Two control sections, 3 pin male header on starting end and 3 pin female header on back end
(1x) Two control sections, 3 pin male header on starting end
The LED strips can be cut in the middle of the copper pads with regular scissors. To solder on wires I used a blade to carefully cut away the casing around the pads and applied a small amount of flux. I then tinned the pads and soldered on the wires. The exposed joints I covered with heat shrink and the ends of the wires were soldered to the appropriate connectors.
I needed to connect a few lengths of LED strip together to make the sixth strip for the table top. Once again I trimmed the casing, applied flux, and tinned one set of pads. I aligned the pads on the two different strips and melted the solder over the joints to make the connection.
Step 14: Make cables
Rather than soldering long wires between the strips, I used connectors and cables that I could easily unplug in case something wasn't working. Each cable is about 20" long and has a three-pin male connector on one end and a three-pin female connector on the other. The colors are arranged so they will align with the wires on the LED strips.
I also made a seven similar cables of different lengths (3", 3", 5", 6", 9", 12", 15"), all with three separated single-pin male headers and a three-pin female connector on the other end. These were for plugging the strips into the circuit board.
In addition to those, I made a short 3" cable for the signals going from the Arduino to the LED strips and another for the Arduino power and ground.
Step 15: Make the circuit board
The circuit board mainly connects the cables together, rather than containing electrical components, but I found it easier than trying to combine all the cables without it. The only non-header component is a 10K ohm pull down resistor used in the circuit for reading the button state.
All the headers on it are female. It has ten pins connected to power (seven for the LED strips, one for the Arduino, one for the button, and one for the switch/power coming in) and nine connected to ground (seven for the LED strips, one for the Arduino, one for ground from the batteries). There are two sets of seven headers for the LED signals coming in from the Arduino and the LED signals going out to the strips.
I didn't need the full board, so I scored it with a blade and snapped it in half before soldering on my parts. I started with attaching all the headers, then soldered on the resistor and made the necessary connections.
Step 16: Solder leads
I soldered long-ish (~7 inch) wires to the power switch and control button.
Step 17: Arduino code
The code for running the patterns is a giant switch case that changes based on how many times the button is pressed. The button is read as an interrupt, and the interrupt changes variables that tell the cases to break so a new case can be started. Each type of pattern can be easily modified to use different colors or to run at different frame rates. The colors are defined at the beginning of the program to make it easier to read.
2: button state/interrupt pin
7: LED strip in the legs
8-13: LED strips in the top
Step 18: Cut and sandblast the acrylic
I cut the panels for the legs out of clear scratch-resistant acrylic using a laser cutter, but the rectangles could also be easily cut using a band saw. I then sand blasted the non-scratch-resistant side to give them texture and make them more diffuse. Alternately, you can use opaque plastic instead of the clear acrylic to have more solid-looking panels. To join the acrylic at the corner of the legs I used a sander to make a miter joint.
Step 19: Add LED strips to legs
The LED strips are a tight fit inside the legs. They sit in the deep dado cut, behind the acrylic panels. The input and output cables are threaded up to the electronics tray via the holes cut in the interior frame. I ended up using a hook of wire and pliers to pull them through (a flashlight is also handy, especially if you use black heat shrink like I did). The strips were then plugged together using the extension cables I had make earlier. A few adhesive-backed cable holders helped keep the wires at the edge of the interior frame.
At this point, make sure you TEST THE LED STRIPS. Sometimes I ended up with bad connections at the solder joint and the strip wouldn't light. After this point it will be much harder to reach the strips since the acrylic panels will be in the way.
Step 20: Attach acrylic to legs
I used a clear version of Liquid Nails adhesive to attach the acrylic panels to the legs. Unfortunately, it was a messy process and dried quickly, so I couldn't get many photos. I applied the adhesive to the wood on either side of the LED strip and quickly pressed on the acrylic with the sandblasted side facing the wood. When it was aligned I held it in place with a clamp (or two clamps, if they had a small clamping area). I then attached the other acrylic panel the same way and left them to dry overnight.
Step 21: Add the electronics to the top
Once the legs were completed and drying, I added the electronics to the top. I drew light pencil lines indicating where the LED strips should go and put the strips roughly in place using double-stick tape (the dividers have notches for the strips so you can more carefully align them then). I had also marked the places for the Arduino and the batteries and I used adhesive-back velcro to secure them to the wood.
Step 22: Cut the dividers
To make the "squares" of the disco panel surface, I created dividers using lasercut acrylic. However, these parts could also be made using a bandsaw or scroll saw, although the corners of the cutouts won't be as sharp. The dividers contain spaces for routing wires, fitting around electronics, and holding the LED strips in place.
Step 23: Add the dividers
My table wasn't perfect, so some of the dividers didn't fit inside the top frame. I carefully sanded them down until they did, checking the fit as I went. I then assembled the divider structure and put it into place inside the table. Once it was mostly in place, I shifted the wires and LED strips so they lay in the notches and not trapped between the dividers and the electronics tray.
**needs more photos of assembling/installing the dividers
Step 24: Wire the electronics
Finally, I added the circuit board I had made and plugged in all the cables. It worked better to do this after the dividers were in place because I found several times that I needed longer connecting cables. I also ended up soldering the battery pack to the switch rather than using a header to make a more secure connection between the two.
Step 25: Test!
Check and see if the wiring works - turn on the power switch and cycle through the patterns with the button. Fix any connection issues.
Step 26: Add the acrylic top
I didn't add the acrylic top panel until the electronics were all in place and working. My acrylic is a very tight fit and almost impossible to remove from the tabletop (you can also glue it in) and I didn't want to have to unscrew the electronics tray if I didn't have to.
The top panel is an approximately 24" x 24" piece of scratch-resistant acrylic (mine was not quite square due to the geometry of the finished table). Like the side panels, I sandblasted the underside to make it more diffuse and give it texture. The top then snapped into place above the dividers.
Step 27: Enjoy!
Pull up a chair and enjoy your new table. As I mentioned earlier, it is very easy to change the colors in the patterns to make this table your own. You can also use the code and LED strips in a different table or for some other light-based purpose.