1. Trang chủ
  2. » Giáo Dục - Đào Tạo

Nghiên cứu, thiết kế và chế tạo module trợ lý ảo hệ thống điều hòa ô tô toyota vios 2007

139 0 0
Tài liệu đã được kiểm tra trùng lặp

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 139
Dung lượng 17,71 MB

Cấu trúc

  • Chương 1: TỔ NG QUAN (0)
    • 1.1. Lý do ch ọn đề tài (22)
    • 1.2. M ục tiêu đề tài (22)
    • 1.3. Đối tượ ng nghiên c ứ u (23)
    • 1.4. Ph ạ m vi nghiên c ứ u (23)
    • 1.5. Phương pháp nghiên cứ u (23)
    • 1.6. Nghiên c ứu trong và ngoài nướ c (23)
      • 1.6.1. Tình hình nghiên c ứ u t rong nướ c (23)
      • 1.6.2. Tình hình nghiên c ứu ngoài nướ c (24)
    • 1.7. Các v ấn đề t ậ p trung gi ả i quy ế t (25)
    • 1.8. N ội dung đề tài (25)
  • Chương 2: CƠ SỞ LÝ THUY Ế T (0)
    • 2.1. Cơ sở h ệ th ống điề u hòa xe Toyota Vios 2007 (26)
      • 2.1.1. Các thành ph ầ n h ệ th ống điề u hòa (26)
      • 2.1.2. H ệ th ống điề u khi ển điề u hòa [12] (27)
    • 2.2. Cơ sở lý thuy ế t xây d ự ng tr ợ lý ả o (37)
      • 2.2.1. Khái ni ệ m tr ợ lý ả o theo TechTarget (37)
      • 2.2.2. Cấu trúc trợ lý ảo thuần túy (37)
      • 2.2.3. S ử d ụ ng Google Speech Recognition nh ậ n d ạ ng gi ọ ng nói ti ế ng Vi ệ t và (38)
      • 2.2.4. Sử dụng thư viện playsound để phản hồi bằng âm thanh (40)
      • 2.2.5. Khối xử lý đưa ra kết quả phản hồi (Logic engine) (41)
    • 2.3. Cơ sở giao di ện ngườ i dùng s ử d ụng thư việ n Tkinter (43)
    • 2.4. Cơ sở giao ti ế p gi ữ a Raspberry Pi v ớ i Arduino và ESP32 v ớ i Arduino (46)
      • 2.4.1. Tự động chạy chương trình khi khởi động Raspberry Pi 3 Model B+ [24] (46)
      • 2.4.2. Tự động shutdown Raspberry Pi với ngôn ngữ Python (48)
      • 2.4.3. Phương pháp giao tiếp Raspberry Pi với Arduino (49)
      • 2.4.4. Phương pháp giao tiếp giữa Arduino Mega và ESP32 (50)
    • 2.5. Giao th ức CAN Bus đượ c s ử d ụ ng giao ti ế p thông tin gi ữ a các h ộp điề u (51)
    • 2.6. Cơ sở lý thuy ế t v ề điề u khi ể n nhi ệt độ điề u hòa ô tô (54)
      • 2.6.2. Nhi ệt độ thi ế t b ị bay hơi được điề u khi ể n b ở i van ti ết lưu (54)
      • 2.6.3. V ị trí các c ả m bi ế n nhi ệt độ trong cabin và ngoài xe (55)
      • 2.6.4. Vai trò qu ạ t gió trong điề u khi ể n nhi ệt độ (56)
      • 2.6.5. Cơ chế điề u khi ể n nhi ệt độ theo tài li ệu đào tạ o Toyota [36] (57)
      • 2.6.6. Cơ chế điề u khi ể n nhi ệt độ ON/OFF theo tài li ệ u Technical Explanation for (58)
  • Chương 3: NGHIÊN CỨ U, THI Ế T K Ế VÀ XÂY D Ự NG H Ệ TH Ố NG (0)
    • 3.1. Xây d ự ng tr ợ lý ả o h ệ th ống điề u hòa và giao di ện tương tác ngườ i dùng trên (59)
      • 3.1.1. Xây d ự ng thu ậ t toán nh ậ n d ạ ng câu l ệ nh ph ạ m vi h ệ th ống điề u hòa (59)
      • 3.1.2. Xây d ự ng thu ật toán điều hòa để đưa ra quyết đị nh ph ả n h ồi và điề u khi ể n (61)
        • 3.1.2.1. Chương trình xử lý ch ức năng tắ t và m ở qu ạ t gió (0)
        • 3.1.2.2. Chương trình xử lý chức năng thay đổi tốc độ quạt gió (62)
        • 3.1.2.3. Chương trình xử lý t ắ t và m ở điề u hòa (0)
        • 3.1.2.4. Chương trình xử lý tăng và giả m nhi ệt độ (68)
        • 3.1.2.5. Chương trình xử lý các chế độ hướng gió (75)
        • 3.1.2.6. Chương trình xử lý ch ế độ gió trong ho ặ c gió ngoài (76)
      • 3.1.3. Phát tri ể n ch ức năng tiệ n nghi ghi nh ớ v ị trí điề u hòa c ủ a tr ợ lý ả o (77)
      • 3.1.4. Ứ ng d ụ ng giao di ện ngườ i dùng trên tr ợ lý ả o (79)
        • 3.1.4.1. Giới thiệu các chức năng của giao diện người dùng (79)
        • 3.1.4.2. Ch ức năng hiể n th ị thông tin nhi ệt độ trong xe (80)
        • 3.1.4.3. Chức năng thay đổi nhiệt độ và tốc độ quạt gió (81)
        • 3.1.4.4. Chức năng thao tác thay đổi chế độ hướng gió ảnh hưởng đến chế độ lấy gió trong/ngoài (82)
        • 3.1.4.5. Ch ức năng nhớ v ị trí điều hòa đượ c phát tri ển giúp ngườ i dùng gi ả m (83)
    • 3.2. Ứ ng d ụ ng tín hi ệu CAN Bus vào tính năng thông minh hệ th ố ng nh ằ m ti ế t (84)
      • 3.2.1. K ế t qu ả thu th ậ p data CAN và d ự đoán tín hiệ u tr ạ ng thái c ử a xe (84)
      • 3.2.2. Xây d ựng chương trình xử lý tín hi ệ u CAN và tr ợ lý ảo để c ả nh báo nh ằ m ti ế t (85)
        • 3.2.2.1. Xây dựng chương trình truyền nhận trạng thái cửa xe từ ESP32 đến (85)
        • 3.2.2.2. Xây d ựng chương trình cả nh báo th ụ độ ng c ử a m ở khi điều hòa đang hoạt động của trợ lý ảo (86)
    • 3.3. Nghiên c ứ u và thi ế t k ế m ạch điện, cơ cấ u ch ấ p hành trên h ệ th ố ng tr ợ lý ả o 66 1. Nghiên c ứ u và thi ế t k ế m ạch điệ n cho các ch ức năng hệ th ố ng (87)
      • 3.3.1.1. Thiết kế sơ đồ mạch điện cung cấp nguồn hệ thống (87)
      • 3.3.1.2. Nghiên c ứ u, thi ế t k ế m ạch điện và phương thức điề u khi ể n qu ạ t gió (88)
      • 3.3.1.3. Nghiên c ứ u, thi ế t k ế m ạch điện và phương thức điề u khi ể n relay c ấ p (91)
      • 3.3.1.5. M ạch điện trong điề u khi ể n nhi ệt độ (95)
      • 3.3.2. Nghiên c ứ u và thi ế t k ế b ộ ph ậ n thay th ế cơ cấ u liên k ế t c ụ m dây cáp (96)
        • 3.3.2.1. Thi ế t k ế và ch ế t ạo cơ cấu in 3D trong thay đổi hướ ng gió vào cabin (96)
        • 3.3.2.2. Thi ế t k ế và ch ế t ạo cơ cấu in 3D trong thay đổ i cánh l ấ y gió (98)
    • 3.4. Xây d ựng chương trình Arduino điề u khi ể n h ệ th ống cơ cấ u ch ấ p hành (100)
      • 3.4.1. Vai trò, ch ức năng và nhiệ m v ụ các thành ph ần đầu vào và đầ u ra Arduino (100)
      • 3.4.2. Chương trình xử lý chính trên Arduino (102)
      • 3.4.3. Chương trình xử lý ti ền điề u khi ển cơ cấ u ch ấ p hành (103)
      • 3.4.4. Chương trình điề u khi ể n t ốc độ qu ạ t gió (105)
      • 3.4.5. Chương trình điề u khi ển cơ cấ u l ấy gió và hướ ng gió vào cabin (106)
      • 3.4.6. Chương trình reset trạng thái trướ c khi t ắ t h ệ th ố ng (108)
    • 3.5. K ế t qu ả nghiên c ứu điề u khi ể n gi ả m nhi ệt độ (108)
      • 3.5.1. K ế t qu ả thu th ậ p nhi ệt độ để xác đị nh nhi ệt độ t ố i thi ể u cabin (108)
      • 3.5.2. Đánh giá kế t qu ả th ử nghi ệ m s ự ảnh hưở ng nhi ệt độ dàn l ạnh đế n nhi ệt độ (109)
      • 3.5.3. K ế t qu ả nghiên c ứ u s ự ảnh hưở ng th ời điể m đ óng/ng ắ t tín hi ệu A/C đố i v ớ i (111)
      • 3.5.4. K ế t qu ả nghiên c ứ u ả nh hưở ng c ủ a t ốc độ qu ạt gió đế n th ời gian đạt đáp ứ ng (116)
      • 3.5.5. Xây d ự ng thu ật toán điề u khi ể n gi ả m nhi ệt độ cho tr ợ lý ả o (117)
  • Chương 4: ĐÁNH GIÁ KẾ T QU Ả NGHIÊN C Ứ U (0)
    • 4.1. T ổ ng quát h ệ th ố ng tr ợ lý ả o (120)
      • 4.1.1. Mô hình hóa h ệ th ố ng tr ợ lý ả o (120)
      • 4.1.2. Các ch ức năng đượ c nghiên c ứ u và th ự c hi ện trong đề tài (121)
    • 4.2. Đánh giá kế t qu ả nghiên c ứ u tr ợ lý ả o và giao di ệ n (122)
      • 4.2.1. Đánh giá thờ i gian g ử i data t ừ Raspberry Pi đế n Arduino qua giao th ứ c (122)
      • 4.2.2. Đánh giá thờ i gian tr ợ lý ả o x ử lý các câu l ệ nh (124)
      • 4.2.3. K ế t lu ậ n v ề tr ợ lý ả o và giao di ệ n (125)
    • 4.3. Đánh giá kế t qu ả c ủ a ch ức năng cả nh báo m ở c ửa khi điều hòa đang hoạ t độ ng (125)
    • 4.4. Đánh giá mô hình phầ n c ứ ng tr ợ lý ả o (126)
      • 4.4.1. Đánh giá thông số dòng điệ n t ả i h ệ th ố ng ho ạt độ ng t ấ t c ả các ch ế độ (126)
      • 4.4.2. Đánh giá bộ ph ậ n ch ấ p hành in 3D (127)
    • 4.5. Đánh giá thờ i gian x ử lý c ủ a Arduino (128)
    • 4.6. Đánh giá kế t qu ả điề u khi ể n gi ả m nhi ệt độ thay đổ i các m ức độ liên t ụ c (129)
  • Chương 5: KẾ T LU Ậ N (0)
    • 5.1. K ế t lu ậ n (130)
    • 5.2. Đóng góp mới đố i v ớ i chuyên ngành và ph ạ m v ị ứ ng d ụng đề tài (130)
    • 5.3. H ạ n ch ế (130)

Nội dung

Trang 1 BỘ GIÁO DỤC VÀ ĐÀO TẠOTRƯỜNG ĐẠI HỌC SƯ PHẠM KỸ THUẬT THÀNH PHỐ HỒ CHÍ MINH ĐỒ ÁN TỐT NGHIỆPNGHÀNH CÔNG NGHỆ KỸ THUẬT Ô TÔ NGHIÊN CỨU, THIẾT KẾ VÀ CHẾ TẠO MODULE TRỢ LÝ ẢO HỆ THỐ

TỔ NG QUAN

Lý do ch ọn đề tài

Các dòng xe hiện nay tuy rất hiện đại về mặt công nghệ và mang lại nhiều trải nghiệm cho người dùng nhưng kèm theo đó là các thao tác với tiện nghi trên xe cũng tăng lên thông qua các nút nhấn Từ đó dẫn đến việc tài xế phải dành một phần tập trung của việc lái xe vào việc sử dụng các tiện nghi ô tô [1] [2] Từ vấn đề trên cho thấy các tiện nghi ô tô hiện đại là một trong những nguyên nhân làm tài xế bị mất tập trung và dẫn đến tai nạn giao thông

Khi khoa học, công nghệ và kỹ thuật phát triển đặc biệt là các công nghệ tự động thông minh như trợ lý ảo Trợ lý ảo ngoài giúp người dùng tra cứu thông tin một cách nhanh chóng, hiện nay trợ lý ảo còn can thiệp và điều khiển các thiết bị người dùng chính xác [3] [4] [5]

Vì những lý do trên nên đề tài “Nghiên cứu, thiết kế và chế tạo module trợ lý ảo hệ thống điều hòa ô tô Toyota Vios 2007” thật sự cần thiết để giải quyết vấn đề kép đó là vừa góp phần giúp tài xếtập trung lái xe an toàn và đáp ứng sự tiện nghi thông minh trên ô tô thông qua giải pháp điều khiển tác vụ trên điều hòa ô tô bằng giọng nói trong lúc lái xe Đặc biệt đề tài điều khiển nhiệt độ tự động trong xe giúp tài xế hạn chế các thao tác liên quan đến nhiệt độ Song song đó đề tài giải quyết được vấn đề nếu người dùng không thể ra lệnh bằng giọng nói thì có thể hoàn toàn sử dụng các thao tác thủ công trên màn hình cảm ứng.

M ục tiêu đề tài

- Mục tiêu tổng quát: nghiên cứu, thiết kế và chế tạo module trợ lý ảo hệ thống điều hòa ô tô Toyota Vios 2007

+ Nghiên cứu, thiết kế và xây dựng trợ lý ảo tương tác với tiện nghi điều hòa bằng giọng nói

+ Nghiên cứu, xây dựng và thực nghiệm phương pháp điều khiển giảm nhiệt độ + Ứng dụng đọc tín hiệu CAN bus vào việc cảnh báo thụđộng nhằm mục đích tiết kiệm nhiên liệu

+ Nghiên cứu và lập trình chức năng nhớ vịtrí điều hòa phục vụ mục đích tiện nghi.

Đối tượ ng nghiên c ứ u

- Hệ thống điều hòa ô tô Toyota Vios 2007

- Trợ lý ảo giao tiếp hai chiều với người dùng.

Ph ạ m vi nghiên c ứ u

- Về không gian: đề tài được thực hiện trên xe Toyota Vios 2007 tại khoa Cơ khí Động lực của trường Đại học Sư phạm Kỹ thuật Thành phố Hồ Chí Minh

- Thời gian thực hiện đề tài: 30/10/2022 đến 13/02/2023

- Phạm vi về nội dung thực hiện:

+ Giao tiếp các câu lệnh cơ bản giữa người dùng và trợ lý ảo trong phạm vi tiện nghi điều hòa ô tô, ngôn ngữ giới hạn sử dụng giọng nói phổ thông

+ Điều khiển các cơ cấu chấp hành theo hệ thống nguyên bản, thử nghiệm điều khiển giảm nhiệt độ cabin trong điều kiện động cơ chạy cầm chừng và phát triển một số tiện nghi hiện đại.

Phương pháp nghiên cứ u

-Phương pháp phân tích và tổng hợp tài liệu: đề tài phân tích tài liệu về trợ lý ảo được sử dụng phổ biến hiện nay kết hợp cơ sở lý thuyết hệ thống điều hòa ô tô từ tài liệu chuyên ngành Từđó đưa ra phương pháp kết hợp các cơ sở lý thuyết để giải quyết vấn đề

- Phương pháp thực nghiệm kết hợp thu thập số liệu: đề tài thực nghiệm và kết hợp các cảm biến cùng các công cụ có sẵn trong môi trường lập trình để thu thập các số liệu cần thiết để phục vụđánh giá hệ thống

- Phương pháp định lượng: phương pháp được sửđể tổng kết và phân tích các số liệu thu thập từ các phương pháp trước, đểđưa ra nhận xét và đánh giá kết quả có phù hợp với đáp ứng của hệ thống.

Nghiên c ứu trong và ngoài nướ c

1.6.1 Tình hình nghiên cứu trong nước

Trợ lý ảo Vivi VinFast [6] Được bắt đầu với câu lệnh “Hey VinFast”, trợ lý ảo ViVi được xây dựng trên nền tảng Trí tuệ nhân tạo kết hợp với công nghệ Xử lý ngôn ngữ tự nhiên Khi tích hợp trên xe,

3 ứng dụng cho phép người lái dùng giọng nói thực hiện nhiều tác vụ như dẫn đường, gọi điện, nhắn tin, nghe nhạc, đọc tin tức, hay điều khiển các chức năng trên xe… Hơn nữa, ViVi còn có thể trò chuyện ngẫu hứng, kể chuyện cười cũng như giải đáp các câu hỏi thường ngày, giúp người lái có những phút giây thư giãn và vui vẻ Hệ thống có khả năng hỗ trợ người dùng hỏi đáp thông tin và thực hiện nhiều tác vụ khi đang di chuyển, mà không ảnh hưởng đến độ tập trung và thao tác lái xe của tài xế.

Ra mắt từ cuối năm 2020, trợ lý tiếng Việt Kiki trên ô tô giúp người lái xe thực hiện một số tác vụ phổ biến như tìm đường, mở nhạc, đọc tin tức thông qua câu lệnh giọng nói rất thuận tiện và tiết kiệm thời gian Theo đó, người lái xe không cần phải dùng tay để chạm vào điện thoại hay màn hình ô tô, thay vào đó chỉ cần nói ra yêu cầu, Kiki sẽ hỗ trợ thực hiện Nhờ vậy, người cầm vô lăng có thể tận hưởng cảm giác rảnh tay, tập trung điều khiển phương tiện an toàn hơn.

VAV là ứng dụng trợ lý ảo dành riêng cho người Việt đểgiúp người dùng di động có thể giao tiếp với điện thoại của mình bằng các khẩu lệnh một cách tiện dụng nhất có thể

Cụ thể hơn, VAV cho phép người dùng tương tác với smartphone bằng giọng nói hoàn toàn tiếng Việt để thực hiện các tác vụ cần thiết hàng ngày Với VAV, bạn có thể dễ dàng hẹn chuông báo thức, đặt lịch cho một cuộc họp, bật/tắt định vị, gọi điện, nhắn tin cho ai đó, gọi taxi, mở một ứng dụng trên máy, duyệt web, tìm đường trên bản đồ, tìm cây ATM gần bạn, tra từ điển, tra cứu Wikipedia, hay mở một bản nhạc yêu thích … chỉ đơn giản bằng các mệnh lệnh hay câu hỏi hết sức tự nhiên

1.6.2 Tình hình nghiên cứu ngoài nước

Designing a virtual assistant for in-car child entertainment [9]

PANDA là một trung tâm giải trí ảo trong ô tô có thể di chuyển xung quanh ô tô để tương tác với người lái xe là cha mẹ hoặc với trẻ em ngồi ở ghế sau PANDA hỗ trợ phụ huynh-người lái xe thông qua giao diện giọng nói, giúp gián tiếp tương tác với trẻ em ở ghếsau và để giảm bớt sựphân tâm cho người lái xe đồng thời thu hút, giải trí và giáo dục trẻ em

Send destinations, start or select the temperature of your Hyundai using

Sử dụng Google Assistant và Hyundai Blue Link, bạn có thể gửi các điểm đến phương tiện của mình một cách thuận tiện, khởi động, đặt nhiệt độ, v.v Để bắt đầu, hãy liên kết tài khoản MyHyundai của bạn bằng tên người dùng và mật khẩu MyHyundai của bạn Để truy cập các chức năng từ xa, bạn cần cung cấp bằng lời nói mã PIN Blue Link của mình Virtual Assistants and Self-Driving Cars [11]

Bài báo phân tích và thảo luận về trợ lý ảo chỉ nên hỗ trợcon người hay thay thế họ khi cần thiết? Phạm vi hành động của trợ lý ảo có nên được giới hạn trong các nhiệm vụ lái xe liên quan đến an toàn hoặc bất kỳ hoạt động nào được thực hiện trong ô tô hoặc được điều khiển từ ô tô không? Mặc dù ởgiai đoạn rất sớm của quá trình phát triển thương mại hóa, bài báo sẽ xem xét tình trạng thực tế của các trợ lý ảo trong ô tô, nhấn mạnh vai trò và chức năng của chúng trong hệsinh thái lái xe được kết nối và tựđộng Bằng cách rút ra từ những phản ánh trước đó về tựđộng hóa, rô-bốt và tác nhân thông minh, sau đó nó sẽ xác định một loạt vấn đề cần giải quyết bởi cộng đồng khoa học, các nhà hoạch định chính sách và các bên liên quan trong ngành ô tô.

Các v ấn đề t ậ p trung gi ả i quy ế t

Vấn đề 1: giao tiếp với chức năng tiện nghi điều hòa bằng giọng nói

Vấn đề2: điều khiển giảm nhiệt độ bằng phương pháp đóng/ngắt tín hiệu A/C

Vấn đề3: đọc tín hiệu CAN bus đểứng dụng vào trợ lý ảo

Vấn đề 4: phát triển chức năng tiện nghi nhớ vị trí điều hòa.

N ội dung đề tài

Chương 2: CƠ SỞ LÝ THUYẾT

Chương 3: NGHIÊN CỨU, THIẾT KẾ VÀ XÂY DỰNG HỆ THỐNG

Chương 4: ĐÁNH GIÁ KẾT QUẢ NGHIÊN CỨU

CƠ SỞ LÝ THUY Ế T

Cơ sở h ệ th ống điề u hòa xe Toyota Vios 2007

2.1.1 Các thành phần hệ thống điều hòa a) Các thành phần hệ thống điều hòa ởkhoang động cơ b) Vị trí quạt gió và hộp dàn lạnh c) Các thành phần hệ thống điều hòa trong cabin d) Các thành phần bên trong hộp dàn lạnh

Hình 2.1 Các thành phần và vị trí hệ thống điều hòa

6 2.1.2 Hệ thống điều khiển điều hòa [12]

7 a) Khối sơ đồ mạch điện quạt gió

8 b) Khối sơ đồ mạch nguồn và tín hiệu đầu vào và đầu ra hệ thống c) Khối tín hiệu đầu vào và đầu ra và giao tiếp với hộp ECU

Hình 2.2 Sơ đồ mạch điện hệ thống điều hòa

Giải thích các ký hiệu:

Công tắc điều hòa không khí (A/C SWITCH) hay gọi công tắc tín hiệu A/C

Quạt gió Điện trở của quạt gió

Bộ khuếch đại điều hòa không khí (ECU A/C)

Cảm biến vị trí trục khuỷu

Bộđiều khiển động cơ(ECM)

Công tắc điều chỉnh tốc độ quạt

Lớp vỏ bọc chống nhiễu từ

Hình 2.3 Sơ đồ hóa khối tín hiệu đầu vào và đầu ra của hệ thống điều khiển

Chế độ quạt gió: Ở chế độ này máy nén điều hòa không được cấp điện, chỉ có quạt gió được cấp điện và hoạt động mức độ mạnh yếu tùy vào công tắc điều khiển tốc độ của quạt gió.

Dựa vào sơ đồ ta nhận thấy mạch điều khiển động cơ quạt là kiểu mạch dương chờ ở cuộn dây relay HTR.

Khi công tắc xoay ở vị trí số 0:

Relay HTR không được đóng do đó động cơ quạt không được cấp điện, motor quạt gió không hoạt động.

Hình 2.4 Núm xoay quạt gió ở vị trí 0 Hình 2.5 Vị trí công tắc núm xoay quạt gió ở LOW

Hình 2.6 Vị trí công tắc núm xoay quạt gió ở M1

Hình 2.7 Vị trí công tắc núm xoay quạt gió ở M2

Hình 2.8 Vị trí công tắc núm xoay quạt gió ở H1 Khi công tắc xoay ở vị trí 1(LOW) đây là vị trí quạt có lưu lượng gió thổi vào cabin (khoang hành khách) là thấp nhất.

Mạch điện hoạt động như sau: Dòng điện từ cực dương ắc quy → ổ khóa → cầu chì Gauge → cuộn dây relay HTR → chân 9 đến chân 5 cụm công tắc quạt(E1) → ED1 → D1, relay đóng cho dòng đi từ dương ắc quy → cầu chì HTR → chân 5 đến chân 3 của tiếp điểm relay HTR → động cơ quạt gió(E4) → chân 4 đến chân 1 của điện trở quạt gió(E3)

→về mass D1, quạt quay với tốc độ LOW (LO)

Khi công tắc xoay ở vị trí 2 (M1):

Dòng điện từ cực dương ắc quy → ổ khóa → cầu chì Gauge → cuộn dây relay HTR

→ chân 9 đến chân 5 cụm công tắc quạt (E1) → ED1 → D1, relay đóng cho dòng đi từ cực dương ắc quy → cầu chì HTR → chân 5 đến chân 3 của tiếp điểm relay HTR → động cơ quạt gió(E4) → chân 4 đến chân 3 của điện trở quạt(E3) → chân 7 đến chân 5 cụm công tắc quạt(E1) → D1, quạt quay với tốc độ M1.

Khi công tắc xoay ở vị trí 3 (M2):

Dòng điện từ cực dương ắc quy → ổ khóa → cầu chì Gauge → cuộn dây relay HTR

→ chân 9 đến chân 5 cụm công tắc quạt (E1) → ED1 → D1, relay đóng cho dòng đi từ cực dương ắc quy → cầu chì HTR → chân 5 đến chân 3 của tiếp điểm relay HTR → motor quạt gió(E4) → chân 4 đến chân 3 của điện trở quạt(E3) → chân 6 đến chân 5 cụm công tắc quạt(E1) → D1, quạt quay với tốc độ M2.

Khi công tắc xoay ở vị trí 4(H1):

Dòng điện từ cực dương ắc quy → ổ khóa → cầu chì Gauge → cuộn dây relay HTR

→ chân 9 đến chân 5 cụm công tắc quạt (E1) → ED1 → D1, relay đóng cho dòng đi từ

14 cực dương ắc quy → cầu chì HTR → chân 5 đến chân 3 của tiếp điểm relay HTR → motor quạt gió(E4) → chân 4 đến chân 3 của điện trở quạt(E3) → chân 10 đến chân 5 cụm công tắc quạt(E1) → D1, quạt quay với tốc độ cao nhất.

Khi quạt gió được kích hoạt ở bất kỳ số nào thì đều có 1 tín hiệu được gửi về chân SBLW của hộp ECU mục đích để hộp nhận biết được quạt gió đã được kích hoạt. Điều kiện để máy nén hoạt động: Điều kiện 1: Bật công tắc A/C.

Bật công tắc quạt gió. Động cơ hoạt động Điều kiện 2: Tín hiệu điều khiển của bộ khuếch đại điều hòa (cảm biến dàn lạnh). Công tắc van áp suất

Tín hiệu điều khiển từ ECU động cơ

Tín hiệu bù ga điều hòa

Quạt gió tối thiểu số 1(LOW)

Khi điều kiện 1 đã được đáp ứng thì chân (28) LED trên hộp điều khiển điều hòa sẽ nối mass khi đó đèn led màu xanh trên nút nhấn A/C sẽ sáng Chỉ cần một trong các điều kiện con trong điều kiện 1 không thể đáp ứng thì đèn led sẽ tắt và hệ thống ngưng hoạt động

Ngoài ra để hệ thống điều hòa hoạt động ổn định cần có sự hoạt động của quạt gió số

2 Các điều kiện này cùng nhau tiếp nhận, xử lý và điều khiển trong suốt quá trình hệ thống làm việc.

Bật công tắc A/C khi đó: Nguồn điện từ dương ắc quy → ổ khóa → cầu chì 7,5A A/C

→ qua chân 2 đến chân 4 E5 → chân số 27 A/C của bộ khuếch đại A/C (ECU A/C)

Bật công tắc quạt gió khi đó: chân số 21 SBLW của bộ khuếch đại A/C (ECU A/C) được nối mass qua công tắc quạt. Động cơ hoạt động khi đó: cảm biến trục cam (C2) → ECU động cơ (ECM) → từ chân 30 AC1 của ECU động cơ → ECU A/C.

Lúc này: cực dương ắc quy → ổ khóa → cầu chì 7,5A A/C → chân 1 đến chân 2 relay A/C → ở chân 15 của ECU sẽ có tín hiệu xuống mass (sau khi đủ 3 điều kiện cần ECU AC đóng cho mass ra cọc 15MGC) khi đó: cực dương ắc quy → ổ khóa → cầu chì

→ chân 5 relay A/C → chân 3 relay A/C → mặt hít van điện từ → mass Máy nén hoạt động.

Trong quá trình máy nén hoạt động ECU A/C đưa ra tín hiệu và tiếp nhận tín hiệu để điều khiển hệ thống.

Cảm biến nhiệt độ dàn lạnh trên xe Vios này là loại điện trở nhiệt, khi nhiệt độ tăng nên điện trở giảm xuống Khi nhiệt độ giảm xuống thì điện trở tăng lên Nhờ đó có thể điều khiển quá trình hoạt động của máy nén với nhiệt độ theo ý muốn của người dùng thông qua việc điều khiển mass với relay A/C.

Mạch hoạt động: Chân 22TE của ECU A/C → E2 → chân 23 SG-2 → ….

Cụm tiếp điện giữa cọc 4 và 1 của A3 khi đóng truyền tín hiệu mass về ECU A/C để điều khiển đóng máy nén Còn nếu khi áp suất thấp hoặc cao quá cho phép thì 2 cụm tiếp điểm này sẽ tách ra bởi áp suất Khi đó máy nén bị ngắt.

Mạch điện: Mass → cọc 1 của A3 → cọc 4 của A3 → cọc 12PSW của ECU AC →

Ngoài ra sau khi máy nén hoạt động áp suất của ống cao áp tăng đạt mức làm đóng tiếp điểm tại cọc 3 và 2 của A3 từ đó cấp tín hiệu mass tới relay quạt gió số 2 của quạt làm mát nước làm mát động cơ.

Mạch điện: mass → cọc 3 của A3 → cọc 2 của A3 → cọc 2 CFN- của ECU AC →

Tín hiệu từ ECU động cơ:

Cơ sở lý thuy ế t xây d ự ng tr ợ lý ả o

2.2.1 Khái niệm trợ lý ảo theo TechTarget

TechTarget là một công ty của Hoa Kỳ cung cấp các dịch vụ tiếp thịtheo hướng dữ liệu cho các nhà cung cấp công nghệđã định nghĩa trợ lý ảo (virtual assistant) trên trang web của họ rằng: “một trợ lý ảo, cũng như trợ lý AI hoặc trợ lý kỹ thuật là một chương trình ứng dụng hiểu các lệnh thoại ngôn ngữ tự nhiên và hoàn thành các tác vụcho người dùng” [13]

2.2.2 Cấu trúc trợ lý ảo thuần túy

Trong đề tài nghiên cứu tham khảo thuật toán trợ lý ảo giọng nói từ tài liệu Building virtual assistant for Raspberry Pi [14] Trợ lý ảo giọng nói hoạt động dựa trên ba thành phần chính: một là bộ chuyển đổi lời nói thành văn bản được gọi là bộ STT (speech to text), hai là bộ xử lý logic được lập trình được gọi là bộ logic engine và ba là bộ chuyển đổi văn bản thành âm thanh được gọi là bộ TTS (text to speech) Toàn bộ chương trình trợ lý ảo được lập trình bằng ngôn ngữ Python.

Hình 2.9 Sơ đồ hoạt động trợ lý ảo giọng nói thuần túy Phần STT chuyển lời nói thành văn bản để logic engine có thể xử lý được thì nó liên quan đến việc ghi âm giọng nói người dùng sau đó sử dụng công cụ ngôn ngữ tự nhiên NLP (natural language processing) để chuyển file âm thanh thành dạng văn bản Phần logic

17 engine là thành phần của phần mềm nhận chuỗi văn bản từ STT và xử lý đầu vào và chuyển đầu ra đến TTS Logic engine xử lý các truy vấn người dùng bằng hàng loạt các câu lệnh if elif kết hợp các thư viện xử lý chuỗi trong ngôn ngữ lập trình Python Logic engine quyết định đầu ra phải như thế nào để đáp ứng với đầu vào cụ thể Phần TTS nhận kết quả đầu ra từ logic engine và chuyển chuỗi văn bản thành lời nói để hoàn thành tương tác với người dùng

Hệ thống ba thành phần này bỏ qua các tác động vật lý giữ người vàmáy thay vào đó người dùng có thể tương tác với hệ thống như tương tác với một người trợ lý cá nhânbằng giọng nói

2.2.3 Sử dụng Google Speech Recognition nhận dạng giọng nói tiếng Việt và chuyển thành văn bản

Nhận dạng và chuyển âm thanh thành chuỗi văn bản được coi như là phần tai của trợ lý ảo Trong đề tài nghiên cứu này sử dụng công cụ nhận dạng giọng nói là Google Speech Recognition Công cụ này chuyển chính xác lời nói thành văn bản với API được cung cấp bởi công nghệ AI tốt nhất của Google [15] Đây là một công cụ chuyển lời nói của nhiều ngôn ngữ thành chuỗi văn bản trực tuyến có độ chính xác cao hơn so với các model nhận dạng giọng nói offline ứng dụng các công nghệ machine learning hay deep learning khác như model Vosk [16] Bên cạnh việc sử dụng Raspberry Pi có tốc độ xử lý tương đối và dung lượng RAM thấp để chạy chương trình này thì hoàn toàn không thích hợp để chạy các model nhận dạng giọng nói có dung lượng lớn đòi hỏi xử lý nhanh để nhận được kết quả đầu ra Module trợ lý ảo trong đề tài này sử dụng mạng Internet được phát từ module Dcom 4G Việc vận dụng Internet vào các dự án ô tô đang là điều tất yếu vì xu hướng Iot (internet of thing) trong việc giám sát các yếu tố liên quan đến ô tô cá nhân [17] và database dữ liệu trong thu thập các âm thanh người dùng [18] trên ô tô ngày càng phát triển Tuy nhiên cơ sở hạ tầng ở Việt Nam cần phải quan tâm nhiều hơn nữa để có thể phủ Internet trên cả nước để có thể phát triển đến trình độ kỷnguyên số 4.0.

Trước khi cài đặt thư viện cho môi trường thì cần cài đặt PyPi Đây là một trình quản lý thư viện cho Python Đối với môi trường Python từ 3.4 trở lên hoặc 2.7.9 trở lên thì PyPi được tích hợp sẵn Để cài đặt PyPi trong Raspberry Pi nếu Python 2.x với lệnh sudo apt-get install python-pip và đối với Python 3.x với lệnh sudo apt-get install python3-pip

Cho phép cài đặt, gỡ và nâng cấp thư viện với lệnh pip Với Python 2.x nên sử dụng pip trong khi người dùng Python 3 sử dụng pip3 khi chạy lệnh pip. Để có thể thu âm thanh từ thiết bị microphone thì cần cài đặt thư viện PortAudio Đây là một thư viện đầu vào, đầu ra với mã nguồn mở có sẵn dưới dạng tập nguồn Nó được biên dịch trên nhiều nền tảng như Windows, OS X và Unix PortAudio cung cấp một API đơn giản để ghi và phát âm thanh được sử dụng bởi một số module nhận dạng giọng nói trong đó có Google Speech Recognition Để cài đặt thư viện portaudio cho Python trên Raspberry Pi với lệnh $ pip install pyaudio [19]

Cài đặt thư viện Google Speech Recognition trong môi trường ngôn ngữ lập trình Python trên Raspberry Pi bằng lệnh: $ pip install SpeechRecognition

Bắt đầu với thư viện bằng việc ghi lại giọng nói dưới dạng tập wav

1.3 with sr.Microphone() as source: # mở microphone

1.6 with open("recording.wav", "wb") as f: # khởi tạo tập tên recording.wav 1.7 f.write(audio.get_wav_data()) # lưu vào tập wav

Sử dụng Google Speech Recognition chuyển âm thanh thu được thành chuỗi văn bản tiếng Việt.

1.1 import speech_recognition as sr # khai báo thư viện

1.9 output= r.recognizer_google(audio, language= ‘vi-VN’) # chuyển file audio thành chuỗi văn bản tiếng Việt với cú pháp language= ‘vi-VN’

1.10 print(Output 1) # in chuỗi văn bản được chuyển từ file audio

1.12 print("Google Speech Recognition không thểhiểu audio")

1.14 print("không thể yêu cầu kết quả từ dịch vụ Google Speech Recognition;{0}".format(e)) Ở code 1.11 đến 1.12 để báo lỗi tậpaudio có vấn đề và Google Speech Recognition không

19 thể chuyển thành chuỗi văn bản Ở 1.13 đến 1.14 in ra thông báo lỗi về yêu cầu kết quả từ Google Speech Recognition

Model Vosk khi chạy trên laptop có RAM 16G nhưng tốc độ predict (dự đoán) rất thấp và độ chính xác không cao Hoàn toàn không thích hợpchạy trên máy tính nhúng có khảnăng xử lý giới hạn như Raspberry Pi.

2.2.4 Sử dụng thư viện playsound để phản hồi bằng âm thanh

Phản hồi bằng âm thanh được coi là phần miệngcủa trợ lý ảo Trong đề tài này sử dụng thư viện playsound để phát tậpâm thanh có sẵn Các câu phản hồi của trợ lý ảo trong đề tài này một phần rất nhỏ sẽ là những câu phản hồi đã được thu âm sẵn theo ý người lập trình cấu trúc trước Phần lớn các tậpâm thanh phản hồi còn lại là được tạo ra trong quá trình chạy chương trình Để tạo ra file âm thanh trong quá trình chạy chương trình trong đề tài này sử dụng thư viện gTTS (Google text to speech) Thư viện này chuyển một chuỗi văn bản thành tệp âm thanh mp3 Cài đặt thư viện gTTS trong Python $ pip install gTTS.

2.2 input=”câu cần chuyển thành tệp âm thanh bằng tiếng Việt”

2.3 tep_mp3=gTTS(text=input, lang= ‘vi’,slow= False)

2.4 tep_mp3.save(“E:\\tep.mp3”) Ở code này để chuyển một chuỗi văn bản “câu cần chuyển thành tệpâm thanh bằng tiếng Việt thành một tệp mp3 code 2.1 khai báo thư viện gTTS, code 2.2 thiết lập một chuỗi văn bản bằng tiếng Việt, code 2.3 hàm chuyển văn bản thành tệp âm thanh mp3 ở hàm này để chuyển thành âm thanh tiếng Việt cần thiết lập ngôn ngữ lang= ‘vi’ và code 2.4 lưu tệp mp3 vừa chuyển xong vào đường dẫn “E:\\tem.mp3” và đặt tên tệp là tep.mp3 Để phát tệp âm thanh sử dụng thư viện playsound cần phải cài đặt thư viện trong Python với lệnh $ pip install playsound

3.1 import playsound # thêm thư viện vào chương trình

3.2 playsound.playsound(“E:\\temp.mp3”) Ở đoạn code phát một tệpâm thanh từ đường dẫn “E:\\temp.mp3”.

2.2.5 Khối xử lý đưa ra kết quả phản hồi (Logic engine)

Logic engine đây được coi là bộ não của trợ lý ảo Trong phạm vi đề tài này bộ não trợ lý ảo xử lý một nhiệm vụ duy nhất là dùng thuật toán logic để xác định nội dung yêu cầu của người dùng với độ chính xác tương đối Trong đề tài ngày có sự xây dựng bộ não khác đi khi sử dụng công cụ định dạng dữ liệu Json [20] trong Python để lưu trữ các vùng nhận dạng nội dung yêu cầu theo cấu trúc Cụ thể phương pháp Logic engine này xác định lệnh người dùng thông qua các từ ngữ chính có trong một câu lệnh cụ thể Ví dụ như câu lệnh cụ thể là “tăng nhiệt độ trong xe” thì các từ ngữ chính sẽ là “tăng nhiệt” Đây được coi là một trong những phương pháp đơn giản được sử dụng ở nhữngtrợ lý ảo hay chatbot có đối tượng cụ thể Nếu trong phạm vi hẹp thì số lượng câu lệnh tương đối ít nên việc xây dựng bộ dữ liệu các cụm từ chính câu lệnh cũng không mất nhiều thời gian. Đầu tiên tạo thư viện dành riêng cho việc xác định nội dung yêu cầu từngười dùng chuan_convert.py Thư viện này xác định nội dung yêu cầu của người dùng và sau đó trả về một mã tương ứng với yêu cầu người dùng

Hình 2.10 Lưu đồ giải thuật bộnão logic đểxác định câu lệnh từngười dùng

Chương trình bộ não logic chuan_convert.py

Chương trình chính main_.py

4.15 from chuan_convert import convert # khai báo thư viện trong chương trình chính

Sau khi xác định được chuỗi văn bản từ giọng nói người dùng (self) yêu cầu thì hàm xác định lệnh trong thư viện được gọi và hoạt động theo lưu đồ trên (code 4.16) Ban đầu self được truyền vào hàm tiếp theo chương trình sẽ reset tất cả các biến trước đó (code 4.5, 4.6, 4.7, 4.8), tiếp theo chương trình sẽ kiểm tra lần lượt các danh sách cụm từtrong định dạng dữ liệu được chuẩn bị trước đó Nếu quá trình kiểm tra thấy có sự trong khớp thì chương trình sẽ phản hồi mã(code) tương ứng câu lệnh đó Sau đó chương trình kiểm tra có sốtrong câu nói người hay không Nếu có thì chương trình sẽ phản hồi bao gồm mã và số (code+ number) nếu không thì chương trình chỉ phản hồi code Sau khi bộ não phản hồi thì các mã sẽđược đưa vào các chương trình điều kiện tính toán và đưa ra quyết định Ở code trên, nếu trong câu yêu cầu của người dùng có hai từ“tăng nhiệt’’ thì chương trình sẽ phản hồi với mã là “it” Tiếp theo chương trình hàm process sẽ nhận mã sau đó tính toán và đưa ra phản hồi chính xác

Trong quá trình nghiên cứu nhóm đã phát hiện công cụ SST của google không thể hiểu tiếng lóng người Việt Nam Ví dụ trong câu lệnh ‘mở điều hòa’ thì người miền Nam nói ‘mở điều quà’ thì đây chính là câulệnhtrợ lý ảo nhận được Để khắc phục vấn đề này thì nhóm đã mở rộng vùng nhận dạng câu lệnh trong công cụ JSON Trong thư viện nhận dạng lệnh chuan_convert.py cần thêm các trường hợp tiếng lóng có thể xảy ra.

Cơ sở giao di ện ngườ i dùng s ử d ụng thư việ n Tkinter

Trong đề tài ngoài tương tác qua giọng nói với trợ lý ảo để đề phòng tình huống người dùng không thể ra lệnh bằng giọng nói thì có thể tương tác với màn hình cảm ứng để điều khiển điều hòa Bên cạnh đó giao diện còn hiểnthị thông tin và các nútnhấnđể điều khiển điều hòa Trong đề tài sử dụng màn hình cảm ứng 7inch cảm ứng Khi người dùng tương tác với giao diện thì chương trình giao diện sẽ đi đến tính toán điều kiện để thay đổi biến, tùy vào từng điều kiện đáp ứng để thay đổi hiển thị trên giao diện và đồng thời không có phản hồi âm thanh.

Hình 2.11 Lưu đồ giải thuật kết hợp giao tiếp giọng nói và cảm ứng

Trong ngôn ngữ Python hỗ trợ rất nhiều thư viện để lập trình giao diện người dùng trong đề tài này sử dụng thư viện Tkinter thư viện này được cài đặt trong lúc cài đặt Python

8.5 vva.title("voice virtual assistant- air condition system")

8.6 vva.geometry("800x480") # có thể thay đổi chiều dài rộng

Code 8.4 khởi tạo một cửa sổ vào gán vào biến vva để quản lý Code 8.5 đặt tên cho cửa sổ Code 8.6 quy định kích thước của cửa sổ và để ràng buộc cửa sổ không thể thay đổi thì sử dụng hàm resizable ở code 8.7

Các hàm được sử dụng trong giao diện giao tiếp người dùng này gồm:

Hàm Label và cú pháp sử dụng với biểu tượng là một hình ảnh Trong Tkinter có rất nhiều tiện ích để thể hiện một hình ảnh như Button hoặc Label Ở đề tài này sử dụng Label để thể hiện 1 hình ảnh Đoạn code trên để tạo một label hiển thị một hình ảnh ở đây là biểu tượng của chế độ lấy gió tuần hoàn hệ thống điều hòa ô tô Không đơn giản là chuyển đường dẫn vào một hàm Label để có thể hiển thị một hình ảnh lên giao diện thay vào đó cần phải chuyển đường dẫn vào class PhotoImage để tạo ra đối tượng hình ảnh Tkinter có thể hiểu được [22] [23]

9.1 _giotrong_ =PhotoImage(file='E:\\NCKH\\code_project\\cdtrong.png') 9.2 name_label= tkinter.Button(vaa, image= _giotrong_, bd=4)

Hình 2.12 Hiển thị nút nhấn (button) trên

Hình 2.13 Hiển thị một lable trên Tkinter

Hàm Label và cú pháp sử dụng với biểu tượng là chuỗi Tương tự với Labbelhiển thị hình ảnh nhưng thay tham số image thành text với chuỗi cần hiển thị Bên cạnh đó một số thông số cần điều chỉnh để Label tăng độ thẩm mỹ trong đó màu chữ ‘red’, kiểu chữ ‘Arial’, cỡ chữ 18 và nền chữ màu trắng(white).

10.1 giotrong_ =tkinter.Label(vva, text='label', fg ="red", font

=("Arial",18,'bold'),bd=5,bg='white')

Hàm button sử dụng với chuỗi(text) Ở đoạn code trên để tạo một nút nhấn trên giao diện Một số thông số sử dụng trong hàm nút nhấn này Đầu tiên đặt tên cho nút nhấn được tạo là name_button, đặt tên cho nút nhấn trên giao diện có tên “GIÓ” với màu đỏ ‘red’ với cỡ chữ là 18, kiểu chữ Arial và màu nền của nút nhấn aqua cuối cùng lay_gio là hàm khi nút nhấn được nhấn thì chương trình sẽ chạy hàm đó để thực thi Ở code 9.2 là vị trí đặt nút nhấn trên giao diện.

11.1 name_button= tkinter.Button(vaa,text= “GIÓ”, fg= “red”, font=("Arial”,18, ‘bold’),bg= ‘aqua’, command=lay_gio)

Hình 2.14 Vị trí một đối tượng trong giao diện Tkinter Hàm Button sử dụng với biểu tượng là một hình ảnh Tương tự như hiển thị hình ảnh với hàm Label cần tạo một đối tượng hình ảnh là ac_off với hình ảnh A/C OFF được thiết kế trước đó với định dạng PNG Khi nhất nút thì chương trình sẽ vào hàm AC() để thực thi các lệnh tiếp theo.

12.1 ac_off= PhotoImage(file='E:\\NCKH\\code_project\\ACOFF.PNG')

12.2 ac=tkinter.Button(vva, image_off, command)

Trong các hàm của Tkinter có thể thay đổi các thông số với hàm config() và thay đổi các tham số bên trong hàm config().

13.1 ac_on= PhotoImage(file='E:\\NCKH\\code_project\\ACON.PNG')

13.2 ac.config(image_on) a) Trước khi config biểu tượng b) Sau khi config biểu tượng

Cơ sở giao ti ế p gi ữ a Raspberry Pi v ớ i Arduino và ESP32 v ớ i Arduino

2.4.1 Tự động chạy chương trình khi khởi động Raspberry Pi 3 Model B+ [24]

Hệ thống trợ lý ảo hoạt động khi khóa điện ô tô ở chế độ ON(IG) Để chương trình trợ lý ảo có thể tự động chạy khi mở khóa xe thì có rất nhiều phương pháp trên hệ điều hành Raspbian Phương pháp rc.local đây có thể là cách dễ nhất và đơn giản nhất để có thể chạy chương trình tự động khi khởi động Raspberry Pi nhưng nhược điểm của tác vụ này là hệ thống bắt đầu chạy với RC.Local xảy ra trước khi hệ điều hành Raspbian chạy, nên người dùng không thể tương tác với giao diện người dùng nói cách khác là giao diệnngười dùng không hiển thị trên desktop.

Phương pháp autostart đây là phương pháp tự động chạy chương trình sau khi hệ điều hành được khởi động xong, nên nó cho phép chạy chương trình các yếu tố đồ họa đồng nghĩa người có thể tương tác với giao diện

Phương pháp system, đây là cách mới để chạy tự động với chương trình trên Linux, chắc chắn là phức tạp hơn các phương pháp trước Vì nó chạy trước chương trình đồ họa desktop và vấn đề phức tạp là việc hãy đợi cho đến khi bạn có quyền truy cập và các quy trình khác hoặc chỉ khởi động lại chương trình của bạn nhiều lần cho đến khi nó hoạt động Nên phương pháp systemd là một cách mạnh mẽ để tạo và quản lý các dịch vụ chạy trong nền

Trong đề tài nghiên cứu này sử dụng phương pháp autostart Đây là phương pháp tối ưu nhất vì đề tài liên quan đến đồ họa và tương tác người dùng Trước khi thực hiện phương pháp này cần phải cho chương trình chạy trực tiếp tệp Main.py trong môi trường ngôn ngữ python Để đảm bảo chương trình không phát sinh lỗi thì trước khi chạy tựđộng Khi bắt đầu khởi động hệ thống chạy các file trong /home/pi/.config/lxsession/LXDE-pi/ sau đó chương trình sẽ tự động chạy các file.desktop trong /home/pi/.config/autostart vào trong file.desktop này sẽ chứa lệnh khởi động chương trình trợ lý ảo.

Tạo GUI Controller.desktop trong thư mục /home/pi/.config/autostart/

Sau đó mở file với text editor Sau đó thêm các dòng lệnh như trong hình dưới sau đó lưu lại và đóng cửa sổ đi Trong đó với Exec= python3

/home/pi/Desktop/code_project/main.py là đường dẫn đến main.py ta cần chạy tự động Khi thêm python3 trong đường dẫn để không nhầm lẫn chương trình chạy với phiên bản Python nào khác a) Khở tạo file GUI Controller b) Mở file với Text Editor c) Chương trình chạy tựđộng main.py Hình 2.16 Khởi tạo chương trình khởi động một file Python

2.4.2 Tự động shutdown Raspberry Pi với ngôn ngữ Python Đề tài nghiên cứu vềmột trợ lý ảo ứng dụng trên ô tô, nên yêu cầu đáp ứng về mặt đảm bảo năng lượng dự trữ trong ắc quy Bởi vì nếu để hệ thống trợ lý ảo luôn chạy thì dòng tiêu thu sẽ khá cao là 0.86A do đó nếu để qua đêm thì ắc quy sẽ hết dung lượng và không thể khởi động ô tô Để giải quyết vấn đề này thì hệ thống trợ lý ảo cụ thể là Raspberry

Pi sẽ tự shutdown khi khóa điện chuyển từ ON sang OFF Giải pháp tự động tắt Raspberry

Hình 2.17 Lưu đồ xử lý tín hiệu OFF khóa điện và giao tiếp với Raspberry Pi để tự động tắt hệ thống Main.py

15.2 call(“sudo shutdown -h”, shell =True) Để sử dụng chức năng shutdown bằng ngôn ngữ Python ta khai báo thứ viện subprocess và chạy lệnh call(“sudo shutdown -h”, shell =True)để shutdown tự động.

2.4.3 Phương pháp giao tiếp Raspberry Pi với Arduino Ở đề tài này dù sử dụng Raspberry Pi 3 Model B+ [25] là máy tính nhúng có các chân GPIO để chạy chương trình, nhưng không dùng để điều khiển cơ cấu chấp hành thay vào đó là dùng Arduino để giao tiếp với Raspberry Pi sau đó điều khiển cơ cấu chấp hành Vì mục đích giảm khối lượng xử lý cho Raspberry Pi giúp chương trình trợ lý ảo chạy nhanh hơn, giảm tải dòng điện cho Raspberry Pi và cuối cùng vì mục đích phát triển hoặc mở rộng phạm vi điều khiển hệ thống Để có thể giao tiếp giữa Raspberry Pi và Arduino Mega thì trong đề tài này sử dụng

1 bộ UART trên phần cứng của Raspberry Pi với thư viện pySerial Đây là module cung cấp truy cập cho các cổng nối tiếp Nó cung cấp các phụ trợ cho Python chạy trên Windows, OSX, Linux (có thể cho bất kỳ hệ thống nào tuân thủ POSIX) và IronPython Module Serial này tự động chọn phụ trợ tương thích [26] [27] Trước khi có thể giao tiếp UART giữa Raspberry Pi và Arduino thì cần phải sửa đổi lại cấu hình phần cứng của Raspberry

Pi từ hai chân 14 và 15 trên thanh GPIO của Raspberry Pi Hiện tại sử dụng cho Bluetooth thành sử dụng UART [28]

Arduino Mega có 4 bộ giao tiếp UART gồm: bộ 0 chân 0(TX) và chân 1(RX), bộ 1 chân 19(RX1) và chân 18(TX1), bộ 2 chân 17(RX2) và 16(TX2), bộ 3 chân 15(RX3) và chân 14(TX3) Trong đề tài này để giao tiếp giữa Raspberry Pi và Arduino Mega sử dụng bộ UART 2.

Hình 2.18 Sơ đồ kết nối Arduino Mega với Raspberry Piqua giao thức UART

Sơ đồ kết nối chân 16(TX2) của Arduino Mega với chân GPIO 15(RX) của Raspberry

Pi và chân 17(RX2) của Arduino Mega với chân GPIO 14(TX) của Raspberry Pi Kết nối GND giữa Raspberry Pi và Arduino Mega. Để cài đặt thư viện $ pip install pyserial.

16.2 ser=serial.Serial(‘/dev/ttyAMA0,9600,timeout=1)

17.5 Serial3.println(int(gia tri))

Code 16.1 khai báo thư viện serial trong chương trình Python chính Code 16.2 thiết lập các thông số để có thể giao tiếp với Arduino Trong đó tốc độ giao tiếp 9600 bauds, thời gian chờ thiết lập 1 giây Code 17.2 thiết lập tốc độ giao tiếp trên Arduino Code 17.4 là code đợi cho đến khi bộ nhớ đệm nhận đủ 6 byte từ Raspberry Pi Code 16.3 chương trình chính đợi đến khi bộ nhớ đệm nhận đủ 4 byte từ Arduino Code 17.5 gửi 1 byte giá trị qua đường truyềnUART3 đến Raspberry Pi [29]

2.4.4 Phương pháp giao tiếp giữa Arduino Mega và ESP32

Trong đề tài này sử dụng UART3 của Arduino Mega và chân I/O 21 và 22 của ESP32 PICO D4 để giao tiếp qua giao thức UART

Hình 2.19 Sơ đồ kết nối giữa Arduino Mega với ESP32 PICO D4 qua giao thức

Sơ đồ kết nối chân D14(TX3) Arduino kết nối với chân 22(RX) được thiết lập của ESP32, chân D15 Arduino kết nối với 21(TX) được thiết lập của ESP32

Lập trình thiết lập giao tiếp trên ESP32 với tốc độ giao tiếp 9600 bit/s và chân 21 là

TX và chân 22 là RX

Lập trình thiết lập giao tiếp trên Arduino Mega với tốc độ giao tiếp 9600 bit/s Serial3.begin(9600);

Giao th ức CAN Bus đượ c s ử d ụ ng giao ti ế p thông tin gi ữ a các h ộp điề u

Hệ thống điện thân xe trên xe Vios 2007 sử dụng giao thức CAN Bus để giao tiếp giữa các hộp điều khiển và phục vụ cho công cụ chẩn đoán OBDII (On-board Diagnostics) Trong đó hệ thống Door Lock Control (điều khiển khóa cửa) được điều khiển bởi hộp Main Body Ecu (hộp điều khiển điện thân xe) Theo sơ đồ mạch điện hệ thống điện thân xe thì hộp Main Body Ecu được kết nối với cổng OBDII chân 14 là tín hiệu CAN Bus Low và chân 6 là tín hiệu CAN Bus High Do đó tín hiệu cửa mở và cửa đóng được gửi từ công tắc cửa về hộp Main Body Ecu sau đó thông tin này được gửi lên mạng CAN đến đồng hồ taplo để hiển thị cảnh báo Giao thức được sử dụng trong mạng CAN Bus này là ISO 15765-4 với tốc độ truyền 500kbit/s [30] Với giao thức là 2.0A(standard) với khung CAN gồm ID(Identifier) 11 bit và có 0-8 bytes chưa thông tin [31] [32]

Hình 2.20 Mạng giao tiếp các hộp điều khiển trên xe thông qua giao thức CAN Trong nghiên cứu này sử dụng ESP32 PICO D4 và module TJA1050 đểđọc tín hiệu CAN Bus từ cổng OBDII [33] Sơ đồ kết nối giữa ESP32 với module TJA1050 gồm: chân 5v ESP – VCC(TJA1050), GND(ESP32)- GND(TJA1050), chân d5(ESP32)- TX(TJA1050) và chân 4(ESP32)-RX (TJA1050)

Hình 2.21 Sơ đồ kết nối phần cứng giữa ESP32 với module TJA1050 và cổng

OBDII Khai báo các thư viện cần thiết cho code đọc CAN Bus

Cài đặt tốc độ truyền của hệ thống CAN Bus là 500kbit/s với Toyota Vios 2007 Thiết lập các chân giao tiếp giữa ESP và TJA1050

CAN_cfg.speed = CAN_SPEED_500KBPS;

CAN_cfg.tx_pin_id = GPIO_NUM_5;

CAN_cfg.rx_pin_id = GPIO_NUM_4;

Cơ sở lý thuy ế t v ề điề u khi ể n nhi ệt độ điề u hòa ô tô

2.6.1 Khái niệm vềđiều khiển nhiệt độ theo Technical Explanation for Temperature Controllers [34]

Bộđiều khiển nhiệt độ là một thiết bịđể sử dụng điều khiển máy sưởi hoặc các thiết bị khác bằng cách so sánh tín hiệu cảm biến với điểm đặt và thực hiện các tính toán theo độ lệch giữa các giá trị đó Các thiết bị có thể xử lý các tín hiệu khác với nhiệt độnhư độ ẩm, áp suất và tốc độ dòng chảy được gọi là bộđiều khiển Bộđiều khiển điện tửđược gọi là bộđiều khiển kỹ thuật số

2.6.2 Nhiệt độ thiết bịbay hơi được điều khiển bởi van tiết lưu

Do nhiệt độ bề mặt của thiết bịbay hơi có thể giảm tới 32 o F(0 o C), nên có thể xảy ra sự cốtrong điều kiện độẩm cao trong luồng khí và ngưng tụ trên thiết bịbay hơi và dẫn đến bị đóng băng dàn bay hơi Lớp băng tạo thành một lớp ngăn cản không khí tiếp cận

34 đến thiết bịbay hơi để trao đổi nhiệt Vì vậy một trong những chức năng của van tiết lưu lúc này sẽ phát huy tác dụng là duy trì nhiệt độ thiết bị bay hơi ở khoảng 32 o F(0 o C) để mang lại khảnăng trao đổi nhiệt lớn nhất [35]

Hệ thống ECC (Electronic Climate Control) là hệ thống điều khiển điều hòa hiện đại được trang bị một thiết bị chống đóng băng trên bề mặt thiết bịmay hơi Hệ thống trang bị cảm biến nhiệt độ trên thiết bị bay hơi Khi thiết bị bay hơi giảm dưới ngưỡng 1,5 o C thì cảm biến nhiệt độ trên thiết bịbay hơi sẽ gửi tín hiệu nhiệt độ từđến bộ ECC và từ bộđiều khiển ECC sẽ gửi tín hiệu nhiệt độ đến hợp điều khiển ECM (Engine Control Module) để ngắt máy nén Khi nhiệt độ thiết bị bay hơi tăng lên đạt 1,2 0 C thì máy nén sẽđược đóng trở lại [31]

2.6.3 Vị trí các cảm biến nhiệt độ trong cabin và ngoài xe

Cảm biến nhiệt độ ngoài xe để phát hiện nhiệt độ ngoài xe để điều khiển nhiệt độ trong xe do ảnh hưởng nhiệt độ ngoài xe [36] Vịtrí được lắp trước thiết bịngưng tụ của hệ thống điều hòa

Hình 2.22 Vị trí cảm biến nhiệt độ ngoài xe[35]

Cảm biến nhiệt độ trong xe đểđọc nhiệt độ trong xe phục vụ mục đích điều khiển

Bộ phận cảm biến có một bộ phận quạt nhỏđểhút khí trong xe đi qua cảm biến Mục đích để tránh biến dạng nhiệt độ do tích tụ nhiệt trên cảm biến Sau khi tắt khóa điện thì hệ thống quạt nhỏ này chảy tiếp tục trong vài phút để nhiệt độ cảm biến bằng với nhiệt độ trong xe để tránh tình trạng giá trị cảm biến nhiệt độđọc không chính xác khi khởi động

Hình 2.23 Quạt tích hợp cảm biến nhiệt độ trong xe(cabin)[31]

2.6.4 Vai trò quạt gió trong điều khiển nhiệt độ

Một động cơ quạt nhiều tốc độ trong hệ thống ống dẫn khí điều hòa có vai trò luân chuyển không khí trong cabin hoặc không khí ngoài xe qua biết bịbay hơi ỞToyota đời đầu một cụm công tắc vị trí và cụm điện trở sẽ thay đổi điện áp đặt lên motor quạt từđó thay đổi tốc độ quạt Do điện trở công suất nên sinh ra nhiệt lớn nên vị trí của cụm điện trở được lắp đặt phía sau quạt gió

Hình 2.24 Sơ đồ mạch công tắc và điện trởthay đổi tốc độ quạt[35]

Trên xe Toyota hiện đại sử dụng điện tửđểđiều khiển linh kiện bán dẫn công suất để thay đổi nhiều giá trịđiện áp đặt lên motor quạt gió từđó có thểthay đổi nhiều dãy tốc độ quạt gió [35]

Hình 2.25 Mosfet công suất điều khiển tốc độ quạt trên Camry 2006

Hình 2.26 Vị trí Mosfet công suất điều khiển quạt được đặt phía sau quạt gió

Camry 2006 2.6.5 Cơ chếđiều khiển nhiệt độ theo tài liệu đào tạo Toyota [36]

Theo tài liệu đào tạo của Toyota (TEAM 21 TRAINING) đểnhanh chóng điều chỉnh nhiệt độ trong xe theo nhiệt độđặt trước, ECU điều hòa sẽ tính toán TAO (temperature air output) dựa trên thông tin được truyền từ các cảm biến Việc tính toán TAO dựa trên các giá trị nhiệt độ trong xe, nhiệt độ ngoài xe và cường độ ánh sáng mặt trời liên quan đến nhiệt độđược đặt trước Mặc dù điều hòa tựđộng điều khiển nhiệt độ chủ yếu dựa vào giá trị nhiệt độ trong xe, nhưng cũng sử dụng thông tin về nhiệt độngoài xe và cường độ ánh sáng mặt trời để cho sựđiều khiển trở nên chính xác

Hình 2.27 Công thức tính TAO theo tài liệu đào tạo Toyota[36]

Khi hệ thống tính toán được thông số TAO hệ thống tiến hành điều khiển nhiệt độ dòng không khí ra Đểnhanh chóng đưa nhiệt độtrong xe đạt được nhiệt độđặt trước, nhiệt độ dòng khí được điều khiển bằng cánh trộn gió Cánh trộn sẽ thay đổi tỷ lệ không khí nóng từdàn sưởi và lạnh từdàn bay hơi Tỷ lệđộ mở của cánh trộn gió được tính toán khi cánh trộn khí dịch chuyển 0% về phía COOL và 100% khi về phía HOT Thì nhiệt độ dàn lạnh (thiết bịbay hơi) gần bằng với TAO Khi cánh trộn mở 100% thì nhiệt két nước làm

37 mát sẽ là nhiệt độ dàn sưởi và gần bằng với TAO ECU cho dòng điện đến motor điều khiển % cánh trộn gió dựa vào công thức Độ ở = ��0 − ℎ ệ độ à ạ ℎ

Hình 2.28 Đồ thị biểu diễn % cánh trộn gió theo nhiệt độkhông khí đầu ra[36] 2.6.6 Cơ chếđiều khiển nhiệt độ ON/OFF theo tài liệu Technical Explanation for Temperature Controllers

Như hình 2.29 giá trị cảm biến đọc được dưới điểm đặt thì hệ thống sẽ bật (ON) nguồn cung cấp cho lò sưởi Nếu giá trị cảm biến đọc được là cao hơn điểm đặt thì hệ thống sẽ tắt (OFF) nguồn cung cấp Phương pháp này đầu ra được ON/OFF dựa trên điểm đặt để giữ cho nhiệt độ hệ thống không đổi được gọi là điều khiển ON/OFF [34]

Hình 2.29 Tín hiệu điều khiển và đầu ra hệ thống lò nhiệt được điều khiển bằng phương pháp đóng/ngắt bộsưởi [34]

NGHIÊN CỨ U, THI Ế T K Ế VÀ XÂY D Ự NG H Ệ TH Ố NG

Xây d ự ng tr ợ lý ả o h ệ th ống điề u hòa và giao di ện tương tác ngườ i dùng trên

3.1.1 Xây dựng thuật toán nhận dạng câu lệnh phạm vi hệ thống điều hòa

Chương trình chính chạy hàm def voice() chạy liên tục với nhiệm vụ lắng nghe lệnh từ người dùng Đểđảm bảo tính liên tục lắng nghe của trợ lý ảo hàm voice() được chạy riêng trên một luồng của Raspberry Pi Trong quá trình chạy hàm lắng nghe lệnh để khắc phục việc trợ lý ảo bị nhiễu do các âm thanh tạp âm, các lời nói đối thoại trong cabin hoặc từ âm thanh radio Từđó đưa ra xử lý ngẫu nhiên không chủđích Nên trong đề tài này sử dụng phương pháp nhận lệnh hai lớp cho trợ lý ảo Lớp đầu tiên người dùng cần ra lệnh có cụm từ “trợlý” để kích hoạt lớp lắng nghe thứ hai của trợ lý ảo Ở lớp thứ hai được mở trong vòng 3 giây để người dùng bắt đầu ra lệnh chủ đích lúc này trợ lý ảo sẽ nghe tiến hành chuyển lời nói đó đó đến thư viện chuan_convert.py đểxác định lệnh chính xác của người dùng yêu cầu và phản hồi vềmã tương ứng với lệnh Sau đó chương trình chính bắt đầu tiến trình xem xét và đưa ra quyết định ở hàm def process(code) và sau đó kết thúc một vòng lặp lắng nghe

Hình 3.1 Lưu đồ giải thuật nhận lệnh hai lớp của trợ lý ảo

Theo tài liệu tham khảo chỉ sử dụng phương pháp if elif liên tục để xác định lệnh và sau khi xác định thì phản hồi lập tức bằng âm thanh Phương pháp này thích hợp cho các phạm vị nhận dạng hẹp đểđạt được tốc độ đáp ứng nhanh Còn trong đề tài này kết hợp công cụ JSON với vòng lặp for đểxác định lệnh và sau đó tương ứng từng lệnh đã khớp sẽ có một mã nhất định Từ mã này sẽđược trợ lý ảo dùng để tính toán điều kiện để quyết định thực thi các yêu cầu từngười dùng Hiệu quả của phương pháp này được phát huy bởi hệ thống điều hòa có khá nhiều các câu lệnh và vấn đề về nhận dạng tiếng vùng miền khác nhau từ Google nên phạm vị nhận dạng sẽ rộng

Trong đề tài này phạm vi có 21 lệnh gồm cơ bản và phát triển Mục tiêu nghiên cứu các lệnh là không ảnh hưởng đến hệ thống nguyên bản Các lệnh phát triển được nghiên cứu trên cơ sở chủ quan nhóm nghiên cứu: như lưu vị trí điều hòa, ghi nhớ vị trí điều hòa…Các mã tương ứng lệnh được quy định theo nhóm lập trình và nó không ảnh hưởng đến quá trình xử lý

Stt Câu lệnh Mã phản hồi

1 Tăng nhiệt độ it Yêu cầu tăng/ giảm không có số nhiệt độ kèm theo thì mặc định tăng/ giảm 2 độ

3 Tắt điều hòa oft Tắt điều chỉnh nhiệt độ trong xe

4 Mởđiều hòa ont Mởđiều chỉnh nhiệt độ trong xe mặc định đưa nhiệt độđến 25 o C

5 Yêu cầu nhiệt độ z(độ C) dtx Yêu cầu một mực nhiệt độ chỉđịnh

6 Giảm nhiệt độ mức cốđịnh it1 Giảm mức cốđịnh là 2 o C

7 Tăng nhiệt độ mức cốđịnh dt1 Tăng mức cốđịnh là 2 o C

8 Hướng gió xuống chân và vào mặt c1

9 Hướng gió xuống chân và sưởi kính chắn gió trước c2

12 Hướng gió sưởi kính chắn gió c5

13 Tăng gió iw Yêu cầu tăng/giảm không có số cấp kèm theo thì mặc định tăng/ giảm 2 cấp độ

15 Tăng gió mức cốđịnh iwx Tăng mức cốđịnh là 2 cấp

16 Giảm gió mức cốđịnh dwx Giảm mức cốđịnh là 2 cấp

19 Yêu cầu mức quạt chỉđịnh dwxx

20 Lưu lại vịtrí điều hòa hiện tại wr

21 Mở vịtrí điều hòa đã lưu rr

Bảng 3.1 Câu lệnh và mã tương ứng lệnh của hệ thống điều hòa 3.1.2 Xây dựng thuật toán điều hòa đểđưa ra quyết định phản hồi và điều khiển 3.1.2.1 Chương trình xử lý chức năng tắt và mở quạt gió

Trong đề tài với chức năng tắt quạt gió thì tắt cả hệ thống điều hòa nếu đang hoạt động Khi yêu cầu mở quạt thì trợ lý sẽ mặc định mở quạt ở mức độ 2

Hình 3.2 Lưu đồ giải thuật xử lý mở quạt gió

Khi mã onw (mở quạt) được phản hồi thì chương trình sẽ kiểm tra điều hòa đang mở

Nếu đúng điều hòa đang mởthì đồng nghĩa quạt cũng đang hoạt động hệ thống sẽ phản hồi

“điều hòa và quạt đang hoạt động” và kết thúc luồng Nếu điều hòa đang tắt thì chương trình kiểm tra trạng thái quạt gió đang hoạt động Nêu đúng trạng thái quạt gió đang hoạt động thì chương trình sẽ phản hồi quạt đã hoạt động, nếu không quạt sẽ đặt ở mức 2 và phản hồi Cuối cùng kết thúc luồng xử lý

Hình 3.3 Lưu đồ giải thuật xử lý tắt quạt gió Khi mã ofw (tắt quạt) được phản hồi, đầu tiên chương trình sẽ kiểm tra điều hòa đang hoạt động, nếu đúng chương trình sẽ tắt điều hòa và đặt quạt về 0 cuối cùng là phản hồi đáp ứng Nếu điều hòa không hoạt động thì chương trình sẽ kiểm tra tiếp quạt đang hoạt động, nếu quạt đang hoạt động thì đặt quạt về 0 và phản hồi đáp ứng Nếu quạt không hoạt động thì phản hồi “quạt đang tắt” Cuối cùng là kết thúc luồng xử lý

3.1.2.2 Chương trình xử lý chức năng thay đổi tốc độ quạt gió

Khi được yêu cầu thay đổi tốc độ quạt gió thì trợ lý ảo sẽ tắt chếđộđiều khiển nhiệt độ Bởi vì thuật toán điều khiển nhiệt độ một phần dùng tốc độ quạt đểđiều khiển Đây cũng là cách chếđộ auto trên hệ thống điều hòa hiện đại sử dụng trên xe Mazda CX5 2018 Ở chức năng thay đổi tốc độ quạt có rất nhiều trường hợp Trong đề tài này nghiên cứu hai trường hợp Trường hợp đầu tiên là người dùng yêu cầu một mức quạt gió cụ thể vd: yêu cầu tốc độ quạt gió là 7, giảm tốc độ quạt về2 Trường hợp thứhai người dùng yêu cầu thay đổi một cách tương đối vd: tăng nhiệt độ, giảm nhiệt độ, quạt quá yếu, quạt to quá…Với trường hợp thứ hai này trợ lý ảo sẽ chủ động tăng/giảm 2 mức độ Việc tăng/ giảm 2 mức này do chủquan hoàn toàn người lập trình, nên hoàn toàn có thểthay đổi theo

42 ý người dùng Trong đề tài sử dụng Mosfet công suất đểđiều khiển tốc độ quạt gió Mức độ quạt được chia làm 10 mức độ từ0 đến 10 Ở mức 0 quạt sẽ tắt Việc tăng/giảm mức độ quạt hoàn toàn có thể yêu cầu trong lúc quạt đã tắt

Hình 3.4 Lưu đồ giải thuật xử lý yêu cầu tăng mức độ quạt gió

Trong đềtài quy định 2 bộ mã cho lệnh tăng quạt gió và được mô hình hóa theo lưu đồ hình 3.4 Mã đầu tiện là iwx với mã này được phản hồi khi người dùng yêu cầu các câu lệnh tăng tốc độ quạt tương đối như sau: quạt gió quá yêu, gió quá nhẹ… Khi mã được phản hồi trợ lý ảo đầu tiên sẽ kiểm tra điều hòa có đang được mở, nếu đúng thì tiến hành tắt điều hòa (tắt điều hòa bằng cách gọi hàm restart_tem()), nếu sai thì kiểm tra điều kiện mức quạt hiện tại(wind_c) nhỏhơn 9 Nếu đúng mức quạt hiện tại nhỏhơn 9 thì hệ thống sẽtăng tốc độ quạt lên 2 mức độ và phản hồi âm thanh, nếu sai thì hệ thống kiểm tra mức quạt hiện tại bằng 9 Nếu đúng mức quạt hiện tại bằng 9 thì hệ thống sẽtăng tốc độ quạt lên tối đa là 10 và phản hồi “sẽ tăng quạt lên tối đa”, nếu sai hệ thống kiểm tra mức quạt hiện tại bằng 10 Nếu đúng mức quạt hiện tại bằng 10 sẽ phản hồi lập tức “quạt đã tối đa và không thể tăng lên được nữa”, nếu sai hệ thống sẽ báo lỗi điều kiện mã iwx Đối với bộ mã iw được phản hồi khi người dùng yêu cầu tăng quạt ở set_point_w (mức quạt chỉđịnh cụ thể) hoặc không chỉđịnh Đầu tiên khi nhận mã này thì trợ lý ảo sẽ

43 kiểm tra người dùng có chỉđịnh mức quạt cụ thể, nếu không thì trợ lý sẽ xửlý như bộ mã iwx trên và nếu có chỉđịnh mức quạt cụ thể thì trợ lý sẽ xét tiếp điều kiện set_point_w lớn hơn wind_c và nhỏ hơn 11 Nếu đúng là set_point_w lớn hơn wind_c và nhỏ hơn 11 thì kiểm tra tiếp điều hòa đang mở, nếu đúng điều hòa đang mở tiến hành tắt điều hòa bằng cách gọi hàm restart_tem() và nếu sai thì bỏqua bước tắt điều hòa tiến hành đặt giá trị mới cho mức độ quạt gió bằng với set_point_w và phản hồi người dùng Nếu set_point_w không lớn hơn wind_c và không nhỏhơn 11 thì kiểm tra set_point_w ngoài phạm vi điều chỉnh, nếu đúng thì phản hồi “yêu cầu ngoài phạm vi từ1 đến 10”, nếu sai kiểm tra set_point_w nhỏ hơn wind_c Nếu đúng set_point_w nhỏ hơn wind_c phản hồi “mức quạt hiện tại đã cao hơn yêu cầu”, nếu sai kiểm tra tiếp wind_c bằng với set_point_w Nếu đúng wind_c bằng với set_point_w thì phản hồi “mức quạt hiện tại đang là mức yêu cầu”, nếu sai phản hồi báo lỗi tại iw

Hình 3.5 Lưu đồ giải thuật xử lý yêu cầu giảm mức độ quạt gió

Trong đềtài quy định 2 bộ mã cho lệnh giảm quạt gió và được mô hình hóa theo lưu đồ hình 3.5 Mã đầu tiện là dwx với mã này được phản hồi khi người dùng yêu cầu các câu lệnh giảm tốc độ quạt tương đối như sau: quạt gió quá mạnh, gió quá to, gió quá lớn… Khi mã được phản hồi trợ lý ảo đầu tiên sẽ kiểm tra điều hòa có đang được mở, nếu đúng thì tiến hành tắt điều hòa (tắt điều hòa bằng cách gọi hàm restart_tem()), nếu sai thì kiểm tra wind_c lớn hơn 2 Nếu đúng mức quạt hiện tại lớn hơn 2 thì hệ thống sẽ giảm tốc độ quạt xuống 2 mức độ và phản hồi âm thanh, nếu sai thì hệ thống kiểm tra mức quạt hiện tại bằng 2 Nếu đúng mức quạt hiện tại bằng 2 thì hệ thống sẽ giảm tốc độ quạt xuống tối thiểu là 1 và phản hồi “sẽ giảm quạt lên tối thiểu”, nếu sai hệ thống kiểm tra wind_c bằng

1 Nếu đúng wind_c bằng 1 sẽ phản hồi lập tức “quạt đã tối thiểu và không thể giảm lên được nữa”, nếu sai hệ thống sẽ báo lỗi điều kiện mã dwx Đối với bộ mã iw được phản hồi khi người dùng yêu cầu giảm quạt ở set_point_w (mức quạt chỉđịnh cụ thể) hoặc không chỉđịnh Đầu tiên khi nhận mã này thì trợ lý ảo sẽ kiểm tra người dùng có chỉđịnh mức quạt cụ thể, nếu không thì trợ lý sẽ xửlý như bộ mã dwx trên và nếu có chỉđịnh mức quạt cụ thể thì trợ lý sẽ xét tiếp điều kiện set_point_w lớn hơn 0 và nhỏhơn wind_c Nếu đúng là set_point_w lớn hơn 0 và nhỏhơn wind_c thì kiểm tra tiếp điều hòa đang mở, nếu đúng điều hòa đang mở tiến hành tắt điều hòa bằng cách gọi hàm restart_tem() và nếu sai thì bỏqua bước tắt điều hòa tiến hành đặt giá trị mới cho mức độ quạt gió bằng với set_point_w và phản hồi người dùng Nếu set_point_w không nhỏ lớn hơn wind_c và không lớn hơn 0 thì kiểm tra set_point_w ngoài phạm vi điều chỉnh, nếu đúng thì phản hồi “yêu cầu ngoài phạm vi từ1 đến 10”, nếu sai kiểm tra set_point_w lớn hơn wind_c Nếu đúng set_point_w lớn hơn wind_c phản hồi “mức quạt hiện tại đã cao hơn yêu cầu”, nếu sai kiểm tra tiếp wind_c bằng với set_point_w Nếu đúng wind_c bằng với set_point_w thì phản hồi “mức quạt hiện tại đang là mức yêu cầu”, nếu sai phản hồi báo lỗi tại dw

Hình 3.6 Lưu đồ giải thuật xử lý yêu cầu mức quạt chỉđịnh cụ thể Trong một sốtrường hợp người dùng chỉ yêu cầu mức độ quạt chỉđịnh(set_point_w), không yêu cầu tăng hoặc giảm trong câu lệnh thì chương trình phản hồi bộ mã dwxx Lúc này chương trình xét set_point_w có trong phạm vi điều chỉnh, nếu không sẽ phản hồi

“ngoài phạm vi điều chỉnh” nếu có chương trình sẽxét điều hòa có đang hoạt động nếu có sẽ tắt điều hòa và đặt lại giá trị mức quạt gió theo set_point_w Sau đó kết thúc luồng 3.1.2.3 Chương trình xử lý tắt và mởđiều hòa Ở yêu cầu mởđiều hòa thì cần một tín hiệu đầu vào đó chính là trạng thái động cơ đã được hoạt động Khi chỉ dừng lại ở yêu cầu mởđiều hòa thì mặc định hệ thống sẽđặt nhiệt độlà 25 độ Tùy vào người dùng có thểđặt nhiệt độ mặc định tùy chỉnh

Ứ ng d ụ ng tín hi ệu CAN Bus vào tính năng thông minh hệ th ố ng nh ằ m ti ế t

3.2.1 Kết quả thu thập data CAN và dựđoán tín hiệu trạng thái cửa xe

Trong đề tài chỉ đọc ID(Identifier) và Data (8 byte) của các gói tin Phương pháp được sử dụng là đọc tất cả các ID theo đó là Data của tất cả các trạng thái cửa và sau đó đưa ra dựđoán ID của trạng thái đóng/ mở cửa và đưa ra kết luận về các byte Data thể hiện trạng thái cửa Điều kiện khi thu thập công tắc máy để ở vị trí ON và không khởi động động cơ Kết quả cho thấy có 23 gói tin với ID khác nhau được đọc

STT ID (hex) DATA (hex)

Bảng 3.2 Kết quả thu thập tất cả các gói tín hiệu trên mạng CAN bus

Trong quá trình thu thập và đọc phát hiện ở ID 620 có sựthay đổi data ở byte[5] Qua kết quả có thểđánh giá chi tiết trạng thái tất cả các cửa đều đóng thì thu được giá trị data(5) là 40(hex) còn tất cả các trạng thái cửa mởđều cho một data khác nhau gồm: 4C(hex), 5C(hex) 6C(hex), 7C(hex), 50(hex), 60(hex), 70(hex)

STT Các trường hợp mở và đóng cửa ID DATA

1 tất cả cửa đều đóng

2 cửa trước bên trái mở 10 0 0 0 30 60 0 50

3 cửa sau bên trái mở 10 0 0 0 30 4C 0 50

5 cửa trước bên phải mở 10 0 0 0 30 50 0 50

6 cửa sau bên phải mở 10 0 0 0 30 4C 0 50

10 cửa trước phải và sau trái mở 10 0 0 0 30 5C 0 50

11 cửa trước trái và sau phải mở 10 0 0 0 30 6C 0 50

12 2 cửa trước và cửa sau phải mở 10 0 0 0 30 7C 0 50

13 2 cửa trước và cửa sau trái mở 10 0 0 0 30 7C 0 50

14 2 cửa sau và cửa trước trái mở 10 0 0 0 30 6C 0 50

15 2 cửa sau và cửa trước trái mở 10 0 0 0 30 5C 0 50

16 tất cả cửa đều mở 10 0 0 0 30 7C 0 50

Bảng 3.3 Kết quả thu thập data trạng thái cửa xe với ID 620

3.2.2 Xây dựng chương trình xử lý tín hiệu CAN và trợ lý ảo để cảnh báo nhằm tiết kiệm nhiên liệu thụđộng trong sử dụng điều hòa

3.2.2.1 Xây dựng chương trình truyền nhận trạng thái cửa xe từESP32 đến

Hình 3.21 Lưu đồ giải thuật xử lý đọc tín hiệu CAN và giao tiếp với Arduino

ESP32 được cấp nguồn cùng lúc với Raspberry Pi Sau khi được khởi động, ESP32 sẽ tiến hành đọc tín hiệu CAN bus nếu có Sau khi đọc và kiểm tra từng ID, cho đến khi đúng ID của cửa xe là 620 thì tiến hành đọc byte 5 sau đó kiểm tra giá trị byte vừa đọc nếu là 40 thì đặt biến giá trị door là 1(tất cả cửa đều đóng) và nếu khác 40 thì đặc biến door là 0(trường hợp bất kỳ cửa nào mở) Sau đó chương trình sẽ kiểm tra tiếp có yêu cầu từ Arduino, nếu có yêu cầu thì ESP sẽ gửi giá trị biến door đến Arduino qua giao thức UART, nếu không có yêu cầu từArduino thì chương trình sẽ quay trở lại vòng lặp để tiếp tục đọc

3.2.2.2 Xây dựng chương trình cảnh báo thụđộng cửa mởkhi điều hòa đang hoạt động của trợ lý ảo

Hình 3.22 Lưu đồ giải thuật xử lý cánh mở cửa trong khi điều hòa hoạt động

Chương trình cảnh báo mở cửa trong khí điều hòa đang hoạt động được thể hiện trong lưu đồ hình 3.22 Đầu tiên chương trình sẽ bắt đầu làm việc khi nhận đủ cảhai điều kiện là bất kỳ cửa mở và điều hòa đang hoạt động nếu thiếu một trong hai điều kiện chương trình sẽ không bắt đầu chức năng cảnh báo Nếu đủđiều kiện chương trình sẽ kiểm tra cờ (cờ bằng 1 thì trợ lý ảo trong quá trình tính thời gian cửa mở, cờ bằng 0 thì quá trình tính thời gian chưa xảy ra) Trường hợp kiểm tra cờ bằng 0 thì đặt cờ lên 1 và bắt đầu tính thời gian mở cửa sau đó quay về kiểm tra trạng thái cửa và điều hòa và nếu cờ bằng 1 thì chương trình sẽ tính thời gian mở cửa quá 5 giây chương trình sẽ cảnh báo thụđộng bằng âm thanh và đặt lại cờ bằng 0(để quá trình tính thời gian lại từđầu), nếu thời gian chưa đủ 5 giây chương trình sẽ tiếp tục tính thời gian Trong trường hợp điều hòa tắt hoặc cửa đóng trong lúc tính thời gian thì chương trình sẽ reset lại cờ bằng 0

Thời gian 5 giây được ước lượng theo sự chủ quan của người lập trình, thời gian này hoàn toàn có thểthay đổi Việc lựa chọn phương án cảnh báo thụđộng là do chủ quan của người lập trình thay vào đó có thể hoàn toàn thay đổi cơ chế thành chủ động tắt điều hòa khi người dùng có nhu cầu Mục đích của sự cảnh báo thụđộng là để tránh các tình huống bất tiện khi người rời xe trong thời gian ngắn không phải mở lại điều hòa.

Nghiên c ứ u và thi ế t k ế m ạch điện, cơ cấ u ch ấ p hành trên h ệ th ố ng tr ợ lý ả o 66 1 Nghiên c ứ u và thi ế t k ế m ạch điệ n cho các ch ức năng hệ th ố ng

3.3.1.1 Thiết kếsơ đồ mạch điện cung cấp nguồn hệ thống

Hình 3.23 Sơ đồ mạch điện cung cấp nguồn điện cho hệ thống

Nguồn thường trực từdương ắc quy được cung cấp đến 2 đường Một là qua cầu chì FU5(5A) đến giảm áp XL4015 Sau khi qua giảm áp sẽ cho đầu ra là 5,2V để cấp nguồn cho ESP và Raspberry Pi Hai là từ dương ắc quy qua cầu chì FU4(2A) đến giảm áp LM2598 để cho đầu ra 7,5V được cung cấp cho mạch cầu H, mạch giảm áp 5.2V USB cung cấp cho loa, nguồn vào Arduino và IC LM7805 cho đầu ra 5,2V cung cấp cho các relay Trong đó 5V từArduino được cung cấp đến nguồn cho các cảm biến nhiệt độ

Dòng tải tối đa của Raspberry Pi là 2,5A nên việc lựa chọn giảm áp XL4015 có dòng 5A là phù hợp khi sử dụng cả ESP song song với Raspberry Pi

3.3.1.2 Nghiên cứu, thiết kế mạch điện và phương thức điều khiển quạt gió

Với mạch điện nguyên bản tốc độ quạt gió được điều khiển qua điện trở (BLOWER RESISTOR-E3) Trong đề tài sử dụng MOSFET LOWER công suất điều khiển tốc độ quạt gió trên xe Camry 2006 đểđiều khiển quạt Cơ sở dựa trên sơ đồ mạch điện của xe Camry

2006 (phụ lục 5) cho thấy dòng điện tối đa MOSFET là 40A Trong khi đó trên hệ thống nguyên bản trên xe Toyota Vios 2007 thì cầu chì HTR chỉ 40A Vậy từ kết luận có thể cho thấy MOSFET công suất của xe Camry 2006 hoàn toàn có thể sử dụng điều khiển quạt trên xe Vios

Nhưng trong quá trình nghiên cứu cho thấy không thể tháo giắc E3 ra khỏi điện trở Đểtránh hư hỏng các bộ phận trên xe đềtài đã để lại điện trở quạt (BLOWER RESISTOR) ở mức điện trở cao nhất tương ứng với mức quạt low ở nguyên bản có dòng 2.45A Vậy có thể kết luận một vấn đềkhi HTR RELAY được đóng thì sẽcó dòng điện tối thiểu là 2.45A qua quạt gió

Module MOSFET BLOWER điều khiển quạt xe Camry 2006 có 4 chân trong đó: +B là chân cấp nguồn từắc quy, chân GND chân nối với âm ắc quy, chân VM là chân nối với cực âm của motor, chân Si là chân điều khiển module Nguyên lý hoạt động module như sau: khi có tín hiệu PWM(M2) khi mức thấp (0) ở chân Si thì module sẽđiều khiển chân

VM xuống MASS (âm ắc quy) lúc này sẽ xuất hiện dòng điện từdương ắc quy qua motor đến chân VM về MASS lúc này kín mạch và MOTOR hoặc động PWM ở mức cao thì module sẽ ngưng dẫn và MOTOR không hoạt động Theo kết quả đo xung thực nghiệm trên mô hình thì cho thấy trên xe Camry 2006 có 5 mức độ gió từ1 đến 5 tương ứng với duty cycle vào chân Si từ 60% về 0% với tần số 5kHz thể hiện trong đồ thị hình 3.25 Ở trạng thái tắt quạt (mức 0) chân Si được kéo lên mức cao bởi chính MOSFET

Hình 3.24 Sơ đồ mạch nguyên lý hoạt động MOSFET BLOWER

Hình 3.25 Đồ thị thể hiện %(duty cycle) theo cấp quạt gió xe Camry 2006

Hình 3.26 Sơ đồ mạch điện điều khiển quạt gió

Giải thích nguyên lý hoạt động của quạt gió có 2 chếđộ hoạt động trong đề tài này: một là chạy với tốc độ tối thiểu thì chỉ cần đóng HTR RELAY và chếđộ 2 là chếđộ thay đổi tốc độ quạt thì cần đóng HTR RELAY và điều khiển module MOSFET BLOWER Để hoạt động chếđộ một: tốc độ quạt tối thiểu thì điều kiện cần và đủlà đóng HTR RELAY lúc này quạt gió sẽ chạy với tốc độ thấp nhất với dòng thuần là 2,45A (được đo thực nghiệm) Đểđóng HTR RELAY cần bật khóa điện ON lúc này có dòng điện dương chờ tại cuộn dây của HTR RELAY, khi có tín hiệu mức cao từ chân I/O(INPUT/OUTPUT)

50 của Arduino thì transistor Q2 dẫn làm cho BLOWER RELAY đóng tiếp điểm dẫn cuộn dây HTR RELAY xuống MASS lúc này đó HTR RELAY đóng tiếp điểm lúc này có dòng điện từắc quy qua cầu chì HTR(40A) qua tiếp điểm relay HTR RELAY qua MOTOR E4 sau đó qua điện trở E3 về MASS quạt sẽ quay tốc độ chậm nhất Để hoạt động chế độ hai: điều khiển tăng tốc độ quạt gió lên trên mức tối thiểu thì cần điều khiển MOSFET BLOWER(M1) Lúc này chân Si luôn được kéo lên mức cao 4.5V do điện trở bên trong nên MOSFET không dẫn Nên đểđiều khiển quạt thì cần cung cấp PWM đến chân Si thông qua transistor Q1 để thay đổi điện áp trung bình đặt lên MOTOR quạt từđó thay đổi tốc độ quạt Trong đó Q1 được điều khiển bởi chân PWM 46 trên Arduino Mặc định các chân PWM của Arduino có tần số PWM mặc định là 490Hz riêng 2 chân 4 và 13 là 980Hz Nên để có thểthay đổi tần số PWM chân 46 cho phù hợp với thực tế thì cần đến thư viện [37] đểthay đổi tần số chân 490Hz lên 5kHz

Dựa vào thông số PWM ở5kHz thu được từ thực tế (đồ thị hình 3.25) Trên cơ sởđó trong đề tài này sẽ bắt đầu tăng tốc độ gió ởchân điều khiển 46 là 30% duty cycle Qua kết quảđo dòng điện từ thực tế cho thấy với 30% duty cycle tốc độ quạt tăng lên và dòng điện tổng cũng tăng từ 2,45A lên 3A Để mở rộng dãy tốc độ quạt đề tài chia nhỏ các cấp độ quạt từ2 đến 10 cấp độ duty cycle tương ứng tuyến tính từ 30% về 100% theo đồ thị hình 3.27 Trong đó với mức độ quạt 1 thì quạt chạy với tốc độ tối thiểu thông qua điện trở quạt và không điều khiển Mosfet hoạt động

Hình 3.27 Đồ thị biểu diễn mối quan hệ % (duty cycle) chân 46 và Si phụ theo mức quạt gió

Kết luận: đểđiều khiển tốc độ chậm tối đa thì chỉ cần điều khiển mở transistor Q2 bằng chân 50 đểđóng BLOWER RELAY và nếu muốn thay đổi tốc độ quạt thì điều khiển mở Q2 kết hợp điều khiển PWM Q1(chân 46)

3.3.1.3 Nghiên cứu, thiết kế mạch điện và phương thức điều khiển relay cấp nguồn Raspberry Pi và ESP

Hình 3.28 Sơ đồ mạch điện cấp nguồn Raspberry Pi và ESP32

Raspberry Pi và ESP32 được sử dụng chung một nguồn điện 5.2V giảm áp từ XL4015E tối đa 5A Đểđảm bảo không có điện áp ký sinh trong lúc ngắt nguồn làm ảnh hưởng đến việc khởi động Raspberry Pi thì trong đề tài này sử dụng 2 relay để cấp nguồn cho Raspberry Pi và ESP32 1 relay cấp nguồn GND 1 relay cấp nguồn 5.2V Hệ thống các relay trên module sử dụng 5V từ giảm áp LM7805 thường trực Các thông số linh kiện chọn phù hợp với các tải điện Để điều khiển cấp nguồn cho Raspberry Pi và ESP thì cần tín hiệu đầu vào là chân

20 được kéo trở lên mức 1 và sau khi đóng công tắc máy thì transistor Q5 dẫn làm chân 20 về mức 0 lúc này Arduino sẽđiều khiển lần lượt các relay thông qua việc transistor Q3 và Q4 Khi chân 51 và 52 của Arduino cho tín hiệu mức cao thì transistor Q3 và Q4 mở hoàn toàn làm cho cuộn dây các relay thông với MASS làm đóng các tiếp điểm relay lúc này Raspberry Pi và ESP được cấp nguồn

Kết luận: để cấp nguồn cho Raspberry Pi và ESP thì cần tín hiệu đầu vào chân 20 sau đó Arduino sẽ điều khiển chân 51 và 52 mức cao và ngược lại muốn ngắt nguồn Raspberry Pi và ESP thì cũng dựa vào tín hiệu chân 20 để điều khiển chân 51 và 52 mức thấp

3.3.1.4 Nghiên cứu, thiết kế mạch điện và phương thức điều khiển motor kéo dây cáp thay đổi hướng gió vào cabin và thay đổi cánh lấy gió

Hình 3.29 Sơ đồ mạch điện điều khiển 2 motor encoder Các cơ cấu thay đổi cánh lấy gió, thay đổi chếđộhướng gió và thay đổi cánh trộn khí trên xe nguyên bản đều sử dụng cụm cơ cấu núm xoay để kéo các dây cáp từđó các dây cáp tác động đến các cánh Trong đề tài này không sử dụng cụm cơ cấu xoay thay đổi cánh trộn khí Đểtác động đến núm xoay đểkéo dây cáp trong đề tài này sử dụng động cơ GA25 encoder tích hợp encoder 5600 bước /vòng đầu ra, có tốc độ cao nhất là với 7 vòng/phút, đổi lại có moment kéo rất lớn và dòng điện thuần rất nhỏ

Xây d ựng chương trình Arduino điề u khi ể n h ệ th ống cơ cấ u ch ấ p hành

3.4.1 Vai trò, chức năng và nhiệm vụ các thành phần đầu vào và đầu ra Arduino phục vụđiều khiển cơ cấu chấp hành

Với từng tín hiệu đầu vào sẽđóng vai trò quyết định các đầu ra nhất định Bảng 3.8 dưới đây sẽ cho thấy các tín hiệu đầu vào có vai trò và quyết định đến các tín hiệu đầu ra Gói tin gửi từRaspberry Pi đến Arduino gồm 5 data (dữ liệu) được thể hiện bảng 3.7

Data Biến cập nhật Arduino Mô tả yêu cầu data Dãy giá trị Vị trí mặc định

[0] wind_value Yêu cầu mức độ quạt gió 0 đến 10 0

[1] temperature_vaulue Yêu cầu nhiệt độ 22 đến 35 _

[2] mode_value Yêu cầu vị trí chế độ hướng gió 0 đến 5 0

[3] wind_in Yêu cầu vị trí gió trong và ngoài 0 và 1 0

[4] allow_flag Cho phép điều khiển nhiệt độ hoặc quạt gió 0 và 1 0

Bảng 3.7 Các biến cập nhật các data gửi từ Raspberry Pi

STT Tín hiệu đầu vào Chức năng Đóng vai trò quyết định đầu ra cơ cấu chấp hành

1 Công tắc máy Xác định trạng thái ON/OFF 1 Relay cấp nguồn cho

2 Trạng thái động cơ Xác định động cơ đã hoạt động Điều kiện cần cho điều khiển giảm nhiệt độ:

3 temperature_value Gửi yêu cầu nhiệt độ mong muốn đến Arduino

4 Cảm biến nhiệt độ cabin Xác định nhiệt độ trong xe

5 Cảm biến nhiệt độ ngoài xe Xác định nhiệt độ ngoài xe

Gửi tín hiệu cho phép điều khiển nhiệt độđến Arduino

* allow_flag: cho phép điều khiển nhiệt độ hoặc quạt gió 4 Quạt gió (tốc độ quạt gió- khi không điều khiển nhiệt độ)

7 wind_value Gửi yêu cầu mức độ quạt gió đến Arduino

8 mode_value Gửi yêu cầu vịtrí hướng gió đến

Arduino 5 Motor điều khiển cơ cấu kéo cáp thay đổi hướng gió

9 Encoder motor điều khiển cáp thay đổi hướng gió

Vị trí của motor điều khiển cáp thay đổi hướng gió

10 wind_in Yêu cầu vị trí cánh lấy gió tuần hoàn hoặc ngoài xe 6 Motor điều khiển cơ cấu kép cáp thay đổi cánh lấy gió

11 Encoder motor điều khiển cáp thay đổi cánh lấy gió

Vị trí của motor điều khiển cáp thay đổi cánh lấy gió

12 Tín hiệu cửa Xác định trạng thái cửa xe mở Arduino gửi đến

Bảng 3.8 Mối quan hệ giữa các tín hiệu đầu vào quyết định đầu ra của Arduino Theo bảng 3.8 gồm có 12 tín hiệu đầu vào bao gồm cả gói tin từ Raspberry Pi gồm 5 byte data và 6 tín hiệu đầu ra tương ứng với 6 cơ cấu chấp hành:1- relay cấp nguồn Raspberry Pi,2 - relay HTR (đóng relay HTR quạt), 3 - relay A/C, 4- Transistor motor quạt gió, 5- motor cơ cấu kéo cáp điều khiển hướng gió và 6-motor cơ cấu kéo cáp điều khiển cánh lấy gió Trong đó tín hiệu cửa không quyết định bất cứđầu ra nào của hệ thống mà chỉđóng vai trò xác định trạng thái của và được truyền đến Raspberry Pi để thực hiện chức năng cảnh báo Riêng cơ cấu chấp hành 3(relay A/C) được trình mục 3.5

81 3.4.2 Chương trình xử lý chính trên Arduino

Hình 3.39 Lưu đồ giải thuật chương trình xử lý chính trên Arduino

Chương trình chính được chạy trong vòng lặp loop Chương trình xử lý 3 khối nhiệm vụ chính: khối A chờ tín hiệu ON từ công tắc máy để cấp nguồn cho Raspberry Pi và ESP (kích hoạt trợ lý ảo), khối B khối chương trình chính xử lý mọi giao tiếp và thực thi đểđáp ứng yêu cầu từ Raspberry Pi gửi và khối C xử lý tắt hệ thống khi có tín hiệu OFF từ công tắt máy

Giải thích lưu đồ hình 3.39 chương trình bắt đầu chạy và kiểm tra trạng thái công tắc máy, nếu công tắc máy ON chương trình sẽđóng relay cấp nguồn cho Raspberry Pi hoạt động và chương trình trên Raspberry Pi được khởi động tựđộng và nếu công tắc máy OFF thì chương trình tiếp tục kiểm tra Sau khi đóng cấp nguồn cho Raspberry Pi thì chương trình tiếp tục đợi tín hiệu gói tin từ Raspberry Pi Ởđây gói tin gửi 5 byte data nên chương trình phải đợi đủ 5 byte data dữ liệu mới tiếp tục xửlý đến giai đoạn đọc từng data và lưu vào 5 biến yêu cầu đáp ứng Sau khi đọc và cập nhật các giá trị biến chương trình sẽ tiến hành điều khiển đểđạt đáp ứng qua chương trình con ĐIỀU KHIỂN CƠ CẤU (được trình bày mục 3.4.2.1) Sau khi các cơ cấu chấp hành đạt đáp ứng thì chương trình sẽ yêu cầu trạng thái cửa xe từ ESP32 từ hàm con (được trình bày ở mục) Sau đó cập nhật nhiệt độ cabin và gửi 3 byte data tương ứng đến Raspberry Pi đang chờ Sau khi hoàn thành một vòng các nhiệm vụchương trình sẽ kiểm tra trạng thái công tắc máy nếu ON chương trình sẽ quay về trạng thái nhận data từ Raspberry Pi và nếu OFF chương trình sẽ tiến hành reset các trạng thái cơ cấu chấp hành (được trình bày mục) Sau đó ngắt relay cấp nguồn cho Raspberry Pi và ESP32

3.4.3 Chương trình xử lý tiền điều khiển cơ cấu chấp hành

Chương trình xử lý tiền điều khiển được gọi sau khi chương trình chính đã cập nhất các biến giá trị yêu cầu từ Raspberry Pi Mục đích của việc xử lý tiền điều khiển giúp cho việc giảm thời gian chương trình ở các tính huống giá trị yêu cầu trùng với giá trị yêu cầu trước đó thì bỏ qua việc tính toán cho chức năng đó sau đó bước tới chức năng tiếp theo

Hình 3.40 Lưu đồ giải thuật xử lý tiền điều khiển cơ cấu chấp hành

Giải thích lưu đồ: Khi được gọi đến hàm con xử lý tiền điều khiển thì hàm sẽ kiểm tra chức năng điều khiển quạt gió đầu tiên Nếu biến cho phép điều khiển quạt thì chương trình sẽđếm hàm con đểtính toán và điều khiển quạt gió và nếu biến không cho phép điều khiển quạt gió thì đến bước kiểm tra tiếp theo Bước kiểm tra tiếp theo là chức năng thay đổi hướng gió Đầu tiên chương trình sẽ kiểm tra giá trị vịtrí hướng gió yêu cầu có trùng với vị trí yêu cầu trước đó, nếu trùng với nhau thì bước sang bước kiểm tra tiếp theo và nếu khác thì tiến hành đến hàm tính toán và điều khiển vịtrí sau đó lưu lại vị trí yêu cầu vào biến last_mode Sau đó đến bước kiểm tra tiếp theo là lấy gió, chương trình sẽ kiểm tra vị trí lấy gió yêu cầu có trùng với vị trí yêu cầu trước đó, nếu trùng thì kết thúc hàm và nếu không trùng thì tiến hành đến hàm điều khiển và sau đó lưu lại vị trí yêu cầu hiện tại vào biến last_wind, sau đó kết thúc hàm

3.4.4 Chương trình điều khiển tốc độ quạt gió

Hình 3.41 Lưu đồ giải thuật chương trình điều khiển tốc độ quạt gió

Khi có tín hiệu cho phép điều khiển quạt gió thì chương trình sẽ kiểm tra mức yêu cầu mức quạt gió là 1, nếu đúng đây là mức quạt tối thiểu nên chương trình sẽ chỉ đóng relay HTR (chân 50 mức cao) chân 46 điều khiển chân Si của Mosfet sẽ mức thấp để quạt chạy với tốc độ tối thiểu Nếu mức quạt gió yêu cầu lớn hơn 1 thì chương trình sẽđóng relay HTR và đồng thời PWM chân 46 với duty cycle được tính theo công thức 3.2 Nếu mức quạt yêu cầu là 0 tức yêu cầu tắt quạt thì chương trình sẽ mở relay HTR (chân 50 mức thấp) và đồng thời chân 46 về mức thấp

Công thức 3.2: = 8.75 + 12.5Công thức 3.2 được suy từđồ thị hình 3.27 Trong công thức với 3.2 x là mức quạt gió yêu cầu và y là % duty cycle chân 46 điều khiển chân Si của Mosfet

3.4.5 Chương trình điều khiển cơ cấu lấy gió và hướng gió vào cabin

Hình 3.42 Lưu đồ giải thuật chương trình xử lý vịtrí động cơ tương ứng với yêu cầu vị trí hướng gió Khi vị trí yêu cầu vịtrí hướng gió từ Raspberry Pi được xem xét khác với vị trí yêu cầu trước đó thì chương trình tiến hành xửlý đểđưa ra các vị trí encoder của motor tương ứng Vịtrí encoder tương ứng với từng chếđộ theo bảng 3.6

Hình 3.43 Lưu đồ giải thuật chương trình xử lý vịtrí động cơ tương ứng với yêu cầu vị trí cánh lấy gió

Khi vị trí yêu cầu vị trí cánh lấy gió từRaspberry Pi được xem xét khác với vị trí yêu cầu (last_wind) trước đó thì chương trình sẽ xửlý đểđưa ra vị trí encoder của motor tương ứng Sau đó gọi hàm điều khiển động cơ thay đổi cánh lấy gió để tiến hành điều khiển vị trí

Hình 3.44 Lưu đồchương trình điều khiển vị trí motor encoder thay đổi hướng gió Chương trình điều khiển vị trí motor của cơ cấu lấy gió và motor thay đổi hướng gió có giải thuật hoàn toàn giống chỉ khác nhau đầu vào và đầu ra Khi hàm điều khiển vị trí motor được gọi chương trình sẽ kiểm tra giữa vịtrí đặt và vị trí hiện tại của encoder Nếu

2 vịtrí khác nhau thì chương trình sẽ tính sai lệch vịtrí và đưa ra kết quảđiều khiển motor quay chiều thuận nếu sai lệch dương và chiều nghịch nếu sai lệch âm Quá trình diễn ra liên tục cho đến khi sai lệch bằng 0 Các tín hiệu điều khiển động cơ được thể hiện trong bảng 3.5

3.4.6 Chương trình reset trạng thái trước khi tắt hệ thống

Mục đích reset trạng thái các cơ cấu chấp hành trước khi tắt hệ thống trợ lý là vì các biến trên trợ lý ảo sẽđược chạy lại từđầu khi khởi động lại nên các biến trên Arduino điều khiển cơ cấu chấp hành cũng phải được reset về vịtrí ban đầu

Hình 3.45 Lưu đồ giải thuật chương trình reset các cơ cấu chấp hành

Trong chương trình reset cơ cấu chấp hành được thực hiện đểđặt lại các cơ cấu sau: đầu tiên chương trình sẽ tắt quạt và hệ thống điều khiển nhiệt độ tiếp theo chương trình sẽ đặt lại vị trí của cơ cấu lấy gió và cơ cấu chếđộhướng gió.

K ế t qu ả nghiên c ứu điề u khi ể n gi ả m nhi ệt độ

3.5.1 Kết quả thu thập nhiệt độđểxác định nhiệt độ tối thiểu cabin

Mục đích việc thu thập nhiệt độ thấp nhất khi mởđiều hòa đểxác định nhiệt độ thấp nhất từđó lập trình giao diện người dùng

Hình 3.46 Đồ thị biểu diễn nhiệt độ cabin giảm theo thời gian

STT Điều kiện thu thập

1 Tốc độđộng cơ cầm chừng

2 Quạt gió mở tối thiểu

3 Chếđộhướng gió xuống chân và vào mặt

4 Chếđộ lấy gió tuần hoàn

5 Cảm biến nhiệt độcabin đặt trước quạt gió (3.4.1.4)

7 Các cửa xe đóng kín

Bảng 3.9 Điều kiện thu thập nhiệt độ thấp nhất xe Vios

Kết quảđạt được: Nhiệt độ thấp nhất của hệ thống điều hòa đạt được là 20 o C

3.5.2 Đánh giá kết quả thử nghiệm sựảnh hưởng nhiệt độ dàn lạnh đến nhiệt độ cabin bằng phương pháp đóng ngắt tín hiệu A/C Điều kiện thu thập

1 Tốc độđộng cơ cầm chừng

2 Quạt gió mở duy trì tối thiểu khi nhiệt độcabin đã giảm đến 25 độ

3 Chếđộhướng gió xuống chân và vào mặt

4 Chếđộ lấy gió tuần hoàn

5 Cảm biến nhiệt độcabin đặt trước quạt gió (3.4.1.4)

7 Các cửa xe đóng kín

8 Nhiệt độđặt mong muốn là 24 độ C

9 Thời điểm ngắt máy nén thông qua tín hiệu A/C khi nhiệt độ giảm tới 24 độ C

10 Thời điểm mở lại máy nén thông qua tín hiệu A/C khi nhiệt độtăng lên tới 24 độ C

11 Cánh trộn gió đóng hoàn toàn vềphía dàn sưởi (không khí không qua dàn sưởi mà chỉ qua dàn lạnh và vào cabin)

Bảng 3.10 Điều kiện thu thập nhiệt độ thấp nhất xe Vios đểđánh giá ảnh hưởng nhiệt độ dàn lạnh đến nhiệt độ cabin

Hình 3.47 Đồ thị biểu diễn nhiệt độ cabin theo thời gian thể hiện sựảnh hưởng dàn lạnh đến nhiệt độ cabin

Giải thích đồ thị 3.2 Khi nhiệt độ cabin giảm đến 24 o C thì ngắt tín hiệu A/C Lúc này nhiệt độ cabin vẫn tiếp tục giảm trong thời gian t1 bởi vì nhiệt độ dàn lạnh lúc này còn duy trì 0 o C Sau đó nhiệt độ cabin ổn định ở 23,69 o C trong khoảng thời gian t2 tại thời điểm này thì nhiệt độ dàn lạnh và nhiệt độ cabin có thểnói quá trình trao đổi nhiệt đã dần dừng lại Sau đó do sự trao đổi nhiệt của môi trường với cabin và nhiệt độ cơ thểngười ngồi trong xe nên nhiệt độ cabin bắt đầu tăng trong khoảng thời gian t3 bên cạnh đó nhiệt độ dàn lạnh cũng tăng lên Khi nhiệt độtăng lên 24 o C tại thời điểm này đóng tín hiệu A/C và hệ thống điều hòa bắt đầu làm việc trở lại Trong khoảng thời gian t4 nhiệt độ cabin vẫn tiếp tục tăng cho đến khi nhiệt độ dàn lạnh thấp đáng kế mới xảy ra lại quá trình trao đổi nhiệt cabin với dàn lạnh Trao đổi nhiệt diễn ra trong thời t5 nên nhiệt độ cabin lại tiếp tục giảm cho đến 24 o C và bắt đầu ngắt tín hiệu A/C

Từđồ thị trên ta rút ra thêm một nhận xét là sai số miền trên và miền dưới vịtrí đặt Sai số miền dưới bằng 0.31 o C được tính bằng cách lấy giá trịđặt là 24 o C trừđi đỉnh dưới 23.69 o C Sai số miền trên là 0.25 bằng cách lấy đỉnh trên trừ cho giá trịđặt là 24 Cho thấy

90 rằng tại thời điểm đóng/ngắt tín hiệu A/C ảnh hưởng lớn với sai số giữa miền trên và miền dưới Từđó ảnh hưởng đến đáp ứng đầu ra hệ thống Đánh giá kết quả thử nghiệm đóng ngắt tín hiệu A/C tại thời điểm nhất định: Đánh giá kết quả một: thời điểm ngắt tín hiệu A/C khi nhiệt độcabin đang giảm thì nhiệt độ cabin tiếp tục giảm một khoảng thời gian Thời điểm đóng máy nén khi nhiệt độ cabin đang tăng thì sau một khoảng thời gian nhiệt độ cabin mới giảm Đánh giá kết quả hai: Thời điểm đóng/ngắt tín hiệu A/C có ảnh hưởng đến sai số xác lập miền trên và miền dưới Nếu đóng/ngắt quá sớm dẫn đến sai số miền dưới sẽ thấp hơn miền trên hoặc đóng quá trễ dẫn đến sai số miền dưới lớn hơn miền trên như đồ thị 3.2

3.5.3 Kết quả nghiên cứu sựảnh hưởng thời điểm đóng/ngắt tín hiệu A/C đối với nhiệt độđặt

Từhai đánh giá kết quả thử nghiệm phương pháp ở mục 3.5.2 tiếp tục thử nghiệm ở các dãy nhiệt độ cốđịnh khác nhau và thay đổi thời điểm đóng/ngắt tín hiệu A/C thông qua tín hiệu A/C để tiếp tục đánh giá và rút ra một mẫu số chung về thời điểm đóng/ngắt tín hiệu A/C(ES) Điều kiện thực hiện thử nghiệm thu thập như bảng 3.10 nhưng chỉ khác nhau thời điểm đóng/ngắt tín hiệu A/C theo nhiệt độ khác nhau Trong giới hạn nghiên cứu trong đề tài này chỉđóng/ngắt cùng một vị trí nhiệt độ

Trong đó: setinterrupt là nhiệt độđóng/ngắt A/C setpoint là nhiệt độđặt

Hình 3.48 Đồ thị biểu diễn nhiệt độ cabin theo thời gian của quá trình đóng/ngắt tín hiệu

Lần thử nghiệm đầu tiên với vị trí nhiệt độđặt là 23 o C Thời gian lấy mẫu 2,7s ES ở

23 o C là 0,05 o C Nhận xét ở nhiệt độ 23 o C:

Nhận xét 1: Khoảng thời gian tín hiệu A/C đóng(t0) là tương đối bằng nhau cho thấy sự hoạt động ổn định

Nhận xét 2: Sai số miền trên và miền dưới là như nhau với sai số(d1) là +0,2 o C

Nhận xét 3: Không có vọt lốở nhiệt độ thấp

Hình 3.49 Đồ thị biểu diễn nhiệt độ cabin theo thời gian của quá trình đóng/ngắt tín hiệu

Lần thử nghiệm thứ hai với vị trí nhiệt độđặt là 25 o C Thời gian lấy mẫu 2,7s ES ở

25 o C là 0,1 o C Nhận xét ở nhiệt độ 25 o C:

Nhận xét 1: khoảng thời gian A/C đóng(t0) là tương đối bằng nhau cho thấy sự hoạt động ổn định

Nhận xét 2: sai số miền trên và miền dưới là như nhau với sai số(d1) là +0,2 o C

Nhận xét 3: độ vọt lố giảm đến 0,5oC

Hình 3.50 Đồ thị biểu diễn nhiệt độ cabin theo thời gian của quá trình đóng/ngắt tín hiệu

Lần thử nghiệm thứ ba với vị trí nhiệt độđặt là 27 o C Thời gian lấy mẫu 2,7s ES ở

27 o C là 0,1 o C Nhận xét ở nhiệt độ 27 o C:

Nhận xét 1: Khoảng thời gian A/C đóng là tương đối bằng nhau cho thấy sự hoạt động ổn định

Nhận xét 2: Sai số miền trên là 0,25 o C và miền dưới là 0,2 o C

Nhận xét 3: Độ vọt lố giảm đến 0,45 o C

Từ 3 kết quả thu thập nhiệt độtrong 3 trường hợp trên có thể rút ra một số so sánh:

1 Độ vọt lố sai số Không xảy ra Có xảy ra

2 Sai sốổn định Dao động quanh +0,25 o C

3 Chu kỳđóng/ngắt 42 chu kỳ lấy mẫu 60 chu kỳ lấy mẫu

4 Thời gian đóng (18/42)*100B% chu kỳ (18/60)*1000% chu kỳ

Bảng 3.11 So sánh các thông số giữa nhiệt độđặt 23 o C và 27 o C

- Ở nhiệt độđặt càng thấp thì tần sốđóng/ngắt tín hiệu A/C xảy ra càng lớn

- Độ vọt lốở dãy nhiệt thấp không xảy ra bởi vì nhiệt độ cabin gần với nhiệt độ dàn lạnh nên quá trình trao đổi nhiệt giữa cabin và dàn lạnh diễn ra không đáng kể và nguyên nhân thứ 2 là chênh lệch nhiệt độtrong xe và môi trường đã lớn nên trao đổi nhiệt trong xe và môi trường dần tăng lên Ngược lại ở dãy nhiệt cao thì nhiệt độ cabin còn lệnh lệch lớn với dàn lạnh nên quá trình trao đổi nhiệt còn diễn ra mạnh nên nhiệt độ cabin còn có thể giảm sâu

- Thời điểm ES nhiệt độ đặt càng thấp thì giá trị càng nhỏ, nhiệt độđặt càng cao thì

- Sai số sau ổn định là +0,25 o C là hoàn toàn có thể chấp nhận

Kết luận phương pháp điều khiển nhiệt độ bằng đóng/ ngắt A/C:

Sau những nhận xét đánh giá cho thấy rằng đểđiều khiển nhiệt độ với tốc độ quạt tối thiểu thì thời điểm đóng/ngắt A/C sẽ là yếu tố quyết định Từ các kết quảtrên đềtài đã rút ra kết quả về thời điểm đóng/ ngắt A/C theo nhiệt độđặt

Hình 3.51 Đồ thị biểu diễn ES theo nhiệt độđặt

Từđồ thị trên rút ra công thức tính ES phục vụ cho lập trình điều khiển nhiệt độ:

3.5.4 Kết quả nghiên cứu ảnh hưởng của tốc độ quạt gió đến thời gian đạt đáp ứng nhiệt độ

Phương pháp thay đổi tốc độ quạt phụ thuộc vào sai sốđược thử nghiệm và cho kết quảđồ thị hình 3.53 Cơ sở của phương pháp điều khiển tốc độ quạt sẽ mạnh từ khi sai số lớn để quá trình làm lạnh cabin xảy ra nhanh và tốc độ quạt giảm dần khi sai số dần nhỏ lại để giảm khảnăng vọt lố và gây sốc nhiệt ởngười

Hình 3.52 Đồ thị biểu diễn mối quan hệ % (duty cycle) theo sai số hệ thống (ERROR)

Từđồ thị hình 3.52 rút ra công thức 3.4: = 0,06 ∗ − 0.8 (%) (1 ≤

Giải thích công thức 3.4: khi sai số giữa nhiệt độđặt và nhiệt độ cabin trong phạm vi

1 ≤ ≤ 4 thì duty cycle cho quạt gió được tính theo công thức 3.4 Nếu sai số lớn hơn 4 thì duty cycle là 80% và nếu sai số nhỏhơn 1 thì duty cycle 0% lúc này quạt sẽ chạy với tốc độ thấp nhất qua điện trở quạt Lý do sử dụng max duty cycle là 80% bởi vì quạt gió ban đầu quá lớn sẽ gây nhiệt độ cabin giảm nhanh có thể dẫn đến sốc nhiệt ở người dùng điều hòa

Hình 3.53 Đồ thị biểu diễn nhiệt độ cabin 23 o C, 25 o C và 27 o C theo thời gian khi áp dụng công thức 3.4

Từđồ thị hình 3.53 thể hiện kết quả thời gian đáp ứng nhiệt độ khi sử dụng công thức 3.4 để điều khiển tốc độ quạt Ở nhiệt độ đặt là 23 o C thì thời gian đạt đáp ứng là 86*2.7s=3.78(phút), ở nhiệt độ đặt là 25 o C thời gian đáp ứng 96*2.7s=4.32(phút) và ở nhiệt độđặt 27 o C thời gian đạt đáp ứng là 101*2.7s=4,55(phút) Từđó cho thấy nhiệt độ càng thấp thì thời gian đáp ứng sẽlâu hơn Thời gian đáp ứng các dãy nhiệt độ không nhanh nhằm để giảm nguy cơ sốc nhiệt do nhiệt độcabin thay đổi quá nhanh

Với công thức điều khiển tốc độ quạt 3.4 hoàn toàn có thểứng dụng trong điều khiển nhiệt độ Đáp ứng được vấn đề không làm nhiệt độ cabin giảm quá nhanh gây sốc nhiệt và không làm chậm quá trình làm lạnh cabin

3.5.5 Xây dựng thuật toán điều khiển giảm nhiệt độ cho trợ lý ảo

Dựa trên các đánh giá sau trong quá trình nghiên cứu:

- Thứ nhất khi đặt quạt ở mức thấp nhất và mởđiều hòa thì nhiệt độ vẫn giảm xuống mức thấp nhất nhưng chỉ khác nhau khi tốc độ gió lớn thì quá trình trao đổi nhiệt xảy ra nhanh nên quá trình đạt nhiệt độ cabin thấp nhất xảy ra nhanh Và vấn đề thứ hai là tốc độ quạt có ảnh hướng đến việc dàn lạnh bị đóng băng nên không thể giảm tốc độ quạt thấp hơn tốc độ quạt tối thiểu hiện tại Kết luận về việc điều khiển tốc độ quạt điều khiển nhiệt độ cabin là không thểđáp ứng bộ tiêu chí an toàn hệ thống dễ dẫn đến đóng băng dàn lạnh

- Đánh giá về mặt tiết kiệm nhiên liệu Theo cơ sở lý thuyết được nghiên cứu vềđiều khiển nhiệt độ thì dùng thuật toán để tính nhiệt độ đầu ra của không khí bằng việc điều khiển cánh trộn gió Từđó có thể nhận thấy rằng khi không khí qua dàn lạnh nhiệt độ rất thấp và qua tiếp dàn nóng đểtăng nhiệt độ Từ cách thức điều khiển trên làm cho máy nén luôn trong trạng thái hoạt động dẫn đến vấn đề tiêu hao nhiên liệu Trên xe Vios không đủ điều kiện để thực hiện phương pháp này Kết luận về việc điều khiển cánh trộn gió để thay đổi nhiệt độđầu ra là không có lợi về mặt tiết kiệm nhiên liệu và hoàn toàn không thểđáp ứng trên xe Toyota Vios

- Dựa vào kết luận về sự hiểu quả của phương pháp đóng/ngắt tín hiệu A/C đểđiều khiển nhiệt độcabin và đáp ứng tốt của công thức điều khiển quạt gió 3.4

Tổng hợp từ tất các kết luận nghiên cứu trên đề tài quyết định sử dụng kết hợp phương pháp điều khiển tín hiệu A/C và điều khiển tốc độ quạt đểđiều khiển giảm nhiệt độ xe

Trước khi xác định thuật toán điều khiển nhiệt độ thì cần xác định sơ đồ các tín hiệu đầu vào, tín hiệu đầu ra và điều kiện của xe ảnh hướng đến quá trình điều khiển nhiệt độ

Hình 3.54 Sơ đồ các khối tín hiệu, điều kiện đầu vào và đầu ra xửlý điều khiển nhiệt độ

ĐÁNH GIÁ KẾ T QU Ả NGHIÊN C Ứ U

T ổ ng quát h ệ th ố ng tr ợ lý ả o

4.1.1 Mô hình hóa hệ thống trợ lý ảo

Hình 4.1 Mô hình hóa hệ thống trợ lý ảo

Hệ thống trợ lý ảo được vận hành theo sơ đồ mô hình 4.1 Khi Raspberry Pi nhận tín hiệu đầu vào từ microphone hoặc màn hình cảm ứng và tín hiệu cảm biến từ Arduino Sau khi trợ lý ảo sử dụng thuật toán xử lý đầu vào sau đó xuất tín hiệu đầu ra và gửi gói tin chứa các yêu cầu đáp ứng đến Arduino Arduino có vai trò nhận tín hiệu đầu vào và gói tin từRaspberry Pi đểđưa ra đáp ứng là đầu ra cơ cấu chấp hành Đồng thời Arduino còn có vai trò gửi các tín hiệu cần thiết như nhiệt độ cabin, trạng thái cửa, trạng thái động cơ…đến Raspberry Pi để xử lý các chức năng

4.1.2 Các chức năng được nghiên cứu và thực hiện trong đề tài

Stt Chức năng Nguyên bản Trợ lý ảo

1 Ra lệnh giọng nói Không Có

2 Điều chỉnh giảm nhiệt độ tựđộng Không Có

3 Thay đổi tốc độ quạt gió 4 mức độ 10 mức độ

4 Hiển thị nhiệt độ cabin Không Có

5 Thay đổi 5 chếđộhướng gió vào cabin Có Có

6 Chếđộ lấy gió Có Có

Có (núm xoay và nút nhấn)

8 Nhớ vịtrí điều hòa Không Có

9 Cảnh báo mở cửa xe khi điều hòa đang mở Không Có

10 Xông kính chắn gió sau Có Không

Bảng 4.1 So sánh các chức năng điều hòa hệ thống nguyên bản với trợ lý ảo Đề tài nghiên cứu và thực hiện 9 chức năng và không áp dụng một chức năng nguyên bản là xông kính chắn gió sau:

- Ra lệnh bằng giọng nói: tất cả các chức năng trên hệ thống trợ lý ảo đều có thể ra lệnh bằng giọng nói hoàn toàn

- Điều chỉnh giảm nhiệt độ tựđộng: đây là chức năng trọng điểm của hệ thống giúp nhiệt độcabin tương đối ổn định dưới mức nhiệt độmôi trường Người dùng không phải điều chỉnh nhiều lần

- Thay đổi tùy chỉnh nhiều mức độ quạt gió: đề tài sử dụng Mosfet công xuất thay thế điện trởđểđiều khiển tốc độ quạt gió nhiều cấp độ Đểngười dùng có thể tùy chỉnh nhiều dãy tốc độ

- Hiển thị nhiệt độ cabin: nhiệt độcabin được hiển thị khi không sử dụng chếđộđiều hòa

- Thay đổi 5 chếđộhướng gió: các chếđộđược thực hiện theo nguyên bản tuy nhiên có sự phát triển ở chếđộsưởi kính chắn gió hệ thống sẽ tựđộng lấy gió ngoài Được điều khiển bằng motor encoder

- Chếđộ lấy gió: đề tài thực hiện như cơ chế nguyên bản được điều khiển bằng motor encoder

- Thao tác cảm ứng: đểđáp ứng nhu cầu khi cần thiết đề tài phát triển giao diện người dùng tương tác với tất cả các chức năng trợ lý ảo

- Chức năng nhớ vịtrí điều hòa: đểđáp ứng việc nhiều người sử dụng điều hòa hoặc một người sử dụng điều hòa nhiều thời điểm khác nhau trong ngày, chức năng nhớ vị trí điều hòa được phát triển đểgiúp người dùng ghi nhớ các vịtrí điều hòa khác nhau Đề tài phát triển ghi nhớ 3 vịtrí Ý tưởng được lấy từ chức năng nhớ vị trí ghế

- Chức năng cảnh báo mở cửa khi điều hòa đang mở: ứng dụng từ việc đọc tín hiệu CAN và kết hợp trợ lý ảo để cảnh báo thụđộng đến người dùng Nhằm giúp tiết kiệm một phần nhiên liệu thụđộng.

Đánh giá kế t qu ả nghiên c ứ u tr ợ lý ả o và giao di ệ n

4.2.1 Đánh giá thời gian gửi data từRaspberry Pi đến Arduino qua giao thức

Tốc độ gửi gói data 5byte từRaspberry Pi đến Arduino không yêu cầu một tốc độ quá cao Bởi vì các thiết bị trên xe yêu cầu tốc độ truyền cao như điều khiển động cơ với tốc độ 500kB/s trên mạng CAN và các thiết bị tiện nghi như điều hòa hiện đại tốc độ truyền nhận thấp hơn 125kB/s trên mạng CAN Với tốc độ1,2kB/s(9600bit/s) để giao tiếp nội bộ module là hợp lý

Theo kết quả tốc độ truyền đi 5byte dữ liệu ở biểu đồ 4.1 thì tốc độ truyền dao động từ20ms đến 30ms Lý do cho việc thời gian dài hơn tính toán vì đây là thời gian này bao gồm việc đóng gói một gói tin, chuyển sang hệ byte để có thể truyền đi và tốc độ thực tế trên giao thức UART theo bảng 4.2 [38]

Lý do chọn tốc độ giao tiếp là 9600baud Vì đa số các thiết bị đều chọn 9600baud làm mặc định Tốc độ giao tiếp không quá cao góp phần giảm tải cho vi xử lý Nếu chọn tốc độcao hơn thì cần có dây kết nối ngắn và chất lượng hơn.

Biểu đồ 4.1 Thời gian gửi data từRaspberry Pi đến Arduino

Bauds Bit/s Thời lượng 1 bit Tốc độ Tốc độ thực tế

Thời lượng 1byte thực tế

Bảng 4.2 Thông số lý thuyết và thực tế về giao thức UART 9600baud

4.2.2 Đánh giá thời gian trợ lý ảo xử lý các câu lệnh

Biểu đồ 4.2 Thời gian trợ lý ảo xử lý câu lệnh Các câu lệnh liên quan đến thay đổi các hướng gió trợ lý ảo xử lý trung bình từ 3,12s đến 3,17s Các câu lệnh liên quan đến tắt mở quạt được xử lý từ 2s đến 3s Các câu lệnh yêu cầu tăng/ giảm quạt thì thực hiện lâu hơn từ3s đến 5s Các câu lệnh liên quan đến chức năng điều hòa thì chương trình xử lý từ3.3s đến hơn 5s Đối với chức năng lưu và đọc các vịtrí điều hòa được thực hiện từ3,7s đến hơn 3,8s.

Từ các kết quả trung bình trên, dựa vào độ phức tạp thuật toán tính toán điều kiện điều khiển và các điều kiện khách quan thì hoàn toàn có thể rút ra các nhận xét và đánh giá sau:

- Với chức năng liên quan đến điều hòa thì chương trình thực hiện lâu nhất Vì điều khiển nhiệt độ có rất nhiều điều kiện cần phải xem xét và tính toán chi tiết các tình huống để đưa ra phản hồi phù hợp với điều kiện hiện tại Và bị ảnh hưởng bởi điều kiện chức năng quạt gió

- Với chức năng điều hướng gió và chức năng nhớ/đọc điều hòa xửlý nhanh hơn so với điều hòa Vì thuật toán điều khiển hướng gió không phụ thuộc vào trạng thái chức năng khác nên xử lý trực tiếp ít qua các câu lệnh if elif Và chức năng nhớ/đọc vịtrí điều hòa cũng tương tự không phải xem xét quá nhiều các điều kiện ảnh hưởng

- Đối với thời gian xửlý thay đổi tốc độ quạt so với thời gian xử lý tắt mở quạt là lâu hơn Bởi vì tắt mở quạt ít phải xem xét các điều kiện còn tăng/giảm quạt phải xem xét sự ảnh hưởng của chức năng điều hòa và điều kiện hiện tại để phản hồi phù hợp đến người dùng

- Có một yếu tố ảnh hưởng làm cho thời gian có sự chênh lệch giữa các câu lệnh giống nhau là vì trong chương trình sử dụng công cụ chuyển văn bản thành âm thanh và âm thanh thành văn bản hoàn toàn qua internet Nên tốc độ internet sẽảnh hưởng đến tốc độ xử lý

- Bên cạnh đó phần cứng là một trong những yếu tố quan trọng dẫn đến tốc độ xử lý bịảnh hưởng

4.2.3 Kết luận về trợ lý ảo và giao diện

- Kết quả xử lý tất cả các câu lệnh thuộc hệ thống điều hòa ô tô Các câu lệnh này đã được thiết kế tinh gọn đểngười dùng dễ sử dụng Tốc độ xử lý có thể chấp nhận được với điều kiện trong vi cho phép như hiện tại

- Trợ lý ảo giao tiếp ổn định trong môi trường có mạng internet ổn định Tuy chưa thể đạt 100% vềđộ chính xác trong nhận dạng lời nói từngười dùng Nhưng vấn đề này hoàn toàn có thể cải thiện bằng nhiều cách

- Các chức năng nhớ vịtrí điều hòa có tính mới trong lĩnh vực hoàn toàn phù hợp với hệ thống điều hòa hiện đại và được tinh gọn dễ sử dụng

- Các thao tác được tinh gọn ít thao tác ở chế độ sử dụng điều hòa không yêu cầu người dùng khởi động quạt gió và trợ lý ảo sẽ tựđộng làm việc đấy

- Luồng giao tiếp giữa Arduino và Raspberry Pi độc lập với luông trợ lý ảo nên không ảnh hưởng lẫn nhau

- Giao diện màn hình trực quan thể hiện hết tất cả các chức năng và thông tin cần thiết Không gian màn hình có thể phát triển nhiều tiện nghi liên quan đến điều hòa.

Đánh giá kế t qu ả c ủ a ch ức năng cả nh báo m ở c ửa khi điều hòa đang hoạ t độ ng

Thực nghiệm đem lại kết quả hoàn toàn đúng như thuật toán đã được lập trình Với phương pháp cảnh báo thụđộng này hoàn toàn có thể cảnh báo chủđộng

Tính nghiên cứu và tính ứng dụng trong chức năng này hoàn toàn là cải tiến so với các nghiên cứu trước đây như: một đề tài nghiên cứu về việc chủđộng ngắt máy nén điều hòa chỉ cần một trong 2 điều kiện sau xảy ra một là cửa mởđược nhận biết bằng công tắc hành trình hai là không có người trong xe bằng cảm biến PIR tất cả các cảm biến gửi về Arduino và quyết định đóng/mở máy nén cho hệ thống điều hòa [39] Mục đích của đề tài là nhằm tiết kiệm nhiên liệu khi sử dụng hệ thống điều hòa Đề tài này hạn chế về mặt bố trí các cảm biến báo cửa xe trởnên khó khăn.

Trong đềtài đồ án này có tính mới hơn ở việc ứng dụng việc khai thác được tín hiệu CAN bus từ đó phát hiện cửa mở và trên nền tảng này có thể phát triển khai thác mạng CAN bus rộng hơn.

Đánh giá mô hình phầ n c ứ ng tr ợ lý ả o

4.4.1 Đánh giá thông sốdòng điện tải hệ thống hoạt động tất cả các chếđộ

Biểu đồ 4.3 Dòng điện hệ thống trong tất cả chếđộ hoạt động

Dựa vào các trạng thái hoạt động và kết hợp kết quảđo dòng điện hệ thống có thể đưa ra một sốđánh giá và nhận xét như sau:

- Hệ thống hoạt động thường xuyên ở trạng thái “hệ thống ON” nên dòng điện tiêu thu trên hệ thống điện thân xe không tới 1A điều này dẫn đến việc xem xét nên nâng cấp lên một ắc quy có dung lượng cao hơn nhằm đáp ứng lúc hệ thống điện thân xe hoạt động hết công suất

- Trạng thái OFF của hệ thống có thể thấy chỉ cấp nguồn cho một Arduino nên dòng điện tiêu thụ có thể nói là rất thấp chỉ 0.09A Với dòng điện trạng thái nghỉ thấp như thế này hoàn toàn không ảnh hưởng đến ắc quy

- Khi điều khiển động cơ encoder thì dòng điện tăng lên không đáng kể Do động cơ được cấp nguồn 7,5V và tốc độcao nên dòng điện thuần rất thấp

- Màn hình LCD có thểxem như tải tiêu thụ điện lớn nhất trên hệ thống thông qua kết quả cho thấy chỉ 0.41A chiếm gần 50% điện tiêu thụ trên toàn mạch trạng thái ON bình thường

4.4.2 Đánh giá bộ phận chấp hành in 3D

Các cơ cấu trên xe nguyên bản không có thông số về kích thước lẫn moment Nên trong đề tài sử dụng phương pháp thử nghiệm cơ cấu Phương pháp được thực hiện bằng cách chế tạo các cơ cấu thay thế và tiến hành chạy thử nghiệm ở tất cả các chế độ Từđó rút các đánh giá về sự sai số trong quá trình thiết kế và sự chịu lực tại các điểm quan trong từ đó thiết kế lại và dần hoàn chỉnh cơ cấu Các cơ cấu hiện nay đã đáp ứng tốt các hoạt động thử nghiệm và không phá hủy

Cơ cấu được thiết kếcó kích thước nhỏhơn cụm điều khiển nguyên bản nên việc bố trí lắp đặt trong khoang xe trở nên dễdàng Nhưng cần nhiều thời gian để nghiên cứu việc bố trí trở nên tối ưu hơn hiện tại

Đánh giá thờ i gian x ử lý c ủ a Arduino

Biểu đồ 4.4 Thời gian xử lý các chếđộ hoạt động trên Arduino

Từ biểu đồ 4.4 ta có thểrút ra đánh giá về thời gian xử lý của Arduino như sau:

- Thời gian xử lý đáp ứng các cơ cấu chấp hành liên quan đến điều khiển motor encoder dao động từ2,55s đến gần 5s Nhìn chung thời gian đáp ứng này tương đương với việc điều khiển bằng thủ công Với tốc độđộng cơ 7rpm thì không thể cho một đáp ứng nhanh hơn và moment kẻo phải đủ lớn

- Thời gian xử lý các lệnh như điều khiển quạt gió hoặc nhiệt độthì dao động quanh

1,1s Thời gian xử lý tương đối là gần bằng nhau Bởi vì thời gian đọc cảm biến nhiệt độ trong một chu trình xử lý chiếm 0,7s/1,1s, thời gian còn lại là xửlý tính toán đơn giản nên không mất nhiều thời gian xử lý

- Thời gian khởi động trung bình 38,9s và thời gian tắt hệ thống dao động 13s

Đánh giá kế t qu ả điề u khi ể n gi ả m nhi ệt độ thay đổ i các m ức độ liên t ụ c

Hình 4.2 Đồ thị nhiệt độ giảm từ 33 o C xuống 27 o C, từ 27 o C xuống 25 o C, 25 o C xuống

Kết quả thực nghiệm giảm nhiệt độ liên tục:

- Thời gian đáp ứng từ nhiệt độ môi trường 33 o C xuống đạt đáp ứng 27 o C trong 3,465(phút) Thời gian đạt đáp ứng từ nhiệt độổn định 27 o C xuống 25 o C là 25s Thời gian đáp ứng từ nhiệt độổn định 25 o C xuống 23 o C là 1,71(phút)

- Độ vọt lốkhi thay đổi liên tục hầu như là không xảy ra

- Độổn định hệ thống trong quá trình đáp ứng dao động +0,25 o C

Hệ thống điều khiển nhiệt độ bằng phương pháp đóng/ngắt tín hiệu A/C và kết hợp quạt gió:

- Thời gian đạt được đáp ứng không quá nhanh và không quá chậm

- Độ vọt lố nhiệt độ không quá 1 o C

- Độổn định trong phạm vi chấp nhận là +0,5 o C

- Chưa đủcơ sởđểđánh giá độ tiết kiệm nhiên liệu so với phương pháp khác.

KẾ T LU Ậ N

K ế t lu ậ n

Đềtài đã đạt được các kết quảnhư sau: người dùng tương tác với hệ thống điều hòa ô tô hoàn toàn bằng giọng nói, kết quảđiều khiển giảm nhiệt độđáp ứng các tiêu chí đặt ra, hệ thống tiện nghi được phát triển thành công và ứng dụng thành công công cụđọc tín hiệu CAN vào trong cảnh báo thụđộng nhằm tiết kiệm nhiên liệu

Các kết quảtrên đã giải quyết vấn đềgiúp người dùng hạn chếtương tác thủ công với tiện nghi từđó giúp người dùng tập trung lái xe Kết quả phát triển các chức năng cảnh báo thụ động góp một phần vào việc tiết kiệm nhiên liệu với sự phát triển này hoàn toàn hiện đại hơn so với sự phát triển tương tự trước đây Khai thác các chức năng nhớ vị trí điều hòa mang lại nhiều trải nghiệm cho người dùng Kết quảđiều khiển giảm nhiệt độ có tầm quan trọng trong việc phát triển hệ thống điều hòa đạt độ tiết kiệm nhiên liệu tối ưu.

Đóng góp mới đố i v ớ i chuyên ngành và ph ạ m v ị ứ ng d ụng đề tài

Đềtài đã đóng góp nền tảng kết hợp máy tính nhúng và vi điều khiển đểđiều khiển hệ thống tiện nghi ô tô qua giọng nói Bện cạnh đó khai thác khai được tín hiệu CAN trên ô tô tạo nền tảng phát triển các chức năng mới trên xe Phương pháp điều khiển giảm nhiệt độ mới được khai thác tạo tiền đềcho các đề tài nghiên cứu vềđiều khiển nhiệt độ Đề tài có thểứng dụng vào các môn học giúp sinh viên tiếp cận đến lập trình nhúng, khai thác và xâm lấn hệ thống điện ô tô Từđó sinh viên ngành công nghệ kỹ thuật ô tô có nền tảng tốt hơn sau khi ra trường có thể phát triển ở vị trí công việc như R&D (RESEARCH AND DELVELOPMENT) ở các công ty phát triển tiện nghi ô tô.

H ạ n ch ế

- Dữ liệu phục vụ công cụ nhận dạng giọng nói còn hạn chế

- Khu vực có băng thông internet bị hạn chế dẫn đến công cụ chuyển giọng nói sang văn bản và từ văn bản sang giọng nói sẽ chậm Từđó dẫn đến tốc độ xử lý các câu lệnh của trợ lý ảo bị chậm

- Không thể đánh giá được độ tiết kiệm nhiên liệu khi sử dụng phương pháp đóng ngắt máy nén bằng tín hiệu A/C Do chưa đủ tài liệu, căn cứ và thời gian để tiến hành thực nghiệm và đánh giá

- Hạn chế về mặt thời gian nên chưa thể đánh giá sự hài lòng người dùng đến trải nghiệm chức năng trợ lý ảo

- Cơ cấu liên kết in 3D được chế tạo bằng phương pháp thử nghiệm Nên không thể đánh giá độ bền cơ cấu bằng phương pháp định lượng

- Phương pháp điều khiển nhiệt độđược phát triển từphương pháp điều khiển lò nhiệt và thực hiện trong thời gian ngắn nên còn rất nhiều hạn chếnhư:

+ Không thểđánh giá độ bền ly hợp máy nén khi đóng/ngắt nhiều lần ở tốc độđộng cơ thấp và ở tốc độđộng cơ cao

+ Không thểđánh giá độổn định thuật toán giảm nhiệt độ khi tốc độxe thay đổi + Không thểđánh giá nhiệt độ hàng ghế sau xe

5.4 Đề xuất hướng phát triển

- Thu thập và mở rộng vùng dữ liệu nhận dạng giọng nói bằng phương pháp thu thập thực nghiệm dựa trên công cụ recognition google sử dụng trên trợ lý ảo

- Cải thiện thuật toán điều khiển điều hòa sử dụng phương pháp mapping các thông sốđầu vào

- Cải thiện băng thông internet đểtăng đáp ứng thời gian xử lý ngôn ngữ và phản hồi

- Tối ưu mạch điện phần cứng bằng cách sử dụng các linh kiện và module có kích thước nhỏhơn.

- Thực nghiệm và đánh giá toàn diện phương pháp điều khiển giảm nhiệt độ:

+ Thu thập và phân tích các thông sốđể đánh giá sựảnh hưởng của tốc độđộng cơ đến độổn định của thuật toán điều khiển nhiệt độ

+ Nghiên cứu tài liệu tiêu chuẩn hoạt động ly hợp máy nén đểđánh giá sựảnh hưởng với số lần đóng/ngắt tăng lên khi sử dụng phương pháp điều khiển nhiệt độ

+ Xác định độổn định của nhiệt độ cabin khi xe chạy với tốc độ khác nhau

DANH MỤC TÀI LIỆU THAM KHẢO

[3] https://tinyurl.com/2jkk77eb

[4] https://tinyurl.com/2mn6k8ro

[5] https://discover.bmw.co.uk/help/technology/what-is-ipa

[9] G R Marina Umaschi Bers, "Proceedings of the 14th International Conference on Interaction Design and Children," Association for Computing MachineryNew

[11] G Lugano, "Virtual assistants and self-driving cars," International Conference on ITS Telecommunications (ITST) (pp 1-5) IEEE, In 2017 15th

[12] H Q S P V T Nguyễn Bùi Quang, Nghiên cứu, tìm hiểu hệ thống điều hòa, 10/2017

[13] B Botelho, "virtual assistant (AI assistant)," techtarget, December 2022

[14] T Pant, in Building a Virtual Assistant for Raspberry Pi, 2016, p 95

[15] https://cloud.google.com/speech-to-text

[16] https://github.com/alphacep/vosk-api

[17] Amruta Rajendra Chougule, Dr K Suganthi, IoT BASED SMART CAR

[18] Asunción Moreno, Borge Lindberg, Christoph Draxler, Gael Richard, Khalid

Choukry, Stephan Euler, Jeff Allen, SPEECH DAT CAR A Large Speech

Database For Automotive Environments, Barcelona Spain : Tenth International Conference on Advanced Computing, 2018

[19] https://pypi.org/project/PyAudio/]

[20] https://docs.python.org/3/library/json.html

[21] https://docs.python.org/3/library/tkinter.html

[22] https://www.pythontutorial.net/tkinter/tkinter-photoimage/

[23] https://coderslegacy.com/python/tkinter-photoimage/

[25] https://tinyurl.com/2mc8dwfs

[26] https://pyserial.readthedocs.io/en/latest/pyserial.html

[27] https://pyserial.readthedocs.io/en/latest/pyserial_api.html

[30] https://marco.guardigli.it/2010/10/hacking-your-car.html

[31] S Daly, Automotive_Air_conditioning_and_Climate, 2006

[32] J A C J S Freudenberg, Controller Area Network (CAN) EECS 461, 2008

[33] https://github.com/miwagner/ESP32-Arduino-CAN

[34] "Technical Explanation for Temperature Controllers," OMRON

[35] "AIR CONDITIONING AND CLIMATE CONTROL Course 752," Toyota Motor Sales, U.S.A., Inc, 2004

[37] https://github.com/terryjmyers/PWM

[39] R a S H Wijaya, "Application of air conditioner (AC) automation system on arduino," IOP Conf Ser.: Mater Sci Eng 885 012017, 2020

Phụ lục 1: Sơ đồ mạch in

Phụ lục 2: Thu thập tín hiệu quạt trên mô hình điều hòa Toyota Camry 2006 từ mức quạt 1 đến mức quạt 5

Phụ lục 3: Code của chương trình https://bom.so/MtJ6vo

Phụ lục 4: Module trợ lý ảo

Phụ lục 5: Sơ đồ mạch điện quạt điều hòa xe Camry 2006

Phụ lục 6: Video thực nghiệm https://bom.so/KGguJm

Ngày đăng: 20/03/2024, 14:50

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w