A simple ESP32-C3 project to control a LED strip via a web interface and a physical push button. The web page reflects the current LED state in real time.
Additionally, the LED can be controlled via a simple API, making it easy to integrate with home automation (e.g.: set up a cron job to turn it on and off automatically):
POSThttp://192.168.1.190/offPOSThttp://192.168.1.190/on
NOTE: Change http://192.168.1.190 to your actual device IP. Assign a Static IP to your device in your home router.
The connectors are: 12v Power Source, Push Button, 12v LED Strip.
- Gate resistor (220Ω) is optional but recommended to prevent spikes.
- Pull-down resistor (10kΩ) between Gate and GND is optional but prevents accidental turn-on during boot.
- 01 ESP32-C3 Mini board
- 01 Push Button
- 01 Green LED
- 02 220Ω Resistors
- 01 10KΩ Resistor
- 01 N-channel MOSFET able to work with 3.3v logic (e.g.: IRFZ44N)
- 01 LED Strip (5v or 12v)
- 01 Power Supply (5v or 12v)
- 01 Mini 360 DC-DC Bulk Converter (in case the Power Supply is 12v)
Platform IO is a plugin for Microsoft Virtual Studio Code. It is a more robust IDE compared to official Arduino IDE. It also allows us to easily create our own private libraries and use a more object oriented code.
The PINs can be customized in the main.cpp
#include <Arduino.h>
#include <NoDelay.h>
#include <HttpServer.h>
#include <WifiHandler.h>
#include <PushButton.h>
#include "types.h"
#define RELAY_PIN 0
#define BUTTON_PIN 1
#define LED_PIN 2
#define WIFI_SSID "MY_SSID"
#define WIFI_PWD "MY_PASSWORD"
