ESP32 kết hợp với màn hình cảm ứng TFT 2.8 inch
Nâng cao10/5/2024

ESP32 kết hợp với màn hình cảm ứng TFT 2.8 inch

Tạo IoT Dashboard đẹp mắt với màn hình cảm ứng TFT ILI9341 và thư viện LVGL.

TFTDisplayLVGLTouchESP32
278 lượt thích189 người đã làm30 phút6 bước4 linh kiện
← Quay lại dự án
Hướng dẫn chi tiết

Phần 5: Tích hợp dữ liệu IoT vào giao diện

1. Giới thiệu về IoT và các loại dữ liệu có thể hiển thị, 2. Kết nối ESP32 với mạng Wi-Fi, 3. Lấy dữ liệu từ một API hoặc cảm biến, 4. Hiển thị dữ liệu trên giao diện LVGL, 5. Cập nhật dữ liệu theo thời gian thực, 6. Kiểm tra và tối ưu hóa hiệu suất

Cập nhật 31/05/2026

Phần 5: Tích hợp dữ liệu IoT vào giao diện

Trong phần này, chúng ta sẽ tìm hiểu cách tích hợp dữ liệu IoT vào giao diện TFT 2.8 inch sử dụng thư viện LVGL. Chúng ta sẽ bắt đầu từ việc kết nối ESP32 với mạng Wi-Fi, lấy dữ liệu từ một API hoặc cảm biến, hiển thị dữ liệu trên giao diện LVGL, cập nhật dữ liệu theo thời gian thực và cuối cùng là kiểm tra cũng như tối ưu hóa hiệu suất.

1. Giới thiệu về IoT và các loại dữ liệu có thể hiển thị

Internet of Things (IoT) là một mạng lưới các thiết bị vật lý được kết nối với internet, cho phép chúng thu thập và trao đổi dữ liệu. Các loại dữ liệu có thể hiển thị trên giao diện TFT bao gồm:

  • Dữ liệu cảm biến (nhiệt độ, độ ẩm, áp suất, v.v.)
  • Dữ liệu từ API (thời tiết, giá cả, thông tin giao thông, v.v.)
  • Thông báo trạng thái hệ thống (kết nối, pin, v.v.)

2. Kết nối ESP32 với mạng Wi-Fi

Để ESP32 có thể truy cập internet và lấy dữ liệu, trước tiên chúng ta cần kết nối nó với mạng Wi-Fi. Dưới đây là code mẫu để thực hiện việc này:


#include <WiFi.h>

const char* ssid = "Tên_mạng_WiFi";
const char* password = "Mật_khẩu_WiFi";

void setup() {
    Serial.begin(115200);
    WiFi.begin(ssid, password);
    
    while (WiFi.status() != WL_CONNECTED) {
        delay(1000);
        Serial.println("Đang kết nối đến WiFi...");
    }
    Serial.println("Kết nối thành công!");
}

void loop() {
    // Code chính sẽ nằm ở đây
}

3. Lấy dữ liệu từ một API hoặc cảm biến

Chúng ta có thể lấy dữ liệu từ một API công cộng hoặc từ các cảm biến kết nối với ESP32. Dưới đây là ví dụ về cách lấy dữ liệu từ một API thời tiết:


#include <HTTPClient.h>

void getWeatherData() {
    if (WiFi.status() == WL_CONNECTED) {
        HTTPClient http;
        http.begin("http://api.openweathermap.org/data/2.5/weather?q=Hanoi&appid=YOUR_API_KEY");
        
        int httpCode = http.GET();
        
        if (httpCode > 0) {
            String payload = http.getString();
            Serial.println(payload);
            // Xử lý dữ liệu JSON tại đây
        } else {
            Serial.println("Lỗi khi gọi API");
        }
        http.end();
    }
}

4. Hiển thị dữ liệu trên giao diện LVGL

Sau khi lấy được dữ liệu, chúng ta cần hiển thị nó trên giao diện LVGL. Đầu tiên, hãy đảm bảo rằng bạn đã cấu hình LVGL đúng cách. Dưới đây là ví dụ cách hiển thị nhiệt độ:


#include <lvgl.h>

void displayData(float temperature) {
    lv_obj_t *label = lv_label_create(lv_scr_act(), NULL);
    lv_label_set_text_fmt(label, "Nhiệt độ: %.2f °C", temperature);
    lv_obj_align(label, NULL, LV_ALIGN_CENTER, 0, 0);
}

5. Cập nhật dữ liệu theo thời gian thực

Để cập nhật dữ liệu theo thời gian thực, chúng ta có thể sử dụng một vòng lặp để lấy dữ liệu từ API sau một khoảng thời gian nhất định. Dưới đây là ví dụ:


void loop() {
    getWeatherData();
    displayData(temperature); // Giả sử bạn đã xử lý và lấy được giá trị nhiệt độ
    delay(60000); // Cập nhật mỗi phút
}

6. Kiểm tra và tối ưu hóa hiệu suất

Để đảm bảo rằng ứng dụng của bạn hoạt động mượt mà, hãy kiểm tra các yếu tố sau:

  • Đảm bảo rằng bạn chỉ lấy dữ liệu cần thiết từ API hoặc cảm biến.
  • Giảm thiểu số lần gọi API bằng cách sử dụng bộ nhớ đệm (cache).
  • Sử dụng các phương pháp nén dữ liệu để giảm băng thông.
Lưu ý: Khi làm việc với API, hãy kiểm tra giới hạn gọi API để tránh bị khóa tài khoản hoặc bị giới hạn lưu lượng.

Với các bước trên, bạn đã hoàn thành việc tích hợp dữ liệu IoT vào giao diện TFT 2.8 inch sử dụng ESP32 và LVGL. Hãy tiếp tục khám phá và phát triển dự án của bạn để tạo ra những ứng dụng IoT thú vị hơn!