ESP32 Cloud OTA: Cập nhật firmware từ xa qua Internet cho thiết bị IoT
Trung cấp15/4/2024

ESP32 Cloud OTA: Cập nhật firmware từ xa qua Internet cho thiết bị IoT

Cloud OTA đặc biệt hữu ích khi thiết bị IoT đã được lắp đặt ở những vị trí khó tiếp cận như hộp điều khiển cửa cuốn, cảm biến môi trường ngoài trời, thiết bị giám sát kho lạnh, hệ thống tưới cây tự động, trạm đo nhiệt độ - độ ẩm, .vv. Thay vì phải mang laptop đến từng thiết bị để nạp lại chương trình, OTA cho phép bạn sửa lỗi, nâng cấp tính năng, tối ưu hiệu năng và cập nhật cấu hình firmware từ xa. Đây là một kỹ thuật quan trọng khi xây dựng sản phẩm IoT.

OTAFirmware UpdateWiFiESP32
389 lượt thích567 người đã làm15 phút5 bước3 linh kiện
← Quay lại dự án
Hướng dẫn chi tiết

Phần 2: Xây dựng ứng dụng cơ bản cho ESP32

1. Tạo dự án mới trong Arduino IDE, 2. Viết mã nguồn cơ bản cho ESP32, 3. Kết nối ESP32 với WiFi, 4. Gửi dữ liệu lên server, 5. Kiểm tra và thử nghiệm kết nối.

Cập nhật 31/05/2026

Phần 2: Xây dựng ứng dụng cơ bản cho ESP32

Trong phần này, chúng ta sẽ xây dựng một ứng dụng cơ bản cho ESP32, cho phép thiết bị kết nối với WiFi và gửi dữ liệu lên server. Điều này sẽ giúp chúng ta chuẩn bị cho việc cập nhật firmware qua Cloud OTA sau này. Dưới đây là các bước chi tiết để thực hiện dự án này.

1. Tạo dự án mới trong Arduino IDE

Đầu tiên, bạn cần mở Arduino IDE và tạo một dự án mới. Hãy làm theo các bước sau:

  1. Mở Arduino IDE.
  2. Chọn File > New để tạo một dự án mới.
  3. Đặt tên cho dự án, ví dụ: ESP32_OTA.

Đảm bảo rằng bạn đã cài đặt thư viện ESP32 trong Arduino IDE. Nếu chưa, bạn có thể thêm nó từ Boards Manager.

2. Viết mã nguồn cơ bản cho ESP32

Tiếp theo, bạn sẽ viết mã nguồn cho ESP32. Mã nguồn này sẽ bao gồm các thư viện cần thiết và các biến cấu hình cho WiFi và server.


#include <WiFi.h>

const char* ssid = "YOUR_SSID"; // Thay YOUR_SSID bằng tên mạng WiFi của bạn
const char* password = "YOUR_PASSWORD"; // Thay YOUR_PASSWORD bằng mật khẩu mạng WiFi của bạn

const char* serverUrl = "https://maker.iotlabs.vn/ota/esp32-home-security_v1.2.0.bin"; // URL firmware

Trong đoạn mã trên, bạn cần thay thế YOUR_SSIDYOUR_PASSWORD bằng thông tin mạng WiFi của bạn. Server URL là địa chỉ nơi chứa firmware mà bạn muốn cập nhật.

3. Kết nối ESP32 với WiFi

Sau khi đã cấu hình thông tin WiFi, bạn cần viết mã để kết nối ESP32 với mạng WiFi. Dưới đây là đoạn mã để thực hiện điều này:


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

    // Kết nối tới WiFi
    Serial.println();
    Serial.print("Kết nối tới mạng WiFi: ");
    Serial.println(ssid);

    WiFi.begin(ssid, password);

    while (WiFi.status() != WL_CONNECTED) {
        delay(500);
        Serial.print(".");
    }

    Serial.println("");
    Serial.println("Đã kết nối tới mạng WiFi!");
    Serial.print("Địa chỉ IP: ");
    Serial.println(WiFi.localIP());
}

Trong hàm setup(), chúng ta khởi động Serial để có thể theo dõi trạng thái của thiết bị và thực hiện kết nối với WiFi. Nếu kết nối thành công, địa chỉ IP của thiết bị sẽ được in ra màn hình Serial.

4. Gửi dữ liệu lên server

Bây giờ, chúng ta sẽ viết mã để gửi dữ liệu lên server. Bạn có thể gửi một yêu cầu GET để kiểm tra xem thiết bị có thể kết nối với server hay không.


void loop() {
    // Gửi yêu cầu GET đến server
    if (WiFi.status() == WL_CONNECTED) {
        HTTPClient http;
        http.begin(serverUrl); // Khởi tạo HTTPClient với URL firmware

        int httpResponseCode = http.GET(); // Gửi yêu cầu GET

        if (httpResponseCode > 0) {
            String response = http.getString(); // Nhận phản hồi từ server
            Serial.println(httpResponseCode); // In mã phản hồi HTTP
            Serial.println(response); // In dữ liệu nhận được
        } else {
            Serial.print("Lỗi: ");
            Serial.println(httpResponseCode);
        }

        http.end(); // Kết thúc kết nối
    } else {
        Serial.println("Không có kết nối WiFi");
    }

    delay(10000); // Gửi yêu cầu mỗi 10 giây
}

Trong hàm loop(), chúng ta kiểm tra kết nối WiFi và gửi một yêu cầu GET đến server. Nếu yêu cầu thành công, chúng ta sẽ nhận được mã phản hồi và dữ liệu từ server, sau đó in chúng ra màn hình Serial.

5. Kiểm tra và thử nghiệm kết nối

Sau khi hoàn thành mã nguồn, bạn cần tải mã lên ESP32. Để làm điều này, hãy làm theo các bước sau:

  1. Kết nối ESP32 với máy tính thông qua cổng USB.
  2. Chọn đúng board và cổng COM trong Arduino IDE.
  3. Nhấn nút Upload để tải mã lên ESP32.

Sau khi tải lên hoàn tất, mở Serial Monitor để theo dõi thông tin. Bạn sẽ thấy thông báo kết nối WiFi thành công và địa chỉ IP của ESP32. Sau đó, thiết bị sẽ gửi yêu cầu đến server mỗi 10 giây.

Lưu ý: Đảm bảo rằng bạn đã kết nối ESP32 với mạng WiFi có internet và server URL là chính xác để có thể nhận dữ liệu từ server.

Với những bước này, bạn đã xây dựng thành công một ứng dụng cơ bản cho ESP32. Thiết bị hiện đã có khả năng kết nối với WiFi và gửi dữ liệu lên server. Trong phần tiếp theo, chúng ta sẽ tìm hiểu cách triển khai Cloud OTA để cập nhật firmware từ xa cho thiết bị này.