CHƯƠNG 1. GIỚI THIỆU DE TAL .-2- 222222 2E++2E££E++2EE+2ES+zE+trxrrrxrsrsee | 1.1 Giới thiệu về đề tài.2_ Mục tiêu của đề tài.1 Mục tiêu tổng quát.2 Muc tidy chi g8.3 Đối tượng và phạm vi nghiên cứu.1 Đối tượng nghiên cứu.---- 2 2+S++E+2E£2EE£EE£EEE2E2E1211211211221 1e. TONG QUAN CƠ SỞ LÝ THUYET VA PHAN CỨNG SỬ DỤNG 4 2.1 Giới thiệu ngôn ngữ ÏDaF(.2 Đặc điểm của ngôn ngữ Daït.3 Những ưu điểm của Dart.--2-22:©2++22+2ES22EE22EE+2EEtEExerExerxrerkrerxee 6 2. J7 ẶẤÑẴ`ằẴằ`^ằẰ ẤT ket 8 2.1 Giới thiệu về Flutter .2 Uu diém cita Flutter ốốố.3 Các thành phan quan trong Flutter .4 Rendering va layout trong Flutter.3 Các tính năng của giao thức CAN.5 Các công cụ được sử dụng dé đo hiệu TANG .3 Cài đặt cơ bản cho Raspberry PIH.- óc + + *+ vs skkirsrkrssrseee 30 CHƯƠNG 3 THIET KE HỆ THÓNG.1 Tổng quan công ViGC.2 Nghiên cứu va chạy kiêm thử Flutter trên hệ điều hành Raspberry OS.4 Rang buộc các ham C/C++ vào trong dự án FÏuff€r.5 Thiết kế giao diệu.
TS ce, ree oo cee /, << 34 3.6 Do hiệu năng .----- - c1 91111111 H1 H1 TH HH HT TT TH Hàn kh 36 3.1 Thiết lập QML Profiler (Q†).---- 2-52 252222EE2EE2E22E122E2E1221EEeErex 36 3.2 Thiết lập Devtools (FÏuff€T).--- 2: 2+ 2+Ss£SE£2E2EE£EE2EE2EEEEEEEzExerxers 37 CHUONG 4 KET QUA DO THEO TUNG THONG SO .3 FPS trung Dinh 0n.1 Qt (FPS trung 80007.4 Thời gian khởi động ứng dụng. - --- 5c S11 St Sky ri, 47 4.5 Thời gian chuyên giữa các màn hình.--- ¿2 2 s+£s++£++£xzxzsez 49 CHƯƠNG 5 DANH GIÁ KET QUA ĐO.- - St 2E EEEEEEEEEEEEEEkEEkrrkerrree 50 CHƯƠNG 6 KET LUẬN VÀ HƯỚNG PHÁT TRIÊN.2 Hướng phát triỂn.-2--52- 2 12 2 12E1221121121127122112112110711211 21 1111 52 DANH MỤC HÌNH Hình 1.1 Đồng hồ cơ truyền thống.--- 2 2£ + £+SE+EE+EE£+E2EEEEEEEEEEEEEEEEEEerkkrrrsree 1 Hình 1.2 Đồng hồ điện tite .1 Giao diện đồng hồ kỹ thuật số cho xe 2 bánh viết bằng Qt.3 Look-up ham 00 .4 Các tang trong nền tang Flutter .5 Widget tree trong FÏUff€T. t2 9 1111111 tt re 11 Hình 2.6 Stateless Widget vs Statefull WIdget.7 Widget tree eee .8 Build Phase, generate Element Tree .9 Build Phase, tao Render 'TT€C.10 Constraint va Size .- --- L2 Tnhh TH TH TT HH Hàng 14 Hình 2.11 Hệ thống CAN Ðus.12 Cửa sô làm việc QML Profiler.--- 2c s2 2+ E+EE£2E2E++EEeEEerEzreerxers 19 Hình 2.13 Cửa số làm việc DevTOolS.- -- - + t3c 3 t2 ST TH HH TT TH HH rệp 22 Hình 2.15 Biéu đồ ngọn lửa xem hiệu suất.16 Biểu đồ xem ngọn lửa CPU .-:- 22 22E2EE+2EEt2EE2EEEEEESEEtrrkrrrree 24 Hinh 2.8510ii0ii0ii 00077 .20 Khoi dong sysstat 0 .21 Xem mức độ sử dung CPU .- --- c2 +2 St E+vseererreerrrrrrrrrsrs 26 Hình 2.22 Xem mức độ sử dụng CPU với 5 lần 1 giây .23 Xem dit liệu chi tiết mức độ sử dung CPU.-- 2-22 sz+sz+cszcxeez 26 Hình 2.24 xem mức sử dụng tài nguyên của tiến trình dang chạy.25 xem mức độ sử dụng bộ nhớ 5 lần 1 giây.-- 2-2: 5¿©z+cz+cxzsz 27 Hình 2.26 Raspberry pi 4 model E.-- s5 + SE THnHTHTH HH Hư 27 Hình 3.1 Bước | - Trong thư viện CAN, viết các Adapter Function hỗ trợ binding 0:0 .2 Bước 2 - Look-up các hàm Adapter đã viết.3 Bước 3 - Test các hàm lay từ thư viện CAN - khi chưa cắm module CAN ——.4 Bước 4 - Test các ham lấy từ thư viện CAN — khi đã cắm module CAN.7 đoạn mã chỉnh sửa 1COTI. --- ¿+ 2E 22 EEE 22111953181 58 EEEE2EEEESkkrrsreere 35 Hình 3.8 GUI: màn hình chính tao ra bằng Flutter.
2-22 2 s2 sz+sz2xszzxeez 35 Hình 3.9 GUI: Menu Screen tạo ra bằng Flufter.1 Sysstat: Khi ứng dụng Qt nhận tín hiệu CAN nhưng xe đang đứng yên.2 Sysstat: Ung dung Qt khi xe bắt đầu chuyên động.3 Task manager: Khi ứng dung Qt nhận CAN, nhưng xe đứng yên.4 Sysstat: Khi ứng dụng Flutter bắt đầu nhận tín hiệu CAN, nhưng giao diện không thay đổi (xe đang đứng yên), hàng màu xám là tiến trình của ứng dung.5 Sysstat: Khi xe bắt đầu chuyên động.6 Task manager: Khi ứng dung Flutter nhận CAN, xe đứng yên.7 Task Manager: Khi xe bat đầu chuyền động, thông số tốc độ trên man hình thay đối liên tỤC.8 Sysstat: %memory hệ thống khi chưa mở ứng dụng, build, và bắt đầu khởi động ứng dung, xe GUNG VÊN.- - G2 311911111111 TT TH go TH ng Hy 42 Hình 4.9 Sysstat: %memory khi chưa mở ứng dụng và bắt đầu khởi động ứng dụng "—.10 FPS trong 00 Xa.11 Devtools: FPS trung bình trong 40s dau tiên sau khi chạy ứng dụng.12 Devtools: FPS trung bình trong 200s đầu tiên sau khi chạy ứng dụng.13 Devtools: FPS trung bình trong 400s đầu tiên sau khi chạy ứng dụng.14 Devtools: FPS trung bình sau 400s, én định ở mức 52 FPS.15 FPS tại một thời điểm ngẫu 10101 (ol .16 Thời gian startup QT app.17 UI Thread tại thời điểm startup Thread.---:- 22 ©2sz25z+2s+zzxzscs+z 48 Hình 4.18 Raster Thread tai thời điểm khởi động ứng dung .19 Thời gian chuyển giữa các màn hình của ứng dụng Qt.20 UI Thread tại thời điểm chuyền màn hình .21 Raster Thread tại thời điểm chuyên màn hình.-2-2 255255249 DANH MỤC BANG Bảng 2.1 Danh sách khai báo giá trị cho các biến .- 2-2: 52 22£E+£x+zE+zEsrxz 7 Bảng 2.2 Thông số phan cứng Raspberry.--- 2-22 s2x+2E22EE+EE+EEtEEEzExerserrerex 29 Bảng 3.1 Đường đi của dữ liệu từ Xe. St S2 S2 2 141111111 re 32 Bảng 4.1 FPS trong các khoảng thời Ø1an.1 Tổng kết thông 86 đo .- 2-2 5S9S22EE‡EESEE2EEEE1E711211271271211211 11 xe, 50 DANH MUC TU VIET TAT AGL Automotive Grade Linux SDK Software Development Kit iOS Iphone Operating System UI Controller Area Network FFI Foreign Function Interface CCI Command-Line Interface ECI Engine Control Unit ADAS Advanced Driver Assistance Systems CPU Central Processing Unit GPU Graphic Processing Unit TOM TAT KHÓA LUẬN Nhóm nghiên cứu nền tảng Flutter trong phát triển ứng dụng di động và nghiên cứu thiết kế đồng hồ kĩ thuật số cho phương tiện giao thông hai bánh và so sánh với giao diện Qt trong phát triển đồng hồ kĩ thuật sd. Kế hoạch ban đầu của đề tài là phát triển trên hệ điều hành Automotive Grade Linux. AGL là một dự án mã nguồn mở với cốt lõi là linux, từ đó đề tài sẽ so sánh với nền tảng Qt chạy trên AGL được cung cấp bởi Bosch.
Ban đầu nhóm tiếp cận với AGL là một trong những hệ điều hành dành riêng cho ô tô để nghiên cứu và phát triển đồng hồ kĩ thuật số cho xe hai bánh sử dụng nền tảng Flutter, nhưng trong quá trình nghiên cứu và phát triển, nhóm gặp một vấn đề đó là chưa có bộ SDK của Flutter phù hợp với hệ điều hành AGL. Từ đó nhóm đưa ra các hướng giải quyết như sau: 1. Xây dung lại bộ SDK của Flutter phù hợp với AGL. Đổi từ hệ điều hành AGL sang Raspberry OS.
Với hướng giải quyết thứ nhất, việc xây dựng lại toàn bộ SDK là một thử thách rất lớn. Đề xây dựng lại bộ SDK của Flutter phù hợp với AGL thì nhóm cần thêm nhân lực và thời gian. Nhất là việc thời gian hoan thành va bảo vệ khóa luận là có hạn do đó hướng giải quyết thứ nhất không khả thi. Với hướng giải quyết thứ hai, việc chạy Flutter ứng dụng trên google app là có khả thi.
Bởi vì đã có một vài Flutter Embedder được xây dựng cho Raspberry OS, điển hình như của Sony, hay của Ardera, đồng thời, ngay cả Google cũng có hỗ trợ SDK phù hợp để có thể chạy trên Raspberry OS vì thế chúng em chọn hướng giải quyết thứ hai. Dựa theo hướng giải quyết thứ hai, đề tài đã xây dựng và tạo ra một số kết quả nhất định như là giao điện đồng hồ kĩ thuật số sử dụng nền tảng Flutter. Và với sự hỗ trợ đến từ các kĩ sư của Bosch, nhóm đã có thể truyền và nhận tín hiệu thời gian thực từ xe hai bánh lên đồng hồ kĩ thuật số. Đồng thời phía Bosch cũng đã chỉnh sửa đề Qt có thể chạy trên Raspberry, qua đó nhóm đã có thê so sánh được hiệu suất sử dụng của hai nên tảng nay.
GIỚI THIỆU ĐÈ TÀI 1.1 Giới thiệu về đề tài Cụm đồng hồ hiển thị kỹ thuật số đã được phát triển và ứng dụng rộng rãi trong các phương tiện vẫn chuyền từ nhiều thập niên qua, phổ biến trên hầu hết xe ô tô. Việc sử dụng đồng hộ kỹ thuật số dé hiển thị thông tin hỗ trợ giám sát và điều khiển mô tô đã được nghiên cứu và phát triển trong những năm gần đây. Đồng hồ kỹ thuật số giúp hiển thị được nhiều thông tin hơn, thuận tiện tương tác và hỗ trợ kiếm soát phương tiện tốt hơn, cho phép ứng dụng nhiều kỹ thuật mới giúp nâng cao độ an toàn và hiệu quả trong sử dụng phương tiện. Các tính năng của đồng hỗ số là vượt trội so với đồng hồ cơ truyền thống.2 minh họa hình ảnh về hai loại đồng hồ kỹ thuật số và đồng hồ cơ truyền thống.
sự quan tâm của đông đảo cộng đồng phát triển ứng dụng, nhóm đã quyết định sử dụng nền tang Flutter dé nghiên cứu và phát triển đồng hồ kĩ thuật số. Flutter mang ưu điểm vượt trội nhằm giải quyết các vấn đề về Fast Development và Native Performance. Flutter có thể cho phép xây dựng giao diện người dùng nhanh chóng và dễ dàng thử nghiệm và thêm tính năng và sửa lỗi nhanh hơn. Flutter còn cho phép tải lại lần thứ hai, mà không làm mắt trạng thái trên các thiết bi mô phỏng hay thiết bị thực.2 Mục tiêu của đề tài 1.1 Mục tiêu tổng quát Với sự hỗ trợ của Công ty Bosch Global Software Technologies, nghiên cứu nền tang Flutter trong phát triển ứng dụng di động và nghiên cứu thiết kế đồng hồ kĩ thuật số cho phương tiện giao thông hai bánh.
Sử dụng nền tảng Flutter và phát triển trên Raspberry Pi 4 model B.2 Mục tiêu chỉ tiết - Nghiên cứu nền tảng mới Flutter dé phát triển ứng dụng di động. - Sử dụng nén tang Flutter dé thiết kế đồng hồ hiền thị kĩ thuật số cho phương tiện xe hai bánh chạy trên Raspberry. - Sử dụng và chạy lại đồng hồ hiển thị kĩ thuật số sử dụng nền tảng Qt được cung cấp và hỗ trợ bởi công ty Bosch Global Software Technologies. - Do hiệu năng của Flutter và Qt dé có thé đưa ra những chi số, so sánh giữa hai nên tảng.3 Đối tượng và phạm vi nghiên cứu 1.1 Đối tượng nghiên cứu Đối tượng nghiên cứu chính trong khóa luận là Flutter, nền tảng mã nguồn mở được phát triển bởi Google.
Sau đó nhóm tiếp tục nghiên cứu giao điện đồng hồ kỹ thuật số cho xe hai bánh, và sử dụng nền tang Flutter để xây dựng giao diện đồng hồ kĩ thuật số cơ bản cho xe hai bánh chạy trên phần cứng là Raspberry Pi 4 Model B.2 Phạm vi nghiên cứu Nghiên cứu về khả năng xây dựng ứng dụng nhúng cho các thiết bị nhúng của Flutter, tiêu biéu là xây dựng đồng hồ kĩ thuật số cho xe hai bánh. Và cuối cùng là so sánh hiệu quả sử dung Flutter với việc sử dụng Qt.