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

Trong xu thế phát triển của công nghệ tự động hóa và Internet vạn vật (IoTs), nhu cầu giám sát và tương tác từ xa với các thiết bị điện trong gia đình cũng như văn phòng ngày càng trở nên thiết thực. Việc kiểm soát thiết bị gia dụng và theo dõi môi trường thông qua điện thoại thông minh kết nối mạng Internet giúp nâng cao sự tiện lợi, an toàn và tối ưu hóa năng lượng so với việc thao tác công tắc vật lý truyền thống. Xuất phát từ yêu cầu thực tiễn đó, đồ án tốt nghiệp ngành Công nghệ Kỹ thuật Máy tính tại Trường Đại học Sư phạm Kỹ thuật Thành phố Hồ Chí Minh đã thực hiện đề tài "Thiết kế và thi công hệ thống điều khiển thiết bị từ xa qua Internet bằng Smartphone" do sinh viên Nguyễn Huy Thông thực hiện dưới sự hướng dẫn của ThS. Lê Minh.

Mục tiêu nghiên cứu của đề tài bao gồm các nội dung cụ thể sau:

  1. Thiết kế và thi công hệ thống phần cứng điều khiển thiết bị điện (đèn, quạt) và đo đạc thông số môi trường (nhiệt độ, độ ẩm).
  2. Tích hợp hai chế độ vận hành: Chế độ tự động (Auto) cho phép điều khiển và hẹn giờ bật/tắt thiết bị từ xa thông qua ứng dụng Android khi có kết nối Internet; chế độ thủ công (Manual) cho phép bật/tắt thiết bị tại chỗ bằng cảm ứng chạm trực tiếp trên phần cứng kể cả khi mất kết nối mạng.
  3. Thu thập dữ liệu nhiệt độ, độ ẩm môi trường từ cảm biến để hiển thị đồng thời trên màn hình LCD của phần cứng và giao diện ứng dụng điện thoại.
  4. Xây dựng khả năng tự động cấu hình lại mạng Wifi cho hệ thống khi tín hiệu mạng bị chập chờn hoặc mất kết nối.

Nhiệm vụ thực hiện của đồ án được văn bản quy định gồm 5 bước:

  1. Nghiên cứu tài liệu chuyên ngành liên quan đến vi xử lý, mạch điện tử, giao tiếp mạng và lập trình Android.
  2. Hình thành sơ đồ khối và thiết kế mô hình hệ thống tổng thể.
  3. Viết giao diện và lập trình ứng dụng Android trên nền tảng di động.
  4. Thi công, lắp ráp hoàn thiện hệ thống phần cứng.
  5. Chỉnh sửa, chạy thử nghiệm và hoàn thiện toàn bộ hệ thống.

Đối tượng nghiên cứu của đồ án là các module phần cứng và nền tảng phần mềm nhúng bao gồm: Kit vi điều khiển ESP8266 NodeMCU Lua CP2102, Board Arduino Uno R3, cảm biến nhiệt độ - độ ẩm DHT11, module Relay 2 kênh 5V, module thời gian thực RTC DS3231, module cảm ứng chạm TTP223B mini, màn hình LCD2004 tích hợp mạch chuyển giao tiếp I2C, cơ sở dữ liệu thời gian thực Google Firebase, máy chủ thời gian NTP Server và hệ điều hành Android.

Phạm vi nghiên cứu của đề tài được giới hạn ở quy mô mô hình phòng nhỏ phục vụ điều khiển 2 thiết bị điện 220V AC (đèn, quạt); tương tác di động chuyên biệt cho hệ điều hành Android; thời gian thực hiện đề tài diễn ra từ ngày 08/03/2019 đến ngày 11/07/2019 tại Trường Đại học Sư phạm Kỹ thuật Thành phố Hồ Chí Minh.

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

Khung lý thuyết của đề tài được xây dựng dựa trên các nền tảng vi điều khiển, chuẩn truyền thông và kiến trúc phần mềm chuyên dụng:

  • Nền tảng xử lý vi điều khiển: Kết hợp vi điều khiển ATmega328P trên board Arduino Uno R3 (vi điều khiển 8-bit, xung nhịp 16 MHz, bộ nhớ Flash 32 KB, SRAM 2 KB, EEPROM 1 KB, 14 chân Digital I/O, 6 chân Analog) với Kit ESP8266 NodeMCU v1.0 (chip SoC ESP8266EX trên module ESP-12E, Wifi chuẩn 802.11 b/g/n băng tần 2.4 GHz, bộ nhớ Flash 4 MB, tích hợp giao thức TCP/IP, điện áp hoạt động 3.3V).
  • Chuẩn truyền thông công nghiệp và nối tiếp: Chuẩn I2C (Inter-Integrated Circuit) sử dụng 2 đường tín hiệu SCL (xung nhịp 100 kHz - 400 kHz) và SDA (dữ liệu hai chiều) với địa chỉ 7-bit mặc định 0x27 để điều khiển màn hình LCD và giao tiếp với IC thời gian thực; chuẩn UART (Universal Asynchronous Receiver - Transmitter) truyền dữ liệu nối tiếp không đồng bộ giữa Arduino và NodeMCU qua các chân truyền/nhận (TX/RX) với cấu trúc khung truyền gồm Start bit, Data bits, Parity bit và Stop bit.
  • Nền tảng phần mềm và dịch vụ mạng: Kiến trúc 5 lớp của hệ điều hành Android (Linux Kernel, Libraries, Android Runtime với Dalvik Virtual Machine, Application Framework, Applications) được lập trình bằng ngôn ngữ Java và giao diện XML trên môi trường Android Studio; giao thức mạng NTP (Network Time Protocol) đồng bộ thời gian thực chuẩn UTC thông qua máy chủ thời gian; cơ sở dữ liệu thời gian thực Firebase Realtime Database của Google lưu trữ cấu trúc dữ liệu theo định dạng JSON và hỗ trợ đồng bộ dữ liệu hai chiều tức thời.

Phương pháp nghiên cứu thực tế được tác giả áp dụng bao gồm:

  • Phương pháp tổng hợp tài liệu lý thuyết: Hệ thống hóa kiến thức chuyên môn về mạch điện tử cơ bản, kỹ thuật vi xử lý, lập trình ứng dụng di động và truyền thông dữ liệu.
  • Phương pháp tra cứu tài liệu chuyên ngành: Khai thác tài liệu kỹ thuật trực tuyến từ Internet, bảng thông số kỹ thuật (datasheet) của các linh kiện bán dẫn và diễn đàn cộng đồng công nghệ.
  • Phương pháp khảo sát thực tế: Tìm hiểu và phân tích cấu trúc hoạt động của các hệ thống điều khiển tự động và mô hình nhà thông minh hiện hành.
  • Phương pháp thực nghiệm: Thi công mạch phần cứng thực tế, lập trình giải thuật trên Arduino IDE và Android Studio, sau đó tiến hành đo đạc, kiểm tra độ ổn định và tinh chỉnh sai số hoạt động.
  • Phương pháp tham khảo chuyên gia: Tiếp thu định hướng khoa học và giải pháp kỹ thuật từ giảng viên hướng dẫn và các kỹ sư có kinh nghiệm trong cùng lĩnh vực.

Nguồn dữ liệu của nghiên cứu là các thông số vật lý môi trường đo đạc trực tiếp từ cảm biến DHT11 (nhiệt độ từ 0°C đến 50°C với sai số ±2°C; độ ẩm từ 20% đến 90% RH với sai số ±5% RH), dữ liệu thời gian thực từ IC DS3231 kết hợp đồng bộ qua giao thức NTP, cùng dữ liệu trạng thái điều khiển lưu trữ có cấu trúc trên máy chủ đám mây Firebase.

Thiết kế và triển khai

Hệ thống được thiết kế theo kiến trúc tích hợp phần cứng - máy chủ đám mây - ứng dụng di động, phân chia thành 4 thành phần chính: Khối xử lý trung tâm, Server Cloud trung gian, Ứng dụng di động Android và Khối thiết bị ngoại vi.

+-----------------------------------------------------------------------+
|                         MÔ HÌNH TOÀN HỆ THỐNG                         |
+-----------------------------------------------------------------------+
 [Khối Cảm Biến DHT11] ---> (UART) ---> [Bộ Xử Lý Trung Tâm] <---> [Cloud Firebase]
 [Khối RTC DS3231]     ---> (I2C)  --->  - NodeMCU ESP8266              ^
 [Khối Nút Chạm TTP]   ----------->  - Arduino Uno R3                 |
 [Khối Hiển Thị LCD]   <--- (I2C)  ---                                |
 [Khối Relay 2 Kênh]   <--------------- [Khối Chấp Hành]              v
                                                               [App Android]

Thiết kế phần cứng

Phần cứng của hệ thống được tổ chức thành 7 khối chức năng chuyên biệt:

  1. Khối vi điều khiển trung tâm: Sử dụng NodeMCU ESP8266 làm bộ điều khiển chính, chịu trách nhiệm kết nối mạng Wifi, đồng bộ dữ liệu với Firebase, quét tín hiệu cảm ứng chạm, xuất lệnh điều khiển relay và hiển thị thông tin lên LCD. Board Arduino Uno R3 đóng vai trò xử lý phụ, chuyên trách đọc dữ liệu từ cảm biến DHT11 và truyền sang NodeMCU qua cổng UART.
  2. Khối hiển thị: Màn hình LCD2004 kết hợp mạch chuyển đổi giao tiếp PCF8574 I2C giúp giảm số lượng chân kết nối từ 16 chân xuống còn 2 chân tín hiệu (SDA nối D2, SCL nối D1 của NodeMCU).
  3. Khối cảm biến: Cảm biến DHT11 đo nhiệt độ và độ ẩm thông qua giao tiếp một dây (One-wire), chân DATA của cảm biến được kết nối vào chân số 4 của Arduino Uno R3.
  4. Khối thời gian thực: Module RTC DS3231 tích hợp thạch anh bù nhiệt độ và pin phụ CR2032 được kết nối với NodeMCU qua chuẩn I2C (chân SDA nối D2, chân SCL nối D1).
  5. Khối chấp hành: Module Relay 5V 2 kênh cách ly quang, hỗ trợ đóng ngắt tải dòng xoay chiều AC 250V/10A hoặc một chiều DC 30V/10A. Chân IN1 của relay nối chân D5, chân IN2 nối chân D6 của NodeMCU.
  6. Khối điều khiển: 2 module cảm ứng điện dung một chạm TTP223B mini có đèn báo trạng thái, ngõ ra của cảm ứng thiết bị 1 nối chân D7, thiết bị 2 nối chân D8 của NodeMCU.
  7. Khối nguồn: Nguồn điện hệ thống được tính toán dựa trên mức tiêu thụ điện áp và dòng điện danh định của từng linh kiện thành phần:
Tên linh kiện Điện áp hoạt động Dòng điện tiêu thụ
Kit NodeMCU ESP8266 5V DC (chân Vin) 20 mA
Cảm biến DHT11 3V - 5.5V DC 2.5 mA
Module Relay 2 kênh 5V DC 200 mA
Nút nhấn / Module chuyển I2C 2.5V - 6V DC Dòng phụ trợ
Màn hình LCD2004 5V DC Dòng phụ trợ
Cảm ứng chạm TTP223B Mini 3V - 5V DC 0.025 mA
Module RTC DS3231 3.3V - 5V DC Dòng phụ trợ
Board Arduino Uno R3 5V DC (USB/Vin) 500 mA

Tổng dòng điện tiêu thụ toàn mạch được tác giả xác định theo công thức: $$\sum I = 20\text{ mA} + 2.5\text{ mA} + 200\text{ mA} + 0.025\text{ mA} + 500\text{ mA} = 722.525\text{ mA} \approx 0.723\text{ A}$$

Do điện áp làm việc chính của hệ thống là 5V DC và tổng dòng điện tiêu thụ nhỏ hơn 1A, tác giả đã lựa chọn nguồn Adapter 5V - 1A cắm trực tiếp vào lưới điện xoay chiều 220V AC để cấp nguồn nuôi toàn bộ hệ thống.

Sơ đồ kết nối chân giữa hai vi điều khiển qua cổng UART:

  • Chân Vin (Arduino Uno R3) nối chân Vin (NodeMCU)
  • Chân GND (Arduino Uno R3) nối chân GND (NodeMCU)
  • Chân số 2 - TX phần mềm (Arduino Uno R3) nối chân D3 - RX (NodeMCU)
  • Chân số 3 - RX phần mềm (Arduino Uno R3) nối chân D4 - TX (NodeMCU)

Thiết kế phần mềm và cơ sở dữ liệu

Phần mềm hệ thống được xây dựng đồng bộ giữa máy chủ đám mây Google Firebase và ứng dụng Android:

  • Cơ sở dữ liệu đám mây Firebase Realtime Database: Lưu trữ dữ liệu dưới cấu trúc cây JSON, hỗ trợ cập nhật dữ liệu cục bộ khi mất mạng và tự động đồng bộ khi có kết nối trở lại. Cấu trúc trường dữ liệu bao gồm:
Tên trường dữ liệu Kiểu dữ liệu / Giá trị Chức năng mô tả
ID Firebase Chuỗi ký tự định danh Địa chỉ kết nối riêng của ứng dụng trên máy chủ
NHIETDO Số nguyên / Thập phân Dữ liệu nhiệt độ môi trường đo từ cảm biến
DOAM Số nguyên / Thập phân Dữ liệu độ ẩm môi trường đo từ cảm biến
MODE Ký tự ("M" hoặc "A") "M" xác định chế độ Manual; "A" xác định chế độ Auto
TRANGTHAI Cấu trúc chứa thiết bị Trạng thái bật hoặc tắt của từng tải đầu ra
THIETBI1 Chuỗi ("ON" / "OFF") Trạng thái đóng/ngắt của Relay kênh 1
THIETBI2 Chuỗi ("ON" / "OFF") Trạng thái đóng/ngắt của Relay kênh 2
HENGIO Cấu trúc thời gian Lưu trữ các giá trị thời gian đặt lịch bật/tắt thiết bị
Giomo / Phutmo Số nguyên (Giờ:Phút) Thời điểm mở thiết bị theo thời gian thực
Giotat / Phuttat Số nguyên (Giờ:Phút) Thời điểm ngắt thiết bị theo thời gian thực
  • Ứng dụng di động Android: Được thiết kế trên Android Studio bằng ngôn ngữ Java và XML, tuân thủ nguyên lý giao diện phẳng Material Design của Google. Giao diện người dùng được phân chia thành 2 Tab chính:
    • Tab 1 (Màn hình điều khiển): Bố trí các nút bấm tương tác đóng/ngắt cho Thiết bị 1 và Thiết bị 2 với cơ chế hiển thị màu trực quan (đèn xanh khi thiết bị đang BẬT, đèn đỏ khi thiết bị TẮT); một nút gạt chuyển đổi chế độ giữa Manual và Auto; giao diện cài đặt hẹn giờ chi tiết gồm các khung chọn Giờ mở, Phút mở, Giờ tắt và Phút tắt.
    • Tab 2 (Màn hình nhiệt độ): Hiển thị trực tiếp các thông số nhiệt độ (°C) và độ ẩm (% RH) thu nhận từ cảm biến theo thời gian thực khi có kết nối mạng Internet.

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

Chương 1: Giới thiệu

Chương 1 trình bày tổng quan về bối cảnh bùng nổ của cuộc cách mạng công nghệ và xu hướng phát triển của các hệ sinh thái thông minh (Smart city, Smart home, Smart garden). Tác giả phân tích tính tất yếu của việc ứng dụng điện thoại thông minh kết nối mạng toàn cầu để giám sát trạng thái và điều khiển thiết bị điện gia dụng. Từ đó, tác giả xác định mục tiêu nghiên cứu, phân tích các giới hạn kỹ thuật của mô hình thực nghiệm, trình bày 5 phương pháp tiếp cận nghiên cứu và nêu rõ đối tượng, phạm vi cùng bố cục tổng quát của quyển báo cáo tốt nghiệp.

Chương 2: Cơ sở lý thuyết

Chương 2 tập trung khảo cứu chi tiết các linh kiện phần cứng, công nghệ mạng và nền tảng phần mềm nền tảng:

  • Cung cấp sơ đồ chân, cấu trúc phần cứng và bảng thông số vận hành của vi điều khiển Arduino Uno R3 (ATmega328P) và Kit phát triển ESP8266 NodeMCU Lua CP2102.
  • Phân tích nguyên lý giao tiếp I2C qua 2 đường tín hiệu SCL/SDA, cách thức gán địa chỉ 7-bit và chức năng của mạch chuyển đổi LCD I2C nhằm giải phóng chân vi điều khiển.
  • Khảo sát đặc tính kỹ thuật của cảm biến nhiệt độ - độ ẩm DHT11 với giao thức truyền thông kỹ thuật số One-wire; cấu tạo và độ trôi nhiệt của IC thời gian thực DS3231 tích hợp thạch anh và nguồn pin dự phòng CR2032.
  • Trình bày cơ cấu đóng ngắt tiếp điểm (COM, NO, NC) của Module Relay 2 kênh kích mức cao hoặc mức thấp qua transistor NPN/PNP; giải thích nguyên lý khung truyền (Frame), tốc độ Baud và các thanh ghi trạng thái của chuẩn truyền thông nối tiếp UART.
  • Phân tích kiến trúc 5 tầng của hệ điều hành Android, vai trò của máy ảo Dalvik, các công cụ JDK, SDK, Android Studio; đồng thời làm rõ phương thức đồng bộ thời gian UTC dưới định dạng timestamps qua giao thức máy chủ NTP Server.

Chương 3: Thiết kế hệ thống

Chương 3 trình bày giải pháp kỹ thuật, quy trình thiết kế và thi công hệ thống:

  • Xây dựng mô hình khái quát hệ thống gồm 4 thành phần chức năng tương tác qua lại.
  • Phân tích sơ đồ khối phần cứng gồm 7 khối chức năng; thuyết minh nguyên lý phối hợp truyền thông UART giữa Arduino Uno R3 và NodeMCU ESP8266; lập bảng tính toán chi tiết dòng tiêu thụ của từng module để đưa ra quyết định lựa chọn bộ nguồn Adapter 5V - 1A.
  • Thuyết minh sơ đồ nối dây chi tiết giữa các chân tín hiệu của NodeMCU với mạch LCD I2C, module RTC DS3231, module Relay 2 kênh, hai phím cảm ứng chạm TTP223B mini và kết nối cảm biến DHT11 vào Arduino.
  • Trình bày giải pháp phần mềm sử dụng Google Firebase Realtime Database làm cơ sở dữ liệu trung gian, thiết lập bảng lưu trữ dữ liệu dạng JSON cho các thông số đo đạc và trạng thái điều khiển; thiết kế lưu đồ thuật toán chính của Server, giải thuật đọc cảm biến, giải thuật truyền nhận UART, thuật toán xử lý chế độ Auto/Manual và chức năng hẹn giờ; thiết kế giao diện ứng dụng Android 2 Tab theo chuẩn Material Design.

Chương 4: Kết quả

Chương 4 phản ánh toàn bộ kết quả chế tạo mô hình thực tế và thử nghiệm hoạt động:

  • Chế tạo hoàn chỉnh mô hình phần cứng thực tế với cách bố trí gọn gàng các khối vi điều khiển, module relay, cảm biến, màn hình LCD và công tắc cảm ứng chạm.
  • Kiểm thử thành công chế độ Manual: Khi chạm vào phím cảm ứng TTP223B trên board phần cứng, đèn LED báo sáng và relay lập tức chuyển trạng thái đóng/ngắt thiết bị tải điện, màn hình LCD hiển thị trạng thái tương ứng; thao tác hoạt động bình thường cả khi có mạng lẫn khi mất mạng.
  • Kiểm thử thành công chế độ Auto trên ứng dụng Android: Sau khi chuyển switch sang chế độ Auto, người dùng thao tác đóng/ngắt thiết bị thông qua nút bấm trên ứng dụng di động với phản hồi đổi màu biểu tượng (xanh/đỏ) đồng bộ với đèn báo relay trên phần cứng.
  • Kiểm thử tính năng hẹn giờ: Thiết lập thành công mốc Giờ mở/Phút mở và Giờ tắt/Phút tắt trên giao diện ứng dụng; hệ thống so khớp chính xác dữ liệu cài đặt với thời gian thực của module RTC DS3231 để tự động kích hoạt hoặc ngắt thiết bị; giao diện ứng dụng hiển thị thông báo hẹn giờ thành công.
  • Kiểm thử chức năng đo lường môi trường: Cảm biến DHT11 thu nhận chính xác các giá trị nhiệt độ và độ ẩm, truyền dữ liệu ổn định từ Arduino sang NodeMCU qua UART để hiển thị trực tiếp lên LCD2004 và cập nhật tức thời lên Tab 2 của ứng dụng Android qua mạng Internet.

Chương 5: Kết luận và hướng phát triển

Chương 5 đúc kết các kết quả đạt được đối chiếu với mục tiêu đặt ra ban đầu, chỉ rõ các hạn chế kỹ thuật còn tồn đọng trong quá trình thử nghiệm và đề xuất các giải pháp nâng cấp, mở rộng tính năng cho hệ thống trong tương lai.

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

Về kết quả kỹ thuật, đồ án đã chế tạo thành công một mô hình hoàn chỉnh có các thông số và tính năng vận hành đáp ứng yêu cầu thiết kế ban đầu:

  • Hệ thống vận hành ổn định trên bộ nguồn Adapter 5V - 1A với tổng dòng điện tiêu thụ danh định của toàn mạch ở mức xấp xỉ 0.723A.
  • Điều khiển đóng ngắt an toàn 2 thiết bị điện dân dụng thông qua module relay 2 kênh hỗ trợ điện áp tải lên đến AC 250V/10A.
  • Đo đạc chính xác thông số môi trường qua cảm biến DHT11 trong dải nhiệt độ 0°C đến 50°C (sai số ±2°C) và dải độ ẩm 20% đến 90% RH (sai số ±5% RH); dữ liệu hiển thị rõ nét trên màn hình LCD2004 qua giao tiếp I2C 2 dây và cập nhật liên tục lên ứng dụng di động.
  • Xây dựng thành công cơ chế giao tiếp nội bộ nối tiếp không đồng bộ UART giữa Arduino Uno R3 và Kit NodeMCU ESP8266 để phân tách nhiệm vụ đọc cảm biến và truyền thông dữ liệu mạng.
  • Triển khai ứng dụng di động Android với giao diện Material Design gồm 2 Tab, liên kết đồng bộ hai chiều với máy chủ đám mây Firebase Realtime Database dưới định dạng JSON; thực hiện chính xác chức năng hẹn giờ bật/tắt thiết bị dựa trên thời gian thực cung cấp bởi IC DS3231 và máy chủ NTP.

Về giải pháp và đóng góp tự nêu, tác giả đã đưa ra một số giải pháp kỹ thuật thiết thực:

  • Giải pháp kết hợp linh hoạt hai vi điều khiển: Tận dụng thế mạnh đo đạc tín hiệu số/tương tự ổn định của Arduino Uno R3 kết hợp với khả năng kết nối Wifi và xử lý TCP/IP của chip ESP8266 trên NodeMCU, giúp hệ thống không bị quá tải bộ nhớ và treo vi xử lý khi vừa quét cảm biến vừa duy trì kết nối Internet.
  • Giải pháp tiết kiệm chân I/O: Ứng dụng module I2C cho màn hình LCD2004 giúp tối ưu hóa tài nguyên phần cứng của NodeMCU, dành các chân GPIO còn lại cho module relay và cảm ứng điện dung.
  • Giải pháp duy trì vận hành kép: Đảm bảo khả năng bật/tắt thiết bị thủ công tại chỗ khi mất mạng Internet nhờ cảm ứng chạm TTP223B, khắc phục nhược điểm mất quyền kiểm soát phần cứng thường gặp ở các hệ thống IoT thuần trực tuyến.

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

Về hạn chế thực tế, văn bản đồ án chỉ rõ các điểm giới hạn sau:

  • Nguồn tài liệu chuyên ngành trong nước về lĩnh vực này thời điểm thực hiện còn hạn chế, đa phần phải tham khảo tài liệu nước ngoài nên việc xây dựng thuật toán còn gặp khó khăn.
  • Quy mô hệ thống mới dừng lại ở mức mô hình nhỏ trong phòng; số lượng thiết bị điều khiển còn ít (chỉ hỗ trợ đóng ngắt 2 thiết bị đơn giản như đèn và quạt).
  • Khả năng tương thích nền tảng còn hạn chế, ứng dụng di động mới chỉ xây dựng và hoạt động trên hệ điều hành Android, chưa hỗ trợ các hệ điều hành khác như iOS.
  • Khả năng đáp ứng thời gian thực chưa đạt mức hoàn hảo; tính năng tự phục hồi khi có mạng đột ngột trở lại chưa tối ưu, hệ thống yêu cầu phải khởi động lại (reset) phần cứng mới có thể tiếp tục thao tác điều khiển qua ứng dụng di động.
  • Module RTC DS3231 nếu mất điện trong thời gian dài sẽ bị mất cấu hình thời gian ban đầu và phải thiết lập lại, dẫn đến sai lệch thời gian kích hoạt hẹn giờ.

Về hướng nghiên cứu tiếp, tác giả đề xuất các định hướng nâng cấp bao gồm:

  • Mở rộng quy mô phần cứng để tăng số lượng và chủng loại thiết bị điều khiển, không chỉ dừng lại ở 2 kênh tải đơn giản.
  • Phát triển thêm ứng dụng trên nền tảng iOS hoặc giao diện Web để tăng tính đa dạng trong tương tác người dùng.
  • Tối ưu hóa thuật toán phần mềm của NodeMCU để hệ thống tự động kết nối lại máy chủ Firebase ngay khi có mạng Internet trở lại mà không cần phải khởi động lại nguồn phần cứng.
  • Nâng cao tính ổn định, độ bảo mật truyền thông và hoàn thiện thiết kế vỏ hộp công nghiệp cho mô hình thiết bị.

Giá trị tham khảo

Đồ án tốt nghiệp này là tài liệu tham khảo kỹ thuật hữu ích cho sinh viên các ngành Công nghệ Kỹ thuật Máy tính, Điện tử - Viễn thông, Công nghệ Thông tin, Kỹ thuật Điều khiển và Tự động hóa, cũng như những người nghiên cứu đang thực hiện các đề tài về hệ thống nhúng và ứng dụng IoT cơ bản.

Những nội dung mang giá trị tham khảo nổi bật bao gồm:

  • Kỹ thuật phối ghép vi điều khiển: Phương thức kết nối và phân luồng dữ liệu giữa Arduino Uno R3 và Kit NodeMCU ESP8266 thông qua chuẩn truyền thông nối tiếp UART để tối ưu hóa nhiệm vụ đọc cảm biến và truyền dữ liệu mạng.
  • Tính toán thiết kế nguồn nuôi: Bảng tổng hợp dòng điện và điện áp thực tế của các module ngoại vi, làm cơ sở mẫu cho việc tính toán công suất tải và lựa chọn nguồn nuôi chuẩn xác cho các hệ thống phần cứng tương tự.
  • Tích hợp cơ sở dữ liệu thời gian thực: Cách thức thiết lập cây thư mục dữ liệu JSON trên Google Firebase Realtime Database và cấu hình kết nối trực tiếp với ESP8266 mà không cần đăng ký tên miền hay thuê máy chủ riêng.
  • Lập trình ứng dụng Android điều khiển ngoại vi: Quy trình xây dựng ứng dụng di động trên Android Studio với giao diện Material Design, cách quản lý chuyển đổi chế độ Manual/Auto và thuật toán xử lý dữ liệu hẹn giờ đồng bộ với đồng hồ thời gian thực.

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

1. Hệ thống xử lý như thế nào khi xảy ra sự cố mất kết nối mạng Internet?
Khi mất kết nối Internet, hệ thống tự động duy trì hoạt động ở chế độ thủ công (Mode Manual). Người dùng vẫn có thể bật hoặc tắt trực tiếp 2 thiết bị điện bằng cách chạm vào các phím cảm ứng TTP223B gắn trên board phần cứng; tuy nhiên lúc này không thể sử dụng ứng dụng di động để điều khiển. Nếu có mạng trở lại đột ngột, người dùng cần khởi động lại hệ thống để thiết bị tái lập kết nối với máy chủ.

2. Tại sao tác giả phải sử dụng kết hợp cả Arduino Uno R3 và NodeMCU ESP8266 thay vì chỉ dùng một vi điều khiển?
Việc phối hợp hai vi điều khiển nhằm phân định rõ chức năng: Arduino Uno R3 chuyên trách việc đọc tín hiệu kỹ thuật số One-wire từ cảm biến nhiệt độ - độ ẩm DHT11 một cách liên tục và chính xác; sau đó gửi dữ liệu sang NodeMCU qua cổng UART. NodeMCU ESP8266 được giải phóng tài nguyên để tập trung xử lý kết nối mạng Wifi, đồng bộ dữ liệu thời gian thực với Firebase Cloud, quét nút cảm ứng, hiển thị LCD và điều khiển relay, tránh tình trạng xung đột hoặc nghẽn tác vụ xử lý.

3. Cơ sở nào để tác giả lựa chọn bộ nguồn Adapter 5V - 1A cấp cho toàn bộ hệ thống?
Tác giả đã lập bảng thống kê dòng tiêu thụ của từng linh kiện thành phần: NodeMCU (20mA), cảm biến DHT11 (2.5mA), module relay 2 kênh (200mA), module cảm ứng TTP223B (0.025mA) và Arduino Uno R3 (500mA). Tổng dòng điện tiêu thụ tính toán của toàn bộ mạch là xấp xỉ 722.525 mA (~0.723A) ở mức điện áp 5V DC. Do đó, bộ nguồn Adapter 5V - 1A hoàn toàn đáp ứng đủ công suất hoạt động ổn định và lâu dài cho toàn hệ thống.

4. Dữ liệu hẹn giờ bật và tắt thiết bị được lưu trữ và so khớp như thế nào trong hệ thống?
Trên ứng dụng Android, người dùng cài đặt các giá trị Giờ mở (Giomo), Phút mở (Phutmo), Giờ tắt (Giotat) và Phút tắt (Phuttat). Các thông số này được lưu vào bảng dữ liệu HENGIO dưới định dạng JSON trên Firebase và đồng bộ về NodeMCU. NodeMCU sẽ liên tục so sánh các giá trị cài đặt này với dữ liệu thời gian thực nhận được từ module RTC DS3231 (hoặc NTP Server); khi trùng khớp mốc thời gian, vi điều khiển sẽ tự động xuất tín hiệu kích relay đóng hoặc ngắt thiết bị.

5. Các chân kết nối phần cứng chính giữa NodeMCU ESP8266 với các module ngoại vi được phân bổ ra sao?
NodeMCU sử dụng các chân GPIO cụ thể: Chân D1 (SCL) và D2 (SDA) nối với bus I2C của màn hình LCD và IC RTC DS3231; chân D3 (RX) và D4 (TX) giao tiếp UART với chân số 2 (TX) và chân số 3 (RX) của Arduino; chân D5 và D6 xuất tín hiệu kích hai kênh của module Relay; chân D7 và D8 nhận tín hiệu điều khiển từ 2 phím cảm ứng chạm TTP223B mini; cảm biến DHT11 nối vào chân số 4 của Arduino Uno R3.

Kết luận

Đồ án tốt nghiệp "Thiết kế và thi công hệ thống điều khiển thiết bị từ xa qua Internet bằng Smartphone" của sinh viên Nguyễn Huy Thông đã hoàn thành đầy đủ các mục tiêu thiết kế và thi công một mô hình IoT hoàn chỉnh. Hệ thống đã tích hợp thành công board mạch điều khiển phần cứng kết hợp giữa Arduino Uno R3 và NodeMCU ESP8266, dịch vụ đám mây Firebase Realtime Database cùng ứng dụng di động Android trực quan. Mô hình đáp ứng tốt hai chế độ vận hành linh hoạt (Manual tại chỗ và Auto từ xa qua Internet), quản lý hiệu quả việc hẹn giờ đóng ngắt tải điện 220V và theo dõi chính xác các thông số nhiệt độ, độ ẩm môi trường. Mặc dù còn một số hạn chế về số lượng tải kết nối và thuật toán tự phục hồi mạng khi có kết nối trở lại, công trình vẫn mang lại giá trị thực tiễn và tư liệu kỹ thuật phong phú cho các nghiên cứu phát triển hệ thống nhúng thông minh tiếp theo.