Maker.io main logo

Tree Branch Wall Lamp with Sound Reactive Lights

2026-05-26 | By Adafruit Industries

License: See Original Project Audio LED / Display Drivers Microcontrollers Microphone Wifi

Courtesy of Adafruit

Guide by Erin St Blaine

Overview

Add a classy touch of nature to your home or office with a beautiful wall-mounted tree branch that glows from behind with programmable seed pebble pixels. Elevate your space with beautiful light art made from your local environment.

This is an easy beginner project that requires no soldering or coding. The pebble pixels are inexpensive enough that you can use a lot of them, and flexible enough to attach to any shape of branch or other found object or art piece on your wall.

This project is powered with the easy-to-use Sparkle Motion board. All you need to hook it up is a screwdriver. We'll show you how to install the free, open-source WLED software, giving you total control of the lights from your smart phone or web browser over your local WiFi network.

Ready to get started?

lamp_1

Parts

Wiring Diagram

diagram_2

Wire the IN end of each of your pebble pixel LED strips to the Sparkle Motion screw terminal parts as shown:

  • G wire to -

  • Data wire to 19, 21, and 22

  • Power wire to +

These strands are not marked in any way, and it can be hard to tell which wire is which, and which end is which. They can vary by lot as well. You may need to do some testing before you get all the wires correctly installed.

There is a fourth pin output as well using the solder pads below the screw terminal. If you want to add a fourth strip, use pin 18. See the full pinout diagram here.

WLED Installation

This page will guide you through how to install WLED on the Sparkle Motion.

The Sparkle Motion has a USB to serial chip which may need a driver installed before you can install WLED. Head over to the How to Install Drivers for WCH USB to Serial Chips tutorial and download and install the new driver.

Install WLED

These next steps require a Web Serial-compatible browser. As of this writing, that means Google Chrome, Microsoft Edge, or Opera “desktop” browsers. Other browsers (Safari, Firefox, Explorer and anything mobile) won’t work.

Visit https://install.wled.me/

Plug your microcontroller into your computer with a known good USB cable. Click "Install" and select the port for your board.

Depending on the USB-to-serial bridge chip on the board, you might see one or two serial ports. On Mac, for instance, there might be both “/dev/cu.usbmodem[number]” and “/dev/cu.wchusbserial[number]”. Use the “wchusbserial” one.

wled_3

After successful installation, enter your WiFi network name and password when prompted. This must be a 2.4 GHz WiFi network; ESP32 does not support 5 GHz networks. If it can’t connect, then as a fallback WLED will create its own 2.4 GHz WiFi access point.

name_4

If you don't see the "Connect to Wi-Fi" prompt, you'll need to set up your WiFi network using AP (access point) mode. Open up your WiFi settings and look for a WiFi network called WLED-AP. Connect to this network using the default password wled1234. The WLED interface will pop up in its own browser.

From here, go into Config/Wifi Settings and enter your WiFi credentials near the top. Give your project a name in the mDNS field a little further down the page. Now you can type in "projectname.local" (where "projectname" is your mDNS name) into any web browser on the same wifi network to access your microcontroller.

You can also scan the QR code below to open access point mode.

For more help and troubleshooting tips visit the Getting Started page on the WLED knowledge base.

base_5

base_6

qrcode_7

Setup & Preferences

WiFi Setup

Head to the WiFi Setup screen under Config and create a good URL so you can control your project from any web-enabled device. Call it something you'll remember, that's easy to type into any web browser on your WiFi network in order to connect to your project.

In Safari or Chrome on your phone or computer, type in this web address to access the WLED interface: http://projectname.local (where "projectname" is whatever you put into this field).

Check out the Additional Settings page for more info on accessing your project. WLED has an "access point mode" that doesn't require a WiFi network for when you're out on the go. It's also helpful to download one of the WLED apps to help manage and organize your projects.

setup_8

setup_9

LED Setup

Next, head to the LED Preferences tab under the Config menu.

Scroll down to Hardware Setup. Put your total number of LEDs into the Length field (don't worry if you don't know yet, just put a placeholder number and you can change it later), and change GPIO to 19 on your Sparkle Motion.

For this project we're using three different pins, since there are three strips of lights on the branch. Click the + button and add two more strips: one on pin 22 and one on pin 21.

The animations will run along each strip in series, so keep the order of the pins the same as the order your strips are oriented on your branch.

led_10

led_11

Color Order

If your lights turn on in yellow, you're golden! If they turn on in any other color, the color order dropdown needs to be adjusted. For each of your strips, select the order (RGB, GBR, etc.) that makes the lights turn yellow.

color_12

Use It

use_13

Now you can use any computer or handheld device to control your LEDs.

Make sure your device is on the same WiFi network as your board. Navigate to your custom URL (projectname.local/ ) in a web browser. You'll see a color picker above a whole bunch of color palette choices.

Choose a color, choose an effect, and watch your lights animate and glow!

Save your favorite combinations as presets, create playlists, control the speed and intensity of the animations, and lots more. This web app is incredibly intuitive and easy to use.

Head over to the WLED wiki at https://kno.wled.ge/ to delve into all the particulars.

Troubleshooting

If your lights didn't come on, here are a few things to try:

  1. Head back to WLED and check your pinout configuration under LED Preferences. Be sure the pin number is the correct GPIO for the attachment point you used.

  2. Check your wiring! Be sure you connected to the IN end of the LED strip. These strips can be inconsistent, so this is a pretty common problem. Use an alligator clip to try connecting the data wire on the other end (the power and ground wires should work from either end).

  3. Try re-uploading the WLED software.

  4. If the lights come on but you can't control them: i.e. you type in "projectname.local" into your browser and it won't connect, make sure you're on the correct WiFi network. If you're on a different network than the one you set up the software on, you won't see the WLED connection.

  5. If your lights came on in blue or green instead of yellow, your color order is wrong. See below to fix.

  6. If only half your lights came on, be sure you've got the correct number in the "length" field under LED preferences.

  7. If your lights came on in a variety of weird colors and looking like a 1950s diner interior, you may have the wrong LED strip type selected. RGBW strips and RGB strips are not the same, so be sure you've got the correct strip type, or you'll get very odd behavior.

  8. If your microcontroller hangs or keeps rebooting, or gets really hot, you may have the power and ground lines switched. Unplug right away and check: this is a fast way to brick your controller.

WLED Additional Settings

Brightness Limiter

Find this on the LED Settings screen.

WLED automatically limits the brightness of your project, so your power supply doesn't get over-taxed. The default amperage is 850mA, which is a little low for most power supplies.

For some projects, especially battery-powered projects, having the limiter turned on is a good idea. But if you're not getting the brightness you expect, try adjusting this number to match the amperage of your power supply or battery pack.

settings_14

WLED App

There are a couple different apps available to manage your WLED projects. Name and organize your projects, and find them quickly without having to type in a URL. Check the Apple or Android store for downloads.

My favorite is "WLED Native". It allows you to organize multiple instances and easily switch between devices without having to remember any URLs.

app_15

Backup Config & Presets

Under Config / Security & Updates you will find a place to back up your data. It's a good idea to back up your config file as soon as you're happy with the settings. Save it as a .json file on your computer. Now you can prototype and experiment to your heart's content, and if everything breaks, just re-upload this file. Or, if you're doing another build you can use this feature to copy all your settings from one board to another.

backup_16

Electronics Assembly

Use a tiny precision flat head screwdriver to carefully and gently open the ports on the screw terminal. These are pretty easy to break so be gentle. Look carefully at the openings as you turn the screws. When you see a square opening appear, stop turning.

Strip about 1/8" of wire from the 3 pebble pixel wires and insert carefully into the screw terminals. Gently tighten the screw until it's snug: about 5 turns -- it shouldn't turn freely, if it does, you've got the wire in the wrong part of the hole so pull it out and try again.

assembly_17

assembly_18

Which Wire is Which?

The power wire goes to +, the data IN wire to the numbered GPIO pin, and the ground wire to -. However, these strips are not marked in any way, which can make our life confusing. But there are a few ways to figure out which wire goes in which hole. Check out the Seed Pixels | Adafruit NeoPixel Überguide for some guidance.

Separate the wires and strip about 1/8" of shielding from each. Insert them into the corresponding holes and tighten down. Plug the Sparkle Motion controller in via the power jack or USB-c port and see if your lights come on.

wire_18

Troubleshooting

No lights? Here are a few things to try:

  • Check your wire connections. These screw terminals can be tricky to manage and they break pretty easily. Try trimming the wires again and re-inserting, if you think your connections might be the problem.

  • Try reinstalling WLED.

  • Be sure you're connecting to the "input" end of the net and not the "output" end. These strips are directional and will only work if you connect to "in".

  • If your lights are showing unexpected colors, change the "color order" in WLED (LED Preferences, it's a dropdown in the setup for each strip.)

  • Be sure your power wire (with the copper coil inside) is plugged into +. Try switching the ground and data wires.

If you want to connect more than 3 strands, you can also use the solderable pins next to the screw terminal. Check the pinout diagram for more information.

WLED Audioreactive Setup

The Sparkle Motion comes with an onboard PDM microphone, so adding audio reactivity to your project is easy. Here's how to get it set up.

Click Config and then select the Usermods tab.

audioreactive_19

Scroll down a bit and you'll find the AudioReactive section.

Click the box to enable, then enter the settings and the Digitalmic section as follows:

  • Type: Generic I2S

  • Pin I2S SD: 25

  • Pin I2S WS: 33

  • Pin I2S SCK: 26

The other pins are unused.

Reboot your microcontroller for changes to take effect. That means either pressing the reset button or unplugging the board from power completely for a few seconds.

scroll_20

If you want the audio to work well in both loud and quiet settings, you may want to turn on AGC - automatic gain control. Start with Normal and then experiment with other options if you want more or less 'gain speed'.

speed_21

There are a lot of other settings you can adjust in WLED. I found that the default settings for this mic seem to work perfectly, but you can delve into the particulars at https://kno.wled.ge/advanced/audio-reactive/

To use audio reactive mode, head back to the main interface and select any effect that has a music note icon next to the name. You can also search for musical-reactive effects that are built in.

Make some noise and see how your lights react. If it doesn't work, check your pins, try turning on AGC, tapping on the mic, and rebooting (removing power completely, waiting a few seconds then turn back on).

mode_22

If you happen to have a 2D matrix as an output, the GEQ effect shows a 'binned' frequency response graph which can be good for debugging!

2d_23

2d_24

Build the Lamp

Find a suitable tree branch with a few larger branch sections. The biggest part of the trunk should be at least 2" / 5cm across -- you want it wide enough to hide the Sparkle Motion board.

Look for a branch that will naturally lay fairly flat against the wall. The 3 main sections of this branch are all in a fairly even 2 dimensional plane. Trim off any extra branch sections you don't want in your artwork.

build_25

build_26

Be careful trimming, cutting, and stapling branches. Use gloves and eye protection.

Cut off any knots or protuberances on the back side that will keep the branch from lying flat on the wall. The lights will diffuse best with a small amount of separation / "hovering" above the wall. I wanted to keep as much of the natural curve as I could without stabbing anyone who happens to walk by with pokey twigs.

cut_27

cut_28

Make a cutout in the back of the thickest part of the branch that's the right size to hide the Sparkle Motion board. I used a band saw for this and it made a clean cutout / enclosure area.

cutout_29

Be sure the lights are turned and no power is running to the Sparkle Motion board.

With the bumpiest part of the lights facing outwards, start attaching the lights to the branch. I used a staple gun, which worked great as long as I was VERY careful not to pierce the light strand with the staple. If you do accidentally pierce it, pull the staple out and try again.

I hit the line a couple times but the lights still work. Just don't turn them on while a staple is piercing the strand -- it could short out your wires if it's touching two separate sections.

board_30

It's easiest if you keep the light strips in the same order as the pins on the screw terminal: left branch to the left port, middle to the middle (pin 22), and right branch to the right port. This way all the "chase" type animations will automatically run down your branches in order.

Use zip ties or thin wire wraps to attach the pixels in places where the branch is too narrow for staples.

Keep the lights as close to the center of the branch as you can, so they aren't visible from the front.

lights_31

Run a strip of lights down each branch, overlapping them along the trunk. You can cut these lights in between any two pixels to make more strands. Be sure not to hit the previous strips with your staple gun when adding the new strips.

Plug the Sparkle Motion in and test to be sure that all the strips are working. If so, glue the Sparkle Motion down into its little spot, being careful not to pull any of the wires loose from the screw terminal.

run_32

Install & Use

This lamp looks best if it's mounted around 1-2" away from the wall. I used long wood screws to make this happen.

Drill a pilot hole through the lamp first, and make sure you don't drill through the light strand (it's easiest to drill this from the back). If you can mount the main trunk area to a stud in your wall, that will work best. Otherwise use sturdy wall anchors that are rated to hold the weight of your piece.

Drive the screw all the way into the branch so the head is flush with the wood. Then, drive the screw into the wall but don't tighten it all the way. This method allows you to hang the branch with enough space between the wood and the wall that the lights will diffuse beautifully and create a backlit glow.

install_33

install_34

install_35

Animation Presets

Once your lights are working, it's time for the fun part: creating light animations using WLED presets. This is easy and intuitive in WLED. Choose a color palette and an effect, then play with the sliders at the bottom of the Effect Mode column to customize the effect.

When you find something you like, click the +Preset button in the Presets tab and give your preset a name, then save it. You can reorder them using the "Save to ID" field.

You can create hundreds of presets using the preprogrammed effects, so take some time to play around and see what looks good on your LED strip.

presets_36

Mfr Part # 6100
SPARKLE MOTION PCB ANTENNA
Adafruit Industries LLC
£18.49
View More Details
Mfr Part # 6024
ADAFRUIT NEOPIXEL PEBBLE / SEED
Adafruit Industries LLC
£22.19
View More Details
Mfr Part # 6269
USB TYPE C SYNC DATA CABLE WITH
Adafruit Industries LLC
Add all DigiKey Parts to Cart
Have questions or comments? Continue the conversation on TechForum, DigiKey's online community and technical resource.