ESP32-S3 N16R8 + OV5640: Tạo Streaming Camera xem trực tiếp trên trình duyệt
Trung cấp7/5/2026

ESP32-S3 N16R8 + OV5640: Tạo Streaming Camera xem trực tiếp trên trình duyệt

Trong bài này, chúng ta sẽ dùng ESP32-S3 N16R8 kết hợp camera OV5640 để tạo một camera streaming đơn giản, cho phép người dùng mở trình duyệt trên điện thoại hoặc máy tính và xem hình ảnh trực tiếp qua mạng Wi-Fi.

CameraStreamingMJPEGWeb ServerESP32-S3PSRAM
0 lượt thích6 người đã làm45 phút6 bước3 linh kiện
← Quay lại dự án
Hướng dẫn chi tiết

Phần 4: Tạo máy chủ web để streaming video

1. Giới thiệu về máy chủ web trong ESP32, 2. Cài đặt thư viện cho máy chủ web, 3. Viết code để tạo máy chủ web đơn giản, 4. Thiết lập endpoint để phục vụ video streaming, 5. Kiểm tra và debug máy chủ web.

Cập nhật 31/05/2026

Phần 4: Tạo máy chủ web để streaming video

Trong phần này, chúng ta sẽ tìm hiểu cách tạo một máy chủ web trên ESP32-S3 để phục vụ video streaming từ camera OV5640. Máy chủ web này sẽ cho phép người dùng truy cập video trực tiếp thông qua trình duyệt web trên điện thoại hoặc máy tính của họ.

1. Giới thiệu về máy chủ web trong ESP32

ESP32 là một vi điều khiển mạnh mẽ với khả năng kết nối Wi-Fi tích hợp. Điều này cho phép ESP32 hoạt động như một máy chủ web, nơi mà người dùng có thể gửi yêu cầu và nhận dữ liệu. Chúng ta sẽ sử dụng khả năng này để tạo một máy chủ web đơn giản cho phép streaming video từ camera OV5640.

2. Cài đặt thư viện cho máy chủ web

Để bắt đầu, chúng ta cần cài đặt một số thư viện cần thiết cho việc tạo máy chủ web. Các thư viện chính mà chúng ta sẽ sử dụng bao gồm:

  • WiFi.h: Thư viện cho phép ESP32 kết nối với mạng Wi-Fi.
  • WebServer.h: Thư viện để tạo máy chủ web.
  • esp_camera.h: Thư viện để làm việc với camera OV5640.

Để cài đặt các thư viện này, bạn có thể mở Arduino IDE, vào menu Sketch > Include Library > Manage Libraries... và tìm kiếm các thư viện trên. Sau khi tìm thấy, hãy cài đặt chúng.

3. Viết code để tạo máy chủ web đơn giản

Bây giờ, chúng ta sẽ viết một đoạn mã đơn giản để tạo máy chủ web. Đoạn mã này sẽ thiết lập kết nối Wi-Fi và khởi tạo máy chủ web.


#include <WiFi.h>
#include <WebServer.h>
#include <esp_camera.h>

// Thông tin mạng Wi-Fi
const char* ssid = "your_SSID";
const char* password = "your_PASSWORD";

WebServer server(80); // Khởi tạo máy chủ web

void setup() {
    Serial.begin(115200);
    camera_config_t config;
    // Cấu hình camera ở đây...

    // Kết nối Wi-Fi
    WiFi.begin(ssid, password);
    while (WiFi.status() != WL_CONNECTED) {
        delay(1000);
        Serial.println("Đang kết nối đến Wi-Fi...");
    }
    Serial.println("Kết nối thành công!");
    Serial.print("Địa chỉ IP: ");
    Serial.println(WiFi.localIP());

    // Thiết lập các endpoint cho máy chủ
    server.on("/", HTTP_GET, []() {
        server.send(200, "text/html", "Chào mừng đến với máy chủ streaming video!");
    });

    server.begin(); // Bắt đầu máy chủ
}

void loop() {
    server.handleClient(); // Xử lý các yêu cầu từ khách hàng
}

Trong đoạn mã trên, chúng ta đã thiết lập một máy chủ web đơn giản và hiển thị một thông điệp trên trang chính. Tiếp theo, chúng ta sẽ tạo một endpoint để phục vụ video streaming.

4. Thiết lập endpoint để phục vụ video streaming

Để phục vụ video streaming, chúng ta cần thêm một endpoint mới vào máy chủ web. Endpoint này sẽ trả về luồng video từ camera OV5640 dưới định dạng MJPEG.


void startCameraServer() {
    server.on("/stream", HTTP_GET, []() {
        server.sendHeader("Access-Control-Allow-Origin", "*");
        server.send(200, "multipart/x-mixed-replace; boundary=frame");
        while (true) {
            camera_fb_t *fb = esp_camera_fb_get();
            if (!fb) {
                Serial.println("Lỗi lấy khung hình");
                return;
            }
            server.sendContent("--frame\r\n");
            server.sendContent("Content-Type: image/jpeg\r\n");
            server.sendContent("Content-Length: ");
            server.sendContent(String(fb->len) + "\r\n\r\n");
            server.sendContent((const char *)fb->buf, fb->len);
            server.sendContent("\r\n");
            esp_camera_fb_return(fb);
            if (!server.client().connected()) {
                break;
            }
        }
    });
}

void setup() {
    // ... mã setup trước đó ...
    startCameraServer(); // Gọi hàm khởi tạo máy chủ camera
}

Trong đoạn mã trên, chúng ta đã thêm một endpoint "/stream", nơi mà video sẽ được gửi dưới dạng MJPEG. Chúng ta sử dụng vòng lặp để gửi từng khung hình liên tiếp tới trình duyệt.

5. Kiểm tra và debug máy chủ web

Để kiểm tra máy chủ web, bạn cần tải mã lên ESP32 và mở Serial Monitor để xem địa chỉ IP. Sau đó, mở trình duyệt web và nhập địa chỉ IP của ESP32 kèm theo "/stream" (ví dụ: http://192.168.1.100/stream). Nếu mọi thứ hoạt động bình thường, bạn sẽ thấy video streaming từ camera.

Lưu ý: Nếu bạn không thấy video streaming, hãy kiểm tra kết nối Wi-Fi, cấu hình camera và đảm bảo rằng các thư viện cần thiết đã được cài đặt đúng cách.

Trong bài viết này, chúng ta đã hoàn thành việc tạo một máy chủ web đơn giản trên ESP32-S3 để streaming video từ camera OV5640. Bạn có thể mở rộng và tùy chỉnh dự án này theo ý thích của mình, chẳng hạn như thêm các tính năng như chụp ảnh, ghi video, hoặc điều khiển camera từ xa.