Điều khiển LED bằng WebServer sử dụng NodeMCU ESP8266

Điều khiển LED bằng WebServer sử dụng NodeMCU ESP8266

Trong nội dung bài viết hôm nay mình sẽ chia sẽ cho các bạn các tạo một bảng điều khiển trên Webpage sử dụng NodeMCU ESP8266.

Chúng ta bắt đầu nhé…

Nạp code Esp8266 và kiểm tra kết nối Wifi

Bước đầu tiên chúng ta cần nạp code vào NodeMCU ESP8266 và kiểm tra xem đã kết nối được với Wifi chưa.

Sau khi đã kết nối thành công sẽ xuất hiện địa chỉ IP của Wifi, các bạn copy địa chỉ IP này paste trên một trình duyệt bất kỳ để có thể điều khiển Bật/Tắt Led nhé.

web server nodemcu esp8266

Đây là phần giao diện trên Web.

web server nodemcu esp8266

Dữ liệu trả về Serial khi chúng ta bật tắt trên Website.

Sơ đồ nguyên lý

Blink an LED with NodeMCU - esp8266 learning

Linh kiện cần thiết cho dự án

Tên linh kiện Số lượng Shopee
NodeMCU ESP8266 1 Mua ngay
Dây cắm (Đực – Đực) 1 Mua ngay
Breadboard 1 Mua ngay
LED 1 Mua ngay

Code

#include <ESP8266WiFi.h>

const char* ssid = "Phamson";
const char* password = "phamtheson";

int LED = 16; // GPIO16 (D0)
WiFiServer server(80);

void setup(){
  Serial.begin(115200);
  pinMode(LED, OUTPUT);
  digitalWrite(LED, HIGH);
  Serial.print("Connecting to the Newtork");
  WiFi.begin(ssid, password);
  while (WiFi.status() != WL_CONNECTED)
  {
    delay(500);
    Serial.print(".");
  }
  Serial.println("WiFi connected"); 
  server.begin();
  Serial.println("Server started");
  Serial.print("IP Address of network: "); // will IP address on Serial Monitor
  Serial.println(WiFi.localIP());
  Serial.print("Copy and paste the following URL: https://");
  Serial.print(WiFi.localIP());
  Serial.println("/");
}

void loop(){
  WiFiClient client = server.available();
  if (!client){
    return;}
    
  Serial.println("Waiting for new client");
  while(!client.available())
  {
    delay(1);
  }
  String request = client.readStringUntil('\r');
  Serial.println(request);
  client.flush();
  
  int value = HIGH;
  if(request.indexOf("/LED=ON") != -1){
    
    digitalWrite(LED, LOW); // Turn LED ON
    value = LOW;
  }

  if(request.indexOf("/LED=OFF") != -1){

    digitalWrite(LED, HIGH); // Turn LED OFF
    value = HIGH;
  } 
  
//*------------------HTML Page Code---------------------*//

  client.println("HTTP/1.1 200 OK"); //
  client.println("Content-Type: text/html");
  client.println("");
  client.println("<!DOCTYPE HTML>");
  client.println("<html>");
  client.print(" CONTROL LED: ");
  if(value == HIGH){
    client.print("OFF");
  }
  else
  {
    client.print("ON");
  }
  client.println("<br><br>");
  client.println("<a href=\"/LED=ON\"\"><button>ON</button></a>");
  client.println("<a href=\"/LED=OFF\"\"><button>OFF</button></a><br />");
  client.println("</html>");
  
  delay(1);
  Serial.println("Client disonnected");
  Serial.println("");
}

Lời kết

Tham gia cộng đồng Arduino KIT Để nhận được nhiều kiến thức bổ ích, các bạn Đăng ký để nhận thông báo khi có bài viết mới nhé. Tham gia Cộng đồng Arduino KIT để cùng nhau thảo luận và chia sẽ kiến thức về lập trình Arduino. Nếu các bạn thấy bài viết bổ ích nhớ LikeShare cho mọi người cùng học nhé.

Bài viết liên quan

Subscribe
Notify of
guest
1 Comment
Oldest
Newest Most Voted
Inline Feedbacks
View all comments