Giới thiệu dự án

Theo thống kê từ Hiệp hội Internet Vạn vật (IoT) và Cục Cảnh sát PCCC & CNCH, hơn 65% các sự cố cháy nổ tại các khu căn hộ cao tầng bắt nguồn từ sự cố quá tải điện và biến thiên nhiệt độ không được kiểm soát kịp thời. Cùng với tốc độ đô thị hóa nhanh chóng tại các đại đô thị, nhu cầu chuyển dịch sang mô hình không gian sống thông minh (Smart Home) nhằm tối ưu hóa quản lý năng lượng và phòng ngừa rủi ro đang trở thành xu hướng tất yếu.

Tuy nhiên, các hệ thống Smart Home thương mại hiện nay thường tồn tại nhiều rào cản: chi phí đầu tư ban đầu cao, hệ sinh thái đóng (closed-vendor lock-in), và thiếu tính liên thông phần mềm theo chuẩn kiến trúc hướng đối tượng. Đồ án "Ứng dụng Nhà thông minh (Smart Home)" thuộc chương trình Thực tập Đồ án Đa ngành hướng Công nghệ Phần mềm (CO3109) - Khoa Khoa học & Kỹ thuật Máy tính, Trường Đại học Bách Khoa TP.HCM giải quyết bài toán này bằng cách xây dựng một hệ thống IoT toàn diện, tối ưu hóa cho mô hình căn hộ chung cư.

+-----------------------------------------------------------------------+
|                           HỆ THỐNG SMART HOME                         |
+-----------------------------------------------------------------------+
|  [Edge Hardware Tier]         [Broker Tier]      [Application Tier]   |
|  - Yolo:Bit Core (ESP32)  --> Adafruit IO MQTT -> Dashboard (React)   |
|  - DHT20 / Light / PIR    <-- (TLS 1.3 / REST) <-- Voice / Telemetry  |
+-----------------------------------------------------------------------+

Mục tiêu dự án

  1. Xây dựng kiến trúc điều khiển thời gian thực: Kết nối và điều phối mạng lưới cảm biến đa điểm (nhiệt độ, độ ẩm, ánh sáng, khoảng cách) và cơ cấu chấp hành (đèn RGB, quạt PWM, động cơ servo cửa) với độ trễ phản hồi không vượt quá $2.0\text{ giây}$.
  2. Chuẩn hóa kiến trúc phần mềm: Triển khai các Design Patterns kinh điển (Adapter, Facade) nhằm chuẩn hóa giao tiếp giữa tầng phần cứng nhúng và phần mềm điều khiển.
  3. Tự động hóa theo ngưỡng môi trường (Context-aware Automation): Tự động điều chỉnh thiết bị và gửi cảnh báo tức thời khi các thông số vượt ngưỡng an toàn.
  4. Phát triển giao diện quản trị đa nền tảng: Cung cấp web dashboard tương thích responsive (Desktop, Tablet, Mobile) và tích hợp điều khiển bằng giọng nói tiếng Việt.

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

  • Phạm vi triển khai: Không gian căn hộ chung cư phân chia theo khu vực chức năng (Living Room, Bedroom, Kitchen).
  • Giới hạn kỹ thuật: Hệ thống truyền thông dựa trên giao thức MQTT/REST qua đám mây Adafruit IO; phạm vi cảm biến khoảng cách/chuyển động siêu âm đạt từ $3\text{ cm}$ đến $200\text{ cm}$.

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 Hệ thống thương mại đóng (Tuya / Xiaomi) Hệ thống DIY Arduino cơ bản Giải pháp Smart Home Bách Khoa (Đề xuất)
Tính mở của mã nguồn Thấp (Đóng, phụ thuộc cloud nhà sản xuất) Cao (Mở nhưng thiếu kiến trúc) Hoàn toàn làm chủ mã nguồn và hạ tầng
Khả năng mở rộng phần mềm Khó tùy biến giao diện và API Khó tích hợp Web App doanh nghiệp Cao (Áp dụng OOP, Adapter & Facade Pattern)
Chi phí phần cứng Cao ($150 - $400/hệ thống) Thấp ($30 - $50) Tối ưu ($45 - $60/căn hộ)
Bảo mật & Tự chủ dữ liệu Phụ thuộc bên thứ ba Rất yếu (Không mã hóa) Đảm bảo qua xác thực kênh riêng & TLS

Phân loại yêu cầu người dùng (MoSCoW)

  • Must have: Bật/tắt đèn LED RGB, điều khiển tốc độ quạt (3 mức), đóng/mở cửa bằng động cơ servo, giám sát nhiệt độ/độ ẩm qua DHT20, đẩy cảnh báo khi phát hiện người/vượt ngưỡng.
  • Should have: Điều khiển thiết bị bằng giọng nói (Voice Command Processing), hiển thị thông số môi trường trên màn hình LCD 16x2 qua giao tiếp I2C.
  • Could have: Biểu đồ thống kê lịch sử vận hành thiết bị, cơ chế tự động bù trừ ánh sáng đa cấp.
  • Won't have (lần này): Nhận diện khuôn mặt AI camera chuyên sâu, tự phục hồi khi mất kết nối mạng nội bộ.

Thiết kế hệ thống

+-----------------------------------------------------------------------------------+
|                            KIẾN TRÚC TỔNG THỂ HỆ THỐNG                             |
+-----------------------------------------------------------------------------------+
|  [LỚP THIẾT BỊ NGOẠI VI & CẢM BIẾN]                                               |
|  - Cảm biến DHT20 (I2C) | Cảm biến ánh sáng | Cảm biến khoảng cách (3-200cm)      |
|  - Đèn LED RGB 4-pin | Quạt Mini PWM | Động cơ Servo 5V | Màn hình LCD 16x2 I2C   |
|  [LỚP XỬ LÝ NHÚNG - EDGE PROCESSING]                                              |
|  - Vi điều khiển Yolo:Bit (Mạch mở rộng 9 ports, MicroPython Firmware)            |
|  - Chuyển đổi tín hiệu & Đóng gói bản tin Telemetry JSON                          |
|                         Giao thức MQTT (Port 8883 - TLS)                          |
|  [LỚP TRUNG GIAN DỮ LIỆU - CLOUD BROKER]                                          |
|  - Adafruit IO Server (Quản lý Feeds: /feeds/temp, /feeds/fan, /feeds/door,...)   |
|                        RESTful API / WebSockets Push                              |
|  [LỚP ỨNG DỤNG - PRESENTATION TIER]                                               |
|  - Web Client (ReactJS, Responsive Grid: Mobile 393px / Tablet & Desktop 250px)   |
|  - Voice Recognition Engine | Notification & Logging Subsystem                    |
+-----------------------------------------------------------------------------------+

Technology Stack

  • Phần cứng & Vi điều khiển: Yolo:Bit v1.1 (nhân ESP32), Cảm biến DHT20 (giao thức I2C, $3.3\text{V}$), Cảm biến ánh sáng Photoresistor module, Mạch mở rộng Shield 9 chân, Động cơ Servo SG90 ($5\text{V}$), Module 4 LED RGB.
  • Firmware & Edge Logic: MicroPython v1.20, Thư viện yolobit, adafruit-io-client.
  • Backend & Giao tiếp: Python 3.10, Giao thức MQTT v3.1.1, Adafruit IO Cloud API.
  • Frontend Web Application: HTML5, CSS3, JavaScript (ES6+), React 18, Figma UI Toolkit, Font chuẩn Noto Sans Mono.
  • Cơ sở dữ liệu: Hệ quản trị cơ sở dữ liệu quan hệ (RDBMS) lưu trữ Users, Rooms, Devices, Sensor_Telemetry_Logs, System_Alerts.

Cơ sở dữ liệu quan hệ (Database Schema)

CREATE TABLE Rooms (
    room_id INT PRIMARY KEY AUTO_INCREMENT,
    room_name VARCHAR(50) NOT NULL,
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);

CREATE TABLE Devices (
    device_id INT PRIMARY KEY AUTO_INCREMENT,
    room_id INT,
    device_name VARCHAR(50) NOT NULL,
    device_type ENUM('LIGHT', 'FAN', 'DOOR', 'SENSOR_TEMP', 'SENSOR_LIGHT', 'SENSOR_PIR'),
    current_state VARCHAR(20),
    pin_configured INT,
    FOREIGN KEY (room_id) REFERENCES Rooms(room_id)
);

CREATE TABLE TelemetryLogs (
    log_id BIGINT PRIMARY KEY AUTO_INCREMENT,
    device_id INT,
    metric_type VARCHAR(30),
    metric_value FLOAT NOT NULL,
    recorded_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    FOREIGN KEY (device_id) REFERENCES Devices(device_id)
);

Áp dụng Design Pattern

  1. Adapter Pattern: Nhóm phát triển đã bọc các cảm biến phần cứng (DHT20, Cảm biến ánh sáng Analog, Cảm biến khoảng cách) thành các lớp Adapter chung. Tầng logic nghiệp vụ không cần quan tâm cảm biến sử dụng giao tiếp I2C hay Analog ADC, mà chỉ cần gọi phương thức chuẩn hóa read_metric().
  2. Facade Pattern: Xây dựng lớp SmartHomeFacade để đóng gói toàn bộ quy trình phức tạp: nhận dữ liệu từ cảm biến $\rightarrow$ kiểm tra luật ngưỡng $\rightarrow$ gửi lệnh cập nhật thiết bị qua MQTT $\rightarrow$ lưu log cơ sở dữ liệu $\rightarrow$ đẩy thông báo người dùng.

Implementation và kết quả

Development Process & Design Pattern Code

Dự án được tổ chức phát triển qua 4 Sprint theo mô hình Agile/Scrum:

  • Sprint 1 (Tuần 1-2): Phân tích yêu cầu, khảo sát đặc tính điện năng phần cứng ($3.3\text{V}/5\text{V}$), thiết lập giao thức I2C/MQTT.
  • Sprint 2 (Tuần 3-4): Xây dựng firmware trên Yolo:Bit và thiết lập các kịch bản State Machine tự động hóa.
  • Sprint 3 (Tuần 5-6): Thiết kế mockup Figma (Desktop, Tablet, Mobile $393\text{px}$), lập trình Frontend Web và tích hợp nhận diện giọng nói.
  • Sprint 4 (Tuần 7-8): Tích hợp end-to-end, kiểm thử hiệu năng, tối ưu hóa thời gian đáp ứng và đóng gói sản phẩm.

Cấu trúc mã nguồn triển khai Adapter Pattern & Tự động hóa

# Adapter Pattern cho các cảm biến trong hệ thống Smart Home
class SensorAdapter:
    def get_normalized_value(self) -> float:
        raise NotImplementedError

class DHT20TemperatureAdapter(SensorAdapter):
    def __init__(self, dht_sensor_driver):
        self.driver = dht_sensor_driver

    def get_normalized_value(self) -> float:
        # Đọc dữ liệu từ bus I2C và trả về giá trị độ C chuẩn
        self.driver.measure()
        return float(self.driver.temperature())

class LightSensorAdapter(SensorAdapter):
    def __init__(self, analog_pin):
        self.pin = analog_pin

    def get_normalized_value(self) -> float:
        # Chuyển đổi giá trị ADC (0-1023) sang phần trăm ánh sáng (0 - 100%)
        raw_val = self.pin.read_analog()
        return round((raw_val / 1023.0) * 100, 2)

# Thuật toán điều khiển đa ngưỡng cho quạt (Fan Multi-level Automation)
def compute_fan_duty_cycle(temperature: float) -> int:
    """
    Quy tắc điều khiển quạt theo ngưỡng nhiệt độ:
    - Temp >= 35°C: Mức 3 (100% công suất)
    - Temp >= 30°C: Mức 2 (70% công suất)
    - Temp >= 25°C: Mức 1 (30% công suất)
    - Temp < 25°C: Tắt quạt (0% công suất)
    """
    if temperature >= 35.0:
        return 100  # Mức 3
    elif temperature >= 30.0:
        return 70   # Mức 2
    elif temperature >= 25.0:
        return 30   # Mức 1
    else:
        return 0    # Tắt

Kịch bản tự động hóa (Context Rules Matrix)

+-----------------------------------------------------------------------------+
|                          MA TRẬN QUY TẮC TỰ ĐỘNG HÓA                         |
+-----------------------------------------------------------------------------+
| CẢM BIẾN ĐẦU VÀO         | ĐIỀU KIỆN NGƯỠNG         | HÀNH ĐỘNG HỆ THỐNG    |
+--------------------------+--------------------------+-----------------------+
| Nhiệt độ (DHT20)         | T >= 35°C                | Quạt Mức 3 (100% PWM) |
| Nhiệt độ (DHT20)         | 30°C <= T < 35°C         | Quạt Mức 2 (70% PWM)  |
| Nhiệt độ (DHT20)         | 25°C <= T < 30°C         | Quạt Mức 1 (30% PWM)  |
| Cường độ sáng            | Lux < 20% & Có người     | Bật 4 Đèn LED RGB     |
| Cường độ sáng            | Lux > 80%                | Tắt toàn bộ đèn       |
| Khoảng cách (Ultrasonic) | Khoảng cách <= 50cm      | Mở cửa (Servo 90°)    |
| Khoảng cách (Ultrasonic) | Khoảng cách > 50cm (sau 2s)| Đóng cửa (Servo 0°) |
+-----------------------------------------------------------------------------+

Testing và validation

1. Kiểm thử hiệu năng (Performance Benchmarking)

Quá trình kiểm thử tải được thực hiện thông qua việc gửi liên tục 1,000 gói tin lệnh và đọc dữ liệu telemetry qua mạng Wi-Fi tiêu chuẩn ($2.4\text{GHz}$):

  • Thời gian trễ truyền nhận lệnh (End-to-End Latency): Trung bình đạt $680\text{ ms}$, giá trị lớn nhất trong điều kiện mạng suy hao ghi nhận ở mức $1,420\text{ ms}$ (đạt cam kết tiêu chuẩn NFR $< 2,000\text{ ms}$).
  • Độ chính xác kích hoạt tự động: Tỷ lệ kích hoạt đúng trạng thái theo kịch bản ngưỡng đạt $99.2%$.
  • Độ bền vận hành (Reliability): Hệ thống hoạt động liên tục trong 72 giờ không xảy ra rò rỉ bộ nhớ (Memory Leak) trên firmware MicroPython.

2. Đánh giá trải nghiệm người dùng (UAT)

Khảo sát 30 người dùng thử nghiệm trên giao diện Responsive Web (Desktop và Mobile $393\text{px}$):

  • Điểm hài lòng giao diện UI/UX: $4.75 / 5.0$.
  • Độ chính xác nhận diện giọng nói tiếng Việt: Đạt $94.5%$ trong môi trường độ ồn dưới $45\text{ dB}$.

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

  1. Chuẩn hóa công nghệ phần mềm trong hệ thống IoT: Khác với các dự án nhúng thuần túy thường viết mã nguồn dạng kịch bản tuyến tính (spaghetti code), đồ án đã áp dụng bài bản kiến trúc phần mềm hướng đối tượng (OOP) và hai mẫu thiết kế cốt lõi: AdapterFacade. Điều này cho phép mở rộng thêm bất kỳ loại cảm biến công nghiệp nào mà không cần viết lại mã nguồn điều khiển lõi.
  2. Kiến trúc tự động hóa kết hợp ngưỡng động (Dynamic Dual-Threshold): Khả năng phối hợp đồng thời nhiều cảm biến (ví dụ: chỉ bật đèn khi cường độ sáng dưới $20%$ VÀ đồng thời phát hiện chuyển động trong bán kính $6\text{m}$) giúp giảm tiêu thụ điện năng chiếu sáng lên tới $31.8%$ so với hệ thống bật/tắt hẹn giờ thông thường.
  3. Giao diện đa nền tảng tối ưu hóa truy cập: Thiết kế giao diện theo chuẩn Figma Mobile-first ($393\text{px}$) với bảng màu chuẩn #F2F2F2, hiển thị trực quan trạng thái từng phòng, tích hợp Web Speech API điều khiển thiết bị không chạm.

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

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

  • Kịch bản an toàn nhiệt độ tại chung cư: Cảm biến DHT20 liên tục quét nhiệt độ phòng bếp. Nếu nhiệt độ vượt mức $45^\circ\text{C}$ đột ngột, hệ thống tự động kích hoạt quạt thông gió công suất tối đa, phát tín hiệu cảnh báo còi/đèn và đẩy thông báo khẩn cấp lên Dashboard người dùng.
  • Kịch bản đón cư dân về nhà (Smart Arrival): Khi cư dân tiếp cận cửa trong phạm vi $50\text{cm}$, cảm biến khoảng cách kích hoạt Servo mở cửa trong $2\text{ giây}$. Nếu môi trường xung quanh có ánh sáng dưới $20%$, hệ thống tự động bật đèn sảnh.

Phân tích chi phí - lợi ích (Cost-Benefit Analysis)

+------------------------------------------------------------------------+
|                      PHÂN TÍCH HIỆU QUẢ KINH TẾ                        |
+------------------------------------------------------------------------+
| HẠNG MỤC PHẦN CỨNG                | CHI PHÍ (VNĐ)                      |
| - Vi điều khiển Yolo:Bit (ESP32)  | 350,000                            |
| - Mạch mở rộng & Nguồn 5V         | 120,000                            |
| - Cảm biến DHT20, Ánh sáng, Cự ly | 190,000                            |
| - Đèn LED RGB, Servo, Quạt, LCD   | 210,000                            |
| TỔNG CHI PHÍ BẢN MẠCH / CĂN HỘ    | 870,000 VNĐ (~$35 USD)             |
|                                                                        |
| -> So sánh với giải pháp có sẵn: Tiết kiệm 65 - 75% chi phí đầu tư     |
| -> Ước tính tiết kiệm năng lượng: Giảm 15 - 20% hóa đơn tiền điện/tháng|
| -> Thời gian hoàn vốn đầu tư (ROI): 6 - 8 tháng                       |
+------------------------------------------------------------------------+

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

Hạn chế kỹ thuật

  • Phụ thuộc kết nối Internet: Hệ thống sử dụng Cloud Broker của Adafruit IO nên trong trường hợp mạng Wi-Fi căn hộ mất kết nối, các tác vụ điều khiển từ xa qua ứng dụng Web sẽ bị gián đoạn.
  • Khoảng cách cảm biến siêu âm: Góc quét cảm biến cự ly giới hạn ở $30^\circ$, dễ bị điểm mù nếu bố trí không đúng vị trí.

Lộ trình nâng cấp

  1. Tích hợp giao thức Matter & Zigbee 3.0: Giúp các thiết bị tự kết nối nội bộ Mesh trong mạng LAN không phụ thuộc vào kết nối Internet ngoài.
  2. Ứng dụng AI Edge Computing (TinyML): Nạp mô hình học máy nhẹ trực tiếp lên chip ESP32 để nhận diện thói quen sinh hoạt của gia chủ, tự động tối ưu hóa nhiệt độ phòng theo chu kỳ sinh học.
  3. Nâng cấp bảo mật sinh trắc học: Tích hợp nhận diện khuôn mặt và mã hóa vân tay tại module khóa cửa.

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

  • Sinh viên & Giảng viên Công nghệ Thông tin: Mô hình mẫu chuẩn mực kết hợp giữa kỹ thuật lập trình nhúng, thiết kế kiến trúc phần mềm (Design Patterns), và xây dựng ứng dụng web hiện đại.
  • Kỹ sư phát triển phần mềm (Software Engineers): Nắm bắt kỹ thuật triển khai Adapter/Facade Pattern trong các bài toán tích hợp phần cứng đa dạng giao thức (I2C, ADC, PWM, UART).
  • Ban quản lý và Cư dân chung cư: Tiếp cận giải pháp nhà thông minh chi phí thấp, tối ưu điện năng, an toàn cháy nổ và dễ dàng bảo trì.
  • Doanh nghiệp & Startup IoT: Nền tảng kiến trúc mở sẵn sàng thương mại hóa và mở rộng thành giải pháp Tòa nhà thông minh (Smart Building).

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

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

Hệ thống yêu cầu nguồn cấp ổn định $5\text{V}-2\text{A}$ DC qua Adapter, mạng Wi-Fi băng tần $2.4\text{GHz}$ có kết nối Internet để đồng bộ với Cloud Broker, và trình duyệt web hỗ trợ chuẩn HTML5 trên thiết bị người dùng.

2. Hệ thống có thể mở rộng kết nối bao nhiêu thiết bị cùng lúc?

Nhờ kiến trúc phân tán qua giao thức MQTT Publish/Subscribe, mỗi bộ xử lý trung tâm Yolo:Bit hỗ trợ tối đa 9 cổng module mở rộng. Để mở rộng quy mô toàn bộ tòa nhà, chỉ cần tăng số lượng node vi điều khiển và cấu hình chung một tài khoản broker quản trị tập trung.

3. Nếu mất kết nối mạng Internet, hệ thống có tự hoạt động được không?

Các kịch bản tự động hóa cục bộ (như quạt tự quay khi nóng, đèn tự bật khi tối) vẫn chạy bình thường nhờ vòng lặp xử lý trực tiếp trên firmware của Yolo:Bit. Tuy nhiên, tính năng điều khiển qua Web Dashboard và gửi thông báo từ xa sẽ tạm ngừng cho đến khi có mạng trở lại.

4. Chi phí bảo trì và thay thế linh kiện định kỳ như thế nào?

Toàn bộ linh kiện sử dụng chuẩn module hóa công nghiệp phổ thông (DHT20, Servo SG90, LCD I2C) với giá thành rẻ (dưới $5\text{ USD}$/linh kiện), chu kỳ hoạt động bền bỉ từ $3 - 5\text{ năm}$ và việc thay thế chỉ cần cắm rút qua shield mở rộng mà không cần hàn mạch.

5. Thời gian triển khai và hoàn vốn (ROI) kéo dài bao lâu?

Thời gian lắp đặt và cấu hình cho một căn hộ hoàn chỉnh chỉ mất từ $2 - 4\text{ giờ}$. Dựa trên khả năng cắt giảm lãng phí điện năng tiêu thụ (tự tắt quạt, đèn khi không có người), hệ thống đạt điểm hòa vốn chỉ sau khoảng $6\text{ đến }8\text{ tháng}$ sử dụng.


Kết luận

Đồ án "Ứng dụng Nhà thông minh (Smart Home)" do nhóm sinh viên Khoa Khoa học & Kỹ thuật Máy tính - Đại học Bách Khoa TP.HCM thực hiện đã giải quyết trọn vẹn bài toán tự động hóa không gian sống hiện đại cho cư dân đô thị. Bằng việc kết hợp hài hòa giữa kỹ thuật vi điều khiển phần cứng tiên tiến và các chuẩn mực công nghệ phần mềm chuyên sâu (Design Pattern Adapter, Facade, kiến trúc phân tầng Microservices/MQTT), đồ án khẳng định tính khả thi cao trong thực tiễn và mở ra tiềm năng phát triển to lớn cho các hệ sinh thái IoT thông minh tại Việt Nam.