Introduction: Floating LED Shelves!
When I moved my dresser into my closet, I found that I had a lot less room to put fun random stuff. I decided that I wanted to make some shelves for my room. Looking up ideas, I chose to make some floating shelves with lights along the sides to match the theme in my room. I was able to put to use the skills I learned when making my desk, learning from my mistakes I made then.
These shelves have a rib structure on the inside for strength and the tops and bottoms are covered with pine wood sheets. They use WLED software so I can control the lights from my phone!
I designed and planned out this project using Fusion 360 before starting. I've attached the 3D model below.
Overall, I'm happy with how these shelves turned out. Without further ado, lets get started!
Attachments
Supplies
From our local hardware store, I bought:
- Two 4' by 8' 5mm thick pine sheets
- Four 1" by 2" by 8' pine planks
- One 1" by 2" by 6' pine plank
From Amazon, I bought:
- 6 meters of Muzata deep spotless aluminum channels.
- Two 5 meter packs of BTF-Lighting 60 LEDs/m SK6812 LED lights.
- 5V 10A power supply
- ESP32 micro controller
Other supplies that I already had include:
- Wires
- Solder
- White cabinet paint
- White 3D-printer filament
- 3/4" and 2" screws
- Dry wall anchors
- Electrical tape
- Double-sided tape
- Wood putty
The tools that I needed were:
- Table saw
- Miter saw
- Drill
- Countersink drill bit
- Wire strippers
- Soldering iron
- Craft knife
- Level
- USB-A to Micro-USB cable with data wire.
Step 1: Rib Assembly
First, cut the rib pieces from the 1'' by 2'' planks using the miter saw. The ribs consist of long pieces along the back with short pieces screwed in to them perpendicularly. I found the studs in my wall and made sure that I didn't screw in a short piece where the studs were. I didn't end up installing as many of the short planks that I had in my 3D model because I really didn't need them.
Next, screw the ribs for both the shelves into your walls. Use the 2" screws to make sure the ribs are secured into the studs and not just the drywall. Use drywall anchors if there isn't a stud handy. Also use a level to make sure that the shelves aren't crooked.
Finally, cut and screw on the aluminum channels along the edges.
Step 2: The LEDs!
Here, I'll go over how to set up the LED lights.
First, plug in your ESP32 board into your computer via a USB-A to Micro-USB cable. Not any cable will work, however. You need one that can transfer data. Then, go to https://install.wled.me/ in either Google Chrome or Microsoft Edge (those are the only supported browsers). Next, select the latest release and click "install". A window will pop up, and if the only option reads "Communications Port (COM1)", then try another cable. If another option shows up, then that's probably it, and you can select it and click "connect" and "install WLED". Finally, go ahead and set up your WiFi network on the device now if you want.
Now that the ESP32 is set up with WLED, its time to connect the lights. First, cut and strip three good lengths of wire. This will be how much wire you have to go between the start of the lights and the ESP32 board, so plan accordingly. Solder each of these wires to each of the three copper pads on your LED strip. You will have to de-solder or cut off the first pixel if there are wires already coming from it. Next, cut, strip, and solder two small lengths of wire to the GND and VIN pins on your ESP32 board. Then, cut off the barrel plug on the power supply and cut back and strip the black and red wires inside the outer casing. Finally, solder the long wire coming from the +5V copper pad on the LED strip and the short wire coming from the VIN pin on the ESP32 to the red wire from the power supply. Do the same with the GND wires and the black wire in the power supply. Solder the long wire coming from the Din pad on the LED strip to the D2 pin on the ESP32. Wrap your exposed connections with electrical tape.
Now all we have to do is set up your lights on the WLED software. You can test them by plugging the power supply into the wall and going to wled.local in your internet browser. There, navigate to Config > LED Preferences and there you can select the type of LED strip you have, the amount of LEDs in your strip, the GPIO pin that you attached the data cable to (2), and the Maximum PSU current. Be careful with this last setting. The higher the number, the brighter the LEDs will be, but the hotter your power supply will get. I recommend only 5000 mA (5 Amps) for a 5V 10A power supply, even though it literally has 10A in the name. This setting is a good balance in my opinion, as my LEDs are nice and bright, yet the power supply doesn't feel hot to the touch even after hours of use. Definitely monitor your power supply to make sure it doesn't get too hot for the first few weeks of use.
Your LED strip should now be fully controllable! You should be able to click different colors on the color wheel in the WLED software and the lights should match. I'll go over controlling your lights in more detail later.
Finally, peel off the adhesive tape on the back of your LED strip and stick it on the inside of the aluminum channel. If you want, you can put on the diffuser covers now, but I recommend waiting until the end to do this so you can touch up the paint without getting it on the diffusers by accident.
Step 3: Connecting Up Lights Between Shelves
In my case, I had a second shelf so I needed to route some wires from one end of the bottom shelf to an end of the top shelf. To do this, I 3D modeled and printed a wire raceway and used double-sided tape to adhere it to the wall. This ended up looking great and I printed another one for where the wires go from the power supply into my shelves. The final photo is what everything looks like behind my monitors. I've got the raceway to bring the wires out of sight, and I have a little ESP32 cover to hold it against the wall. Then the cables are routed through a cable sleeve.
Attachments
Step 4: The Top and Bottom Panels
Now that the size of the shelves is certain (with the aluminum channels on the sides) you can measure and cut out rectangles in your pine sheets accordingly to cover the tops and bottoms of your shelves. Go ahead and paint the exposed sides after you cut them out, as painting them later will be a pain.
Next, use clamps to hold the panels in place while you screw them into the ribs. Use the 3/4" screws here, and use the countersink drill bit beforehand so that the head of the screw sits flush with the panels. If you want to prevent wood dust getting all over your stuff, you can use a vacuum like I did in the picture.
The only big thing left is to fill in the gap between the aluminum channels and the bottom panel. To do this, I 3D modeled and printed these spacers in the same white PLA I used for the wire raceways. I beveled the inside corners of the model when I needed to put them in outside corners on my shelves.
To clean everything up, use wood putty and paint to fill in the cracks between the panels. I painted the 3D-printed shelf fillers too. You can also fill with putty and paint the screw holes to really hide them. Finally, snap the white diffusers into the aluminum channels if you haven't already. You will have to cut them back a bit to get them to bend for the outside corners
Attachments
Step 5: Controlling Your Lights
I use different methods for controlling all of the WLED lights in my setup.
The easiest is to just control your lights from the WLED app on your phone. It's availiable on both iOS and Andriod.
SignalRGB is a free piece of software that you can use to sync all of your RGB lights from your computer and peripherals. It supports WLED, so its a nice option if your shelves are for your room with your PC setup. I go over this whole process in my LED Desk Surface Matrix instructable, but here's a quick rundown.
Download and install WLED. Go to Network > WLED > and enter in the IP of your ESP32 (you can find that in the WLED app). It might just show up automatically as well in Signal RGB. Click "LINK" and your lights should now be connected. I'm not going to go over how to use SignalRGB in general, as there are plenty of existing tutorials for that.
You can also use Siri Shortcuts to make a widget that you can control your lights from! Create the presets that you want to be able to choose from the shortcut in the WLED app. Take note of the preset ID of each of them. Then go into the shortcuts app and make a new shortcut using the plus button at the top right. Click "Add action" and select "choose from menu". There, add all the names of the presets you made earlier. Each of the names should appear underneath. Under each of the names, add a URL and "Get URL'' action. In the URL field, type http://[the ESP32 IP Address]/win&PL=[Preset ID]. Finally, by selecting the down arrow at the top of the page, you can rename your shortcut, change the icon, and add it to your home screen.