Điều khiển thiết bị điện bằng webserver

Bởi nguyenthanhphi (08/05/2019) 0 Bình luận

Chuẩn bị phần cứng:

  • 1 x ESP8266 V12 hoặc V12E đã tích hợp sẵn mạch nạp ( Trong ví bài viết này tôi sử dụng ESP8266-V12E)
  • 1 breadboard.
  • 4 Led.
  • 4 điện trở 220 Ohm.

Phần mềm :

  • Phần mềm Arduino IDE.

Lắp mạch:

Lập trình:

#include <ESP8266WiFi.h>

 const char* ssid = "Truong Phi";

const char* password = "01695304802";

WiFiServer server(80);

 void setup() {

  Serial.begin(115200);

  delay(10);

  pinMode(5, OUTPUT);

  pinMode(4, OUTPUT);

  pinMode(0, OUTPUT);

  pinMode(16, OUTPUT);

  digitalWrite(5, LOW);

  digitalWrite(4, LOW);

  digitalWrite(0, LOW);

  digitalWrite(16, LOW);

   // Connect to WiFi network

  Serial.println();

  Serial.println();

  Serial.print("Connecting to ");

  Serial.println(ssid);

 

  WiFi.begin(ssid, password);

   while (WiFi.status() != WL_CONNECTED) {

    delay(500);

    Serial.print(".");

  }

  Serial.println("");

  Serial.println("WiFi connected");

 

  // Start the server

  server.begin();

  Serial.println("Server started");

 

  // Print the IP address

  Serial.print("Use this URL to connect: ");

  Serial.print("http://");

  Serial.print(WiFi.localIP());

  Serial.println("/");

 }

 void loop() {

  // Check if a client has connected

  WiFiClient client = server.available();

  if (!client) {

    return;

  }

 

  // Wait until the client sends some data

  Serial.println("new client");

  while(!client.available()){

    delay(1);

  }

   // Read the first line of the request

  String request = client.readStringUntil('\r');

  Serial.println(request);

  client.flush();

 

  // Match the request

    if (request.indexOf("/light1on") > 0)  {

    digitalWrite(5, HIGH);

  

  }

  if (request.indexOf("/light1off") >0)  {

    digitalWrite(5, LOW);

  

  }

   if (request.indexOf("/light2on") > 0)  {

    digitalWrite(4, HIGH);

     }

  if (request.indexOf("/light2off") >0)  {

    digitalWrite(4, LOW);

  

  }

    if (request.indexOf("/light3on") >0)  {

    digitalWrite(0, HIGH);

  

  }

  if (request.indexOf("/light3off") > 0)  {

    digitalWrite(0, LOW);

     }

   if (request.indexOf("/light4on") > 0)  {

    digitalWrite(16, HIGH);

  

  }

  if (request.indexOf("/light4off") > 0)  {

    digitalWrite(16, LOW);

  

  }

// Set ledPin according to the request

//digitalWrite(ledPin, value);

 

  // Return the response

  client.println("HTTP/1.1 200 OK");

  client.println("Content-Type: text/html");

  client.println(""); //  do not forget this one

  client.println("<!DOCTYPE HTML>");

  client.println("<html>");

  client.println("<head>");

  client.println("<meta name='apple-mobile-web-app-capable' content='yes' />");

  client.println("<meta name='apple-mobile-web-app-status-bar-style' content='black-translucent' />");

 client.println("</head>");

  client.println("<body bgcolor = \"#f7e6ec\">");

  client.println("<hr/><hr>");

  client.println("<h4><center> ĐIỀU KHIỂN THIẾT BỊ ĐIỆN BẰNG ESP8266 12E </center></h4>");

  client.println("<hr/><hr>");

  client.println("<br><br>");

  client.println("<br><br>");

  client.println("<center>");

  client.println("Device 1");

  client.println("<a href=\"/light1on\"\"><button>Turn On </button></a>");

  client.println("<a href=\"/light1off\"\"><button>Turn Off </button></a><br />"); 

  client.println("</center>");  

  client.println("<br><br>");

   client.println("<center>");

   client.println("Device 2");

  client.println("<a href=\"/light2on\"\"><button>Turn On </button></a>");

  client.println("<a href=\"/light2off\"\"><button>Turn Off </button></a><br />"); 

client.println("</center>");

  client.println("<br><br>");

    client.println("<center>");

   client.println("Device 3");

  client.println("<a href=\"/light3on\"\"><button>Turn On </button></a>");

  client.println("<a href=\"/light3off\"\"><button>Turn Off </button></a><br />"); 

client.println("</center>");

  client.println("<br><br>");

   client.println("<center>");

   client.println("Device 4");

  client.println("<a href=\"/light4on\"\"><button>Turn On </button></a>");

  client.println("<a href=\"/light4off\"\"><button>Turn Off </button></a><br />"); 

client.println("</center>");

  client.println("<br><br>");

  client.println("<center>");

  client.println("<table border=\"5\">");

 client.println("<tr>");

  if (digitalRead(5))

         {

           client.print("<td>Light 1 is ON</td>");

       

         }

          else

          {

            client.print("<td>Light 1 is OFF</td>");

              }

    

        client.println("<br />");

            

         if (digitalRead(4))

          {

           client.print("<td>Light 2 is ON</td>");

         }

          else

          {

            client.print("<td>Light 2 is OFF</td>");

          }

          client.println("</tr>");

          client.println("<tr>");

          if (digitalRead(0))

          {

           client.print("<td>Light 3 is ON</td>");

          }

          else

          {

            client.print("<td>Light 3 is OFF</td>");

          }

          if (digitalRead(16))

          {

           client.print("<td>Light 4 is ON</td>");

          }

          else

          {

            client.print("<td>Light 4 is OFF</td>");

          }

          client.println("</tr>");

          client.println("</table>");

          client.println("</center>");

  client.println("</html>");

  delay(1);

  Serial.println("Client disonnected");

  Serial.println("");

 }

Sau khi upload chương trình thành công ta mở cổng serial monitor lên:

Từ hình trên ta được địa chỉ ip để truy cập webserver để điều khiển thiết bị điện là : 192.168.100.11  địa chỉ sẽ khác đi tùy vào router wifi nữa nhé.

Hình ảnh thực tế:

Ta nhập địa chỉ ip vào trình duyệt và cho ra giao diện giống hình trên.

Hình điều khiển thực tế

 

Đóng góp ý kiến