Khảo sát và lựa chọn công nghệ lập trình, hệ cơ sở dữ liệu

Một phần của tài liệu Nghiên cứu, chế tạo hệ thống giám sát và thu thập dữ liệu trên ô tô đồ án tốt nghiệp ngành công nghệ kỹ thuật ô tô (Trang 69)

3.5.1. Xây dựng MQTT broker với Aedes

Aedes (Mosca) là 1 trong số rất nhiều server MQTT Broker của giao thức MQTT. Tương tự như CloudMqtt, nó có 1 số đặc điểm như sau:

 Nó là 1 Node.js Broker, được viết bằng ngôn ngữ JavaScript vì vậy để có thể xây

dựng MQTT Broker, chúng ta cần Node.js để chạy. Aedes (Mosca) có thể nhúng vào ứng dụng của bạn nếu ứng dụng này được viết bằng Node.js

 Aedes (Mosca) là 1 multi-transport MQTT Broker, có nghĩa là nó hỗ trợ tất cả các

chức năng publish, subscribe của các broker khác. Danh sách các publish/subscribe broker được hỗ trợ bao gồm RabbitMQ, Redis, Mosquitto, ZeroMQ. Ở phần này chúng ta sẽ tạo ta 1 MQTT Broker đơn giản dùng Aedes (Mosca) với sự hỗ trợ của cơ sở dữ liệu Mongodb.

Để có thể sử dụng Aedes ta cần cài NodeJS về máy tính và tải package Aedes, có rất nhiều hướng dẫn cụ thể trên Internet nên nhóm xin không đề cập cách làm ở đây. Sau khi cài xong NodeJS và Aedes, chúng ta tiến hành tạo một MQTT broker đơn giản bằng cách lập trình và chạy file trên bất kỳ IDE có hỗ trợ nào với mã nguồn như sau:

Hình 3.19. Tạo một MQTT broker đơn giản

3.5.2. Cơ sở dữ liệu truy vấn không cấu trúc MongoDB

61 hướng đối tượng trong đó các bảng được cấu trúc một cách linh hoạt cho phép các dữ liệu lưu trên bảng không cần phải tuân theo một dạng cấu trúc nhất định nào. Chính do cấu trúc linh hoạt này nên MongoDB có thể được dùng để lưu trữ các dữ liệu có cấu trúc phức tạp và đa dạng và không cố định (hay còn gọi là Big Data).

Một số đặc điểm của MongoDB:

 Kho lưu định hướng document: Dữ liệu được lưu trong các tài liệu kiểu JSON.

 Lập chỉ mục trên bất kỳ thuộc tính nào.

 Các truy vấn đa dạng.

 Cập nhật nhanh hơn.

3.5.3. Kết nối tới MongoDB server với NodeJS

Để có thể thao tác với MongoDB trong NodeJS ta cần phải cài đặt thêm driver, thông thường thì ta sẽ phải cài thêm module có tên mongodb nhưng trong đồ án này nhóm sẽ dùng module mongoose, nó được xây dựng dựa trên module mongodb nhưng việc thao tác đơn giản hơn nhiều, không cần quá nhiều câu lệnh phức tạp. Mongoose là module viết dựa trên JavaScript và được sử dụng nó rất nhiều trong một ứng dụng Node.js, nó là một Object Data Modeling (ODM) cho MongoDB và NodeJS.

3.5.4. Xây dựng trang web cơ bản với Express trong NodeJS

ExpressJS là một web framework được xây dựng trên nền tảng NodeJs. Expressjs cung cấp các hàm HTTP và midleware để tạo ra API đơn giản và dễ sử dụng.

ExpressJS được phát hành theo giấy phép mã nguồn mở, có cộng đồng hỗ trợ lớn, được phép sử dụng cho ứng dụng có mục đích thương mại. Do vậy bạn hoàn toàn có thể yên tâm sử dụng framework này cho dự án của mình, từ dự án nhỏ tới lớn.

Cấu trúc thư mục dự án khi sử dụng ExpressJS được chia là 3 phần: routes, Views và Public. ExpressJS xây dựng ứng dụng web theo đúng mô hình MVC (Model – View – Controller).

Sau khi cài đặt NodeJS và ExpressJS, ta có thể tiến hành lập trình với một vài dòng lệnh vô cùng cơ bản là có thể tạo ra một Web Server hoạt động ở mạng local trên máy tính cá nhân như hình bên dưới:

62

63

CHƯƠNG 4. THI CÔNG MÔ HÌNH VÀ KẾT QUẢ KIỂM TRA GIAO TIẾP VỚI ECU CỦA XE TOYOTA YARIS 2009

4.1. Các thiết bị trong mô hình

Dưới đây là một số thiết bị để thực hiện quá trình kiểm tra hoạt động của thiết bị với mô hình giao tiếp OBD2:

 ECU Toyota Yaris 2009

Hình 4.1. ECU Toyota Yaris 2009

ECU có mã là 89661-0D680 được sử dụng trên các dòng xe của Toyota sử dụng động cơ 1NZ-FE, chẳng hạn như: Vios 2009, Yaris 2009,…

Hình 4.2. Sơ đồ chân ECU Toyota Yaris 2009

Để thực hiện việc kiểm tra giao tiếp giữa hộp Gateway mà nhóm chế tạo với ECU, chúng em đã sử dụng các chân CANH và CANL để có thể thu thập dữ liệu từ ECU thông qua mạng CAN. Vị trí chi tiết của các chân CANH và CANL đã sử dụng như sau:

CANH (A21-41) - E1 (C20-104) CANL (A21-49) - E1 (C20-104)

64

 Đầu Jack OBD2

Hình 4.3. Đầu Jack OBD2

 Cáp kết nối OBD2

Hình 4.4. Cáp kết nối OBD2

 Board Gateway

Để thiết lập được board Gateway, cần sử dụng các thiết bị như bảng 4.1 bên dưới.

Bảng 4.1. Các thiết bị sử dụng trong mô hình Board Gateway

STT Tên Số lượng Điện áp (V) Dòng định mức (mA) Dòng tối đa (mA) Giao thức 1

Kit RF thu phát Wifi BLE ESP32 Node MCU LuaNode32 1 5 80 500 2 Mạch giảm áp LM2596S 1 IN: 3.2 - 40 OUT: 1.25-35 3000

3 Mạch chuyển đổi giao

tiếp CAN MCP2515 1 2.7 – 5.5 5 10 SPI

4 Module mở rộng giao

65 5 Module GPS U-Blox NEO-M8N-0-10 1 3.3 - 5 45 100 UART 6 Mạch Đọc Thẻ Nhớ MicroSD 1 3.3 – 5.5 80 200 SPI 7 AMS1117 Mạch Ổn Áp 3.3V 1 IN: 3V3 - 5 OUT: 3.3 800 8 Cổng RJ45 Cái 8P8C

8 Chân Không LED 4

9 Cổng DB9 Đực 9 Chân Cong 90 Độ 1 10 Jack DC 1 11 Nút nhấn 6mm 4 chân chỉnh ngang 1 12 LED 5mm 2 13 Điện trở 1K 2W 1% 3  Sensor

Nhóm chúng em sử dụng 4 cảm biến gia tốc MPU6050 làm bộ phận chính cho sensor của hệ thống. Ngoài ra, còn cần dùng thêm cổng RJ45, tụ điện, điện trở, LED để tạo thành một sensor hoàn chỉnh.

66

4.2. Mô hình thiết bị thực tế 4.2.1. Tổng quan về thiết bị 4.2.1. Tổng quan về thiết bị

Hình 4.6. Mô hình thiết bị hộp Gateway Thông số cơ bản:

 Kích thước: 157 x 98 x 32 mm

 Chuẩn giao tiếp với cảm biến: I2C

 Giắc kết nối: 4 cổng RJ45, 1 cổng SMA, 1 cổng DC, 1 cổng DB9, 1 cổng micro

USB.

 Chip VĐK của main MCU: ESP32-WROOM

Hình 4.7. Mặt trước thiết bị

Hình 4.8. Mặt sau thiết bị

Trên đây là hình ảnh thiết bị gồm mặt trước và mặt sau. Mặt trước gồm 1 giắc nguồn DC 12V, 1 cổng DB9 để kết nối với cáp OBD, 1 nút nhấn, 1 cổng micro USB để kết nối với máy tính và 1 khe để cắm thẻ SD card. Mặt sau gồm 4 cổng RJ45 để kết nối với các cảm biến và 1 cổng SMA để kết nối ăng-ten GPS.

67 Cấu tạo chi tiết bên trong thiết bị và sensor như hình 4.7 và 4.8 bên dưới.

Hình 4.9. Cấu tạo bên trong mạch Gateway

Hình 4.10. Sensor

4.2.2. Sơ đồ khối thiết bị

Ta có sơ đồ kết nối toàn bộ hệ thống như sau:

68 Theo như sơ đồ trên, thiết bị được Main MCU đóng vai trò là mạch xử lý trung tâm. Khối cảm biến trong thiết bị là module cảm biến gia tốc MPU6050. Dữ liệu từ cảm biến MPU6050 được dẫn vào kênh mở rộng của mạch mở rộng giao tiếp TCA9548A trước khi mạch mở rộng này kết nối với bus I2C của Main MCU. Thiết bị GPS với ăng-ten được kết nối với Main MCU thông qua giao tiếp UART để gửi dữ liệu về tọa độ (kinh độ, vĩ độ) và vận tốc xe trong khi di chuyển. Toàn bộ các dữ liệu đọc được trên Main MCU được lưu vào thẻ SD card thông qua mạch Arduino microSD. Ngoài ra, Main MCU còn có kết nối SPI đến CAN controller MCP2515 và được chuyển mức logic bằng CAN transceiver TJA1050.

Hình 4.12. Sơ đồ hệ thống

Sau khi thực hiện các tác vụ đọc dữ liệu từ xe, module GPS và các cảm biến gia tốc MPU6050, ESP32 sẽ đóng gói dữ liệu gửi về Server hoạt động trên EC2 qua giao thức MQTT với tần suất 100ms /1 gói tin. Server nhận được gói tin, thực hiện các tác vụ lọc và xác nhận dữ liệu. Nếu gói tin đúng cấu trúc và có nghĩa, dữ liệu sẽ được lưu vào cơ sở dữ liệu MongoDB. Về phía client, có thể sử dụng nhiều công nghệ khác nhau truy cập vào database và đưa về các thiết bị hiển thị để người dùng theo dõi.

4.2.3. Sơ đồ nguyên lý

69

Hình 4.13. Sơ đồ nguyên lý của thiết bị

4.2.4. Thiết kế vỏ hộp bằng phần mềm CATIA V5 R26 và CorelDRAW X7

Để bảo vệ cho các thiết bị và mạch điện bên trong board Gateway, nhóm em đã sử dụng phần mềm CATIA V5 R26 để thiết kế vỏ hộp cho board Gateway. Ngoài ra, nhóm còn dùng phần mềm CorelDRAW X7 để thiết kế nhãn dán có ghi thông tin của đề tài để dán lên trên vỏ hộp. Sau khi thiết kế xong thì vỏ hộp chúng em sẽ in 3D, còn nhãn dán sẽ in bằng chất liệu decal trong. Dưới đây là hình ảnh vỏ hộp khi thiết kế và thành phẩm sau khi thực hiện xong.

70

Hình 4.15. Thiết kế nhãn dán bằng phần mềm CorelDRAW X7

4.3.Các lưu đồ thuật toán của Gateway 4.3.1. Tác vụ cài đặt 4.3.1. Tác vụ cài đặt

71 ESP32 là một chip có khả năng kết nối đến mạng WiFi như một client (điện thoại, laptop,...) và trở thành một điểm truy cập cho những thiết bị khác như là một Modem. Ở sơ đồ này, ESP32 được khởi tạo như một client để kết nối vào mạng WiFi ở trạng thái client. Nếu kết nối không thành công nó sẽ kiểm tra trạng thái nút nhấn để vào chế độ cài đặt mềm và thực hiện tái kết nối lại vào mạng WiFi. Nếu quá 8 giây mà không kết nối được WiFi và không có tín hiệu vào trạng thái cài đặt mềm, ESP32 sẽ được reset bởi watchdog timer. Trường hợp nối kết thành công vào WiFi, ESP32 sẽ thực hiện việc gán giá trị trong các ô nhớ EEPROM vào các biến được khai báo cho các tác vụ đọc dữ liệu rồi tiến hành khởi tạo các đối tượng, hàm cần thiết rồi vào vòng lặp chính.

4.3.2. Vòng lặp chính

Hình 4.17. Vòng lặp chính

Khi ESP32 vào vòng lặp chính, nó sẽ thực hiện các tác vụ chính là giữ kết nối đến MQTT broker, kiểm tra trạng thái nút nhấn để thực hiện tác vụ cài đặt mềm và đọc dữ liệu. Sau đó ESP32 sẽ đóng gói và gửi dữ liệu về MQTT broker. Ngoài ra, ESP32 sẽ kiểm tra điều kiện để thực hiện OTA nếu có phiên bản phần mềm mới.

72

4.3.3. Tác vụ cài đặt mềm

Hình 4.18. Tác vụ cài đặt mềm

Tác vụ cài đặt mềm xảy ra khi có điều kiện là nút nhấn được nhấn và giữ hơn 2 giây. Trong quá trình hoạt động của ESP32 mỗi khi có sự thay đổi về SSID và password của WiFi ta phải nạp lại code nếu như không cấu hình chức năng cài đặt mềm. Ngoài ra ở đây nhóm có bổ sung thêm một vài thông số như ID cho gateway và một số thông số cài đặt cho các hàm như thời gian chờ cho bản tin CAN, số cảm biến MPU6050.

4.4. Các lưu đồ thuật toán của Server và Client 4.4.1. Nhận và lọc các gói tin MQTT 4.4.1. Nhận và lọc các gói tin MQTT

73 Sau khi khởi tạo MQTT broker, Server sẽ vào trạng thái chờ để nhận các bản tin được publish từ Gateway. Khi nhận được một gói tin nào đó đến đúng địa chỉ Ip và port, Server kiểm tra Id và password để xác thực xem đây có phải bản tin đến từ Gateway trong hệ thống. Nếu kiểm tra điều kiện đúng, Server sẽ tiếp tục kiểm tra cấu trúc gói tin để xác thực gói tin có nghĩa hay không. Nếu điều kiện sai hoặc gói tin không có nghĩa, Server sẽ bỏ qua gói tin. Sau cùng Server quay lại trạng thái chờ gói tin.

4.4.2. Web Server xử lý các tác vụ từ Web client

Hình 4.20. Web Server xử lý các tác vụ từ Web client

Sau khi khởi tạo HTTP server, Server sẽ vào trạng thái chờ để nhận các yêu cầu từ client. Khi nhận được một gói tin nào đó đến đúng địa chỉ Ip và port, Server sẽ kiểm tra Gateway ID và node ID trong phần body của HTTP request từ client. Sau đó, Server sẽ truy vấn vào cơ sở dữ liệu dựa vào Gateway ID và node ID rồi trả về cho client ở dạng JSON. Nếu không sẽ gửi về mã lỗi để gỡ lỗi.

74

4.4.3. Client gửi yêu cầu và xử lý dữ liệu trả về từ Server

Hình 4.21. Client gửi yêu cầu và xử lý dữ liệu trả về từ Server

Sau khi khởi tạo HTTP Client, client gửi request về Server và chờ đợi Server trả lời với dữ liệu cần thiết hoặc mã lỗi. Nếu Server trả lời với gói tin dữ liệu đúng nhưng định nghĩa trước với ý nghĩa của từng dữ liệu thì client sẽ render ra từng màn hình. Nếu server không trả lời hoặc trả lời gói tin không đúng định nghĩa từ trước, client sẽ không render dữ liệu ra màn hình mà thực hiện lại việc gửi yêu cầu đến Server.

4.5. Kết quả kiểm tra giao tiếp giữa hộp Gateway với ECU Toyota Yaris 2009

Sau khi thực hiện đấu nối thiết bị với mô hình ECU Toyota Yaris 2009 nhóm đã kết nối thành công với ECU và đọc được các giá trị dữ liệu OBD, tín hiệu GPS cùng các dữ liệu cảm biến. Dữ liệu được gửi về Server và được lưu vào cơ sở dữ liệu.

75

Hình 4.22. Dữ liệu được gửi về Server và lưu vào cơ sở dữ liệu

Hình 4.23. Các gói tin CAN thu được

76

CHƯƠNG 5. QUY TRÌNH VÀ KẾT QUẢ THỰC NGHIỆM 5.1. Thiết lập quy trình kiểm thử hoạt động hệ thống

Các thiết bị cần thiết cho việc thử nghiệm hoạt động của hệ thống trên xe gồm:

 Hộp Gateway

 4 cảm biến gia tốc

 Ăng-ten GPS

 Các loại dây cáp, gồm: 1 cáp OBD2, 4 cáp RJ45 và 1 cáp nạp code

Hình 5.1. Các thiết bị của hệ thống

Sau khi chuẩn bị đầy đủ các thiết bị cần thiết, ta tiến hành bố trí các thiết bị lên xe. Hộp thiết bị được đặt ở dưới vị trí ghế ngồi của tài xế và được kết nối với xe thông qua cổng OBD2 ở dưới vô lăng của xe bằng dây cáp OBD2. 4 cảm biến gia tốc được đặt ở vị trí 4 góc của xe và được cố định trên sàn xe bằng băng dính. 4 cảm biến này được kết nối với hộp thiết bị bằng dây cáp chuẩn RJ45.

77

Hình 5.2. Hộp thiết bị và 2 cảm biến gia tốc đặt ở phía trước xe

Hình 5.3. Hai cảm biến gia tốc được đặt ở phía sau xe

Sau khi đã bố trí hoàn chỉnh các thiết bị của hệ thống lên xe, ta tiến hành kích hoạt server trên EC2.

78

Hình 5.4. Kích hoạt server trên EC2

Hình 5.5. Cấu hình Server trên AWS EC2

Sau khi kích hoạt server trên EC2, ta bắt đầu quá trình thử nghiệm. Trong quá trình thử nghiệm, tài xế sẽ lái xe trong phạm vi khuôn viên Trường Đại học Sư phạm Kỹ thuật TPHCM theo các trường hợp cụ thể, với tốc độ trung bình <30 km/h. Người quản lý sẽ ngồi tại vị trí xưởng điện – điện tử ô tô để theo dõi tình trạng xe thông qua màn hình Web dashboard. Các trường hợp di chuyển của xe trong bài thử nghiệm này bao gồm:

 Xe đang đứng yên và động cơ hoạt động ở tốc độ cầm chừng

 Xe tăng tốc và giảm tốc đột ngột rồi dừng lại

 Xe lên và xuống dốc

 Xe quay vòng trái, phải

79

Hình 5.6. Tài xế lái xe và người quản lý ngồi tại xưởng điện – điện tử ô tô

5.2. Kết quả chạy thực nghiệm trên xe Vios 2009 5.2.1. Dữ liệu thu được trên giao diện máy tính 5.2.1. Dữ liệu thu được trên giao diện máy tính

Hình 5.7. Tab Dashboard trên màn hình máy tính

Một phần của tài liệu Nghiên cứu, chế tạo hệ thống giám sát và thu thập dữ liệu trên ô tô đồ án tốt nghiệp ngành công nghệ kỹ thuật ô tô (Trang 69)

Tải bản đầy đủ (PDF)

(97 trang)