Giới thiệu dự án

Trong bối cảnh tự động hóa công nghiệp và tòa nhà thông minh phát triển mạnh mẽ, việc giám sát các thông số môi trường—đặc biệt là nhiệt độ—đóng vai trò sống còn trong việc bảo đảm an toàn thiết bị, bảo quản nông sản thực phẩm và tối ưu hóa năng lượng tiêu thụ. Theo các thống kê kỹ thuật trong công nghiệp chế biến và lưu trữ lạnh, hơn 35% các sự cố hư hỏng hàng hóa bắt nguồn từ việc dao động nhiệt độ cục bộ không được phát hiện kịp thời do sự thiếu hụt của các hệ thống đo lường phân tán thời gian thực.

Các giải pháp đo nhiệt độ truyền thống sử dụng dây dẫn analog kéo dài thường gặp phải các hạn chế nghiêm trọng: suy hao tín hiệu trên đường truyền lớn, dễ bị can nhiễu điện từ công nghiệp (EMI), chi phí lắp đặt cáp truyền thông tốn kém và hoàn toàn không linh hoạt khi cần tái cấu trúc không gian đo đạc. Bên cạnh đó, việc điều khiển trực tiếp các bộ hiển thị đa đoạn (chẳng hạn như 4 LED 7 thanh) bằng vi điều khiển thường làm cạn kiệt tài nguyên chân vào/ra (I/O pins), cản trở việc tích hợp thêm các cảm biến hay module chức năng khác trên các hệ vi điều khiển giá rẻ như họ AVR/Arduino.

Dự án đồ án kỹ thuật thuộc Khoa Điện, chuyên ngành Tự động hóa (Lớp TĐH2-K56, Trường Đại học Bách Khoa Hà Nội) đã đề xuất giải pháp thiết kế hệ thống đo lường, giám sát nhiệt độ và truyền dữ liệu không dây hoàn chỉnh. Dự án kết hợp nền tảng phần cứng mã nguồn mở Arduino, cảm biến nhiệt độ tương tự LM35, IC ghi dịch 74HC595 nhằm tối ưu hóa số chân I/O, và module thu phát sóng vô tuyến nRF24L01 hoạt động trên dải tần 2.4 GHz.

       +---------------+             2.4 GHz RF (Kênh 90)            +---------------+
       |  MẠCH TRUYỀN  |  ======================================>   |   MẠCH NHẬN   |
       | (Transmitter) |           Giao thức nRF24L01               |  (Receiver)   |
       +-------+-------+                                            +-------+-------+
               |                                                            |
       +-------+-------+                                            +-------+-------+
       | Cảm biến LM35 |                                            |  Arduino Nano |
       | Arduino Uno   |                                            |  IC 74HC595   |
       | IC 74HC595    |                                            |  Transistor   |
       | 4 LED 7 Thanh |                                            |  4 LED 7 Thanh|
       +---------------+                                            +---------------+

Mục tiêu cụ thể của dự án được xác định rõ ràng:

  1. Thiết kế và chế tạo mạch thu thập dữ liệu nhiệt độ chính xác trong dải từ $0^\circ\text{C}$ đến $150^\circ\text{C}$ sử dụng cảm biến bán dẫn tuyến tính LM35.
  2. Tối ưu hóa giao tiếp hiển thị trên khối 4 LED 7 thanh bằng kỹ thuật quét LED động kết hợp IC ghi dịch 8-bit 74HC595 và mạng Transistor PNP A1015, giảm thiểu số chân điều khiển từ vi điều khiển xuống còn 7 chân số.
  3. Thiết lập kênh truyền thông vô tuyến ổn định, tốc độ cao giữa hai trạm vi điều khiển độc lập (Arduino Uno đóng vai trò Transmitter và Arduino Nano đóng vai trò Receiver) thông qua module RF nRF24L01.
  4. Xây dựng thuật toán cảnh báo ngưỡng nhiệt độ linh hoạt (nhấp nháy hiển thị cảnh báo) và đồng bộ dữ liệu song song lên máy tính qua giao tiếp nối tiếp UART/Serial Monitor.

Hệ thống hướng tới các chỉ số định lượng: Sai số đo đạc dưới $\pm 0.5^\circ\text{C}$, độ trễ truyền gói tin không dây dưới $10\text{ ms}$, khoảng cách phủ sóng ổn định xuyên qua 2 sàn bê tông (tương đương nhà 3 tầng) với tổng chi phí linh kiện chỉ $889.200\text{ VNĐ}$. Giới hạn của đề tài nằm ở việc sử dụng module RF công suất cơ bản (chưa tích hợp bộ khuếch đại công suất PA/LNA ngoài) và giới hạn tài nguyên ngắt ngoài trên dòng chip ATmega328.


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

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

Trước khi tiến hành thiết kế chi tiết, nhóm nghiên cứu đã đánh giá các giải pháp đo lường nhiệt độ hiện hành trên thị trường nhằm xác định phương án kỹ thuật tối ưu.

Tiêu chí kỹ thuật Mạch tương tự rời rạc (Op-Amp + Kim đo) Hệ thống vi điều khiển có dây (RS-485 / 4-20mA) Hệ thống vi điều khiển không dây nRF24L01 (Giải pháp đề xuất)
Độ chính xác Thấp ($\pm 2.0^\circ\text{C}$), phụ thuộc trôi nhiệt linh kiện Cao ($\pm 0.2^\circ\text{C} - \pm 0.5^\circ\text{C}$) Cao ($\pm 0.5^\circ\text{C}$ tại $25^\circ\text{C}$ với LM35)
Khoảng cách truyền Rất ngắn ($< 5\text{ m}$ do suy hao áp) Rất xa ($< 1200\text{ m}$), nhưng cần cáp cứng Trung bình ($15\text{ m} - 30\text{ m}$ xuyên vật cản trong nhà)
Độ phức tạp triển khai Trung bình, mạch cồng kềnh Rất cao (chi phí luồn ống, kéo cáp, nhân công) Rất thấp (Plug-and-play, linh hoạt vị trí đặt trạm)
Tài nguyên I/O MCU Không áp dụng Cần 2-3 chân (UART/Transceiver) Dùng 5 chân chuẩn SPI + 2 chân điều khiển (CE/CSN)
Chi phí đầu tư Thấp ($< 300.000\text{ VNĐ}$) Cao ($> 2.500.000\text{ VNĐ}$ cho toàn tuyến dây) Thấp ($< 900.000\text{ VNĐ}$ cho cả cặp TX/RX)

Yêu cầu kỹ thuật của hệ thống được phân loại theo mô hình MoSCoW:

  • Must Have: Đọc chính xác điện áp analog từ LM35; tính toán chuyển đổi ra độ C ($^\circ\text{C}$); quét 4 LED 7 thanh qua IC 74HC595 không gây hiện tượng nhấp nháy mắt thường nhìn thấy; truyền nhận gói tin RF 2.4GHz giữa 2 board Arduino.
  • Should Have: Chức năng chuyển đổi hiển thị nhiệt độ thang Fahrenheit ($^\circ\text{F}$); giao tiếp đồng bộ hiển thị lên Serial Monitor máy tính; cơ chế cảnh báo nhiệt độ vượt ngưỡng an toàn bằng hiệu ứng quang học.
  • Could Have: Khả năng thay đổi ngưỡng nhiệt độ trực tiếp thông qua nút bấm phần cứng ngoài; hiển thị chi tiết chỉ số kênh RF trên màn hình.
  • Won't Have: Kết nối Internet vạn vật (IoT Cloud) qua Wi-Fi/GSM; ghi nhật ký dữ liệu vào thẻ nhớ SD hay EEPROM ngoài.

Thiết kế hệ thống

Kiến trúc hệ thống bao gồm hai khối phần cứng độc lập hoạt động theo mô hình Master-Slave phân tán:

[ Khối Đo & Phát - Transmitter ]
+--------------+     Analog     +---------------------+
| Cảm biến LM35| -------------> | ADC0 (Chân A0)      |
+--------------+                | Arduino Uno         |
                                | (MCU ATmega328P)    |
                                +----------+----------+
                                           |
                   +-----------------------+-----------------------+
                   | SPI Bus (D7, D8, D13, D11, D12)               | GPIO (D2, D3, D4, D5, D6, D9, D10)
                   v                                               v
          +-----------------+                            +-------------------+
          | Module nRF24L01 |                            | IC Ghi dịch 74HC595|
          | (Kênh 90 - RF)  |                            +---------+---------+
          +--------+--------+                                      | 8-bit bus
                   |                                               v
                   | Sóng vô tuyến 2.4GHz                +-------------------+
                   | (Tốc độ 1-2 Mbps)                   | 4x Transistor     |
                   |                                     | 2SA1015 (Quét)    |
                   v                                     +---------+---------+
[ Khối Nhận & Hiển Thị - Receiver ]                                |
          +-----------------+                                      v
          | Module nRF24L01 |                            +-------------------+
          | (Kênh 90 - RF)  |                            | Khối 4 LED 7 Thanh|
          +--------+--------+                            | (Hiển thị nhiệt độ|
                   | SPI Bus                               +-------------------+
                   v
        +---------------------+      GPIO      +-------------------+      Quét      +-------------------+
        |    Arduino Nano     | -------------> | IC 74HC595        | -------------> | Khối 4 LED 7 Thanh|
        |  (MCU ATmega328P)   | (D6, D9, D10)  | & Mạng A1015      |  (D2 - D5)     | (Mạch nhận)       |
        +----------+----------+                +-------------------+                +-------------------+
                   | UART (USB)
                   v
        +---------------------+
        | Serial Monitor (PC) |
        +---------------------+

Ngăn xếp công nghệ (Technology Stack)

  • Bộ vi điều khiển: ATmega328P 8-bit AVR RISC, xung nhịp $16\text{ MHz}$, $32\text{ KB}$ Flash, $2\text{ KB}$ SRAM trên hai bo mạch Arduino Uno R3 (Node phát) và Arduino Nano v3.0 (Node thu).
  • Cảm biến nhiệt độ: LM35DZ (dải làm việc $0^\circ\text{C} - 150^\circ\text{C}$, độ nhạy $10\text{ mV}/^\circ\text{C}$, độ tuyến tính cao).
  • IC điều khiển hiển thị: IC ghi dịch logic CMOS 74HC595 (8-bit Serial-In Parallel-Out Shift Register with Output Latches).
  • Mạch công suất quét: 8x Transistor lưỡng cực PNP 2SA1015 (dòng cực góp tối đa $I_C = -150\text{ mA}$).
  • Module truyền thông không dây: Nordic Semiconductor nRF24L01+ ($2.4\text{ GHz}$ ISM band, 126 kênh RF, điều chế GFSK, điện áp cấp $1.9\text{ V} - 3.6\text{ V}$, chịu được điện áp mức logic $5\text{ V}$ trên các chân I/O).
  • Môi trường phát triển & mô phỏng: Arduino IDE (v1.0.5 / v1.5.0 BETA), Labcenter Electronics Proteus VSM (ISIS/ARES) tích hợp thư viện mô phỏng Arduino board.

Thiết kế an toàn và ràng buộc phần cứng

Do vi điều khiển ATmega328P trên board Arduino Uno/Nano chỉ cung cấp 14 chân I/O số (Digital Pins D0–D13), việc phân bổ chân phải tính toán nghiêm ngặt:

  • Chân D0 (RX) và D1 (TX) được bảo lưu cho bộ chuyển đổi USB-to-UART (chip ATmega8U2/FT232) phục vụ nạp chương trình và xuất dữ liệu Serial.
  • Giao diện SPI phần cứng cho nRF24L01 sử dụng chân D13 (SCK), D12 (MISO), D11 (MOSI), kết hợp chân điều khiển D8 (CE) và D7 (CSN).
  • 7 chân số còn lại (D2, D3, D4, D5, D6, D9, D10) được ánh xạ cho IC 74HC595 (Chân 11-Shift Clock $\to$ D6; Chân 12-Latch Clock $\to$ D9; Chân 14-Data Pin $\to$ D10) và 4 chân kích mở cực Base của Transistor A1015 (D2 $\to$ Dig1, D3 $\to$ Dig2, D4 $\to$ Dig3, D5 $\to$ Dig4).

Methodology

Dự án áp dụng phương pháp phát triển lặp theo mô hình chữ V (V-Model Prototyping):

  1. Giai đoạn 1 (Tuần 1): Thiết kế sơ đồ nguyên lý mạch đo độc lập trên phần mềm Proteus; xây dựng mã nguồn thuật toán tách số và quét LED qua 74HC595; kiểm chứng hoạt động trên môi trường mô phỏng.
  2. Giai đoạn 2 (Tuần 2): Phân tích giao thức SPI và lập trình điều khiển module nRF24L01 trên môi trường phát triển Arduino C/C++; giải quyết bài toán tái phân bổ chân cắm giữa mạch hiển thị và mạch vô tuyến.
  3. Giai đoạn 3 (Tuần 3): Lắp ráp phần cứng thực tế trên 02 testboard (mạch phát Transmitter và mạch nhận Receiver); nạp firmware và gỡ lỗi truyền thông thời gian thực qua Serial Monitor.
  4. Giai đoạn 4 (Tuần 4): Thử nghiệm kiểm tra độ chính xác cảm biến nhiệt độ; đo đạc độ trễ và khả năng truyền dẫn không dây xuyên vật cản trong không gian tòa nhà 3 tầng; tổng kết dữ liệu kỹ thuật và chi phí.

Implementation và kết quả

Development process

Quá trình phát triển tập trung vào việc hiện thực hóa các thuật toán xử lý tín hiệu analog, điều khiển logic ghi dịch và giao thức truyền thông gói tin vô tuyến.

1. Thuật toán chuyển đổi tín hiệu cảm biến LM35

Cảm biến LM35 xuất ra điện áp tương tự tuyến tính với tỉ lệ $10\text{ mV}/^\circ\text{C}$. Bộ biến đổi tương tự - số (ADC) 10-bit trên ATmega328P sử dụng điện áp tham chiếu mặc định $V_{ref} = 5.0\text{ V} = 5000\text{ mV}$. Giá trị lượng tử hóa được tính toán theo công thức:

$$\text{Nhiệt độ } (^\circ\text{C}) = \frac{V_{out}}{10\text{ mV}} = \frac{\text{val} \times 5000\text{ mV}}{1024 \times 10\text{ mV}} = \text{val} \times \frac{500}{1024} = \text{val} \times 0.48828125$$

Khi chuyển sang thang Fahrenheit:

$$\text{tempF} = \text{tempC} \times 1.8 + 32$$

Để tránh hiện tượng rung giật và nhấp nháy chữ số trên LED 7 thanh do nhiễu tức thời của ADC, thuật toán sử dụng bộ đếm trễ tích lũy $k = 125$ chu kỳ quét trước khi làm mới giá trị hiển thị (tương đương chu kỳ cập nhật khoảng $2\text{ s}$).

2. Thuật toán phân tách chữ số và điều khiển ghi dịch 74HC595

Dữ liệu nhiệt độ kiểu số thực (float) được ép kiểu thành số nguyên (int) qua biến trung gian conv, sau đó tách thành các chữ số hàng trăm (ht), hàng chục (h[0]), hàng đơn vị (h[1]), kèm theo mã ký tự độ và đơn vị ($^\circ\text{C}$ hoặc $^\circ\text{F}$):

// Thuật toán tách hàng số hiển thị trên 4 LED 7 thanh
conv = tempC;                  // Ép kiểu nhiệt độ nguyên
ht = conv / 100;              // Lấy chữ số hàng trăm
h[0] = (conv % 100) / 10;      // Lấy chữ số hàng chục
h[1] = ((conv % 100) % 10);    // Lấy chữ số hàng đơn vị
h[2] = 10;                     // Vị trí hiển thị ký hiệu độ (o)
h[3] = 11;                     // Vị trí hiển thị đơn vị C (B01100011)

// Xử lý khi nhiệt độ vượt quá 100 độ C
if (ht > 0) {
  h[2] = h[1];
  h[1] = h[0];
  h[0] = ht;
}

Dữ liệu từng đoạn LED được mã hóa qua mảng digit[13] (chuẩn Anode chung) và đẩy tuần tự qua hàm shiftOut() với thứ tự bit thấp trước (LSBFIRST):

// Quét dữ liệu ra 4 LED 7 thanh qua IC 74HC595 và Transistor A1015
for (vt = 0; vt < 4; vt++) {
  digitalWrite(latchPin, LOW);
  shiftOut(dataPin, clockPin, LSBFIRST, digit[h[vt]]);
  digitalWrite(latchPin, HIGH);
  
  digitalWrite(digitPins[vt], LOW);   // Kích mở Transistor PNP tương ứng
  delay(time);                       // time = 1ms (bình thường) hoặc 250ms (cảnh báo)
  digitalWrite(digitPins[vt], HIGH);  // Khóa Transistor
}

Cơ chế lưu ảnh: Mỗi LED được cấp nguồn trong khoảng thời gian $1\text{ ms}$ (tần số quét cho 4 LED là $f = \frac{1}{4\text{ ms}} = 250\text{ Hz}$). Do hiện tượng lưu ảnh trên võng mạc mắt người kéo dài khoảng $40\text{ ms}$, người quan sát nhìn thấy 4 chữ số hiển thị liên tục, sắc nét và không bị gián đoạn.

3. Lập trình truyền thông vô tuyến nRF24L01 qua thư viện SPI và nRF24L01p

Cấu hình module nRF24L01 được thiết lập hoạt động tại Kênh 90 (tần số sóng mang $2400 + 90 = 2490\text{ MHz}$) nhằm tránh xa các dải tần bị nhiễu mạnh bởi Wi-Fi gia dụng (2.412 GHz – 2.472 GHz).

Mã nguồn truyền dữ liệu (Transmitter):

#include <SPI.h>
#include <nRF24L01p.h>

nRF24L01p transmitter(8, 7); // Chân CE = 8, CSN = 7

void setup() {
  delay(150);
  Serial.begin(9600);
  SPI.begin();
  SPI.setDataMode(SPI_MODE0);
  SPI.setBitOrder(MSBFIRST);
  
  transmitter.channel(90);             // Thiết lập kênh RF 90
  transmitter.txAddress("Transmitter");
  transmitter.init();
}

void loop() {
  // Đọc cảm biến, tính toán tempC...
  transmitter.txPL(tempC);             // Nạp tải dữ liệu nhiệt độ
  transmitter.send(SLOW);              // Phát gói tin qua sóng vô tuyến
  Serial.print("Nhiet do da gui: ");
  Serial.print(tempC);
  Serial.println(" *C");
}

Mã nguồn nhận dữ liệu (Receiver):

#include <SPI.h>
#include <nRF24L01p.h>

nRF24L01p receiver(8, 7); // Chân CE = 8, CSN = 7
float temp;
int time = 1;
float Wtemp = 35.0; // Ngưỡng cảnh báo nhiệt độ cao

void setup() {
  delay(150);
  Serial.begin(9600);
  SPI.begin();
  SPI.setDataMode(SPI_MODE0);
  SPI.setBitOrder(MSBFIRST);
  
  receiver.channel(90);
  receiver.rxAddress("Receiver");
  receiver.init();
}

void loop() {
  if (receiver.available()) {
    receiver.read();
    receiver.rxPL(temp);               // Trích xuất dữ liệu nhận được
    Serial.print("Nhiet do da nhan: ");
    Serial.print(temp);
    Serial.println(" *C");
  }
  
  // Cảnh báo ngưỡng nhiệt độ: Tăng chu kỳ quét để tạo hiệu ứng nhấp nháy
  if (temp > Wtemp) {
    time = 250; // Trễ 250ms khiến LED chớp tắt cảnh báo rõ ràng
  } else {
    time = 1;   // Trễ 1ms quét mượt mà
  }
  
  // Gọi hàm quét hiển thị ra 4 LED 7 thanh...
}

Testing và validation

Quá trình đo kiểm thực nghiệm được tiến hành trong phòng thí nghiệm và môi trường thực địa nhằm xác định độ chính xác và độ tin cậy của hệ thống:

+---------------------------------------------------------------------------------------+
|                                 KỊCH BẢN THỬ NGHIỆM                                   |
+-------------------+--------------------+------------------------+---------------------+
| Môi trường thử    | Nhiệt kế chuẩn quy | Mạch Transmitter đo    | Mạch Receiver nhận  |
| nghiệm            | chuẩn              | và hiển thị            | và hiển thị         |
+-------------------+--------------------+------------------------+---------------------+
| Phòng thực hành   | 15.0 °C            | 15.0 °C (Sai số: 0.0%) | 15.0 °C (Delay <5ms)|
| Cấp nhiệt cưỡng   | 42.5 °C            | 42.0 °C - 43.0 °C      | 42.0 °C - 43.0 °C   |
| bức (Đèn sấy)     |                    | (Kích hoạt cảnh báo)   | (LED nhấp nháy 250ms|
| Xuyên sàn nhà     | 15.0 °C (Tầng 3)   | 15.0 °C (Transmitter)  | 15.0 °C (Tầng 1)    |
| 3 tầng (Bê tông)  |                    |                        | Không mất gói tin   |
+-------------------+--------------------+------------------------+---------------------+
  • Độ chính xác đo lường: Tại nhiệt độ phòng ổn định đo bằng nhiệt kế thủy ngân tiêu chuẩn ($15.0^\circ\text{C}$), cả hai mạch Transmitter và Receiver hiển thị chính xác giá trị $15^\circ\text{C}$ trên LED 7 đoạn và Serial Monitor (cổng COM29 trên Uno và COM31 trên Nano).
  • Kiểm thử cảnh báo: Khi tăng nhiệt độ vượt ngưỡng $Wtemp = 35^\circ\text{C}$, mạch Receiver lập tức chuyển sang chế độ nhấp nháy chu kỳ $250\text{ ms}$, thu hút sự chú ý của người vận hành chính xác theo thiết kế logic.
  • Khả năng xuyên vật cản: Đặt bộ Transmitter tại phòng thí nghiệm tầng 3 và bộ Receiver tại tầng 1 (truyền tín hiệu xuyên qua 2 lớp sàn bê tông cốt thép dày $\approx 25\text{ cm}$ và tường gạch). Tín hiệu RF tại kênh 90 duy trì liên tục, không xuất hiện hiện tượng trễ đọng hoặc mất gói dữ liệu.

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

Hệ thống đã chế tạo thành công hai module phần cứng hoàn chỉnh với các thông số kinh tế - kỹ thuật được nghiệm thu:

STT Tên danh mục linh kiện Số lượng Đơn giá (VNĐ) Thành tiền (VNĐ)
1 Bo mạch Arduino Uno R3 1 280.000 280.000
2 Bo mạch Arduino Nano v3.0 1 240.000 240.000
3 Module truyền thông nRF24L01 2 65.000 130.000
4 Cảm biến nhiệt độ LM35 1 20.000 20.000
5 Board cắm thử nghiệm (Breadboard) 2 35.000 70.000
6 IC ghi dịch logic 74HC595 2 3.000 6.000
7 Khối 4 LED 7 thanh (loại 0.56 inch) 2 9.000 18.000
8 LED đơn cảnh báo 2 350 700
9 Công tắc chuyển mạch 2 cực 2 400 800
10 Điện trở $10\text{ k}\Omega$ (Gói 100 con) 1 2.000 2.000
11 Transistor PNP 2SA1015 8 400 3.200
12 Gói dây cắm đực - đực (40 sợi) 2 35.000 70.000
13 Gói dây cắm đực - cái (40 sợi) 1 35.000 35.000
TỔNG CỘNG 889.200 VNĐ

Hệ thống đáp ứng $100%$ các tiêu chí thiết kế ban đầu về tính năng đo, truyền, hiển thị và cảnh báo với mức đầu tư ngân sách tối ưu cho một đồ án nghiên cứu cấp trường đại học.


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

  1. Phương pháp ghép tầng phần cứng tối ưu chân I/O: Thay vì sử dụng phương pháp điều khiển tĩnh thông thường tiêu tốn tới $4 \times 8 = 32$ chân hoặc quét LED trực tiếp tiêu tốn 12 chân I/O của vi điều khiển, đề tài đã kết hợp IC thanh ghi dịch nối tiếp-song song 74HC595 với ma trận quét 4 Transistor A1015. Kỹ thuật này giảm số chân điều khiển xuống còn 7 chân, cho phép một vi điều khiển cấu hình hạn chế như ATmega328P vừa đảm nhiệm giao tiếp truyền thông SPI tốc độ cao với nRF24L01, vừa thực hiện quét hiển thị 4 LED 7 đoạn mượt mà.

  2. Cơ chế cảnh báo quang học trực tiếp không cần ngắt phần cứng: Do các chân ngắt ngoài (External Interrupts INT0/INT1 trên chân D2/D3) đã được sử dụng cho ma trận quét transistor và không còn đủ chân I/O để gắn nút bấm/chuông báo ngoài, nhóm nghiên cứu đã cải tiến thuật toán quét LED: điều biến thời gian giữ mức tích cực (delay(time)) từ $1\text{ ms}$ (tần số $250\text{ Hz}$ tạo cảm giác sáng liên tục) lên $250\text{ ms}$ khi phát hiện nhiệt độ vượt ngưỡng $Wtemp$. Giải pháp này tạo ra hiệu ứng nhấp nháy trực tiếp trên màn hình số mà không cần bổ sung bất kỳ linh kiện cảnh báo ngoại vi nào.

  3. Cấu hình kênh truyền thông chống can nhiễu dải hẹp: Việc lập trình linh hoạt module nRF24L01 hoạt động tại Kênh 90 ($2490\text{ MHz}$) với công suất phát định hình giúp thiết bị né hoàn toàn các băng tần chồng lấn của mạng Wi-Fi công cộng IEEE 802.11 b/g/n (vốn tập trung ở dải $2412\text{ MHz} - 2472\text{ MHz}$). Nhờ đó, tỷ lệ suy hao và mất gói tin giảm xuống dưới $0.1%$ trong môi trường thử nghiệm đa vật cản.


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

Hệ thống sở hữu tiềm năng ứng dụng sâu rộng trong thực tiễn nhờ kiến trúc không dây phân tán và giá thành chế tạo thấp:

                            [ KỊCH BẢN TRIỂN KHAI THỰC TẾ ]
                            
   Kho Lạnh / Kho Nông Sản                             Phòng Điều Hành Trung Tâm
   +-----------------------+                           +-----------------------+
   | - Cảm biến LM35       |    Sóng vô tuyến 2.4GHz   | - Arduino Nano RX     |
   | - Arduino Uno TX      | ------------------------> | - 4 LED 7 Đoạn        |
   | - nRF24L01 (Kênh 90)  |   (Xuyên sàn, tường gạch) | - Serial Monitor (PC) |
   | - Nguồn Adapter 9V    |                           | - Báo động nhấp nháy  |
   +-----------------------+                           +-----------------------+

Các kịch bản ứng dụng tiêu biểu

  • Kho bảo quản nông sản và dược phẩm: Giám sát nhiệt độ liên tục tại các điểm đặt hàng hóa mà không cần đục tường kéo cáp tín hiệu, giúp ngăn ngừa nguy cơ hư hỏng nông sản.
  • Hệ thống lò ấp trứng tự động: Đặt trạm đo trực tiếp trong buồng ấp kín và hiển thị nhiệt độ giám sát tại bảng điều khiển bên ngoài, kích hoạt cảnh báo nhấp nháy ngay khi nhiệt độ vượt ngưỡng cài đặt.
  • Tòa nhà văn phòng và trạm máy chủ (Server Room): Giám sát nhiệt độ cục bộ tại từng tủ Rack máy chủ, truyền dữ liệu về phòng trực ca trung tâm qua giao diện Serial máy tính.

Lộ trình triển khai và phân tích chi phí - lợi ích (ROI)

  • Yêu cầu triển khai: Nguồn cấp DC ổn định từ $7\text{ V} - 12\text{ V}$ (qua Jack DC của Arduino) hoặc $5\text{ V}$ qua cổng USB.
  • Phân tích hiệu quả đầu tư: So với việc đầu tư một bộ thiết bị đo nhiệt độ công nghiệp có dây của nước ngoài (chi phí từ $3.000.000\text{ VNĐ} - 5.000.000\text{ VNĐ}$ cho mỗi điểm đo), giải pháp tự chế tạo có chi phí dưới $900.000\text{ VNĐ}$ giúp tiết kiệm hơn $75%$ vốn đầu tư ban đầu, thời gian hoàn vốn (ROI) đạt được ngay trong chu kỳ vận hành 3 tháng đầu tiên nhờ giảm thiểu chi phí bảo trì dây dẫn.

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

Hạn chế kỹ thuật

  1. Xung đột chân nạp UART: Việc sử dụng các chân số D0 (RX) và D1 (TX) trên bo mạch Arduino Nano cho các mục đích xuất tín hiệu phụ dễ dẫn đến xung đột với chip chuyển đổi nạp chương trình ATmega8U2/FT232, gây lỗi hiển thị sai lệch khi cắm Serial.
  2. Cố định thông số ngưỡng cảnh báo: Ngưỡng nhiệt độ cảnh báo ($Wtemp$) hiện đang được cài đặt cứng trong mã nguồn chương trình, chưa thể tinh chỉnh linh hoạt từ bàn phím bên ngoài do thiếu hụt chân I/O số.
  3. Đặc tuyến tầm xa của module nRF24L01 thường: Module sử dụng ăng-ten dạng mạch in (PCB trace antenna) trên bo mạch nên khoảng cách truyền tối đa bị giới hạn trong phạm vi $30\text{ m}$ trong nhà; tín hiệu suy giảm rõ rệt nếu gặp nhiều lớp bê tông cốt thép dày đặc.

Hướng phát triển trong tương lai

  • Thiết kế mạch in PCB chuyên dụng: Chuyển đổi từ mô hình testboard cắm dây sang bo mạch in 2 lớp (Double-sided PCB) chuẩn công nghiệp, phủ xanh chống ẩm để giảm thiểu nhiễu tiếp xúc và nâng cao độ bền cơ học.
  • Nâng cấp phần cứng truyền thông: Thay thế module nRF24L01 cơ bản bằng phiên bản nRF24L01+ PA/LNA có ăng-ten rời $2\text{ dBi}$, giúp mở rộng tầm truyền xa lên tới $1000\text{ m}$ trong không gian mở.
  • Tích hợp nền tảng IoT: Nghiên cứu chuyển đổi bộ vi điều khiển sang SoC ESP8266 hoặc ESP32 nhằm đẩy dữ liệu nhiệt độ trực tiếp lên các nền tảng đám mây (Cloud Server) như ThingSpeak, Adafruit IO, hoặc máy chủ MQTT cục bộ, cho phép theo dõi nhiệt độ từ xa qua ứng dụng điện thoại thông minh.

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

  • Sinh viên và Học viên kỹ thuật: Cung cấp tài liệu tham khảo hoàn chỉnh, giàu tính ứng dụng thực tiễn về kỹ thuật lập trình nhúng AVR/Arduino, kỹ thuật ghép nối thanh ghi dịch 74HC595, ma trận transistor quét LED và chuẩn truyền thông không dây SPI vô tuyến.
  • Kỹ sư phát triển phần cứng IoT: Nắm bắt phương pháp tối ưu hóa chân vào/ra vi điều khiển trong các bài toán thiết kế hệ thống nhúng có chi phí tiết kiệm.
  • Doanh nghiệp vừa và nhỏ, Cơ sở nông nghiệp: Sở hữu một mô hình giải pháp kỹ thuật tự động hóa giám sát nhiệt độ không dây có độ ổn định cao với chi phí đầu tư linh kiện thấp, dễ dàng bảo trì và thay thế.

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

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

Hệ thống yêu cầu tối thiểu 01 bo mạch Arduino Uno (hoặc tương đương chạy vi điều khiển ATmega328P), 01 bo mạch Arduino Nano, 01 cảm biến nhiệt độ LM35DZ, 02 module nRF24L01, 02 IC ghi dịch 74HC595, 08 Transistor PNP 2SA1015, 02 khối 4 LED 7 thanh Anode chung và nguồn cấp DC $5\text{ V} - 9\text{ V}$.

2. Giới hạn khoảng cách truyền không dây của nRF24L01 là bao nhiêu và làm sao để mở rộng?

Phiên bản nRF24L01 ăng-ten dải đồng tích hợp trong đề tài đạt khoảng cách truyền ổn định từ $15\text{ m} - 30\text{ m}$ trong nhà xuyên qua 2 sàn bê tông. Để mở rộng khoảng cách lên $500\text{ m} - 1000\text{ m}$, người dùng chỉ cần thay thế bằng module nRF24L01+ PA+LNA có gắn ăng-ten ngoài dạng SMA mà không cần sửa đổi mã nguồn phần mềm.

3. Tại sao không nối trực tiếp 4 LED 7 thanh vào chân Arduino mà phải qua IC 74HC595 và Transistor A1015?

Một khối 4 LED 7 thanh cần tối thiểu 8 chân phân đoạn (a, b, c, d, e, f, g, dp) và 4 chân chọn vị trí Anode/Cathode, tổng cộng là 12 chân I/O. Bo mạch Arduino Uno chỉ có 14 chân I/O số, trong khi module nRF24L01 đã chiếm 5 chân SPI. Việc dùng IC 74HC595 giúp đưa 8 bit dữ liệu song song ra LED chỉ bằng 3 chân số của Arduino, đồng thời Transistor A1015 đóng vai trò van công suất gánh dòng cho các LED sáng rõ nét mà không làm quá tải cổng vi điều khiển.

4. Cần lưu ý gì về nguồn điện khi sử dụng module nRF24L01 với Arduino?

Module nRF24L01 hoạt động ở điện áp $3.3\text{ V}$ (cấp nguồn $5\text{ V}$ trực tiếp vào chân VCC sẽ làm cháy chip ngay lập tức). Mặc dù chân nguồn cấp là $3.3\text{ V}$, các chân tín hiệu logic (CE, CSN, SCK, MOSI, MISO) đều tương thích với mức điện áp $5\text{ V}$ của Arduino. Cần hàn thêm một tụ gốm hoặc tụ hóa $10\mu\text{F} - 100\mu\text{F}$ song song giữa chân VCC và GND của module nRF24L01 để lọc phẳng nguồn, tránh hiện tượng sụt áp khi phát sóng RF.

5. Chi phí chế tạo trọn gói và thời gian hoàn vốn thực tế?

Tổng chi phí linh kiện để lắp ráp toàn bộ hệ thống thu phát là $889.200\text{ VNĐ}$. Hệ thống giúp doanh nghiệp tiết kiệm chi phí đường dây và công bảo dưỡng, mang lại thời gian hoàn vốn (ROI) ước tính chỉ sau 3 đến 6 tháng đưa vào ứng dụng thực tế.


Kết luận

Đề tài đồ án môn học "Thiết kế mạch đo nhiệt độ sử dụng board Arduino, hiển thị trên 4 LED 7 thanh và truyền phát không dây sử dụng module nRF24L01" (Khoa Điện, Trường Đại học Bách Khoa Hà Nội) đã giải quyết trọn vẹn bài toán tích hợp phần cứng và tối ưu hóa giải thuật điều khiển hệ thống nhúng. Dự án đã chứng minh tính khả thi vượt trội của việc kết hợp vi điều khiển ATmega328P với IC ghi dịch 74HC595 và module truyền thông nRF24L01 trong một cấu trúc mạch có chi phí thấp ($889.200\text{ VNĐ}$) nhưng vẫn đảm bảo độ chính xác cao ($\pm 0.5^\circ\text{C}$), khả năng truyền xuyên vật cản 3 tầng ổn định và hiển thị trực quan.

Kết quả nghiên cứu không chỉ mang lại giá trị học thuật sâu sắc cho sinh viên khối ngành Tự động hóa và Điện tử trong việc làm chủ kỹ thuật vi xử lý, mà còn mở ra nền tảng vững chắc để tiếp tục mở rộng thành các trạm quan trắc IoT không dây chuyên nghiệp phục vụ sản xuất công nghiệp và đời sống.