Bối cảnh và vấn đề nghiên cứu
Tại Việt Nam, xe máy là phương tiện giao thông đường bộ chủ đạo, chiếm tới 70% tổng số phương tiện lưu thông trên cả nước. Theo báo cáo từ Hiệp hội các nhà sản xuất xe máy Việt Nam (VAMM), lượng tiêu thụ xe máy trong năm 2022 đạt hơn 3 triệu xe; riêng quý IV/2022 đạt 831.999 xe (tăng 9,98% so với cùng kỳ năm 2021). Trung bình mỗi ngày có hơn 8.000 xe máy được tiêu thụ và cứ mỗi phút lại có thêm khoảng 6 chiếc xe mới xuất xưởng ra thị trường. Xe máy được sử dụng phổ biến nhờ tính cơ động, di chuyển linh hoạt trong các đô thị và chi phí sở hữu phù hợp với mức thu nhập bình quân của người dân (khoảng 4,2 triệu đồng/tháng), đóng vai trò là phương tiện mưu sinh thiết yếu.
Tuy nhiên, mật độ lưu thông xe máy dày đặc dẫn đến hai vấn đề an ninh và an toàn nghiêm trọng:
- Nguy cơ mất trộm phương tiện: Tình trạng trộm cắp, dàn cảnh cướp xe máy diễn ra ngày càng tinh vi ở cả đô thị đông dân lẫn khu vực nông thôn vắng người, gây thiệt hại lớn về tài sản và bất an cho xã hội.
- Nguy cơ tai nạn giao thông: Báo cáo của Tổ chức Y tế Thế giới (WHO) chỉ ra rằng người điều khiển xe máy có tỷ lệ tử vong do tai nạn giao thông cao nhất trong các nhóm phương tiện, với mức độ nguy hiểm gấp 4 lần ô tô con, 10 lần xe buýt và 13 lần tàu điện đô thị. Khi tai nạn xảy ra, nếu không nhận được sự ứng cứu kịp thời từ cơ quan y tế và người thân, tỷ lệ chấn thương nặng và tử vong sẽ tăng cao.
Trên thị trường hiện đã có các giải pháp chống trộm cơ học (khóa xích, khóa đĩa) hoặc định vị độc lập (khóa định vị thông minh), song chưa có thiết bị tích hợp tự động phát hiện và cảnh báo tai nạn cho người đi xe máy. Đề tài "Thiết kế, triển khai hệ thống IOT phát hiện và cảnh báo mất trộm, tai nạn xe máy" được thực hiện nhằm giải quyết đồng thời hai bài toán trên trong cùng một hệ thống thống nhất.
Mục tiêu của đề tài:
- Phát hiện nguy cơ mất trộm xe máy và cung cấp vị trí định vị theo thời gian thực để người dùng kịp thời phối hợp với cơ quan chức năng can thiệp.
- Tự động nhận diện tình huống tai nạn xe máy, gửi cảnh báo tức thời kèm tọa độ vị trí tới người thân và cơ quan hỗ trợ y tế.
Đối tượng và phạm vi áp dụng:
- Đối tượng phục vụ: Chủ sở hữu xe máy cá nhân, các đơn vị cho thuê/mượn xe, doanh nghiệp vận tải hàng hóa/hành khách bằng xe máy, các cơ sở nghiên cứu và đào tạo kỹ thuật IoT.
- Phạm vi kỹ thuật: Thiết kế mạch phần cứng gắn trên xe máy, xây dựng hệ thống phần mềm trung tâm (Server Backend, Database, MQTT Broker) và ứng dụng di động đa nền tảng.
Cơ sở lý thuyết và phương pháp
Khung kiến trúc và mô hình lý thuyết
Hệ thống được thiết kế theo kiến trúc IoT chuẩn gồm 4 tầng chức năng:
- Tầng nhận thức (Perception Layer): Thiết bị phần cứng (Device) gắn trực tiếp trên phương tiện, chịu trách nhiệm thu thập tọa độ địa lý và đo đạc các tham số gia tốc 3 trục trong không gian ba chiều.
- Tầng mạng (Network Layer): Sử dụng kết nối mạng di động/băng thông hẹp (Narrowband IoT - NB-IoT / 4G LTE) kết hợp giao thức truyền thông điệp nhẹ MQTT (Message Queuing Telemetry Transport) thông qua dịch vụ EMQX MQTT Broker.
- Tầng xử lý (Processing Layer): Máy chủ phía sau (Server - Backend) xây dựng trên nền tảng Node.js, tích hợp Firebase Admin SDK để điều phối luồng dữ liệu, lưu trữ cơ sở dữ liệu trên Cloud Firestore và phân phối thông báo đẩy qua Firebase Cloud Messaging (FCM).
- Tầng ứng dụng (Application Layer): Ứng dụng di động (MobiApp) đa nền tảng xây dựng bằng Flutter/Dart, tích hợp Google Maps API để hiển thị bản đồ trực quan.
Thuật toán cốt lõi
- Thuật toán phát hiện tai nạn (
crashDetAlgo): Dựa trên hệ tọa độ Descartes ba chiều $Oxyz$, thuật toán liên tục phân tích vector gia tốc tổng hợp và sự thay đổi gia tốc (accChange). Khi accChange vượt ngưỡng tai nạn xác định (cTHRD), thiết bị kích hoạt trạng thái cảnh báo tai nạn.
- Thuật toán phát hiện nguy cơ mất trộm (
lostDetAlgo): Tính toán khoảng cách dịch chuyển $D$ dựa trên tọa độ GPS liên tiếp khi xe đang ở chế độ khóa bảo vệ để nhận diện dịch chuyển trái phép.
Phương pháp nghiên cứu và triển khai
- Phương pháp thiết kế phần cứng: Thiết kế nguyên lý (Schematic) và layout mạch in (PCB) 2 lớp trên phần mềm Altium Designer, thi công chế tạo phần cứng, hàn linh kiện và đóng vỏ hộp công nghiệp.
- Phương pháp phát triển phần mềm: Áp dụng mẫu kiến trúc Bloc Pattern để phân tách lớp giao diện (UI) và logic nghiệp vụ (Business Logic) trên Flutter; xây dựng các dịch vụ RESTful API bảo mật bằng mã xác thực JWT (JSON Web Token); duy trì kết nối WebSocket để truyền nhận dữ liệu vị trí tức thời.
- Phương pháp thực nghiệm: Thử nghiệm đo đạc thực tế độ chính xác của cảm biến gia tốc qua nhiều trường hợp di chuyển bình thường và va chạm mô phỏng; kiểm thử khả năng truyền nhận tín hiệu cảnh báo trong điều kiện mạng di động thực tế.
Thiết kế và triển khai hệ thống
Hệ thống được cấu thành từ 3 phân hệ chính và 2 phân hệ dịch vụ hỗ trợ:
[ Phân hệ Device ] <== MQTT ==> [ EMQX Broker ] <==> [ Server - Backend ] <== HTTP/Socket ==> [ Mobile App ]
(ESP32 + MPU6050 || (Flutter)
+ GPS + SIM7020) [ Firebase ]
(Firestore / FCM / Auth)
1. Phân hệ thiết bị gắn trên xe (Device)
- Khối xử lý trung tâm (MCU): Sử dụng vi điều khiển ESP32 hiệu năng cao, quản lý các tác vụ thu thập dữ liệu, tính toán thuật toán tại biên và điều khiển ngoại vi.
- Khối cảm biến gia tốc: Mô-đun MPU6050 giao tiếp qua giao thức $I^2C$, thu thập dữ liệu chuyển động 3 trục $x, y, z$.
- Khối định vị toàn cầu: Mô-đun GPS GY-NEO 7M giao tiếp chuẩn UART, xuất dữ liệu tọa độ kinh độ và vĩ độ chuẩn NMEA.
- Khối truyền thông: Mô-đun SIM7020C kết nối mạng viễn thông, điều khiển bằng tập lệnh AT Command qua giao tiếp UART để gửi các gói tin MQTT lên Server.
- Khối nguồn và ngoại vi cảnh báo: Khối hạ áp LM2596 (hạ nguồn từ ắc quy xe máy xuống 5V và 3.3V), mô-đun sạc pin 2S tích hợp pin sạc Lithium-ion 18650 dự phòng khi ắc quy bị ngắt; mạch điều khiển còi chip công suất lớn, đèn LED báo trạng thái và các nút bấm vật lý (nút khẩn cấp SOS, nút bật/tắt chống trộm, nút reset).
2. Phân hệ máy chủ (Server - Backend)
- Kiến trúc dịch vụ: Viết bằng Node.js (BEApp), đóng vai trò trung tâm tiếp nhận bản tin MQTT từ Broker, xử lý nghiệp vụ cảnh báo, cung cấp RESTful API và cổng giao tiếp WebSocket thời gian thực cho ứng dụng di động.
- Hệ thống Cơ sở dữ liệu (Firestore Database):
- Collection
users: Quản lý danh định danh người dùng (UserId), số điện thoại, thông tin định danh cá nhân (CCCD), số điện thoại khẩn cấp SOS và danh sách mã định danh thiết bị di động (fcmToken).
- Collection
devices: Quản lý danh mục thiết bị phần cứng, mã ghép nối (verificationCode), trạng thái pin, trạng thái sạc, tọa độ vị trí gần nhất và cờ bật/tắt chống trộm.
- Collection
user-notifications: Lưu trữ nhật ký cảnh báo và trạng thái xem thông báo của người dùng.
- Dịch vụ thông báo đa kênh: Tích hợp Firebase Cloud Messaging (FCM) để gửi thông báo đẩy trực tiếp lên thanh trạng thái điện thoại, kết hợp chức năng kích hoạt cuộc gọi tự động (PhoneCall) và tin nhắn (SMS) khi có sự kiện nguy hiểm.
3. Phân hệ ứng dụng di động (Mobile Application)
- Công nghệ phát triển: Xây dựng bằng Flutter SDK trên nền ngôn ngữ Dart, hỗ trợ biên dịch đồng thời cho hai hệ điều hành iOS và Android.
- Kiến trúc phần mềm: Áp dụng Bloc Pattern, phân tách dự án thành các module độc lập:
authen (xác thực số điện thoại qua OTP Firebase), device (quản lý liên kết thiết bị), home (bảng điều khiển trung tâm và bản đồ Google Maps), notification (trung tâm thông báo), personal (quản lý thông tin phương tiện và tùy chỉnh giao diện sáng/tối).
| Phân hệ |
Thành phần kỹ thuật / Công nghệ |
Chức năng chính |
| Device |
ESP32, MPU6050, GY-NEO 7M, SIM7020C, Pin 18650 |
Đo gia tốc, định vị GPS, chạy thuật toán biên, phát còi hú và gửi dữ liệu |
| MQTT Broker |
EMQX Cloud / Server |
Định tuyến và chuyển tiếp các bản tin Publish/Subscribe giữa Device và BE |
| Server - Backend |
Node.js, Express, Firebase Admin SDK |
Xử lý logic hệ thống, quản lý cơ sở dữ liệu, phân phối cảnh báo tức thời |
| Database & Auth |
Google Firebase (Firestore, Authentication, FCM) |
Xác thực OTP số điện thoại, lưu trữ dữ liệu tập trung, gửi thông báo đẩy |
| Mobile App |
Flutter, Dart, Bloc Pattern, Google Maps API |
Giám sát vị trí trực quan, điều khiển bật/tắt chống trộm, nhận cảnh báo |
Nội dung chính theo từng chương
Chương 1. Tổng quan đề tài
Trình bày tính cấp thiết xuất phát từ thực trạng tai nạn và mất trộm xe máy tại Việt Nam. Xác định rõ khách hàng mục tiêu, đề ra 2 mục tiêu cốt lõi của đề tài và xác lập 8 tiêu chí đánh giá kỹ thuật: độ chính xác (TD), tính khả dụng, độ tin cậy/bảo mật, hiệu suất, tính linh hoạt, tính dễ sử dụng, chi phí chế tạo và hiệu quả thực tế.
Chương 2. Thiết kế tổng quan hệ thống
Xác định mô hình kiến trúc IoT 4 tầng kết nối giữa Device, MQTT Broker, Server - Backend, Firebase và MobiApp. Thiết lập danh mục các yêu cầu chức năng chi tiết cho từng phân hệ:
- Phân hệ Device phải đảm bảo chu kỳ gửi dữ liệu định kỳ 20–30 giây/lần ở trạng thái bình thường và tăng tần suất lên 2–5 giây/lần khi phát hiện bất thường.
- Phân hệ Server - Backend đảm nhiệm việc tiếp nhận dữ liệu, xử lý định tuyến thông báo và quản lý xác thực tài khoản 1-1 giữa thiết bị và số điện thoại.
- Phân hệ MobiApp đảm nhiệm vai trò giao tiếp người dùng, tích hợp các cơ chế điều khiển từ xa.
Chương 3. Thiết kế phân hệ Mobile Application
Chi tiết hóa cấu trúc mã nguồn Flutter theo mô hình Bloc Pattern. Trình bày các luồng dữ liệu chính: luồng điều hướng màn hình khởi động, luồng đăng ký/đăng nhập bằng OTP, luồng đồng bộ dữ liệu qua RESTful API, luồng duy trì kết nối WebSocket và luồng lắng nghe thông báo FCM. Thiết kế chi tiết giao diện người dùng bao gồm màn hình xác thực, màn hình đăng ký thông tin cá nhân/CCCD, bảng điều khiển trung tâm (Home Dashboard) tích hợp Google Maps, màn hình thông tin phương tiện và thanh điều hướng Drawer.
Chương 4. Thiết kế và triển khai phân hệ Device
Mô tả quy trình thiết kế phần cứng toàn diện: lập sơ đồ nguyên lý các khối mạch chức năng trên Altium Designer, thiết kế mạch in PCB 2 lớp, thi công hàn linh kiện và lắp ráp khối nguồn pin 18650 dự phòng. Trình bày chi tiết luồng điều khiển của firmware nhúng trên vi điều khiển ESP32, luồng xử lý chuyển đổi giữa các trạng thái hoạt động (bình thường, chống trộm, tai nạn, khẩn cấp SOS) và cấu trúc các gói tin giao tiếp AT Command với mô-đun truyền thông SIM7020C.
Chương 5. Thiết kế và triển khai phân hệ Server – Backend
Trình bày cấu trúc phần mềm BEApp chạy trên nền tảng Node.js. Thiết lập các lược đồ cấu trúc dữ liệu trên Cloud Firestore (users, devices, user-notifications). Mô tả chi tiết danh sách các đầu cuối RESTful API hỗ trợ ứng dụng di động, luồng tiếp nhận và giải mã bản tin MQTT từ EMQX Broker, cùng cơ chế bảo mật phiên làm việc thông qua chuẩn JSON Web Token (JWT).
Chương 6. Kiểm thử và đánh giá kết quả
Thiết lập môi trường và điều kiện kiểm thử thực tế cho toàn bộ hệ thống. Đánh giá tính năng bật/tắt chế độ chống trộm từ ứng dụng và bằng nút bấm cơ học; kiểm tra độ nhạy và thời gian đáp ứng của thuật toán phát hiện tai nạn crashDetAlgo; đánh giá độ ổn định của tính năng định vị GPS và truyền nhận dữ liệu đa kênh (WebSocket, FCM, SMS, PhoneCall).
Kết quả và đóng góp
Kết quả kỹ thuật đạt được
- Chế tạo thành công thiết bị phần cứng hoàn chỉnh: Thiết bị tích hợp đồng bộ khối vi điều khiển ESP32, cảm biến MPU6050, GPS GY-NEO 7M và mô-đun SIM7020C trên một bo mạch PCB nhỏ gọn, hoạt động ổn định với nguồn cấp kép (nguồn ắc quy xe máy và pin Li-ion 18650 dự phòng).
- Triển khai ứng dụng di động và hệ thống máy chủ hoạt động ổn định: Ứng dụng Flutter tương thích trên hệ điều hành di động, hỗ trợ giám sát bản đồ thời gian thực, điều khiển từ xa và quản lý cảnh báo tập trung qua nền tảng Firebase và MQTT Broker EMQX.
- Thực thi các chế độ hoạt động đúng chu kỳ: Hệ thống truyền nhận dữ liệu vị trí và trạng thái pin theo đúng yêu cầu thiết kế: chu kỳ 20–30 giây/lần ở trạng thái bình thường và tự động tăng tốc lên 2–5 giây/lần khi phát sinh sự kiện bất thường.
Đóng góp kỹ thuật của đề tài
- Tích hợp thành công hai tính năng bảo vệ an ninh (chống trộm xe) và an toàn tính mạng (phát hiện tai nạn) trên cùng một thiết bị phần cứng duy nhất, tối ưu chi phí triển khai cho người dùng xe máy.
- Xây dựng thuật toán nhận diện tai nạn
crashDetAlgo dựa trên sự biến thiên vector gia tốc không gian 3 chiều kết hợp thuật toán kiểm tra dịch chuyển bất thường lostDetAlgo.
- Thiết lập cơ chế cảnh báo khẩn cấp đa phương thức kết hợp thông báo đẩy qua internet (FCM), cập nhật giao diện trực quan (WebSocket/Google Maps) và phương thức liên lạc viễn thông truyền thống (SMS/PhoneCall).
Hạn chế và hướng nghiên cứu tiếp
Hạn chế của đề tài
- Hệ thống mới dừng lại ở giai đoạn nguyên mẫu thử nghiệm (prototype), kích thước vỏ hộp và cấu trúc cơ khí cần tiếp tục được tối ưu hóa để tăng khả năng chống nước, chịu rung lắc khi lắp đặt sâu trong thân xe máy.
- Ngưỡng kích hoạt cảnh báo tai nạn
cTHRD cần được đo đạc và hiệu chỉnh trên nhiều dòng xe máy và địa hình phức tạp hơn nhằm giảm thiểu trường hợp phát hiện nhầm khi xe đi qua gờ giảm tốc hoặc ổ gà sâu.
Hướng nghiên cứu tiếp
- Nâng cấp thuật toán xử lý dữ liệu cảm biến bằng việc ứng dụng các mô hình học máy tại biên (Edge AI / TinyML) nhằm nâng cao độ chính xác nhận diện va chạm giao thông.
- Tối ưu hóa mức tiêu thụ năng lượng của thiết bị, bổ sung các chế độ ngủ sâu (Deep Sleep) cho vi điều khiển ESP32 và mô-đun truyền thông khi phương tiện tắt máy nhằm kéo dài tuổi thọ pin dự phòng.
- Hoàn thiện đóng gói công nghiệp đạt tiêu chuẩn kháng bụi/nước IP67 cho thiết bị phần cứng.
Giá trị tham khảo
Đồ án là tài liệu tham khảo thực tế cho:
- Sinh viên ngành Kỹ thuật Điện tử, Viễn thông và Kỹ thuật Máy tính: Tham khảo quy trình thiết kế mạch nhúng hoàn chỉnh từ sơ đồ nguyên lý, vẽ mạch PCB trên Altium Designer đến lập trình firmware nhúng trên ESP32 giao tiếp cảm biến và mô-đun viễn thông qua UART/$I^2C$.
- Kỹ sư và nhà phát triển hệ thống IoT: Tham khảo mô hình kiến trúc kết nối kết hợp giữa giao thức MQTT (EMQX), WebSocket thời gian thực, dịch vụ đám mây Google Firebase và ứng dụng di động đa nền tảng Flutter.
Câu hỏi thường gặp
1. Thiết bị Device duy trì nguồn điện hoạt động như thế nào khi xe máy bị tắt khóa hoặc bị tháo ắc quy?
Thiết bị sử dụng khối hạ áp LM2596 để lấy nguồn trực tiếp từ ắc quy của xe máy, đồng thời tích hợp mô-đun sạc pin 2S cùng khối pin sạc Lithium-ion 18650 bên trong bo mạch. Khi nguồn ắc quy bị ngắt hoặc mất kết nối, hệ thống tự động chuyển sang sử dụng pin dự phòng và lập tức gửi cảnh báo "mất kết nối nguồn sạc" về máy chủ.
2. Tần suất gửi dữ liệu vị trí và trạng thái của thiết bị lên hệ thống được quy định như thế nào?
Ở trạng thái hoạt động bình thường không có sự kiện cảnh báo, thiết bị gửi dữ liệu vị trí, trạng thái pin và kết nối định kỳ khoảng 20–30 giây một lần. Khi rơi vào 1 trong các trạng thái bất thường (phát hiện tai nạn, cảnh báo mất trộm hoặc kích hoạt chế độ khẩn cấp SOS), thiết bị tăng tần suất gửi dữ liệu liên tục từ 2–5 giây một lần.
3. Thuật toán phát hiện tai nạn crashDetAlgo hoạt động dựa trên nguyên lý nào?
Thuật toán sử dụng dữ liệu gia tốc 3 trục $x, y, z$ thu thập từ cảm biến MPU6050 trong không gian Descartes ba chiều $Oxyz$. Thuật toán liên tục tính toán độ biến thiên gia tốc accChange và so sánh với ngưỡng tai nạn xác định cTHRD. Nếu giá trị vượt ngưỡng va chạm, hệ thống lập tức kích hoạt chu trình cảnh báo tai nạn.
4. Cơ chế liên kết giữa tài khoản người dùng và thiết bị Device được kiểm soát ra sao?
Mỗi thiết bị phần cứng chỉ được liên kết duy nhất với một tài khoản số điện thoại đã xác thực thông qua mã verificationCode đi kèm với định danh Id của thiết bị. Tuy nhiên, hệ thống cho phép nhiều người dùng (người thân trong gia đình) có thể cùng đăng nhập vào một tài khoản trên nhiều điện thoại để cùng theo dõi chung một thiết bị.
5. Những kênh thông tin nào được Server - Backend sử dụng để thông báo cho người dùng khi xảy ra tình huống khẩn cấp?
Khi phát hiện tình trạng mất trộm, tai nạn hoặc kích hoạt nút bấm SOS, hệ thống phân phối cảnh báo đồng thời qua 4 kênh: hiển thị cảnh báo tức thì trên giao diện ứng dụng (qua WebSocket), gửi thông báo đẩy đến thanh trạng thái điện thoại (qua Firebase Cloud Messaging - FCM), gửi tin nhắn văn bản (SMS) và tự động gọi điện thoại (PhoneCall) đến số điện thoại khẩn cấp đã cài đặt.
Kết luận
Đồ án tốt nghiệp của tác giả Đào Bá Khánh đã hoàn thành toàn diện việc nghiên cứu, thiết kế và chế tạo thực nghiệm hệ thống IoT giám sát, chống trộm và cảnh báo tai nạn xe máy. Hệ thống kết hợp hài hòa giữa bo mạch phần cứng nhúng (ESP32, MPU6050, GPS, SIM7020C), máy chủ trung gian (Node.js, EMQX MQTT, Firebase) và ứng dụng di động Flutter trực quan. Kết quả kiểm thử thực tế chứng minh tính khả thi kỹ thuật cao, đáp ứng tốt các yêu cầu phát hiện sự cố và định vị phương tiện theo thời gian thực tại Việt Nam.