A simple ESP32-C3 project to control 02 LED strips via a web interface and a physical push button.
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):
GEThttp://192.168.1.190/statusPOSThttp://192.168.1.190/cyclePOSThttp://192.168.1.190/toggle-1POSThttp://192.168.1.190/toggle-2POSThttp://192.168.1.190/turn-on-1POSThttp://192.168.1.190/turn-on-2POSThttp://192.168.1.190/turn-off-1POSThttp://192.168.1.190/turn-off-2
NOTE: Change http://192.168.1.190 to your actual device IP. Assign a Static IP to your device in your home router.
- 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.
- IRF9540N is optional but protects against reverse-polarity
- 01 ESP32-C3 Mini board
- 01 Push Button
- 02 Green LED
- 03 220Ω Resistors
- 02 10KΩ Resistor
- 02 N-channel MOSFET able to work with 3.3v logic (e.g.: IRFZ44N)
- 01 P-channel power MOSFET IRF9540N
- 02 LED Strip (12v)
- 01 Power Supply (12v)
- 01 Mini 360 DC-DC Bulk Converter
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 <LedRelay.h>
#include <PushButton.h>
#include "types.h"
#define RELAY_PIN_1 1
#define RELAY_PIN_2 0
#define LED_PIN_1 3
#define LED_PIN_2 4
#define BUTTON_PIN 10
#define WIFI_SSID "MY_SSID"
#define WIFI_PWD "MY_PASSWORD"