LỜI CAM ĐOAN Thành viên nhóm bao gồm: Vương Thiên Đan và Trương Thị Thúy Quỳnh xin cam đoan đề tài “XÂY DỰNG HỆ THỐNG GIÁM SÁT VÀ CẢNH BÁO TRÊN Ô TÔ SỬ DỤNG TRUYỀN THÔNG CAN” là quá trìn
GIỚI THIỆU
Hiện nay, ngành công nghệ ô tô đã và đang bước vào giai đoạn phát triển mạnh mẽ cùng với những sự thay đổi đột phá Nhiều thương hiệu ô tô nổi tiếng không ngừng tìm cách vươn lên, tạo ra các nghiên cứu, phát triển để thu hút khách hàng và dẫn đầu xu thế Điều này đã mở ra nhiều xu hướng mới như xe tự hành, xe điện, và yêu cầu áp dụng các công nghệ hiện đại như AI, Big Data, hệ thống nhúng và IoT để giải quyết các vấn đề mà các dòng ô tô trước đây chưa thể thực hiện được Trong môi trường cạnh tranh khốc liệt của ngành công nghiệp ô tô, khách hàng đặt sự an toàn và chất lượng của xe lên hàng đầu Việc có một hệ thống giám sát và cảnh báo hiệu quả giúp phát hiện và khắc phục sự cố kịp thời, từ đó tăng cường tính an toàn và tránh việc xảy ra các vấn đề tiềm ẩn có thể gây hỏng hóc hoặc tai nạn Hệ thống giám sát các thành phần hệ thống của xe như nhiên liệu, hệ thống truyền động, hệ thống làm mát, từ đó kịp thời đưa ra những cảnh báo khi cần thiết
Các công nghệ mới hiện nay, chẳng hạn như kết nối IoT và các cảm biến thông minh đã được tích hợp vào hệ thống ô tô để cung cấp thông tin liên tục về trạng thái và hoạt động của các thành phần Điều này cho phép hệ thống giám sát tự động phát hiện các dấu hiệu bất thường, gửi cảnh báo tới người lái hoặc các trung tâm dịch vụ Đồng thời, dữ liệu được thu thập từ hệ thống giám sát có thể được phân tích để xác định xu hướng và dự đoán sự cố tiềm ẩn, từ đó tối ưu hóa quy trình bảo trì và sửa chữa Điều này yêu cầu cao việc giao tiếp giữa các thành phần trong hệ thống phức tạp của ô tô Tuy nhiên trên một chiếc xe bình thường trung bình có khoảng 30 hộp điều khiển khác nhau tất cả các hệ thống trên xe dù là nhỏ nhất thì đều có hộp riêng Tất cả hộp này phải kết nối và giao tiếp với nhau thì mới có thể lấy được tín hiệu Để trở nên tối ưu trong việc giao tiếp này thì hệ thống mạng giao tiếp trên ô tô CAN ra đời và được sử dụng đến ngày nay
Giao thức CAN được xem như chuẩn giao thức tiêu chuẩn dành cho phương tiện
2 giao thông đặc biệt là xe hơi Việc sử dụng CANbus cho phép các thành phần được kết nối một cách linh hoạt và đồng thời giảm thiểu việc sử dụng dây cáp và chi phí cài đặt CAN cho phép truyền dữ liệu nhanh chóng và tin cậy giữa các cảm biến, các bộ điều khiển và các hệ thống khác trên xe Các khối chức năng trên ô tô kết nối với nhau qua CAN có khả năng chống nhiễu điện và nhiễu điện từ, lý tưởng cho các ứng dụng quan trọng về an toàn [1] Điều này cho phép hệ thống chuẩn đoán thu thập dữ liệu từ các cảm biến và các thành phần khác để theo dõi tình trạng của xe trở nên dễ dàng Tuy nhiên, để phân tích và xử lý dữ liệu này một cách hiệu quả và linh hoạt, việc sử dụng ROS là một lựa chọn lý tưởng
ROS cung cấp một nền tảng mạnh mẽ và linh hoạt cho việc phát triển các ứng dụng trong lĩnh vực robot và tự động hóa Ngoài ra ROS cung cấp các công cụ và thư viện phong phú cho việc quản lý dữ liệu, phân tích dữ liệu thời gian thực, và xây dựng các hệ thống giám sát và cảnh báo thông minh trên ô tô Các dữ liệu từ giao thức CAN có thể được chuyển đổi và xử lý trong ROS, cho phép phân tích, kiểm tra và theo dõi trạng thái của các thành phần ô tô nhằm thúc đẩy sự tiến bộ trong lĩnh vực tự động hóa ô tô Những tìm hiểu và nghiên cứu trên đã thúc đẩy nhóm quyết định thực hiện đề tài “XÂY DỰNG HỆ THỐNG GIÁM SÁT VÀ CẢNH BÁO TRÊN Ô TÔ SỬ DỤNG TRUYỀN THÔNG CAN” Hệ thống xử lý các dữ liệu như: vận tốc, nhiệt độ động cơ, mức nhiên liệu, vị trí, từ ô tô đưa đến giao diện người dùng để tiện cho việc giám sát và cảnh báo kịp thời khi có sự cố.
TÌNH HÌNH NGHIÊN CỨU
1.2.1 Tình hình nghiên cứu trên thế giới
Ngành công nghệ ô tô đang chứng kiến những cải tiến không ngừng Các phương tiện ô tô hiện đại tích hợp nhiều công nghệ mới, trở nên thông minh và tiết kiệm năng lượng Các bộ vi xử lý như ECU đóng vai trò quan trọng, nhận dữ liệu từ cảm biến và đưa ra quyết định phức tạp để đảm bảo sự ổn định của xe Hệ thống giám sát trên ô tô, tuân theo chuẩn OBD, theo dõi tình trạng các hệ thống và cung cấp thông tin để xử lý các vấn đề phát sinh, đóng vai trò thiết yếu cho tuổi thọ và an toàn của xe Sự kết hợp giữa ECU và hệ thống giám sát đã mang lại hiệu quả vận hành và an toàn cho
3 các phương tiện Hiện nay, các nghiên cứu và khảo sát về hệ thống giám sát ô tô ngày càng sôi động Các nhóm nghiên cứu đã tiến hành nhiều dự án nhằm tìm hiểu sâu hơn về hệ thống này, đánh giá hiệu quả và đề xuất các cải tiến
Theo như bài viết [2], nhóm tác giả đã đề cập đến việc khám phá tiềm năng của mã OBD-II từ động cơ ECU, cũng như việc tính toán dữ liệu trên thiết bị Android để theo dõi tình trạng của xe trong thời gian thực Toàn bộ ý tưởng của họ là cung cấp các giải pháp chẩn đoán di động và tích hợp hệ thống đó vào hệ thống giải trí trên xe như Android Auto của Google và CarPlay của Apple, đây có thể là một trong những thành phần chính cho V2X và IOV
Với bài viết [3], nhóm tác giả nghiên cứu về các hệ thống chẩn đoán OBD khác nhau được các quốc gia khác nhau như Hoa Kỳ, Châu Âu và Ấn Độ áp dụng Mục tiêu của nghiên cứu này là tìm hiểu về các chiến lược OBD khác nhau được áp dụng trong các quốc gia đó Trong nội dung nghiên cứu, nhóm tác giả đã tiến hành thử nghiệm hoạt động của xe và mô tả ngắn gọn về các cảm biến được sử dụng trong nghiên cứu Các thông số được thu thập từ các cảm biến thông qua giao thức chẩn đoán OBD, sau đó nhóm tác giả đã phân tích dữ liệu thu được đưa ra các kết luận về hoạt động của xe, mức tiêu thụ nhiên liệu và so sánh các giá trị này với các tiêu chuẩn của nhà sản xuất
1.2.2 Tình hình nghiên cứu trong nước
Trong những năm gần đây, tốc độ phát triển của ngành công nghệ ô tô ở Việt Nam diễn ra khá nhanh Việc áp dụng công nghệ thông tin và truyền thông vào lĩnh vực ô tô đã tạo ra nhiều tiềm năng nghiên cứu và phát triển Trong quá trình đó thì việc sử dụng và sửa chữa các hệ thống trên ô tô đang khiến cho chúng ta gặp không ít khó khăn Việc áp dụng các quy trình và kỹ thuật chẩn đoán giúp cho các kỹ thuật viên tăng chất lượng công việc trong quá trình bảo dưỡng và sửa chữa ô tô Hiện nay, những trường đại học đào tạo các ngành nghề liên quan đến ô tô không ngừng cung cấp cho sinh viên những kiến thức cơ bản về chuẩn đoán hệ thống trên ô tô Đồng thời, các trường cũng tạo điều kiện để sinh viên nghiên cứu và phát triển các dự án liên quan để phục vụ cho công việc tương lai của họ Các nghiên cứu từ sinh viên đại
4 học tại Việt Nam đã đóng góp quan trọng và giúp nhóm có thêm định hướng cho đề tài của mình
Với đề tài [4], nhóm tác giả đã tìm hiểu về cách thức hoạt động của giao thức CAN trên vi điều khiển STM32, phân tích các khung dữ liệu CAN để lấy được dữ liệu thông số mô phỏng như vòng tua động cơ, nhiệt độ, vận tốc hiện tại, Sau khi có những số liệu mô phỏng nhóm tác giả có thiết kế giao diện đồng hồ để hiển thị Nghiên cứu này giúp cho người điều khiển phương tiện có thể dễ dàng theo dõi các thông số trên xe của mình Tuy nhiên, đề tài chỉ sử dụng dữ liệu mô phỏng, chưa can thiệp và giám sát trực tiếp vào động cơ và các bộ phận của xe Điều này làm giới hạn khả năng hiểu rõ hoạt động thực tế và tính ứng dụng của dự án
Tiếp theo là đề tài [5], nhóm tác giả đã sử dụng chuẩn giao thức J1939 là một chuẩn được sử dụng rộng rãi trong ngành công nghiệp ô tô và máy móc, cho phép các ECU trao đổi dữ liệu và điều khiển hệ thống trên cùng một mạng CAN, nhóm tác giả xây dựng hệ thống định vị phương tiện qua GPS và các thông số của xe như vận tốc xe, mức nhiên liệu, nhiệt độ động cơ, Thêm vào đó nhóm có kết nối sử dụng công nghệ IoTs để lưu trữ dữ liệu, hiển thị các thông số của xe lên WEB, APP và giao diện người dùng GUI bằng cách sử dụng một server kết nối với Database thông qua HTTP Ở dự án này, nhóm tác giả cũng nêu ra những hạn chế trong việc đọc CAN từ Raspberry Pi vẫn còn trễ với một thời gian ngắn khi gửi liên tục từ ECU
Với đề tài [6], nhóm tác giả xây dựng một hệ thống về chẩn đoán và giám sát sử dụng vi điều khiển STM32F103C8T6, mô-đun Arduino Nano và mô-đun CAN HAT RS485 để mô phỏng dữ liệu cho các thông số trên theo giao thức OBD-II sau đó sẽ gửi lên khối xử lý trung tâm là Raspberry Pi 4 Trong đề tài này, nhóm tác giả đã phát triển một hệ thống có chức năng chẩn đoán lỗi và cảnh báo các thông số vượt quá mức cho phép đã được thiết lập trước Các cảnh báo được hiển thị trên ứng dụng di động và hiển thị giao diện GUI để người dùng có thể nhận biết và xử lý kịp thời, giúp tránh được các tình huống nguy hiểm đột ngột Đặc biệt, màn hình giao diện GUI nhận thông số trực tiếp từ phần cứng để người dùng có thể theo dõi ô tô trong những trường hợp thiết bị nằm ngoài vùng kết nối Internet Mặc dù hệ thống có những tính
5 năng tích hợp, nhưng vẫn còn những hạn chế như việc chưa đảm bảo việc truyền gửi dữ liệu một cách an toàn và bảo mật tuyệt đối Thêm vào đó, giao diện trên màn hình vẫn chưa được tối ưu và không hỗ trợ chức năng xem lại các thông số cũ thông qua việc thống kê.
MỤC TIÊU NGHIÊN CỨU
Mục tiêu của nhóm thực hiện đề tài hướng tới là thiết kế hệ thống giám sát và cảnh báo trên ô tô, với đề tài này nhóm sẽ tìm hiểu một số vấn đề như sau:
- Tìm hiểu giao thức truyền thông CAN và nền tảng ROS
- Thiết kế hệ thống có khả năng xử lý dữ liệu được truyền qua CAN và xác định vị trí nhờ GPS
- Xây dựng hệ thống phần mềm mô phỏng dữ liệu và cảnh báo các thông số trạng thái của xe ô tô
- Thiết lập server để truyền dữ liệu lên cơ sở dữ liệu, giao tiếp với giao diện người dùng trong hệ thống và thiết kế giao diện hiển thị thông số của xe ô tô
- Tiến hành thi công và kiểm thử hệ thống.
PHƯƠNG PHÁP NGHIÊN CỨU
Trong đề tài này nhóm thực hiện đề tài sẽ tìm hiểu các khái niệm cơ bản có liên quan đến trong thực hiện đề tài như: các giao thức truyền thông CAN và sử dụng ROS trong quá trình phát triển hệ thống Tiếp đến nhóm sẽ xác định loại thông tin cần giám sát, thành phần cần kết nối và các chức năng cần có trong hệ thống Từ những mục tiêu mà nhóm thực hiện đề tài đã đưa ra, nhóm sẽ tiến hành triển khai các khối có trong hệ thống và tìm cách giao tiếp giữa các khối với nhau Sau cùng là nhóm sẽ kiểm tra chạy thử thực tế, mô phỏng để đánh giá hoạt động của hệ thống.
BỐ CỤC ĐỀ TÀI
Đề tài gồm có 5 chương:
- Chương 1: Tổng quan: Tìm hiểu về vấn đề hình thành đề tài, đưa ra tổng quan về đề tài nghiên cứu, xác định mục tiêu, đối tượng và phương pháp nghiên cứu cho đề tài
- Chương 2: Cơ sở lý thuyết: Trình bày về một số giao thức sử dụng trong đề tài ,
6 nền tảng ROS và một số cơ sở dữ liệu lưu trữ thích hợp
- Chương 3: Thiết kế hệ thống: Trình bày sơ đồ khối hệ thống, sơ đồ hoạt động của hệ thống Tính toán và lựa chọn linh kiện phù hợp từ đó thiết kế mô hình
- Chương 4: Kết quả: Trình bày kết quả thu được sau khi thi công mô hình Từ đó nhận xét và đánh giá sản phẩm dựa trên các yêu cầu đặt ra
- Chương 5: Kết luận và hướng phát triển: Dựa vào kết quả có được từ chương 4, đưa ra kết luận tổng quan về những gì đạt được và chưa đạt được của đề tài Từ đó đưa ra hướng phát triển tiếp theo để cải tiến và nâng cao tính ứng dụng của hệ thống
TỔNG QUAN VỀ HỆ THỐNG GIÁM SÁT VÀ CẢNH BÁO TRÊN Ô TÔ
Sự sáng tạo trong ngành công nghiệp ô tô là vô tận Các dòng ô tô hiện đại đang dần tích hợp vi xử lý để trở nên thông minh hơn và tiết kiệm nhiên liệu hiệu quả hơn Bộ điều khiển động cơ (ECU) có nhiệm vụ xử lý lượng lớn dữ liệu từ các cảm biến đưa ra quyết định quan trọng nhằm đảm bảo và cải thiện sự ổn định chung của xe [2]
Sự hiện diện của hệ thống giám sát và cảnh báo là cần thiết cho sức khỏe của xe và an toàn của tài xế cũng như hành khách Hệ thống chẩn đoán trên xe (OBD) là một thành phần quan trọng trong hiệu suất của phương tiện Nó theo dõi tình trạng của nhiều hệ thống trên xe và cung cấp thông tin để xử lý các hệ thống phức tạp Có thể nói rằng, với sự tiến bộ không ngừng của công nghệ, các hệ thống thông minh trong xe sẽ ngày càng phát triển, giúp nâng cao hiệu suất, an toàn và tiết kiệm nhiên liệu cho các dòng xe ô tô.
GIỚI THIỆU VỀ HỆ ĐIỀU HÀNH ROBOT – ROS
ROS là một nền tảng mã nguồn mở (open-sourced) cung cấp một loạt các thư viện và công cụ mạnh mẽ nhằm mục đích giúp đơn giản hóa việc tạo ra hành vi phức tạp và mạnh mẽ cho các robot trên nhiều nền tảng khác nhau [7] Một số ứng dụng phổ biến của ROS bao gồm xe tự lái, robot hình người, robot công nghiệp, drones, ứng dụng robot trong nhà,
Hệ thống ROS mang đến một loạt ưu điểm quan trọng như: giao tiếp dễ dàng, cộng đồng lớn, thư viện phong phú và miễn phí
ROS được thiết kế và chia thành ba phần hoặc ba cấp độ khái niệm: Filesystem level, Computation Graph level và Community level [8] a Cấp độ hệ thống tập tin (Filesystem level):
Hệ thống tập tin chủ yếu bao gồm các tài nguyên ROS được lưu trữ trên bộ nhớ hệ thống, bao gồm các thành phần sau: Gói (Packages), Tệp mô tả gói (Package Manifest), Nhóm/nhóm gói (Stacks), Các loại tin nhắn/thông điệp - Message (msg), Các loại dịch vụ - Service (srv) b Cấp độ đồ thị tính toán (Computation Graph Level): Đồ thị tính toán là một mạng peer-to-peer của ROS trong đó các dữ liệu được xử lý với nhau Đây là nơi diễn ra giao tiếp giữa các quy trình và hệ thống Các khái niệm cơ bản ở tầng này bao gồm: Nút (Nodes), Máy chủ (Master), Máy chủ thông số (Parameter Server), Tin nhắn (Messages), Chủ đề (Topics), Dịch vụ (Services), Túi (Bags)
Theo như hình 2.1, máy chủ ROS là một dịch vụ quản lý tên trong ROS, lưu trữ thông tin đăng ký chủ đề và dịch vụ của các nút ROS
Hình 2.1 Giao tiếp giữa các Node trong ROS c Cấp độ cộng đồng (Community Level):
Cộng đồng là tài nguyên về phần mềm và kiến thức được chia sẻ bởi cộng đồng phát triển ROS bao gồm các thành phần sau: Phân phối (Distributions), Kho lưu trữ (Repositories), Trang wiki ROS (The ROS Wiki), Danh sách gửi thư (Mailing lists).
TỔNG QUAN VỀ CÁC CHUẨN TRUYỀN THÔNG
2.3.1 Giao thức truyền thông CAN
Mạng truyền thông CAN là giao thức truyền thông nối tiếp được được phát triển bởi Bosch ở Đức vào đầu những năm 1980 Ngày nay, giao thức này đã được áp dụng
9 trong hầu hết các loại ô tô, cũng như trong nhiều lĩnh vực công nghiệp khác [9] Nhờ CAN, thay vì hệ thống dây điện điểm-điểm, các hệ thống điều khiển có thể được kết nối bằng một bus nối tiếp duy nhất, điều này được thể hiện rõ trong hình 2.2
Hình 2.2 Sự khác nhau của việc kết nối dây (a) không có CAN, (b) có CAN [10]
Tất cả các nút có trong mạng CAN đều được kết nối với nhau thông qua hai dây bus Mỗi nút yêu cầu bộ vi điều khiển, bộ điều khiển CAN (thường tích hợp với MCU) và bộ thu phát CAN Hình 2.3 thể hiện một nút CAN cơ bản Bộ thu-phát CAN xử lý tín hiệu truyền (TXD) và nhận (RXD) từ bộ điều khiển CAN, chuyển đổi chúng thành tín hiệu vi sai
Hình 2.3 Cấu trúc một nút trong mạng CAN [11]
Như hình 2.4, nhóm các nút cấu thành mạng CAN, mỗi nút đều có thể giao tiếp với liệu Mỗi loại tin nhắn được gán một số định danh (ID) tùy theo mức độ ưu tiên Công
10 nghệ cáp CAN sử dụng đường dây đơn giản, giảm thiểu hiện tượng suy giảm tín hiệu Truyền dữ liệu thông qua cặp dây truyền tín hiệu vi sai (CANH và CANL)
Hình 2.4 Sơ đồ cấu trúc mạng CAN
Trong mô hình tham chiếu ISO/OSI, hệ thống truyền thông được phân chia thành 7 lớp khác nhau Tuy nhiên, kiến trúc phân lớp của CAN chỉ bao gồm hai lớp, đó là lớp liên kết dữ liệu (Data Link) và lớp vật lý (Physical)
Trong đó lớp vật lý phổ biến nhất là ISO 11898-2 (CAN vận tốc cao) Như hình 2.5 thì CAN vận tốc cao:
- Truyền tín hiệu chủ động – Dominant (0): dây CAN_H (CAN High) đẩy lên 5V, dây CAN_L (CAN Low) về 0V
- Truyền tín hiệu thụ động – Recessive (1): không có dây nào được đẩy
- Điện áp chênh lệch chủ động danh định là 2V
- Điện trở kết thúc thụ động giữ điện áp chênh lệch danh định là 0V
- Điện áp chung phải nằm trong khoảng 1.5 - 3.5V so với điểm chung
Hình 2.5 CAN vận tốc cao
ISO 11898-3 định nghĩa một lớp vật lý CAN vận tốc thấp/chịu lỗi như hình 2.6:
- Tín hiệu chủ động (0): dây CAN_H đẩy lên 5V, dây CAN_L về 0V
- Tín hiệu thụ động (1): không có dây nào được đẩy
- Điện áp chênh lệch chủ động phải lớn hơn 2.3V
- Điện áp chênh lệch thụ động phải nhỏ hơn 0.6V
- Điện trở kết thúc giữ dây CAN_L về RTH (tối thiểu 4.7V), dây CAN_H về RTL (tối đa 0.3V)
Hình 2.6 CAN vận tốc thấp
2.3.1.3 Các loại khung truyền trong giao thức CAN
Dữ liệu CAN được truyền dưới các khung (Frame) Có 4 loại khung khác nhau trong CAN, bảng 2.1 sẽ mô tả chức năng của từng khung
Bảng 2.1 Các loại khung truyền trong CAN
Giao thức CAN hiện có: CAN 2.0, CAN FD Chuẩn CAN 2.0 chỉ quy định sử dụng
12 loại khung chuẩn Chuẩn CAN 2.0B sử dụng cả loại khung chuẩn và khung mở rộng CAN FD hay CAN Flexible Data Rates là một sự cải tiến của CAN 2.0 CAN FD có thể sử dụng chung tầng vật lý với CAN 2.0
Trong giao thức CAN, thông điệp dữ liệu được truyền giữa các nút mà không sử dụng địa chỉ rõ ràng Thay vào đó, mỗi nút tự xác định thông điệp nào sẽ nhận dựa trên trường Định danh (Identifier) của nó Cấu trúc khung dữ liệu của CAN và sự khác biệt về độ dài ID trong CAN 2.0A và 2.0B được thể hiện trong hình 2.7
Hình 2.7 Định dạng khung dữ liệu (a) khung dữ liệu chuẩn (Standard Data Frame CAN 2.0A), (b) khung dữ liệu mở rộng (Extended Data Frame CAN 2.0B)
Khung dữ liệu của CAN bao gồm các thành phần sau: Trường bắt đầu (SOF – Start of Frame) , Trường phân xử (Arbitration field), Bit yêu cầu truyền từ xa (RTR – Remote Transmission Request), Bit Mở Rộng ID (IDE – Identifier Extension Bit), Bit SRR (Substitute Remote Request), Trường điều khiển (Control Field), Mã độ dài dữ liệu (DLC), Bit r1 và r0, Trường dữ liệu (Data Field), Trường kiểm tra (CRC – Cyclic Redundancy Check), Trường báo nhận (ACK – Acknowledgement), Trường kết thúc khung (EOF – End of Frame)
Một nút hoạt động như một bộ nhận, mong muốn nhận một dữ liệu từ một nút nguồn Để nhận được dữ liệu này, bộ nhận sẽ gửi một khung yêu cầu Mục đích của khung yêu cầu là thông báo cho nút nguồn biết để nút này truyền dữ liệu
Khung yêu cầu có thể được định dạng chuẩn hoặc mở rộng như hình 2.8 Bất kể thuộc định dạng nào, khung yêu cầu gồm sáu trường bit khác nhau như khung dữ liệu (chỉ không có trường dữ liệu)
Hình 2.8 Định dạng khung yêu cầu (a) dạng chuẩn, (b) dạng mở rộng
Cấu tạo và ý nghĩa của các vùng trong khung điều khiển tương tự như khung dữ liệu, ngoại trừ một số điểm sau:
- Khung yêu cầu không có trường dữ liệu Do đó, giá trị mã chỉ độ dài dữ liệu (DLC) trong khung yêu cầu có thể nhận bất kỳ giá trị nào từ 0 đến 8 Giá trị DLC của khung dữ liệu trả về sẽ giống DLC của khung yêu cầu đã gửi
- Bit RTR (thuộc vùng phân xử) của khung yêu cầu là bit recessive (1), khác với khung dữ liệu, nơi bit RTR là bit dominant (0)
Khung báo lỗi trong giao thức CAN là một loại khung dữ liệu đặc biệt, được sử dụng để thông báo về lỗi trong quá trình truyền dữ liệu Khi một nút phát hiện ra lỗi, nó sẽ tạo ra và truyền đi khung báo lỗi [12]
Cấu trúc của khung báo lỗi bao gồm: Cờ lỗi (Error Flag), dấu phân cách lỗi (Error Delimiter)
Khung báo tràn trong giao thức CAN được sử dụng để giải quyết vấn đề khả năng xử lý hạn chế ban đầu của vi điều khiển và bộ điều khiển CAN Nó bao gồm cờ báo tràn (Overload flag) và trường phân cách khung báo tràn (Overload delimiter)
SPI là một chuẩn truyền thông nối tiếp đồng bộ vận tốc cao Nó cho phép truyền dữ liệu bit nối tiếp với độ dài được lập trình, từ 2-16 bit, giữa một thiết bị chính/chủ (Master) và các thiết bị ngoại vi (Slaves) kết nối với nó SPI thường được sử dụng để kết nối và trao đổi dữ liệu giữa các thiết bị điện tử Vận tốc truyền dữ liệu được lập trình và có thể điều chỉnh tùy ứng dụng [13] [14] Hình 2.9 cung cấp một cái nhìn tổng quan về kiến trúc SPI
Hình 2.9 Sơ đồ khối của SPI
TỔNG QUAN VỀ PHẦN CỨNG TRONG HỆ THỐNG
Raspberry Pi là một máy tính đơn bo mạch nhỏ gọn Bằng cách kết nối các thiết bị ngoại vi như bàn phím, chuột, màn hình với Raspberry Pi Raspberry Pi được sử dụng phổ biến cho các ứng dụng xử lý ảnh/video thời gian thực, các ứng dụng dựa trên IoT và robotics Raspberry Pi chậm hơn so với laptop hoặc máy tính để bàn, nhưng vẫn là một máy tính có thể cung cấp tất cả các tính năng hoặc khả năng mong đợi, với mức tiêu thụ điện năng thấp [18]
Raspberry Pi 4 Model B (Pi4B) trong hình 2.15 là thế hệ đầu tiên của dòng máy tính Raspberry Pi mới, hỗ trợ nhiều RAM hơn và có hiệu suất CPU, GPU và I/O đáng kể được cải thiện, vẫn giữ kích thước, công suất và chi phí tương tự như thế hệ trước là Raspberry Pi 3B+ [18] Raspberry Pi 4 Model B là một thiết bị đặc biệt với nhiều tính năng ấn tượng Bảng 2.2 sẽ trình bày một số thông số kỹ thuật và đặc trưng của
Raspberry Pi 4 và hình 2.16 là sơ đồ các chân và chức năng của chân Raspberry Pi
Hình 2.15 Raspberry Pi 4 Model B Bảng 2.2 Một số thông số và đặc tính Raspberry Pi 4 Model B
Hình 2.16 Sơ đồ chân Raspberry Pi
Như hình 2.17, Arduino UNO là một bo mạch điều khiển vi mô dựa trên ATmega328P, chứa đầy đủ các thành phần cần thiết để hỗ trợ vi điều khiển Nó có 14 chân input/output số (6 trong số đó có thể được sử dụng như các đầu ra PWM), 6 chân analog, một bộ cộng hưởng ceramic 16 MHz, kết nối USB, jack nguồn, đầu cắm ICSP và nút reset [19]
Bảng 2.3 sau đây sẽ cung cấp các thông số kỹ thuật của Arduino Uno Hình 2.18 dưới đây là sơ đồ chân của bo mạch Arduino Mega
Bảng 2.3 Thông số kỹ thuật của Arduino Uno
Hình 2.18 Sơ đồ chân của Arduino Uno
Trong hình 2.19, Arduino Mega 2560 Rev3 là bản kế thừa của Arduino Mega, được thiết kế dành riêng cho các ứng dụng và dự án yêu cầu nhiều chân input/output, cũng như những trường hợp cần xử lý công suất lớn [20]
Cụ thể hơn, so với UNO, Mega 2560 Rev3 có:
- Nhiều chân digital I/O hơn (54 so với 14 trên UNO)
- Nhiều chân analog input hơn (16 so với 6 trên UNO)
- Nhiều cổng UART (4 so với 1 trên UNO) Điều này giúp Mega 2560 Rev3 có thể đáp ứng những yêu cầu về xử lý lớn hơn và số lượng I/O nhiều hơn so với các bo mạch Arduino tiêu chuẩn khác Bo mạch này chứa vi điều khiển ATmega2560, hoạt động ở tần số 16 MHz Bo mạch này bao gồm
54 chân digital input/output, 16 input analog, 4 cổng UART (cổng serial phần cứng), một kết nối USB, một jack nguồn, một header ICSP và một nút reset [20]
Bảng 2.4 sẽ cung cấp các thông số kỹ thuật của Arduino Mega Hình 2.20 dưới đây là sơ đồ chân của bo mạch Arduino Mega
Bảng 2.4 Thông số kỹ thuật của Arduino Mega
Hình 2.20 Sơ đồ chân của Arduino Mega (a) dàn header ở 2 bên bo mạch, (b) dàn header chân D22-D53
2.4.4 Mô-đun CAN Bus MCP2515
Mô-đun sử dụng chip bộ điều khiển CAN MCP2515 và bộ ghép nối CAN TJA1040 là một phương tiện mở rộng chuẩn giao tiếp CAN cho các vi điều khiển không tích hợp sẵn chuẩn này [21] [22] Bảng 2.5 cung cấp một thông số kỹ thuật cơ bản của mô-đun này
Hình 2.21 Mô-đun CAN Bus MCP2515
Bảng 2.5 Thông số kỹ thuật của Mô-đun CAN Bus MCP2515
Bảng 2.6 và hình 2.22 dưới đây mô tả sơ đồ chân và chức năng chân của mô-đun
Bảng 2.6 Chức năng các chân của mô-đun CAN Bus MCP2515
Hình 2.22 Sơ đồ chân của mô-đun CAN Bus MCP2515
2.4.5 Mô-đun Arduino Ethernet Shield
Trong hình 2.23, tấm chắn Ethernet Arduino V1 cho phép một bảng Arduino kết nối với Internet Nó dựa trên chip Wiznet W5100 ethernet (datasheet) Wiznet W5100 cung cấp một ngăn xếp mạng (IP) có khả năng cả TCP và UDP Nó hỗ trợ tối đa bốn kết nối socket đồng thời Sử dụng thư viện Ethernet để viết các sketch kết nối với Internet bằng cách sử dụng tấm chắn [23]
Hình 2.23 Mô-đun Arduino Ethernet Shield
Hiện tại mô-đun được trang bị một mô-đun Power over Ethernet (PoE) được thiết kế để trích xuất nguồn điện từ cáp Ethernet Category 5 xoắn đôi thông thường, cho phép tấm chắn Ethernet Arduino V1 được cấp nguồn trực tiếp từ cáp Ethernet, mà không cần cục nguồn điện bổ sung Bảng 2.7 dưới đây là một số thông số kỹ thuật của tấm chắn Ethernet
Bảng 2.7 Thông số kỹ thuật Mô-đun Arduino Ethernet Shield
2.4.6 Mô-đun định vị GPS NEO-M8M
Các mô-đun GPS U-Blox NEO-M8 hỗ trợ nhiều hệ thống GNSS như GPS, Galileo, BeiDou và GLONASS Điều này giúp cải thiện độ chính xác vị trí, đặc biệt trong các môi trường có nhiễu hoặc tín hiệu yếu Các mô-đun NEO-M8M và NEO-M8J còn có bộ nhớ flash nội bộ, cho phép cập nhật phần mềm, phù hợp với ứng dụng công nghiệp và ô tô [24]
Hình 2.24 Mô-đun định vị GPS NEO-M8M
NEO-M8M-0-10 có ăng-ten tích hợp, giao tiếp UART để kết nối vi điều khiển, và chức năng kết nối USB với máy tính [24] Hình 2.24 là mô-đun định vị GPS U-Blox NEO-M8M-0-10 trong thực tế, bảng 2.8 cung cấp chức năng các chân của mô-đun và bảng 2.9 sẽ cung cấp một số thông số kỹ thuật của mô-đun
Bảng 2.8 Chức năng các chân của mô-đun định vị GPS NEO-M8M
Bảng 2.9 Thông số kỹ thuật Mô-đun định vị GPS NEO-M8M Để mô-đun thu được tín hiệu và chính xác từ các vệ tinh thì mô-đun được trang bị thêm một Anten định vị GPS
Màn hình 7inch HDMI Capacitive Touch Screen LCD có độ phân giải cao 1024x600 pixels Thiết bị được tích hợp các phím chức năng tinh chỉnh các thông số của màn hình cũng như trang trị đầy các cổng giao tiếp chuẩn HDMI, VGA, Headphone,
Màn hình hỗ trợ chức năng cảm ứng điện dung và có thể cấp nguồn qua cổng Micro USB, tạo điều kiện cho việc xây dựng các ứng dụng điều khiển và hiển thị trên các nền tảng vi mạch như Raspberry Pi, Beaglebone, Jetson nano, [25]
Một số thông số kỹ thuật của màn hình được thể hiện qua bảng 2.10
Bảng 2.10 Thông số kỹ thuật của màn hình LCD 7 inch
Hình 2.25 và hình 2.26 dưới đây mô tả kích thước cũng như các phím chức năng và cổng giao tiếp
Hình 2.25 Kích thước màn hình
(b) Hình 2.26 Các chức năng hỗ trợ (a) Các phím chức năng màn hình, (b) cổng giao tiếp màn hình
GIỚI THIỆU VỀ GOOGLE FIREBASE
Firebase là nền tảng phát triển ứng dụng di động và web mạnh mẽ, cung cấp các API đơn giản và không yêu cầu sử dụng phụ trợ hay máy chủ riêng Được xây dựng trên nền tảng đám mây của Google, Firebase cung cấp dịch vụ cơ sở dữ liệu và hệ thống máy chủ đáng tin cậy Hỗ trợ Firebase phát triển ứng dụng trên nhiều nền tảng như iOS, Android, JavaScript và Node.js [26]
GIỚI THIỆU VỀ HTML, CSS, JAVASCRIPT
HTML là ngôn ngữ đánh dấu tiêu chuẩn để tạo các trang Web HTML sử dụng các thẻ (tags) để mô tả cấu trúc và nội dung của trang web Các thẻ này được sử dụng để đánh dấu các phần tử như tiêu đề, đoạn văn bản, hình ảnh, liên kết và các thành phần khác trên trang web [27]
- Cấu trúc cơ bản của HTML:
Dưới đây là hình ảnh trực quan của cấu trúc cơ bản cho trang HTML:
Hình 2.28 Cấu trúc của một trang HTML
Như hình 2.28 cấu trúc của HTML bao gồm các thành phần cơ bản như sau:
- Phần tử là phần tử gốc của trang HTML
- Phần tử chứa thông tin meta về trang HTML
- Phần tử chỉ định tiêu đề cho trang HTML (được hiển thị trên thanh tiêu đề của trình duyệt hoặc trong tab của trang)
- Phần tử xác định nội dung của tài liệu và là nơi chứa tất cả nội dung hiển thị, chẳng hạn như tiêu đề, đoạn văn, hình ảnh, siêu liên kết, bảng, danh sách, v.v
- Phần tử xác định một tiêu đề lớn
- Phần tử
xác định một đoạn văn
CSS được sử dụng để mô tả cách các phần tử HTML được hiển thị trên màn hình CSS đặc biệt hữu ích trong việc thiết kế web, giúp người thiết kế dễ dàng áp dụng
31 các phong cách đã được thiết kế lên bất kỳ trang nào của website một cách nhanh chóng và đồng bộ [28]
Trong CSS, bố cục thường dựa trên khái niệm "hình hộp" (box model), trong đó mỗi phần tử được coi như một hình hộp và chiếm những khoảng trống trên trang web bằng cách sử dụng các thuộc tính sau [29]:
- Padding: Đây là không gian xung quanh nội dung của phần tử Nó tạo ra khoảng trống giữa nội dung và viền của phần tử
- Border: Đây là đường viền nằm ngay bên ngoài của phần tử Nó tạo ra ranh giới xác định cho phần tử đó
- Margin: Đây là khoảng cách xung quanh bên ngoài của phần tử Nó tạo ra khoảng trống giữa phần tử và các phần tử khác xung quanh nó Margin giúp điều chỉnh khoảng cách giữa các phần tử trên trang
JavaScript là một ngôn ngữ lập trình phía client, thường được sử dụng để tạo ra các tương tác động trên trang web Nó cho phép thao tác với các phần tử HTML, thay đổi nội dung và kiểu dáng của trang, xử lý sự kiện, gửi và nhận dữ liệu từ máy chủ, và thực hiện nhiều chức năng khác trên trình duyệt của người dùng [30]
JavaScript có những thuộc tính như sau:
JavaScript có thể thay đổi giá trị thuộc tính HTML
JavaScript có thể thay đổi kiểu HTML (CSS)
JavaScript có thể ẩn các phần tử HTML
JavaScript có thể hiển thị các phần tử HTML
YÊU CẦU HỆ THỐNG
Đề tài “Xây dựng hệ thống giám sát và cảnh báo trên ô tô sử dụng truyền thông CAN” hướng đến mục tiêu xây dựng một hệ thống giám sát và cảnh báo tự động trên ô tô, với sự tận dụng của ROS như nền tảng phát triển Từ các dữ liệu thu thập và xử lý, phát triển một giao diện người dùng thân thiện để giúp người dùng theo dõi trạng thái của ô tô Để hoàn thành được mục tiêu đề ra thì hệ thống cần đáp ứng các yêu cầu như sau:
- Hệ thống có thể truy xuất các dữ liệu có thể lấy từ xe như RPM (vòng tua máy), vận tốc xe, mức nhiên liệu và nhiệt độ nước mát động cơ Ngoài ra, hệ thống cần có khả năng cung cấp vị trí của phương tiện cách tương đối
- Hệ thống tích hợp ROS để xử lý dữ liệu, xây dựng hệ thống với tính linh hoạt và khả năng mở rộng cao.
- Xây dựng các thành phần hệ thống Cloud có thể lưu trữ, truyền dữ liệu và cung cấp API cho các thành phần khác trong hệ thống có thể giao tiếp với nhau.
- Hệ thống cung cấp giao diện người dùng để hiển thị thông tin giám sát và cảnh báo Giao diện người dùng có thể cho phép người dùng theo dõi các thông số và trạng thái của ô tô.
ĐẶC TẢ HỆ THỐNG
3.2.1 Chức năng của hệ thống
Từ những yêu cầu của hệ thống nhóm đã thiết kế hệ thống theo những chức năng như sau:
- Hệ thống có thể thu thập các thông số của xe như RPM, vận tốc xe, mức nhiên liệu và nhiệt độ nước làm mát động cơ.
- Hệ thống có định vị GPS giúp người dùng có thể quan sát vị trí hiện tại của phương tiện.
- Hệ thống có khả năng lưu trữ các dữ liệu quan trọng về trạng thái và hoạt động của
33 xe sau đó đưa đến giao diện người dùng theo thời gian thực thông qua giao thức HTTP.
- Hệ thống cung cấp giao diện người dùng có chức năng đăng nhập và đăng xuất để xác thực người dùng và quản lý quyền truy cập.
- Hệ thống hiển thị các thông số lên màn hình LCD trên phần cứng để người dùng có thể thuận tiện quan sát.
3.2.2 Mô hình tổng quát của hệ thống
Dưới đây là hình 3.1 thể hiện mô hình tổng quát các khối chính được thiết kế trong hệ thống:
Hình 3.1 Mô hình tổng thể hệ thống
- Mô phỏng dữ liệu: tạo ra các giá trị mô phỏng RPM, vận tốc xe, mức nhiên liệu và nhiệt độ nước làm mát động cơ dựa trên khung truyền CAN
- Cảm biến: thu thập dữ liệu về vị trí (kinh độ, vĩ độ) di chuyển của phương tiện nhờ vào mô-đun GPS.
- Giao tiếp và thu thập dữ liệu: nhận dữ liệu mô phỏng thông số của xe thông qua mạng CAN và thu thập giá trị GPS, tổng hợp các thông tin và truyền lên khối xử lý thông qua giao thức Ethernet.
- Khối xử lý trung tâm: thu thập hết các dữ liệu, xử lý và chuyển đổi dữ liệu Sau khi tổng hợp xong, dữ liệu sẽ được gửi dữ liệu đến nơi lưu trữ.
- Cloud: đóng vai trò quan trọng trong việc lưu trữ dữ liệu, quản lý và cung cấp dữ
34 liệu về cho Người dùng.
- Người dùng: cung cấp giao diện hệ thống, hiển thị các giá trị thông số thu thập được Từ đó người dùng có thể theo dõi các thông số của xe.
3.2.3 Sơ đồ khối hệ thống
Hình 3.2 Sơ đồ khối hệ thống
Hệ thống được xây dựng với các khối như hình 3.2 Chức năng các khối trong hệ thống cụ thể như sau:
- Khối mô phỏng: thực hiện giả lập dữ liệu các thông số của xe như RPM, vận tốc xe, mức nhiên liệu và nhiệt độ nước làm mát động cơ và truyền dữ liệu theo chuẩn giao tiếp CAN cho khối giao tiếp và thu thập dữ liệu.
- Khối cảm biến: thu thập dữ liệu vị trí từ cảm biến.
- Khối truyền nhận CAN: sử dụng kết nối với khối mô phỏng thông qua hai dây CAN HIGH và CAN LOW để đọc dữ liệu và truyền các khung CAN đó qua khối thu thập và xử lý dữ liệu thông qua chuẩn giao tiếp SPI.
- Khối thu thập và xử lý dữ liệu: có nhiệm vụ thu thập các dữ liệu, tổng hợp lại và gửi chúng lên khối xử lý trung tâm.
- Khối xử lý trung tâm: nhận dữ liệu và sử dụng ROS để xử lý dữ liệu đó Khối xử lý trung tâm có khả năng kết nối với Cloud và tạo giao diện người dùng thông qua việc đẩy dữ liệu lên Cloud hoặc xuất trực tiếp qua màn hình kết nối với nó.
- Cloud: là nơi lưu trữ dữ liệu từ khối xử lý trung tâm gửi đến và truyền dữ liệu lên khối giao diện.
- Khối hiển thị: là màn hình giao diện trên xe hơi, hiển thị trực tiếp các dữ liệu như
RPM, nhiên liệu, vận tốc xe, định vị GPS,
- Khối giao diện người dùng: là nơi mà người dùng tương tác, có thể hiển thị các dữ liệu như nhiên liệu, vận tốc xe, định vị GPS, vòng tua máy từ khối Cloud lên website và ứng dụng điện thoại
- Khối nguồn: cung cấp điện áp cho toàn hệ thống hoạt động.
3.2.4 Hoạt động của hệ thống
Hình 3.3 Sơ đồ hoạt động của hệ thống
Theo hình 3.3 mô tả hoạt động của hệ thống:
- Đầu tiên, các thông số của xe sẽ được giả lập và mô phỏng trên Arduino UNO theo đúng khung truyền dữ liệu CAN.
- Ở khối thu thập và xử lý dữ liệu, Arduino Mega sẽ thông qua truyền nhận mạng CAN trên hai dây CAN-HIGH và CAN-LOW nhận các dữ liệu giả lập, xử lý và chuyển đổi dữ liệu thành các thông số vật lý mà người dùng có thể đọc được Ngoài ra, mô-đun GPS cũng được kết nối với Arduino Mega để gửi vị trí phương tiện bao gồm kinh độ và vĩ độ Arduino Mega sẽ tổng hợp lại tất cả dữ liệu, sau đó gửi đến ROS đã cài đặt trên Raspberry thông qua giao thức Ethernet/IP nhờ kết nối với Arduino Ethernet Shield theo chuẩn SPI.
- Trong khối xử lý trung tâm, Raspberry Pi sẽ đóng vai trò trung tâm trong hệ thống Raspberry Pi và Arduino Mega được kết nối trực tiếp thông qua cáp Ethernet Raspberry Pi được cài đặt ROS để xử lý dữ liệu nhận được từ Arduino Mega, chạy các nút ROS để xử lý dữ liệu của xe và dữ liệu GPS từ Arduino Mega Sau đó sử dụng giao thức mạng HTTP để truyền dữ liệu từ ROS lên Cloud.
- Các giá trị vật lý được gửi lên cơ sở dữ liệu (Firebase) lưu trữ hoặc hiển thị trên giao diện người dùng từ xa Các thao tác với dữ liệu từ Firebase được thực hiện bằng cách gửi yêu cầu POST và GET đến địa chỉ URL của Firebase để truy xuất và nhận dữ liệu Ngoài ra, Raspberry Pi có thể cung cấp một giao diện người dùng trực tiếp thông qua màn hình kết nối trực tiếp với nó Giao diện người dùng này có thể hiển thị các thông số từ dữ liệu xe và dữ liệu GPS, cho phép người dùng theo dõi và kiểm soát các thông số trực tiếp trên thiết bị Raspberry Pi.
THIẾT KẾ PHẦN CỨNG
Trong phần thiết kế phần cứng của hệ thống, nhóm chủ yếu làm mô hình nhỏ với số liệu giả lập để tượng trưng sản phẩm thực tế Phần cứng hệ thống bao gồm các khối mô phỏng, cảm biến, thu thập và khối xử lý trung tâm chịu trách nhiệm các nhiệm vụ quan trọng như thu thập và xử lý các khung dữ liệu trên mạng CAN sau đó chuyển đổi thành thông số vật lý và gửi lên Cloud dùng để hiển thị lên khối giao diện giúp người dùng có thể theo dõi tình trạng xe hiện tại Việc tính toán, lựa chọn các mô- đun trong hệ thống đều được cân nhắc những loại phù hợp đảm bảo tính tin cậy và an toàn cho hệ thống.
3.3.1 Khối mô phỏng dữ liệu
Khối mô phỏng dữ liệu sử dụng Arduino Uno R3 để giả lập các dữ liệu như RPM, vận tốc xe, mức nhiên liệu và nhiệt độ nước làm mát động cơ theo khung truyền CAN và gửi những dữ liệu này đến khối thu thập và xử lý dữ liệu Arduino Uno được đánh giá cao về độ ổn định và đáng tin cậy Với khả năng xử lý dữ liệu CAN phức tạp, Arduino Uno đảm bảo rằng quá trình giả lập dữ liệu xe diễn ra một cách ổn định và chính xác, đáp ứng yêu cầu mà hệ thống yêu cầu Arduino Uno cung cấp các chân kết nối phù hợp và giao tiếp tương thích với mô-đun MCP2515, việc thiết lập một kết nối
37 vững chắc giữa hai thiết bị trở nên dễ dàng hơn Hình 3.4 dưới đây mô tả sơ đồ nguyên lý của Arduino Uno.
Hình 3.4 Sơ đồ nguyên lý của Arduino Uno
3.3.2 Khối thu thập và xử lý dữ liệu
Khối thu thập và xử lý dữ liệu yêu cầu cần một vi điều khiển đủ mạnh mẽ và linh hoạt để có thể thu thập và xử lý các dữ liệu từ nhiều cảm biến và mô-đun khác Vi xử lý mạnh mẽ ATmega2560 với vận tốc xung nhịp 16MHz, Arduino Mega 2560 có thể xử lý các thuật toán phức tạp và xử lý dữ liệu một cách hiệu quả Mega có 54 chân I/O kỹ thuật số và 16 chân I/O analog, cho phép kết nối nhiều thiết bị đầu vào và đầu ra, thu thập dữ liệu từ nhiều nguồn khác nhau Arduino Mega cũng hỗ trợ các giao thức giao tiếp phổ biến như UART, I2C và SPI, giúp kết nối với các cảm biến và mô- đun dễ dàng Hình 3.5 dưới đây mô tả sơ đồ nguyên lý của Arduino Mega 2560.
Hình 3.5 Sơ đồ nguyên lý của Arduino Mega 2560
Arduino Mega sau khi thu thập, lọc và xử lý dữ liệu thì sẽ truyền những dữ liệu này lên cho khối xử lý trung tâm thông qua dây Ethernet Để làm được điều này, Arduino Mega cần phải được kết nối với Arduino Ethernet Shield Mô-đun này hỗ trợ kết nối Ethernet giúp mở rộng ngoại vi cho Arduino Mega 2560 nhằm phục vụ cho quá trình truyền nhận dữ liệu giữa khối thu thập và xử lý dữ liệu với khối xử lý trung tâm Mô- đun Arduino Ethernet Shield kết nối với vi điều khiển Arduino Mega 2560 bằng giao thức SPI, cụ thể sơ đồ kết nối chân của hai bo mạch được thể hiện trong bảng 3.1 và hình 3.6.
Bảng 3.1 Sơ đồ kết nối chân của Arduino Mega 2560 và Arduino Ethernet Shield
Arduino Mega 2560 Arduino Ethernet Shield
Hình 3.6 Sơ đồ kết nối chân của Arduino Mega 2560 và Arduino Ethernet Shield
3.3.3 Khối truyền nhận CAN Để thực hiện truyền thông dữ liệu trong hệ thống mạng CAN, vi điều khiển cần kết nối với một bộ thu phát CAN để giao tiếp theo giao thức CAN Bộ thu phát CAN có nhiệm vụ chuyển đổi tín hiệu nhị phân từ vi điều khiển thành tín hiệu điện áp (CAN_HIGH và CAN_LOW) để gửi qua đường truyền CAN Mô-đun MCP2515 được sử dụng để kết nối với Arduino Uno Mô-đun CAN-BUS MCP2515 dùng chip CAN Controller MCP2515 và CAN Transceiver TJA1050 Mô-đun này có chức năng mở rộng ngoại vi CAN cho các loại vi điều khiển không tích hợp chuẩn giao tiếp CAN, sử dụng giao tiếp SPI nên bất kỳ một loại vi điều khiển nào cũng có thể giao tiếp với nó thông qua ngoại vi SPI có sẵn hoặc thậm chí có thể dùng các chân IO thông thường Hình 3.7 dưới đây mô tả sơ đồ kết nối của mô-đun MCP2415.
Hình 3.7 Sơ đồ kết nối của mô-đun MCP2515
Bảng 3.2 và hình 3.8 Mô tả sơ đồ kết nối chân của Arduino Uno R3 với MCP2515.
Bảng 3.2 Sơ đồ kết nối chân giữa Arduino Uno R3 với MCP2515
Hình 3.8 Sơ đồ kết nối chân giữa Arduino Uno R3 với MCP2515
Tương tự Arduino Uno, một MCP2515 khác cũng sẽ được kết nối với Arduino Mega
2560 để có thể thực hiện việc truyền nhận dữ liệu CAN giữa hai khối mô phỏng với khối thu thập và xử lý dữ liệu Bảng 3.3 và hình 3.9 Mô tả sơ đồ kết nối chân của MCP2515 với Arduino Mega.
Bảng 3.3 Sơ đồ kết nối chân giữa Arduino Mega với MCP2515
Hình 3.9 Sơ đồ kết nối chân giữa Arduino Mega với MCP2515
Khối cảm biến cụ thể là khối đọc định vị sử dụng mô-đun NEO-M8M GPS để xác định được vị trí của phương tiện Thông qua việc cung cấp kinh độ và vĩ độ tại điểm đo được, hệ thống có thể xác định được vị trí đó trên bản đồ để người dùng biết được phương hướng của phương tiện Với kích thước nhỏ gọn và tiêu thụ năng lượng thấp, NEO-M8M GPS rất linh hoạt và phù hợp cho các ứng dụng nhúng và di động Mô- đun cung cấp thông tin vị trí với độ chính xác cao, nhờ sử dụng hệ thống vị trí toàn cầu (GPS), với sai số nhỏ trong phạm vi bán kính 2.5m Mô-đun dễ tích hợp và giao tiếp dễ dàng với nhiều loại vi điều khiển nhờ hỗ trợ giao tiếp qua giao diện serial hoặc giao tiếp UART/TTL [24] Như theo bảng 3.4 và hình 3.10 cho thấy sơ đồ kết nối chân của mô-đun GPS với Arduino Mega theo chuẩn giao tiếp UART/TTL.
Bảng 3.4 Sơ đồ kết nối mô-đun NEO-M8M với Arduino Mega
Mô-đun NEO-M8M GPS Arduino Mega
Hình 3.10 Sơ đồ kết nối mô-đun NEO-M8M với Arduino Mega
Mô-đun định vị được kết nối với Arduino Mega bằng giao tiếp UART/TTL, để giữ vững tính ổn định và hoạt động bình thường của mô-đun cần đảm bảo rằng cung cấp đúng nguồn điện 3V3 cho mô-đun Ngoài ra, để mô-đun thu được tín hiệu và chính xác từ các vệ tinh thì mô-đun được trang bị thêm một Anten định vị GPS.
3.3.5 Khối xử lý trung tâm
Khối xử lý trung tâm có chức năng xử lý các dữ mà khối thu thập và xử lý dữ liệu gửi đến Các tính toán, xử lý và phân luồng đều được thực hiện trên ROS, sau đó các dữ đó được đẩy đến Cloud (cụ thể là là Firebase) để lưu trữ Bởi vì phải thực hiện nhiều nhiệm vụ cũng như khả năng tích hợp và sử dụng ROS thì Raspberry Pi là lựa chọn tối ưu cho khối xử lý trung tâm.
Raspberry Pi được trang bị bộ vi xử lý ARM mạnh mẽ, cho phép xử lý các tác vụ phức tạp Bên cạnh đó, Raspberry Pi cũng được hỗ trợ chính thức bởi ROS, một hệ thống phần mềm ổn định và mạnh mẽ cho ứng dụng robotica Raspberry Pi 4 là một máy tính nhúng mạnh mẽ, có thể được sử dụng cho nhiều mục đích khác nhau Ngoài việc chạy ROS, Raspberry Pi có thể xử lý các dữ liệu CAN, điều khiển các thiết bị ngoại vi, tương tác với các cảm biến và mô-đun Với kích thước nhỏ gọn của Raspberry Pi cũng là một lợi thế quan trọng, cho phép nó dễ dàng tích hợp vào các
43 hệ thống thiết bị di động Hình 3.11 dưới đây mô tả sơ đồ nguyên lý của Raspberry
Hình 3.11 Sơ đồ nguyên lý của Raspberry Pi 4
Sử dụng màn hình LCD Waveshare 7 Inch kết nối trực tiếp với khối xử lý trung tâm qua cổng HDMI và được tích hợp chức năng cảm ứng dùng để hiển thị trực tiếp các thông số đã được chuyển đổi cũng như bản đồ xác định vị trí của phương tiện Hình
3.12 dưới đây mô tả sơ đồ kết nối của màn hình với khối xử lý trung tâm.
Hình 3.12 Sơ đồ kết nối của màn hình với khối xử lý trung tâm
Bảng 3.5 Các thông số về dòng điện, điện áp, công suất tiêu thụ của các linh kiện khác
Tên linh kiện Dòng điện tiêu thụ (tối đa) Điện áp hoạt động (DC)
Công suất tiêu thụ trung bình
Arduino Ethernet Shield 50mA 5V 250mW
Mô-đun CAN bus MCP2515 10mA 3.3V - 5V 50mW
Mô-đun NEO M8M GPS 30mA 3.3V 100mW
Bảng 3.5 trên tổng hợp các thông số hoạt động đảm bảo cho các linh kiện trong mạch hoạt động tốt Raspberry Pi sẽ được đi kèm với nguồn Adapter mức điện áp ra là 5.1V, đây là khối nguồn chuẩn của Raspberry nên không cần dùng thêm các nguồn ngoài khác Màn hình sẽ sử dụng nguồn từ chân GPIO 5V trên kit Raspberry Khối mô phỏng và khối thu thập và xử lý dữ liệu được cấp một nguồn độc lập để cung cấp trong suốt quá trình hoạt động Arduino Mega 2560 và Arduino Uno cần nguồn nuôi mạch có giá trị 5V DC để mạch hoạt động tốt và tránh hỏng IC ổn áp trong mạch, vì thế cần sử dụng nguồn pin sạc dự phòng 5V DC, riêng Arduino Uno phải liên kết với giao diện chung cổng serial nên sẽ dùng nguồn nuôi từ cổng USB của máy tính
Arduino Mega có hai nguồn ra là 3.3V và 5V, các nguồn này sẽ cung cấp hoạt động cho các cảm biến và mô-đun khác hoạt động Nguồn 3.3V được cung cấp cho mô- đun định vị, nguồn 5V cấp cho mô-đun Arduino Ethernet Shield và mô-đun
MCP2515 Mô-đun MCP2515 còn lại sẽ sử dụng nguồn ra 5V của Arduino Uno.
3.3.8 Sơ đồ nguyên lý hệ thống
Hình 3 13 Sơ đồ nguyên lý hệ thống
THIẾT KẾ PHẦN MỀM
Dựa vào phần thiết kế phần cứng mà nhóm đã xây dựng lên các giải thuật và lưu đồ theo thứ tự từ phần mô phỏng dữ liệu, truyền nhận CAN, đọc định vị GPS, xử lý dữ liệu trên ROS, gửi dữ liệu lên Cloud cho đến các giao diện người dùng như Web.
3.4.1 Lưu đồ giải thuật phần cứng
– Lưu đồ giải thuật toàn hệ thống:
Hình 3.14 Lưu đồ giải thuật toàn hệ thống
Giải thích: Đầu tiên hệ thống sẽ khởi tạo các thư viện cần thiết để các chương trình trong hệ thống có thế hoạt động Sau đó hệ sẽ bắt đầu tạo dữ liệu mô phỏng thông số
47 xe trên Arduino Uno sau đó thông qua truyền nhận CAN mà gửi chúng đến Arduino Mega Cùng lúc đó Arduino Mega sẽ thu thập dữ liệu GPS từ mô-đun NEO-8M Sau khi thu thập hết các dữ liệu, Mega sẽ tổng hợp lại, loại bỏ các nhiễu và gửi chúng lên ROS ROS sẽ xử lý và gửi những dữ liệu cần thiết lên Firebase để lưu trữ và gửi ra giao diện khi có yêu cầu.
– Lưu đồ giải thuật thu thập dữ liệu GPS:
Hình 3.15 Lưu đồ giải thuật thu thập dữ liệu GPS
Giải thích: Đầu tiên thiết lập thư viện cho mô-đun NEO-8M, thiết lập kết nối với thiết bị GPS qua cổng nối tiếp, khởi tạo các thông số cần thiết Sau khi thiết lập đầy đủ thì bắt đầu kiểm tra xem có dữ liệu mới từ mô-đun GPS hay không Nếu có, chương trình sử dụng phương thức encode() của đối tượng GPS để giải mã dữ liệu GPS Tiếp theo, chương trình sẽ trích xuất các thông tin cần thiết từ đối tượng GPS Dữ liệu Latitude và Longitude được trích xuất từ đối tượng GPS và chuyển đổi thành giá trị số dạng thập phân để hiển thị đúng vị trí geografical Các dữ liệu trính xuất này sẽ được gửi đến và sử dụng ở chương trình thu thập dữ liệu.
– Lưu đồ giải thuật tạo dữ liệu mô phỏng trên Arduino:
Hình 3.16 Lưu đồ giải thuật tạo dữ liệu mô phỏng trên Arduino
Giải thích: Đầu tiên, chương trình chính cần được liên kết với giao diện mô phỏng đã được tạo trước đó qua cổng Serial Điều này đảm bảo sự tương tác giữa chương trình và giao diện người dùng Tiếp theo, cần khai báo các thư viện cần thiết trong chương trình để hỗ trợ quá trình xử lý Các thư viện này có thể bao gồm các thư viện đồ họa, thư viện giao tiếp với Arduino, thư viện xử lý dữ liệu, thư viện CAN, Sau khi khai báo thư viện, chương trình cần khởi tạo các thông tin cần thiết cho quá trình mô phỏng Điều này có thể bao gồm khởi tạo cấu hình giao diện, thiết lập kết nối với Arduino, và các thông số khác cần thiết cho quá trình nhập dữ liệu Tiếp theo, người dùng sẽ nhập dữ liệu trên giao diện phần mềm mô phỏng Các thông số, giá trị hoặc tùy chọn được cung cấp trên giao diện sẽ được người dùng nhập vào Chương trình sẽ đọc các dữ liệu người dùng đã nhập trên giao diện và chuyển đến Arduino thông
49 qua cổng Serial Arduino sẽ nhận dữ liệu từ chương trình và thực hiện các xử lý, chuyển đổi dữ liệu cho các bước tiếp theo của các chương trình trình khác.
– Lưu đồ giải thuật truyền nhận CAN:
Hình 3.17 Lưu đồ giải thuật truyền nhận CAN
Giải thích: Đầu tiên thiết lập cấu hình cơ bản cho khối CAN trên vi điều khiển, đặt vận tốc truyền dữ liệu là 500kbps Vận tốc này cho phép truyền và nhận dữ liệu với thời gian thực và khoảng cách vừa phải, tuân theo tiêu chuẩn ISO 11898 Sau khi cấu hình thành công các thành phần cơ bản của CAN, có thể gửi dữ liệu qua bộ thu phát CAN, nếu không sẽ báo lỗi chưa kết nối được Khi gửi dữ liệu sẽ cần thời gian phản hồi để xác nhận rằng dữ liệu đã được gửi đến bộ nhận thành công hay chưa Quá trình này giúp đảm bảo tính toàn vẹn và đúng thời gian của dữ liệu truyền Sau khi nhận được phản hồi, chương trình báo cáo xem việc gửi dữ liệu đã hoàn thành thành công hay chưa trước khi kết thúc một chu trình truyền dữ liệu
– Lưu đồ giải thuật thu thập dữ liệu và gửi dữ liệu lên ROS:
Hình 3.18 Lưu đồ giải thuật thu thập dữ liệu và gửi dữ liệu lên ROS
Giải thích: Đầu tiên cần phải thiết lập địa chỉ IP để thiết lập kết nối Ethernet giữa
Arduino Ethernet Shield và Raspberry Pi Sau đó tạo các thông điệp sẽ chứa các dữ liệu cần truyền, cũng như tạo các topics Bước tiếp theo sẽ tiến hành nhận dữ liệu từ các chương trình con trước đó Nếu không có dữ liệu thì sẽ kết thúc chương trình Nếu đã nhận được dữ liệu thì tiến hành kiểm tra kết nối giữa ROS Node và ROS Master hiện tại có đang hoạt động hay không, nếu các điều kiện đã được thỏa mãn, hệ thống bắt đầu gán các giá trị vào các thông điệp tương ứng Sau khi được gán đầy đủ các giá trị được gửi đến các topics tương ứng trên ROS.
– Lưu đồ giải thuật xử lý và gửi dữ liệu lên Firebase:
Hình 3.19 Lưu đồ giải thuật xử lý và gửi dữ liệu lên Firebase
Giải thích: Đoạn mã bắt đầu bằng việc gọi các thư viện cần thiết của ROS và Firebase như rospy để thực hiện các hoạt động của ROS, sensor_msgs để xử lý các loại tin nhắn và để tích hợp với Firebase Sau đó khởi tạo nút ROS và ứng dụng Firebase Nút ROS được khởi tạo bằng cách sử dụng rospy.init_node(), và ứng dụng Firebase được tạo bằng cách sử dụng URL của Firebase Hàm Callback sẽ được gọi mỗi khi nhận được một tin nhắn trên chủ đề đã đăng ký Hàm callback trích xuất các dữ liệu liên quan từ tin nhắn, như tọa độ GPS (kinh độ và vĩ độ), các thông số của xe và tạo một từ điển dữ liệu với các thông tin đã trích xuất Sau đó đăng bài từ điển dữ liệu lên Firebase Realtime Database bằng cách sử dụng phương thức Post().
3.4.2 Lưu đồ giải thuật trên giao diện Web
– Lưu đồ giải thuật đăng ký tài khoản người dùng:
Hình 3.20 Lưu đồ giải thuật đăng ký tài khoản người dùng
Giải thích: Như được mô tả trong hình 3.20, để truy cập vào trang web, người dùng cần phải đăng ký tài khoản Quá trình đăng ký bao gồm các bước sau:
Người dùng nhập các thông tin cần thiết như tên người dùng (username), email và mật khẩu Khi người dùng nhấn nút "Đăng ký", hệ thống sẽ kiểm tra tính hợp lệ của các thông tin đã nhập Cụ thể, địa chỉ email phải chứa ký tự "@" để được coi là hợp lệ, và mật khẩu phải có ít nhất 6 ký tự Nếu có bất kỳ thông tin nào không hợp lệ, hệ thống sẽ hiển thị lỗi Chỉ khi tất cả thông tin đăng ký được nhập đúng, hệ thống mới lưu trữ thông tin người dùng trên Firebase Authentication
Trên giao diện Authentication của Firebase, các thông tin về tài khoản đã đăng ký sẽ được hiển thị, bao gồm tên đăng ký, ngày tạo tài khoản, ngày đăng nhập tài khoản và UID (Unique Identifier) của người dùng.
– Lưu đồ giải thuật đăng nhập tài khoản người dùng:
Hình 3.21 Lưu đồ giải thuật đăng nhập tài khoản người dùng
Giải thích: Sau khi người dùng đã đăng ký tài khoản thành công, họ có thể đăng nhập vào ứng dụng Quá trình đăng nhập bao gồm các bước sau:
Người dùng nhập các thông tin đăng ký trước đó, bao gồm email và mật khẩu, sau đó nhấn nút "Đăng nhập" Nếu thông tin đăng nhập chính xác, tức là khớp với thông tin đã được lưu trữ trong Firebase Authentication, người dùng sẽ được đăng nhập thành công Khi đăng nhập thành công, trang giao diện chính của ứng dụng sẽ được hiển thị Tại đây, người dùng có thể truy cập các chức năng và thông tin liên quan đến tài khoản của mình, chẳng hạn như theo dõi các thông số về xe
Tuy nhiên, nếu người dùng nhấn nút "Đăng nhập" nhưng bị báo lỗi, điều này có thể do hai nguyên nhân chính là người dùng đã nhập sai thông tin đăng nhập (email hoặc mật khẩu không chính xác), tài khoản chưa được đăng ký trước đó, do đó hệ thống không thể xác thực thông tin đăng nhập
– Lưu đồ giải thuật giao diện chính của trang Web:
Hình 3.22 Lưu đồ giải thuật giao diện chính của trang Web
KẾT QUẢ PHẦN CỨNG
Sau khi việc thiết kế sơ đồ nguyên lý, tính toán và thiết kế hệ thống đã hoàn thành, cũng như việc lựa chọn linh kiện phần cứng phù hợp với yêu cầu đã được phân tích trong chương 3, quá trình bố trí và kết nối các linh kiện được tiến hành để tạo thành một sản phẩm nhỏ gọn, gọn gàng và tiện lợi, đáp ứng được cả yêu cầu kỹ thuật và thẩm mỹ Trong quá trình bố trí, các linh kiện và thiết bị được sắp xếp sao cho hợp lý và tiện dụng Các linh kiện có thể được gắn vào một bo mạch chủ (PCB) hoặc được lắp đặt trong một vỏ hoặc hộp chứa Bố trí này giúp tăng tính cơ động và sắp xếp gọn gàng của sản phẩm Các linh kiện được kết nối với nhau bao gồm việc sử dụng dây cáp, đầu nối và các công cụ kết nối phù hợp Kết nối được thực hiện cẩn thận để đảm bảo tính ổn định và đáng tin cậy của hệ thống
Hình 4.1 Mô hình phần cứng (a) mặt trên, (b) mặt trước
Sản phẩm là một hình hộp chữ nhật với việc bố trí và đi dây linh kiện một cách hợp lý, đảm bảo tính kỹ thuật, an toàn và thẩm mỹ Cấu trúc bố trí và đi dây được thiết kế theo hình 4.1 Trong sản phẩm, các linh kiện bao gồm: Arduino Uno, Arduino Mega, mô-đun MCP2515, mô-đun NEO M8M GPS kèm theo anten, Raspberry Pi 4 và màn hình LCD 7 inch Tuy sản phẩm đã được thiết kế và lắp đặt theo sơ đồ kết nối và có đầy đủ các chức năng, nhưng nó vẫn cần các bước kiểm chứng khác nhau để đảm bảo
56 hoạt động tốt nhất.Các linh kiện trong sản phẩm được đánh số theo thứ tự như sau:
4.1.1 Kết quả việc mô phỏng dữ liệu ô tô
Việc thu dữ liệu của ô tô không phải thực hiện thực tế với ô tô mà được thực hiện bằng cách giả lập Các dữ liệu giả lập được nhập từ một giao diện PyQT (hình 4.2) kết nối với cổng Serial của Arduino Uno Các dữ liệu nhập vào được quy ước lần lượt là 1-2-3-4 tương ứng với mỗi thông số muốn thu thập
1 – RPM: là vòng tua máy.
2 – Vận tốc: là vận tốc của xe.
3 – Nhiên liệu: là lượng nhiên liệu còn lại để có thể vận hành động cơ.
4 – Nhiệt độ: là nhiệt độ của nước làm mát động cơ ô tô
Hình 4.2 Giao diện mô phỏng dữ liệu
Dữ liệu giả lập sẽ là một mảng gồm 5 kí tự, ký tự đầu tiên tượng trưng cho mã ID
57 ứng với từng thông số, 4 ký tự còn lại là dữ liệu thông số giả lập Các dữ liệu giả lập này là dữ liệu mà người mà người dùng hiểu được Ví dụ: 12000 là dữ liệu giả lập nhiên liệu có giá trị là 2000 vòng/phút hay 40060 là dữ liệu giả lập nhiệt độ nước làm mát động cơ có giá trị là 60℃ Các giá trị này sẽ được Arduino Uno xử lý chuyển sang dạng có thể gửi được trên đường truyền CAN Do dữ liệu lấy từ giao diện PyQT là dạng chuỗi ký tự cần phải thực hiện một số câu lệnh để chuyển đổi Chuỗi kí tự sẽ được tách ra phần ID và phần dữ liệu mô phỏng thuộc kiểu Int như hình 4.3, bảng 4.2 nhằm giải thích rõ cấu trúc dữ liệu nhận được.
Hình 4.3 Dữ liệu mô phỏng mà Arduino Uno gửi Bảng 4.1 Dữ liệu mô phỏng trên Arduino Uno
Dữ liệu nhập từ PyQT ID Dữ liệu mô phỏng
Các dữ liệu này sẽ được Arduino Uno gửi đến Arduino Mega thông qua đường truyền CAN Arduino Mega sẽ nhận được dữ liệu giả lập được gửi từ Arduino Uno như hình 4.4 và bảng 4.2 sẽ giải thích rõ các dữ liệu nhận được Các ID 1-2-3-4 lần
58 lượt được quy định theo mã PID OBDII 1 – RPM có mã PID là 0x0D, tương tự với các ID khác: 2 – Vận tốc là 0x0C, 3 – Nhiên liệu là 0x2F, 4 – Nhiệt độ là 0x05 Các giá trị dữ liệu mô phỏng hiển thị ở dạng số HEX chiếm 2 byte tổng là 16 bit.
Hình 4.4 Dữ liệu mô phỏng mà Arduino Mega nhận được Bảng 4.2 Dữ liệu mô phỏng trên Arduino Mega
Dữ liệu trên Uno Dữ liệu trên Mega
ID Dữ liệu mô phỏng
ID (HEX) Độ dài dữ liệu (byte)
4 (Nhiệt độ nước làm mát) 55 0x05 2 0x37
Ngoài việc nhận dữ liệu mô phỏng thì Arduino Mega cũng nhận dữ liệu do mô-đun GPS gửi về bao gồm vị trí Latitude và Longitude Sau khi khi đã nhận đủ các dữ liệu từ các mô-đun khác truyền đến thì Arduino Mega tiến hành tổng hợp, tạo các chủ đề (topics) chứa các dữ liệu (messages) tương ứng và gửi chúng đến khối xử lý trung tâm là Raspberry Pi thông qua dây Ethernet
4.1.2 Kết quả khối xử lý trung tâm
Các dữ liệu sẽ được Arduino Mega tổng hợp và gửi lên Raspberry Pi Raspberry Pi chủ yếu làm việc với ROS để thực hiện việc nhận dữ liệu, xử lý và truyền chúng lên CSDL thời gian thực của Firebase Khi việc truyền nhận dữ liệu lên ROS thành công thì các chủ đề chứa các dữ liệu đã tạo sẵn ở khối thu thập dữ liệu sẽ được liệt kê thông qua lệnh $ rostopic list như hình 4.5 Các chủ đề lần lượt là /gps, /RPM, /Fuel, /Speed, /Temperature tương ứng với các dữ liệu vị trí và thông số của xe.
Hình 4.5 Các chủ đề có trên ROS
Có thể dùng lệnh $ rostopic echo /gps để kiểm tra xem có dữ liệu GPS trong /gps hay không Chủ đề /gps sẽ bao gồm thời gian thu được dữ liệu (tính bằng timestamp) và vị trí kinh độ, vĩ độ tại thời điểm thu như hình 4.6, bảng 4.3 sẽ giải thích rõ hơn từng thông số có trong chủ đề sensor_msgs/NavSatFix.msg là định nghĩa tin nhắn cho GPS có sẵn của ROS, cung cấp những thông số liên quan đến GPS (Latitude, Longitude, altitude, position_covariance, ) Tuy nhiên, yêu cầu hệ thống chỉ quan tâm đến vị trí nên những thông số khác kinh độ và vĩ độ sẽ không được đề cập đến
Hình 4.6 Dữ liệu GPS Bảng 4.3 Các thông số có trong chủ đề GPS
Trường Giá trị Ý nghĩa header/stamp secs 1716297325
Số giây (s) từ thời điểm Unix Epoch đến thời điểm khi message được tạo ra nsecs 634677287
Số nano giây (10 -9 s) bổ sung vào vào số giây biểu diễn trong trường secs
Vĩ độ tại vị trí message được tạo ra Giá trị dương là phía Bắc Xích Đạo; âm là phía Nam
Kinh độ tại vị trí message được tạo ra Giá trị dương nằm ở phía đông kinh tuyến gốc; âm là phía tây
Tương tự, các thông số mô phỏng của xe, bao gồm RPM, vận tốc, nhiên liệu và nhiệt độ nước làm mát động cơ được truyền lên ROS bằng cách sử dụng các câu lệnh như $ rostopic echo /RPM, $ rostopic echo /Speed, $ rostopic echo /Fuel và $ rostopic echo /Temperature tương ứng với các chủ đề thông số xe Hình 4.7 thể hiện dữ liệu được truyền lên ROS theo các chủ đề tương ứng
Các dữ này là những dữ liệu giả lập trước đó mà Arduino Mega thu thập được Các dữ liệu được truyền lên ROS ban đầu được lưu trữ hiển thị ở định dạng số HEX (hệ
16) Tuy nhiên, để người dùng có thể dễ dàng hiểu và sử dụng các dữ liệu này, chúng đã được chuyển đổi sang định dạng số thập phân (hệ 10) trước khi được truyền lên ROS Điều này giúp người dùng có thể đọc và phân tích các thông số một cách trực quan và rõ ràng hơn Bảng 4.4 được sử dụng để đối chiếu các dữ liệu mô phỏng ban đầu từ giao diện giả lập với dữ liệu được truyền lên ROS, nhằm có thể so sánh và xác nhận tính chính xác của các thông số mô phỏng.
Hình 4.7 Dữ liệu mô phỏng thông số của xe (a) dữ liệu RPM, (b) dữ liệu vận tốc, (c) dữ liệu nhiên liệu, (d) dữ liệu nhiệt độ nước làm mát động cơ Bảng 4.4 Bảng đối chiếu dữ liệu trên ROS với dữ liệu ban đầu
Thông số Dữ liệu mô phỏng
Dữ liệu trên ROS (DEC)
Nhiệt độ nước làm mát 55 0x05 0x37 55
Sau khi đã tổng hợp đủ các dữ liệu và xử lý chúng, một node Subscriber được tạo để thực hiện việc đẩy các dữ liệu này lên CSDL để lưu trữ và xuất dữ liệu ra giao
62 diện khi có yêu cầu Node Subscriber này đóng vai trò như một cầu nối, liên kết giữa dữ liệu thu thập được từ mô phỏng và cơ sở dữ liệu để lưu trữ Khi có bất kỳ thay đổi nào trong dữ liệu, như được minh họa trong hình 4.8, Node Subscriber sẽ lập tức gửi một yêu cầu HTTP đến Firebase Realtime Database API để cập nhật dữ liệu lên CSDL Việc cập nhật liên tục dữ liệu lên Firebase Realtime Database cho phép dữ liệu được lưu trữ an toàn và có thể truy xuất nhanh chóng khi cần.
Hình 4.8 Dữ liệu được cập nhật lên Firebase (a) Dữ liệu trên CSDL thời gian thực Firebase, (b) dữ liệu của xe, (c) Dữ liệu trên
CSDL thời gian thực Firebase, (d) dữ liệu GPS
GIAO DIỆN HIỂN THỊ TRÊN WEB
Đối với phần giao diện Web sẽ hiển thị các thông số quan trọng và cần thiết như: vận tốc, mức nhiên liệu, nhiệt độ nước làm mát động cơ và vòng tua máy một cách trực quan và dễ hiểu Bên cạnh đó, người dùng có thể xem bản đồ trên giao diện web để biết vị trí hiện tại của ô tô dựa trên thông tin được cập nhật liên tục từ CSDL.
Phần giao diện đăng nhập của trang Web được thiết kế bao gồm có ô nhập thông tin email, password và nút “Sign in” để có thể đăng nhập Phía dưới nút đăng nhập có thêm hai biểu tượng đăng nhập khác là Facebook và Google như hình 4.10
Hình 4.10 Giao diện đăng nhập Để có thể truy cập vào trang Web, người dùng sẽ được yêu cầu nhập tên người dùng
64 và mật khẩu để tiến hành xác thực, thông tin của người dùng được bảo mật và chỉ những người dùng có quyền truy cập mới có thể sử dụng trang Web
Hình 4.11 Báo lỗi của giao diện đăng nhập
Hình 4.11 người dùng cần đảm bảo các yêu cầu như: nhập thông tin Email và mật khẩu và mật khẩu phải đảm bảo hơn 6 ký tự Nếu không thực hiện chính xác các yêu cầu trên thì hệ thống sẽ hiển thị lỗi để người dùng đăng nhập lại
Hình 4.12 Giao diện đăng nhập chính xác (a) Thông báo đăng nhập chính xác, (b) Thông tin tài khoản lưu trữ trên
Trong trường hợp đăng nhập chính xác thông tin và được chuyển sang giao diện chính của trang Web hệ thống sẽ thông báo “Sign in” như hình 4.12a và trên Authentication của Firebase sẽ lưu tài khoản đăng nhập của người dùng và có hiển thị ngày đăng nhập gần nhất của tài khoản như hình 4.12b Người dùng có thể sử dụng tài khoản Google để có thể đăng nhập vào trang Web mà không cần phải đăng ký trước tài khoản và thông tin tài khoản cũng được lưu trên Authentication như phần đăng ký tài khoản người dùng.
Sau khi người dùng đăng nhập thành công hệ thống sẽ chuyển sang giao diện chính, trong giao diện chính sẽ hiển thị bao gồm logo biểu tượng của trường, nút đăng xuất khi người dùng muốn thoát ra khỏi trang Web Đến phần trung tâm của giao diện người dùng có thể quan sát và theo dõi tổng quát các thông số của xe và một bản đồ Với đồng hồ thứ nhất nằm bên trái thể hiện thông số của vòng tua máy, đồng hồ thứ hai hiển thị thông số của vận tốc xe, thời gian thực và đồng hồ thứ 3 thể hiện mức nhiên liệu, nhiệt độ nước làm mát động cơ và có một bản đồ hiển thị vị trí hiện tại của xe được thể hiện như hình 4.13.
Hình 4.13 Giao diện chính trang Web
Hình 4.14 Vòng tua máy (a) Dữ liệu vòng tua máy trên CSDL thời gian thực Firebase, (b) Giao diện hiển thị dữ liệu vòng tua máy
Trên giao diện Web có đồng hồ đo vòng tua máy được đánh dấu như hình 4.14b sẽ thay đổi liên tục các giá trị nhận từ CSDL thời gian thực Firebase Dữ liệu của vòng tua máy được lưu trữ trong đường dẫn có tên là RPM Khi nhận dữ liệu từ phần cứng cập nhật lên, đường dẫn RPM sẽ sáng vàng như hình 4.14a để nhận biết được sự cập nhật dữ liệu liên tục.
Trong Realtime Database, dữ liệu của vận tốc được nhận từ phần cứng của ô tô sẽ được lưu trữ trong một đường dẫn lớn có tên là "Parameters" Bên trong đường dẫn
"Parameters" có một đường dẫn được đặt tên là "Speed" để lưu trữ và cập nhật liên tục giá trị của vận tốc như hình 4.15
Hình 4.15 Vận tốc của xe (a) Dữ liệu vận tốc xe trên CSDL thời gian thực Firebase, (b) Giao diện hiển thị dữ liệu vận tốc xe
Khi dữ liệu vận tốc được đưa lên Realtime Database của Firebase từ phần cứng, giao diện web sẽ nhận dữ liệu từ đường dẫn "Speed" trong Firebase và cập nhật giá trị vận tốc lên đồng hồ đo vận tốc trên giao diện web Nhờ đó, người dùng có thể quan sát giá trị vận tốc hiện tại của ô tô trên giao diện web được mô tả như hình 4.15b Khi vận tốc vượt quá ngưỡng thiết lập 100km/h thì hệ thống sẽ hiển thị khung cảnh báo vận tốc và số hiển thị vận tốc chuyển đổi từ trắng sang đỏ để người dùng có thể quan sát vận tốc hiện tại của xe Việc cảnh báo giúp người dùng có thể quan sát và kiểm soát lại vận tốc chạy xe của mình được thể hiện như hình 4.16.
Hình 4.16 Cảnh báo giá trị vận tốc xe cao
Hình 4.17 Mức nhiên liệu (a) Dữ liệu mức nhiên liệu trong Real-time Database Firebase, (b) Giao diện hiển thị dữ liệu mức nhiên liệu xe
Tương tự như các thông số khác, dữ liệu mức nhiên liệu được cập nhật từ phần cứng được thể hiện như hình 4.17a Từ CSDL thời gian thực Firebase, các giá trị được cập nhật liên tục lên đồng hồ đo mức nhiên liệu như Hình 4.17b Ngoài ra, khi giá trị mức nhiên liệu giảm xuống khoảng từ 20% trở xuống hệ thống sẽ cảnh báo để người dùng biết về trạng thái nhiên liệu thấp, cần chú ý và được thể hiện như hình 4.18.
Hình 4.18 Cảnh báo mức nhiên liệu thấp
- Nhiệt độ động cơ Đối với nhiệt độ động cơ giao diện hiển thị được đánh dấu như hình 4.19a Khi nhiệt độ làm mát động cơ quá cao từ 80 ℃ trở lên hệ thống sẽ hiển thị cảnh báo để người dùng xem xét và kiểm tra lại hoạt động của xe được thể hiện như hình 4.19b.
Hình 4.19 Nhiệt độ động cơ (a) Giao diện hiển thị nhiệt độ động cơ, (b) Cảnh báo nhiệt độ động cơ cao
Hình 4.20 Giao diện hiển thị bản đồ
Bản đồ được sử dụng để xác định vị trí hiện tại của xe, mang lại cho người dùng một cái nhìn khách quan và chi tiết hơn về vị trí của xe Dữ liệu GPS sẽ được lưu trữ trên CSDL thời gian thực Firebase Khi có sự thay đổi dữ liệu thì chấm đỏ hiển thị trên bản đồ sẽ di chuyển theo vị trí hiện tại của xe và điều này có thể quan sát trên hình 4.20.
ĐÁNH GIÁ HỆ THỐNG
Hệ thống giám sát và cảnh báo ô tô dựa trên truyền thông can đã được kiểm tra là đáp ứng đủ các yêu cầu về các chức năng đã đặt ra ban đầu và đảm bảo hoạt động ổn định liên tục trong thời gian dài
Dựa trên kết quả kiểm thử, hệ thống có thể hiển thị các thông số của ô tô bao gồm RPM, vận tốc xe, mực nhiên liệu, nhiệt độ và vị trí xe khá chính xác và đáp ứng những yêu cầu đã đề ra lúc đầu Hệ thống có khả năng hiển thị các thông số khi có có sự thay đổi cách liên tục và chính xác Các chức năng hoạt động trong hệ thống thực thi cách ổn định từ việc thu dữ liệu, truyền, gửi và chuyển đổi các giá trị từ khối thu thập đến khối trung tâm Nhờ sử dụng giao thức CAN để truyền dữ liệu của xe nên có thể đảm bảo tính đồng bộ và ổn định của dữ liệu, giảm thiểu các sự cố hệ thống Tuy nhiên, do sự hạn chế của mô-đun CAN nên khả năng về Hard Realtime vẫn chưa đáp ứng được Bên cạnh đó là mô-đun GPS cũng có nhiều hạn chế về khu vực thu thập dữ liệu khiến việc thu thập dữ liệu vị trí có chút khó khăn, dẫn đến việc cập nhật dữ liệu vị trí liên tục chưa được đánh giá cao
KẾT LUẬN
Từ những yêu cầu đã đặt ra trong đề tài “XÂY DỰNG HỆ THỐNG GIÁM SÁT
VÀ CẢNH BÁO TRÊN Ô TÔ SỬ DỤNG TRUYỀN THÔNG CAN”, một hệ thống được thiết kế và xây dựng một cách toàn diện Hệ thống có khả năng thu thập các thông số quan trọng như RPM, vận tốc xe, mức nhiên liệu, nhiệt độ nước làm mát động cơ và vị trí của xe Từ những thông số này, hệ thống không chỉ cung cấp dữ liệu theo thời gian thực mà còn đưa ra cảnh báo ngay lập tức giúp người dùng có thể nhận biết và sửa chữa hoặc bảo trì ngay khi cần thiết.
Mô hình xây dựng dựa trên những yêu cầu và mục tiêu đã được đặt ra thì hệ thống đạt được những ưu điểm như sau:
- Hệ thống được xây dựng dựa trên chuẩn truyền thông CAN để xử lý dữ liệu liên quan đến các thông số như: vòng tua máy, vận tốc xe, mức nhiên liệu và nhiệt độ làm mát động cơ
- Giao diện người dùng đơn giản giúp người dùng có thể theo dõi hoạt động và vị trí của xe Ngoài ra, giao diện có hiển thị cảnh báo khi các thông số vượt quá ngưỡng an toàn
- Hoàn thiện được mô hình hệ thống theo những yêu cầu đã đặt ra và thực hiện được những chức năng tương ứng
- Chưa kết nối được với hệ thống trên xe dẫn đến mô hình còn đơn giản chỉ mang tính phát triển Các thông số chỉ được giả lập vì vậy mà không được trực quan và chính xác, việc thu thập dữ liệu còn ở mức cơ bản, lý thuyết chưa đúng với thực tế
- Do hạn chế của kinh phí, mô-đun GPS đang sử dụng sai số vẫn còn khá lớn
- Do chưa có mạch in tích hợp các mô-đun nên hệ thống còn thô và việc đi dây trở nên phức tạp, dễ xảy ra sai sót khi hoạt động
- Việc bảo mật khi truyền gửi dữ liệu chưa được đảm bảo
- Bản đồ chưa được tối ưu hóa
- Phần đăng nhập trên giao diện web chưa đảm bảo tính an toàn và bảo mật.
HƯỚNG PHÁT TRIỂN
Đề tài được xây dựng ở mức hệ thống, cho phép tích hợp và mở rộng dễ dàng với nhiều tính năng hiện đại Mặc dù chỉ dừng lại ở mức độ mô hình, nhóm nhận thấy có thể phát triển thêm một số chức năng sau đây:
- Thực hiện liên kết với hệ thống cảnh báo có trên ô tô để thông số được trực quan và hoàn thiện hơn
- Tích hợp các mô-đun thành một bảng mạch in, giúp cho hệ thống trở nên gọn và tránh sự cố về dây kết nối
- Mở rộng tính năng quản lý thông tin người dùng trên giao diện Web, giúp tăng cường khả năng quản lý và cung cấp trải nghiệm tốt hơn cho người dùng
- Phát triển khả năng xác thực thông tin người dùng khi họ quên mật khẩu đăng nhập, đảm bảo tính bảo mật và cung cấp phương pháp an toàn để khôi phục quyền truy cập
- Tối ưu hóa và cải thiện hiển thị bản đồ trên giao diện, đảm bảo trải nghiệm người dùng tốt hơn và cung cấp các tính năng và tùy chọn tương tác tốt hơn với bản đồ