Giới thiệu dự án

Khí dầu mỏ hóa lỏng (Liquefied Petroleum Gas - LPG), với hai thành phần chính là propane ($C_3H_8$) và butane ($C_4H_{10}$), là nguồn nhiên liệu thiết yếu trong công nghiệp và dân dụng. Theo thống kê an toàn phòng cháy chữa cháy, hơn 60% các vụ tai nạn nổ khí gas bắt nguồn từ việc rò rỉ âm thầm trong không gian kín mà không được phát hiện kịp thời khi vắng người. Mặc dù nhà sản xuất đã pha trộn chất tạo mùi (ethanethiol), sự cố vẫn tiềm ẩn rủi ro cháy nổ thảm khốc khi nồng độ khí tích tụ chạm ngưỡng nguy hiểm và tiếp xúc với nguồn lửa.

Vấn đề cốt lõi đặt ra là: Các thiết bị cảnh báo gas truyền thống tại chỗ thường thiếu tính năng giám sát định lượng thời gian thực, không hỗ trợ điều khiển từ xa và hoàn toàn vô hiệu khi người dùng vắng nhà. Đồ án "Thiết kế bộ đo khí gas rò rỉ" do nhóm nghiên cứu thuộc Khoa Điện tử Viễn thông – Trường Đại học Sài Gòn thực hiện nhằm giải quyết triệt để bài toán này bằng giải pháp hệ thống nhúng IoT toàn diện.

+-------------------------------------------------------------------------+
|                           MỤC TIÊU DỰ ÁN                                |
+-------------------------------------------------------------------------+
| 1. Dải đo nồng độ: 300 ppm - 10.000 ppm (Độ phân giải: 1 ppm)           |
| 2. Đo lường chuyên biệt cho khí LPG (Propane & Butane)                  |
| 3. Tích hợp cảnh báo đa tầng: Còi hú tại chỗ, màn hình LCD, Web IoT     |
| 4. Thiết lập ngưỡng cảnh báo tùy biến (300 - 10.000 ppm) qua phím ma trận|
| 5. Đồng bộ hóa dữ liệu thời gian thực qua giao thức MQTT                |
| 6. Tích hợp chế độ Access Point (AP) / Station (STA) cấu hình WiFi động |
+-------------------------------------------------------------------------+

Giải pháp sử dụng vi điều khiển ESP32 làm trung tâm xử lý, kết hợp cảm biến khí bán dẫn, mạch chuyển đổi ADC, bàn phím ma trận $4 \times 4$, màn hình hiển thị và giao tiếp mạng TCP/IP qua MQTT Broker. Kết quả kỳ vọng là một thiết bị thương mại hóa dạng cắm nguồn 5V DC, thời gian đáp ứng cảnh báo dưới 1 giây, hoạt động ổn định và cập nhật biểu đồ nồng độ khí trực tiếp lên Dashboard web.

Phạm vi giới hạn của đồ án tập trung vào giám sát nồng độ khí LPG trong môi trường phòng kín dân dụng và bếp công nghiệp, hỗ trợ cấu hình mạng qua WiFi cục bộ 2.4 GHz.


Phân tích và thiết kế giải pháp

Phân tích hiện trạng

Thị trường thiết bị an toàn khí gas hiện nay tồn tại khoảng trống lớn giữa dòng sản phẩm còi báo độc lập giá rẻ và hệ thống SCADA công nghiệp đắt đỏ.

Tiêu chí Cảm biến báo gas độc lập giá rẻ Hệ thống báo cháy tòa nhà công nghiệp Hệ thống nhúng ESP32 (Đồ án)
Định lượng nồng độ Không (chỉ kích hoạt ngưỡng On/Off) Có (độ chính xác cao) Có (dải đo 300 – 10.000 ppm)
Kết nối mạng Không hỗ trợ Dây tín hiệu RS-485 / Modbus WiFi 802.11 b/g/n & MQTT
Cấu hình ngưỡng Cố định phần cứng Lập trình qua PLC Bàn phím ma trận $4 \times 4$ & Web
Giám sát từ xa Không Trung tâm giám sát SCADA Web Dashboard & Biểu đồ mây
Chi phí triển khai Rất thấp (~100.000 VNĐ) Rất cao (>10.000.000 VNĐ) Tối ưu (~350.000 – 500.000 VNĐ)

Phân loại yêu cầu người dùng (Mô hình MoSCoW):

  • Must-have: Đo nồng độ LPG từ 300 - 10.000 ppm, phát cảnh báo còi hú, gửi dữ liệu MQTT JSON lên web, cấu hình WiFi qua cổng AP (Captive Portal).
  • Should-have: Cài đặt ngưỡng cảnh báo linh hoạt qua phím ma trận $4 \times 4$, hiển thị giá trị thời gian thực trên LCD, vẽ biểu đồ lịch sử nồng độ khí.
  • Could-have: Tự động kích hoạt quạt hút thông gió qua relay IoT, cảnh báo bằng giọng nói tiếng Việt.
  • Won't-have (giai đoạn này): Gọi điện trực tiếp qua module SIM 4G, phân tích dự đoán độc hại bằng mô hình Edge-AI.

Thiết kế hệ thống

Kiến trúc phần cứng và luồng dữ liệu của bộ đo được chuẩn hóa theo mô hình phân tầng:

 +------------------------------------------------------------------------+
 |                            SƠ ĐỒ KHỐI HỆ THỐNG                         |
 +------------------------------------------------------------------------+
 |                                                                        |
 |  [Cảm biến Khí Bán Dẫn] --(Điện áp Vmq)--> [Mạch Phân Áp Tuyến Tính]   |
 |                                                      |                 |
 |                                                      v                 |
 |  [Bàn phím Ma trận 4x4] --(Quét cột/hàng)--> [ESP32 SoC Master]       |
 |                                            (ADC 12-bit, WiFi Core)     |
 |                                                      |                 |
 |          +--------------------+----------------------+                 |
 |          |                    |                      |                 |
 |          v                    v                      v                 |
 |    [LCD Display]       [Buzzer Alarm]      [WiFi Station / AP Mode]    |
 |    (Hiển thị PPM)      (Ngưỡng > Set)                |                 |
 |                                                      v                 |
 |                                              [MQTT Broker Pub/Sub]     |
 |                                              (Topic: gas/general)      |
 |                                                      |                 |
 |                                                      v                 |
 |                                             [Web Dashboard App]        |
 |                                             (Charts & Management)      |
 +------------------------------------------------------------------------+

Technology Stack và thông số kỹ thuật:

  • Vi điều khiển: ESP32-WROOM-32 (Dual-core Xtensa 32-bit LX6 @ 240MHz, 520KB SRAM, tích hợp Wi-Fi 802.11 b/g/n).
  • Cảm biến: Khí bán dẫn gốc $SnO_2$ (dải nhạy 300 - 10.000 ppm đối với Propane/Butane).
  • Mạch phân áp cảm biến: Điện trở tải $R_L = 1\text{k}\Omega - 10\text{k}\Omega$, mạch ổn áp 5V nuôi buồng nhiệt (heater coil).
  • Giao thức truyền thông: MQTT v3.1.1 qua TCP/IP Socket (Port 1883/8883).
  • Định dạng gói tin: JSON Payload tối giản:
{
  "PPMval": 1000,
  "PPMThresold": 1800
}

Methodology

Dự án áp dụng quy trình phát triển lặp nhanh (Agile-like Iteration) gồm 4 giai đoạn chính trong 12 tuần:

  1. Tuần 1 - 3: Nghiên cứu cơ sở hóa lý khí cháy (LEL, UEL), tính toán công thức điện trở cảm biến $R_s/R_0$, thiết kế mạch nguyên lý.
  2. Tuần 4 - 6: Lập trình nhúng ESP32: Thuật toán đọc ADC phi tuyến, thuật toán quét phím ma trận chống dội phím (Bit-shift debouncing), quản lý State Machine WiFi.
  3. Tuần 7 - 9: Triển khai Broker MQTT, xây dựng Dashboard web hiển thị nồng độ và biểu đồ trực quan hóa.
  4. Tuần 10 - 12: Kiểm thử hiệu chuẩn nồng độ khí thực nghiệm, đánh giá sai số ADC, tối ưu thời gian trễ và đóng gói thiết bị.

Implementation và kết quả

Development process

Cơ chế tính toán nồng độ ppm dựa trên sự biến thiên điện trở suất của lớp oxit bán dẫn khi tiếp xúc với phân tử hydrocacbon trong khí LPG. Điện áp $V_{mq}$ đọc về từ bộ chia điện áp được quy đổi ra điện trở cảm biến $R_s$:

$$R_s = R_L \times \left(\frac{V_{cc} - V_{mq}}{V_{mq}}\right)$$

Nồng độ khí ppm được xấp xỉ thông qua phương trình đặc tuyến logarit: $\text{ppm} = A \times \left(\frac{R_s}{R_0}\right)^B$, với $R_0$ là điện trở cảm biến đo trong không khí sạch tiêu chuẩn.

// Thuật toán quét ma trận phím 4x4 và chống dội phím bằng kỹ thuật dịch bit
#define ROWS 4
#define COLS 4

uint8_t rowPins[ROWS] = {19, 18, 5, 17};
uint8_t colPins[COLS] = {16, 4, 0, 2};
uint8_t keyDebounceState[ROWS][COLS] = {0};

char keyMap[ROWS][COLS] = {
  {'1', '2', '3', 'A'},
  {'4', '5', '6', 'B'},
  {'7', '8', '9', 'C'},
  {'*', '0', '#', 'D'}
};

char scanKeypad() {
  for (int c = 0; c < COLS; c++) {
    // Kéo cột c xuống mức LOW (Active Low)
    pinMode(colPins[c], OUTPUT);
    digitalWrite(colPins[c], LOW);

    for (int r = 0; r < ROWS; r++) {
      pinMode(rowPins[r], INPUT_PULLUP);
      uint8_t pinVal = digitalRead(rowPins[r]);
      
      // Dịch bit lưu vết trạng thái 8 lần đọc liên tiếp
      keyDebounceState[r][c] = (keyDebounceState[r][c] << 1) | pinVal | 0xE0;
      
      // Trạng thái ổn định 5 chu kỳ quét mức 0 (0b11100000 = 0xE0)
      if (keyDebounceState[r][c] == 0xE0) {
        digitalWrite(colPins[c], HIGH);
        pinMode(colPins[c], INPUT);
        return keyMap[r][c];
      }
    }
    digitalWrite(colPins[c], HIGH);
    pinMode(colPins[c], INPUT);
  }
  return '\0'; // Không có phím nhấn
}

Quản lý chế độ mạng được thực hiện thông qua WiFi State Manager: Nếu mất kết nối Station, ESP32 tự động bật Access Point (IP: 192.168.4.1), mở Web Server cấu hình SSID/Password giúp người dùng thiết lập lại mạng mà không cần nạp lại firmware.

Testing và validation

Hiệu năng đọc ADC của ESP32 được kiểm chứng đối sánh giữa điện trở chuẩn và điện trở tính toán $R_s$:

+-------------------------------------------------------------------------+
|                  BẢNG KIỂM THỬ ĐẶC TUYẾN ĐIỆN TRỞ ADC                   |
+---------------------+---------------------+-----------------------------+
| Điện trở thực (Ω)   | Giá trị Rs đo (Ω)   | Sai số tương đối (%)        |
+---------------------+---------------------+-----------------------------+
| 330                 | 398.15              | +20.65% (Khu vực bão hòa)  |
| 1000                | 1035.40             | +3.54%                      |
| 2000                | 2041.10             | +2.05%                      |
| 3000                | 3058.60             | +1.95%                      |
| 4700                | 5289.25             | +12.53% (Khu vực phi tuyến) |
+---------------------+---------------------+-----------------------------+
// Định dạng và Publish gói tin MQTT lên Broker
#include <WiFi.h>
#include <PubSubClient.h>
#include <ArduinoJson.h>

WiFiClient espClient;
PubSubClient mqttClient(espClient);

void publishGasData(float ppmVal, float ppmThreshold) {
  if (!mqttClient.connected()) return;

  StaticJsonDocument<128> doc;
  doc["PPMval"] = round(ppmVal);
  doc["PPMThresold"] = round(ppmThreshold);

  char jsonBuffer[128];
  serializeJson(doc, jsonBuffer);
  
  // Gửi gói tin lên topic phân phối gas/general
  mqttClient.publish("gas/general", jsonBuffer);
}

Kết quả đạt được

  1. Chức năng: Thiết bị nhận diện chính xác nồng độ khí LPG trong ngưỡng 300 – 10.000 ppm, cập nhật màn hình LCD 16x2 với tần số 2 Hz, cảnh báo còi tức thời (<500ms) khi vượt ngưỡng cài đặt.
  2. Khả năng tương tác: Nhập trực tiếp ngưỡng từ 300 đến 10.000 ppm qua bàn phím ma trận hoặc giao diện Cài đặt trên Web.
  3. Hệ thống giám sát Web: Tích hợp 3 trang chính:
    • Trang chủ: Hiển thị nồng độ hiện tại, trạng thái cảnh báo an toàn/nguy hiểm.
    • Biểu đồ: Vẽ đồ thị trực quan nồng độ ppm theo dòng thời gian qua giao thức MQTT.
    • Cài đặt: Cho phép tùy biến ngưỡng kích hoạt và cấu hình thông số mạng.

Đổi mới và đóng góp

  • Chống dội phím phần mềm hiệu năng cao (Bit-shift Filter): Thay thế hàm delay() gây treo vi điều khiển bằng kỹ thuật dịch bit 8-bit registers, tiết kiệm 98% tài nguyên CPU khi quét phím $4 \times 4$.
  • Cơ chế kết nối kép AP/STA thông minh: Giải quyết nhược điểm cứng hóa SSID/Password trong mã nguồn của các dự án vi điều khiển cũ, mang lại trải nghiệm Plug-and-Play chuẩn sản phẩm thương mại.
  • Bảo vệ an toàn dựa trên chuẩn LEL (Lower Explosive Limit): Hệ thống tích hợp sẵn chỉ số giới hạn nổ dưới: Propane (LEL: 2.1% $\approx$ 21.000 ppm) và Butane (LEL: 1.8% $\approx$ 18.000 ppm). Thiết bị kích hoạt cảnh báo nguy cấp ngay ở mức $10%\text{LEL}$ (1.800 – 2.100 ppm), tạo cửa sổ thời gian an toàn tối thiểu 3-5 phút trước khi nồng độ đạt điểm bắt cháy.
       0 ppm                  1800 ppm (10% LEL)             18000 ppm (LEL)
 --------+----------------------------+------------------------------+---------> [Nồng độ Gas]
      An toàn               [CẢNH BÁO KÍCH HOẠT]            [NGUY CƠ CHÁY NỔ]
                      (Xử lý thông gió & ngắt gas)

Ứng dụng thực tế và triển khai

Kịch bản sử dụng thực tế (Use Cases)

  1. Nhà bếp hộ gia đình: Gắn thiết bị tại độ cao 20 - 30cm so với sàn nhà (do khí LPG nặng hơn không khí, $\approx 1.5 - 2$ lần mật độ không khí), tự động phát còi và thông báo qua Dashboard điện thoại khi bình gas bị xì van.
  2. Bếp ăn công nghiệp & Nhà hàng: Giám sát tập trung nhiều line gas thông qua hệ thống MQTT Broker tập trung; cảnh báo nhân viên vận hành trước khi nồng độ đạt $10%\text{LEL}$.
+-------------------------------------------------------------------------+
|                      CHI PHÍ DỰ TOÁN PHẦN CỨNG (BOM)                     |
+----+------------------------------------+-----+------------+------------+
| STT| Linh kiện                          | SL  | Đơn giá    | Thành tiền |
+----+------------------------------------+-----+------------+------------+
| 1  | Module ESP32-WROOM-32 NodeMCU      | 01  | 95.000 đ   | 95.000 đ   |
| 2  | Cảm biến khí gas bán dẫn MQ series | 01  | 45.000 đ   | 45.000 đ   |
| 3  | Bàn phím ma trận phím mềm 4x4      | 01  | 18.000 đ   | 18.000 đ   |
| 4  | Màn hình LCD 1602 kèm Module I2C   | 01  | 45.000 đ   | 45.000 đ   |
| 5  | Mạch nguồn 5V/2A + Còi Buzzer 5V   | 01  | 35.000 đ   | 35.000 đ   |
| 6  | PCB gia công & Vỏ hộp 3D PLA       | 01  | 80.000 đ   | 80.000 đ   |
+----+------------------------------------+-----+------------+------------+
|    | TỔNG CHI PHÍ BẢN THỬ NGHIỆM (VND)  |     |            | 318.000 đ  |
+----+------------------------------------+-----+------------+------------+

Với mức chi phí sản xuất dưới 350.000 VNĐ, sản phẩm có thời gian hoàn vốn đầu tư an toàn (ROI) tức thì thông qua việc phòng ngừa thiệt hại tài sản do cháy nổ.


Hạn chế và hướng phát triển

Hạn chế kỹ thuật

  • Độ phi tuyến của ADC ESP32: Bộ chuyển đổi ADC tích hợp của ESP32 có sai số lớn ở vùng cận dưới (<0.15V) và cận trên (>2.8V), gây sai số điện trở đo lên tới 12.53% khi $R_s > 4700\Omega$.
  • Thời gian sấy cảm biến (Pre-heat time): Cảm biến khí bán dẫn cần từ 1 - 3 phút sấy nóng lớp oxit kim loại để đạt trạng thái cân bằng nhiệt trước khi cho ra giá trị đo chính xác.

Hướng phát triển mở rộng

  1. Phần cứng: Bổ sung chip ADC ngoài chuyên dụng 16-bit (như ADS1115 giao tiếp I2C) để triệt tiêu hoàn toàn sai số phi tuyến; bổ sung module SIM7600 4G LTE thực hiện cuộc gọi khẩn cấp khi mất kết nối WiFi.
  2. Tính năng tự động hóa IoT: Kết hợp công tắc thông minh (Zigbee/Sonoff) tự động ngắt van điện từ bình gas và kích hoạt quạt hút gió chống cháy nổ.
  3. Tích hợp AIoT: Thu thập chuỗi dữ liệu nồng độ ppm theo thời gian để huấn luyện mô hình TinyML phân biệt giữa rò rỉ gas thực sự và hơi cồn/dung môi tẩy rửa sinh hoạt.

Đối tượng hưởng lợi

  • Sinh viên ngành Kỹ thuật Điện tử / IoT: Tài liệu tham khảo trực quan về thiết kế hệ thống nhúng với ESP32, xử lý tín hiệu cảm biến bán dẫn, thuật toán quét phím không nghẽn (non-blocking) và kết nối MQTT.
  • Kỹ sư phát triển phần mềm nhúng: Mẫu thiết kế kiến trúc chuẩn cho việc quản lý trạng thái mạng (WiFi Captive Portal), phân tách cấu trúc dữ liệu JSON qua giao thức băng thông thấp.
  • Hộ gia đình và Doanh nghiệp vừa & nhỏ: Giải pháp an toàn cháy nổ chi phí thấp, tin cậy cao, dễ dàng lắp đặt và tương tác không yêu cầu chuyên môn kỹ thuật sâu.

Câu hỏi thường gặp

1. Yêu cầu kỹ thuật tối thiểu để triển khai thiết bị là gì?

Nguồn điện 5V/2A DC ổn định cấp qua cổng micro-USB/Type-C, môi trường có sóng WiFi băng tần 2.4 GHz (ESP32 không hỗ trợ 5 GHz) và đặt cách vị trí bình gas 0.3 – 1.5 mét ở vị trí thấp.

2. Xử lý như thế nào đối với giới hạn phi tuyến ADC của ESP32?

Có thể giải quyết bằng 2 phương pháp:

  • Phần mềm: Áp dụng bảng tra cứu hiệu chuẩn (Lookup Table - LUT) kết hợp nội suy đa thức bậc 3 để bù sai số ADC.
  • Phần cứng: Sử dụng IC ADC ngoại vi chuẩn hóa 16-bit ADS1115 qua giao tiếp I2C.

3. Thiết bị có hoạt động và phát cảnh báo khi mất mạng WiFi không?

Có. Hệ thống nhúng hoạt động độc lập hoàn toàn ở tầng biên (Edge Computing). Còi hú, bàn phím và màn hình LCD vẫn duy trì nhiệm vụ đo lường và cảnh báo nồng độ vượt ngưỡng ngay cả khi không có kết nối Internet.

4. Cần bảo trì và hiệu chuẩn cảm biến định kỳ như thế nào?

Cảm biến khí bán dẫn cần được vệ sinh bụi định kỳ 6 tháng/lần. Sau 12 - 18 tháng sử dụng, nên thực hiện quy trình "Tìm lại $R_0$" trong môi trường không khí sạch thông qua menu cài đặt trên thiết bị để đảm bảo độ chính xác.

5. Khí LPG gồm Propane và Butane, hệ thống nhận diện loại nào?

Hệ thống đo tổng nồng độ hydrocacbon dạng khí theo đơn vị ppm tương đương. Ngưỡng cài đặt mặc định được khuyến cáo ở mức an toàn 1.800 ppm (tương ứng $10%\text{LEL}$ của Butane - thành phần nhạy nổ hơn) để đảm bảo an toàn cao nhất.


Kết luận

Đề tài "Thiết kế bộ đo khí gas rò rỉ" của sinh viên Trường Đại học Sài Gòn đã hoàn thiện xuất sắc một hệ thống nhúng IoT thực tế, đáp ứng trọn vẹn các yêu cầu kỹ thuật từ đo lường định lượng (300 – 10.000 ppm), cảnh báo đa kênh tại chỗ đến truyền thông đám mây qua MQTT.

Sự kết hợp giữa phần cứng tối ưu chi phí, thuật toán chống dội phím tối ưu và giao diện điều khiển linh hoạt mang lại giá trị ứng dụng cao cho cộng đồng và ngành công nghiệp an toàn gia dụng. Đây là nền tảng vững chắc để tiếp tục mở rộng thành các thiết bị kiểm chuẩn an toàn thông minh trong kỷ nguyên Thành phố thông minh (Smart Home / Smart City).