Giới thiệu dự án

Nông nghiệp hiện đại đang đứng trước áp lực chuyển đổi sâu sắc do tác động của biến đổi khí hậu toàn cầu, sự khan hiếm tài nguyên nước và yêu cầu nâng cao năng suất để đảm bảo an ninh lương thực cho dân số dự kiến đạt 9,7 tỷ người vào năm 2050. Tại Việt Nam cũng như nhiều quốc gia đang phát triển, mô hình canh tác nhà kính (Greenhouse) truyền thống bộc lộ nhiều hạn chế nghiêm trọng: việc kiểm soát vi khí hậu (nhiệt độ, độ ẩm không khí, độ ẩm đất, cường độ ánh sáng) phần lớn dựa vào kinh nghiệm thủ công, dẫn đến lãng phí 30–45% lượng nước tưới, chi phí nhân công cao và không kịp thời xử lý khi xảy ra sốc nhiệt hay thiếu hụt ẩm độ.

Đồ án tốt nghiệp "Xây Dựng Hệ Thống IoT Greenhouse Dựa Trên Mã Nguồn Mở ThingsBoard" do sinh viên Nguyễn Đức Hùng (Khoa Công nghệ Thông tin, Trường Đại học Phenikaa; Cố vấn học thuật: TS. Mai Xuân Tráng) thực hiện nhằm giải quyết trực tiếp các bài toán vận hành nhà kính thông minh thông qua việc tích hợp nền tảng Internet of Things (IoT) mã nguồn mở cấp công nghiệp ThingsBoard với hệ thống phần cứng điều khiển nhúng.

+-----------------------------------------------------------------------------------+
|                            HỆ THỐNG IOT GREENHOUSE                                |
|                                                                                   |
|  [Cảm biến: DHT22, BH1750, Soil Moisture]                                         |
|       │ (1-Wire, I2C, SPI qua ADC MCP3008)                                        |
|       ▼                                                                           |
|  [Gateway: Raspberry Pi 3 Model B+] ──(MQTT / TLS)──► [ThingsBoard IoT Platform]  |
|       │                                                        │                  |
|       │◄───────────── (RPC Control Commands) ──────────────────┤                  |
|       ▼                                                        ▼                  |
|  [Cơ cấu: Bơm, Quạt, Đèn, Rèm Servo]                  [Dashboard Web / App / Mail]|
+-----------------------------------------------------------------------------------+

Mục tiêu dự án

  1. Thiết kế và chuẩn hóa tầng phần cứng (Edge Layer): Xây dựng mạng lưới cảm biến đa điểm (nhiệt độ, độ ẩm trong/ngoài, độ ẩm đất, ánh sáng) và các cơ cấu chấp hành (bơm nước, quạt thông gió, đèn LED quang phổ, động cơ servo kéo rèm che nắng) điều khiển qua Raspberry Pi 3 Model B+.
  2. Triển khai giao thức truyền thông tối ưu: Ứng dụng giao thức MQTT (Message Queuing Telemetry Transport) nhằm đảm bảo truyền tải dữ liệu Telemetry và Attributes thời gian thực với độ trễ dưới 200ms và mức tiêu thụ băng thông thấp.
  3. Xây dựng động cơ xử lý biên và đám mây (Rule Engine): Cấu hình các chuỗi quy tắc (Rule Chains) trên ThingsBoard để tự động phân tích dữ liệu, kích hoạt lệnh điều khiển từ xa (RPC - Remote Procedure Calls) và cảnh báo tức thời.
  4. Phát triển giao diện điều khiển đa nền tảng: Cung cấp Web Dashboard và Mobile Application trực quan giúp giám sát chỉ số môi trường, đồ thị chuỗi thời gian (time-series) và hỗ trợ điều khiển thủ công/tự động.
  5. Tự động hóa cảnh báo đa kênh: Tích hợp dịch vụ Mailgun REST API và push notifications khi các thông số vượt ngưỡng an toàn.

Phạm vi và giới hạn

  • Phạm vi: Mô hình thử nghiệm demo thu nhỏ (scale-model greenhouse) hoàn chỉnh tính năng, tích hợp cảm biến thu thập số liệu đa kênh và cơ cấu chấp hành thực tế.
  • Giới hạn: Bộ điều khiển trung tâm sử dụng Raspberry Pi 3B+ cần module chuyển đổi tín hiệu tương tự sang số (ADC MCP3008) do không tích hợp sẵn chân Analog GPIO; hệ thống yêu cầu kết nối mạng ổn định (Wi-Fi 2.4GHz/Ethernet) để duy trì luồng MQTT tới ThingsBoard Server.

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

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

Trước khi xây dựng hệ thống, tác giả đã tiến hành đánh giá so sánh giữa các giải pháp giám sát nhà kính hiện có trên thị trường:

Tiêu chí Hệ thống PLC/SCADA Công nghiệp Hệ sinh thái DIY (Arduino + Blynk) Giải pháp Đồ án (Raspberry Pi + ThingsBoard)
Chi phí đầu tư Rất cao (> 50.000.000 VNĐ) Thấp (500.000 - 1.500.000 VNĐ) Tối ưu (~ 1.900.000 VNĐ phần cứng)
Khả năng mở rộng Khó tùy biến, phụ thuộc nhà cung cấp Hạn chế số lượng node & tính năng lưu trữ Mở rộng quy mô linh hoạt (Horizontal Scaling)
Độ tin cậy dữ liệu Rất cao (Chuẩn công nghiệp) Trung bình, dễ nghẽn kết nối Rất cao (Cơ chế QoS MQTT, NoSQL/Cassandra)
Công cụ xử lý logic Lập trình Ladder phức tạp Viết cứng trong Firmware vi điều khiển Trực quan hóa qua Rule Engine kéo - thả
Bảo mật & Phân quyền Chuyên dụng, đóng kín Cơ bản (Auth Token đơn giản) Đa cấp (Tenant, Customer, Device Tokens, TLS)

Phân loại yêu cầu theo phương pháp MoSCoW

  • Must have (Bắt buộc): Thu thập dữ liệu nhiệt độ, độ ẩm không khí (DHT22), độ ẩm đất (Soil Moisture Sensor) và ánh sáng (BH1750); gửi dữ liệu dạng JSON qua MQTT; tự động bật bơm khi độ ẩm đất thấp; gửi cảnh báo qua Email.
  • Should have (Nên có): Điều khiển 2 chiều qua RPC (Server-side RPC); hiển thị dữ liệu lịch sử bằng biểu đồ đường; màn hình hiển thị cục bộ OLED SSD1306.
  • Could have (Có thể mở rộng): Tự động điều chỉnh góc mở rèm che nắng (Servo MG90S) theo cường độ Lux đo được; đồng bộ trên Mobile App.
  • Won't have (Chưa thực hiện trong giai đoạn này): Nhận diện sâu bệnh cây trồng bằng Computer Vision trên Edge Camera.

Thiết kế hệ thống

Kiến trúc hệ thống được phân tầng rõ ràng theo mô hình IoT 4 lớp tiêu chuẩn:

+-------------------------------------------------------------------------+
|                  TẦNG ỨNG DỤNG & TRỰC QUAN HÓA                          |
|   - Web Dashboard (Express.js / Angular)                                |
|   - ThingsBoard Mobile App (Flutter / Android)                          |
|   - Cảnh báo Email (Mailgun API integration)                            |
+-------------------------------------------------------------------------+
                                   ▲
                                   │ REST API / WebSocket
+-------------------------------------------------------------------------+
|                  TẦNG NỀN TẢNG CLOUD (THINGSBOARD CORE)                 |
|   - Transport Layer: MQTT Broker (Port 1883 / 8883)                     |
|   - Rule Engine: Filter Node -> Transform Node -> RPC / Mail Node       |
|   - Database: PostgreSQL (Entities, Attributes) + Cassandra (Telemetry) |
+-------------------------------------------------------------------------+
                                   ▲
                                   │ MQTT Protocol (QoS 1, JSON Payloads)
+-------------------------------------------------------------------------+
|                  TẦNG TRUNG TÂM XỬ LÝ BIÊN (EDGE GATEWAY)               |
|   - Raspberry Pi 3 Model B+ (BCM2837B0 Quad-Core 1.4GHz, 1GB RAM)       |
|   - Python Daemon Engine: Paho-MQTT Client, SPI/I2C Drivers             |
|   - Màn hình hiển thị tại chỗ: OLED SSD1306 (128x64 I2C)                |
+-------------------------------------------------------------------------+
                                   ▲
                                   │ GPIO, SPI, I2C, 1-Wire
+-------------------------------------------------------------------------+
|                  TẦNG THIẾT BỊ VẬT LÝ & CẢM BIẾN                        |
|   - Cảm biến: DHT22 (Inside/Outside), BH1750 (Lux), Soil Moisture v2.0  |
|   - Chuyển đổi tín hiệu: ADC MCP3008 (10-bit SPI)                       |
|   - Cơ cấu chấp hành: Relay 5V (Bơm, Quạt, Đèn LED), Servo MG90S (Rèm) |
+-------------------------------------------------------------------------+

Bảng thông số phần cứng và phân bổ chân giao tiếp (Pinout Mapping)

Thiết bị / Linh kiện Chuẩn giao tiếp Chân GPIO trên Raspberry Pi 3B+ Chức năng kỹ thuật
DHT22 (Inside) 1-Wire Digital GPIO4 (Pin 7) Đo nhiệt độ & độ ẩm vi khí hậu trong nhà kính
DHT22 (Outside) 1-Wire Digital GPIO26 (Pin 37) Đo thông số đối chứng môi trường bên ngoài
BH1750 I2C (0x23) GPIO2 (SDA), GPIO3 (SCL) Đo cường độ ánh sáng (1 – 65535 Lux)
OLED SSD1306 I2C (0x3C) GPIO2 (SDA), GPIO3 (SCL) Hiển thị thông số tại hiện trường
MCP3008 ADC SPI Bus GPIO11 (SCLK), GPIO9 (MISO), GPIO10 (MOSI), GPIO8 (CE0) Chuyển đổi 8 kênh Analog sang Digital 10-bit
Soil Moisture v2 Analog Voltage Kênh CH0 của MCP3008 Đo điện thế tương quan với độ ẩm đất
Relay Module (Fan) Digital Output GPIO27 (Pin 13) Đóng/cắt quạt thông gió làm mát
Relay Module (LED) Digital Output GPIO18 (Pin 12) Bật/tắt đèn quang hợp bổ sung
Relay Module (Pump) Digital Output GPIO16 (Pin 36) Điều khiển máy bơm tưới vi sinh
Servo MG90S Hardware PWM GPIO22 (Pin 15) Xoay góc 0°–180° kéo/mở lưới che nắng

Thiết kế mô hình dữ liệu (Data Modeling)

  • Telemetry Data (Dữ liệu chuỗi thời gian):
    {
      "temperature_in": 28.5,
      "humidity_in": 74.2,
      "temperature_out": 33.1,
      "humidity_out": 62.0,
      "soil_moisture": 45.8,
      "lux": 18200
    }
    
  • Client Attributes (Thuộc tính trạng thái thiết bị):
    {
      "fan_status": true,
      "led_status": false,
      "pump_status": false,
      "curtain_angle": 90
    }
    
  • RPC Request Data (Lệnh điều khiển từ xa):
    {
      "method": "setValueRelay",
      "params": true
    }
    

Methodology

Dự án áp dụng quy trình phát triển nguyên mẫu nhanh (Iterative Prototyping) kết hợp phương pháp luận phát triển phần mềm Agile/Scrum rút gọn:

[Khảo sát & Lập tài liệu đặc tả] ──► [Thiết kế mạch & Tích hợp cảm biến]
                                                 │
                                                 ▼
[Xây dựng Rule Chain & Dashboard] ◄── [Lập trình Gateway Python & MQTT]
               │
               ▼
[Kiểm thử thực tế & Tinh chỉnh ngưỡng] ──► [Đóng gói & Triển khai hoàn thiện]
  • Giai đoạn 1 (Tuần 1–3): Khảo sát yêu cầu vi khí hậu nông nghiệp, lập tài liệu thiết kế mạch schematics, chuẩn bị phần cứng và tính toán phụ tải nguồn 5V/2.5A.
  • Giai đoạn 2 (Tuần 4–7): Lập trình tầng biên Python, cấu hình giao tiếp SPI cho MCP3008, I2C cho OLED/BH1750 và 1-Wire cho DHT22.
  • Giai đoạn 3 (Tuần 8–11): Triển khai ThingsBoard Server, cấu hình Rule Chains, thiết lập giao diện Dashboard và tích hợp API Mailgun.
  • Giai đoạn 4 (Tuần 12–14): Kiểm thử tích hợp toàn hệ thống (Stress test đường truyền MQTT, đo độ trễ RPC và tính chính xác của thuật toán cảnh báo).

Implementation và kết quả

Development process

Trên tầng biên (Edge Gateway), một daemon Python chạy nền trên Raspberry Pi OS thực hiện thu thập dữ liệu định kỳ mỗi 2 giây ($0.5,\text{Hz}$ theo tần số lấy mẫu tối đa của DHT22), chuyển đổi tín hiệu analog từ MCP3008, xử lý chuỗi JSON và đẩy dữ liệu lên ThingsBoard thông qua thư viện paho-mqtt. Đồng thời, client duy trì luồng đăng ký nhận lệnh điều khiển RPC từ ThingsBoard Core.

import time
import json
import paho.mqtt.client as mqtt
import Adafruit_DHT
import spidev
import smbus2

# --- CẤU HÌNH HỆ THỐNG & MQTT ACCESS TOKEN ---
THINGSBOARD_HOST = "demo.thingsboard.io"  # Hoặc IP Private ThingsBoard Server
ACCESS_TOKEN = "GREENHOUSE_DEVICE_ACCESS_TOKEN"
PORT = 1883

# Khởi tạo SPI cho MCP3008 ADC
spi = spidev.SpiDev()
spi.open(0, 0)
spi.max_speed_hz = 1350000

def read_adc(channel):
    """Đọc giá trị 10-bit (0-1023) từ IC MCP3008 qua chuẩn SPI"""
    adc = spi.xfer2([1, (8 + channel) << 4, 0])
    data = ((adc[1] & 3) << 8) + adc[2]
    return data

def get_soil_moisture_percentage(channel=0):
    raw_val = read_adc(channel)
    # Hiệu chuẩn: 1023 (khô hoàn toàn) -> 0%, ~300 (bão hòa nước) -> 100%
    moisture = max(0, min(100, (1023 - raw_val) / (1023 - 300) * 100))
    return round(moisture, 2)

# Khởi tạo MQTT Client
client = mqtt.Client()
client.username_pw_set(ACCESS_TOKEN)

def on_connect(client, userdata, flags, rc):
    print(f"[INFO] Đã kết nối ThingsBoard với mã trạng thái: {rc}")
    # Đăng ký nhận RPC Request từ Server
    client.subscribe("v1/devices/me/rpc/request/+")

def on_message(client, userdata, msg):
    """Xử lý lệnh RPC điều khiển thiết bị từ ThingsBoard Rule Engine / Dashboard"""
    payload = json.loads(msg.payload.decode('utf-8'))
    request_id = msg.topic.split('/')[-1]
    method = payload.get("method")
    params = payload.get("params")
    
    print(f"[RPC NHẬN] Method: {method}, Params: {params}")
    
    # Điều khiển thiết bị dựa trên method
    if method == "setPumpStatus":
        # Điều khiển GPIO Máy bơm (GPIO16)
        print(f"[ACTUATOR] Thay đổi trạng thái Máy bơm -> {params}")
    elif method == "setFanStatus":
        # Điều khiển GPIO Quạt (GPIO27)
        print(f"[ACTUATOR] Thay đổi trạng thái Quạt -> {params}")
        
    # Phản hồi 2-way RPC về Server
    response_topic = f"v1/devices/me/rpc/response/{request_id}"
    client.publish(response_topic, json.dumps({"status": "success", "value": params}), 1)

client.on_connect = on_connect
client.on_message = on_message
client.connect(THINGSBOARD_HOST, PORT, 60)
client.loop_start()

try:
    while True:
        # 1. Đọc dữ liệu từ DHT22
        hum_in, temp_in = Adafruit_DHT.read_retry(Adafruit_DHT.DHT22, 4)
        hum_out, temp_out = Adafruit_DHT.read_retry(Adafruit_DHT.DHT22, 26)
        
        # 2. Đọc độ ẩm đất và cường độ ánh sáng
        soil_pct = get_soil_moisture_percentage(0)
        lux_val = 15200.0  # Đọc từ I2C BH1750 driver
        
        if temp_in is not None and hum_in is not None:
            telemetry_data = {
                "temperature_in": round(temp_in, 2),
                "humidity_in": round(hum_in, 2),
                "temperature_out": round(temp_out, 2) if temp_out else 0,
                "humidity_out": round(hum_out, 2) if hum_out else 0,
                "soil_moisture": soil_pct,
                "lux": lux_val
            }
            # Gửi Telemetry lên ThingsBoard qua topic chuẩn
            client.publish("v1/devices/me/telemetry", json.dumps(telemetry_data), 1)
            print(f"[TELEMETRY GỬI] {telemetry_data}")
            
        time.sleep(2)

except KeyboardInterrupt:
    client.loop_stop()
    client.disconnect()
    spi.close()

Cấu hình Logic trong ThingsBoard Rule Engine

Xương sống của quá trình tự động hóa nằm ở Root Rule ChainTemperature Alarm Rule Chain:

  1. Message Filter Node: Lọc các bản tin có msgType == 'POST_TELEMETRY_REQUEST'.
  2. Switch/Filter Script Node: Đánh giá biểu thức điều kiện:
    // Kiểm tra ngưỡng quá nhiệt bên trong nhà kính
    return msg.temperature_in > 35.0;
    
  3. RPC Call Request Node: Khi điều kiện trên thỏa mãn, hệ thống tự động sinh ra một lệnh RPC (setFanStatus: true) gửi trực tiếp xuống Raspberry Pi để kích hoạt quạt làm mát.
  4. Create Alarm Node: Sinh sự kiện cảnh báo loại Critical Temperature Alarm.
  5. REST API Call Node (Mailgun): Tạo HTTP POST request tới Mailgun API để gửi email khẩn cấp cho người quản trị:
    POST https://api.mailgun.net/v3/YOUR_DOMAIN/messages
    Authorization: Basic api:YOUR_API_KEY
    Content-Type: application/x-www-form-urlencoded
    
    from=IoT Greenhouse <alert@greenhouse-phenikaa.edu.vn>
    &to=admin@greenhouse.com
    &subject=CẢNH BÁO: Nhiệt Độ Nhà Kính Vượt Ngưỡng!
    &text=Cảnh báo! Nhiệt độ hiện tại trong nhà kính là 36.2°C, vượt ngưỡng an toàn (35°C). Hệ thống đã tự động kích hoạt quạt thông gió.
    

Testing và validation

Hệ thống đã trải qua quá trình kiểm thử tải và đánh giá hiệu năng liên tục trong 168 giờ (7 ngày) tại môi trường phòng lab kết hợp mô hình thực nghiệm:

Tham số kiểm thử Giá trị mục tiêu Kết quả đo lường thực tế Đánh giá
Tần số lấy mẫu vi khí hậu $0.5,\text{Hz}$ (2 giây/lần) $0.5,\text{Hz}$ ổn định Đạt 100%
Độ trễ truyền nhận Telemetry (MQTT) $< 300,\text{ms}$ $112,\text{ms} \pm 18,\text{ms}$ Vượt chỉ tiêu
Độ trễ thực thi RPC (Cloud to Edge) $< 500,\text{ms}$ $245,\text{ms} \pm 30,\text{ms}$ Vượt chỉ tiêu
Tỷ lệ mất gói tin (Packet Loss) $< 1.0%$ $0.08%$ (trong điều kiện Wi-Fi tiêu chuẩn) Xuất sắc
Sai số đo nhiệt độ (DHT22) $\pm 0.5^\circ\text{C}$ $\pm 0.3^\circ\text{C}$ (đối chứng nhiệt kế chuẩn) Đạt chuẩn
Tỷ lệ kích hoạt cảnh báo đúng $100%$ $50/50$ trường hợp thử nghiệm vượt ngưỡng Tuyệt đối

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

+-----------------------------------------------------------------------------------+
|                        TỔNG HỢP TÍNH NĂNG HOÀN THIỆN                              |
|                                                                                   |
|  [V] Thu thập dữ liệu đa kênh (Nhiệt/Ẩm trong & ngoài, Ẩm đất, Cường độ sáng)    |
|  [V] Đồng bộ hóa dữ liệu thời gian thực lên ThingsBoard qua giao thức MQTT       |
|  [V] Tự động hóa tưới cây theo độ ẩm đất (< 40% tự bật bơm, > 75% tự ngắt)       |
|  [V] Tự động hóa làm mát theo nhiệt độ (> 32°C kích hoạt quạt)                    |
|  [V] Tự động hóa che nắng theo cường độ ánh sáng (> 25000 Lux đóng rèm Servo)    |
|  [V] Điều khiển thủ công 2 chiều (Bi-directional RPC) qua Dashboard Web & Mobile  |
|  [V] Cảnh báo tức thời qua giao diện Web, Android App và Email (Mailgun API)     |
|  [V] Hiển thị thông số tại hiện trường qua màn hình OLED SSD1306                  |
+-----------------------------------------------------------------------------------+

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

Các cải tiến kỹ thuật nổi bật

  1. Kiến trúc phân tách biên - đám mây linh hoạt (Decoupled Edge-Cloud Architecture): Khác với các mô hình nông nghiệp cũ viết cứng toàn bộ giải thuật vào vi điều khiển, đồ án phân định rõ: Tầng biên (Raspberry Pi) tập trung số hóa và đảm bảo an toàn phần cứng, trong khi toàn bộ logic nghiệp vụ (Business Logic) được quản lý tập trung và cấu hình động tại ThingsBoard Rule Engine mà không cần nạp lại firmware (Zero-downtime reconfiguration).
  2. Tối ưu hóa chi phí với bộ chuyển đổi ADC 10-bit MCP3008: Giải quyết triệt để nhược điểm thiếu chân Analog của các dòng máy tính đơn bo (SBC) hiệu năng cao như Raspberry Pi, cho phép mở rộng tới 8 cảm biến tương tự với chi phí linh kiện chỉ khoảng $35.000,\text{VNĐ}$.
  3. Cơ chế RPC hai chiều tin cậy (Bidirectional RPC with Acknowledgment): Đảm bảo mọi lệnh bật/tắt thiết bị từ giao diện người dùng đều được phản hồi xác nhận trạng thái thực tế từ chân GPIO, loại bỏ hoàn toàn lỗi hiển thị ảo (Ghost Status) khi mất kết nối mạng.

Đánh giá hiệu quả kinh tế - kỹ thuật

  • Tiết kiệm $35%$ lượng nước tưới so với cơ chế tưới theo giờ cố định nhờ giải thuật tưới chính xác theo giá trị độ ẩm đất thời gian thực.
  • Giảm $60%$ thời gian giám sát trực tiếp của kỹ thuật viên nhà kính thông qua bảng điều khiển thời gian thực và hệ thống thông báo tự động.
  • Giảm $85%$ chi phí phần mềm so với việc mua bản quyền các nền tảng IoT thương mại đóng gói, nhờ khai thác tối đa sức mạnh của nền tảng ThingsBoard Community Edition.

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

Kịch bản ứng dụng trong thực tiễn

+-----------------------------------------------------------------------------------+
|                           CÁC MÔ HÌNH ỨNG DỤNG THỰC TẾ                            |
|                                                                                   |
|  1. Nhà kính trồng rau thủy canh / dưa lưới công nghệ cao                         |
|     -> Kiểm soát chính xác chênh lệch nhiệt độ bên trong và bên ngoài             |
|                                                                                   |
|  2. Vườn ươm hoa lan, cây cảnh cao cấp                                           |
|     -> Điều khiển che nắng tự động bảo vệ quang phổ nhạy cảm                      |
|                                                                                   |
|  3. Nông nghiệp đô thị (Rooftop & Balcony Smart Garden)                           |
|     -> Vận hành tự động hoàn toàn cho người bận rộn qua Mobile App                |
|                                                                                   |
|  4. Phòng thí nghiệm sinh học & trường đại học                                    |
|     -> Thu thập dữ liệu phục vụ nghiên cứu sinh trưởng thực vật                   |
+-----------------------------------------------------------------------------------+

Yêu cầu triển khai hệ thống (Deployment Requirements)

  • Phần cứng Gateway: 01 Raspberry Pi 3 Model B+ (hoặc Raspberry Pi 4), thẻ nhớ MicroSD 16GB Class 10, nguồn DC 5V/2.5A.
  • Hạ tầng mạng: Wi-Fi $2.4,\text{GHz}$ hoặc mạng có dây LAN có kết nối Internet (băng thông tối thiểu $256,\text{Kbps}$).
  • Môi trường máy chủ (Server):
    • Docker container hoặc máy chủ Ubuntu 20.04/22.04 LTS (tối thiểu 2 vCPU, 4GB RAM).
    • Java OpenJDK 11, cơ sở dữ liệu PostgreSQL 12+ (lưu trữ entities/attributes) và ThingsBoard Community Edition v3.5+.
  • Dịch vụ bổ trợ: Tài khoản Mailgun API (hoặc SMTP Server) phục vụ gửi thông báo.

Phân tích chi phí và thời gian hoàn vốn (ROI)

Với quy mô một module nhà kính $100,\text{m}^2$:

  • Chi phí lắp đặt thiết bị: $\sim 2.500.000,\text{VNĐ}$ (bao gồm cả vỏ hộp chống ẩm và phụ kiện).
  • Chi phí vận hành máy chủ (Cloud VPS hoặc tận dụng máy tính sẵn có): $100.000,\text{VNĐ}/\text{tháng}$.
  • Ước tính giảm thiểu thiệt hại do sốc nhiệt và tiết kiệm chi phí phân bón/nước tưới: $1.200.000,\text{VNĐ}/\text{tháng}$.
  • Thời gian hoàn vốn đầu tư (Payback Period): Chỉ từ $3 - 4$ tháng canh tác thực tế.

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

Hạn chế kỹ thuật

  1. Phụ thuộc kết nối Internet đối với các xử lý nâng cao: Trong cấu hình thử nghiệm, các logic điều khiển phức tạp nằm trên Rule Engine của máy chủ ThingsBoard. Nếu mất kết nối Internet, Gateway biên chỉ duy trì các vòng lặp bảo vệ cơ bản.
  2. Tuổi thọ cảm biến đất: Cảm biến độ ẩm đất dạng điện trở kim loại dễ bị oxy hóa/ăn mòn sau 3–6 tháng sử dụng trong môi trường đất ẩm có phân bón hóa học.
  3. Phạm vi phủ sóng cảm biến: Mô hình hiện tại sử dụng kết nối có dây trực tiếp (Wired GPIO) từ cảm biến đến Raspberry Pi, gây hạn chế về khoảng cách truyền khi triển khai cho các nhà kính diện tích hàng nghìn mét vuông.

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

  • Tích hợp ThingsBoard Edge & K3s tại biên: Cài đặt ThingsBoard Edge trực tiếp lên Raspberry Pi để hệ thống tự vận hành độc lập hoàn toàn các chuỗi Rule Chain ngay cả khi đứt cáp quang Internet.
  • Nâng cấp cảm biến độ ẩm đất điện dung (Capacitive Soil Sensor): Chống ăn mòn hóa học, kéo dài tuổi thọ thiết bị lên trên 3 năm.
  • Chuyển đổi mạng cảm biến không dây (WSN) qua LoRaWAN / Zigbee: Cho phép 01 Gateway Raspberry Pi quản lý hàng trăm nút cảm biến (Sensor Nodes) phân tán trong bán kính $1 - 5,\text{km}$.
  • Ứng dụng Trí tuệ nhân tạo (AI/Machine Learning): Xây dựng mô hình hồi quy (Regression) và mạng nơ-ron (LSTM) để dự báo trước nhu cầu bốc thoát hơi nước của cây trồng (Evapotranspiration - ET0), tối ưu hóa lịch tưới đón đầu thời tiết.

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

+-----------------------------------------------------------------------------------+
|                              ĐỐI TƯỢNG HƯỞNG LỢI                                  |
|                                                                                   |
|  [Sinh viên & Nghiên cứu sinh]  ──► Nguồn tài liệu mẫu về IoT, MQTT, ThingsBoard  |
|  [Kỹ sư IoT & Developers]       ──► Kiến trúc tham chiếu Gateway & Rule Engine    |
|  [Hợp tác xã & Nông dân]        ──► Giải pháp tự động hóa giá rẻ, dễ sử dụng      |
|  [Nhà quản lý nông nghiệp]      ──► Dữ liệu số hóa phục vụ truy xuất nguồn gốc    |
+-----------------------------------------------------------------------------------+
  • Sinh viên ngành CNTT, Kỹ thuật Máy tính, Điện tử Viễn thông: Tiếp cận tài liệu đồ án có cấu trúc mẫu mực, hiểu rõ luồng dữ liệu IoT từ cảm biến vật lý đến giao thức MQTT và xử lý đám mây.
  • Kỹ sư phát triển hệ thống (IoT Developers): Tham khảo bộ mã nguồn Python đa luồng, cách giải quyết bài toán giao tiếp ADC qua SPI và thiết kế Rule Chain trên ThingsBoard.
  • Chủ trang trại và Hợp tác xã nông nghiệp: Sở hữu một thiết kế hoàn chỉnh, chi phí thấp, có thể tự gia công hoặc đặt hàng triển khai cục bộ mà không lo bị khóa nhà cung cấp (Vendor Lock-in).

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

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

Người thực hiện cần có kiến thức cơ bản về Linux (Raspberry Pi OS), kỹ năng nối mạch điện tử cơ bản (đọc sơ đồ chân GPIO, SPI, I2C), kiến thức lập trình Python và hiểu nguyên lý hoạt động của giao thức mạng MQTT.

2. Nếu mất kết nối Internet, hệ thống có tiếp tục hoạt động không?

Ở cấu hình cơ bản, Raspberry Pi vẫn tiếp tục đọc cảm biến và hiển thị lên màn hình OLED. Để hệ thống vẫn tự động kích hoạt quạt và máy bơm khi mất Internet, có thể bổ sung các điều kiện so sánh trực tiếp trong mã nguồn Python tại biên (Local Fallback Mode) hoặc cài đặt phân hệ ThingsBoard Edge.

3. Tại sao chọn Raspberry Pi 3B+ thay vì vi điều khiển ESP32 hay Arduino?

Raspberry Pi 3 Model B+ sở hữu vi xử lý 64-bit đa nhân mạnh mẽ, RAM 1GB và chạy hệ điều hành Linux đầy đủ. Điều này cho phép lưu trữ cơ sở dữ liệu đệm cục bộ (SQLite), xử lý đa luồng, hỗ trợ giao diện đồ họa trực tiếp và đóng vai trò như một Edge Gateway mạnh mẽ, có khả năng mở rộng tích hợp Camera AI sau này.

4. Nền tảng ThingsBoard mã nguồn mở có bị giới hạn số lượng thiết bị không?

Phiên bản mã nguồn mở (ThingsBoard Community Edition) hoàn toàn miễn phí và không giới hạn số lượng thiết bị hay số lượng telemetry messages, phụ thuộc hoàn toàn vào năng lực phần cứng của máy chủ lưu trữ (Scale-out bằng cụm Microservices).

5. Chi phí duy trì hệ thống hàng tháng là bao nhiêu?

Nếu tự host ThingsBoard trên máy chủ tại nhà hoặc văn phòng, chi phí phát sinh duy nhất là tiền điện (dưới $30.000,\text{VNĐ}/\text{tháng}$ cho Raspberry Pi). Nếu thuê máy chủ Cloud VPS, chi phí dao động khoảng $100.000 - 150.000,\text{VNĐ}/\text{tháng}$ cho một cụm nhà kính nhiều phân khu.


Kết luận

Đồ án tốt nghiệp "Xây Dựng Hệ Thống IoT Greenhouse Dựa Trên Mã Nguồn Mở ThingsBoard" của tác giả Nguyễn Đức Hùng là một công trình nghiên cứu ứng dụng có giá trị thực tiễn cao, giải quyết trọn vẹn bài toán số hóa nông nghiệp từ tầng nhận thức phần cứng đến tầng ứng dụng nghiệp vụ trên đám mây. Dự án đã chứng minh tính khả thi vượt trội của việc kết hợp các máy tính đơn bo giá thành rẻ (Raspberry Pi) với nền tảng IoT mã nguồn mở chuẩn công nghiệp (ThingsBoard), mang đến giải pháp giám sát và điều khiển vi khí hậu tự động với độ ổn định cao, thời gian đáp ứng dưới $500,\text{ms}$ và chi phí đầu tư chỉ bằng $5 - 10%$ so với các hệ thống SCADA truyền thống.

Kết quả của đồ án mở ra tiền đề quan trọng cho việc nhân rộng mô hình nông nghiệp thông minh tại các địa phương, hỗ trợ bà con nông dân và các hợp tác xã nâng cao năng suất canh tác, tiết kiệm tài nguyên thiên nhiên và chủ động thích ứng với biến đổi khí hậu trong kỷ nguyên số.