🌱 Tổng quan IOT Architecture thông qua ví dụ SmartHome
IOT là một thuật ngữ đã quá quen thuộc trong mảng lập trình, đặc biệt là lập trình nhúng. Đã có quá nhiều tài liệu, các hướng dẫn về IOT, lập trình wifi, ESP, ...
Trước khi đi vào chuỗi bài chi tiết, bài viết này chỉ đơn giản muốn tóm tắt một cách tổng quan và dễ hiểu về kiến trúc của một hệ thống IOT, thông qua một ví dụ khá phổ biến, đó là SmartHome. Mục đích để bạn đọc có cái nhìn rõ ràng hơn về định hướng khi theo mảng IOT, và các góc nhìn tổng quan về hệ thống, trước khi tìm hiểu sâu vào các component hay các kỹ thuật lập trình.
1 - Một sản phẩm Home truyền thống
Trước khi có IOT, các sản phẩm Home truyền thống thường hoạt động độc lập, không có khả năng kết nối mạng. Ở góc nhìn kỹ thuật, các sản phẩm này thường chỉ bao gồm một số thành phần cơ bản:
- Input device: Nút nhấn, công tắc cơ, cảm biến đơn giản.
- Processing unit: Có thể không tồn tại hoặc chỉ là mạch logic đơn giản.
- Output device: Relay, đèn, motor hoặc buzzer.
Nếu sử dụng vi điều khiển (MCU), firmware thường rất đơn giản, chỉ bao gồm vòng lặp polling hoặc interrupt cơ bản. Không có khái niệm lưu trữ dữ liệu lâu dài, không có remote control, và mọi thao tác đều phụ thuộc vào sự tương tác trực tiếp của user.
↪ Kiến trúc của hệ thống dạng này thường là Closed System. Tất cả logic xử lý nằm trong thiết bị, không có kết nối ra bên ngoài, và gần như không có khả năng mở rộng tính năng sau khi sản phẩm đã được triển khai.
Ví dụ thực tế: Điều hòa truyền thống
Một hệ thống điều hòa truyền thống (non-IOT) thường bao gồm remote hồng ngoại (IR Remote) và bộ điều khiển bên trong dàn lạnh. User thao tác trên remote, tín hiệu hồng ngoại được gửi tới thiết bị, sau đó MCU trong dàn lạnh giải mã và thực hiện hành động tương ứng.
- Input: Remote IR (Power, Mode, Temperature).
- Processing: MCU decode tín hiệu IR.
- Output: Điều khiển relay, quạt, máy nén.
Ở góc nhìn firmware, chương trình trong MCU thường bao gồm các module cơ bản:
main loop
├── IR decode handler
├── Temperature sensor read
├── Control algorithm
└── Display update (LCD/LED)↪ Quan trọng là thiết bị này hoàn toàn không có khả năng điều khiển từ xa qua Internet. Nếu user không có mặt tại nhà, hệ thống không thể nhận lệnh mới.
➤ Với sự phát triển của IOT Smarthome, các thiết bị gia dụng đều mang lại sự tiện lợi cho user bằng cách cho phép kết nối Internet. User có thể thực hiện điều khiển thiết bị từ xa, hẹn giờ, theo dõi trạng thái hoạt động theo thời gian thực, thiết lập các kịch bản tự động, nhận cảnh báo khi thiết bị gặp sự cố, tối ưu hóa điện năng tiêu thụ, cũng như cập nhật firmware từ xa thông qua mạng Internet.
2 - Một sản phẩm Home IOT
Khi chuyển sang mô hình Home IOT, điểm khác biệt lớn nhất là thiết bị không còn hoạt động độc lập, mà trở thành một node trong một hệ thống có kết nối mạng.
Ở mức firmware, một thiết bị IOT thường bao gồm các module chính:
- Driver Layer: GPIO, UART, SPI, I2C, ADC...
- Network Stack: WiFi hoặc Ethernet driver, TCP/IP stack.
- Application Logic: Xử lý command, điều khiển thiết bị.
- Communication Protocol: MQTT, HTTP hoặc CoAP.
Ngoài ra, nhiều hệ thống IOT hiện đại sử dụng RTOS để quản lý nhiều task. Ví dụ: một task dùng để xử lý network, một task xử lý sensor, và một task điều khiển output device.
➤ Ví dụ thực tế: Điều hòa thông minh LG
Một dòng điều hòa thông minh như LG Smart Air Conditioner có tích hợp module WiFi, cho phép thiết bị kết nối trực tiếp tới router trong nhà và giao tiếp với hệ thống cloud.
Ngoài chức năng truyền thống, thiết bị có thể hỗ trợ:
- Điều khiển bật/tắt từ điện thoại khi chưa về nhà.
- Đọc trạng thái nhiệt độ phòng từ xa.
- Lập lịch hoạt động theo thời gian.
- Cập nhật firmware OTA (Over-the-Air).
Ở mức phần cứng, ngoài MCU chính điều khiển hệ thống lạnh, thiết bị thường có thêm một module network riêng:
Main MCU
├── Compressor control
├── Fan control
├── Sensor read
└── UART/SPI
WiFi Module
├── TCP/IP stack
├── MQTT/HTTP client
└── Cloud communication
Hai thành phần này giao tiếp với nhau thông qua UART hoặc SPI, trong đó MCU chính chịu trách nhiệm điều khiển phần cứng, còn module WiFi xử lý network protocol.
3 - Kiến trúc của hệ thống IOT
Trong thực tế, kiến trúc của một hệ thống IOT không chỉ áp dụng cho SmartHome mà còn được sử dụng trong nhiều lĩnh vực khác như Industrial IOT, Smart Agriculture hoặc Smart City. Dù ứng dụng cụ thể khác nhau, kiến trúc tổng thể thường tuân theo một mô hình phân tầng (layered architecture).
Một kiến trúc IOT phổ biến thường bao gồm các layer chính sau:
1. Device Layer (Edge Layer)
Đây là tầng thấp nhất trong hệ thống, nơi trực tiếp tương tác với môi trường vật lý. Thành phần chính bao gồm sensor, actuator và MCU/SoC. Firmware ở tầng này thường bao gồm:
- Peripheral driver (GPIO, ADC, UART, SPI...).
- Sensor acquisition logic.
- Local control algorithm.
- Communication interface.
Temperature Sensor
Humidity Sensor
Fan Motor
Compressor Control
Main MCU:
├── Sensor Read Task
├── Control Algorithm
├── Safety Monitor
└── Communication Interface2. Connectivity Layer (Network Layer)
Tầng này chịu trách nhiệm truyền dữ liệu từ device tới các hệ thống bên ngoài. Nó bao gồm cả phần cứng network và software protocol stack. Các công nghệ thường sử dụng như Wi-Fi, Ethernet, BLE, Zigbee, LTE / NB-IoT.
Ở mức firmware, tầng này thường bao gồm:Network Stack
├── TCP/IP
├── TLS (Security)
├── MQTT / HTTP Client
└── Connection Manager
Ví dụ với điều hòa LG: WiFi module kết nối tới router trong nhà và duy trì kết nối MQTT tới cloud server.
3. Data Processing Layer (Cloud / Backend Layer)
Đây là nơi xử lý và lưu trữ dữ liệu từ nhiều device. Tầng này thường chạy trên server hoặc cloud infrastructure. Các thành phần chính:
- Message Broker (MQTT Broker).
- API Server.
- Database.
- Business Logic.
- Lưu trạng thái thiết bị, các thao tác từ user được cho phép.
(Hiện tại các thiết bị thông minh sử dụng các dữ liệu này để phân tích (sử dụng AI) để biết được hành vi user và từ đó phát hiện lỗi, cải thiện chất lượng sản phẩm hoặc làm tiền đề cho các sản phẩm mới.) - Xử lý command từ user.
- Quản lý firmware OTA.
Device ID: AC_01
Temperature: 26°C
Mode: Cooling
Fan Speed: Medium4. Application Layer (User Interface Layer)
Đây là tầng mà user trực tiếp tương tác. Nó có thể là mobile application, web dashboard hoặc hệ thống automation. Chức năng chính:
- Hiển thị trạng thái thiết bị.
- Gửi command điều khiển.
- Cấu hình system.
- Quản lý user account.
- Bật điều hòa từ xa.
- Thay đổi nhiệt độ.
- Lập lịch hoạt động.
- Theo dõi trạng thái hệ thống.
Một đặc điểm quan trọng của kiến trúc IOT là dữ liệu không chỉ đi theo một chiều, mà thường là luồng hai chiều giữa device và hệ thống backend.
4 - Ví dụ luồng điều khiển thiết bị IOT
Có 2 lại device thường gặp trong thực tế là kết nối tới Cloud trực tiếp, hoặc gián tiếp thông qua Gateway:
Device A:
IoT Device (WiFi)
→ MQTT → Cloud
Device B:
IoT Device (Zigbee / BLE / RS485)
→ Gateway → MQTT → Cloud➤ Luồng điều khiển từ User (Mobile App) ➜ Device
Ví dụ: Smart Air Conditioner, người dùng muốn bật điều hòa từ điện thoại. Ứng dụng trên điện thoại có kết nối Internet sẽ gửi bản tin điều khiển lên Cloud Server thông qua HTTPS API hoặc MQTT.
Mỗi IoT Device được Server định danh bằng một DeviceID duy nhất. DeviceID này thường được dùng để tạo MQTT Topic riêng hoặc để ánh xạ với một thiết bị vật lý cụ thể.
Cloud Server thường đóng vai trò là MQTT Broker hoặc kết nối tới một MQTT Broker riêng biệt. Sau khi nhận bản tin từ Mobile App, Cloud sẽ publish bản tin điều khiển xuống IoT Device tương ứng.
Bản tin điều khiển có thể được gửi:
- Trực tiếp tới IoT Device (nếu thiết bị hỗ trợ WiFi/Ethernet)
- Hoặc thông qua Gateway (nếu thiết bị dùng Zigbee, BLE hoặc RS485)
Cuối cùng, MCU trên thiết bị sẽ nhận bản tin, phân tích nội dung và tạo tín hiệu điều khiển phần cứng tương ứng, ví dụ bật máy nén hoặc thay đổi nhiệt độ cài đặt.
➤ Luồng điều khiển từ Device ➜ User (Mobile App)
Ví dụ: Smart Air Conditioner, sau khi nhận lệnh bật từ người dùng và bắt đầu hoạt động, thiết bị sẽ gửi trạng thái hoạt động và dữ liệu cảm biến về Cloud Server để người dùng có thể theo dõi trên Mobile App.
MCU trên thiết bị sẽ thu thập dữ liệu từ các cảm biến nội bộ, ví dụ:
- Nhiệt độ phòng
- Độ ẩm
- Trạng thái hoạt động (ON/OFF)
- Chế độ hoạt động (Cool, Fan, Dry…)
Sau đó, MCU đóng gói dữ liệu thành một bản tin và gửi lên MQTT Broker thông qua kết nối Internet.
Tương tự như luồng điều khiển từ User đến Device, dữ liệu từ thiết bị có thể được gửi:
- Trực tiếp lên Cloud Server (đối với thiết bị hỗ trợ WiFi/Ethernet)
- Hoặc thông qua Gateway (đối với thiết bị sử dụng Zigbee, BLE hoặc RS485)
Cloud Server sau khi nhận dữ liệu sẽ lưu trữ, xử lý hoặc chuyển tiếp dữ liệu này tới Mobile App thông qua HTTPS API hoặc MQTT Subscription, cho phép người dùng quan sát trạng thái thiết bị theo thời gian thực.
Kết luận
Điểm quan trọng nhất khi tiếp cận IOT không phải chỉ là học từng công nghệ riêng lẻ như WiFi, MQTT hay Cloud, mà là hiểu được cách các thành phần này kết nối với nhau thành một hệ thống hoàn chỉnh.
Trong các bài tiếp theo của chuỗi này, từng layer sẽ được phân tích chi tiết hơn, bao gồm:
- Thiết kế firmware cho thiết bị IOT.
- Xây dựng network communication với MQTT.
- Quản lý device state và message flow.
- Xử lý reliability: reconnect, retry, watchdog.
Một khi đã nắm rõ kiến trúc tổng thể, việc học từng công nghệ cụ thể sẽ trở nên có định hướng rõ ràng hơn, thay vì chỉ thử nghiệm rời rạc từng module riêng lẻ.
>>>>>> Follow ngay <<<<<<<
Để nhận được những bài học miễn phí mới nhất nhé 😊
Chúc các bạn học tập tốt 😊



