پروژه و ساخت

کنترل رله از طریق وب سرور با استفاده از برد ESP32

کنترل رله از طریق وب سرور با استفاده از برد ESP32

مقدمه

برای کنترل رله از طریق وب سرور با استفاده از برد 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>");
}

ویدیو پروژه

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *