Introduction: MQTT Mood Lights With ESP32

I had been tempted for quite an some prison term to hop onto the LED bandwagon, so I ran away and picked up an LED strip to toy with. I ended dormie making these humour lights. They can be price-controlled with MQTT, making it mathematical to add entirely sorts of smarts.

This is a good weekend project if you have nothing other expiration on, and want to get your hands dirty making something.

Note that the determination of this Instructable is to text file my project and share ideas with others, and not needs to bring home the bacon solid instructions and methods. With that said, read on!

Supplies

Electronics:

  • 1x ESP32 development circuit card
  • 1x 0.96" I2C OLED display
  • 1x Buzzer
  • 1x Barrelful jack
  • 1x 12V power supply (ongoing depends on the length of your disrobe)
  • 1x LM2596 tear converter
  • 1x Common-anode RGB Light-emitting diode bare
  • 3x IRFZ44N MOSFETs
  • 3x BC547 transistors
  • 3x 10kΩ resistors
  • 4x 100Ω resistors
  • 1x prototyping dining table
  • 4x screw terminals
  • Antheral and female headers
  • Conducting wire (I used single-fibril)

Other hardware and tools:

  • Your wanted material for an enclosure (I victimized MDF)
  • Flat, semiconductive corporal for touch contacts (I old a filamentous aluminum sheet)
  • Saws, drills, sandpaper, etc.
  • Bonding iron and friends
  • Hot mucilage

I would strongly recommend non going for an ESP32 with a built-in Organic light-emitting diode display, because it becomes very hard to cook a well-aligned cutout in your enclosing for it.

Dance step 1: Electronics

The schematic attached shows all the required connections, except for the skin senses inputs. There is also a relatively undefined breadboard diagram showing how to conducting wire up one MOSFET, in case the formal is inadequate.

Power

An LM2596 buck converter steps down the 12V from the power supply to 5V for the ESP's VIN. Make a point that your power supply is properly rated for the distance of LED strip you habit. My 2 meter long strip draws a little to a higher degree 2 amps.

Pins and peripherals

Foursome touch pins are used for, well, touch inputs. My ESP32 board came with an OLED display attached, whose I2C pins were hardwired in. This uses quartet PWM pins, one for each color component (carmine, green, and blue), and one for the bell.

MOSFET muddles

MOSFETs were chosen to handle the fast switching multiplication for PWM and relatively high-altitude current. There is one MOSFET for each gloss component. I used split NPN BJTs (BC547) along with a root-up resistance to drive the IRFZ44Ns, as the 3.3V digital signals from the ESP32 may not have been enough for the MOSFETs to conduct as much current as needed. System of logic-level MOSFETs like the IRLZ44N exist, but I found out near them only subsequently I had finished bonding everything upwardly. Either fashio, my cartoon strip that draws ~2A whole kit and caboodle fine.

Soldering

Turnkey terminals are used to connect to the LED strip, and feminine headers to plug the ESP32 into, in incase I wanted to supercede either of them without desoldering things. Soldering took about two hours, and was very straightforward. I also gave my LED strip some yearner wires.

Why I chose the ESP32

It has WiFi and Bluetooth along board (though I've utilized only WiF right instantly), and I had one mendacious around that I was itchiness to use. The touch inputs likewise came in handy for the interface on the accountant, arsenic they need only one wire exit to a contact. If you wanted to, though, the ESP32 could easily be replaced by a microcontroller like the ESP8266.

Step 2: Code

I used the Arduino toolset (really the Arduino extension for VS Code :) ) to program this. There are great tutorials like this one on how to get cracking with the ESP32 and Arduino IDE, if you seaport't already.

There are four distinct modes to handle: static color, random color, Red Alert, and Blue Lively. In that location are four touch inputs for ahead, down, next, and Red Alert. Touch uses interrupts.

I added MQTT to the whole works as substantially, so that I could control it over WiFi. I'm trying to vex a feel for the web-app big three (HTML, CSS, JS), so I designed a Star Trek-themed (but preferably ugly) webpage that communicates with an MQTT broker to control the mood lights.

Every my code fundament be establish bespoken, on with a spry reference sheet, whose filename you may lack to exchange to make information technology a markdown. Move all the files to a pamphlet with the name "ESP32MQTTMoodLighting" before opening with Arduino.

Note that my code works, just is probably not the greatest. But that shouldn't count, because you're exit to write your own anyway, right? :)

Step 3: Enclosure and Assembly

During the lockdown, the only material I could get my hands on was a tack of 5mm MDF. I made the large cuts with a regular metal saw, and gave everything a good sand. A double cake of enamel paint finished the main prep.

Rearmost Panel

I wanted my package to follow easy openable, so I mounted entirely my electronics to the rearmost control panel with four M2 PCB standoffs. My perfboard already had M2 holes trained into it. My standoffs had slight threaded stubs at the bottom, which I intended to be fixed into the MDF. But, I didn't have an M2 drilling bit. So, marking the position of each hole, I misused a small flat head screwdriver to manually gouge out the holes. Unrefined only effective. The diameters of the holes were just a bit smaller than those of the threaded portion of the tie. I twined the standoffs in and out of the holes few multiplication, which widened and nearly threaded them.

Eventually, the standoffs sat securely in their holes and held the perfboard in situ. Because my MDF was very thick, nothing showed through to the other side.

I drilled the hole for the power jack, and made a expansion slot for the Light-emitting diode strip wires to move through, right below where my screw terminals were situated.

Front Panel

OLED Display Cutout

I started my cutout for the Organic light-emitting diode with a few crank holes, and filed them out to size. It ended up being identical wonky and misaligned. Not double-checking measurements English hawthorn have played a part in that, but save yourself whatsoever trouble by not using a development panel with a built-in Organic light-emitting diode. It's so much easier to just mount the exhibit to your hole.

Connector

I fashioned a connector out of much male and distaff headers. One end attached to the wires connected to the tactual sensation contacts connected the advanced panel, while the early side had wires working to the ESP's touch inputs. This was so that the anterior panel could be completely removed from the back if necessary, without disturbing solder joints. If you backing anything other to your front panel, you may want to make a connector for that as swell.

Touch Pads

The touch contacts were made of whatsoever aluminium sheet. I incised it to beat the four pads needful, and verified that there were zero notched edges. I then drilled holes into the front control board, just big enough for a wire. For letting solder stick to the pads, I scuffed up a small percentage of one side with sand to remove the oxidized layer, and then gave it a quick wipe to remove any particles. Running each cable through its corresponding hole in the front impanel, I soldered each one to its pad. Make sure your solder doesn't create too whopping a protrusion on the rearward, as this won't allow the launch pad to sit flush with the dialog box.

Finally, impart some stifling mucilage to the back of each pad and push them onto the front panel. Adding too much will make the pads ride raised from the panel. Straighten any excess glue that may have been pushed out from under the pads.

The Roost

The pull panels are quite straightforward. A quick-access hole to the screw terminals was more than trouble than it was meriting. I hot pasted the side panels to the front instrument panel.

Velcro on two edges holds the front portion to the rearward panel. The gaps take into account for the bell's sound to escape. If you do a better job than Maine, you shouldn't land up with something that looks like a 5-year-antique's preschool craft :)

My LED plunder had a sticky back (I'm sure yours does too). I mounted mine such that the light diffuses unsatisfactory the wall.

Step 4: Plug It In!

You should in real time have a complete MQTT-controlled modality light. I have mounted mine to my desk, where it adds a splash of color to sometimes monotonous bring up. Nox is the apotheosis time to impress people with IT.

I hope you enjoyed reading this Instructable, and got a few ideas for your own projects. As I mentioned before, I am a beginner, and this is my first Instructable. I would appreciate any tips and comments.

Be the First to Share

Recommendations

  • Anything Goes Contest 2022

    Anything Goes Contest 2022