席雷鵬,姚凱學(xué),何 勇,楊黎娜
(貴州大學(xué) 計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院,貴州 貴陽(yáng) 550025)
汽車(chē)是人類(lèi)生活中重要的交通工具,國(guó)內(nèi)的汽車(chē)保有量逐年增加,道路基礎(chǔ)設(shè)施的建設(shè)與汽車(chē)的增長(zhǎng)量失調(diào),這使得國(guó)內(nèi)的道路交通擁擠和交通事故頻發(fā)的狀況日益凸顯。同時(shí),目前國(guó)內(nèi)的車(chē)險(xiǎn)繳納以年為單位,忽視了汽車(chē)的使用情況,風(fēng)險(xiǎn)與費(fèi)率的失衡積弊已久,對(duì)大量汽車(chē)的有效管理也變得越來(lái)越重要。
隨著物聯(lián)網(wǎng)技術(shù)的成熟,物聯(lián)網(wǎng)在各行各業(yè)得到了應(yīng)用。智能網(wǎng)聯(lián)汽車(chē)是互聯(lián)網(wǎng)、汽車(chē)以及交通的融合,通過(guò)在車(chē)上搭載先進(jìn)的傳感器,使用現(xiàn)代網(wǎng)絡(luò)技術(shù)、后臺(tái)系統(tǒng),從而實(shí)現(xiàn)車(chē)與人,以及其他物理實(shí)體之間的信息交互。通過(guò)車(chē)內(nèi)攝像頭來(lái)獲取車(chē)輛的行駛狀態(tài)信息,傳輸?shù)胶笈_(tái)服務(wù)器中,結(jié)合圖像識(shí)別技術(shù)來(lái)分析駕駛員的駕駛情況,從而對(duì)車(chē)輛的使用情況有一個(gè)很好的把控。但是采集和處理視頻圖像需要很多的硬件資源,對(duì)通信速率有一定的要求,同時(shí)駕駛員的隱私也有泄露的風(fēng)險(xiǎn)。對(duì)此,文中提出了一款基于STM32的車(chē)輛行駛狀態(tài)信息采集系統(tǒng),能夠?qū)崟r(shí)采集車(chē)輛行駛中的三軸加速度、三軸角速度等車(chē)輛狀態(tài)信息和車(chē)輛定位信息,為后續(xù)研究駕駛員的駕駛行為,實(shí)現(xiàn)對(duì)車(chē)輛的有效管理打下基礎(chǔ)。
車(chē)輛行駛狀態(tài)信息采集系統(tǒng)通過(guò)外接三軸加速度陀螺儀傳感器實(shí)現(xiàn)汽車(chē)行駛中的三軸加速度和三軸角速度的采集,利用STM32的DMA自動(dòng)傳輸機(jī)制實(shí)現(xiàn)定位信息的采集,通過(guò)4G移動(dòng)通信網(wǎng)絡(luò)把采集到的數(shù)據(jù)傳輸?shù)胶笈_(tái)數(shù)據(jù)處理中心。系統(tǒng)主要由七個(gè)模塊構(gòu)成,分別是數(shù)據(jù)處理模塊、加速度和角速度采集模塊、定位信息采集模塊、通信模塊、數(shù)據(jù)存儲(chǔ)模塊、電源模塊和上位機(jī)。其中,數(shù)據(jù)處理模塊是整個(gè)系統(tǒng)的控制中心,電源模塊從車(chē)載點(diǎn)煙口取電,為系統(tǒng)的運(yùn)行提供穩(wěn)定可靠的電源,數(shù)據(jù)采集模塊負(fù)責(zé)各類(lèi)信息的采集,數(shù)據(jù)存儲(chǔ)模塊在數(shù)據(jù)未能成功發(fā)送到上位機(jī)時(shí)對(duì)數(shù)據(jù)進(jìn)行存儲(chǔ),通信模塊用于下位機(jī)與上位機(jī)之間的交互,上位機(jī)模塊用于數(shù)據(jù)的存儲(chǔ)和可視化。系統(tǒng)的總體設(shè)計(jì)框圖如圖1所示。
圖1 系統(tǒng)總體框圖
系統(tǒng)在工作時(shí),微控制單元(MCU)控制數(shù)據(jù)采集模塊采集三軸加速度、三軸角速度和定位數(shù)據(jù),同時(shí)將采集到的數(shù)據(jù)按照通信協(xié)議的格式進(jìn)行數(shù)據(jù)幀的封裝,通過(guò)無(wú)線通信將封裝好的數(shù)據(jù)發(fā)送給上位機(jī)。車(chē)輛在行駛中會(huì)出現(xiàn)無(wú)線通信信號(hào)弱的情況,設(shè)計(jì)數(shù)據(jù)存儲(chǔ)模塊,以便在無(wú)線通信信號(hào)弱的情況下進(jìn)行數(shù)據(jù)的暫時(shí)存儲(chǔ)。由于通信模塊需要12V的供電電壓,從車(chē)載點(diǎn)煙口獲得12 V電壓進(jìn)行穩(wěn)壓處理后向系統(tǒng)供電,同時(shí)采用降壓模塊將12 V電壓轉(zhuǎn)換為5 V和3.3 V,為系統(tǒng)的其他部分供電。
車(chē)輛行駛狀態(tài)信息采集系統(tǒng)主要分為數(shù)據(jù)處理模塊、加速度和角速度采集模塊、定位信息采集模塊、通信模塊和數(shù)據(jù)存儲(chǔ)模塊,電源模塊為系統(tǒng)的各個(gè)模塊供電。
數(shù)據(jù)處理模塊使用STM32F103ZET6作為微控制單元,是整個(gè)系統(tǒng)的控制中心,實(shí)現(xiàn)數(shù)據(jù)采集、數(shù)據(jù)上傳和暫時(shí)存儲(chǔ)等控制功能。使用STM32F03ZET6的DMA(direct memory access)通過(guò)USART2循環(huán)采集定位數(shù)據(jù),使用IIC1外設(shè)采集三軸加速度陀螺儀數(shù)據(jù),將采集到的數(shù)據(jù)按照通信協(xié)議格式進(jìn)行數(shù)據(jù)幀封裝,通過(guò)USART1發(fā)送給通信模塊。數(shù)據(jù)因無(wú)線通信信號(hào)弱而未能成功發(fā)送時(shí),STM32F103ZET6通過(guò)SDIO將數(shù)據(jù)發(fā)送給數(shù)據(jù)存儲(chǔ)模塊進(jìn)行暫時(shí)存儲(chǔ)。同時(shí),STM32F103ZET6的PA0引腳設(shè)計(jì)了一個(gè)可以使系統(tǒng)停止工作的按鍵KEY1,PA0引腳外接了下拉電阻,按鍵的一端連接PA0引腳,另外一端連接3.3 V高電平,當(dāng)按鍵被按下時(shí),PA0引腳由低電平轉(zhuǎn)變?yōu)楦唠娖?,通過(guò)設(shè)置該引腳的硬件中斷檢測(cè)按鍵被按下。
系統(tǒng)使用MPU6050作為采集加速度、角速度的傳感器,它能夠檢測(cè)三軸加速度、三軸角速度運(yùn)動(dòng)數(shù)據(jù)以及該芯片內(nèi)部溫度數(shù)據(jù),可以使用IIC與其他芯片進(jìn)行通信,IIC通信的時(shí)鐘頻率最高為400 kHz,測(cè)量加速度的最高分辨率為16 384 LSB/g,角速度最高分辨率為131 LSB/( o/s)。加速度和角速度采集模塊原理圖如圖2所示。
圖2 加速度角速度采集模塊原理圖
MPU6050芯片采用了扁平的QFN-24封裝,需要使用3.3 V電壓供電。STM32使用PB6、PB7引腳與MPU6050進(jìn)行IIC通信,所以MPU6050的SCL、SDA引腳外接4.7K的上拉電阻。MPU6050的AD0引腳用于設(shè)定IIC通信地址,當(dāng)AD0引腳接地時(shí),MPU6050的IIC通信地址為0x68,接VCC時(shí),可設(shè)置MPU6050的IIC通信地址為0x69。當(dāng)系統(tǒng)剛剛上電時(shí),需要向MPU6050的0x6B地址的寄存器寫(xiě)入0x00解除休眠狀態(tài),由于目前汽車(chē)的最大加速度為6.9 m/s,設(shè)置MPU6050的加速度量程范圍為±2g
,則測(cè)量到的x
軸加速度計(jì)算公式為:其中,a
表示x
軸的加速度,acel是從MPU6050中讀出的原始ADC值,16 384是在加速度量程范圍設(shè)置為±2g
時(shí)的加速度計(jì)分辨率,g
表示重力加速度。設(shè)置MPU6050的角速度量程范圍為±250/s,則測(cè)量得到的x
軸角速度的計(jì)算公式為:其中,gyro是從MPU6050中讀出的原始ADC值,131.072是在角速度的量程設(shè)為±250/s時(shí)的陀螺儀分辨率。
系統(tǒng)使用ATGM332D-5N模塊進(jìn)行定位信息的采集,ATGM332D-5N支持北斗和GPS雙模定位,可使用3.3 V~5 V電壓供電,導(dǎo)航信息更新率可達(dá)10 Hz,定位精度為2.5 m,采用串口與STM32核心控制器通信。
在該設(shè)計(jì)中,使用STM32的串口2與ATGM332D-5N進(jìn)行通信,由于ATGM332D-5N定位模塊的定位速度以及串口通信速度相對(duì)于STM32的運(yùn)算速度會(huì)慢很多,如果STM32直接通過(guò)串口讀取定位數(shù)據(jù),就不能夠完成系統(tǒng)的其他任務(wù),故通過(guò)STM32的DMA1循環(huán)采集定位數(shù)據(jù),在STM32的內(nèi)存中開(kāi)辟512字節(jié)大小的緩沖區(qū)存儲(chǔ)定位數(shù)據(jù),設(shè)置DMA傳輸一半和全部傳輸完成中斷,在中斷發(fā)生時(shí)取走相應(yīng)的一半數(shù)據(jù)并且清空中斷,這樣STM32就能處理系統(tǒng)的其他任務(wù),同時(shí)為了避免DMA傳輸發(fā)生數(shù)據(jù)覆蓋問(wèn)題,在上一次定位數(shù)據(jù)還沒(méi)有處理完成時(shí),直接清空DMA傳輸完成中斷。ATGM332D-5N采集到的是NMEA-0183 4.0協(xié)議格式的數(shù)據(jù),系統(tǒng)使用NEMA解碼庫(kù)來(lái)進(jìn)行原始定位數(shù)據(jù)的解碼,得到經(jīng)緯度、速度、GPS時(shí)間、定位精度等定位信息。
通信模塊采用4G無(wú)線通信的方式來(lái)保證下位機(jī)與上位機(jī)之間的通信,同時(shí)也預(yù)留TTL串口通信的方式。4G通信模塊采用了WH-LTE-7S4 V2,可以通過(guò)串口AT指令建立與上位機(jī)的TCP遠(yuǎn)程連接,同時(shí)還可以通過(guò)AT指令進(jìn)行網(wǎng)絡(luò)透?jìng)鳌TTPD、UDC三種工作模式的配置。WH-LTE-7S4 V2有電源、復(fù)位重啟、工作狀態(tài)指示、UART、SIM和射頻接口,該設(shè)計(jì)中使用到的模塊引腳功能介紹如表1所示。
表1 WH-LTE-7S4 V2引腳功能描述
在該系統(tǒng)中使用12 V電壓為WH-LTE-7S4 V2模塊供電,在供電引腳接口前端增加220 uF的電解電容,以增加模塊工作的穩(wěn)定性。使用STM32的PC0連接該模塊的WORK,用于檢測(cè)模塊是否工作正常;STM32的PC1連接模塊的RESET引腳,用于模塊的復(fù)位重啟;STM32的PC2連接模塊的RELOAD,用于模塊恢復(fù)出廠設(shè)置;模塊的UTXD1和URXD1連接STM32的串口1,用于AT指令進(jìn)行TCP遠(yuǎn)程連接。同時(shí)在天線接口和SIM接口增加ESD保護(hù),避免外部接口電壓過(guò)大而造成模塊損壞,4G通信模塊的硬件電路結(jié)構(gòu)框圖如圖3所示。
圖3 4G通信模塊硬件電路結(jié)構(gòu)框圖
在移動(dòng)通信信號(hào)弱時(shí)會(huì)導(dǎo)致數(shù)據(jù)不能夠發(fā)送到上位機(jī),為了避免數(shù)據(jù)丟失,設(shè)計(jì)數(shù)據(jù)存儲(chǔ)模塊用于數(shù)據(jù)的暫時(shí)存儲(chǔ),當(dāng)STM32空閑且無(wú)線通信信號(hào)良好時(shí)再進(jìn)行數(shù)據(jù)的發(fā)送。系統(tǒng)采用SD卡來(lái)實(shí)現(xiàn)數(shù)據(jù)的暫時(shí)存儲(chǔ),STM32與SD卡之間采用SDIO(secure digital input and output)的方式進(jìn)行通信,其最高支持32 GB容量的SD存儲(chǔ)卡。SD卡有9個(gè)通信接口,其中有3個(gè)電源接口、1個(gè)時(shí)鐘線接口、4個(gè)數(shù)據(jù)線接口和1個(gè)命令線接口,SD卡中有8個(gè)寄存器表示SD卡中的信息,這些寄存器的功能表示如表2所示。
表2 SD卡寄存器功能表示
在該系統(tǒng)設(shè)計(jì)中,使用3.3 V電壓為數(shù)據(jù)存儲(chǔ)模塊供電,在每個(gè)數(shù)據(jù)線和命令線接口添加10K的上拉電阻,增加模塊工作的穩(wěn)定性。數(shù)據(jù)存儲(chǔ)模塊的DAT0、DAT1、DAT2、DAT3引腳分別與核心處理器的PC8、PC9、PC10、PC11相連接,用于進(jìn)行數(shù)據(jù)的讀寫(xiě),在SD卡處于忙狀態(tài)時(shí),會(huì)把D0引腳拉低表示正在被使用。數(shù)據(jù)存儲(chǔ)模塊的CLK引腳與核心處理器的PC12引腳相連接,由核心處理器產(chǎn)生時(shí)序信號(hào),來(lái)保證通信的正常進(jìn)行。數(shù)據(jù)存儲(chǔ)模塊的CMD引腳與核心處理器的PD2引腳相連接,核心處理器通過(guò)該引腳向數(shù)據(jù)存儲(chǔ)模塊發(fā)送命令,同時(shí)也可以接收來(lái)自數(shù)據(jù)存儲(chǔ)模塊的應(yīng)答信號(hào)。
電源模塊為系統(tǒng)的工作提供穩(wěn)定可靠的電能。系統(tǒng)在車(chē)載點(diǎn)煙口取得12 V電壓的電能,經(jīng)過(guò)穩(wěn)壓處理后向通信模塊供電,同時(shí)使用AMS1117-5.0作為降壓穩(wěn)壓器,將12 V電能轉(zhuǎn)換為5 V,為數(shù)據(jù)處理模塊供電,使用AMS1117-3.3將5 V電壓降為3.3 V,為數(shù)據(jù)采集和數(shù)據(jù)存儲(chǔ)部分的模塊供電,在各級(jí)電壓處增加電容確保供電的穩(wěn)定性。使用CR1220作為STM32F103ZET6的VBAT引腳的備用電源,當(dāng)系統(tǒng)主電源有效時(shí),RTC時(shí)鐘外設(shè)由主電源供電,在主電源掉電后,由VBAT引腳向RTC外設(shè)供電,確保時(shí)鐘數(shù)據(jù)不會(huì)丟失。
系統(tǒng)軟件使用C語(yǔ)言編寫(xiě),移植FatFS文件管理系統(tǒng)至下位機(jī),從而實(shí)現(xiàn)對(duì)SD卡中數(shù)據(jù)的有組織管理。系統(tǒng)軟件設(shè)計(jì)的工作流程是在系統(tǒng)上電后進(jìn)行硬件初始化,之后進(jìn)行數(shù)據(jù)的采集、發(fā)送和存儲(chǔ)。
FatFS文件管理系統(tǒng)是基于小型嵌入式設(shè)備開(kāi)發(fā)的,具有輕量化的特點(diǎn),其具體實(shí)現(xiàn)與底層的I/O(input/output)介質(zhì)的讀寫(xiě)實(shí)現(xiàn)相分離,通過(guò)為其編寫(xiě)I/O讀寫(xiě)的驅(qū)動(dòng)程序,實(shí)現(xiàn)外部存儲(chǔ)介質(zhì)存儲(chǔ)空間的有效管理。在該系統(tǒng)中,使用SD卡進(jìn)行數(shù)據(jù)因4G通信模塊問(wèn)題而導(dǎo)致的發(fā)送失敗時(shí)的暫時(shí)存儲(chǔ),依據(jù)SDIO通信的方式分別編寫(xiě)獲取SD存儲(chǔ)器狀態(tài)、初始化存儲(chǔ)器、寫(xiě)入和讀取扇區(qū)的芯片驅(qū)動(dòng)函數(shù)。系統(tǒng)上電后,檢測(cè)SD卡是否有文件管理系統(tǒng),若沒(méi)有則進(jìn)行格式化操作和文件管理系統(tǒng)的創(chuàng)建,在格式化操作和文件管理系統(tǒng)創(chuàng)建成功后進(jìn)行一次讀寫(xiě)測(cè)試驗(yàn)證SD存儲(chǔ)模塊正常。系統(tǒng)把車(chē)輛行駛狀態(tài)數(shù)據(jù)存儲(chǔ)在一個(gè)“1.txt”的文本文件中,初次使用沒(méi)有該文件則進(jìn)行文件的創(chuàng)建。當(dāng)需要向存儲(chǔ)模塊中寫(xiě)入數(shù)據(jù)時(shí),在文件末尾進(jìn)行數(shù)據(jù)追加并進(jìn)行換行操作,確保一行存儲(chǔ)一條數(shù)據(jù),在數(shù)據(jù)取出時(shí)先取出前面部分的數(shù)據(jù),在確保從SD卡中取出的數(shù)據(jù)被正常發(fā)送出去后,從SD卡中的該文件中刪除該條數(shù)據(jù)。
STM32核心處理器使用串口2與定位信息采集模塊進(jìn)行通信,在進(jìn)行STM32的串口2初始化時(shí),其波特率的配置要與定位信息采集模塊的串口通信波特率保持一致以確保通信的正常進(jìn)行。定位信息采集模塊在接收到一次衛(wèi)星定位信息后,會(huì)主動(dòng)將定位數(shù)據(jù)發(fā)送到STM32的串口2。為了避免STM32等待定位數(shù)據(jù)而產(chǎn)生時(shí)間浪費(fèi),系統(tǒng)使用了STM32的DMA自動(dòng)傳輸機(jī)制來(lái)配合定位信息的采集,串口2在接收到數(shù)據(jù)后會(huì)觸發(fā)DMA1的通道6,從而在不需要核心處理器參與的情況下完成數(shù)據(jù)的接收,在數(shù)據(jù)接收完成后通過(guò)中斷的方式提醒STM32核心處理器,STM32在響應(yīng)了定位數(shù)據(jù)采集中斷后設(shè)置標(biāo)志位,在主程序中對(duì)定位數(shù)據(jù)進(jìn)行打包處理。
系統(tǒng)在上電后,STM32首先初始化GPIO口、串口、DMA、硬件IIC1、SDIO、RTC實(shí)時(shí)時(shí)鐘中斷等。在STM32自身硬件外設(shè)初始化完成后,系統(tǒng)通過(guò)串口1對(duì)定位信息采集模塊進(jìn)行初始化操作。通過(guò)STM32的IIC1外設(shè)對(duì)MPU6050傳感器進(jìn)行初始化操作,對(duì)MPU6050的初始化操作包括解除休眠狀態(tài)、設(shè)置陀螺儀采樣率和設(shè)置加速度計(jì)采樣率。通過(guò)串口1對(duì)4G通信模塊進(jìn)行初始化操作,采用AT指令設(shè)置上位機(jī)的IP地址,建立與上位機(jī)的遠(yuǎn)程連接,將4G通信模塊設(shè)置為網(wǎng)絡(luò)透?jìng)髂J?。系統(tǒng)在數(shù)據(jù)采集模塊初始化完成后再次檢測(cè)數(shù)據(jù)能否正常采集,在檢測(cè)失敗時(shí)進(jìn)行系統(tǒng)報(bào)錯(cuò)。系統(tǒng)成功初始化后,每隔100 ms會(huì)產(chǎn)生一次中斷,系統(tǒng)會(huì)采集數(shù)據(jù)并且通過(guò)4G通信模塊向上位機(jī)發(fā)送數(shù)據(jù),當(dāng)數(shù)據(jù)未能成功發(fā)送給上位機(jī)時(shí),系統(tǒng)會(huì)把數(shù)據(jù)暫時(shí)存儲(chǔ)在存儲(chǔ)模塊之中。當(dāng)KEY1按鍵被按下時(shí),系統(tǒng)停止工作。系統(tǒng)數(shù)據(jù)采集流程如圖4所示。
圖4 系統(tǒng)數(shù)據(jù)采集流程
在系統(tǒng)空閑且存儲(chǔ)模塊中有存儲(chǔ)的數(shù)據(jù)時(shí),系統(tǒng)會(huì)從存儲(chǔ)模塊中取出一條數(shù)據(jù)通過(guò)4G通信模塊向上位機(jī)發(fā)送,在該條數(shù)據(jù)發(fā)送成功后從存儲(chǔ)模塊中刪除該條數(shù)據(jù)。存儲(chǔ)模塊中的數(shù)據(jù)上傳流程如圖5所示。
圖5 存儲(chǔ)模塊數(shù)據(jù)上傳流程
通信協(xié)議用于保證下位機(jī)向上位機(jī)傳輸數(shù)據(jù)的正確性,數(shù)據(jù)傳輸采用串行的方式進(jìn)行傳輸,數(shù)據(jù)字節(jié)的發(fā)送采用大端法。
該系統(tǒng)采集的數(shù)據(jù)有汽車(chē)行駛中的三軸加速度數(shù)據(jù)、三軸角速度數(shù)據(jù)以及定位數(shù)據(jù),同時(shí),需要加入時(shí)間信息來(lái)記錄數(shù)據(jù)的采集時(shí)間。其中,定位數(shù)據(jù)包含經(jīng)度、緯度、海拔高度以及表示定位精度的信息。為了對(duì)不同的設(shè)備以及不同的行車(chē)記錄和不同數(shù)據(jù)進(jìn)行區(qū)分,避免因網(wǎng)絡(luò)中不同數(shù)據(jù)幀到達(dá)上位機(jī)的順序不同而造成數(shù)據(jù)的混亂,為每臺(tái)設(shè)備分配設(shè)備編號(hào),對(duì)每次行車(chē)記錄和不同數(shù)據(jù)設(shè)置相應(yīng)的編號(hào)標(biāo)識(shí)。
從整體上看,系統(tǒng)的數(shù)據(jù)幀由起始標(biāo)識(shí)、數(shù)據(jù)編號(hào)標(biāo)識(shí)、數(shù)據(jù)長(zhǎng)度標(biāo)識(shí)、數(shù)據(jù)、CRC循環(huán)檢驗(yàn)碼和結(jié)束標(biāo)識(shí)六部分組成。起始標(biāo)識(shí)和結(jié)束標(biāo)識(shí)用于識(shí)別每一個(gè)數(shù)據(jù)幀,設(shè)備編號(hào)和數(shù)據(jù)ID組成了數(shù)據(jù)編號(hào)標(biāo)識(shí),數(shù)據(jù)長(zhǎng)度對(duì)傳輸數(shù)據(jù)的長(zhǎng)度進(jìn)行了標(biāo)識(shí),在進(jìn)行數(shù)據(jù)解析時(shí)配合起始和結(jié)束標(biāo)識(shí)進(jìn)行數(shù)據(jù)幀識(shí)別的驗(yàn)證,循環(huán)冗余檢驗(yàn)碼用于驗(yàn)證數(shù)據(jù)的正確性,確保數(shù)據(jù)在傳輸?shù)倪^(guò)程中沒(méi)有發(fā)生錯(cuò)誤。通信協(xié)議中的數(shù)據(jù)幀格式如表3所示。
表3 通信協(xié)議數(shù)據(jù)幀表示
STA固定為EAH,表示一幀的開(kāi)始;DEVICEID是設(shè)備編號(hào),占用兩個(gè)字節(jié),用于區(qū)分每個(gè)下位機(jī);DATAID用于標(biāo)識(shí)該條數(shù)據(jù)信息,占用四個(gè)字節(jié),其中20~31位表示第幾次行車(chē)記錄,每次下位機(jī)上電啟動(dòng)會(huì)生成一條新的行車(chē)記錄,在溢出后復(fù)位為1,0~19位是該條數(shù)據(jù)采集時(shí)的編號(hào);LEN表示數(shù)據(jù)長(zhǎng)度,大小為一字節(jié);DATA為數(shù)據(jù),其長(zhǎng)度由LEN表示,單位為字節(jié),其中01H表示后面的四字節(jié)數(shù)據(jù)為時(shí)間戳,02H表示后面的數(shù)據(jù)為三軸加速度和三軸角速度數(shù)據(jù),占用24個(gè)字節(jié),03H表示后面的數(shù)據(jù)為定位數(shù)據(jù),占用48個(gè)字節(jié);CRC是循環(huán)冗余檢驗(yàn)碼,由DEVICEID設(shè)備編號(hào)到DATA數(shù)據(jù)域生成,大小為兩個(gè)字節(jié);END用于表示一幀數(shù)據(jù)的結(jié)束,其值固定為E5。
該系統(tǒng)測(cè)試通過(guò)串口測(cè)試下位機(jī)是否能正常采集數(shù)據(jù),系統(tǒng)完成硬件初始化后,將采集到的數(shù)據(jù)通過(guò)串口發(fā)送給上位機(jī),使用串口調(diào)試助手接收數(shù)據(jù),系統(tǒng)采集數(shù)據(jù)測(cè)試結(jié)果如圖6所示。系統(tǒng)設(shè)置采集頻率為每秒10次,經(jīng)過(guò)測(cè)試,系統(tǒng)能夠穩(wěn)定地采集數(shù)據(jù)。
設(shè)計(jì)實(shí)現(xiàn)了車(chē)輛行駛狀態(tài)信息采集系統(tǒng),以STM32F103ZET6為核心處理器,采集車(chē)輛行駛中的三軸加速度、三軸角速度以及定位數(shù)據(jù),通過(guò)自定義的通信協(xié)議將數(shù)據(jù)傳輸?shù)缴衔粰C(jī),同時(shí)設(shè)計(jì)數(shù)據(jù)存儲(chǔ)模塊來(lái)進(jìn)行通信信號(hào)不好時(shí)的數(shù)據(jù)暫時(shí)存儲(chǔ),在可以正常發(fā)送數(shù)據(jù)時(shí)再進(jìn)行數(shù)據(jù)的上傳,確保不會(huì)發(fā)生通信信號(hào)弱而導(dǎo)致的數(shù)據(jù)丟失。系統(tǒng)通過(guò)STM32自帶的RTC外設(shè)來(lái)進(jìn)行計(jì)時(shí),為采集到的每條數(shù)據(jù)進(jìn)行時(shí)間標(biāo)識(shí),從而實(shí)現(xiàn)對(duì)車(chē)輛行駛狀態(tài)信息的有效管理。電源模塊的設(shè)計(jì)保證了系統(tǒng)斷電后時(shí)鐘的正常工作,同時(shí),系統(tǒng)每隔一周利用定位數(shù)據(jù)中的衛(wèi)星時(shí)間對(duì)STM32的RTC系統(tǒng)定時(shí)器進(jìn)行一次時(shí)間矯正以確保系統(tǒng)時(shí)間的正確性。系統(tǒng)能夠?qū)崿F(xiàn)汽車(chē)行駛狀態(tài)信息的穩(wěn)定采集,操作方便,成本低,具有很好的使用價(jià)值。
圖6 數(shù)據(jù)采集測(cè)試結(jié)果