Bối cảnh và vấn đề nghiên cứu

Trong xu thế phát triển của khoa học công nghệ, các hệ thống nhúng ngày càng được ứng dụng sâu rộng trong nhiều lĩnh vực của đời sống và sản xuất. Từ những ứng dụng định thời đơn giản như điều khiển cụm đèn giao thông, đếm sản phẩm trên dây chuyền sản xuất công nghiệp, điều chỉnh tốc độ động cơ điện một chiều, biển quảng cáo LED ma trận, đồng hồ thời gian thực cho đến các hệ sinh thái phức tạp như cánh tay robot tự hành, hệ thống điều khiển trung tâm trong nhà máy sản xuất và trạm kiểm soát năng lượng hạt nhân. So với các giải pháp điều khiển tự động truyền thống vận hành bằng nguyên lý khí nén, thủy lực, rơle cơ điện hoặc mạch số rời rạc vốn có năng lực tính toán và mức độ tự động hóa hạn chế, hệ thống nhúng hiện đại mang lại khả năng xử lý linh hoạt, nhỏ gọn và tính thông minh vượt trội.

Song song với quá trình công nghiệp hóa, nhu cầu nâng cao chất lượng cuộc sống và tối ưu hóa năng lượng tiêu thụ tại các hộ gia đình trở thành mục tiêu cấp thiết. Các thiết bị giám sát và chiếu sáng luôn gắn liền với sinh hoạt hàng ngày, đòi hỏi các giải pháp tự động hóa giúp kiểm soát trạng thái vận hành, mang lại sự tiện nghi và hạn chế lãng phí điện năng. Xuất phát từ yêu cầu học phần "Hệ thống nhúng", đề tài đồ án được thực hiện nhằm nghiên cứu, chế tạo mô hình tự động hóa điều khiển thiết bị điện thông qua kết hợp vi điều khiển, cảm biến và rơle.

Mục tiêu và nhiệm vụ nghiên cứu của đồ án được cụ thể hóa theo 4 bước yêu cầu trong phiếu giao đề tài:

  1. Giới thiệu và phân tích các yêu cầu kỹ thuật của bài toán thiết kế hệ thống.
  2. Trình bày tổng quan về nền tảng công nghệ, môi trường quản lý nhà thông minh và các giao thức truyền thông mạng.
  3. Mô tả cụ thể trình tự các bước thiết kế phần cứng, cấu hình dịch vụ phần mềm và kết quả minh họa thực tế.
  4. Đánh giá kết luận và đề xuất các hướng phát triển hoàn thiện hệ thống.

Đối tượng và phạm vi nghiên cứu:

  • Đối tượng nghiên cứu: Nền tảng quản lý nhà thông minh mã nguồn mở Home Assistant (HassIO), giao thức truyền thông mạng nhẹ MQTT (Message Queuing Telemetry Transport), vi mạch SoC ESP8266 tích hợp trên bo mạch phát triển NodeMCU ESP8266, module Relay 5V 1 kênh cách ly và các linh kiện cảm biến (cảm biến chuyển động hồng ngoại PIR SR505, cảm biến nhiệt độ - độ ẩm DHT11, màn hình LCD 16x2 giao tiếp I2C).
  • Phạm vi không gian: Mô hình giám sát và điều khiển đóng cắt tải điện tự động quy mô phòng sinh hoạt hoặc căn hộ gia đình.
  • Phạm vi thời gian: Đồ án được nghiên cứu, triển khai thực nghiệm và nghiệm thu vào năm 2022 tại Bộ môn Kỹ thuật Máy tính, Khoa Điện tử, Trường Đại học Kỹ thuật Công nghiệp (Đại học Thái Nguyên).

Cơ sở lý thuyết và phương pháp

Khung lý thuyết của đồ án được xây dựng dựa trên kiến trúc hệ thống mạng vạn vật kết nối (Internet of Things - IoT) và tự động hóa tòa nhà (Home Automation / Smart Home). Trong đó, hệ thống tập trung vào hai trụ cột công nghệ chính:

  1. Nền tảng quản lý Home Assistant (HA / HASS): Nền tảng điều phối trung tâm mã nguồn mở được phát triển bằng ngôn ngữ Python. Hệ thống có khả năng vận hành dưới hai dạng phân phối: Home Assistant Core (gói cài đặt phần mềm độc lập trên các hệ điều hành máy tính) và Home Assistant OS (hệ điều hành chuyên dụng tích hợp sẵn nhân Core cùng công cụ giám sát Supervisor, có thể nạp trực tiếp lên máy tính nhúng Raspberry Pi hoặc máy ảo). Nền tảng này ưu tiên xử lý dữ liệu và điều khiển tại chỗ (On-Premises), hoạt động độc lập không phụ thuộc vào dịch vụ đám mây (Cloud), đảm bảo duy trì quyền riêng tư và khả năng phản hồi khi đường truyền Internet gặp sự cố.
  2. Giao thức truyền thông MQTT: Giao thức mạng tầng ứng dụng hoạt động trên nền TCP/IP theo mô hình Xuất bản / Đăng ký (Publisher / Subscriber), phân tách hoàn toàn giữa thiết bị gửi dữ liệu và thiết bị nhận dữ liệu thông qua một máy chủ môi giới trung gian (MQTT Broker). MQTT quản lý chất lượng truyền dữ liệu qua 3 cấp độ dịch vụ (Quality of Service - QoS):
    • QoS 0: Gửi thông điệp tối đa một lần, quá trình truyền không yêu cầu xác nhận ở tầng ứng dụng mà chỉ dựa vào tầng giao vận TCP/IP.
    • QoS 1: Đảm bảo thông điệp gửi thành công ít nhất một lần, phía nhận phải gửi gói phản hồi xác nhận (PUBACK); thông điệp có thể bị lặp lại nếu xảy ra trễ mạng.
    • QoS 2: Đảm bảo thông điệp được chuyển giao chính xác duy nhất một lần thông qua cơ chế bắt tay 4 bước (PUBLISH, PUBREC, PUBREL, PUBCOMP).

Bên cạnh đó, văn bản trích dẫn các dòng thiết bị cảm biến và đo lường thương mại trên thị trường quốc tế làm cơ sở so sánh thực tiễn, bao gồm: Model KLK 100 (xuất xứ Phần Lan), các dòng cảm biến công nghiệp do hãng VCP (Thụy Điển) sản xuất và bộ điều khiển đo lường Model OM352UNI (Cộng hòa Séc).

Phương pháp nghiên cứu thực tế bao gồm:

  • Phương pháp phân tích và tổng hợp lý thuyết: Thu thập, đối chiếu tài liệu kỹ thuật từ nhà sản xuất vi điều khiển Espressif, tài liệu hướng dẫn cấu hình nền tảng Home Assistant và tài liệu kỹ thuật giao thức MQTT.
  • Phương pháp thiết kế kỹ thuật phần cứng: Tính toán phối ghép các chân vào/ra số (GPIO) của vi điều khiển NodeMCU ESP8266 với module Relay 5V và các đầu vào cảm biến; lựa chọn mạch cấp nguồn sạc pin Li-ion 3.7V tích hợp module tăng áp để duy trì điện áp làm việc ổn định 5V.
  • Phương pháp cài đặt và tích hợp phần mềm: Ảo hóa hệ điều hành Linux trên máy tính cá nhân bằng Oracle VM VirtualBox để triển khai Home Assistant OS; cấu hình các gói dịch vụ Add-on Mosquitto Broker và File Editor; khai báo thực thể thiết bị bằng ngôn ngữ YAML; lập trình firmware điều khiển cho chip ESP8266 bằng ngôn ngữ C++ trên môi trường Arduino IDE sử dụng thư viện PubSubClient và ESP8266WiFi.
  • Phương pháp kiểm thử thực nghiệm: Sử dụng phần mềm Hercules Terminal để kiểm tra trạng thái mở của cổng mạng TCP 1883 trên máy chủ MQTT Broker; theo dõi quá trình gửi/nhận chuỗi dữ liệu (payload) giữa mạch điều khiển và bảng điều khiển trung tâm.

Nguồn dữ liệu của đồ án được khai thác từ các tài liệu tham khảo chính thức: cổng thông tin mã nguồn mở Home Assistant, dự án ESPHome, tài liệu thư viện Arduino Core for ESP8266, trang hướng dẫn kỹ thuật Random Nerd Tutorials và mã nguồn mở Mosquitto Broker.

Thiết kế và triển khai hệ thống

Hệ thống được thiết kế theo cấu trúc phân tầng hoàn chỉnh, bao gồm phần cứng thu thập - chấp hành, hạ tầng mạng truyền dẫn và tầng máy chủ quản lý trung tâm.

Thiết bị / Module Thông số kỹ thuật chính ghi nhận trong văn bản Chức năng trong hệ thống
NodeMCU ESP8266 Vi xử lý SoC ESP8266 32-bit, xung nhịp 80MHz; tích hợp WiFi; bộ nhớ Flash ngoài; giao tiếp UART, SPI, I2C. Đọc dữ liệu cảm biến, xử lý thuật toán cục bộ, đóng ngắt relay và giao tiếp MQTT client qua WiFi.
Module Relay 5V 1 kênh Chịu tải tối đa 10A ở 250VAC hoặc 30VDC; tiếp điểm Common (COM), Thường mở (NO), Thường đóng (NC); kích hoạt mức thấp (Active LOW). Đóng cắt nguồn điện lưới AC cung cấp cho thiết bị đèn chiếu sáng.
Cảm biến chuyển động PIR SR505 Ngõ ra số (Digital OUT); nhận biết chuyển động hồng ngoại thân nhiệt. Phát hiện sự hiện diện của con người trong khu vực giám sát để kích hoạt bật đèn.
Cảm biến DHT11 Cảm biến độ ẩm điện dung kết hợp nhiệt điện trở NTC; giao tiếp 1-wire; điện áp hoạt động 3.3V - 5VDC; cự ly truyền tín hiệu tối đa 20m. Thu thập nhiệt độ, độ ẩm môi trường (linh kiện nằm trong danh mục khảo sát thiết kế).
Màn hình LCD 16x2 & Module I2C LCD 16 ký tự x 2 dòng dùng driver HD44780; mạch mở rộng I2C chuyển đổi giao tiếp 2 chân SCL và SDA. Hiển thị thông số vận hành tại chỗ, giúp tiết kiệm chân GPIO cho vi điều khiển.
Mạch sạc pin Li-ion 3.7V Điện áp vào DC 3.2V; ngõ ra điều chỉnh 5.2V; dòng sạc max 1A; dòng xả max 2A; xả tham chiếu 5V - 1.3mA; có bảo vệ quá dòng. Cấp nguồn độc lập và ổn định áp 5VDC cho bo mạch vi điều khiển và cảm biến.

Sơ đồ chân I/O trên bo mạch phát triển NodeMCU ESP8266 được nhóm tác giả khảo sát và lập bảng chi tiết để phục vụ đấu nối phần cứng:

Nhãn trên bo Tên chân GPIO Chiều tín hiệu Trạng thái khởi động và chức năng chuyên dụng
D0 GPIO16 Vào / Ra Kéo mức CAO khi khởi động; không hỗ trợ ngắt/PWM/I2C; dùng đánh thức khi ngủ sâu (Deep Sleep).
D1 GPIO5 Vào / Ra Hoạt động bình thường; thường dùng làm chân SCL trong giao tiếp I2C. Trong đồ án nối cảm biến (sensorPin).
D2 GPIO4 Vào / Ra Hoạt động bình thường; thường dùng làm chân SDA trong giao tiếp I2C. Trong đồ án nối điều khiển Relay (switchPin).
D3 GPIO0 Vào / Ra Chân kéo lên (Pull-up); nối nút FLASH trên bo mạch; khởi động thất bại nếu bị kéo mức THẤP. Trong đồ án nối nút bấm (buttonPin).
D4 GPIO2 Vào / Ra Kéo lên; nối đèn LED tích hợp trên bo mạch; khởi động thất bại nếu bị kéo mức THẤP.
D5 GPIO14 Vào / Ra Hoạt động bình thường; chân tạo xung nhịp SCLK trong chuẩn giao tiếp SPI.
D6 GPIO12 Vào / Ra Hoạt động bình thường; chân nhận dữ liệu MISO trong chuẩn giao tiếp SPI.
D7 GPIO13 Vào / Ra Hoạt động bình thường; chân truyền dữ liệu MOSI trong chuẩn giao tiếp SPI.
D8 GPIO15 Vào / Ra Kéo xuống đất (Pull-down GND); chân chọn chip CS trong chuẩn SPI; khởi động thất bại nếu bị kéo mức CAO.
RX GPIO3 Vào Chân nhận tín hiệu nối tiếp UART (RX); mức CAO khi khởi động.
TX GPIO1 Ra Chân truyền tín hiệu nối tiếp UART (TX); xuất tín hiệu gỡ lỗi khi khởi động; khởi động thất bại nếu kéo mức THẤP.
A0 ADC0 Vào Chân đọc tín hiệu tương tự (Analog Input), dải điện áp đo giới hạn.

Quy trình triển khai hạ tầng phần mềm máy chủ và cấu hình dịch vụ mạng được thực hiện theo các bước:

  1. Thiết lập máy ảo Home Assistant OS: Trên hệ điều hành Windows 10, mở phần mềm Oracle VM VirtualBox, tạo máy ảo mới dạng Linux (phiên bản Other Linux 64-bit), nạp tập tin đĩa cứng ảo định dạng .vdi tải từ trang phân phối chính thức của Home Assistant. Cấu hình phần cứng máy ảo kích hoạt chế độ "Enable EFI (special OSes only)" trong thẻ Bo mạch chủ (Motherboard) và thiết lập card mạng sang chế độ "Bridged Adapter" (Cầu nối) để máy ảo nhận trực tiếp một địa chỉ IP nội bộ cùng dải mạng LAN cục bộ với máy tính vật lý.
  2. Khởi tạo và cấu hình tài khoản: Truy cập giao diện quản trị qua trình duyệt web tại địa chỉ http://homeassistant.local:8123 hoặc địa chỉ IP mạng LAN của máy ảo. Hệ thống mất khoảng 20 phút để khởi tạo môi trường lần đầu; sau đó người dùng tiến hành đăng ký tài khoản quản trị và thiết lập vị trí địa lý cho hệ thống nhà thông minh.
  3. Cài đặt dịch vụ MQTT Broker: Truy cập mục Supervisor trên giao diện HassIO, vào Add-on Store, tìm kiếm và cài đặt gói ứng dụng "Mosquitto broker". Sau khi hoàn tất cài đặt, người dùng chuyển sang thẻ Configuration để thiết lập thông số tài khoản xác thực (tên người dùng và mật khẩu đăng nhập hệ thống) và cấu hình cổng mạng dịch vụ là 1883, sau đó nhấn Start để khởi chạy dịch vụ.
  4. Khai báo thiết bị qua File Editor: Cài đặt Add-on File Editor từ Add-on Store để chỉnh sửa tập tin configuration.yaml. Khai báo thông số kết nối tới máy chủ MQTT cục bộ và định nghĩa hai thực thể phần cứng:
    • Thực thể chuyển mạch (MQTT Switch) đại diện cho Module Relay 5V với các kênh đề cập trong văn bản: state_topic: "/home/switch1/status", command_topic: "/home/switch1/status", availability_topic: "/home/switch1/available".
    • Thực thể cảm biến nhị phân (Binary Sensor) đại diện cho cảm biến PIR SR505 với các kênh: state_topic: "/home/sensor_pir/status", availability_topic: "/home/sensor_pir/available".
    • Tiến hành khởi động lại máy chủ (Restart Server) thông qua mục Server Controls để hệ thống nạp các thực thể mới.
  5. Kiểm thử kết nối mạng: Sử dụng công cụ phần mềm Hercules Terminal trên máy tính, kết nối tới địa chỉ IP của máy ảo Home Assistant tại cổng TCP 1883 (văn bản có đoạn ghi nhận cổng 1883 và lỗi đánh máy 1833 tại phần diễn giải kiểm thử). Kết quả trả về trạng thái "Connected" xác nhận dịch vụ Mosquitto broker hoạt động thông suốt.
  6. Lập trình firmware nhúng: Mã nguồn viết trên Arduino IDE sử dụng thư viện PubSubClient.h và ESP8266WiFi.h. Cấu hình kết nối mạng WiFi qua SSID và mật khẩu cố định; khai báo IP máy chủ MQTT, cổng 1883, tài khoản và mật khẩu xác thực. Trong hàm setup(), các chân được định hình: switchPin (D2) là ngõ ra OUTPUT (khởi tạo mức HIGH để ngắt relay), sensorPin (D1) là ngõ vào INPUT, buttonPin (D3) là ngõ vào INPUT kéo lên. Trong vòng lặp loop(), vi điều khiển liên tục kiểm tra kết nối với Broker; khi phát hiện cảm biến chuyển động xuất tín hiệu (digitalRead(sensorPin) == LOW), vi điều khiển kéo chân D2 xuống mức LOW để đóng tiếp điểm rơle cấp nguồn cho đèn, đồng thời phát hành các gói tin trạng thái "on" tới các chủ đề /home/sensor_pir/status và /home/switch1/status. Ngược lại, khi không có tín hiệu chuyển động, chân D2 được kéo lên mức HIGH để ngắt relay và phát hành gói tin trạng thái "off".

Nội dung chính theo từng chương

CHƯƠNG 1: LÝ THUYẾT TỔNG QUAN

Chương mở đầu trình bày khái niệm nền tảng về nhà thông minh (Smart Home) và tự động hóa nhà ở (Home Automation), định nghĩa đây là mô hình không gian sống được trang bị các hệ thống tự động tiên tiến phục vụ điều khiển chiếu sáng, kiểm soát nhiệt độ, an ninh và thiết bị đa phương tiện nhằm gia tăng sự an toàn, tiện nghi và tiết kiệm tài nguyên. Tiếp đó, tác giả phân tích cơ sở hình thành các hệ thống đo đạc, cảm biến và đóng ngắt tự động, liên hệ tới các thiết bị đo nhiệt độ, độ ẩm thương mại hiện hành từ các nước phát triển như Phần Lan (Model KLK 100), Thụy Điển (hãng VCP) và Cộng hòa Séc (Model OM352UNI).

Nội dung trọng tâm của chương là việc xác lập 5 yêu cầu công nghệ bắt buộc đối với một hệ thống điều khiển thông minh:

  • Tính tự động: Giảm thiểu tối đa sự can thiệp trực tiếp của con người, giảm hao phí năng lượng điện tiêu thụ trong sinh hoạt và sản xuất.
  • Tính thông minh: Khả năng kết nối mạng Internet theo kiến trúc IoT, cho phép người dùng giám sát và ra lệnh điều khiển từ xa.
  • Tính đơn giản: Cấu trúc mạch và thao tác vận hành dễ tiếp cận, thuận lợi cho việc lắp đặt, bảo trì, bảo dưỡng và xử lý sự cố.
  • Tính thẩm mỹ: Kiểu dáng mẫu mã đa dạng, gọn gàng, độ hoàn thiện cao, đảm bảo độ bền cơ học và vận hành ổn định.
  • Tính thuận tiện: Tối ưu hóa thời gian và công sức trong toàn bộ quy trình từ lắp ráp, sử dụng hàng ngày đến sửa chữa thay thế linh kiện.

CHƯƠNG 2: NỀN TẢNG GIAO TIẾP

Chương 2 đi sâu vào cấu trúc phần mềm điều phối và giao thức truyền thông mạng. Tác giả giới thiệu nền tảng mã nguồn mở Home Assistant (HA / HASS), phân tích sự khác biệt giữa hai phiên bản phân phối là "Home Assistant Core" (cài đặt trực tiếp lên hệ điều hành thông dụng) và "Home Assistant OS" (kết hợp lõi Core với hệ sinh thái công cụ hỗ trợ trên máy ảo hoặc phần cứng chuyên biệt). Tác giả làm rõ các đặc tính nổi bật của Home Assistant: khả năng lưu trữ On-Premises bảo vệ an toàn dữ liệu cá nhân, không lệ thuộc hạ tầng Cloud máy chủ đặt tại nước ngoài, khả năng tích hợp linh hoạt các hệ sinh thái phần cứng từ nhiều thương hiệu khác nhau (Xiaomi, Aqara, Tuya, Philips, IKEA, Apple, Google, Amazon) và hỗ trợ điều khiển rảnh tay qua trợ lý ảo Google Assistant hoặc Amazon Alexa.

Phần tiếp theo của chương thuyết minh chi tiết về giao thức MQTT ra đời từ năm 1999 (phiên bản cập nhật là MQTT 5.0). Văn bản phân tích cơ chế hoạt động của mô hình Pub/Sub thông qua máy chủ trung gian Broker điều phối thông điệp giữa các Client xuất bản (Publisher) và Client đăng ký nhận tin (Subscriber). Các đặc tính kỹ thuật quan trọng của MQTT được liệt kê: gói dữ liệu truyền tải có phần tiêu đề (overhead) rất nhỏ, chạy trên nền TCP/IP, cung cấp 3 cấp độ tin cậy QoS (0, 1, 2) và tối ưu hóa băng thông cho mạng kết nối không ổn định. Ngoài các ưu điểm như tiết kiệm chi phí, dễ mở rộng, giảm tải đường truyền và ứng dụng rộng rãi trong các hệ thống SCADA, tác giả cũng chỉ rõ nhược điểm kỹ thuật của giao thức: Broker không có cơ chế mặc định báo cho Publisher biết thông điệp đã tới đích thành công hay chưa, và khả năng phát sinh lỗ hổng bảo mật nếu các Client gửi thông điệp xấu (Malicious Publisher) xâm nhập hệ thống.

CHƯƠNG 3: THIẾT KẾ HỆ THỐNG

Chương 3 tập trung vào công tác lựa chọn và mô tả thông số kỹ thuật của từng phần tử phần cứng cấu thành mô hình. Trọng tâm là vi mạch SoC ESP8266 (CPU 32-bit xung nhịp 80MHz, tích hợp WiFi, chạy kèm bộ nhớ Flash ngoài) và bo mạch phát triển NodeMCU ESP8266 chạy firmware mã nguồn mở viết bằng Lua. Tác giả lập bảng chi tiết ánh xạ toàn bộ chân GPIO của bo NodeMCU (từ D0 đến D8, chân nạp TX/RX, chân tương tự A0) cùng các cảnh báo về mức logic kéo trở khởi động để tránh lỗi treo nạp chương trình.

Tiếp theo, chương sách mô tả cấu tạo và nguyên lý hoạt động của Module Relay 5V 1 kênh chịu dòng tải 10A ở điện áp 250VAC hoặc 30VDC. Tác giả giải thích chi tiết các chân kết nối tín hiệu (IN - tích cực mức LOW, GND, VCC) và các cặp tiếp điểm chuyển mạch (COM - chân chung, NO - thường mở, NC - thường đóng). Các linh kiện phụ trợ khác cũng được phân tích: cảm biến nhiệt độ - độ ẩm DHT11 (chuẩn giao tiếp 1-wire, tích hợp cảm biến ẩm điện dung và nhiệt điện trở NTC hệ số nhiệt âm, cự ly truyền tín hiệu tới hơn 20m), module màn hình LCD 16x2 ghép nối mạch I2C dùng driver HD44780 (giảm số chân kết nối với vi điều khiển từ 6 chân xuống còn 2 chân SCL và SDA) và mạch sạc pin Li-ion 3.7V (đầu vào 3.2VDC, đầu ra điều chỉnh 5.2VDC, dòng sạc tối đa 1A, dòng xả tối đa 2A, tích hợp mạch bảo vệ quá dòng).

CHƯƠNG 4: CÀI ĐẶT

Chương 4 ghi lại chi tiết các bước cài đặt phần mềm, cấu hình dịch vụ và triển khai hệ thống trong môi trường thực nghiệm. Tác giả hướng dẫn trình tự cài đặt Home Assistant OS trên máy tính chạy hệ điều hành Windows 10 thông qua phần mềm ảo hóa Oracle VM VirtualBox: tải file ảnh .vdi, khởi tạo máy ảo Linux 64-bit, cấp phát bộ nhớ RAM, kích hoạt tính năng "Enable EFI" trong phần thiết lập bo mạch chủ, và chọn chế độ mạng "Bridged Adapter" để máy ảo có địa chỉ IP riêng trong mạng LAN cục bộ (được ghi nhận trong thực nghiệm là dải IP có số hiệu 192.26). Giao diện quản trị sau đó được truy cập qua trình duyệt web tại cổng 8123 để khởi tạo tài khoản quản trị.

Nội dung tiếp theo hướng dẫn cài đặt Add-on Mosquitto broker từ mục Supervisor, thiết lập tài khoản đăng nhập và phân định cổng mạng dịch vụ trong thẻ Configuration. Sau đó, tác giả sử dụng Add-on File Editor để can thiệp vào tập tin configuration.yaml, bổ sung mã nguồn định dạng YAML nhằm khai báo địa chỉ máy chủ MQTT và liên kết các chủ đề state_topic, command_topic, availability_topic cho hai thực thể phần cứng là module relay 5V và cảm biến chuyển động PIR SR505. Trạng thái hoạt động của cổng dịch vụ MQTT Broker được xác thực thông qua công cụ Hercules Terminal. Phần cuối chương giới thiệu sơ đồ thuật toán xử lý luồng dữ liệu của chương trình nhúng.

CHƯƠNG 5: KẾT LUẬN

Chương cuối cùng tổng kết các kết quả kỹ thuật thu được từ quá trình triển khai đề tài và vạch ra các hướng nghiên cứu mở rộng. Tác giả khẳng định đã làm chủ kiến thức học phần Hệ thống nhúng, xây dựng và làm chủ nền tảng quản lý nhà thông minh Home Assistant tại chỗ, nắm vững nguyên lý giao thức MQTT, chế tạo thành công mạch phần cứng NodeMCU ESP8266 giao tiếp ổn định với Broker và hoàn thiện mô hình thiết bị bật tắt đèn thông minh hỗ trợ cả hai chế độ: tự động theo cảm biến chuyển động và điều khiển từ xa qua ứng dụng di động. Đồng thời, chương 5 xác định 3 định hướng hoàn thiện mô hình trong tương lai nhằm nâng cao tính tiện dụng và mở rộng hệ sinh thái thiết bị.

Kết quả và đóng góp

Về mặt kết quả cụ thể, đồ án đã triển khai và kiểm nghiệm thực tế các hạng mục kỹ thuật sau:

  • Chế tạo và đấu nối thành công mạch phần cứng tích hợp vi điều khiển NodeMCU ESP8266, cảm biến chuyển động hồng ngoại PIR SR505 và module Relay 5V 1 kênh (chịu tải định mức 10A / 250VAC) điều khiển bóng đèn chiếu sáng dân dụng.
  • Dựng thành công trạm máy chủ quản lý trung tâm Home Assistant OS trên máy ảo Oracle VM VirtualBox (môi trường Windows 10, cấu hình mạng Bridged Adapter, giao diện quản trị cổng 8123).
  • Tích hợp và vận hành ổn định Add-on Mosquitto broker trên Home Assistant, đóng vai trò trạm trung chuyển dữ liệu MQTT qua cổng mạng 1883 với cơ chế xác thực tài khoản và mật khẩu nội bộ.
  • Xây dựng firmware điều khiển nhúng trên Arduino IDE bằng C++, thiết lập cơ chế kết nối WiFi tự động và xử lý truyền thông MQTT với Broker qua thư viện PubSubClient, tự động gửi các chuỗi payload trạng thái "on"/"off" và "online" tới các topic /home/sensor_pir/status, /home/switch1/status và các topic khả dụng tương ứng.
  • Hoàn thành chức năng điều khiển kép cho thiết bị đèn: vừa tự động bật/tắt khi phát hiện tín hiệu chuyển động của người dùng trong phòng, vừa cho phép người dùng giám sát trạng thái và can thiệp đóng ngắt cưỡng bức từ xa thông qua ứng dụng di động HassIO.

Về giải pháp và đóng góp kỹ thuật do tác giả tự nêu:

  • Ứng dụng giải pháp điều khiển nhà thông minh lưu trữ tại chỗ (On-Premises) bằng nền tảng mã nguồn mở Home Assistant, khắc phục nhược điểm phụ thuộc đường truyền Internet và máy chủ đám mây nước ngoài của các thiết bị thương mại đóng, đảm bảo tính bảo mật và sự vận hành liên tục cho mạng gia đình.
  • Đề xuất giải pháp phối ghép module chuyển đổi giao tiếp I2C cho màn hình LCD 16x2, giúp tiết kiệm triệt để tài nguyên chân I/O trên dòng vi điều khiển có số lượng chân vào/ra hạn chế như ESP8266.
  • Đóng góp mô hình thực nghiệm trực quan, chi phí thấp, kết hợp hiệu quả giữa lý thuyết học phần Hệ thống nhúng với bài toán tự động hóa chiếu sáng thực tế.

Hạn chế và hướng nghiên cứu tiếp

Các hạn chế được văn bản đề cập trực tiếp hoặc phản ánh qua phạm vi thực hiện:

  • Tác giả tự nhận định do giới hạn về mặt thời gian và kinh nghiệm nghiên cứu thực tế, mô hình đồ án vẫn còn gặp phải những vấn đề kỹ thuật chưa thể khắc phục triệt để.
  • Có sự thiếu đồng nhất về thông tin đề tài trong văn bản: trang bìa ghi tên đề tài là "Thiết Kế Hệ thống Cảm Biến Chuyển Động Và ReLay" (thực hiện bởi sinh viên Vũ Tiến Hoàng và Phạm Minh Hùng), trong khi phiếu giao đề tài và lời nói đầu lại ghi tên "Thiết kế cảm biến độ ẩm, nhiệt độ và rơlay" (giao cho sinh viên Nguyễn Thị Hoài và Nguyễn Thanh Hoa). Mặc dù chương 3 có giới thiệu cảm biến DHT11, toàn bộ phần cài đặt, cấu hình YAML và mã nguồn chương trình thực tế tại chương 4 và phụ lục chỉ triển khai cảm biến chuyển động PIR SR505 và Relay.
  • Hệ thống vi điều khiển sử dụng sóng WiFi tiêu chuẩn nên mức tiêu hao công suất còn tương đối cao, chưa tối ưu khi triển khai các điểm nút cảm biến chạy nguồn pin độc lập trong thời gian dài.
  • Kiến trúc MQTT của hệ thống chưa tích hợp các lớp mã hóa bảo mật chuyên sâu (như TLS/SSL) và phụ thuộc vào tính toàn vẹn của Broker khi xử lý thông điệp từ các Client.

Các hướng phát triển mở rộng được tác giả đề xuất tại Chương 5:

  • Tiếp tục nghiên cứu, chế tạo và tích hợp thêm nhiều loại thiết bị phần cứng thông minh khác vào hệ sinh thái HassIO thông qua giao thức MQTT, bao gồm cảm biến nhiệt độ, cảm biến độ ẩm môi trường và cảm biến chuyển động đa năng.
  • Cấu hình tích hợp dịch vụ đám mây Nabu Casa của Home Assistant Cloud nhằm liên kết hệ thống với nền tảng Google Assistant, hiện thực hóa tính năng điều khiển bật tắt thiết bị bằng giọng nói thông qua trợ lý ảo.
  • Nghiên cứu, thử nghiệm chuyển đổi sang các giao thức truyền thông không dây công suất thấp như Zigbee để phục vụ cho các nút mạng cảm biến không dây vận hành bằng nguồn pin.

Giá trị tham khảo

Đồ án là nguồn tài liệu tham khảo thực nghiệm phù hợp cho:

  • Sinh viên các ngành Kỹ thuật Điện tử, Kỹ thuật Máy tính, Điện tử - Viễn thông, Công nghệ Thông tin và Tự động hóa đang thực hiện đồ án môn học Hệ thống nhúng, đồ án vi điều khiển hoặc các bài tập lớn về đề tài Internet of Things (IoT).
  • Người học và kỹ sư mới bắt đầu tiếp cận nền tảng nhà thông minh mã nguồn mở, cần tài liệu hướng dẫn thực hành triển khai Home Assistant và MQTT Broker trong mạng nội bộ.

Các phần nội dung có giá trị tham khảo ứng dụng cao:

  • Bảng khảo sát sơ đồ chân và lưu ý cấu hình khởi động của bo mạch NodeMCU ESP8266 tại Chương 3, giúp người thiết kế tránh các bẫy phần cứng phổ biến liên quan đến các chân kéo trở khởi động (GPIO0, GPIO2, GPIO15, GPIO16).
  • Quy trình từng bước hướng dẫn thiết lập máy ảo VirtualBox chạy Home Assistant OS với cấu hình card mạng Bridged Adapter tại Chương 4.
  • Cú pháp mẫu định dạng cấu hình file configuration.yaml để thêm broker và khai báo các thực thể chuyển mạch (switch), cảm biến nhị phân (binary_sensor) trong Home Assistant.
  • Toàn bộ đoạn mã nguồn C++ hoàn chỉnh trong phần Phụ lục minh họa phương thức sử dụng thư viện PubSubClient để duy trì kết nối mạng WiFi, xử lý ngắt kết nối MQTT và xuất bản gói tin trạng thái.

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

1. Vi điều khiển nào được lựa chọn làm khối xử lý trung tâm của mô hình và có đặc tính kỹ thuật gì nổi bật?
Hệ thống sử dụng bo mạch phát triển NodeMCU ESP8266, tích hợp vi mạch SoC ESP8266. Vi mạch này sử dụng CPU 32-bit với xung nhịp vận hành 80MHz, tích hợp sẵn khối thu phát sóng WiFi bên trong, chạy firmware mã nguồn mở trên nền ngôn ngữ Lua, hỗ trợ bộ nhớ Flash ngoài và các chuẩn giao tiếp nối tiếp như UART, SPI, I2C.

2. Nền tảng điều khiển trung tâm Home Assistant được triển khai trên môi trường nào và cấu hình mạng ra sao?
Home Assistant được triển khai dưới dạng phiên bản Home Assistant OS thông qua phần mềm tạo máy ảo Oracle VM VirtualBox (sử dụng tập tin đĩa ảo .vdi) trên máy tính cá nhân chạy hệ điều hành Windows 10. Trong thiết lập máy ảo, nhóm tác giả kích hoạt chế độ "Enable EFI" và cấu hình card mạng ở chế độ "Bridged Adapter" (Cầu nối) để máy ảo nhận trực tiếp một địa chỉ IP nội bộ độc lập trong dải mạng LAN cục bộ.

3. Mã nguồn chương trình nhúng trong phụ lục sử dụng các chân GPIO nào của bo NodeMCU ESP8266?
Dựa trên mã nguồn C++ tại phần phụ lục, chương trình khai báo và sử dụng 3 chân vật lý:

  • Chân sensorPin = D1 (tương ứng GPIO5): Kết nối nhận tín hiệu số từ cảm biến chuyển động PIR SR505.
  • Chân switchPin = D2 (tương ứng GPIO4): Xuất tín hiệu điều khiển đóng ngắt cuộn hút của Module Relay 5V.
  • Chân buttonPin = D3 (tương ứng GPIO0): Chân kết nối nút bấm cơ khí điều khiển thủ công bằng tay.

4. Module Relay 5V trong đồ án hoạt động theo nguyên lý kích hoạt nào và chịu được tải điện tối đa là bao nhiêu?
Module Relay 5V 1 kênh trong đồ án hoạt động theo nguyên lý tích cực mức thấp (Active LOW): tiếp điểm của rơle sẽ được đóng khi chân điều khiển IN nhận tín hiệu mức điện áp THẤP (LOW/0V) từ vi điều khiển và ngắt tiếp điểm khi chân IN ở mức điện áp CAO (HIGH). Khả năng chịu tải tối đa của các tiếp điểm rơle đạt mức dòng điện 10A ở điện áp xoay chiều 250VAC hoặc dòng điện một chiều 30VDC.

5. Cơ chế truyền thông giữa NodeMCU ESP8266 và Home Assistant được cấu hình thông qua những chủ đề (topics) MQTT nào?
Trong tập tin cấu hình configuration.yaml và mã nguồn chương trình, hệ thống thiết lập các kênh chủ đề trao đổi dữ liệu:

  • Đối với module Relay: chủ đề trạng thái switchStateTopic là /home/switch1/status và chủ đề khả dụng avaiSwitchTopic là /home/switch1/available.
  • Đối với cảm biến chuyển động: chủ đề trạng thái sensorStateTopic là /home/sensor_pir/status và chủ đề khả dụng avaiSensorTopic là /home/sensor_pir/available.
    Dữ liệu tải trọng (payload) được xuất bản qua các topic trạng thái bao gồm các chuỗi ký tự "on" (khi có chuyển động/đèn bật) và "off" (khi không có chuyển động/đèn tắt).

Kết luận

Đồ án môn học "Hệ thống nhúng" của nhóm sinh viên Trường Đại học Kỹ thuật Công nghiệp - Đại học Thái Nguyên đã thiết kế, chế tạo và thử nghiệm thành công mô hình điều khiển đóng ngắt đèn tự động kết hợp giám sát từ xa. Hệ thống đã tích hợp hiệu quả phần cứng vi điều khiển NodeMCU ESP8266, module Relay 5V và cảm biến chuyển động PIR SR505 với nền tảng quản lý nhà thông minh cục bộ Home Assistant OS thông qua giao thức truyền thông mạng nhẹ MQTT. Mặc dù còn ghi nhận sự không nhất quán giữa phiếu giao đề tài (cảm biến nhiệt độ, độ ẩm) và kết quả triển khai thực tế (cảm biến chuyển động bật tắt đèn), đồ án đã hoàn thành trọn vẹn quy trình kỹ thuật từ ảo hóa máy chủ, cấu hình hạ tầng mạng nội bộ đến lập trình mã nhúng điều khiển thiết bị chấp hành.