ESP8266 làm Web server

Trong bài này chúng ta sẽ biết cách thiết lập máy chủ web HTTP trên Node Wifi và cách thực hiện một số truy vấn với phương thức GET bằng trình duyệt web.

Thiết bị cần chuẩn bị

  • 1 x Node WiFi

Chương Trình

Khai báo các thư viện cần thiết:

#include <ESP8266WiFi.h>                // Thư viện dùng để kết nối WiFi của ESP8266
#include <ESP8266WebServer.h>           // Thư viện dùng để chạy web server

Để sử dụng thư viện ESP8266WebServer ta cần khởi tạo một đối tượng tên là server chạy trên port 80 (80 là port mặc định của web server)

ESP8266WebServer server(80);

Đối với phương thức GET, server dựa vào URI của truy vấn để xử lý và trả kết quả. Ví dụ trong trường hợp người dùng chỉ truy vấn trang chủ (URL = “/”) thì hàm handleRoot sẽ được gọi.

server.on("/", handleRoot);
void handleRoot() {
  server.send(200, "text/plain", "Hello world");
}

Cuối cùng chúng ta cần gọi phương thức server.handleClient() trong vòng lặp chính để lắng nghe các truy vấn từ client.

void loop() {
  server.handleClient();
}

Bạn dùng Arduino IDE để nạp chương trình sau:

#include <ESP8266WiFi.h>                // Thư viện dùng để kết nối WiFi của ESP8266
#include "ESP8266WebServer.h"

const char* ssid = "Blocky AP";         // Tên của mạng WiFi mà bạn muốn kết nối đến
const char* password = "password_ap";   // Mật khẩu của mạng WiFi

const int led = 2;

ESP8266WebServer server(80);

void setup() {
  Serial.begin(115200);

  pinMode(led, OUTPUT);
  
  WiFi.begin(ssid, password);           // Kết nối vào mạng WiFi
  Serial.print("Connecting to ");
  Serial.print(ssid);
  // Chờ kết nối WiFi được thiết lập
  while (WiFi.status() != WL_CONNECTED) {
    delay(1000);
    Serial.print(".");
  }

  Serial.println("\n");
  Serial.println("Connection established!");  
  Serial.print("IP address: ");
  Serial.println(WiFi.localIP());       // Gởi địa chỉ IP đến máy tinh

  server.on("/", handleRoot);           // Gọi hàm handleRoot khi nhận được truy vấn GET cho URI = "/"
  server.begin();                       // Khởi tại web server
  Serial.println("Server listening");

}

void loop() {
  server.handleClient();                // Lắng nghe các truy vấn từ người dùng
}

void handleRoot() {
  server.send(200, "text/plain", "Hello world");
}

Sau khi nạp code thành công, bạn mở Serial Monitor để biết được địa chỉ IP của server. Sau đó dùng trình duyệt thử truy cập đến các đường dẫn sau:

  • http://serverIP: Bạn sẽ nhận được nội dung “Hello world
  • http://serverIP/xyz: Bạn sẽ nhận được lỗi “Not found: /xyz

Trả lời

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *

Fill out this field
Fill out this field
Vui lòng nhập địa chỉ email hợp lệ.
You need to agree with the terms to proceed

1 Bình luận.

  • Đây là khóa học IoT với Arduino phần nâng cao, giúp các bạn làm quen với các khái niệm về phần truyền và nhận dữ liệu lên Internet thông qua kết nối WiFi và nhiều phương thức (protocol) khác nhau.

Menu