مقدمه
برای کنترل رله از طریق وب سرور با استفاده از برد ESP32، میتوانید مراحل زیر را دنبال کنید:
تجهیزات مورد نیاز
- برد ESP32: این میکروکنترلر با قابلیت Wi-Fi و Bluetooth برای پروژههای اینترنت اشیا مناسب است.
- ماژول رله: برای کنترل وسایل برقی.
- کابلهای اتصال: برای اتصالات بین اجزا.
مراحل راهاندازی
1. اتصالات سختافزاری
- اتصال رله: پایههای ماژول رله را به GPIOهای برد ESP32 متصل کنید. به عنوان مثال، میتوانید از GPIO26 برای کنترل رله استفاده کنید.
- اتصال LED (اختیاری): اگر میخواهید وضعیت رله را نشان دهید، LED را به یکی از GPIOها متصل کنید.
2. برنامهنویسی
- نصب کتابخانهها: ابتدا کتابخانههای لازم مانند
WiFi.h
- نوشتن کد: کدی بنویسید که یک وب سرور ایجاد کند و به درخواستهای HTTP پاسخ دهد. در این کد، میتوانید وضعیت رلهها را بر اساس ورودیهای دریافتی از صفحه وب تغییر دهید.
کد آردوینو پروژه
#include <WiFi.h>
// تعریف پینهای رله
const int relays[] = {14, 27, 26, 25, 33, 32};
const int numRelays = sizeof(relays) / sizeof(relays[0]);
// اطلاعات WiFi
const char *ssid = "123";
const char *password = "123456789";
WiFiServer server(80);
void setup() {
Serial.begin(115200);
// تنظیم پینهای رله به خروجی
for (int i = 0; i < numRelays; i++) {
pinMode(relays[i], OUTPUT);
digitalWrite(relays[i], LOW);
}
// اتصال به WiFi
Serial.print("Connecting to ");
Serial.println(ssid);
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
Serial.print(".");
delay(500);
}
Serial.println("\nWiFi Connected!");
Serial.print("IP Address: ");
Serial.println(WiFi.localIP());
server.begin();
}
void loop() {
WiFiClient client = server.available();
if (client) {
Serial.println("New Client Connected");
String request = "";
while (client.connected()) {
if (client.available()) {
char c = client.read();
request += c;
if (c == '\n' && request.length() == 1) {
sendResponse(client);
break;
}
}
}
handleRequest(request);
client.stop();
Serial.println("Client Disconnected");
}
}
void handleRequest(String request) {
for (int i = 0; i < numRelays; i++) {
if (request.indexOf("GET /relay" + String(i + 1) + "on") >= 0) {
digitalWrite(relays[i], HIGH);
} else if (request.indexOf("GET /relay" + String(i + 1) + "off") >= 0) {
digitalWrite(relays[i], LOW);
}
}
}
void sendResponse(WiFiClient client) {
client.println("HTTP/1.1 200 OK");
client.println("Content-type:text/html");
client.println();
client.println("<html><head><title>Smart Relay Control</title>");
client.println("<style>");
client.println("body { font-family: Arial, sans-serif; text-align: center; background-color: #f4f4f4; }");
client.println("h1 { color: #333; }");
client.println(".button { display: inline-block; padding: 10px 20px; margin: 5px; font-size: 18px; text-decoration: none; color: white; border-radius: 5px; }");
client.println(".on { background-color: green; }");
client.println(".off { background-color: red; }");
client.println("</style></head><body>");
client.println("<h1>Relay Control Panel</h1>");
for (int i = 0; i < numRelays; i++) {
client.println("<p><a class='button on' href='/relay" + String(i + 1) + "on'>Relay " + String(i + 1) + " ON</a>");
client.println("<a class='button off' href='/relay" + String(i + 1) + "off'>Relay " + String(i + 1) + " OFF</a></p>");
}
client.println("</body></html>");
}