Overview
Humans have been connecting around fire since the dawn of time. The fireplace is the focus of many houses and apartments, but our urban lifestyles don't always lend themselves to all the tending and feeding a fire requires. Many houses have antiquated fireplaces that no longer work, but are still designed to be the focal point of the room.
In this project, we'll create an artistic LED fireplace insert for your fireplace. Laser-cut clear acrylic flames are placed above high-density LED strips controlled with WLED, a free, open-source control program that works over WiFi. The flames "disappear" when they're turned off, but can be started up with a click on your phone or a request to Alexa. Make your own custom flame animations in WLED, which gives you sliders and palettes and all sorts of controls.
Take back your hearth.
You'll Also Need
- A laser cutter (Don't have one? Go join your local makerspace!)
- 3/4" Clear heat shrink tubing for sealing the ends of the strips
- Hot glue gun
- Soldering iron & accessories
- 1/4" plywood sheet for the base
- 1/4" cast acrylic sheet for the flames
- Wood glue or CA glue
You can get the plywood and acrylic both at your local hardware store, or shop around online once you know your project's dimensions. My project used about 24" x 36" of each to make a fireplace that is about 20" wide and 15" deep, with a height of around 13".
Page last edited July 03, 2026
Text editor powered by tinymce.
Wiring Diagram
The three wires from the light strand will connect to the three pins on the Mini Sparkle Motion as follows:
- Red to +5v
- Green to 33
- Black to G
The NeoPixel strips will zig zag through the project. Take note of the arrows on each strip. Make sure the arrow is pointing away / downstream from the controller for each strip. Always connect DO (data out) on the previous strip to DI (data in) on the later strips.
The project will be powered through the USB port on the Sparkle Motion -- plug in your USB cable for power.
Page last edited July 03, 2026
Text editor powered by tinymce.
WLED Installation
This page will guide you through how to install WLED on the Mini Sparkle Motion.
The Mini 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, Firefox 151 or Opera “desktop” browsers. Other browsers (Safari, older versions of 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.
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.
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.
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.
Enable AudioReactive Mode
Do this first before setting up your LED preferences with your GPIO number.
Click on "config" and head to the USERMODS tab. Scroll down a bit and you'll find the AudioReactive section.
If you want to turn on the AudioReactive features, click the box to enable AudioReactive mode.
Even if you do NOT want to enable AudioReactive mode, you must change these settings -- you can't set up the LEDs if you skip this step. Enter the settings and the Digitalmic section as follows:
- Type: SPH0654
- Pin I2S SD: 9
- Pin I2S WS: 10
- Pin I2S SCK: 23
The other pins are unused.
Reboot your Sparkle Motion Mini for changes to take effect.
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 (I had 157 pixels), and change GPIO to pin 33, the GPIO NUMBER associated with the LED data pin on your Mini Sparkle Motion. Make sure to select the correct Color Order for your LEDs as well. You know you've got it right when your pixels come on in a warm yellow.
If the GPIO number appears in red and won't let you select it, check the previous step: this board is configured with pin 33 assigned to the microphone, so you need to change it there before you can set it up as your LED GPIO.
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:
- 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.
- 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).
- Try re-uploading the WLED software.
- 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 sofware on, you won't see the WLED connection.
- If your lights came on in blue or green instead of yellow, your color order is wrong. See below to fix.
- If only half your lights came on, be sure you've got the correct number in the "length" field under LED preferences.
- 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.
- 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.
Page last edited July 03, 2026
Text editor powered by tinymce.
Laser Cutting
Start by measuring your fireplace. Mine is trapezoidal. It measures about 20 inches wide at the back and 30 at the front, and about 18" deep.
My plywood base ended up at around 19" wide and 11" deep - about the size of the little log-holder grate. My tallest flames are around 13" high. The whole thing fills about 2/3 of the space when I set it up on a 2x4.
The base is made from 3 pieces of 1/4" plywood, stacked on top of each other. The bottom layer is a solid base layer, with a cutout to leave room for the USB port and Mini Sparkle Motion board. The middle layer holds the LED strips in place in a zig-zag channel, and the top layer has slots that will hold the acrylic flame pieces vertically, centered right over the LEDs.
The flames are cut from 1/4" cast acrylic. I used the DLM Spartan laser at my local maker space for all the cutting.
Download the LightBurn project file below, or an .svg file if you use other software for laser cutting.
Modifying
Base Layers
Resize the base pieces to fit your fireplace, but be careful to keep the slots for the LED strips about the same width they are now. The strips fit a little loosely in there, so downsizing by an inch or two should still work, but if you make it a lot bigger or smaller the LEDs won't fit anymore. Keep them the same width if you're resizing by a lot.
Also, if you resize, make sure the slots on the top layer still line up with the center of the LED strip slots on the middle layer, so the acrylic is perfectly positioned above the lights.
The USB port cutout can be modified to fit the cable you plan to use. I ended up cutting this out of the base layer as well as the middle layer because the cable and Mini Sparkle Motion are slightly taller than the plywood. This gave me a little more room to work with, but I had to add some tape to the very bottom to give the Mini Sparkle Motion something to sit on. If you're using thicker plywood for the middle section, you can get rid of this cutout.
Flame Layers
The flame images are copies of each other that are slightly modified in length and height to add variation to the final piece. Feel free to squish or stretch them until you're happy with the layout. Make sure their final lengths will fit into the three slots in your project.
Or if you want to draw your own flames, here are a few tips:
- Don't make any super narrow "choke points" on the flames. The light needs a direct line to the tips to shine bright. I could have done better with this. The flames are also more likely to break at the choke points when you're popping them out.
- Leave about an inch of uninterrupted plastic at the bottom, to rest on the LEDs.
- A little variation goes a long way! Remember you can cut the same flame over again, and flip it horizontally to get a whole new shape.
Laser Settings
I used ChatGPT to help me figure out the best settings for cutting on my laser. Tell it what kind of laser and how many watts and it'll give you some good advice about what to try. For my makerspace's very powerful 1100W DLM Spartan laser:
- 1/4" Plywood: 12mm/s and 90% power, with air assist
- 1/4" Acrylic: 10mm/s and 75% power, with air assist
Your mileage will vary. It's really helpful to cut a small square out of the corner of your material to test your settings before bulling ahead. I also had varying results with different plastic sources, so take your time and do some tests first, or you may end up with more scorch-y flames than you intended. (Ask Me How I Know)
Getting the flames cut out was a little tricky. The acrylic was hard to punch out because of the tight curves, and I ended up breaking one of the flames off. This is not hard to fix with Weld-On acrylic glue -- but honestly, with 3 layers of flames, I didn't fix it -- I don't even notice the missing piece.
I did a second pass on the next piece, in hopes that it'd punch out more easily, but ended up scorching my acrylic a bit. I used some Novus 3 plastic polish and got much of the soot off.. and for the rest? Hey, they're flames. The scorch marks add to the realism, no?
The flames can also be sanded for an opaque look, which will make the whole surface area glow. I left mine un-sanded, for more of an edge-glow. As a bonus, the un-sanded flames nearly disappear when the fire is turned off.
I painted the top layer gold, to reflect more of the light back upwards and give a glowing embers look. Black or red might look really cool too.
Glue the middle layer down to the top layer with CA glue or wood glue. Assemble your electronics (instructions are on the next page). Place the electronics inside and put the third layer on top, making sure the slots line up with the LED strips. Secure this layer down with hot glue or mounting tape, so it's easy to remove if you need to service the strips or controller for any reason.
Place the flames vertically into the slots. Play around with orientation - you get a very different look if you face them all the same way for symmetry, or if you flip the middle one for variety.
The light looks a little weak in bright daylight, but once this is inside my fireplace with a dark surround, the effect is really beautiful.
I also tried placing a mirror behind the flames to add more depth, but it actually introduced a lot more light into the fireplace and made the piece less effective overall.
Page last edited July 03, 2026
Text editor powered by tinymce.
Electronics Assembly
I recommend doing the laser cutting first, so you have something to measure your light strands against to get them the perfect length.
Cut 12-15 inch wires in three different colors. I like to use red for the power wire, black for ground, and white for the data line. Make them a little longer than the width of your project. It's easy to bunch them up or trim them down, but lengthening them is harder.
Solder the wires to the Mini Sparkle Motion as shown: Red to +5v, white to 33, and black to G.
Slip a small piece of clear heat shrink onto the LED strip before soldering and move it down the strip until it's out of your way.
Connect the wires to your LED strip, making sure you're soldering to the IN end (the arrows printed on the strip should be pointing away from your solder joints). Connect red to 5v, black to G, and white to DI.
Plug in your microcontroller and verify that the lights come on. If you've loaded WLED they will come on in all yellow, or if you haven't done that yet they'll come on in rainbow. Either way, make sure your strip comes on before you seal it up.
To seal the strip, fill the heat shrink with a little hot glue to pot the wires in plastic. This way they're much less likely to pull off or break while you're assembling the project.
These strips are cuttable at any point. I found it easiest to just place the long strip temporarily into the laser cut slot to get the exact length I needed. Leave a little room at the ends of the slots for the wires to wrap around.
These high-density strips are a bit tricky to solder since the copper pads are so small, especially after they've been cut in half. I like to use the "sacrificial pixel" trick: when cutting these to length, leave a full copper pad on the OUT end, cutting super close to the next pixel. Then cut super close to the same pixel on the other side (the new IN end), leaving a full copper pad on the remaining strip. You're left with one pixel that has no copper pads on either side, sacrificing itself for your sanity, and two strips with full copper pads for easy re-connecting.
Slide on some more clear heat shrink and then connect the OUT end of the previous strip back to the IN end of the newly cut strip, leaving an inch or two of wire -- enough to comfortably get around the bend in the laser cut base.
Connect the third strip the same way. Once you've tested and verified they all work, seal up the ends with a little squirt of hot glue inside the heat shrink.
Page last edited July 03, 2026
Text editor powered by tinymce.
WLED Segments
A flaming fireplace has endless variety, with flickers and hot spots that move and change, and flames that create a mesmerising organic rhythm. WLED comes with a couple effects that mimic a fireplace, and do a pretty good job of it. But with the addition of layered effects in WLED 16, we can go a little further and make something with color variations and much more randomness to capture our subconscious primal mind, making a much more convincing fire.
Working with Segments in WLED
A segment is a defined range of LEDs that WLED can control independently. You can divide one long LED strip into separate zones, give each zone its own colors or effects, or—new in WLED 16—stack multiple segments on the same LEDs to combine effects together.
For this fireplace project, segments let you build a more layered, realistic flame. You might use one segment for a slow orange-and-red fire effect, then place a second segment over the same pixels for twinkles, sparks, or a soft yellow shimmer.
Open the Segments tab and expand a segment to see its settings. Segment 0 is the default segment and normally covers every LED in your project.
Creating and Selecting Segments
To create a new segment, click + Add Segment, then enter its Start LED and Stop LED numbers. WLED starts counting at LED 0, and the Stop LED is not included—so a segment with a Start LED of 0 and a Stop LED of 50 contains LEDs 0 through 49.
The checkbox beside each segment number selects that segment for editing. This is important: when more than one segment is checked, changes you make in the Colors or Effects tabs apply to all selected segments at once. This is handy when you want several physical sections to match, but it can be confusing if you forget that multiple segments are selected.
The small power button on a segment turns that segment on or off without affecting the rest of the LEDs. The brightness slider—sometimes easy to mistake for a volume control—sets the brightness of that individual segment. When you are layering effects, this is one of the best ways to control how strongly the upper effect appears.
Segment Layout Controls
Start LED and Stop LED define which physical LEDs belong to the segment. Use separate, non-overlapping ranges when you want different parts of a project to behave independently.
Grouping makes multiple physical LEDs behave as one larger virtual pixel. For example, a grouping value of 2 makes every pair of LEDs display the same color. This makes effects look chunkier and slower-moving, which can be helpful on very dense LED strips.
Spacing leaves dark LEDs between the active virtual pixels. A spacing value of 1 lights every other LED; a grouping of 2 with spacing of 1 creates pairs of lit LEDs separated by one unlit LED. Spacing is useful for special physical layouts, but for this fireplace you will usually leave it at 0.
Offset shifts where an effect begins within the segment. It does not move the physical LEDs; it rotates the effect’s starting position. Use it when an effect almost lines up correctly but needs to start a few pixels farther to the left or right.
Reverse and Mirror
The Reverse checkbox changes the direction an effect travels through the segment. A chase that normally runs left to right will run right to left instead. This is especially useful when you have two strips wired in opposite directions or want two halves of a project to move toward each other.
The Mirror checkbox reflects the effect around the center of the segment. Instead of one flame or sparkle pattern traveling across the whole strip, the same pattern is created symmetrically on both sides. Mirror works well for designs with a strong centerline and actually looks pretty good on this project.
Layering Segments in WLED 16
WLED 16 adds true segment layering. To layer effects, create two segments with the same Start and Stop LED values so they cover the same physical pixels.
For example:
- Segment 0: Fire 2012 or Candle effect in reds, oranges, and deep amber.
- Segment 1: A sparkle, twinkle, or shimmer effect using pale yellow or warm white.
- Segment 2: Optional slow red glow or ember effect at low brightness.
WLED renders the lower-numbered segment first, then places higher-numbered segments over it. Segment 0 is the background layer, Segment 1 sits above it, and so on.
The Blend Mode dropdown determines how the upper segment combines with the layers beneath it.
Top / Default shows the upper segment normally and ignores the lower layer wherever the upper effect is drawing. This is the most straightforward setting, but it can make an overlay look opaque.
Bottom / None shows only the lower layer. This is mostly useful for temporarily hiding the upper segment without deleting it.
Add adds the colors together, making the result brighter. This is one of the best choices for sparks or glowing embers over a flame effect, though too much brightness can wash the colors toward white.
Subtract removes the upper layer’s color from the lower layer, darkening the result. It is more of an experimental or special-effects mode than a fireplace setting.
Difference compares the two layers. Similar colors become dark, while very different colors become bright. It creates dramatic, unusual color changes.
Average mixes both layers evenly. This can create a softer combined effect, though it may make your fire colors look muted.
Multiply darkens the lower layer based on the upper one. White allows the lower layer through, while black blocks it. It is useful for adding shadow, texture, or a masking effect.
Divide brightens the lower layer where the upper layer is dark. It creates a more intense, high-contrast result and is best saved for experimentation.
Lighten keeps whichever layer is brighter at each pixel. This is useful for placing bright sparks over a darker fire without adding too much extra color.
Darken keeps whichever layer is darker. It can create shadowy, smoky effects.
Screen is a brightening blend mode that treats black as neutral and lets white win. It is excellent for soft glows, fireflies, sparkles, and warm highlights.
Overlay increases contrast by darkening dark areas and brightening bright areas. It can make a fire effect feel richer, but use it gently because it can become intense quickly.
Hard Light is a stronger version of Overlay controlled more by the top layer. It creates punchy contrast and vivid color.
Soft Light is a subtle version of Overlay. It is a good choice when you want to add texture or movement while keeping the original fire effect recognizable.
Dodge brightens the lower layer based on the upper layer. Light pixels in the top effect create strong glowing highlights.
Burn darkens the lower layer based on the upper layer. It can add soot, shadows, or darker texture.
Stencil shows the top segment wherever it has color and reveals the bottom segment anywhere the top segment is black. This is useful when the upper effect acts like a moving cutout or mask.
Page last edited July 03, 2026
Text editor powered by tinymce.
Flame Animations
It's a lot of fun to sit and toy with the fire, playing with brightnesses and colors and speeds. The possibilities are endless.
Once you're happy with a combination, SAVE IT AS A PRESET IMMEDIATELY. A stray click can undo all your hard work as clicking on a different preset will reset all the segments and all your tweaks will be lost.
You can always refine the presets using the "overwrite with state" checkbox, so save your work early and often.
I played with my fire for quite a while and made a handful of different modes. This one is my favorite!
Segment 0
This segment encompasses all the LEDs (0-157). I used a glitter effect with a custom color gradient of red sparks with a yellow background. Set the colors just beneath the color wheel and then select the "color gradient" palette. I set the blend mode to Lighten. This creates a washed out yellow and red glitter effect on the entire strip. It comes across like flickering sparks on across the whole fireplace. I left the brightness at 100%.
Back Segment
The next segment uses leds 0-50, which are the LEDs in my back-most strip. I used the Fire color palette and the Fire 2012 effect, and set the effects sliders for a slower flame effect. I also clicked the "mirror" box - this make the flame appear to burn from both sides instead of starting on one side and burning toward the other.
I used the "Add" blend mode so the sparks from Segment 0 come through more intensely on this layer, and kept the brightness all the way up since this needs to show through all the other layers.
Middle Segment
For LEDs 51-101 (my middle strip) I used the Glitter effect again, and set the palette to show red glitter with a blue background. I moved the effects sliders down to a very slow setting. This makes a deep blue, slow-moving area in the center of the fire that slowly creeps back and forth like a very hot flame, with occasional slow red ember-like sparkles.
I turned the brightness down to about 50% on this layer.
Front Segment
For the front LEDs (102-157), I used the Fire palette and Fire 2012 effect again, but with slightly different speed and intensity slider settings, and I checked the Mirror box again. This is similar enough to the back strip's effect that it gives some cohesiveness to the animation while adding pseudo-randomness due to the different speeds of the two effects.
I turned the brightness down to about 15% in order to let the back layers shine through a little more.
Page last edited July 03, 2026
Text editor powered by tinymce.
Timer & Alexa
To make your fireplace come on automatically at a certain time, head to config > Time & Macros > Time-Controlled Presets. Here you can set timers to turn your fire on at a certain time (I have mine set to come on 30 minutes after sunset). You can set timed presets to change modes or turn the fire off as well (hint: make a preset called "off" and set everything to Solid / Black).
To control your fireplace using Alexa, head to config > Sync Settings and scroll down until you find the Alexa Voice Assistant panel. Click the "Emulate Alexa device" box and give your project a name.
Reboot WLED.
Then go into your Alexa app and click the + button and then Add Device. Scroll all the way to the bottom and click "Other", then "Can't find a matching logo". Under Available Options click "Device requires set up in a device maker app". It will scan your network (make sure your Sparkle Motion is active). It will find your device and allow you to configure it, adding it to your Living Room or setting timers or routines.
Page last edited July 03, 2026
Text editor powered by tinymce.