36
3. Các hệ thốngphần cứng khác.
Ngoài 2 thành phần chính là các module truyền nhận dữ liệu và giải mã tín hiệu (GPS và GSM), cịn có một số các module quan trọng khác trong thiết bị :
3.1 MCU
MCU thực hiện giao tiếp và điều khiển hoạt động của toàn thiết bị, từ các yêu cầu kĩ thuật của đề tài, tác giả lựa chọn MCU STM32F103VE, là MCU của hãng ST Microelectronic, MCU này có một số đặc điểm đáng lưu ý sau :
- Sử dụng nhân 32 bit Cortex M3.
- Tần số hoạt động lên tới 72MHz, tốc độ xử lý lên tới 1,25 DMIPS/MHz.
- Hỗ trợ phép nhân/chia bằng phần cứng với 1 chu kì thực thi lệnh.
- Bộ nhớ flash 512KB, bộ nhớ SRAM : 64KB.
- Dải điện áp hoạt động : từ 2,0V đến 3,6V.
- Hỗ trợ thạch anh nội lên tới 8MHz.
- Hỗ trợ module thời gian thực (RTC)
- Hỗ trợ các chế độ tiết kiệm năng lượng : Sleep, Stop, Standby.
- Hỗ trợ ADC và DAC 12 bit.
- Hỗ trợ DMA với 12 kênh DMA độc lập.
3.2 Mạch nguồn
Đối với các thiết bị sử dụng trong lĩnh vực tần số cao, ngoài việc hệ thống phần cứng phải xử lý chống nhiễu, mạch nguồn trong thiết bị cũng phải được thiết kế để hạn chế các khả năng phát sinh nhiễu làm giảm độ nhạy tín hiệu của thiết bị.
Ngồi ra, mạch nguồn cần phải được thiết kế để đáp ứng tốt năng lượng tiêu thụ của toàn mạch khi các quá trình truyền nhận dữ liệu xảy ra, đồng thời, hiệu suất của mạch nguồn phải cao để giảm việc tiêu hao năng lượng, kéo dài thời gian hoạt động của thiết bị khi sử dụng với nguồn năng lượng chính là acquy trên ơ tơ.
37
Mạch nguồn cũng phải có tính năng tự ngắt nguồn điện hệ thống khi điện áp acquy sụt dưới 1 mức nào đó để đảm bảo an tồn và tuổi thọ cho acquy.
Từ các phân tích trên, tác giả quyết định sử dụng mạch nguồn switching để chuyển nguồn điện từ acquy về các mức điện áp phù hợp trong thiết bị, IC chính trong bộ nguồn là TPS5430, đây là IC nguồn switching có khả năng cho hiệu suất lên tới 90%, hoạt động với dải điện áp đầu vào rộng và có thể điều chỉnh được điện áp đầu ra.
38
Hình 2.6 - Thiết kế mạch nguồn với IC TPS5430
GND 220uF /50V C3 0 6. 8uF C3 1 GND GND 103 C2 7 D7 B340A 15uH L4 GND 220uF /16V C2 5 R4 2 4k7 R4 3 4k7 R4 5 1k GND PWR _EN B OOT 1 NC 2 NC 3 V SE N SE 4 E NA 5 GND 6 VI N 7 PH 8 JP2 TPS5430 330uH L3 1K R3 9 GND 1 IN 3 OUT 2 OUT 4 U7 #L A 008 GND 106 C9 GND + 3. 3V P W R_ CT RL + 4. 4V MF U 1 MF U D8 Z6.8 GND C 2 B 1 E 3 Q5 C1815 AC QUY V out 1 Vs s 3 Vi n 2 OUT 4 U6 TC5 4 R4 0 120k R41 47K GND AC QUY P W R_ E N 105 C2 4 AC QUY_ P D D4 M7 R3 100k R9 10k VAQ_Vehicle R4 0 D2 M7 GND 104 C7 GND GND
39
Do nguồn của thiết bị được lấy từ acquy, khi lắp vào thiết bị có thể gây nhầm lẫn giữa các cực của acquy, do vậy trong mạch nguồn có bố trí diode D4 dùng để chống lắp ngược cực.
Trong mạch nguồn cũng có bộ phận phản hồi điện áp acquy, hệ thống sẽ cảnh báo khi điện áp acquy sụt dưới ngưỡng cho phép, vi điều khiển sẽ đọc xác định điện áp acquy thông qua module ADC, điện áp acquy được đưa vào vi điều khiển thông qua bộ phân áp R3-R9.
Trong trường hợp điện áp acquy đã xuống thấp hơn ngưỡng cho phép cảnh báo, thiết bị sẽ tự động ngừng hoạt động để đảm bảo an toàn cho toàn hệ thống trên xe, lúc này thiết bị cần phải được cắt nguồn khỏi acquy, IC TC54 trong hệ thống nguồn của thiết bị sẽ đảm nhận việc này.
40
CHƯƠNG III
THIẾT KẾ VÀ THỰC THI PHẦN MỀM
1. Yêu cầu thiết kế
- Vi điều khiển trong thiết bị có thể giao tiếp với module GPS, GSM thơng qua UART.
- Có thể nâng cấp firmware từ xa, bao gồm firmware cho bootloader và firmware chính.
- Có thể truyền nhận dữ liệu thơng qua GPRS.
- Có thể lưu các thơng số cấu hình cho thiết bị, đồng thời cho phép người dùng thay đổi các thông số này qua tin nhắn SMS hoặc qua server.
- Có khả năng kiểm sốt lỗi các thành phần trên thiết bị, đồng thời gửi mã lỗi về server.
2. Firmware cho thiết bị.
Firmware cho thiết bị được viết và nạp vào trong MCU, firmware phải có khả năng giao tiếp và điều khiển các thiết bị ngoại vi như các module GPS, GSM…
Để đáp ứng tính năng update firmware từ xa, firmware trong thiết bị được chia làm 2 phần :
- Phần 1 : Bootloader : đảm nhiệm chức năng nâng cấp firmware cho hệ thống, khi phát hiện có firmware mới (được lưu trong bộ nhớ flash của MCU), bootloader sẽ thực hiện copy firmware mới vào khu vực firmware thực thi của MCU.
- Phần 2 : Firmware chính : Đảm nhiệm chức năng giao tiếp với các thiết bị ngoại vi, lấy dữ liệu, tính tốn và truyền dữ liệu về server, firmware chính cũng phải có khả năng download firmware cần update, sau đó lưu vào 1 vùng nhớ trong bộ nhớ của MCU, khi đã download thành cơng, firmware chính sẽ bật cờ báo có firmware mới cần nâng cấp, khi phát hiện cờ này
41
được bật, MCU sẽ chạy firmware trong bootloader để thực hiện việc nâng cấp firmware.
Phân bố các vùng dữ liệu trong bộ nhớ flash của MCU như sau :
Hình 3.1 - Phân bố dữ liệu trong bộ nhớ flash của MCU
- Vùng nhớ I : Chứa firmware phần bootloader.
- Vùng nhớ II : Chứa firmware chính.
- Vùng nhớ III : Chứa firmware cần nâng cấp. Dữ liệu firmware truyền từ
server sẽ được lưu ở vùng này.
- Vùng nhớ IV : Chứa các dữ liệu khác, như dữ liệu lộ trình, các cờ báo có
firmware cần nâng cấp, các cấu hình cho thiết bị…
42
Khi MCU khởi động, thiết bị sẽ chạy ở bootloader (vùng nhớ I), bootloader sẽ kiểm tra cờ báo có firmware cần nâng cấp hay không (1 byte ở vùng nhớ IV) :
- Nếu có firmware cần nâng cấp, bootloader sẽ thực hiện copy dữ liệu ở vùng nhớ III vào dữ liệu ở vùng nhớ II, sau khi copy xong dữ liệu, chương trình trong bootloader sẽ kết thúc và MCU nhảy tới vùng nhớ chứa firmware chính để thực thi.
- Nếu khơng có firmware cần nâng cấp, bootloader sẽ nhảy luôn đến vùng nhớ chứa firmware chính để thực thi.
Hình 3.2 - Lưu đồ thuật tốn firmware của bootloader
2.2 Firmware chính
Firmware chính thực hiện các nhiệm vụ :
- Khởi độngcác thiết bị ngoại vi.
- Lấy dữ liệu từ module GPS.
- Lưu dữ liệu lộ trình vào bộ nhớ flash của MCU.
- Gửi dữ liệu lộ trình lên server. Start Có firmware cần nâng cấp ? Nhảy đến vùng chứa firmware chính
Copy firmware cần nâng cấp vào vùng chứa
firmware chính
Đúng
43
- Nhận và thực thi các lệnh điều khiển từ server.
Quá trình khởi động thiết bị được mơ tả như sơ đồ sau :
Hình 3.3 - Q trình khởi động thiết bị
Để tăng tính bảo mật cho việc truyền nhận với server, trước khi thực hiện quá trình gửi dữ liệu lên server, thiết bị phải thực hiện quá trình login vào server, quá
Start
Đổi tốc độ baud, reset lại
module GPS Module GPS OK
Đổi tốc độ baud, reset lại
module GSM Module GSM OK
Login vào server thành công ? Đúng Đúng Đúng Đúng Sai Sai Khởi động module GSM thành công ? Sai Đã login vào server quá 5 lần ? Thực hiện reset thiết bị Đúng Thực thi các tác vụ theo chu kì
44
trình này sẽ được trải qua các bước để xác thực giữa thiết bị và server nhờ các key trong bản tin login. Quá trình sinh key và phương thức sinh key được mô tả trong phần giao thức truyền nhận giữa server và thiết bị.
Hình 3.4 - Quá trình login của thiết bị
Sau khi khởi động thiết bị các module ngoại vi và login thành cơng vào server, firmware chính sẽ thực hiện các tác vụ theo chu kì trong vịng lặp vơ hạn.
Q trình login
Gửi bản tin
login lên server.
Nhận được xác thực login từ server
Kiểm tra key trong bản tin xác thực
Sai
Đúng
Sai
Đúng Nhận key mới, thực hiện
45
Hình 3.5 - Các tác vụ thực thi theo chu kì
Hình 3.6 - Chu kì thực thi 1s Thực thi các tác vụ Thực thi các tác vụ theo chu kì Chu kì 1s Chu kì 10s Chu kì 1s Thực hiện khởi động lại module Lưu dữ liệu lộ trình vào flash của MCU Kiểm tra kết nối tới các module ngoại vi (GPS, GSM) Lấy dữ liệu từ module GPS Đúng Sai
46
Hình 3.7 - Chu kì thực thi 10s
Lưu dữ liệu trong bộ nhớ
Trong quá trình thiết bị di chuyển, có những thời điểm thiết bị khơng kết nối được với server (do thiết bị đi vào vùng mất sóng, hoặc do module GSM bị treo, hoặc vì 1 nguyên nhân nào khác), lúc này thiết bị cần phải lưu lại các dữ liệu trong bộ nhớ để khi kết nối lại được với server, thiết bị sẽ gửi lại các dữ liệu chưa gửi được tới server.
Ngoài dữ liệu khi mất sóng, thiết bị cũng cần lưu lại các dữ liệu định kì để phục vụ cho cơng tác kiểm tra, bảo hành thiết bị.
Để giảm giá thành và tăng tính ổn định cũng như tính bảo mật của hệ thống, tác giả quyết định sử dụng bộ nhớ flash có sẵn của MCU để lưu dữ liệu, nhà sản xuất cho phép khóa bộ nhớ flash, chống đọc ngược dữ liệu, do vậy hồn tồn có thể bảo mật dữ liệu.
Chu kì 10s
Thực hiện quá
trình login vào server
Kiểm tra kết nối tới server
Gửi dữ liệu lộ
trình lên server
Kết nối ok
47
Bộ nhớ flash trong MCU được lưu theo từng block, mỗi block là 32 bit, trong khi đó dữ liệu lộ trình được chia nhỏ thành 8 bit, do vậy mỗi lần đọc/ghi dữ liệu cần tách/ghép các dữ liệu 8 bit thành dữ liệu 32bit cho phù hợp.
Ngoài ra, bộ nhớ flash của MCU chỉ hỗ trợ tính năng xóa cả trang (page) mà khơng hỗ trợ tính năng xóa từng byte dữ liệu, do vậy nếu cần chỉnh sửa, dữ liệu, cần đọc lại dữ liệu vào bộ nhớ tạm, sau đó chỉnh sửa dữ liệu rồi ghi lại vào flash.
Commented [q3]: ?? 12 hay 32
Commented [PK4]: 32 ạ, em đã sửa lại.
Commented [q5]: Có tính đến trường hợp đang ghi thì mất điện
cung cấp (hỏng ác quy) khi đó data có bị mất ? Có thể khắc phục đc k ? Nếu đc thì đưa giải pháp
Commented [PK6]: Trường họp đang ghi dữ liệu mà mất điện
thì các dữ liệu đã ghi rồi sẽ không bị mất ạ, đồng thời thiết bị cũng không thể ghi dữ liệu cho tới khi có điện trở lại ạ.
48
3. Thiết kế giao thứctruyền nhận giữa thiết bị và server
Để tăng tính bảo mật, cũng như tạo sự thống nhất trong quá trình truyền, nhận dữ liệu, các dữ liệu truyền lên hoặc nhận về từ server đều được chia thành các packet, mỗi packet đều phải tuân theo 1 giao thức đã định sẵn.
3.1 Định dạng bản tin
Phần này quy định giao thức chung cho tất cả các bản tin truyền nhận giữa server. Trường Header Loại bản tin Thời gian Mã bảo mật Độ dài nội dung Nội
dung CheckSum Footer
Độ dài (Byte) 5 ($DATA) 1 6 (YYMMDD HHMMSS) 8 2 1 (#) Bảng 3.1 – Định dạng bản tin
Header : Đánh dấu bắt đầu bản tin, mặc định là $DATA, có độ dài là 5 byte. Loại bản tin : Mô tả bản tin gửi lên server là bản tin nào, có các loại bản tin sau :
Loại bản tin Mã Mô tả
Bản tin login 0 Các bản tin trong quá trình login của thiết bị
Bản tin định kì 1 Bản tin chứa các thơng số của thiết bị như tọa
độ, vận tốc, nhiên liệu
Bản tin update firmware 2 Bản tin yêu cầu update firmware từ server.
Thời gian : Thời gian gửi của bản tin.
Mã bảo mật : Được sinh ra từ trường Thời gian kết hợp với key và phương thức
sinh mã bảo mật đã được biết trước.
49
Nội dung : Nội dung của bản tin
Checksum : Nhằm xác thực tất cả các trường trong bản tin đều đã được
truyền/nhận đúng. Checksum được tính bằng cách cộng tất cả các byte của các
trường trong bản tin từ $DATA tới byte cuối cùng trong trường Nội dung. Footer : Byte đánh dấu kết thúc bản tin, độ dài 1 byte, mặc định là dấu ‘#’
3.2 Bản tin login
Để tăng tính bảo mật cho việc truyền nhận với server, trước khi thực hiện quá trình gửi dữ liệu lên server, thiết bị phải thực hiện quá trình login vào server, quá trình này sẽ được trải qua các bước để xác thực giữa thiết bị và server nhờ các key trong bản tin login.
Quá trình login
Gửi bản tin
login lên server.
Nhận được xác thực login từ server
Kiểm tra key trong bản tin xác thực
Sai
Đúng
Sai
Đúng Nhận key mới, thực hiện
50
Hình 3.8 - Quá trình login của thiết bị
Cơ chế sinh mã bảo mật trong giao thức truyền nhận giữa thiết bị và server.
Các packet truyền giữa thiết bị và server đều được xác thực bằng mã bảo mật (MBM), MBM được sinh ra dựa theo 1 mảng KEY và trường thời gian trong packet, thuật toán để sinh ra MBM là Triple DES (TDES), thuật tốn này đã được chứng minh bằng các cơng thức tốn học đảm bảo khơng thể dịch ngược lại cơ chế sinh mã từ các mã thu được[12][13][14]. Việc sinh KEY và MBM thực hiện qua các bước sau :
- Thiết bị gửi bản tin login vào server, MBM được sinh ra dựa vào PUBLIC KEY và trường thời gian trong packet theo thuật toán TDES. PUBLIC KEY là 1 mảng byte quy định trước giữa server và thiết bị.
- Khi nhận được bản tin login, server sẽ kiểm tra MBM dựa theo PUBLIC KEY và trường thời gian trong bản tin theo thuật tốn mã hóa TDES, nếu chính xác server sinh ra 1 KEY mới và gửi KEY này xuống thiết bị, tất cả các MBM sinh ra ở các bản tin sau này đều dựa trên KEY mới.
Nếu 1 packet khơng đúng mã bảo mật thì khi nhận được packet đó, server hoặc thiết bị sẽ coi là packet sai và không xử lý dữ liệu của packet đó.
Nội dung của bản tin login bao gồm các trường sau :
Trường Số lần reset Firmware thiết bị Loại thiết bị ID thiết bị Serial Number Độ dài (Byte) 2 10 1 10 20
Bảng 3.2–Nội dung bản tin login
Số lần reset : Mỗi lần thiết bị khởi động lại, thiết bị sẽ tăng số lần reset được lưu
trong bộ nhớ lên 1 đơn vị, trường này nhằm giúp chẩn đoán lỗi thiết bị.
Commented [q7]: Tài liệu tham khảo.
Commented [q8]: Nếu mảng byte này mà ngươi hacker biết (ví dụ do người của cơng ty cung cấp) thì có khả năng bẻ khóa hay khơng ?
Commented [PK9]: Nếu bị lộ mảng byte này thì có thể bị bẻ khóa khi hacker biết phương thức mã hóa là TDES, thường thì khi cơng ty biết được thiết bị bị hack, họ sẽ update firmware cho thiết bị để thay đổi mảng byte này ạ
51
Loại thiết bị : Thiết bị có thể phát triển nhiều phiên phản phần cứng khác nhau,
trường này giúp người dùng nhận biết loại thiết bị để khiển thiết bị từ server.
ID thiết bị : Cùng 1 lúc có thể có nhiều ID thiết bị thể hiện cùng kết nối tới server,
do vậy phải dùng ID để phân biệt các thiết này với nhau, ID này có thể được cấu
hình để thay đổi.
Serial Number : Là 1 dãy số cố định, không thể thay đổi được, mô tả serial của