ESP32 & ESP8266 Connectivity · Intermediate · Web control
ESP32 PWM Dimmer Page
A web slider driving one PWM output, with the duty cycle and the measured supply shown back.
Firmware status: Generated from this project's own pin map and compiled with arduino-cli for esp32:esp32:esp32 before publication; bench validation on your hardware is still required.
Board: ESP32 DevKit (ESP32-WROOM-32, 30 or 38 pin) · ESP32 dual core @ 240 MHz · 3.3 V logic · build for esp32:esp32:esp32.
What you will build
An ESP32 that takes a duty value from a web request and drives a PWM output, with the current duty reported back on the page.
Components
- ESP32 board
- LED strip or a single LED with a 220 Ω resistor
- Logic-level MOSFET (for a strip) with a 100 Ω gate resistor
- 12 V supply if driving a strip
- USB cable
Pin map for this build
| Sketch constant | Pin | What it is |
|---|---|---|
PIN_OUT_1 | 18 | Switched output — relay / MOSFET channel, 5 V coil |
PIN_IN_1 | 34 | Analog input — 3.3 V maximum at the pin |
PIN_IN_2 | 35 | Analog input — 3.3 V maximum at the pin |
Tools
- USB programming cable
- Multimeter
- Current-limited bench supply (for anything that switches a load)
- Small screwdriver and wire cutters
Build sequence
- Wire the LED directly for the first test, GPIO through a 220 Ω resistor.
- Flash and open the page, then move the slider and watch the brightness change.
- Call /level directly with a value to confirm the endpoint your own code will use.
- If you move to a strip, insert the MOSFET and gate resistor, and power the strip from its own supply.
Test and expected result
Brightness follows the duty value smoothly, the reported duty matches what was sent, and the board does not reset when the load switches.
Acceptance checks
duty endpoint works, brightness tracks, no brown-out under load
Safety and limits
A strip must not be powered from the board's 3.3 V rail. Gate the MOSFET from the GPIO and take the strip's current from a supply sized for it.
Hardware scope
One PWM channel with a web-set duty, HTTP control plus telemetry.
Connection diagram
Download the connection diagram (SVG)
Download the Arduino sketch (E05_esp32_pwm_dimmer_page.ino)
Guide source: the sketch on this page was generated from the pin map above and compiled for esp32:esp32:esp32 before publication.
Related projects
- ESP32 Captive Portal Wi-Fi Manager — Boot the ESP32 with no credentials and configure its network from a phone, with the portal saved to flash.
- ESP8266 Config Portal — The same idea on the cheapest board that can do it: an ESP8266 that configures itself from a browser.
- ESP8266 Sensor Portal Logger — A battery-minded sensor node you configure in the field, with the reading shown on its own setup page.