Introduction: DIY Wooden Nanoleaf Light Panels

About: DIY electronics, Arduino and ESP32 projects, home automation and much more! You can find me on YouTube (Giovanni Aggiustatutto) and on Instagram (@giovanniaggiustatutto).

Hi, I am Giovanni Aggiustatutto and welcome to this Instructable! In this guide we will build some RGB lights to hang on the wall, which have some details that I think are very interesting. In fact, these six wooden hexagons that have LEDs behind them can be put in the combination we want to form different geometries. Also, one of the hexagons has hidden buttons, to turn the lights on or off and change the effects. The first of these hexagons contains a board connected to our Wifi network, which allows you to control the LEDs from your smartphone. If you hadn't figured it out yet, the idea for this project came to me because I had wanted to put Nanoleaf light panels in my room for a long time, but the price was always a bit too high. So I designed and build my own version, in order to get a similar, and maybe better, effect while spending a lot less, and also having some fun. In the end, I think the light panels I've built look great, both when they are lit and when they are off.

As always, I've also made a video about this project, that you can find on my YouTube channel (it has English subtitles).

Supplies

To make this project, I used:

  • 6 pieces of okumè 8 mm plywood (I bought 7 of them in case I messed up something) 
  • 3 m of Addressable WS2812B LED strip with 60 LEDs per meter
  • ESP32 board (D1 mini format is best as it is smaller)
  • 4 12 mm tactile buttons with cap
  • 6 3-pin extension cables for addressable LEDs (the ones with an input and an output connector) 
  • White extension cable with DC barrel jack
  • 5V 4A good quality power supply
  • 62 M3 threaded inserts
  • 20 M3x12 mm screws
  • 20 15 mm wood screws
  • Thin copper wires for connections

Tools I used for this project:

  • 3D printer with white PLA filament
  • Soldering iron
  • Hot glue
  • Drill press with 13 mm hole saw (or forstner bit)
  • Wood saw
  • Electric sander
  • Screwdrivers, pliers and other basic tools

Step 1: Cutting the Hexagons

The most important part of this project are the wooden hexagons, which will have LEDs behind them. As they will be the only visible part of this project, it is important to spend the right amount of time on this part to make the hexagons precise. As wood I chose okumé plywood, because it has a color and grain that I really like, and then I already used it for another lamp that I built last year and that I put in the same room. However, if you have the right machines and knowledge, you can make the hexagons out of solid wood. To buy the plywood I went to a hardware store, where they cut seven 17x20 cm pieces of 8 mm okumé plywood. The hexagons will actually be six, but I preferred to have one more since mistakes can always happen. From these pieces I need to make hexagons. In order to do this I used a 3D printed template, with which I marked the outlines of the hexagons on the wood using a pencil. Then I cut out the hexagons using a manual mitre saw, which allows you to set an angle at which to make the cuts, which then come out quite accurate. Although it took me a while I cut all the hexagons. Obviously the hexagons didn't come out perfect, so I clamped them together and sanded the sides until they were all at the same height. Then I also sanded the two faces of each hexagon with 180-grit sandpaper. Of course, a CNC machine or a powerful laser cutter would make perfect hexagons in little time, but these are expensive machines that I don't have.

Step 2: Painting the Hexagons

Now that the hexagons are ready I chose of each one the face with the best grain to leave exposed, although the grain of okumè plywood is generally really good on both faces. In the face that will be behind I put a screw, which I then used to hang the hexagons with some steel wire when I painted them. In fact now came the time to paint the hexagons. To do this I chose water-based clear paint with a satin effect, which I gave with a paint brush. When the first coat was dry I lightly sanded all the hexagons and gave the second coat, and then the third coat as well.

When the paint was dry the finished hexagons turned out great, so we can move on to the next part. 

Step 3: LEDs

Before assembling the structure that will hold the hexagons together, we need to think about the LEDs that will be put behind them, to create the glow effect. For this project I chose a strip of individually addressable WS2812B LEDs, which are RGB LEDs of which you can control the color of each one individually, using a board like an Arduino. Each of the LEDs has three pins: positive and negative for 5V power and one pin for data. The LEDs should be connected one after the other, with the input of one LED connected to the output of the previous one. I will put a segment of 4 LEDs on each side of the back of each hexagon, so since I have 6 hexagons I cut the strip into 36 pieces of 4 LEDs. To make my work easier when I make the connections, I tinned the contacts of all the pieces, although it is definitely a boring work (it's 216 soldering points!). I made a 3D printed template to stick the LEDs on the wood precisely, and of course I positioned them so that the data input of one piece was after the output of the previous one. The idea is that, starting from the first hexagon where the ESP32 will be placed, all the LED segments will connected in cascade, with the output of one segment connected to the input of the next.

Step 4: Connecting the LEDs

As I said before, starting from the first hexagon where the ESP32 will be placed, all the LED segments will connected in cascade, with the output of one segment connected to the input of the next. To connect the LED strip pieces to each other, I used some thin copper cable to which I removed the plastic sheath. Then I tinned the cable and used it to connect the data output of a segment to the data input of the other, GND to GND and 5V to 5V.

At one of the junctions I ran wires to the LEDs data input and data output and to the GND and 5V pins. After testing the LEDs, I put hot glue on all the joints, to prevent short circuits between the wires and especially because I really don't trust the double-sided tape behind the LEDs and I don't want them to fall off. Of course I put the LEDs on all hexagons, paying attention to have the data always going in the same direction (it makes the effects look better).

Step 5: 3D Printed Parts

Now we can move on to the structure that will hold the hexagons together. While I was building the hexagons, the 3D printer made all the parts that I designed to connect the hexagons to each other and hang them on the wall (STL files for 3D printing are below). Behind the first hexagon will be a part that will contain the electronics and the ESP32. The other hexagons will have another part behind them, something like a hub, which has spaces where you can fit arms to join the hexagons together in all possible combinations.

Step 6: The Structure

First, I took the pieces I had 3D printed, and put threaded inserts in the holes using a soldering iron set to a slightly higher temperature than the printing temperature of the PLA. The inserts will then be used to screw the arms that will hold the hexagons together. These pieces need to be screwed into the center of the hexagons. Having cut the hexagons by hand, they did not come out perfect, so finding the center was not easy and took quite a bit of measurements (in the picture I show how I managed to find the center). Once I found the center I used a 3D printed jig to fix the pieces in the right position using some wood screws, being careful that the side of the hubs was parallel to the side of the hexagon. To run the LED cables, I made a groove in the 3D printed part.

Step 7: Connections

To carry data and power to all the LEDs while maintaining flexibility in the positioning of the hexagons, they will be connected in cascade. This means that each hexagon will have an input and an output connector. To make these connections, I bought some 60 cm 3-pin extension cables designed for the LED strips, which have an input connector at one end and an output connector at the other. I cut these cables into two pieces, to end up having the input connector with 21 cm of cable and the output connector with 5 cm of cable. Then I soldered the LED power (positive and negative) to the two 5V cables (red and white) of the input connector, and also to the 5V cables of the output connector, to give power also to the next hexagon. Instead, the data input of the first LED is soldered to the green wire of the input connector, and the data output of the last LED goes to the green wire of the output connector. I protected these connections with heat shrinking tube, and put them in the space in the center hub of the hexagon. The schematic of the connections is in the PDF file below. 

So one hexagon is finished, and with a little magic four more were created.


Step 8: Hidden Switch

These five hexagons could already be assembled together, but the one where we will put the ESP32 board, which will control the LEDs, is still missing. For this hexagon I used a slightly different 3D printed piece than the others, which has more space for the ESP32. I wanted to put a button to turn on the LEDs, and I wanted to do something cool. So, this hexagon will have hidden buttons behind it, that we can use to turn the LEDs on and off and change the effects just by pressing on the hexagon. How cool is that! 

The buttons I will use are some 12 mm tactile buttons with their cap, which are small enough to fit in the space between the hexagon and the wall, while requiring enough force to be activated to hold the weight of the hexagon. First, I drilled 4 non-through 13 mm holes in the wood, using a drill press with a depth stop and another 3D printed template for positioning the holes. Into these holes the top of the buttons fits perfectly, while the base of the buttons fits into the spaces I made in the 3D printed part. To each button I soldered two wires, which I threaded into the holes in the 3D printed piece. Then I glued the buttons with hot glue to both the 3D printed piece and the wooden hexagon. This mechanism works great, and the buttons hold the hexagon perfectly.



Step 9: Installing WLED

As I said, the LEDs will be controlled by an ESP32 board connected to a WiFi network, that will give them smart functionalities, like controlling them from our smartphone or integrating them in our smart home. To do this I flashed the ESP32 board with the WLED firmware, and, good news, for setting it up isn't required any coding. To upload the WLED firmware on the board, take the following steps:

  • Go to install.wled.me on your browser
  • Choose the “plain” version and click “Install”
  • When the window for choosing the device opens, connect the ESP32 to the computer and click on the device that appears
  • Install WLED on the ESP32
  • Insert your WiFi ssid and password
  • Once the device is connected to WiFi, click "visit device" to go to the web page from which we will be able control the LEDs

Now that WLED is installed, we need to configure some settings:

  • First go to the settings page and into the network settings, to set a static IP address for the ESP32; this is necessary because that's the address you will use to open the web page to control the LEDs

Then go into the LEDs preferences and:

  • Set the maximum current that the LEDs can draw; although I will use a 4A power supply, I set it to 2000mA to be safe
  • Set the number of LEDs, if you have made 6 hexagons it will be 144; the LED type can be left to the default setting (WS281x)
  • Set "Button 0 GPIO" to 27 and "Pushbutton" and "Button 1 GPIO" to 25 and "Pushbutton"; these are the two pins for the buttons that we talked about in Step 8

Button 0 requires no configuration, as it is by default the button that turns on and off the LEDs. Button 1 also has a default configuration that cycles trough effects and adjusts brightness if the button is held down for a few seconds. However I didn't like this configuration, and I wanted this button to cycle through my WLED preset, that contain the few effects I really like. To do this:

  • Save your favorite effects in different presets that have consecutive numbers, using the "+ Preset" button from the home screen
  • Create another preset and turn off "Use current state"
  • In the API command box, paste the following code, where the P1 value is set to the number of the first preset (in this case it is 1) and the P2 value is set to the number of the last preset (in this case it is 3):
win&P1=1&P2=3PL=~
  • Save this preset with ID 250
  • Go into Time & Macros settings, and look for the table of button actions
  • There, under "short on->off", insert the the ID of the preset we just created, that in my case was 250, in the row of "Button 1"
  • Save your configuration

This is the basic configuration to get this project to work, but if you want you can configure many more things in WLED, like making playlists of presets or choosing a preset with a particular effect to be shown when the ESP32 is powered on.

If you have a Home Assistant installation running, the WLED device will be automatically discovered by Home Assistant. This way you can integrate the hexagon lights to the rest of your smart home and control them from outside the local network. 

Step 10: Final Connections

Now we still need to connect ESP32 to the buttons and LEDs. I soldered the LEDs data input directly to pin 2 of the ESP32, as well as two wires to GND and VCC. The buttons will be connected in parallel forming two pairs that I connected to pins 25 and 27 on the board, so two buttons will be used to turn on the LEDs and two others to change the effects. Then at the LED output of this hexagon I soldered a connector, to which I will connect the next hexagon. To power the LEDs I will use a 5V and 4A power supply. To connect it to the first hexagon to power the LEDs I found an extension cable that has the same connector as the power supply, which having a white cable will show less on the wall. After securing the ESP32 with a zip tie to the 3D printed part, I soldered the black wire of the extension cord to all the negatives (GND of the LEDs, GND of the ESP32, white wire of the output connector and one pin of the four buttons), and the red wire to all the positives (5V of the LEDs, VCC of the ESP32, red wire of the output connector). The schematics of the connections is in the files below.To get the cable out, I created three spaces in the 3D printed part, so that you can choose which one to use depending on the orientation of the hexagon. After tidying the cables with some zip ties, the connections are done.

Step 11: Creating a Geometry

Now that the last hexagon is finished we can join them together to create the shape we want. The first hexagon is the one with the electronics, to which I put on the side one of the others. To join them together I used 3D printed arms, which fit perfectly into the spaces of the hub that’s the hexagons. These pieces have holes at both ends, with which we can screw them to the threaded inserts using M3 screws. Two of the holes actually have a slot, which can be used to compensate for minor differences between the sizes of the different hexagons while keeping the gap between the hexagons the same. This part caused some problems, as the hexagons were cut by hand and thus aren't perfect, so the gap between them was not perfectly straight. I know this may seem a minor issue, but I'm really precise for aesthetical details. Once the first two hexes were joined, I connected the output connector of the first one to the input of the second one, running the cable through the slot that is in the piece joining them, where it should fit nicely. Following the same process I then added the other hexagons as well, and watching the project taking shape was amazing. For the shape, the only limit is our imagination, and after a bit of testing I found a shape that adapts to the space where I want to put the hexagons. 

Now we just need to hang the hexagons on the wall, and to do that I created a small step in the inside space of all the 3D printed parts, that allows them to be hung with nails while maintaining them completely hidden. I put the hexagon lights over my desk, where I could hide the power supply behind some drawers.

Step 12: Finished!

Our hexagon lights are finished and in my opinion they look amazing, both when they are lit and when they are off. Although this project is completed, I will continue thinking about a “version 2.0” of the hexagon lights, with some improvements. However I hope you found this guide interesting and maybe useful. To see more details about this project, watch the video on my YouTube channel. Bye!