Bản siêu tóm tắt nếu báo cáo quá dài:
PHẦN V: PHÂN CH RÀNG BUỘC HỆ THỐNG
1. Ràng buộc môi trường
- Nhiệt độ: 0–50°C, độ ẩm 20–90% (không ngưng tụ).
- Nhiễu Wi-Fi 2.4GHz: khoảng cách ESP32–router ≤50m; giải pháp auto-reconnect sau 5s, chọn
kênh Wi-Fi ít nhiễu.
- Nguồn điện: 5V–2A, công suất ~5W; cần ổn định, tránh nhiễu cảm biến.
- Cảm biến: HC-SR04 đặt giữa nắp; lấy trung bình 3–5 lần đo; RC522 đặt cạnh nắp, servo tại bản
2. Ràng buộc pháp & bảo mật
- Wi-Fi: tuân thủ Thông 26/2019/TT-BTTTT (2400–2483.5MHz, công suất ≤100mW).
- RFID 13.56MHz chuẩn ISO/IEC 14443A, không cần cấp phép.
- MQTT: dùng broker Mosquitto/HiveMQ, xác thực user/pass, hóa TLS/SSL (port 8883).
- Phân quyền topic: ESP32 chỉ publish “smartbin/#”, subscribe “lid/command”, “rfid/response”.
- Bảo mật dữ liệu nhân: hóa UID RFID, log tự xóa sau 6 tháng.
3. Ràng buộc tài nguyên thiết bị
- ESP32: Dual-core 240MHz, RAM 520KB cần code tối ưu.
- Buffer offline tối đa 50 message (~20KB).
- QoS: level (0), lệnh mở nắp/RFID/cảnh báo (1).
- Băng thông: ~17KB/phút/thiết bị (1 message/10s).
4. Ràng buộc hiệu năng
- Độ trễ mở nắp <500ms (100ms mạng + 200ms xử + 200ms hiển thị).
- Dashboard cập nhật <1s; cảm biến gửi dữ liệu mỗi 10s hoặc khi thay đổi >5%.
- Mất kết nối: tự reconnect sau 5s, lưu 50 message trong EEPROM, dùng LWT & Retained
message để báo trạng thái.
5. Ràng buộc mở rộng
- MQTT Broker hỗ trợ 1000 kết nối, hệ thống thiết kế cho 10–50 thiết bị.
- Cấu trúc topic: smartbin/{device_id}/{category}/{action}.
- Giới hạn 3–4 cấp để dễ quản & mở rộng.
Hệ thống IoT được thiết kế cân bằng giữa hiệu năng, bảo mật khả năng mở rộng, đảm bảo
hoạt động ổn định, an toàn đáp ứng yêu cầu kỹ thuật.
Bản chi tiết
PHẦN V: PHÂN CH RÀNG BUỘC HỆ THỐNG
5.1. Ràng buộc về môi trường triển khai
5.1.1. Điều kiện vật
Nhiệt độ độ ẩm:
Nhiệt độ hoạt động: 0°C đến +50°C (môi trường trong nhà/ngoài trời)
Độ ẩm tương đối: 20% - 90% (không ngưng tụ)
Giải pháp: Đặt ESP32 trong hộp kín chống ẩm IP54, phủ coating bảo vệ cho module
RFID RC522
Nguồn cấp điện:
Yêu cầu: 5V/2A (giai đoạn phát triển)
Tiêu thụ công suất: ~5W (khi servo hoạt động)
Ràng buộc: Cần nguồn ổn định, tránh nhiễu nguồn ảnh hưởng đến cảm biến
5.1.2. Đặc điểm vật thùng rác
Chiều cao thùng: khoảng (quan trọng cho thuật toán tính % rác đầy)40cm cố định
Vật liệu: nhựa/giấy (ảnh hưởng phản xạ sóng siêu âm)
Lưu ý: Bề mặt rác không đều cảm biến HC-SR04 cần lấy giá trị trung bình của 3-5
lần đo
Vị trí lắp đặt cảm biến:
HC-SR04: đặt chính giữa nắp, hướng thẳng xuống
RC522: đặt cạnh nắp, tầm đọc 3-5cm
Servo SG90: lắp bản lề nắp thùng
5.2. Ràng buộc về pháp bảo mâtk
5.2.1. Quy định tần số tuyến
WiFi 2.4GHz:
Tần số: 2400-2483.5 MHz (theo Thông 26/2019/TT-BTTTT của Việt Nam)
RFID 13.56MHz:
Tần số RC522: 13.56 MHz (chuẩn ISO/IEC 14443A)
Công suất < 200mW, tầm đọc < 10cm không yêu cầu giấy phép
5.2.2. Bảo mật dữ liệu MQTT
Xác thực MQTT:
Broker yêu cầu username/password (không cho phép anonymous)
ESP32 Backend sử dụng credentials riêng biệt
Mật khẩu lưu trong biến môi trường, không hardcode
Phân quyền Topic:
ESP32 chỉ được publish: smartbin/#
ESP32 chỉ được subscribe: smartbin/lid/command, smartbin/rfid/response
Web Backend full quyền
Web Client chỉ subscribe, không publish command trực tiếp
Bảo vệ dữ liệu nhân:
Dữ liệu RFID (UID, tên người dùng) thông tin nhân
hóa database khi lưu trữ
Log tự động xóa sau 6 tháng
5.3. Ràng buộc về tài nguyên thiết bị
5.3.1. Giới hạn phần cứng ESP32
CPU bộ nhớ:
CPU: Dual-core 240 MHz
RAM: 520 KB SRAM
Flash: 4 MB
Ràng buộc:
Code phải tối ưu, tránh memory leak
Buffer offline: tối đa 50 messages (~20 KB) để không tràn bộ nhớ
Mỗi message JSON khoảng 200-300 bytes
Phân bổ GPIO:
Thiết bị Số pin Chức năng
HC-SR04 2 pin Trigger, Echo
RC522 4 pin SDA, SCK, MOSI, MISO
Servo SG90 1 pin PWM
LED trạng thái 2 pin WiFi, MQTT
Ràng buộc: Không mở rộng thêm quá 2-3 cảm biến do giới hạn GPIO
5.3.2. Băng thông QoS
MQTT Traffic:
Message size trung bình: 200 bytes (JSON)
Tần suất: 1 message mỗi 10 giây
Lưu lượng: ~17 KB/phút/thiết bị
QoS Strategy:
Loại dữ liệu QoS Level do
Mức đầy (level) QoS 0 Cho phép mất vài message, tiết kiệm băng thông
Lệnh mở nắp QoS 1 Đảm bảo nhận, không được mất
Phân quyền RFID QoS 1 Bảo mật, không được bỏ sót
Cảnh báo đầy QoS 1 Quan trọng, phải nhận được
5.4. Ràng buộc về hiệu năng hệ thống
5.4.1. Độ trễ realtime
Yêu cầu:
Thời gian phản hồi mở nắp: (từ lệnh servo quay)< 500ms
Độ trễ hiển thị dashboard: < 1 giây
Phân tích độ trễ:
Tổng độ trễ = 100ms mạng + 200ms xử + 200ms hiển thị
= 500ms
Ràng buộc:
Ping ESP32 MQTT Broker: < 100ms
Backend xử logic: < 200ms
Frontend WebSocket render: < 200ms
5.4.2. Tần suất cập nhật dữ liệu
Cảm biến mức đầy:
Tần suất chuẩn: 10 giây/lần
Hoặc khi thay đổi > 5% (ví dụ: 65% 71%)
Ràng buộc: Không được spam message liên tục (< 5 giây/lần)
RFID timeout:
Thời gian chờ phản hồi từ server: 3 giây
Nếu quá 3 giây ESP32 từ chối (LED đỏ)
Giải pháp: Cache 100 UID thông dụng local để hoạt động offline
5.4.3. Xử mất kết nối
Khi ESP32 offline:
Lưu tối đa 50 messages trong EEPROM
Auto-reconnect sau mỗi 5 giây
Chế độ offline vẫn cho phép mở nắp bằng RFID (danh sách cache)
Last Will and Testament (LWT):
json
Topic: smartbin/status
Payload: {"online": false, "last_seen": "2025-10-12T10:30:00Z"}
Broker tự động publish LWT khi ESP32 mất kết nối đột ngột
Dashboard hiển thị cảnh báo "Thiết bị offline"
Retained Messages:
smartbin/status - trạng thái online/offline (retained)
smartbin/level - mức đầy mới nhất (retained)
smartbin/alert - cảnh báo hiện tại (retained)
Client mới kết nối vẫn nhận được trạng thái mới nhất
5.5. Ràng buộc về cấu hình MQTT
5.5.1. Cấu hình Broker
Thông số kỹ thuật:
Broker: Mosquitto 2.x hoặc HiveMQ Cloud
Port: 1883 (development), 8883 (production TLS)
WebSocket Port: 8080 (cho Web client)
Keep-alive interval: 60 giây
Max message size: 256 KB
Clean Session:
ESP32: cleanSession = false (giữ lại subscription khi reconnect)
Web Client: cleanSession = true (không cần lưu trữ)
5.5.2. Ngưỡng cảnh báo
Thông số Giá trị Ghi chú
Ngưỡng cảnh báo đầy 80% Trigger alert
Ngưỡng reset cảnh báo <30% Tắt alert
Khoảng cách phát hiện người <50cm Mở nắp tự động
Thời gian mở nắp 5 giây Tự động đóng
Timeout quét RFID 3 giây Chờ server phản hồi
5.6. Ràng buộc về mở rộng
5.6.1. Giới hạn số lượng thiết bị
MQTT Broker (Mosquitto): hỗ trợ tối đa 1,000 connections
Hệ thống hiện tại: Thiết kế cho 10-50 thiết bị
Mở rộng: Cần nâng cấp VPS hoặc chuyển sang cluster nếu > 100 thiết bị
5.6.2. Topic Naming Convention
Quy tắc đặt tên:
smartbin/{device_id}/{category}/{action}
dụ:
smartbin/bin001/level - Mức đầy của thùng 001
smartbin/bin002/lid/command - Lệnh điều khiển nắp thùng 002
smartbin/+/alert - Subscribe tất cả cảnh báo (wildcard)
Ràng buộc: Topic tối đa 3-4 levels, tránh quá phức tạp
5.7 Kết luận
Phân tích ràng buộc cho thấy hệ thống IoT cần cân bằng nhiều yếu tố:
1. Môi trường khắc nghiệt thiết kế phần cứng bền vững, chống nhiễu
2. Tài nguyên hạn chế tối ưu code, lựa chọn QoS phù hợp
3. Yêu cầu realtime giảm độ trễ mạng, xử nhanh
4. Bảo mật xác thực, hóa, phân quyền nghiêm ngặt
5. Khả năng mở rộng thiết kế topic scalable, hỗ trợ nhiều thiết bị
Các ràng buộc này sẽ được tích hợp vào giai đoạn thiết kế chi tiết, đảm bảo hệ thống không chỉ
đáp ứng yêu cầu chức năng còn hoạt động ổn định, an toàn trong thực tế.

Preview text:

Bản siêu tóm tắt nếu báo cáo quá dài:
PHẦN V: PHÂN TÍCH RÀNG BUỘC HỆ THỐNG
1. Ràng buộc môi trường
- Nhiệt độ: 0–50°C, độ ẩm 20–90% (không ngưng tụ).
- Nhiễu Wi-Fi 2.4GHz: khoảng cách ESP32–router ≤50m; giải pháp auto-reconnect sau 5s, chọn kênh Wi-Fi ít nhiễu.
- Nguồn điện: 5V–2A, công suất ~5W; cần ổn định, tránh nhiễu cảm biến.
- Cảm biến: HC-SR04 đặt giữa nắp; lấy trung bình 3–5 lần đo; RC522 đặt cạnh nắp, servo tại bản lề.
2. Ràng buộc pháp & bảo mật
- Wi-Fi: tuân thủ Thông tư 26/2019/TT-BTTTT (2400–2483.5MHz, công suất ≤100mW).
- RFID 13.56MHz chuẩn ISO/IEC 14443A, không cần cấp phép.
- MQTT: dùng broker Mosquitto/HiveMQ, xác thực user/pass, mã hóa TLS/SSL (port 8883).
- Phân quyền topic: ESP32 chỉ publish “smartbin/#”, subscribe “lid/command”, “rfid/response”.
- Bảo mật dữ liệu cá nhân: mã hóa UID RFID, log tự xóa sau 6 tháng.
3. Ràng buộc tài nguyên thiết bị
- ESP32: Dual-core 240MHz, RAM 520KB → cần code tối ưu.
- Buffer offline tối đa 50 message (~20KB).
- QoS: level (0), lệnh mở nắp/RFID/cảnh báo (1).
- Băng thông: ~17KB/phút/thiết bị (1 message/10s).
4. Ràng buộc hiệu năng
- Độ trễ mở nắp <500ms (100ms mạng + 200ms xử lý + 200ms hiển thị).
- Dashboard cập nhật <1s; cảm biến gửi dữ liệu mỗi 10s hoặc khi thay đổi >5%.
- Mất kết nối: tự reconnect sau 5s, lưu 50 message trong EEPROM, dùng LWT & Retained
message để báo trạng thái.
5. Ràng buộc mở rộng
- MQTT Broker hỗ trợ 1000 kết nối, hệ thống thiết kế cho 10–50 thiết bị.
- Cấu trúc topic: smartbin/{device_id}/{category}/{action}.
- Giới hạn 3–4 cấp để dễ quản lý & mở rộng.
→ Hệ thống IoT được thiết kế cân bằng giữa hiệu năng, bảo mật và khả năng mở rộng, đảm bảo
hoạt động ổn định, an toàn và đáp ứng yêu cầu kỹ thuật. Bản chi tiết
PHẦN V: PHÂN TÍCH RÀNG BUỘC HỆ THỐNG
5.1. Ràng buộc về môi trường triển khai
5.1.1. Điều kiện vật
Nhiệt độ độ ẩm:
Nhiệt độ hoạt động: 0°C đến +50°C (môi trường trong nhà/ngoài trời)
Độ ẩm tương đối: 20% - 90% (không ngưng tụ)
Giải pháp: Đặt ESP32 trong hộp kín chống ẩm IP54, phủ coating bảo vệ cho module RFID RC522
Nguồn cấp điện:
Yêu cầu: 5V/2A (giai đoạn phát triển)
Tiêu thụ công suất: ~5W (khi servo hoạt động)
Ràng buộc: Cần nguồn ổn định, tránh nhiễu nguồn ảnh hưởng đến cảm biến
5.1.2. Đặc điểm vật thùng rác
Chiều cao thùng: khoảng 40cm cố định (quan trọng cho thuật toán tính % rác đầy)
Vật liệu: nhựa/giấy (ảnh hưởng phản xạ sóng siêu âm)
Lưu ý: Bề mặt rác không đều → cảm biến HC-SR04 cần lấy giá trị trung bình của 3-5 lần đo
Vị trí lắp đặt cảm biến:
HC-SR04: đặt chính giữa nắp, hướng thẳng xuống
RC522: đặt cạnh nắp, tầm đọc 3-5cm
Servo SG90: lắp ở bản lề nắp thùng
5.2. Ràng buộc về pháp bảo mâtk
5.2.1. Quy định tần số tuyến WiFi 2.4GHz:
Tần số: 2400-2483.5 MHz (theo Thông tư 26/2019/TT-BTTTT của Việt Nam) RFID 13.56MHz:
Tần số RC522: 13.56 MHz (chuẩn ISO/IEC 14443A)
Công suất < 200mW, tầm đọc < 10cm → không yêu cầu giấy phép
5.2.2. Bảo mật dữ liệu MQTT
Xác thực MQTT:
Broker yêu cầu username/password (không cho phép anonymous)
ESP32 và Backend sử dụng credentials riêng biệt
Mật khẩu lưu trong biến môi trường, không hardcode
Phân quyền Topic:
ESP32 chỉ được publish: smartbin/#
ESP32 chỉ được subscribe: smartbin/lid/command, smartbin/rfid/response Web Backend có full quyền
Web Client chỉ subscribe, không publish command trực tiếp
Bảo vệ dữ liệu nhân:
Dữ liệu RFID (UID, tên người dùng) là thông tin cá nhân
Mã hóa database khi lưu trữ
Log tự động xóa sau 6 tháng
5.3. Ràng buộc về tài nguyên thiết bị
5.3.1. Giới hạn phần cứng ESP32
CPU bộ nhớ: CPU: Dual-core 240 MHz RAM: 520 KB SRAM Flash: 4 MB Ràng buộc:
Code phải tối ưu, tránh memory leak
Buffer offline: tối đa 50 messages (~20 KB) để không tràn bộ nhớ
Mỗi message JSON khoảng 200-300 bytes Phân bổ GPIO: Thiết bị
Số pin Chức năng HC-SR04 2 pin Trigger, Echo RC522 4 pin SDA, SCK, MOSI, MISO Servo SG90 1 pin PWM
LED trạng thái 2 pin WiFi, MQTT
Ràng buộc: Không mở rộng thêm quá 2-3 cảm biến do giới hạn GPIO
5.3.2. Băng thông QoS MQTT Traffic:
Message size trung bình: 200 bytes (JSON)
Tần suất: 1 message mỗi 10 giây
Lưu lượng: ~17 KB/phút/thiết bị QoS Strategy:
Loại dữ liệu
QoS Level do Mức đầy (level) QoS 0
Cho phép mất vài message, tiết kiệm băng thông Lệnh mở nắp QoS 1
Đảm bảo nhận, không được mất Phân quyền RFID QoS 1
Bảo mật, không được bỏ sót Cảnh báo đầy QoS 1
Quan trọng, phải nhận được
5.4. Ràng buộc về hiệu năng hệ thống
5.4.1. Độ trễ realtime Yêu cầu:
Thời gian phản hồi mở nắp: <
500ms (từ lệnh → servo quay)
Độ trễ hiển thị dashboard: < 1 giây
Phân tích độ trễ:
Tổng độ trễ = 100ms mạng + 200ms xử lý + 200ms hiển thị = 500ms ✓ Ràng buộc:
Ping ESP32 ↔ MQTT Broker: < 100ms
Backend xử lý logic: < 200ms
Frontend WebSocket render: < 200ms
5.4.2. Tần suất cập nhật dữ liệu
Cảm biến mức đầy:
Tần suất chuẩn: 10 giây/lần
Hoặc khi thay đổi > 5% (ví dụ: 65% → 71%)
Ràng buộc: Không được spam message liên tục (< 5 giây/lần) RFID timeout:
Thời gian chờ phản hồi từ server: 3 giây
Nếu quá 3 giây → ESP32 từ chối (LED đỏ)
Giải pháp: Cache 100 UID thông dụng local để hoạt động offline
5.4.3. Xử mất kết nối
Khi ESP32 offline:
Lưu tối đa 50 messages trong EEPROM
Auto-reconnect sau mỗi 5 giây
Chế độ offline vẫn cho phép mở nắp bằng RFID (danh sách cache)
Last Will and Testament (LWT): json Topic: smartbin/status
Payload: {"online": false, "last_seen": "2025-10-12T10:30:00Z"}
Broker tự động publish LWT khi ESP32 mất kết nối đột ngột
Dashboard hiển thị cảnh báo "Thiết bị offline" Retained Messages:
smartbin/status - trạng thái online/offline (retained)
smartbin/level - mức đầy mới nhất (retained)
smartbin/alert - cảnh báo hiện tại (retained)
→ Client mới kết nối vẫn nhận được trạng thái mới nhất
5.5. Ràng buộc về cấu hình MQTT
5.5.1. Cấu hình Broker
Thông số kỹ thuật:
Broker: Mosquitto 2.x hoặc HiveMQ Cloud
Port: 1883 (development), 8883 (production TLS)
WebSocket Port: 8080 (cho Web client) Keep-alive interval: 60 giây Max message size: 256 KB Clean Session:
ESP32: cleanSession = false (giữ lại subscription khi reconnect)
Web Client: cleanSession = true (không cần lưu trữ)
5.5.2. Ngưỡng cảnh báo Thông số Giá trị Ghi chú Ngưỡng cảnh báo đầy 80% Trigger alert Ngưỡng reset cảnh báo <30% Tắt alert
Khoảng cách phát hiện người <50cm Mở nắp tự động Thời gian mở nắp 5 giây Tự động đóng Timeout quét RFID 3 giây Chờ server phản hồi
5.6. Ràng buộc về mở rộng
5.6.1. Giới hạn số lượng thiết bị
MQTT Broker (Mosquitto): hỗ trợ tối đa 1,000 connections
Hệ thống hiện tại: Thiết kế cho 10-50 thiết bị
Mở rộng: Cần nâng cấp VPS hoặc chuyển sang cluster nếu > 100 thiết bị
5.6.2. Topic Naming Convention
Quy tắc đặt tên:
smartbin/{device_id}/{category}/{action} Ví dụ:
smartbin/bin001/level - Mức đầy của thùng 001
smartbin/bin002/lid/command - Lệnh điều khiển nắp thùng 002
smartbin/+/alert - Subscribe tất cả cảnh báo (wildcard)
Ràng buộc: Topic tối đa 3-4 levels, tránh quá phức tạp 5.7 Kết luận
Phân tích ràng buộc cho thấy hệ thống IoT cần cân bằng nhiều yếu tố:
1. Môi trường khắc nghiệt → thiết kế phần cứng bền vững, chống nhiễu
2. Tài nguyên hạn chế → tối ưu code, lựa chọn QoS phù hợp
3. Yêu cầu realtime → giảm độ trễ mạng, xử lý nhanh
4. Bảo mật → xác thực, mã hóa, phân quyền nghiêm ngặt
5. Khả năng mở rộng → thiết kế topic scalable, hỗ trợ nhiều thiết bị
Các ràng buộc này sẽ được tích hợp vào giai đoạn thiết kế chi tiết, đảm bảo hệ thống không chỉ
đáp ứng yêu cầu chức năng mà còn hoạt động ổn định, an toàn trong thực tế.