Blueprint

ESP32 home light show

Using ESP32 you can make a small home light show with 2 LED strips, a neopixel ring, a laser, a buzzer and an RGB LED!

Created by mavory mavory

Tier 4

9 views

0 followers

m0.hid m0.hid approved ESP32 home light show ago

Tickets awarded: 157 tickets

Tier: 4

Great work on this! The web UI looks really clean!

Iamalive Iamalive 🚀 submitted ESP32 home light show for review ago

mavory mavory submitted ESP32 home light show for review ago

Iamalive Iamalive 🚀 requested changes for ESP32 home light show ago

Hey, atm you're asking for 0 in terms of grant. I'm assuming this means you just want this project to be moved to build queue? If so, please say that in the note to reviewer!

mavory mavory submitted ESP32 home light show for review ago

zsharpminor zsharpminor requested changes for ESP32 home light show ago

Hi! This is really great, but since you're aiming for Tier 4 is it possible to make a wiring diagram showing how you put your stuff together? Thanks!

mavory mavory submitted ESP32 home light show for review ago

mavory mavory added to the journal ago

The project is already completed!!!

ESP32 home light show

image

Why did I do this?

I wanted to create something with lighting effects and a few days ago I got this ring, so I wanted to try it out and also see how the relay works with LED strips.

Features

  • Web interface
  • You can switch modes
  • It has a buzzer and an RGB LED for notification
  • You can turn off various lights, buzzer, etc.

Scripts

The script has exactly 199 lines, so it fit under 200!! It was very difficult, but I put everything in just one script, so you can just copy it and paste it into the ESP32 right away.

How it works?

You can change profiles and turn off various lights via the web. The web runs on the ESP32 IP address. There is a small RGB LED and a buzzer for signaling. Everything can be turned on manually using the touch sensor hidden in the case.

Here is a youtube video where you can see how it works: Link

Wiring Diagram

image

Components:

  • ESP32 (Powered via USB or 5V Vin)
  • Touch Sensor (TTP223):
    • SIG: GPIO 4
    • VCC: 3.3V / 5V
    • GND: GND

Outputs:

  • Relay (Strip Control): GPIO 23
  • Laser Diode: GPIO 22
  • Passive Buzzer: GPIO 17

Lights:

  • NeoPixel Ring (24 LEDs):
    • Data: GPIO 21
    • VCC: 5V
    • GND: GND
  • RGB LED:
    • Red Pin: GPIO 19
    • Green Pin: GPIO 18
    • Blue Pin: GPIO 5
    • GND: GND
  • LED strips:
    • 5V: COM (Relay) ---> 5V external (NO on relay)
    • GND: GND

Libraries:

- Arduino.h
- WiFi.h
- ESPAsyncWebServer.h 
- AsyncTCP.h
- Adafruit_NeoPixel.h
- LittleFS.h

mavory mavory added to the journal ago

GitHub editing

When I had the case finished, I spent some time working on GitHub. I had to export all the stuff and later upload it to the aforementioned GitHub:

  • BOM
  • Journal.md
  • Readme.md
  • CAD (3D models)
  • Scripts (.ino script)
  • Circuit diagram (Info.md ​​and CD)
  • Photos

I still have to edit README.md and JOURNAL.md and then I think I'll finish the last few things and we'll be done!

image

mavory mavory added to the journal ago

Finishing the smaller details

I still had to finish some minor details. I had to peel off the ring and stick it back on and tape it from the bottom. I also wrapped the cable with white tape and closed everything again later.

IMG_20260105_200620

mavory mavory added to the journal ago

Finishing the case

I decided to make the case first and then finish GitHub. I started by putting the breadboard with the components in the case and as always (it's a ritual) the cables fall out, so I don't know where to connect them...
But when I solved this, another problem came up, I couldn't get to the relay very well, but I somehow managed to connect the LED strips. The holes for the things were already big enough and everything went smoothly. I later glued the ring so that it wouldn't move.
I also had to remove the supports from the 3D print, then I closed and glued everything together!
20260105_195151

mavory mavory added to the journal ago

Circuit Diagram is ready

I tried to create a circuit diagram in KiCad, I used ESP32 again, buzzer, RGB LED,... I connected everything, but before that I was wondering if there were different models for some components in my project - I couldn't find anything after research, so I used generic connectors.
After connecting and exporting, I remembered that I could add how I would connect the 5V strips to the relay, so I finished that and I think that it should be all from KiCad.

image

mavory mavory added to the journal ago

3D Case Remake

Ahhh... Unfortunately I modeled the top part badly. So it took away my precious time to redo it again. All the holes are too small, I thought the values ​​would be good, but I was wrong. I also made a low slider for the touch sensor, so I redid all of that.
20260105_180834

Here's a look at the new top part:

image

mavory mavory added to the journal ago

Finishing the 3D models!!

I think this is done. Hopefully everything will fit... I measured everything and made holes for everything.
There is a hole for the ESP32 power supply at the back and another for the LED strips.
The strips will be led away on the side.
At the top in the middle there is a hole for the laser and above that there is a hole exactly for the ring, which will be placed there later. On the right I made a holder for the touch sensor, which probably took me the most time! Then I added a hole for the LED and connected everything together. I rendered everything and it was done.

Here is the top view:

image

Here is the another view:

image

mavory mavory added to the journal ago

Error solved

I tried for about an hour, but unfortunately I couldn't figure out how to fix this error, so I removed it all, unfortunately. I focused on the code with the preset profiles and modified them.
For now, I have the code ready and now I'm going to start making the upper part of the case. Here is the description of the profiles:

  • Mode 1 (FOREST): Constant green ring light with strip.
  • Mode 2 (CYBER): Constant magenta ring light with laser.
  • Mode 3 (NUCLEAR): Blinking relay with orange ring and pulsing warning buzzer.
  • Mode 4 (SUNSET): Breathing effect on the ring in sunset colors.
  • Mode 5 (AMBIENT): White ring light and relay for steady "illumination".
  • Mode 6 (FOCUS): Blue pulsing ring effect for concentration with active relay.
  • Mode 7 (DISCO): Strobe for relay and laser with rainbow ring and rhythmic beeps.
  • Mode 8 (STROBE): High speed white strobe and ring with buzzer.
  • Mode 9 (POLICE): Red and blue flashing ring with a siren sound.
  • Mode 10 (EXTREME): Random chaotic flashing with flickering colors and noise.

I like sunset the most and extreme is probably the most chaotic!
image

mavory mavory added to the journal ago

Rewriting broken code

I'm continuing with the website, unfortunately I've been coding for over 2 hours today and I still can't find the problem with the profile editor.
I probably have a long way to go, but so far I've completely redone the profile files, which I think are awesome! The buttons now work on and off. Now I'm going to start 3D printing the case and later I'll make the upper part for the case, which I still have to model.
image

mavory mavory added to the journal ago

Making a case for ESP32!

So today I overcame myself and started making designs for a 3D case, I tried different things, but then I still ended up making a larger case and putting a lid on top, which will hold all the things, there is a hole on the side for the LED strips, because those will have the case itself, which I will create later.
On the back of the case there will be power for the ESP32 and on the top there will be holes for the ring, LED,...
It took me a while today, but I think I did a good job.

Screenshot_20260104_225806_Chrome

mavory mavory added to the journal ago

Another website update

I wasn't happy with my website, so I put everything on the widescreen, but some things aren't working yet, but about 80% of it is. I managed to do a lot of work today and I'll continue tomorrow.

  • I made the system more modern and minimalistic. I added some control buttons
  • I modified the editor for my own profiles, where I made new buttons for presets
  • I also tried to make a scheduler, but unfortunately it doesn't work yet, because it doesn't turn itself off yet. image

mavory mavory added to the journal ago

Continuing coding!!

I told myself that I would also add user profiles so I could create my own, I also implemented flashing into the strips so they would flash and I fixed the laser that was previously on and sometimes off, I also added the ability to turn different things on and off independently.

Snímek obrazovky 2026-01-04 205950

I'm still not satisfied, so I'll continue to code to achieve my best website, which will be good.

mavory mavory added to the journal ago

My first coding

I started coding, I thought it would work, but when I finished the first code, the touch button stopped working.
I made a new code with a new website, but the strips stopped working again, my solution was to connect the GND strip externally and it started working, here you can see the first attempt of the website:

image

mavory mavory added to the journal ago

Connecting jumpers

I managed to connect the jumpers pretty quickly and thus I was able to move on to the code! That will probably be harder, but I'll try it.
The biggest problem for me was probably the ring, because I never connected it, but I managed to do it, so it's good now.20260104_192444

mavory mavory added to the journal ago

Soldering cables

I was thinking about how to connect the strips to the relay and I decided to use only one, because I only have one... I put an external 5V into the COM and connected the power supply to the strips to the other one, so when it connects, the strip will light up.
But I had to solder everything and also connect everything to the jumpers first, so that everything holds well, so I took some electrical tape and wrapped it around it, because I know from before that it falls a lot, so that I could avoid that now.

Jumpers:

20260104_185737
When I had it, as I mentioned, I started soldering, first I tinned each wire and later started soldering it together. I also added a jumper to GND to connect it to the ESP32. Later I wrapped everything with tape again and went to connect it, but I still didn't know how to connect it to the breadboard.

Soldering:

20260104_184013

mavory mavory added to the journal ago

The beginning of an idea!

After my last project I decided to make a new one - a home light show. I was thinking about what I could do with the things I have at home and how:

  • The website would control everything and I could also set a scheduler, when and for how long to turn the whole system on/off.
  • 2x LED strips that would be connected via a relay and directly to the socket
  • ​​1x neopixel ring that would give that effect to it!
  • 1x RGB LED that would signal the modes
  • 1x buzzer so I could have a response
  • 1x laser to add even more atmosphere
  • 1x touch sensor that would allow everything to be controlled offline

I would like to make the website minimalistic and black and white, everything would run on the ESP32 IP address!
20260104_175004

mavory mavory started ESP32 home light show ago

1/4/2026 5 PM - The beginning of an idea!

After my last project I decided to make a new one - a home light show. I was thinking about what I could do with the things I have at home and how:

  • The website would control everything and I could also set a scheduler, when and for how long to turn the whole system on/off.
  • 2x LED strips that would be connected via a relay and directly to the socket
  • ​​1x neopixel ring that would give that effect to it!
  • 1x RGB LED that would signal the modes
  • 1x buzzer so I could have a response
  • 1x laser to add even more atmosphere
  • 1x touch sensor that would allow everything to be controlled offline

I would like to make the website minimalistic and black and white, everything would run on the ESP32 IP address!
20260104_175004

1/4/2026 7:01 PM - Soldering cables

I was thinking about how to connect the strips to the relay and I decided to use only one, because I only have one... I put an external 5V into the COM and connected the power supply to the strips to the other one, so when it connects, the strip will light up.
But I had to solder everything and also connect everything to the jumpers first, so that everything holds well, so I took some electrical tape and wrapped it around it, because I know from before that it falls a lot, so that I could avoid that now.

Jumpers:

20260104_185737
When I had it, as I mentioned, I started soldering, first I tinned each wire and later started soldering it together. I also added a jumper to GND to connect it to the ESP32. Later I wrapped everything with tape again and went to connect it, but I still didn't know how to connect it to the breadboard.

Soldering:

20260104_184013

1/4/2026 7:33 PM - Connecting jumpers

I managed to connect the jumpers pretty quickly and thus I was able to move on to the code! That will probably be harder, but I'll try it.
The biggest problem for me was probably the ring, because I never connected it, but I managed to do it, so it's good now.20260104_192444

1/4/2026 7:47 PM - My first coding

I started coding, I thought it would work, but when I finished the first code, the touch button stopped working.
I made a new code with a new website, but the strips stopped working again, my solution was to connect the GND strip externally and it started working, here you can see the first attempt of the website:

image

1/4/2026 9:01 PM - Continuing coding!!

I told myself that I would also add user profiles so I could create my own, I also implemented flashing into the strips so they would flash and I fixed the laser that was previously on and sometimes off, I also added the ability to turn different things on and off independently.

Snímek obrazovky 2026-01-04 205950

I'm still not satisfied, so I'll continue to code to achieve my best website, which will be good.

1/4/2026 9:57 PM - Another website update

I wasn't happy with my website, so I put everything on the widescreen, but some things aren't working yet, but about 80% of it is. I managed to do a lot of work today and I'll continue tomorrow.

  • I made the system more modern and minimalistic. I added some control buttons
  • I modified the editor for my own profiles, where I made new buttons for presets
  • I also tried to make a scheduler, but unfortunately it doesn't work yet, because it doesn't turn itself off yet. image

1/4/2026 10 PM - Making a case for ESP32!

So today I overcame myself and started making designs for a 3D case, I tried different things, but then I still ended up making a larger case and putting a lid on top, which will hold all the things, there is a hole on the side for the LED strips, because those will have the case itself, which I will create later.
On the back of the case there will be power for the ESP32 and on the top there will be holes for the ring, LED,...
It took me a while today, but I think I did a good job.

Screenshot_20260104_225806_Chrome

1/5/2026 4:04 PM - Rewriting broken code

I'm continuing with the website, unfortunately I've been coding for over 2 hours today and I still can't find the problem with the profile editor.
I probably have a long way to go, but so far I've completely redone the profile files, which I think are awesome! The buttons now work on and off. Now I'm going to start 3D printing the case and later I'll make the upper part for the case, which I still have to model.
image

1/5/2026 4:35 PM - Error solved

I tried for about an hour, but unfortunately I couldn't figure out how to fix this error, so I removed it all, unfortunately. I focused on the code with the preset profiles and modified them.
For now, I have the code ready and now I'm going to start making the upper part of the case. Here is the description of the profiles:

  • Mode 1 (FOREST): Constant green ring light with strip.
  • Mode 2 (CYBER): Constant magenta ring light with laser.
  • Mode 3 (NUCLEAR): Blinking relay with orange ring and pulsing warning buzzer.
  • Mode 4 (SUNSET): Breathing effect on the ring in sunset colors.
  • Mode 5 (AMBIENT): White ring light and relay for steady "illumination".
  • Mode 6 (FOCUS): Blue pulsing ring effect for concentration with active relay.
  • Mode 7 (DISCO): Strobe for relay and laser with rainbow ring and rhythmic beeps.
  • Mode 8 (STROBE): High speed white strobe and ring with buzzer.
  • Mode 9 (POLICE): Red and blue flashing ring with a siren sound.
  • Mode 10 (EXTREME): Random chaotic flashing with flickering colors and noise.

I like sunset the most and extreme is probably the most chaotic!
image

1/5/2026 5 PM - Finishing the 3D models!!

I think this is done. Hopefully everything will fit... I measured everything and made holes for everything.
There is a hole for the ESP32 power supply at the back and another for the LED strips.
The strips will be led away on the side.
At the top in the middle there is a hole for the laser and above that there is a hole exactly for the ring, which will be placed there later. On the right I made a holder for the touch sensor, which probably took me the most time! Then I added a hole for the LED and connected everything together. I rendered everything and it was done.

Here is the top view:

image

Here is the another view:

image

1/5/2026 6 PM - 3D Case Remake

Ahhh... Unfortunately I modeled the top part badly. So it took away my precious time to redo it again. All the holes are too small, I thought the values ​​would be good, but I was wrong. I also made a low slider for the touch sensor, so I redid all of that.
20260105_180834

Here's a look at the new top part:

image

1/5/2026 7:18 PM - Circuit Diagram is ready

I tried to create a circuit diagram in KiCad, I used ESP32 again, buzzer, RGB LED,... I connected everything, but before that I was wondering if there were different models for some components in my project - I couldn't find anything after research, so I used generic connectors.
After connecting and exporting, I remembered that I could add how I would connect the 5V strips to the relay, so I finished that and I think that it should be all from KiCad.

image

1/5/2026 7:58 PM - Finishing the case

I decided to make the case first and then finish GitHub. I started by putting the breadboard with the components in the case and as always (it's a ritual) the cables fall out, so I don't know where to connect them...
But when I solved this, another problem came up, I couldn't get to the relay very well, but I somehow managed to connect the LED strips. The holes for the things were already big enough and everything went smoothly. I later glued the ring so that it wouldn't move.
I also had to remove the supports from the 3D print, then I closed and glued everything together!
20260105_195151

1/5/2026 8:07 PM - Finishing the smaller details

I still had to finish some minor details. I had to peel off the ring and stick it back on and tape it from the bottom. I also wrapped the cable with white tape and closed everything again later.

IMG_20260105_200620

1/5/2026 8:51 PM - GitHub editing

When I had the case finished, I spent some time working on GitHub. I had to export all the stuff and later upload it to the aforementioned GitHub:

  • BOM
  • Journal.md
  • Readme.md
  • CAD (3D models)
  • Scripts (.ino script)
  • Circuit diagram (Info.md ​​and CD)
  • Photos

I still have to edit README.md and JOURNAL.md and then I think I'll finish the last few things and we'll be done!

image

1/5/2026 9 PM - The project is already completed!!!

ESP32 home light show

image

Why did I do this?

I wanted to create something with lighting effects and a few days ago I got this ring, so I wanted to try it out and also see how the relay works with LED strips.

Features

  • Web interface
  • You can switch modes
  • It has a buzzer and an RGB LED for notification
  • You can turn off various lights, buzzer, etc.

Scripts

The script has exactly 199 lines, so it fit under 200!! It was very difficult, but I put everything in just one script, so you can just copy it and paste it into the ESP32 right away.

How it works?

You can change profiles and turn off various lights via the web. The web runs on the ESP32 IP address. There is a small RGB LED and a buzzer for signaling. Everything can be turned on manually using the touch sensor hidden in the case.

Here is a youtube video where you can see how it works: Link

Wiring Diagram

image

Components:

  • ESP32 (Powered via USB or 5V Vin)
  • Touch Sensor (TTP223):
    • SIG: GPIO 4
    • VCC: 3.3V / 5V
    • GND: GND

Outputs:

  • Relay (Strip Control): GPIO 23
  • Laser Diode: GPIO 22
  • Passive Buzzer: GPIO 17

Lights:

  • NeoPixel Ring (24 LEDs):
    • Data: GPIO 21
    • VCC: 5V
    • GND: GND
  • RGB LED:
    • Red Pin: GPIO 19
    • Green Pin: GPIO 18
    • Blue Pin: GPIO 5
    • GND: GND
  • LED strips:
    • 5V: COM (Relay) ---> 5V external (NO on relay)
    • GND: GND

Libraries:

- Arduino.h
- WiFi.h
- ESPAsyncWebServer.h 
- AsyncTCP.h
- Adafruit_NeoPixel.h
- LittleFS.h