3.4. Light-Speaker-GPS Node
3.4.1. Sơ đồ nguyên lý
LightControl
Node Light-Speaker-GPS có nhiệm vụ điều khiển hệ thống đèn và còi trên xe.
Khi nhận được lênh bật đèn từ mạng CAN, STM32 sẽ bật tín hiệu điều khiển IC 555 tạo xung nhấp nháy hệ thống đèn xi nhan xung quanh xe. Ngoài ra Node này còn có nhiệm vu doc dir liệu từ GPS và gửi vào trong mạng CAN dé thực hiện các tính năng
Hình 3.6 Sơ đồ nguyên lý Node Light-Speaker-GPS
định vi cua xe.
3.4.2. Sơ đồ chương trình Light-Speaker-GPS Node
Co)
————
Khởi tạo ngoại vi
—————"
Khởi tạo RTOS
——Ẻ——
Khởi tạo hệ thông.
¥ ¥ Ỷ ¥ ¥
Thread Blinker Ma Voec Rowe [Thread CAN Receiver [Thread GPS Recevier
[| [| Publisher ủ Publisher [| [|
Hình 3.7 Sơ đồ chương trình của LightSpeakerGPS Node
Node Light-Speaker-GPS bao gồm 5 Threads chính được miêu tả trong Bảng 3.3. Trong đó 2 Threads GPS Receiver, và GPS Publisher trao đổi dữ liệu với nhau qua
phương thức Shared Memory được bảo vệ bởi Mutex.
Bảng 3.3 Danh sách các Threads trong node Light-Speaker-GPS
Tần số hoạt động
Tên Threads Chức năng Độ ưu tiên
(Hz)
Nhấp nháy LED. Báo cho người Blinker dùng biết trạng thái của hệ thống | BelowNormal 2
đang hoạt động.
GPS Gửi các dữ liệu GPS vào mạng
Normal 2 10 Publisher | CAN
Đọc dữ liệu từ cảm biến đo nguồn
Power ,
và gửi đữ liệu đên Master Node Normal 50
Publisher
thông qua mạng CAN
Lắng nghe dữ liệu trên đườn;
CAN ẽ 8 '
l truyện. Va xử lý dữ liệu khi nhận High Receiver
được
GPS Lắng nghe và xử lý các dé liệu
Normal 3 Receiver GPS từ module GPS
3.5. Engine Node
3.5.1. Sơ đồ nguyên lý
Engine Control Signal
Engine Node có nhiệm vu diéu khién hé thống động cơ tốc độ trên xe. Khi có tín hiệu điều khiển, vi điều khiển STM32 tiến hành điều khiển đóng ngắt các Relay tín hiệu
mô phỏng các tín hiệu khi ta nhấn ga, đạp phanh trên xe tự hành. Ngoài ra, Engine Node còn đọc tín hiệu từ Encoder phản hồi về tốc độ xoay, vị trí của bánh xe. Từ đó
Hình 3.8 Sơ đồ nguyên lý Engine Node
nhóm có thé lắp bộ điều khiển PID và điều khiển tốc độ, vị trí của xe chính xác hơn. Ngoài ra, Engine Node còn được trang bị thêm cảm biến BNO055 giúp ta biết được hướng di chuyển hiện tại của xe cũng như gia tốc và vận tốc góc hiện tại của xe.
3.5.2. Sơ đồ khối của Engine Node
Bắt dầu
J
KhôtsofT0S
J
Kndi tạo hệ thống.
Hình 3.9 Sơ đồ khói Engine Node Khối Engine Node bao gồm 5 Threads chính với các chức năng như
Bảng 3.4 Danh sách các Thread Engine Node
: Tần số hoạt động
Tên Threads Chức năng Độ ưu tiên
(Hz)
Nhấp nháy LED. Báo cho người
- . , BelowNorm Blinker dung biết trạng thái của hệ thông 1 2
al
đang hoạt động.
IMU Reader | Gửi các dữ liệu GPS vào mạng
Normal 2 50 and Publisher | CAN
Đọc dữ liệu từ cảm bién do nguồn
Power R
và gửi dit liệu đên Master Node Normal 20
Publisher
thông qua mạng CAN
Lắng nghe dé liệu trên đường CAN Receiver | truyền. Và xử lý dữ liệu khi nhận High
được
Bộ điêu khiên PID điêu khiên tốc Engine ,
độ của động cơ va gửi dit liệu toc |_ RealTime 50 Controller
độ vào mạng CAN.
3.6. Steering Node
3.6.1. Sơ đồ nguyên lý
Hình 3.10 Sơ đồ nguyên lý Steering Node Steering Node đóng vai trò điều khiển hệ thống đánh lái của xe. Vi điều khiển STM322 sẽ tiến hành giao tiếp với bộ điều khiển EZI Servo Plus R để điều khiển động
cơ đánh lái trên xe qua chuẩn giao tiếp RS485. Ngoài ra Steering Node sẽ có thêm một cảm biến đo nguồn nữa so với các mạch khác. Mạch này đóng vai trò đo năng lượng tiêu thụ của bộ điều khiển hệ thống đánh lái EZI Servo Plus R.
3.6.2. Sơ đồ khối của Steering Node
G
Ỷ
Khởi tao ngoại vi
Khởi tạo RTOS
Ỷ
Khởi tao hệ thống
+ Ý ¥
‘Thread Ezi Power Thread main Power Thread EZI Status
I ‘Thread Blinker [" Publisher ủ Publisher a CAN Receive [" Monitor
Hình 3.11 Sơ đồ khói Steering Node
Bảng 3.5 Chức năng các Thread trong Steering Node
. Tần số hoạt
Tén Threads Chức năng Độ ưu tiên
động (Hz)
Nhấp nháy LED. Báo cho người Blinker dùng biết trạng thái của hệ thống | BelowNormal 2
đang hoạt động.
Đọc dữ liệu từ cảm biến đo
Ezi Power năng lượng tiêu thụ của mạch
. ` . , Normal 2 20
Publisher điêu khiên đánh lái và gửi dén
mạng CAN
Đọc đữ liệu từ cảm biên đo năng Main Power
lượng tiêu thụ của mạch và gửi Normal 20 Publisher A
dén mang CAN.
Lắng nghe dé liệu trên đường CAN Receiver | truyền. Và xử lý dữ liệu khi nhận High
được
EZI Status Dùng dé đọc trạng thái hiện tại
` l Normal 3 50
Monitor của bộ điêu khién EZI
3.7. Master Node
3.7.1. Sơ đồ nguyên lý
nate
Voltage Regulator Power Measure Power Input
Power Supply
SD Card Reader LED And Button Debug
me Master node rev: 10 ||
€empany: CEEC Company [Sheet 1⁄2
Dete: 2023-03-09 Drawn By: Truyền LêHữU
+ T
Hình 3.12 Sơ đồ nguyên lý Master Node Master Node là node gateway đề trung chuyền dữ liệu giữa các node ở lớp High Level và lớp Low Level. Các dữ liệu gửi đến Master Node sẽ được gửi đến Server để
nhiệm vụ lắng nghe tất cả dữ liệu trên đường truyền và tiến hành gửi lên server để lưu trữ. Nếu không có tín hiệu mạng những dữ liệu đó sẽ được lưu tạm trên bộ nhớ
SD Card và được gửi đến Server ngay khi có mạng.
3.7.2. Sơ đồ khối Master Node
Bắt đầu
Khởi tạo ngoại vĩ
i
Khởi tạo RTOS
i
Khởi tạo hệ thống
Ỷ Ỷ Ỷ Ỷ
Thread MOTT Thread main Power
Ũ ‘Thread Blinker Ũ 9%, Ũ Norte [E CAN Receiver]
Hinh 3.13 So dé khdi Master Node Master Node sẽ bao gồm 4 Threads chính được miêu ta trong Bảng 3.6
Bang 3.6 Chức năng các Thread trong Master Node
: Tần số hoạt
Tén Threads Chức nang Độ ưu tiên
động (Hz)
Nhấp nháy LED. Báo cho người Blinker dùng biết trạng thái của hệ thống | BelowNormal 2
đang hoạt động.
MQTT Thread dùng dé đọc và xử lý
l Normal 2 50 Receiver dữ liệu nhận được từ MQTT
Đọc dữ liệu từ cảm biến đo năng
Main Power
lượng tiêu thụ của mạch và gửi Normal 50
Publisher
lên MQTT
Dùng đề lắng nghe đữ liệu trên
CAN Receiver | CAN bus và gửi các dữ liệu đó High
dén Server
3.8. Giao tiếp các Node trên CAN Bus
3.8.1. Mô hình mạng
Trong dé tài này nhóm lựa chọn xây dựng đơn giản 4 tang mạng như Hình 3. 14.
Mô hình nay dựa trên mô hình mang OSI (Open Systems Interconnection) được đặt
ra dé làm tiêu chuẩn chung cho đê việc trao đôi thông tin các Node.
Application Layer Software
NetWork Layer
Datalink Layer Hardware
Physical Layer
Hình 3.14 Bốn tang mang CAN đê giao tiếp
3.8.2. Physical Layer
Lớp vật lý điều khiển các tín hiệu trên đường truyền. Nhóm đã dựa trên chuẩn ISO11898-2/5 [15] để xây dựng các kết nối vật lý trên mạng CAN. Các ngoại vi phần cứng trên các vi điều khiển STM32 và ESP32 kết hợp với CAN transceiver đã đáp ứng đủ các yêu cầu ở lớp vật lý.
3.8.3. DataLink Layer
Lớp liên kết đữ liệu: ở lớp này nhóm hiện thực theo chuẩn ISO11898-1 [16]. Bộ điều khiển CAN được tích hợp trên STM32 và ESP32 có thể đáp ứng yêu cầu lớp DataLink nên ta không cần phải can thiệp vào.
Bên cạnh đó mỗi Frame sẽ có độ dài 8 bytes. Những Bytes không sử dụng trong
Frame sẽ được chèn thêm dữ liệu 0x55 để giúp hệ thống giảm thời gian xử lý các dữ
liệu vô nghĩa.
3.8.4. Network Layer
Mặc định một gói tin của CAN standard chỉ có thé truyền 8 bytes không đủ đáp ứng truyền dữ liệu có kích thước lớn. Do đó, nhóm đề xuất một cơ chế tách và ghép các frame lại với nhau. Ngoài ra nhóm xây dựng cơ chế định địa chỉ các Node nhằm
tạo độ ưu tiên cho các dữ liệu trong mạng.
Trong một gói tin của CAN Standard sẽ có 11 bit địa chỉ. Dựa vào cơ chế phân
xử của CAN và mức độ ưu tiên của các loại gói tin ta chia 11bit địa chỉ đó thành 3
phần và ý nghĩa, định dạng của mỗi phần được trình bày trong các bảng dữ liệu: Bảng
3.7, Bảng 3.8, Bảng 3.9, Bảng 3.10
Bang 3.7 Bảng phân bồ ID
Tên ID Vị trí bit Message Type Bit [10..7]
Target Node Bit [6..3]
Frame Type Bit [2..0]
Bang 3.8 Bang dinh nghia Message Type
Message Type Y nghia
0000 Broad Cast
0001 Command Frame
0010 ACK Command Frame
0011 Remote/Notice frame
0100 Data Frame 0101-0111 Chưa sử dung
1000 Test BroadCast
1001 Test Command Frame
1010 Test ACK Command Frame
1011 Test Remote/Notice frame
1100 Test Data Frame 1101-1111 Chua sử dung
Trong bang Message Type Bang 3.8 ta chia 2 loai la Message Type binh thuong
va Message Type Test. Cac Message Type Test được định nghĩa với mục dich thử
nghiệm các tinh năng mà không anh hưởng hệ thống chính đang hoạt động. Do đó các Message Type Test sẽ có độ ưu tiên thấp hơn. Định nghĩa các Message Type như
sau.
- BroadCast: Là gói tin sẽ được gửi cho toàn bộ các Node trên xe.
- Command Frame: Là các gói tin với các lệnh điều khiển xe.
- ACK Command Frame: Là gói tin phản hồi của Command Frame được
xây dựng với mục đích thông báo đã nhận lệnh thành công.
- Remote Frame: Là gói tin yêu cầu người nhận gửi lại phản hồi một giá trị
được chỉ định.
- Data Frame: Là các gói tin dữ liệu được gửi định kỳ vào mạng CAN.
Bảng 3.9 Bảng định nghĩa Target Node
Target Node Y nghia
0000 All Node
0001 Engine Control Node
0010 Light-Speaker-GPS Node
0011 Master Node
0100 Steering Control Node
0101 Obstacle Sensor Node Engine
0110 Power Management Node
0111-1111 Khong str dung
Bang 3.10 Bang dinh nghia Frame Type
ID Frame Type
000 End Frame
001 First frame
010 Second frame
011 Third frame
100 Fourth frame
101 Fifth frame
110 Six frame
111 Seven frame
Bảng 3.11 Định dạng trường Data Byte 0 1 21314|5|16|7 First Frame | SenderID | DataLength Data
Other Frame | SenderID Data
End Frame SenderID Data + CRC
Dựa vào định dang trên ta có thé gui dữ liệu một gói tin có kích thước đến 54 bytes.
Phù hợp đại đa số các yêu cầu dữ liệu điều khién trên xe tự hành.
3.8.5. Application Layer
Ở Application Layer nhóm đã lựa chọn định dạng dữ liệu chung như Bảng 3.12 để giao tiếp giữa các Node.
Bảng 3.12 Định dạng giao tiếp Appilcation Layer
Định dạng #<ID>=<Value1>;...;<ValueN>\r\n
Trong đó nhóm đã quy định được các gói tin như Bảng 3.13 dé giao tiếp giữa các
Node trong mạng.
Bảng 3.13 Bảng định dạng gói tin
ID Name Frame | Kiểu dữ liệu Format
Type
1 SetEngine | Comma float #1=<Velocity>\r\n
Speed nd
2 Set Steer Comma float #2=<Angle>\r\n
Angle nd
3 Set Light Comma intingintint | #3=<Left>;<Right>;<Front>;<Stop>\r
nd \n
4 SetBuzzer | Comma int #4=<State>\n
nd
5 | Enable PID | Comma int #5=<State>\r\n
nd
10 | Car Velocity Data float #10=<Velocity>\r\n
11 GPS Data Data float;float #11=<Long>;<Lat>\r\n
12 Power Data sữ7;intingint | #12=<Name>;<Power>;<Voltage>;<
Measure Current>\r\n
13 Distance Data int;float #13=<index>;<isIRDetect>;<laserRan
Sensor ging>\r\n
14 IMU Euler Data float;float;float | #14=<Heading>;<Roll>;<Pitch>\r\n
Data
15 | IMU Accel Data float;float;float | #15=<AccX>;<AccY>;<AccZ>\r\n
Data
16 IMU Gyro Data float;float;float | #16=<GyroX>;<GyroY>;<GyroZ>\r\
Data n
3.9. Giao tiếp giữa High Level va Low Level.
=ơ ome
Other Embedded Computer
ESP32
=
E
MOTT broker o2 Server a
vorr| |xssse
TT chert
Isssteesex
Ibsswuese.
Bssesae
Hình 3.15 Mô hình giao tiếp giữa lớp High Level và lớp Low Level.
Sau khi ESP32 nhận được dữ liệu trong mạng CAN, vi điều khiển sẽ gửi những
dữ liệu đó đến những Topic đã được chỉ định. Những dữ liệu này sẽ được lưu trên cơ
sở dữ liệu của Server hiện thực bằng MongoDB cũng như được gửi đến giao diện Web thông qua phương thức SocketlO. Ngoài ra khi ESP32 nhận các dữ liệu điều khiển từ MQTT từ các topic điều khiển, ESP32 sẽ tiến hành xử lý, phân loại các dữ liệu đó và đóng gói lại gửi đến các Node phù hợp.