Giới thiệu dự án

Bệnh Dại (Rabies) là bệnh truyền nhiễm virus nguy hiểm lây từ động vật sang người qua vết cắn, cào. Theo thống kê dịch tễ học của Cục Thú y và Bộ Y tế, mỗi năm Việt Nam ghi nhận hàng chục ca tử vong do bệnh Dại, phần lớn xuất phát từ đàn chó mèo thả rông chưa được quản lý tiêm phòng triệt để.

Thực trạng quản lý tiêm chủng thú cưng hiện nay còn phụ thuộc nặng nề vào sổ theo dõi bằng giấy hoặc trí nhớ của chủ nuôi. Điều này dẫn đến tình trạng trễ lịch tiêm nhắc lại, thất lạc hồ sơ dịch tễ và không thể xác định tình trạng miễn dịch của thú cưng khi xảy ra sự cố cắn người hoặc khi lực lượng chức năng kiểm tra động vật thả rông ngoài đô thị.

Đề tài "Xây dựng hệ thống quản lý tiêm ngừa chó mèo" (Ngành Công nghệ Kỹ thuật Điện tử Truyền thông - Đại học Sư phạm Kỹ thuật TP.HCM) được nghiên cứu và chế tạo nhằm tự động hóa hoàn toàn quy trình nhận diện, đồng bộ dữ liệu dịch tễ và giám sát tiêm chủng vật nuôi theo thời gian thực.

+-------------------------------------------------------------------------+
|                          MỤC TIÊU CỐT LÕI                               |
+-------------------------------------------------------------------------+
| 1. Thiết kế phần cứng trạm cố định (NodeMCU ESP8266 + RFID RC522).     |
| 2. Thiết kế thiết bị cầm tay cho đội đô thị (Arduino Uno + HC-05).      |
| 3. Tích hợp Cloud Database Serverless trên nền tảng Google Sheets API.  |
| 4. Xây dựng ứng dụng di động Android phân quyền (Bác sĩ & Chủ nuôi).    |
+-------------------------------------------------------------------------+

Giải pháp sử dụng công nghệ nhận dạng qua sóng vô tuyến RFID tần số 13.56 MHz kết hợp kiến trúc IoT truyền dữ liệu kép (Wi-Fi 802.11 b/g/n và Bluetooth 2.0+EDR) giúp tối ưu hóa chi phí phần cứng, dễ dàng triển khai mà không đòi hỏi hạ tầng máy chủ phức tạp.

  • Phạm vi áp dụng: Quản lý tiêm phòng vaccine dại và dịch tễ cho chó, mèo tại các phòng khám thú y và hiện trường đô thị.
  • Giới hạn kỹ thuật: Thẻ RFID thụ động tần số cao (HF) cự ly đọc 0–60 mm; ứng dụng di động vận hành trên nền tảng Android SDK.

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

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

Phương pháp quản lý tiêm ngừa truyền thống bộc lộ nhiều điểm nghẽn nghiêm trọng khi so sánh với các giải pháp công nghệ hiện đại.

Tiêu chí Sổ tiêm chủng giấy Microchip cấy dưới da (ISO 11784/85) Hệ thống IoT RFID đề xuất
Chi phí đầu tư Rất thấp (< 5.000 VNĐ) Rất cao (300.000 - 600.000 VNĐ/con) Thấp (15.000 - 25.000 VNĐ/thẻ)
Xâm lấn động vật Không Có (cấy kim tiêm dưới da) Không (gắn vòng cổ/thẻ đeo)
Đồng bộ dữ liệu Không có (cục bộ) Cơ sở dữ liệu chuyên dụng đóng Real-time Cloud Database mở
Truy xuất hiện trường Thủ công, dễ rách/mất Đầu đọc chuyên dụng đắt tiền Smartphone Android + Bluetooth
Cảnh báo lịch tiêm Thủ công Qua tin nhắn SMS trả phí Tự động qua ứng dụng di động

Phân tích yêu cầu chức năng theo phương pháp MoSCoW:

  • Must have: Đọc định danh duy nhất (UID) từ thẻ RFID Mifare 1K; đồng bộ bản ghi tiêm chủng lên Google Sheets; hiển thị thông tin hồ sơ bệnh án qua Android App.
  • Should have: Phân hệ cầm tay di động có nguồn pin 18650 tích hợp; màn hình LCD 1602 hiển thị trạng thái offline.
  • Could have: Cảnh báo tự động đẩy qua notification khi sắp đến hạn tiêm nhắc lại.
  • Won't have (lần này): Định vị toàn cầu GPS theo thời gian thực cho thú cưng.

Thiết kế hệ thống

Hệ thống được chia thành hai phân hệ phần cứng độc lập kết nối với Cloud Database và Mobile App:

graph TD
    subgraph Tram_Y_Te["Phân hệ Trạm Y Tế Thú Y"]
        Tag1[Thẻ RFID Mifare 1K] -->|13.56 MHz RF| RC522_1[Module RFID RC522]
        RC522_1 -->|SPI Bus| ESP[NodeMCU ESP-12E / ESP8266EX]
        ESP -->|I2C 0x27| LCD1[LCD 1602 + PCF8574]
        ESP -->|HTTPS REST POST/GET| Cloud[Google Sheets API / Apps Script]
    end

    subgraph Doi_Kiem_Tra["Phân hệ Cầm Tay Đội Đô Thị"]
        Tag2[Thẻ RFID Mifare 1K] -->|13.56 MHz RF| RC522_2[Module RFID RC522]
        RC522_2 -->|SPI Bus| Uno[MCU ATmega328P / Arduino Uno R3]
        Uno -->|I2C| LCD2[LCD 1602 Display]
        Uno -->|UART 9600 bps| HC05[Module Bluetooth HC-05]
        Power[Pin 18650 3.7V + Booster 5V] --> Uno
    end

    HC05 -->|RFCOMM Bluetooth| AppDoc[Android App: Đội Đô Thị]
    Cloud <-->|JSON Payload| AppVet[Android App: Bác Sĩ & Chủ Nuôi]
    Cloud <-->|Web View| PC[Giao diện Quản trị Desktop]

Technology Stack và Phần cứng:

  • Khối xử lý trung tâm trạm cố định: NodeMCU ESP-12E (SoC ESP8266EX Tensilica L106 32-bit, Flash 4MB, Wi-Fi 2.4 GHz 802.11 b/g/n).
  • Khối xử lý trạm di động: Arduino Uno R3 (Vi điều khiển Microchip ATmega328P 8-bit, 16 MHz, 32KB Flash, 2KB SRAM).
  • Khối đọc thẻ: RFID-RC522 (NXP MFRC522 IC, Tần số 13.56 MHz, giao tiếp chuẩn SPI Bus, tốc độ truyền 10 Mbps).
  • Khối truyền thông không dây di động: Module Bluetooth HC-05 (Chuẩn Bluetooth v2.0+EDR, Baudrate UART 9600 bps).
  • Khối hiển thị: Màn hình LCD 1602 kết hợp module mở rộng I2C chip PCF8574T (địa chỉ I2C 0x27).
  • Hệ thống nguồn di động: 01 Cell Pin Li-ion 18650 dung lượng 4200 mAh 3.7V tích hợp mạch tăng áp DC-DC Booster 5V/2A và mạch bảo vệ sạc/xả BMS TP4056.

Thiết kế Database & API:

Dữ liệu lưu trữ trên Google Spreadsheets được chuẩn hóa thành các trường: [ID_The_UID, Ten_Vat_Nuoi, Loai_Giong, Ngay_Sinh, Ten_Chu_Ho, Dia_Chi, So_Dien_Thoai, Ngay_Tiem_Phong, Ngay_Het_Han, Loai_Vaccine, Bac_Si_Phu_Trach].

Giao thức truyền thông qua Google Apps Script Web App trung gian xử lý các Request:

  • action=additem: Thực hiện ghi bản ghi mới vào cơ sở dữ liệu.
  • action=read: Trích xuất toàn bộ dữ liệu bảng tính thành chuỗi JSON mảng phục vụ App Android parse dữ liệu.
  • action=search&uid=...: Truy vấn trực tiếp thông tin vật nuôi theo thẻ UID.

Methodology

Dự án áp dụng mô hình phát triển linh hoạt (Agile-based Prototyping) trong thời gian 15 tuần:

  • Tuần 1–4: Khảo sát nhu cầu thực tế, tính toán công suất tải và phân tích linh kiện.
  • Tuần 5–8: Thiết kế sơ đồ nguyên lý (Schematic), layout mạch in PCB trên Altium Designer và thi công mạch ủi/rửa thủ công.
  • Tuần 9–11: Xây dựng Firmware (C/C++), Backend Apps Script và App Android (Java).
  • Tuần 12–15: Đóng gói vỏ hộp mica bảo vệ, thử nghiệm thực nghiệm tải thực tế và viết tài liệu.

Implementation và kết quả

Development process

1. Firmware đọc UID và truyền nhận dữ liệu qua giao thức SPI / HTTP POST

Trên module NodeMCU ESP8266, thư viện MFRC522.hESP8266HTTPClient.h được sử dụng để trích xuất UID thẻ và đẩy trực tiếp lên Cloud Web App:

#include <SPI.h>
#include <MFRC522.h>
#include <ESP8266WiFi.h>
#include <ESP8266HTTPClient.h>

#define SS_PIN  D2   // SDA trên RC522 kết nối GPIO4
#define RST_PIN D1   // RST trên RC522 kết nối GPIO5

MFRC522 mfrc522(SS_PIN, RST_PIN);
const char* ssid = "Tram_Thu_Y_WiFi";
const char* password = "SecurePassword123";
String scriptURL = "https://script.google.com/macros/s/AKfycbx.../exec";

void setup() {
  Serial.begin(115200);
  SPI.begin();               // Khởi tạo SPI Bus (SCK:D5, MISO:D6, MOSI:D7)
  mfrc522.PCD_Init();        // Khởi tạo module NXP RC522
  WiFi.begin(ssid, password);
  while (WiFi.status() != WL_CONNECTED) { delay(500); }
}

void loop() {
  if (!mfrc522.PICC_IsNewCardPresent() || !mfrc522.PICC_ReadCardSerial()) return;
  
  String uidStr = "";
  for (byte i = 0; i < mfrc522.uid.size; i++) {
    uidStr += String(mfrc522.uid.uidByte[i] < 0x10 ? "0" : "");
    uidStr += String(mfrc522.uid.uidByte[i], HEX);
  }
  uidStr.toUpperCase();
  
  // Gửi HTTPS GET/POST Request lên Google Apps Script
  if (WiFi.status() == WL_CONNECTED) {
    WiFiClientSecure client;
    client.setInsecure(); // Bỏ qua kiểm tra chứng chỉ SSL cục bộ
    HTTPClient http;
    String fullUrl = scriptURL + "?action=search&uid=" + uidStr;
    http.begin(client, fullUrl);
    int httpCode = http.GET();
    if (httpCode > 0) {
      String payload = http.getString();
      Serial.println("Response Payload: " + payload);
    }
    http.end();
  }
  mfrc522.PICC_HaltA();
  delay(1500); // Tránh đọc lặp thẻ
}

2. Backend Scripting (Google Apps Script)

Xử lý chuỗi JSON và ánh xạ dữ liệu trực tiếp vào Google Sheet:

function doGet(e) {
  var action = e.parameter.action;
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sheet = ss.getSheetByName("DANH_SACH_TIEM");
  
  if (action == "search") {
    var searchUid = e.parameter.uid;
    var data = sheet.getDataRange().getValues();
    for (var i = 1; i < data.length; i++) {
      if (data[i][0].toString().trim() == searchUid.toString().trim()) {
        var result = {
          uid: data[i][0],
          petName: data[i][1],
          ownerName: data[i][4],
          phone: data[i][6],
          vaccineDate: data[i][7],
          expireDate: data[i][8]
        };
        return ContentService.createTextOutput(JSON.stringify(result))
                             .setMimeType(ContentService.MimeType.JSON);
      }
    }
    return ContentService.createTextOutput(JSON.stringify({status: "NOT_FOUND"}))
                         .setMimeType(ContentService.MimeType.JSON);
  }
}

3. Phân tích chuỗi JSON trên Android App (Java)

Ứng dụng di động nhận payload phản hồi, phân tách các cặp key:value để hiển thị trực quan lên giao diện:

private void parsePetData(String jsonString) {
    try {
        JSONObject obj = new JSONObject(jsonString);
        if (obj.has("status") && obj.getString("status").equals("NOT_FOUND")) {
            tvStatus.setText("Vật nuôi chưa đăng ký tiêm phòng!");
            tvStatus.setTextColor(Color.RED);
            return;
        }
        txtPetName.setText(obj.getString("petName"));
        txtOwner.setText(obj.getString("ownerName"));
        txtPhone.setText(obj.getString("phone"));
        txtVaccineDate.setText(obj.getString("vaccineDate"));
        txtExpireDate.setText(obj.getString("expireDate"));
        tvStatus.setText("Đã tiêm phòng hợp lệ");
        tvStatus.setTextColor(Color.GREEN);
    } catch (JSONException e) {
        e.printStackTrace();
    }
}

Testing và validation

Hệ thống đã trải qua quá trình đo kiểm tải điện năng và hiệu năng truyền thông thực tế:

+--------------------------------------------------------------------------+
|            BẢNG THỐNG KÊ TIÊU THỤ NĂNG LƯỢNG HỆ THỐNG DI ĐỘNG            |
+--------------------------------------------------------------------------+
| STT | Khối linh kiện         | Điện áp (VDC) | Dòng hoạt động (mA)       |
+-----+------------------------+---------------+---------------------------+
|  1  | Arduino Uno R3         |      5.0      |          30.0 mA          |
|  2  | Module Bluetooth HC-05 |      5.0      | 30.0 mA (Pair) / 8.0 mA   |
|  3  | Màn hình LCD 1602 + I2C|      5.0      |          22.6 mA          |
|  4  | Module RFID RC522      |      3.3      |          26.0 mA          |
+-----+------------------------+---------------+---------------------------+
| TỔNG TIÊU THỤ DANH ĐỊNH      |               |          86.6 mA          |
| THỜI LƯỢNG PIN 18650 4200mAh | Lý thuyết     |     ~48.5 giờ liên tục    |
+--------------------------------------------------------------------------+
  • Kiểm thử cự ly nhận diện RFID: Đạt hiệu suất 100% trong khoảng cách $0 \text{ mm} \le d \le 45 \text{ mm}$. Khi cự ly $d > 55 \text{ mm}$, độ suy hao sóng làm xác suất đọc giảm xuống dưới 30%.
  • Độ trễ đồng bộ Cloud (Latency): Thời gian trung bình từ khi quét thẻ đến khi cập nhật hoàn tất trên Google Sheets qua mạng Wi-Fi trung bình đạt $420 \text{ ms} \pm 50 \text{ ms}$.
  • Độ trễ truyền Bluetooth tới Mobile: Đạt $85 \text{ ms}$, phản hồi tức thời tại hiện trường.

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

Hệ thống đã được đóng gói thành hai thiết bị hoàn chỉnh trong hộp bảo vệ mica cách điện:

  1. Trạm y tế cố định: Tích hợp bộ đọc RC522, NodeMCU ESP8266, màn hình LCD 1602 hiển thị UID và trạng thái kết nối Cloud, cấp nguồn liên tục qua Adapter 5V-1A.
  2. Thiết bị tuần tra cầm tay: Tích hợp Arduino Uno, HC-05 Bluetooth, RC522, LCD 1602, công tắc nguồn và cell pin Li-ion sạc lại, nhỏ gọn dễ dàng thao tác bằng một tay.
  3. Phần mềm: Hoàn thiện 02 giao diện ứng dụng Android (dành cho quản lý/bác sĩ và dành cho đội kiểm tra đô thị).

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

  • Kiến trúc Serverless không chi phí vận hành: Việc sử dụng Google Apps Script kết hợp Google Sheets làm Cloud Database giúp loại bỏ hoàn toàn chi phí thuê máy chủ (Server Hosting / VPS), giúp các trạm thú y cấp phường/xã dễ dàng ứng dụng mà không phát sinh chi phí duy trì hàng tháng.
  • Mô hình tác chiến kép (Dual-System Deployment): Tách biệt rõ ràng giữa module trạm cố định (cần thông lượng dữ liệu lớn qua Wi-Fi) và module tuần tra di động (tối ưu hóa năng lượng tiêu thụ $86.6 \text{ mA}$ qua Bluetooth và Pin sạc).
  • Khả năng minh bạch hóa dịch tễ đô thị: Cung cấp công cụ số hóa giúp cơ quan quản lý đô thị tra cứu tức thì nguồn gốc, tình trạng tiêm dại của thú cưng chỉ trong 1 giây quét thẻ, giảm thiểu tối đa tranh chấp và nguy cơ dịch bùng phát.

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

Kịch bản ứng dụng thực tế

[Bệnh viện / Trạm Thú y] 
  ──(Tiêm vaccine & cấp thẻ RFID)──> [Thú cưng gắn thẻ trên vòng cổ]
                                                  │
                ┌─────────────────────────────────┴─────────────────────────────────┐
                ▼                                                                   ▼
     [Tình huống: Tái khám định kỳ]                                    [Tình huống: Tuần tra đô thị]
  - Đặt thẻ lên trạm đọc cố định                                     - Đội tuần tra dùng máy quét cầm tay
  - NodeMCU tự đồng bộ Google Sheet                                  - Dữ liệu bắn qua Bluetooth tới Android
  - Bác sĩ cập nhật đơn thuốc/mũi tiêm                               - Xác định ngay: Có chủ hay vô chủ / Đã tiêm hay chưa

Kế hoạch và Lộ trình triển khai (Roadmap)

  • Giai đoạn 1 (Ngắn hạn): Thử nghiệm tại 5 phòng khám thú y tư nhân và 1 đội quản lý đô thị quận; đánh giá độ bền của thẻ Mifare gắn trên vòng cổ thú cưng.
  • Giai đoạn 2 (Trung hạn): Nâng cấp module quét sang chuẩn RFID UHF (Ultra-High Frequency 860–960 MHz) để tăng cự ly nhận diện lên $1 - 3 \text{ m}$, giúp nhận diện từ xa không cần áp sát con vật.
  • Giai đoạn 3 (Dài hạn): Xây dựng cổng thông tin dịch tễ liên quận, tích hợp hệ thống thông báo đẩy (Push Notification) tự động nhắc lịch tiêm qua Zalo OA / SMS Brandname.

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

Hạn chế kỹ thuật

  • Chuẩn RFID HF 13.56 MHz có cự ly nhận diện tương đối ngắn ($< 60 \text{ mm}$), đòi hỏi cán bộ kiểm tra phải tiếp cận gần động vật, có thể gặp khó khăn đối với động vật hung dữ.
  • Google Sheets giới hạn số lượng request đồng thời (Quota API hạn chế nếu mở rộng quy mô toàn quốc với hàng triệu bản ghi truy vấn mỗi phút).
  • Thẻ RFID dạng thẻ treo vòng cổ có nguy cơ bị rơi hoặc cố ý tháo rời so với dạng microchip cấy sinh học.

Hướng phát triển

  1. Nâng cấp phần cứng: Ứng dụng thẻ cấy sinh học dưới da chuẩn FDX-B (134.2 kHz) hoặc thẻ tầm xa UHF.
  2. Backend Chuyên nghiệp: Chuyển đổi từ Google Sheets sang cơ sở dữ liệu chuyên dụng như PostgreSQL / MongoDB kết hợp kiến trúc Cloud Docker Container (AWS/GCP).
  3. Bảo mật mã hóa: Ứng dụng công nghệ mã hóa khối Crypto1 hoặc AES-128 bit trên các sector nhớ của thẻ Mifare để chống sao chép, làm giả thẻ tiêm chủng.

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

  • Chủ vật nuôi: Không lo quên lịch tiêm phòng, bảo vệ thú cưng an toàn và tránh nguy cơ bị xử phạt hành chính khi dắt thú cưng ra nơi công cộng.
  • Bác sĩ thú y / Phòng khám: Rút ngắn thời gian tra cứu hồ sơ bệnh án từ 5 phút xuống còn 1 giây; tối ưu hóa quy trình quản lý dược phẩm và lịch sử điều trị.
  • Cơ quan quản lý Đô thị / Chi cục Thú y: Kiểm soát tỷ lệ tiêm chủng bệnh dại toàn diện, số hóa dữ liệu vật nuôi trên địa bàn, có căn cứ xử lý chính xác các trường hợp động vật thả rông.
  • Sinh viên & Kỹ sư nghiên cứu: Cung cấp tài liệu tham khảo thực tế về việc kết hợp vi điều khiển nhúng (ESP8266/ATmega328P), giao tiếp bus công nghiệp (SPI/I2C/UART) và ứng dụng Serverless trong các bài toán IoT y tế - nông nghiệp.

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

1. Chi phí chế tạo trọn bộ phần cứng hệ thống là bao nhiêu?

Tổng chi phí phần cứng cho cả trạm cố định và thiết bị di động cầm tay chỉ dao động khoảng $450.000 - 600.000 \text{ VNĐ}$, rẻ hơn nhiều lần so với các hệ thống quét microchip công nghiệp nhập khẩu.

2. Nếu khu vực kiểm tra không có Wi-Fi thì thiết bị cầm tay có hoạt động được không?

Có. Phân hệ di động của đội tuần tra sử dụng kết nối Bluetooth trực tiếp giữa board mạch Arduino và điện thoại Android. Điện thoại chỉ cần bật kết nối mạng 3G/4G/5G để tra cứu dữ liệu Cloud, không phụ thuộc vào Wi-Fi cố định.

3. Dữ liệu trên Google Sheets có đảm bảo tính an toàn và bảo mật không?

Hệ thống sử dụng cơ chế bảo mật OAuth 2.0 và khóa phân quyền Web App của Google. Chỉ các tài khoản được ủy quyền qua mã token trong ứng dụng Android mới có quyền gửi truy vấn hoặc chỉnh sửa cơ sở dữ liệu.

4. Thẻ RFID gắn trên cổ chó mèo có bị hỏng khi gặp nước hoặc va đập không?

Thẻ RFID Mifare được đúc kín bằng nhựa ABS chống nước chuẩn IP67, chịu được va đập cơ học, bụi bẩn và nhiệt độ môi trường ngoài trời, đảm bảo tuổi thọ trên 5 năm.

5. Hệ thống có thể mở rộng để quản lý các bệnh lý hoặc loài vật nuôi khác không?

Hoàn toàn có thể. Do cấu trúc cơ sở dữ liệu động, người quản trị có thể dễ dàng bổ sung các cột theo dõi vaccine khác (như Care, Parvo, dại) hoặc quản lý gia súc gia cầm bằng cách thay đổi cấu trúc bảng tính mà không cần lập trình lại phần cứng vi điều khiển.


Kết luận

Đồ án tốt nghiệp "Xây dựng hệ thống quản lý tiêm ngừa chó mèo" của sinh viên Trần Ngọc Hùng và Đặng Minh Sang (Trường ĐH Sư phạm Kỹ thuật TP.HCM) đã giải quyết trọn vẹn bài toán số hóa quy trình quản lý tiêm chủng thú y. Bằng cách kết hợp sáng tạo giữa công nghệ RFID, vi điều khiển nhúng và nền tảng đám mây, hệ thống mở ra một hướng tiếp cận chi phí thấp, hiệu quả cao trong công tác phòng chống bệnh dại và xây dựng đô thị văn minh, an toàn.