AC Motor ESP32 Webserver

Controlling an AC motor with an ESP32 web server involves more complexity compared to controlling an LED due to the higher voltage and current requirements of AC motors. Here’s a structured approach to achieve this:

Hardware Requirements:
1. ESP32 Development Board (e.g., ESP32 DevKitC)
2. AC Motor (with appropriate driver circuitry)
3. Relay Module (to switch AC power)
4. Diode (for back EMF protection, optional but recommended)
5. Current Sensor (optional, for feedback on motor status)
6. Power Supply (for ESP32 and motor)
7. Breadboard and jumper wires.

Software Requirements:
Arduino IDE with ESP32 board support installed
ESPAsyncWebServer library (for handling asynchronous web requests)
Arduino IDE Serial Monitor (for debugging)
Circuit Setup:
Relay Setup: Use a relay module suitable for AC motors. Connect one side of the relay coil to a GPIO pin on the ESP32 (via a transistor if needed for higher current handling). The other side of the relay coil connects to ground. Ensure the relay contacts are rated appropriately for the AC motor’s voltage and current.

Motor Connection: Connect the AC motor to the relay contacts. Ensure proper wiring and safety measures (e.g., proper insulation and grounding).

Power Supply: Provide separate power supplies for the ESP32 (typically 3.3V or 5V) and the AC motor (AC mains voltage as required by the motor specifications).

Diode: Optionally, place a diode across the motor terminals to protect against back EMF generated by the motor when it turns off.

Code Implementation:
Below is a basic example to control an AC motor via a web server on the ESP32. This example assumes control of a relay connected to GPIO pin 2, which in turn controls the AC motor:

#include <WiFi.h>
#include <ESPAsyncWebServer.h>

// Replace with your network credentials
const char* ssid = "your_SSID";
const char* password = "your_PASSWORD";

// Create AsyncWebServer object on port 80
AsyncWebServer server(80);

// GPIO pin connected to relay module for motor control
const int relayPin = 26; // GPIO26 (D26)

void setup()
// Serial port for debugging purposes

// Initialize relay pin as an output
pinMode(relayPin, OUTPUT);
digitalWrite(relayPin, LOW); // Initially, turn off motor

// Connect to Wi-Fi
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED)
Serial.println("Connecting to WiFi...");
Serial.println("Connected to WiFi");

// Print ESP32 Local IP Address

// Route for root / web page
server.on("/", HTTP_GET, [](AsyncWebServerRequest *request)
String html = "<h1>ESP32 Web Server - AC Motor Control</h1>";
html += "<p><a href=\"/on\">Turn On Motor</a></p>";
html += "<p><a href=\"/off\">Turn Off Motor</a></p>";
request->send(200, "text/html", html);

// Route to turn the motor ON
server.on("/on", HTTP_GET, [](AsyncWebServerRequest *request)
digitalWrite(relayPin, HIGH); // Turn the relay on, thus turning on the motor
request->send(200, "text/plain", "AC Motor turned on");

// Route to turn the motor OFF
server.on("/off", HTTP_GET, [](AsyncWebServerRequest *request)
digitalWrite(relayPin, LOW); // Turn the relay off, thus turning off the motor
request->send(200, "text/plain", "AC Motor turned off");

// Start server
void loop()
// This is optional

Testing and Operation:
Upload the Code: Connect your ESP32 to the Arduino IDE, upload the code, and open the Serial Monitor to monitor the connection process.

Access the Web Interface: Once connected to Wi-Fi, note down the ESP32’s IP address from the Serial Monitor. Open a web browser on a device connected to the same Wi-Fi network and enter the ESP32’s IP address (e.g., You should see a webpage with options to turn the AC motor on and off.

Safety Considerations: Ensure all wiring is secure and rated appropriately for the AC motor’s voltage and current. Use caution when dealing with AC mains voltage to avoid electrical hazards.

Feedback and Monitoring: Optionally, you can add current sensors or other feedback mechanisms to monitor the motor’s status and provide feedback through the web server interface.

By following these steps, you can create a web-controlled AC motor system using an ESP32, enabling remote operation and monitoring through a web browser interface. Adjustments can be made based on specific motor requirements and additional features desired for your application.


Subramanian MK, currently serving as a workshop instructor at Sakthi Polytechnic College, Erode Tamil Nadu. With a career spanning 25 + years, Subramanian MK has dedicated himself to advancing knowledge in Electronics and Communication Engineering (ECE). His passion for exploring new technologies has led to the development of numerous projects, showcasing expertise in IoT and PCB design.

Articles: 504

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.


Hi, How can I help you?