Các nhà sản xuất xe không bắt buộc phải hỗ trợ tất cả các dịch vụ. Mỗi nhà sản xuất có thể xác định các dịch vụ bổ sung ở trên # 9 (ví dụ: dịch vụ 22 theo định nghĩa của SAE J2190 cho Ford / GM, dịch vụ 21 cho Toyota) cho các thơng tin khác, ví dụ: điện áp của Accu trong xe điện hybrid (HEV).
Bài viết này chủ yếu tập trung vào việc lấy thông tin trên xe. Nên những thông tin cần thiết được lấy chỉ nằm ở chế độ 1 nên nhóm sẽ tập trung khai thái ở chế độ này. Cụ thể ở chế này khi gửi yêu cầu cho PID này trả về 4 byte dữ liệu (A, B, C và D)
A B A7 A6 A5 A4 A3 A2 A1 A0 B7 B6 B5 B4 B3 B2 B1 B0 C D C7 C6 C5 C4 C3 C2 C1 C0 D7 D6 D5 D4 D3 D2 D1 D0 Bảng 2.4: Bảng giá trị trả về PIDs (hex) PID (Dec) Số byte trả về Mô tả Giá trị nhỏ nhất Giá trị lớn nhất Đơn vị Công thức 00 0 4 PID được hỗ trợ [01 - 20] Bit được mã hóa 01 1 4 Theo dõi trạng thái DTC khi bị xóa. Bao gồm Bit được mã hóa
26 trạng thái đèn
báo lỗi MIL và số lượng mã DTCs 02 2 2 Đóng băng DTC 03 3 2 Trạng thái hệ thống nhiên liệu Bit được mã hóa 04 4 1 Tính tốn tải động cơ 0 100 % 100 255A 05 5 1 Nhiệt độ nước làm mát động cơ -40 215 C A-40 0A 10 1 Áp suất nhiên liệu (đồng hồ áp suất) 0 765 kPa 3A 0B 11 1 Áp suất tuyệt đối trên đường ống nạp 0 255 kPa A 0C 12 2 Tốc độ động cơ 0 16,383.75 rpm 256 4 A+B 0D 13 1 Tốc độ xe 0 255 km/h A
0E 14 1 Van biến thiên -64 63.5
Độ (Trước TDC) 64 2 A− 0F 15 1 Nhiệt độ khí nạp -40 215 C A−40
27 10 16 2 Khối lượng khơng khí nạp (MAF) 0 655.35 grams/sec 256 100 A+B 11 17 1 Vị trí bướm ga 0 100 % 100 255A Bảng 2.5: Các mã PIDs chế độ 1
Do yêu cầu của đề tài nên nhóm sẽ lấy 1 số mã PIDs.
PID Số Byte Mô tả Đơn vị Công thức
0D 1 Tốc độ xe Km/h A
0C 2 Tốc độ động cơ rpm ((A*256)+B)/4
11 1 Vị trí bướm ga % A*100/255
04 1 Tính tốn tải động cơ % A*100/255
Bảng 2.6: Một số mã PIDs cho đề tài
Honda City sử dụng 2 backbones CAN riêng biệt. F-CAN bus xử lý các thành phần quan trọng của xe, chẳng hạn như động cơ, hệ thống truyền động, hệ thống lái, phanh và các chức năng điều khiển xe cơ bản khác. Đồng hồ Taplo cũng có thể được tìm thấy F-CAN bus, vì nó dựa trên dữ liệu được gửi từ một số thành phần quan trọng nhất của xe để cung cấp các chỉ số chính xác cho người lái xe. F-CAN của sử dụng một cặp dây (CAN_H và CAN_L) và hoạt động ở tốc độ 500Kbps. Mặt khác, bus B-CAN chỉ sử dụng một dây duy nhất (SW-CAN) và hoạt động ở mức 33,33Kbps thấp hơn nhiều. BCAN bus xử lý các chức năng ít quan trọng hơn như radio của xe, cửa sổ, khóa cửa, cài đặt tiện nghi, v.v.
Mặc dù nhiều xe ngày nay được thiết kế mà không áp dụng các nguyên tắc bảo mật cơ bản, nhưng không phải tất cả các xe đều thiếu phân đoạn mạng CAN bus. Một số xe đặt cổng chẩn đoán OBD-II cho một số CAN riêng biệt cho các mô-đun điều khiển xe quan trọng hơn. Do những hạn chế của cổng OBD-II trên một số phương tiện, có thể cần phải tìm một điểm vào thay thế cho CAN. Honda Civic 2011 có nhiều địa điểm mà F-CANbus của nó có thể dễ dàng tiếp cận.
28
Tín hiệu tốc độ động cơ rpm
ID RTR D0 D1 D2 D3 D4 D5 D6
0x1DC 7 0x02 A B 0x00 0x00 0x00 0x00
Bảng 2.7: Mã PID của tốc độ động cơ
Trong điều kiện bình thường, Module điều khiển hệ thống truyền lực (PCM) của động cơ gửi bản tin 1DC trên mạng CAN 20 mili giây một lần hoặc 50 lần mỗi giây. ECU điều khiển của cụm đồng hồ đo trên taplo liên tục nhận trên mạng CAN để tìm và xử lí các bản tin này. Mỗi khi nhận được bản tin có ID là 1DC, vị trí kim trên đồng hồ đo tốc độ sẽ được cập nhật tương ứng.
Trên nhiều xe Honda khác, ID thông báo CAN của 1DC được sử dụng riêng cho taplo RPM của động cơ trên mạng CAN bus. Trong trường hợp này, ID 1DC có độ dài 7 byte. Trong quá trình nghiên cứu này, người ta thấy rằng byte đầu tiên không bao giờ thay đổi từ giá trị 02. Tuy nhiên, hai byte tiếp theo biểu diễn theo hệ thập lục phân RPM thực tế của động cơ sau khi được mã hóa bằng tḥt tốn cơ bản. Sau một số thử nghiệm, ta nhận thấy rằng cơng thức tính tốn được sử dụng bên dưới để tính RPM động cơ gần đúng.
Hình 2.15: Chuyển mã HEX sang tốc độ động cơ
Ví dụ, 1 bản tin với ID là 1DC và các Byte Data là 02 02 EC 00 00 00 00. Theo công thức ta lấy 2 byte D1 và D2, 02EC (mã HEX) sau đó ta chuyển sang mã DEC thành 748 rpm.
Tốc độ xe
Kỹ thuật được sử dụng để điều khiển đồng hồ tốc độ của xe tương tự như kỹ thuật được sử dụng để điều khiển đồng hồ đo tốc độ xe. Tuy nhiên, dữ liệu tốc độ xe sử dụng ID CAN khác và cấu trúc thông báo phức tạp hơn.
29
ID RTR D0 D1 D2 D3 D4 D5 D6 D7
0x158 7 0x02 A B C D E F G
Bảng 2.8: Mã PID của tốc độ xe
Không giống như các bản tin 1DC cho RPM, có độ dài 4 byte, bản tin 158 CAN thơng thường có độ dài 8 byte. Ngồi ra, trong khi bản tin 1DC RPM được gửi mỗi 20ms, bản tin 158 được phát sau mỗi 10ms hoặc 100 lần mỗi giây.
Thơng điệp CAN có thể được chia thành năm phần riêng biệt như sau:
Byte D0 & D1: Dữ liệu tốc độ sử dụng cho các mục đích khác ngồi đồng hồ tốc độ.
Byte D2 & D3: Dữ liệu RPM của động cơ cho các mục đích khác ngồi đồng hồ tốc độ động cơ.
Byte D4 & D5: Dữ liệu tốc độ để hiển thị trên đồng hồ tốc độ.
Byte D6: Tín hiệu đến đồng hồ đo quãng đường tăng dần.
Byte D7: Tín hiệu cho biết xe đang chuyển động.
Hình 2.16: Chuyển mã HEX sang tốc độ xe
Ví dụ, 1 bản tin với ID là 158 và các Byte Data là 06 0C 06 33 06 1A 0 236. Theo công thức ta lấy 2 byte D4 và D5, 061A (mã HEX) sau đó ta chuyển sang mã DEC thành 1562 . Sau đó chia cho 100 ta được 15,62. Làm tròn 15,5 km/h.
30
2.4. Giao tiếp dữ liệu thơng qua mạng LAN.
2.4.1. Tìm hiểu về Web Server.
Hình 2.17: Cách thức hoạt động Web Server
Webserver được biết đến là máy chủ dùng để xử lý các truy cập được gửi từ máy khách thông qua giao thức HTTP. Tất cả webserver đều có địa chỉ IP address hoặc có tên Domain. Ví dụ (hình 2.17), khi gõ https://youtube.com và gõ enter tức là bạn đang gửi yêu cầu đến máy chủ có tên domain là www.youtube.com. Khi đó máy chủ web sẽ tìm đến website có tên tương ứng rồi gửi về trình duyệt của bạn.
2.4.2. NodeMCU Esp8266.
Nhóm chúng em sử dụng chip nodeMCU esp8266 ở chế độ Station đóng vai trị là một Server. Khi nodeMCU kết nối với một mạng Wifi thì Router của Wifi đó sẽ cấp cho chip nodeMCU một dịa chỉ IP (IP address) và đây là địa chỉ của webserver (hình 2.18). Ví dụ: Mạng wifi cấp cho nodeMCU địa chỉ IP là 192.168.1.10 là địa chỉ server và những thiết bị khác như điện thoại, laptop đang kết nối mạng wifi đó muốn truy cập vào Server nodeMCU là Client thì truy cập vào địa chỉ IP 192.168.1.10.
31
Hình 2.18: Chế độ wifi Station của nodeMCU Server [5]
2.4.3. Giao thức HTTP.
Một Client thực hiện yêu cầu HTTP về thông tin bằng cách gửi địa chỉ URL đến Server gọi là HTTP request. Server gọi một hàm trả lại URL và trả lời Client bằng mã HTML đối với thông tin được cung cấp bởi hàm gọi là HTTP response. Ví dụ, dung một laptop truy cập vào địa chỉ IP của Server là 192.168.1.11/index (hình 2.19) để hiển thị các thông tin về xe trên web page. Laptop là một Client, nodeMCU là một Server. Client gửi một HTTP request đến server chứa đường dẫn yêu cầu (path name) là /index. Server sẽ nhận và xử lý request từ Client sau đó đóng gói dữ liệu tương ứng và gửi một HTTP response về cho Client. Dữ liệu trả về sẽ là một file HTML chứa các loại thông tin như tốc độ động cơ, tốc độ xe,…
32
Hình 2.19: Client thực hiện HTTP request và hiển thị thông tin trên Web Page
2.5. Các mơ hình tham khảo.
2.5.1. Các mơ hình thương mại nhận dạng hành vi người lái.
33 [8] TREK-132 là mô-đun hệ thống hỗ trợ người lái tiên tiến đa chức năng (ADAS) cho phép quản lý, giám sát hành vi lái xe để tăng cường an toàn khi lái xe. Được trang bị cảm biến camera CMOS, mô-đun nhận dạng hành vi người lái với thuật toán nhúng hỗ trợ phát hiện dấu hiệu buồn ngủ bằng cách theo dõi trình điều khiển chuyển động mắt và phát hiện mất tập trung bằng cách theo dõi trình điều khiển sử dụng điện thoại di động, sử dụng thực phẩm và nhìn sai hướng. Nếu các ngưỡng rủi ro được cấu hình sẵn được vượt qua, mơ-đun ADAS sẽ truyền dữ liệu đến thiết bị đầu cuối máy tính, sau đó so sánh các dữ liệu liên quan, như tốc độ xe và tín hiệu chỉ báo phải / trái, để xác định xem có nên phát ra cảnh báo bằng trình điều khiển âm thanh và hình ảnh hay khơng. Mơ-đun này hỗ trợ đầu vào nguồn điện trên xe 12V và 24V và được chứng nhận tiêu chuẩn MIL-STD-810G cho khả năng chống sốc và rung. Hơn nữa, việc bao gồm một bộ cơng cụ phát triển phần mềm (SDK) có liên quan cung cấp cho các nhà tích hợp hệ thống một cơng cụ giá trị gia tăng để quản lý tùy chỉnh.
Tính năng nổi bật TREK-132.
Thuật toán nhận dạng hành vi của tài xế có thể phát hiện người lái xe buồn ngủ, mất tập trung, sử dụng điện thoại, tiêu thụ thực phẩm và thuốc lá hoặc thiếu chú ý đến đường Giám sát dữ liệu sự kiện và đầu ra video được đồng bộ hóa đảm bảo quản lý an toàn . Giao tiếp RS-232 tiêu chuẩn cho phép dễ dàng cài đặt và tùy chỉnh ADAS Các điều kiện phát hiện được hỗ trợ: môi trường ban đêm / ánh sáng yếu, đeo kính râm / đeo kính, đặc điểm người lái đa dạng
Chứng nhận MIL-STD-810G và EN60721 (5M3) cho khả năng chống sốc và rung
2.5.2. Các đồ án trước.
Trước khi nhóm tiến hành nghiên cứu đồ án đã có một số đồ án liên quan đến vấn đề nhận dạng phân tích lái xe. Cụ thể đồ án “Phân tích nhận dạng hành vi tài xế và cảnh báo bất thường” của sinh viên Lê Anh Tuấn đến từ trường Đại học Sư Phạm Kỹ Thuật Thành Phố Hồ Chí Minh do Thạc sĩ Nguyễn Trọng Thức hướng dẫn. Nhận thấy cịn vài thiếu xót trong việc phân tích các hành vi lái xe nhóm đã nghiên cứu cải thiệt và phát triển hơn bằng cách thu thập nhiều thông tin hơn và nhận dạng được nhiều hành vi lái xe hơn.
34
CHƯƠNG 3: CƠ SỞ LÝ THUYẾT LINH KIỆN ĐIỆN TỬ 3.1. Các Module và linh kiện điện tử. 3.1. Các Module và linh kiện điện tử.
3.1.1. Module nodeMCU ESP8266.
Kit RF thu phát Wifi ESP8266 NodeMCU Lua CP2102 (hình 3.1) là kit phát triển dựa trên nền chip Wifi SoC ESP8266 với thiết kế dễ sử dụng và đặc biệt là có thể sử dụng trực tiếp trình biên dịch của Arduino để lập trình và nạp code, điều này khiến việc sử dụng và lập trình các ứng dụng trên ESP8266 trở nên rất đơn giản. Kit RF thu phát Wifi ESP8266 NodeMCU Lua CP2102 được dùng cho các ứng dụng cần kết nối, thu thập dữ liệu và điều khiển qua sóng Wifi, đặc biệt là các ứng dụng liên quan đến IoT.
35
Chân Pin Tên Mô tả
Nguồn Micro-USB, 3.3V, GND, Vin Micro-USB: NodeMCU có thể
được cấp nguồn qua cổng USB
3.3V: 3.3V quy định có thể
được cung cấp cho chân này để cấp nguồn cho bo mạch
GND: Chân Ground (Mass)
Vin: Nguồn cung cấp bên ngoài
Chân điều khiển EN, RST Chân và nút điều khiển trên vi điều khiển
Chân Analog A0 Sử dụng để đo tín hiệu Analog
trong khoảng 0-3.3 V
Các chân GPIO GPIO1 to GPIO16 NodeMCU có 16 chân hỗ trợ input-output trên board
Các chân SPI SD1, CMD, SD0, CLK NodeMCU có bốn chân có sẵn cho giao tiếp SPI.
Các chân UART TXD0, RXD0, TXD2, RXD2 NodeMCU 2 chân giao tiếp UART, UART0 (RXD0 & TXD0) and UART1 (RXD1 & TXD1). UART1 được sử dụng để upload chương trình
firmware/program.
36
Thơng số kỹ thuật:
IC chính: ESP8266
Phiên bản firmware: NodeMCU Lua Chip nạp và giao tiếp UART: CP2102.
GPIO tương thích hồn tồn với firmware Node MCU. Cấp nguồn: 5VDC MicroUSB hoặc Vin.
GIPO giao tiếp mức 3.3VDC
Tích hợp Led báo trạng thái, nút Reset, Flash. Tương thích hồn tồn với trình biên dịch Arduino. Kích thước: 25 x 50 mm
Hình 3.2: Chi tiết sơ đồ chân nodeMCU [6]
Vì quá nhiều ưu điểm của ESP8266 đặc biệt có chức năng thu phát wifi cho các dự án nhúng lên web server và IOT nên nhóm quyết định sử dụng.
37
3.1.2. Module MCP2515.
Module CAN-BUS dùng chip CAN Controller MCP2515 và CAN Transceiver TJA1040 là module mở rộng ngoại vi CAN cho vi điều khiển khơng tích hợp chuẩn giao tiếp hiện đại này. MCP2515 sử dụng giao tiếp SPI nên bất kỳ một loại vi điều khiển nào cũng có thể giao tiếp với nó thơng qua ngoại vi SPI có sẵn hoặc thậm chí là dùng các chân IO thơng thường cũng được.
Hình 3.3: Module MCP2515
CAN-BUS là một trong số những chuẩn giao tiếp trên các thiết bị hiện đại ngày nay như hệ thống điện trên Ơ tơ OBD II hay hệ thống điện trong nhà máy công nghiệp, máy phát điện, tàu thủy,... Các vi điều khiển đời mới gần như tích hợp ngoại vi giao tiếp CAN là bắt buộc, như STM32, LPC, PIC32, ... thậm chí đến ESP32 cũng hỗ trợ CAN [7].
Tuy nhiên, cũng chính vì thế mà các dòng vi điều khiển cũ như 8051 hay PIC, AVR khơng được tích hợp sẵn (PIC thì các dịng từ PIC18F trở lên mới hỗ trợ, giá thành cũng khá cao). Module MCP2515 là CAN controller do MicroChip sản xuất nhằm mục đích bổ sung tính năng này cho bất cứ vi điều khiển nào. Chỉ cần dùng 3 đến 5 chân IO hoặc ngoại vi SPI có sẵn trên chip là chúng ta có thể biết những dịng chip này có khả năng làm việc với mạng CAN-BUS một cách trơn tru.
38 Module sử dụng chip MCP2551 làm CAN Controller và TJA1040 làm CAN Transceiver nên các thông số kỹ thuật là thông số của hai chip này ( xem datasheet bên dưới), ngoài ra Module cịn tích hợp các Jump J1 J2, trong đó - J1 là jump chọn chế độ tốc độ giao tiếp, nếu Jump 1 được nối thì chip TJA1040 cho phép giao tiếp trên mạng CAN- BUS với tốc độ cao nhất có thể, lên tới 1M. Nếu Jump 1 khơng được kết nối thì TJA1040 giao tiếp với BUS CAN tốc độ thấp, < 10 kbps, ở chế độ này cho phép khoảng cách truyền xa hơn và nối được nhiều node mạng CAN trên bus vật lý hơn.- J2 là jump nối điện trở liên kết. Mỗi BUS CAN có 2 điện trở 120 Ohm ở hai đầu bus. Nếu J2 nối thì module sẽ là nốt mạng đầu hoặc node mạng cuối. J2 không nối khi sử dụng ở module giao tiếp với mạng CAN BUS đã có sẵn điện trở ở 2 đầu.
39
3.1.3. Module MPU6050.
Hình 3.5: Module MPU6050
MPU-6050 là cảm biến của hang InvenSense, gồm có 3 trục con quay hồi chuyển (gyroscope), 3 trục gia tốc (accelerometer) và một Digital Motion Processor (DMP) được thiết