Mushroom Night Light


This is a short Instructable that I made for my grandkids. They had a wonderful owl nightlight that they took with them on a camping trip that was battery operated and doused itself in about 1/2 hour to save battery life when they were all ostensibly asleep. (Doesn't happen...) I saw this: https://beckystern.com/2025/06/08/led-mushrooms/ which gets its design from here: https://www.printables.com/model/274887-mushroom-lamp but these designs all run until the battery runs down/or need a cord connection. Timing circuits for the non-digital are difficult and I played around with timing from a 555 chip but it's a non-starter for 1/2 hour and poorly adjustable. So since the new ESP32 by Xiao are so cheap and dependable and it makes animations possible I built these with versions that run on a LiPo and go to sleep after an adjustable amount of time. The whole project costs under $10 and the 3D printing is fun with the kids.
Supplies


You will need a 3D printer and some PLA for the shell and parts.
- Xiao ESP32C3 $6
- Neopixel Strand cut from a long piece...$1.00
- ON/Off switch latching Amazon $1
- LipoBattery 2000 mah $2
Print the Parts

All the parts are printed on a Bambu P1P with or without support depending on orientation. The files were reduced by 50% in the slicer to make the project a reasonable size for kids to play with and reasonable size for a battery and small LED's to light.
Wire It




There is minimal wiring in this project and is easy enough to do with kids for a fun project. The Xiao has a charging circuit built in and the pads for attaching the battery are on the back. These pads should be tined first to make attaching the battery to it easier. The switch is wired to the positive battery terminal and then to the Plus terminal on the back of the Xiao. The ground is connected straight through. The power for the LED chain is drawn from the 3 volts on the Xiao board connected to the LED strip. The LED strip (Eight lights) is cut from a regular long strip of NEOPIXEL LEDS. The ground from the lights is connected to the board ground and the control wire is soldered to D9.
Build It








All the parts are made to press fit very tightly into the enclosure and may need a little hot glue to hold them in place. The on/off switch slides into the hole in the lower unit and the Xiao with its wiring slides in on top of it. The light holder is made to accommodate the neopixel strip without glueing. The wires are carefully corralled through the holes in the unit. The battery is hot glued into its holder and the light rack is glued on top of it. The mushroom top has some stabilizer design fringes at the edge that should be trimmed to prevent rubbing on the internals. The mushroom cap screws down over the stem portion and works well even with the size reduction in the slicing software. The mushroom caps that fill the holes can be printed in a variety of colors or left opaque. (See photos) These are superglued into position.
Program It


You can program this thing with anything you want for lighting...FastLED has a variety of color changing effects that you can find on the web. I tried a variety of them including Rainbow colors etc. and settled on this piece of software that utilizes color pallets and random timing and direction for the best effects. MAX_RUN_TIME can be modified for how long before the unit goes to sleep. In this file it is set for 15 minutes. Before it goes to sleep the unit sends a fill black command to the light chain to prevent it from lighting up on sleep.
Downloads
Using It



The unit is turned on by pushing the power button at the bottom. The unit will go to sleep after 15 minutes of flashing. While it uses minimal power through sleep...it will eventually need recharging through the USB-C connector at the bottom of the unit. Make sure the unit is left in the ON position or else the battery will not be charged. I also designed a unit that uses a NOODs LED strand from Adafruit if you just want a nice glow. This is basically the same circuit but with a resistor. Contact me if you want the file for holding the light strand.