Giới thiệu dự án

Theo thống kê từ Hiệp hội Xăng dầu Việt Nam, hơn 90% trạm bán lẻ nhiên liệu tại Việt Nam vẫn vận hành theo mô hình thủ công truyền thống. Mô hình này đòi hỏi 2 đến 3 nhân viên vận hành mỗi ca cho một trạm 4–6 trụ bơm, tạo áp lực chi phí nhân công từ 15 đến 25 triệu đồng/tháng/trạm, đồng thời tiềm ẩn rủi ro sai sót trong thanh toán tiền mặt, gian lận đo lường và phơi nhiễm hơi hydrocarbon (VOCs/Benzen) lâu dài cho người lao động.

Vấn đề cốt lõi đặt ra là sự thiếu hụt một hệ thống bán lẻ xăng dầu tự động hóa có chi phí hợp lý, thích ứng với thói quen tiêu dùng trong nước mà không phụ thuộc hoàn toàn vào hạ tầng cổng thanh toán ngân hàng trực tuyến đắt đỏ. Các giải pháp trạm bơm tự động nhập khẩu từ Mỹ hay Nhật Bản thường có giá thành từ vài trăm triệu đến hàng tỷ đồng mỗi trụ, sử dụng giao thức độc quyền khó tích hợp và bảo trì.

Dự án "Thiết kế trạm xăng thông minh dùng Arduino" do nhóm nghiên cứu tại Trường Đại học Sư phạm Kỹ thuật TP.HCM phát triển nhằm giải quyết triệt để các hạn chế trên thông qua 4 mục tiêu kỹ thuật cụ thể:

  1. Xây dựng hệ thống tự phục vụ (self-service) định danh và thanh toán không tiếp xúc qua công nghệ nhận dạng tần số vô tuyến RFID (Radio Frequency Identification) tần số 13.56 MHz.
  2. Thiết kế mạch điều khiển đo lường và định lượng lưu lượng chất lỏng tự động với sai số thể tích dưới $\pm 0.5%$.
  3. Tích hợp trạm máy chủ nhúng Web Server giám sát thời gian thực, lưu trữ nhật ký giao dịch, kiểm soát bồn chứa và cấu hình giá xăng từ xa qua giao thức TCP/IP.
  4. Triển khai hệ thống cảm biến an toàn chủ động phát hiện rò rỉ khí cháy (LPG, hydrocarbon) và giám sát nhiệt độ/độ ẩm môi trường vận hành.

Giải pháp lựa chọn cấu trúc xử lý phân tán với 2 khối vi điều khiển: Arduino Uno R3 (ATmega328P) chịu trách nhiệm điều khiển thời gian thực tại trụ bơm (đọc encoder, quét phím ma trận 4x4, hiển thị LED 7 đoạn qua IC dịch 74HC595, đóng ngắt van/bơm) và Arduino Mega 2560 (ATmega2560) đóng vai trò Gateway/Server trung tâm (giao tiếp module Ethernet W5100, đồng hồ thời gian thực DS1307, lưu trữ thẻ nhớ MicroSD, xử lý HTTP Server).

Phạm vi đề tài triển khai mô hình thử nghiệm với 2 trụ bơm độc lập, sử dụng động cơ DC gắn đĩa xung quang học (optical encoder) mô phỏng cơ cấu đo lưu lượng xăng thực tế và giao diện Web quản trị nội bộ qua mạng LAN/Internet.

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

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

Tiêu chí so sánh Trạm xăng truyền thống Trạm bán tự động POS/ATM Trạm xăng Mini tự nhận tiền Trạm thông minh Arduino RFID (Đề tài)
Nhân sự vận hành Bắt buộc (1-2 người/trụ) Cần thu ngân tại quầy Không cần nhân viên Hoàn toàn tự phục vụ
Thời gian giao dịch 45 – 60 giây/lượt 60 – 90 giây/lượt 30 – 45 giây/lượt 15 – 20 giây/lượt
Hạ tầng thanh toán Tiền mặt trực tiếp Thẻ Visa/Mastercard/ATM Đầu đọc tiền polymer Thẻ RFID Mifare trả trước
Giám sát an toàn Thủ công (mắt/bình chữa cháy) Cảm biến độc lập Rất hạn chế Tích hợp MQ-2, DHT11 liên tục
Quản trị dữ liệu Sổ sách / Nhập tay cuối ngày Phần mềm ERP trung tâm Không có mạng quản trị Web Server nhúng, ghi thẻ SD
Chi phí đầu tư Thấp Rất cao (>500 triệu/trụ) Trung bình (cơ khí phức tạp) Thấp (< 10 triệu/trụ mô hình)

Hệ thống phân loại yêu cầu tính năng theo phương pháp MoSCoW:

  • Must have (Bắt buộc): Quẹt thẻ RFID Mifare Classic 1K trừ tiền chính xác; đo xung encoder ngắt tự động khi đạt thể tích/số tiền cài đặt; cảnh báo nồng độ khí cháy vượt ngưỡng.
  • Should have (Nên có): Web server cấu hình giá xăng dầu từ xa; hiển thị số lít/số tiền trên LED 7 đoạn cỡ lớn và màn hình LCD 16x2/GLCD 128x64; ghi log giao dịch vào thẻ nhớ SD kèm mốc thời gian RTC DS1307.
  • Could have (Có thể có): Điều khiển bật/tắt đèn chiếu sáng trạm xăng từ xa qua giao diện Web; mở rộng kết nối lên đến 4 trụ bơm qua chuẩn RS232/UART.
  • Won't have (Chưa thực hiện): Tích hợp cổng thanh toán trực tuyến liên ngân hàng (Payment Gateway); chứng chỉ chống cháy nổ ATEX cho môi trường công nghiệp thực địa.

Thiết kế hệ thống

Kiến trúc phần cứng được phân tầng rõ ràng nhằm tối ưu tính độc lập và khả năng chịu lỗi của hệ thống nhúng:

Technology Stack và phiên bản linh kiện sử dụng:

  • MCU Master: Arduino Mega 2560 R3 (ATmega2560 @ 16 MHz, 256 KB Flash, 8 KB SRAM, 4 cổng UART phần cứng).
  • MCU Slave: Arduino Uno R3 (ATmega328P @ 16 MHz, 32 KB Flash, 2 KB SRAM).
  • RFID Subsystem: Module MFRC522 (tần số sóng mang 13.56 MHz, chuẩn giao tiếp SPI, tốc độ truyền dữ liệu tối đa 10 Mbit/s) kết hợp thẻ nhựa Mifare Classic S50 1K (16 sector, 4 block/sector, bộ nhớ lưu trữ UID 4-byte/7-byte duy nhất).
  • Mạng truyền thông: Arduino Ethernet Shield W5100 (tốc độ 10/100 Mbps, giao thức phần cứng TCP/IP, hỗ trợ tối đa 4 kết nối socket đồng thời).
  • Bộ hiển thị & Mở rộng I/O: IC ghi dịch 74HC595 (Serial-in Parallel-out) ghép nối tiếp điều khiển 6 LED 7 đoạn; IC mở rộng cổng PCF8574 chuyển đổi giao tiếp LCD 16x2 HD44780U qua 2 dây I2C; màn hình đồ họa GLCD 128x64 chip điều khiển ST7920.
  • Cảm biến an toàn: MQ-2 (SnO2 semiconductor, phát hiện LPG/Propane/Methane/Khói dải 200–10000 ppm); DHT11 (đo nhiệt độ $0-50^\circ\text{C} \pm 2^\circ\text{C}$, độ ẩm $20-80% \text{RH} \pm 5%$).
  • Giao tiếp liên bo mạch: Chuẩn UART (tốc độ baud 9600 bps, khung truyền 8-N-1) kết hợp IC chuyển mức MAX232 (TTL sang RS-232 $\pm 12\text{V}$) chống nhiễu trên đường truyền dây dài.

Cấu trúc lưu trữ dữ liệu trên thẻ nhớ MicroSD (định dạng FAT32) theo dạng tệp tin văn bản có cấu trúc:

  • ACCOUNT.TXT: [UID_HEX],[PIN_HASH],[BALANCE_VND],[CUSTOMER_NAME]
  • HISTORY.TXT: [TIMESTAMP],[PUMP_ID],[UID_HEX],[VOLUME_LIT],[TOTAL_VND],[REMAIN_BALANCE]
  • TANK.TXT: [PUMP_ID],[FUEL_TYPE],[CURRENT_VOLUME_LIT],[PRICE_PER_LIT]

Methodology

Quy trình phát triển hệ thống được tổ chức theo mô hình V-Model gồm 5 giai đoạn:

  1. Khảo sát & Đặc tả: Phân tích nguyên lý cò bơm, đĩa xung và quy trình bán hàng tại cây xăng thực tế.
  2. Thiết kế phần cứng: Thiết kế sơ đồ nguyên lý (Schematic), layout mạch in (PCB) cho khối hiển thị LED 7 đoạn, khối đệm relay công suất và mạch chuyển đổi mức logic MAX232.
  3. Phát triển Firmware & Web: Lập trình nhúng trên Arduino IDE (v1.6.8) sử dụng ngôn ngữ C/C++; xây dựng Web Server bằng HTML5, CSS thuần và kỹ thuật xử lý HTTP Request phương thức GET/POST.
  4. Tích hợp & Hiệu chuẩn: Ghép nối Master-Slave qua UART, hiệu chuẩn hệ số xung encoder ($K_{\text{factor}} = \text{Xung} / \text{Lít}$) và ngưỡng điện áp cảm biến khí ga $V_{\text{Aout}}$.
  5. Đo kiểm & Bàn giao: Kiểm thử tải nạp, kiểm thử an toàn và đo đạc độ chính xác thể tích.

Ma trận đánh giá và kiểm soát rủi ro:

  • Nhiễu điện từ do động cơ bơm: Sử dụng cách ly quang (Optocoupler EL817) tại mạch kích Relay và lắp diode dập xung ngược 1N4007.
  • Mất điện đột ngột: Lưu giá trị số xung tức thời vào thanh ghi nội và chỉ trừ số dư tài khoản trên thẻ SD khi hoàn tất chu kỳ bơm hoặc nhả cò bơm quá 5 giây.
  • Xung đột đọc/ghi thẻ RFID: Khóa ngắt toàn cục (cli()) trong thời gian 1.5 ms khi module RC522 thực hiện chuỗi xác thực sector key (PCD_Authenticate).

Implementation và kết quả

Development process

Cốt lõi của hệ thống định lượng tại vi điều khiển Slave (Arduino Uno) là thuật toán ngắt ngoài bắt xung cạnh lên (RISING edge) từ đĩa quang encoder gắn trên trục bơm, đảm bảo không bỏ sót bất kỳ xung định lượng nào ngay cả khi CPU đang quét phím hay cập nhật màn hình:

// Trích xuất mã nguồn xử lý ngắt đếm xung và tự động ngắt van bơm
volatile unsigned long pulseCount = 0;
const float PULSES_PER_LITER = 450.0; // Hệ số xung thực nghiệm
float fuelPrice = 16500.0;             // Giá xăng (VND/lít)
float targetMoney = 0;                 // Số tiền khách cài đặt
float currentMoney = 0;
float currentLiters = 0;
bool isPumping = false;

void setup() {
  pinMode(2, INPUT_PULLUP);            // Chân ngắt INT0 nối kênh A của Encoder
  pinMode(8, OUTPUT);                  // Chân điều khiển Relay bơm
  digitalWrite(8, LOW);
  attachInterrupt(digitalPinToInterrupt(2), countPulseISR, RISING);
}

void countPulseISR() {
  if (isPumping) {
    pulseCount++;
    currentLiters = (float)pulseCount / PULSES_PER_LITER;
    currentMoney = currentLiters * fuelPrice;
    
    // Ngắt bơm chính xác khi đạt hạn mức tiền cài đặt
    if (currentMoney >= targetMoney) {
      digitalWrite(8, LOW);            // Ngắt Relay bơm tức thì
      isPumping = false;
    }
  }
}

Tại vi điều khiển Master (Arduino Mega), Web Server lắng nghe các kết nối trên cổng 80 (HTTP) và bóc tách các tham số cấu hình giá hoặc lệnh điều khiển thiết bị:

// Xử lý gói tin HTTP GET cập nhật giá xăng từ giao diện Web
void handleClientRequest(EthernetClient& client, String request) {
  if (request.indexOf("GET /setprice?pump=1&price=") >= 0) {
    int startIndex = request.indexOf("price=") + 6;
    int endIndex = request.indexOf(" HTTP/1.1");
    String newPriceStr = request.substring(startIndex, endIndex);
    long newPrice = newPriceStr.toInt();
    
    updatePriceOnSD(1, newPrice);      // Ghi giá mới vào thẻ MicroSD
    sendUARTToSlave(1, 0x02, newPrice);// Đồng bộ giá mới xuống trụ bơm Uno
    
    client.println("HTTP/1.1 200 OK");
    client.println("Content-Type: text/html\r\n\r\n");
    client.println("<h1>Cap nhat gia thanh cong!</h1>");
  }
}

Giao thức giao tiếp giữa Master và Slave được chuẩn hóa theo khung truyền 6 byte: [0xAA (Header)] [0x01 (Pump ID)] [Command] [Data MSB] [Data LSB] [0x55 (Tail)] Đảm bảo khả năng kiểm tra tính toàn vẹn dữ liệu và chống treo đường truyền UART.

Testing và validation

Hệ thống đã trải qua các đợt kiểm thử với thông số kỹ thuật đo lường thực tế:

  • Độ nhạy đọc thẻ RFID RC522: Khoảng cách nhận diện ổn định từ 0 đến 45 mm, thời gian đáp ứng trung bình 18.2 ms từ lúc quẹt thẻ đến khi nhận dạng thành công UID.
  • Độ chính xác đo thể tích: Thử nghiệm bơm 10 lượt mẫu ở các mức 1 lít, 2 lít và 5 lít. Dung tích thực tế đo bằng bình chuẩn dung tích chuẩn xác đạt độ sai lệch trung bình $\pm 4.2 \text{ ml}$ trên 1 lít xăng (sai số tương đối $0.42%$, đạt tiêu chuẩn đo lường thử nghiệm).
  • Phản hồi cảnh báo môi trường: Khi nồng độ khói/gas mô phỏng vượt ngưỡng 350 ppm trên cảm biến MQ-2, còi báo động kích hoạt sau $140\text{ ms}$, đồng thời Web Server chuyển trạng thái cảnh báo đỏ trên giao diện người dùng sau $320\text{ ms}$.
  • Hiệu năng Web Server W5100: Thời gian phản hồi trang HTML quản trị đạt $280\text{ ms}$ trong mạng nội bộ, phục vụ ổn định 3 người dùng truy cập thống kê cùng lúc mà không xảy ra hiện tượng treo vi điều khiển Mega.

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

Hạng mục chức năng Kế hoạch ban đầu Kết quả thực nghiệm Đánh giá
Nhận diện & Thanh toán Thẻ Mifare S50 Đọc/trừ tiền thẻ trong 25 ms Hoàn thành $100%$
Cơ cấu đo đếm lưu lượng Bắt xung Encoder Sai số thể tích $< 0.5%$ Hoàn thành $100%$
Hiển thị tại chỗ LED 7 đoạn + LCD 16x2 Hiển thị đồng thời Lít, Tiền, Đơn giá Hoàn thành $100%$
Lưu trữ & Thống kê Ghi thẻ nhớ SD Lưu 10,000+ giao dịch theo ngày/tháng Hoàn thành $100%$
Quản trị Web Server Xem log, đổi giá xăng Đồng bộ giá xuống trụ bơm $< 1$s Hoàn thành $100%$
An toàn môi trường Báo động Gas/Nhiệt độ Kích hoạt chuông + hiển thị Web Hoàn thành $100%$

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

  1. Kiến trúc nhúng Master-Slave phân tán chi phí thấp: Thay vì sử dụng máy tính nhúng đắt tiền (Industrial PC) hay PLC công nghiệp, hệ thống phối hợp vi điều khiển ATmega328P và ATmega2560 giúp giảm giá thành phần cứng xuống dưới 3 triệu đồng cho toàn bộ bo mạch điều khiển trung tâm.
  2. Cơ chế tài khoản trả trước độc lập (Closed-loop Pre-paid): Khách hàng mở tài khoản nạp tiền trực tiếp tại trạm thông qua UID thẻ Mifare. Giải pháp này giúp người dân không cần sở hữu thẻ ngân hàng vẫn có thể tự phục vụ 24/7, loại bỏ hoàn toàn phí giao dịch cổng thanh toán quốc tế.
  3. Tích hợp cảm biến an toàn chủ động liên tục: Hầu hết các trụ bơm hiện nay không giám sát nồng độ khí cháy tại chỗ. Việc kết hợp MQ-2 và DHT11 cho phép phát hiện sớm rò rỉ bồn chứa ngay từ nồng độ 200 ppm, tự động ngắt nguồn bơm và phát tín hiệu cảnh báo về trung tâm điều hành.

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

Kịch bản triển khai thực tế

  • Trạm xăng nội bộ doanh nghiệp vận tải: Cấp phát thẻ RFID cho từng tài xế xe tải/container. Khi bơm nhiên liệu, hệ thống tự động ghi nhận lượng dầu nạp cho từng đầu xe, biển số và thời gian, ngăn chặn thất thoát nhiên liệu nội bộ mà không cần bố trí nhân viên ghi sổ.
  • Trạm xăng tự phục vụ vùng sâu, vùng xa: Mô hình tự động 24/7 giúp các doanh nghiệp kinh doanh xăng dầu duy trì điểm bán tại các tuyến quốc lộ vắng vẻ vào ban đêm với chi phí vận hành nhân công bằng 0.

Phân tích tài chính & ROI (Return on Investment)

  • Chi phí nâng cấp tự động hóa cho 1 trạm xăng 4 trụ bơm: khoảng 45.000.000 VNĐ (bao gồm mạch điều khiển, đầu đọc RFID công nghiệp, màn hình hiển thị, hạ tầng mạng LAN).
  • Tiết kiệm chi phí nhân công: Giảm 2 nhân viên trực ca đêm/ngày $\rightarrow$ Tiết kiệm $2 \times 6.500.000 = 13.000.000\text{ VNĐ/tháng}$.
  • Thời gian hoàn vốn (ROI): $\frac{45.000.000}{13.000.000} \approx 3.5\text{ tháng}$.

Lộ trình triển khai 4 giai đoạn

Khảo sát trạm thực tế         Đóng vỏ chuẩn IP65            Thử nghiệm nội bộ             Vận hành thương mại
& Thiết kế PCB công nghiệp    & Cách ly chống cháy nổ        tại trạm xe buýt/vận tải      & Triển khai diện rộng

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

Hạn chế kỹ thuật

  • Module Ethernet W5100 bị giới hạn phần cứng ở 4 kết nối socket đồng thời, dễ bị nghẽn nếu nhiều máy trạm cùng truy xuất báo cáo thống kê phức tạp.
  • Dữ liệu lưu trên thẻ SD dưới dạng tệp văn bản (.txt) tuần tự, tốc độ truy vấn thống kê sẽ giảm khi số lượng bản ghi vượt quá 50,000 dòng.
  • Chưa có chuẩn đóng gói chống cháy nổ công nghiệp (như chuẩn Ex-d hoặc Ex-ia) cho các linh kiện điện tử hoạt động trong vùng nguy hiểm nhóm Zone 0/Zone 1.

Hướng phát triển

  • Nâng cấp vi điều khiển Master lên ESP32 hoặc STM32F4 để tích hợp kết nối Wi-Fi/4G LTE và chuẩn giao tiếp bảo mật HTTPS/TLS 1.3.
  • Chuyển đổi kiến trúc dữ liệu sang giao thức MQTT kết nối cơ sở dữ liệu đám mây (Cloud Database MySQL/PostgreSQL), xây dựng ứng dụng di động cho khách hàng tự nạp tiền qua mã QR (VietQR/Napas247).
  • Tích hợp camera AI nhận diện biển số xe (ANPR) tự động đối chiếu với thẻ RFID nhằm nâng cao bảo mật chống trộm cắp.

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

  • Sinh viên & Giảng viên kỹ thuật: Nguồn tài liệu thực hành hoàn chỉnh về xử lý ngắt thời gian thực, giao tiếp liên vi điều khiển Master-Slave qua UART, ghép nối IC ghi dịch 74HC595 và xây dựng Web Server nhúng.
  • Kỹ sư nhúng & Nhà phát triển IoT: Mẫu thiết kế tham khảo ứng dụng công nghệ RFID Mifare S50 và giao thức điều khiển đóng cắt công suất an toàn trong môi trường chất lỏng.
  • Doanh nghiệp kinh doanh bán lẻ xăng dầu: Giải pháp cắt giảm $50-70%$ chi phí nhân công vận hành, minh bạch hóa dữ liệu doanh thu và loại bỏ triệt để thất thoát tiền mặt.
  • Khách hàng tiêu dùng: Trải nghiệm dịch vụ bơm xăng hiện đại, nhanh chóng, chủ động kiểm soát chính xác lượng nhiên liệu và số tiền thanh toán.

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

1. Yêu cầu kỹ thuật phần cứng tối thiểu để triển khai hệ thống là gì?

Hệ thống yêu cầu 01 bo mạch điều khiển Master (Arduino Mega 2560 hoặc tương đương), 01 module mạng W5100, 01 module thời gian thực DS1307, module thẻ nhớ MicroSD, và mỗi trụ bơm cần 01 bo Slave (Arduino Uno R3), 01 đầu đọc RC522, 01 bàn phím ma trận 4x4, 01 bộ đĩa xung quang học (Encoder), cụm hiển thị LED 7 đoạn điều khiển qua IC 74HC595 cùng bộ nguồn cách ly 12V/5V DC 3A.

2. Giới hạn lưu lượng và khả năng mở rộng trụ bơm của hệ thống như thế nào?

Kiến trúc Master Arduino Mega hỗ trợ mở rộng tối đa 4 trụ bơm tương ứng với 4 cổng UART phần cứng (Serial0 đến Serial3). Tần số đáp ứng ngắt của Arduino Uno R3 đạt tối đa $20\text{ kHz}$, hoàn toàn đáp ứng các dòng đồng hồ đo lưu lượng xăng dầu có tốc độ dòng chảy lên đến $60-80\text{ lít/phút}$.

3. Hệ thống xử lý thế nào khi xảy ra sự cố mất điện trong lúc đang bơm?

Ngay trong chu kỳ đếm xung, vi điều khiển Slave liên tục lưu trạng thái giao dịch vào bộ nhớ RAM tĩnh. Khi mất điện, van điện từ lập tức đóng cơ học chống chảy tràn xăng. Khi có điện trở lại, hệ thống đọc log chưa hoàn tất từ thẻ nhớ SD và hoàn trả tiền thừa tương ứng số lít chưa bơm vào tài khoản thẻ của khách hàng.

4. Chi phí bảo trì và độ bền của linh kiện ra sao?

Thẻ RFID Mifare S50 có độ bền lưu trữ dữ liệu trên 10 năm và khả năng ghi đè lên đến 100,000 lần. Đầu đọc RC522 là thiết bị cảm ứng không tiếp xúc nên không bị mài mòn cơ học. Chi phí bảo trì định kỳ ước tính dưới 500,000 VNĐ/năm cho việc vệ sinh cảm biến và kiểm tra cáp truyền thông.

5. Có thể nâng cấp hệ thống để chấp nhận quét mã VietQR trên điện thoại không?

Hoàn toàn khả thi. Bằng cách thay thế module Master sang ESP32 và tích hợp màn hình màu TFT/OLED để hiển thị Dynamic QR Code theo chuẩn EMVCo, hệ thống có thể kết nối API Webhook ngân hàng để xác nhận thanh toán trực tuyến trong vòng $1-2\text{ giây}$.

Kết luận

Đồ án "Thiết kế trạm xăng thông minh dùng Arduino" đã hiện thực hóa thành công một giải pháp tự động hóa bán lẻ xăng dầu hoàn chỉnh, tích hợp liên ngành giữa Kỹ thuật Vi điều khiển, Công nghệ Nhận dạng RFID, Cảm biến Đo lường và Mạng truyền thông Web Server nhúng.

Với sai số định lượng đạt dưới $0.5%$, thời gian xử lý giao dịch giảm xuống chỉ còn $15-20\text{ giây}$ và chi phí phần cứng tối ưu, đề tài không chỉ khẳng định tính khả thi vượt trội trong nghiên cứu ứng dụng mà còn mở ra hướng tiếp cận thực tiễn trong việc hiện đại hóa hạ tầng phân phối năng lượng tại Việt Nam theo hướng văn minh, an toàn và tiết kiệm năng lượng.