Custom NanoLeaf Lights! DIY, Wireless, Modular, Arduino, 3D Printed!




Introduction: Custom NanoLeaf Lights! DIY, Wireless, Modular, Arduino, 3D Printed!

About: My name is Reda, I recently started a YouTube channel called Projects with Red, where I share some useful and/or fun projects that you can do and learn from. I am also planning to share all projects here on In…

I am very excited to share this project with you because it looks absolutely beautiful and is super easy to make!

It's a NanoLeaf inspired wireless Arduino RGB LED lights project that not only allows you to create any custom NanoLeaf shape you want but also use the same identical segments to create a 4-digit display, where you can display the time, temperature, humidity, or pretty much anything you want. All using one single modular segment and for a cheap affordable price! I have made a video that goes over the whole project and explains each step very clearly. So if you want a video version, I highly recommend watching the video as it is much easier to follow.

The instructable thumbnail image shows some of the things you can do with the segments in this project.

Lets get into it to see how this is all made!


Let's first go over all the components you will need for the project.

  • ESP32, for the micro-controller.
  • 12V 8A, power supply.
  • LM2596 or any step down converter, to convert 12V to 5V for the ESP32. Remember to use the screw on this component to adjust its output voltage to 5V using a voltmeter.
  • LED strip, the specific one used in this project is the WS2811 LED strip. For all the supported LED strips, see this.
  • 1000μF capacitor, across the LED strip.
  • A4 3mm matte opal acrylic sheets (x7), used to get the glowing effect. You can cut 4 shapes using 1 A4 sheet. I recommend getting extra A4 sheets just in case something bad happens...
  • Refer to Acrylic sheet shape to see what shape you need to cut from the acrylic sheets.
  • DHT11(optional), used to get the temperature and humidity when using the 4-digit display.
  • Power switch, to turn on and off.
  • M2 bolts, to attach the lid to the main housing part. They can be from 8mm to 12mm long.
  • 20 AWG flexible silicon wires, for connecting segments together.
  • Dupont crimping tool, the tool used to make the dupont connectors.

Please note, all the 3D printed parts, code, and more information can be found in the project repository here.

Step 1: Segment Assembly

Now that we know all the components that make up this project, lets see how they all come together. First we will go through how to make a segment, since once you know how to make a segment, you are pretty much limitless in this project.

Step 2: The Main Housing and the Acrylic Sheet

The main housing and the acrylic sheet simply gets glued into the ledge inside the main housing like shown in the image.

Step 3: LED Strip

For the LED strips, they need to be cut to a length of roughly 15 cm long to fit in each segment. Make sure you only cut using the cut marks in the LED strip as marked in the first image (red arrows). Please note the number of sections in your LED strip segment, in my case there are 3 sections, since there are 2 cuts as illustrated in the first image.

We need to solder wires to the LED strip to allow us to connect segments together, which for that I used dupont connectors. The length of the wires actually matter, so for the female side the wires need to be 12 cm long, and for the male side, they need to be 22 cm long. The female and male sides depend on the arrows marked on the LED strip. The wires need to be 20 AWG to withstand the current. This is illustrated in the second image.

To solder the wires to the LED strip, I found a very easy way to do it, in the short clip I show how you can do it. Using pieces of tape for attachment and positioning of the LED strip and wires.

Step 4: The Lid

Now for the lid, you simply need to 3D print it and glue the LED strips to the flat side and route the wires to the back.

Step 5: Lid and Main Housing

Then finally, the lid and the main housing simply attaches together using the 2 bolts. And that right there is a fully assembled segment!


When connecting 2 segments together, you have to ensure that you connect them in the correct direction, the red wire needs to go to the red wire, and the black wire needs to go to the black wire, see image. So whenever you connect segments together, double check and triple check the orientation.

Step 6: Segments Attachment

Now we know how to make segments, lets see how they attach together.

For the segment attachments, I made this tiny little 3D printed connector that slides in into any of the 10 groves that is around each segment. This allows you to easily attach segments together in multiple ways to create the exact shape you want.

The clip demonstrates how to connect 2 segments together using this connector piece.

Step 7: Shape Sketch

Now that we know how to make segments and how to attach them together. Let's see how we can create any custom shape we want!

I first recommend making a sketch of the shape you want to make and also come up with a way to wire it. The image is an example of such sketch, marking the start and end points. The start point is the female side, and the end point is the male side, you can choose the location of these points depending on your shape.

Step 8: Creating the Shape

After you have created the sketch, you first start by attaching all the segments together using the connector to make your shape.

Step 9: Shape Wiring

Then flip it around, and connect the wires together following your sketch.

Step 10: Breadboard Wiring

Now for the breadboard wiring, the image is a diagram of the breadboard wiring.

Step 11: Code Upload

For the NanoLeaf shape, the code is very simple to upload. All you need to do is to go to, press install, choose your upload port and insert your WiFi credentials when asked, and that's how simple it is!

Now for the setup you need to do on the phone, it will be pointless to write it all out here, since there are two many small details, so I will just direct you to the video at the 09:39 mark where I go through the setup you need to on do on the phone after the code upload.

Step 12: Demo

After you have uploaded the code and did the setup on your phone, you can now control your NanoLeaf shape using your phone!

Now you can easily change, add, or remove segments to create any kind of shape you want using the exact same identical modular segments!

Step 13: 4-digit Display

The next steps are for how you can make the 4-digit display.

Now for the 4-digit display, it is a bit more involved, but still simple to make. You will need a total of 28 segments, since each digit is made up of 7 segments.

Step 14: 4-Digit Display Wiring

For the wiring, it needs to match the exact wiring diagram, where the starting point is on the right (female), and the end point is on the left (male).

Step 15: 4-Digit Display Breadboard Wiring

The breadboard wiring is pretty much exactly same as the custom shape, the only difference is that an extra LED strip segment is attached at the beginning, this is needed to control the 4-digit display appropriately. The DHT11 is optional, it is used to obtain the temperature and humidity.

Step 16: 4-digit Display Code

Now this is the main difference between the general NanoLeaf shape and the 4-digit display.

Please note, in the video (time: 13:37) I go through and show the exact steps on how to upload and use the code for the 4-digit display. Below is just a short text version.

  1. Install VSCode.
  2. In VSCode, install the PlatformIO IDE extension.
  3. Clone/download the project repo.
  4. Open the /WLED directory in VSCode.
  5. There are two changes you need to make before uploading the code:
  • In WLED/platformio.ini, under the [env:esp32dev] environment, change the upload_port to your micro-controller port.
  • In WLED/usermods/NanoLeaf_Display/usermod_nanoleaf_display.h, change the ADDR_LEDS_PER_SEG variable to the number of addressable LED sections there are in your LED strip. In the image it illustrates what I mean here, there are 3 sections, since there are 2 cut marks, so if you were to cut the LED strip on the cut marks, you will get 3 seperate sections, this is the number you need to set the ADDR_LEDS_PER_SEG variable to.

Now you can upload the code.

For the setup you need to do on the phone and how to use the usermod settings to control the 4-digit display, refer to the video (time: 14:42).

Step 17: 4-digits Display Demo

Just like that, you have created an epic 4-digit display!

Step 18: Desk Light

You can even use the segments to create a little desk light!

Step 19: Done!

That is the project done! This project truly looks stunning in real life, which unfortunately does not come through in the images and video.

I highly recommend watching the video, as it is much easier to follow and everything is clearly explained, you will also understand the project better!

Thank you very much, and I will see you on the next project!

Step 20: Project Resources

Includes: 3D printing files, code, wiring, and everything else you need.

Electronics Contest

Finalist in the
Electronics Contest

Be the First to Share


    • Digital Fabrication Student Design Challenge

      Digital Fabrication Student Design Challenge
    • Colors of the Rainbow Contest

      Colors of the Rainbow Contest
    • Make It Modular: Student Design Challenge

      Make It Modular: Student Design Challenge



    Question 8 hours ago

    I tried to do this lovely project and then realised that there are 2 types of ESP32, on mine there is no D16!!!!!
    So which pin are the output to the LED strip and Temp sensor???

    Screen Shot 2022-06-24 at 23.44.54.png

    2 days ago

    Great project! Everything is laid out neatly in your video. Thanks for sharing your great work.

    Projects with Red
    Projects with Red

    Reply 1 day ago

    And thank you for this amazing comment!


    3 days ago

    Good project! Excellent.


    3 days ago

    Excellent video, concise with some truly helpful tips - especially the one for soldering wire directly to a LED strip - Can’t believe I never thought of doing it that way before. Thank you!

    Projects with Red
    Projects with Red

    Reply 2 days ago

    Thank you! I really appreciate that. I am glad you found it helpful :)


    3 days ago

    I really like your simple solution to connecting the segments together, this is way better than the over-engineered pogo-pin/magnetic connection solution I've tried to engineer. And while my attempts give you that dynamic ability to reposition segments on the fly, actually implementing it in an easy-to-manufacture way has been a huge challenge. Most do not move their segments around daily, and static installations are the most common.

    The one thing I would add to this project is a logic shifter for the LEDs. The ESP32 uses 3.3v logic, and while in "most" cases things work fine, sometimes you get wonky or odd behavior on the LED strips. The WS2812 Spec says low is <0.3 x Vdd and high is >0.7 x Vdd. On 5v strips, this puts high squarly in the "undefined" zone. This gets even more into the "gray area" on 12v strips. WS2811, 2813, and 2815 protocol strips can get even pickier. It's just good practice to use a level shifter and guarantee nice clean edges on the command pulses.

    Projects with Red
    Projects with Red

    Reply 2 days ago

    I love the idea of using pogo-pin/magnetic connectors! I didn't even know they existed. My initially idea was to actually somehow create a magnetic connection, but I couldn't come up with a practical and efficient solution.

    The major problem I encountered with coming up with a magnetic connection is that how will the wire paths be managed, since in the case of this project segment shape, if for example you want to create a leaf segment in your shape, there is no way you can connect the magnet in the other end of the leaf segment to the other part of the shape to continue the "circuit", hence I just went for simple wires at the end haha.

    If you do come up with an elegant solution using magnetic connectors, if you can let me know, I would love to know how you did it!

    Yep a level shifter is good to have, however, surprisingly so far I have not come across any issues at all, but using a level shifter is for sure the way to go to be more robust.

    Remember to subscribe and checkout the YouTube channel, you are a type person I most want to be part of the community! :)


    3 days ago

    Nice project! Thank you.

    Projects with Red
    Projects with Red

    Reply 2 days ago

    Thank you! I am glad you like it.


    Question 3 days ago on Step 18

    Is it possible to make this using an esp 8266?
    what changes would be needed to do so?
    Especially the clock part.

    Projects with Red
    Projects with Red

    Answer 2 days ago

    Yes you should be able to. There won't actually be too many changes you need to make, the ones I can think of right now is the enviroment in the "platformio.ini" file, where you need to change the "default_envs" variable from the ESP32 environment to the ESP8266 environment. Then I think its just the data pin you connect the LEDs to your ESP8266, which needs to be changed in the WLED app. Those are the two major changes I can think of right now, without actually re-making it using an ESP8266. There will be some more small changes you need to make for sure but they should be self explanatory. I hope this helps!


    3 days ago

    Awesome project, might follow thisnto build my own!

    Tip for the connection parts:
    Make the male Dupont header with one female connector (ground for example). En make the female Dupont header with one male ground connector. This way you can never make the mistake of connecting it the wrong way around.


    7 days ago

    What can i say , u blew me away.Thank u very much for the time u took to describe it in great detail. Kudos ser

    Projects with Red
    Projects with Red

    Reply 3 days ago

    Thank you very much for that! I appreciate it!