CHƯƠNG 1. TỔNG QUAN ĐỀ TÀI .2 Đối tượng khách hàng .3 Phương pháp thực hiện .4 Mục tiêu của đề tài .5 Các tiêu chí đánh giá hệ thống .6 Kết luận chương. THIẾT KẾ TỔNG QUAN HỆ THỐNG .1 Mô hình tổng quan về hệ thống .2 Một số yêu cầu chung của hệ thống .3 Yêu cầu chức năng các phân hệ chính. 5 Phân hệ Device.
5 Phân hệ Server – Backend. 5 Phân hệ MobiApp .4 Yêu cầu chức năng các phân hệ phụ:. 7 Phân hệ MQTT Broker. 7 Phân hệ Firebase .5 Kết luận chương.
THIẾT KẾ PHÂN HỆ MOBILE APPLICATION .1 Sơ đồ tổng quan của phân hệ.2 Triển khai phân hệ. 8 Xây dựng kiến trúc dự án mã nguồn Flutter. 9 Giao tiếp giữa MobiApp – Server Backend/ Firebase. 11 Thiết kế luồng hoạt động của một số dịch vụ.
13 Giao diện của phân hệ MobiApp .3 Kết luận chương. THIẾT KẾ VÀ TRIỂN KHAI PHÂN HỆ DEVICE .1 Sơ đồ tổng quan của phân hệ .2 Triển khai phân hệ. 29 Thiết kế luồng hoạt động của một số dịch vụ. 29 Phần cứng của Device.
33 Chương trình nhúng Firmware của Device .3 Kết luận chương. THIẾT KẾ VÀ TRIỂN KHAI PHÂN HỆ SERVER – BACKEND .1 Sơ đồ tổng quan của phân hệ .2 Triển khai phân hệ. 55 Xây dựng kiến trúc BEApp. 55 Thiết kế luồng hoạt động của một số dịch vụ.
56 Cấu hình Database. 58 Các công nghệ/thư viện được sử dụng để thiết kế BEApp. 61 Danh sách các API Server – Backend cung cấp cho MobiApp .3 Kết luận chương. KIỂM THỬ VÀ ĐÁNH GIÁ KẾT QUẢ .1 Kiểm thử tính năng.
65 Môi trường kiểm thử. 65 Kỳ vọng kiểm thử. 65 Kiểm thử một số tính năng hệ thống .2 Nhận xét kết quả kiểm thử .3 Kết luận chương. Đánh giá hệ thống.
Kết luận chung. Hướng phát triển của đề tài. 71 TÀI LIỆU THAM KHẢO. Hệ thống IOT.
Kiểu dữ liệu JSON. Tiêu chuẩn JWT. Tiêu chuẩn REST và RESTful API. Mô hình giao tiếp Client – Server.
Cross-platform Mobile Application. Ngôn ngữ lập trình Dart. Giao thức truyền thông Websocket. Giao thức truyền thông UART.
Giao thức truyền thông I2C. Giao thức truyền thông Narrowband IoT. Giao thức truyền thông MQTT & Mô hình MQTT Broker. Công nghệ định vị GPS.
Tập lệnh AT. Địa chỉ MAC. Kit MCU ESP32. Mô-đun đo gia tốc MPU6050.
Mô-đun GPS GY-NEO 7M. Mô-đun SIM 7002C. Mô-đun sạc pin 2S. 92 Phụ lục 26 Mô-đun hạ áp LM2596.
Pin lithium-ion 18650. Phần mềm Altium Designer. Phần mềm Postman. Phần mềm Visual Studio Code.
Dịch vụ EMQX. Dịch vụ Firebase. Hướng dẫn cấu hình dịch vụ Firebase cho hệ thống. Hướng dẫn cấu hình dịch vụ Google Map API cho tính năng theo dõi vị trí phương tiện.
Thuật toán crashDetAlgo phát hiện tai nạn xe máy. Ngưỡng xảy ra sự kiện tai nạn cTHRD. Tính khoảng cách D trong thuật toán lostDetAlgo phát hiện nguy cơ mất trộm xe. 110 DANH MỤC KÝ HIỆU VÀ CHỮ VIẾT TẮT Ký hiệu/Chữ Nghĩa tiếng Anh Nghĩa tiếng Việt viết tắt MobiApp Mobile Application Ứng dụng di động BE Backend Phần phía sau (phần chạy phía sau của một hệ thông) DB Database Cơ sở dữ liệu MQTT Message Queuing Telemetry Giao thức truyền thông điệp Transport UART Universal Asynchronous Bộ truyền nhận dữ liệu không Receiver /Transmitter đồng bộ IoT Internet of Thing Mạng lưới vạn vật kết nối SMS Short Message Service Dịch vụ tin nhắn ngắn FCM Firebase Cloud Messaging Dịch vụ gửi thông báo qua đám mây Id Identification Định danh UserId User Identification Định danh người dùng SIM Subscriber Identity Module Mô-đun nhận dạng người đăng kí UI User Interface Giao diện người dùng API Application Programming Giao diện lập trình ứng dụng Interface SDK Software Development Kit Bộ công cụ phát triển phần mềm AppBar Application Bar Thanh ứng dụng JS Javascript Tên của một ngôn ngữ lập trình App Application Ứng dụng URL Uniform Resource Locator Địa chỉ tài nguyên thống nhất BEApp Backend Application Ứng dụng phía sau MCU Micro Controller Unit Vi điều khiển PCB Printed Circuit Board Bảng mạch in SCH Schematic Sơ đồ mạch MAC Media Access Control Kiểm soát truy cập phương tiện truyền thông NB Narrowband Băng thông hẹp USB Universal Serial Bus Tên của một chuẩn truyền dữ liệu AT Attention Command Lệnh chú ý Command CMQ Cloud Message Queue Hàng đợi tin nhắn trên đám mây TX Transmitter Bộ phát RX Receiver Bộ thu VIN Input voltage Điện áp đầu vào GND Ground Đất (Mức 0V trong SCH) SOS Save Our Souls/ Save Our Mang ý nghĩa là đang nguy Ship hiểm, cần giúp đỡ gấp OTP One-Time Password Mật khẩu một lần dùng.
crashDetAlgo Crash detection algorithm Thuật toán phát hiện tai nạn lostDetAlgo Lost detection algorithm Thuật toán phát hiện thất lạc cTHRD CrashThreshold Ngưỡng phát hiện tai nạn accChange Acceleration change Sự thay đổi gia tốc Smartphone Điện thoại thông minh Device Thiết bị Server Backend Máy chủ phía sau Authentication Xác thực Broker Môi giới Perception Layer Tầng nhận thức Network Layer Tầng mạng Processing Layer Tầng xử lý Application Layer Tầng ứng dụng PhoneCall Cuộc gọi điện thoại VerificationCode Mã xác minh Framework Khung làm việc Business logic Lô-gíc nghiệp vụ Module Mô-đun Phone Number Số điện thoại CurrentUser Người dụng hiện tại Drawer Thanh trượt Sensor Cảm biến Power Nguồn điện Alert Thông báo Communicate Giao tiếp Port Cổng Access Token Mã truy cập Refresh Token Mã làm mới truy cập Realtime Thời gian thực DKKT Điều kiện kiểm thử KVKT Kỳ vọng kiểm thử KV Kỳ vọng DANH MỤC HÌNH VẼ Hình 2.1 Mô hình tổng quan và cách thức giao tiếp giữa các phân hệ.1 Sơ đồ tổng quan của phân hệ MobiApp .2 Sử dụng VSCode tạo mới dự án Flutter .3 Sử dụng Command line tạo mới dự án Flutter .4 Kiến trúc dự án Flutter .5 Sơ đồ tổng quan về giao tiếp giữa MobiApp với Server Backend/Firebase .6 Mô hình hoá dữ liệu dạng JSON .7 Ví dụ danh sách fcmToken một tài khoản sẽ lưu .8 Ví dụ một FCM được gửi tới Smartphone .9 Luồng điều hướng màn hình khi mở MobiApp .10 Luồng đăng kí tài khoản mới .11 Luồng đăng nhập tài khoản .12 Luồng kết nối máy chủ socket .13 Luồng thực hiện chung của một RESTful API .14 Giao diện màn hình xác thực chung .15 Nút bấm điều hướng tới màn hình đăng kí .16 Giao diện màn hình đăng kí tài khoản .17 Nút bấm điều hướng tới màn hình đăng kí thông tin tài khoản .18 Giao diện màn hình đăng kí thông tin tài khoản .19 Nút bấm điều hướng tới màn hình đăng nhập .20 Giao diện màn hình đăng nhập.21 Giao diện màn hình bảng điều khiển khi đã liên kết .22 Giao diện màn hình bảng điều khiển khi chưa liên kết .23 Giao diện của màn hình cá nhân khi đã liên kết .24 Giao diện màn hình cá nhân khi chưa liên kết Device .25 Giao diện màn chỉnh sửa thông tin .26 Giao diện của Drawer.27 Giao diện hiển thị chế độ ban đêm của MobiApp .28 Giao diện màn hình liên kết tài khoản với Device .29 Giao diện màn hình thông báo .1 Sơ đồ tổng quan của phân hệ Device .2 Luồng hoạt động tổng quan của Device .3 Luồng hoạt động của chế độ phát hiện nguy cơ mất trộm .4 Luồng hoạt động của chế độ phát hiện tai nạn xe .5 Luồng hoạt động của chế độ SOS .6 Luồng xử lý các trạng thái của Device .7 Sơ đồ tổng quan phần cứng của Device .8 Cấu trúc thư mục schematic Altium .9 Kiến trúc nguyên lý mạch in phần cứng.10 Nguyên lý mạch khối MCU .11 Tài liệu hướng dẫn thiết kế khối reset cho MCU .12 Nguyên lý mạch khối GPS .13 Nguyên lý mạch khối cảm biến đo gia tốc .14 Nguyên lý mạch khối truyền thông .15 Nguyên lý khối còi cảnh báo .16 Nguyên lý khối đo dung lượng pin.17 Nguyên lý khối hạ áp 5V.18 Nguyên lý khối hạ áp 3.19 Nguyên lý khối kiếm tra trạng thái kết nối sạc.20 Nguyên lý khối nút bấm thao tác .21 Nguyên lý khối led cảnh báo .22 Mạch PCB thiết kế bằng Altium .23 Mặt trên của mạch PCB chế độ 2D .24 Mặt dưới của mạch PCB chế độ 2D .25 Lớp sơn chỉ dẫn trên mặt của mạch PCB chế độ 2D.26 Mạch PCB chế độ 3D .27 Tổng thể hình 3D PCB với hình 3D của linh kiện .28 Hai mặt của mạch PCB trong thực tế .29 Mạch sau khi đã hàn các linh kiện, mô-đun (mặt trên và dưới) .30 Mạch sau khi được gắn khối pin (mặt cạnh) .31 Đóng hộp, dẫn dây kết nối ra ngoài cho mạch PCB .32 Device sau khi đã hoàn thiện.33 Bản tin thể hiện kết nối thành công nhưng không thể định vị.34 Bản tin thể hiện kết nối thành công, có thể định vị .35 Quy định bản tin của mô-đun GPS.36 Mô hình gửi/nhận dữ liệu tổng quan giữa Device và hệ thống .37 Ví dụ dữ liệu được gửi kèm bản tin 1.38 Ví dụ dữ liệu được gửi kèm bản tin 2.39 Ví dụ các bước kết nối với Broker server .40 Luồng gửi dữ liệu từ Device .41 Luồng nhận dữ liệu được gửi tới Device.1 Sơ đồ tổng quan của phân hệ Server – Backend .2 Cấu trúc thư mục của mã nguồn BEApp .3 Luồng hoạt động tổng quan của BEApp .4 Luồng BEApp nhận các request API từ client .5 Luồng Backend Application khi nhận message từ MQTT Broker .6 Cấu trúc collection users .7 Collection users trên Firestore database .8 Cấu trúc collection devices .9 Collection devices trên Firestore database .10 Cấu trúc collection user-notifications .11 Collection user-notifications trên Firestore database .12 Các tính năng firebase-admin cung cấp trên NodeJS so với các nền tàng khác .13 Thử API bằng phần mềm Postman .1 Ảnh chụp Excel bảng thống kê lỗi khi kiểm thử .2 Kết quả kiểm thử tính năng bật tắt chống trộm từ MobiApp .3 Kết quả kiểm thử tính năng bật tắt chống trộm từ Device .4 Kết quả kiểm thử tính năng phát hiện và cảnh báo tai nạn .5 Kết quả kiểm thử tính năng phát hiện và cảnh báo mất trộm .6 Kết quả kiểm thử tính năng gửi vị trí chung của hệ thống .1 Các lớp trong hệ thống IOT .2 Mô hình RESTful API [18] .3 Mô hình Client-Server .4 Nguyên lý cơ bản của Bloc pattern .5 Mô hình Websocket .6 Bản tin truyền nhận trong UART .7 Mô hình master-slave của I2C .8 Mô hình MQTT [20] .9 Kit MCU ESP32 .10 Cảm biến gia tốc MPU6050 .11 Mô-đun GPS NEO 7M .12 Mô-đun SIM 7020C .13 Mô-đun sạc pin 2s .14 Mô-đun hạ áp LM2596 .15 Pin lithium-ion 18650 .16 Cài đăng Firebase CLI và đăng nhập Firebase.17 Liên kết dự án Firebase với dự án Flutter .18 Các thư viện Firebase cần dùng trong dự án Flutter .19 Cấu hình firebase-option cho dự án Flutter .20 Cấu hình chứng chỉ SHA-fingerprints cho ứng dụng Android trong dự án Flutter .