李云強(qiáng),魯慶賓,張凌曉
(1.南陽(yáng)理工學(xué)院 計(jì)算機(jī)與信息工程學(xué)院, 河南 南陽(yáng) 473004;2.同濟(jì)大學(xué) 道路與交通工程教育部重點(diǎn)實(shí)驗(yàn)室, 上海 201804)
超速駕駛導(dǎo)致的車禍悲劇每時(shí)每刻都在發(fā)生,在汽車上安裝超速報(bào)警器會(huì)在一定程度上減少因超速行駛引起的交通事故數(shù)量。通過對(duì)現(xiàn)有超速報(bào)警器的分析,設(shè)計(jì)新型超速報(bào)警器,增加語(yǔ)音智能提醒功能。超速時(shí),報(bào)警器以聲光方式提醒駕駛員進(jìn)行減速,克服惡劣天氣對(duì)顯示屏的影響,確保安全駕駛,并通過藍(lán)牙連接智能手機(jī)APP,駕駛員根據(jù)不同的路況,設(shè)置不同速度報(bào)警值,實(shí)時(shí)同步顯示當(dāng)前速度,增強(qiáng)應(yīng)用效果。
基于STC8952RC的超速報(bào)警系統(tǒng)原理,如圖1所示,主要由上位機(jī)和下位機(jī)兩部分組成。下位機(jī)包含STC89C52單片機(jī)、車速測(cè)量部分(直流電動(dòng)機(jī)、測(cè)速傳感器(霍爾傳感器測(cè)速))、液晶顯示、語(yǔ)音模塊(BY8301-16P)、串口藍(lán)牙(HC-06)和按鍵構(gòu)成。工作時(shí),LCD1602液晶屏實(shí)時(shí)顯示速度值,可通過按鍵設(shè)置速度的報(bào)警閾值,當(dāng)車速超過預(yù)定閾值,BY8301-16P語(yǔ)音模塊發(fā)出真人聲音提醒駕駛員減速慢行。
上位機(jī)通過HC-06藍(lán)牙連接智能手機(jī)客戶端App,具有實(shí)時(shí)數(shù)據(jù)顯示、刪除、歷史數(shù)據(jù)查看、報(bào)警提示和設(shè)定車速報(bào)警值等功能。

圖1 超速報(bào)警系統(tǒng)總體結(jié)構(gòu)
硬件電路結(jié)構(gòu)如圖2所示,主要由控制主機(jī)STC89C52和車速模擬(直流電機(jī))、液晶顯示、有源蜂鳴器、語(yǔ)音模塊、揚(yáng)聲器、串口藍(lán)牙等部分組成。
2.1.1直流電動(dòng)機(jī)
直流電機(jī)的轉(zhuǎn)動(dòng)模擬車速,直流電機(jī)與其連接簡(jiǎn)單,方便調(diào)節(jié)速度,可靠性高。直流電動(dòng)機(jī)電路圖如圖2(b)所示。直流電動(dòng)機(jī)模擬車速,定時(shí)器外部中斷函數(shù)對(duì)其進(jìn)行監(jiān)測(cè),并把數(shù)據(jù)保存到寄存器,為后面的函數(shù)設(shè)計(jì)提供數(shù)據(jù)。
2.1.2霍爾傳感器(測(cè)速器元件)
霍爾傳感器是磁場(chǎng)傳感器,為測(cè)速元件,由傳感頭、磁場(chǎng)傳感器和齒圈組成。傳感頭包括霍爾元件、永磁體和電子電路等。霍爾傳感器原理如圖3所示。
共4個(gè)按鍵,S1在電源部分,負(fù)責(zé)整個(gè)系統(tǒng)的啟動(dòng)、關(guān)閉;S2在電機(jī)驅(qū)動(dòng)上,負(fù)責(zé)直流電動(dòng)機(jī)的啟動(dòng)、關(guān)閉。SK1、SK2則控制超速速度報(bào)警值的增加、減少。SK1、SK2和89C52單片機(jī)的P3.3、P3.4引腳相連接,如圖2(f)所示。設(shè)計(jì)按鍵函數(shù)完成該功能,當(dāng)按鍵按下時(shí),函數(shù)啟動(dòng);加鍵按下時(shí),速度報(bào)警值加1,最高報(bào)警值為99;減鍵按下時(shí),速度報(bào)警值減1,最低報(bào)警值為0。
報(bào)警電路包括蜂鳴器(圖2(d))和語(yǔ)音提醒電路(圖2(e)):蜂鳴器與單片機(jī)的引腳P1.0連接,語(yǔ)音報(bào)警模塊與單片機(jī)的引腳P2.2連接。
當(dāng)行駛速度超過設(shè)置的報(bào)警值時(shí),發(fā)出警告。語(yǔ)音提示“請(qǐng)注意,你已超速,請(qǐng)注意安全”,同時(shí)蜂鳴器發(fā)出滴滴聲,指示燈閃爍。

圖2 超速報(bào)警器硬件系統(tǒng)整體電路結(jié)構(gòu)連接圖

圖3 霍爾傳感器的工作原理
BY8301-16P串口語(yǔ)音模塊有16個(gè)引腳,如圖4所示。它有6個(gè)觸發(fā)IO口,是24位DAC輸出,動(dòng)態(tài)范圍支持90 dB,信噪比支持85 dB;Micro USB接口更新語(yǔ)音文件,無(wú)需安裝上位機(jī)軟件,支持XP和WIN7系統(tǒng)。
引腳1、2:分別是SPK2、SPK1,外接單聲道無(wú)源喇叭兩端;引腳3:DACR是DAC右聲道輸出;引腳4:DACL是DAC左聲道輸出;引腳5:PLAY_LED是播放指示燈,停止常亮,播放閃爍;引腳6:VCC是電源正極,3.6~5 V;引腳7:TX是UART異步串口數(shù)據(jù)輸出;引腳8:RX是UART異步串口數(shù)據(jù)輸入;引腳9:BUSY是播放時(shí)輸出高電平,停止為低;引腳10~15:IO6-IO1是觸發(fā)輸入口,接地觸發(fā);引腳16:GND負(fù)極。

圖4 語(yǔ)音芯片
向用戶直觀呈現(xiàn)車速行駛狀況實(shí)時(shí)的速度、行駛時(shí)間、行駛路程、超速報(bào)警值等信息。LCD_1602的A引腳D0接89C52的VCC,D0~D7分別與單片機(jī)的P0.0~P0.7相連接,K接地,如圖2(h)所示。
串口藍(lán)牙HC-06模塊體積小巧,方便安裝與設(shè)置,可實(shí)現(xiàn)超速報(bào)警系統(tǒng)與智能手機(jī)APP之間的通信。
輸入電壓:3.6~6 V;TXD:發(fā)送端;RXD:接收端;與單片機(jī)的P3.0、P3.1進(jìn)行連接。STATE:藍(lán)牙連接狀態(tài)輸出引腳,連接時(shí)輸出高,未連接時(shí)輸出低。當(dāng)系統(tǒng)啟動(dòng)后,串口藍(lán)牙上的燈亮,表示初步連接成功。
系統(tǒng)軟件包括主程序及各模塊功能子程序。超速報(bào)警系統(tǒng)軟件工作流程如圖5所示。

圖5 超速報(bào)警軟件工作流程
主程序主要實(shí)現(xiàn)對(duì)參數(shù)初始化、調(diào)用一些其他功能模塊子程序。如對(duì)信號(hào)輸入引腳、按鍵、蜂鳴器等參數(shù)初始化進(jìn)行變量定義,為其他程序提供數(shù)據(jù)。比如計(jì)數(shù)變量、速度和里程變量就是為報(bào)警函數(shù)提供數(shù)據(jù)。
子程序包括液晶顯示、按鍵處理子程序、報(bào)警、發(fā)送數(shù)據(jù)給APP、接收APP控制指令、定時(shí)器中斷執(zhí)行等功能。
如單片機(jī)和手機(jī)App之間進(jìn)行收發(fā)信息通過HC-06串口藍(lán)牙,則設(shè)計(jì)sendtoapp()函數(shù)和rxappdata()函數(shù)實(shí)現(xiàn)此功能。
手機(jī)客戶端App實(shí)現(xiàn)對(duì)超速報(bào)警系統(tǒng)采集數(shù)據(jù)的實(shí)時(shí)更新和同步顯示,且可對(duì)速度報(bào)警閾值進(jìn)行設(shè)定。
用Android Studio軟件,采用Java語(yǔ)言開發(fā)手機(jī)客戶端App代碼。
手機(jī)端要工作,首先要連接藍(lán)牙,通過藍(lán)牙與測(cè)速報(bào)警系統(tǒng)通信,藍(lán)牙通信過程如圖6所示。

圖6 藍(lán)牙工作流程
整個(gè)編碼的過程,首先啟動(dòng)藍(lán)牙,然后傳輸信息,最后程序打包。
啟動(dòng)藍(lán)牙功能:藍(lán)牙啟動(dòng)后,要找到藍(lán)牙信息傳輸入口點(diǎn),使用本地藍(lán)牙適配器類。設(shè)置設(shè)備可以被搜索,對(duì)當(dāng)前藍(lán)牙設(shè)備進(jìn)行查詢,看藍(lán)牙設(shè)備處在哪個(gè)狀態(tài),進(jìn)行相應(yīng)的操作。
信息傳輸:藍(lán)牙通信監(jiān)聽時(shí)設(shè)計(jì)的主要函數(shù)有:connect()請(qǐng)求藍(lán)牙連接;getInptuStream()獲取輸入流,用來接收遠(yuǎn)程方信息;getOutputStream()獲取輸出流,發(fā)送給遠(yuǎn)程方的信息;getRemoteDevice()獲取遠(yuǎn)程設(shè)備;close()關(guān)閉藍(lán)牙連接。
APP的打包:App代碼編寫完成后,進(jìn)行打包,生成APK文件。
操作藍(lán)牙時(shí),要先在xml文件里加入權(quán)限代碼,即設(shè)置軟件編譯開始的位置。
藍(lán)牙連接時(shí),存放代碼文件夾命名為BT_chesuji;代碼主要存放在main文件夾里java資源文件和res兩個(gè)文件夾里。
java資源文件:實(shí)現(xiàn)業(yè)務(wù)功能的代碼,放在java文件夾里。其中BTJDQ.java是用來處理單片機(jī),藍(lán)牙和手機(jī)之間的信息傳輸,設(shè)置設(shè)備可以被搜索,如果藍(lán)牙服務(wù)不可用,則進(jìn)行提示;可用,則進(jìn)行信息傳遞,實(shí)現(xiàn)藍(lán)牙數(shù)據(jù)的接收,對(duì)報(bào)警值是否增加或者減少進(jìn)行反饋;Net.java則是對(duì)文件進(jìn)行讀取并保存。
res資源文件:用來存放資源文件,包含圖片資源和布局資源。
圖片資源:如drawable,存放各種位圖文件,比如png形式的圖片,jpg形式的圖片等。
布局資源:用來布局的代碼頁(yè)面,放在layout文件夾里,當(dāng)需要屏幕適配時(shí),根據(jù)情況,會(huì)再創(chuàng)建一套布局。
values目錄有如下內(nèi)容等。
demens.xml:定義尺寸資源
string.xml:定義字符串資源
styles.xml:定義樣式資源。
此外項(xiàng)目比較大時(shí)會(huì)有:colors.xml:定義顏色資源;arrays.xml:定義數(shù)組資源。
超速報(bào)警硬件實(shí)物如圖7所示。上電工作,LCD屏幕上第一行顯示:“V:0 km/h VH:20”,第二行:“T:000 S:00.000Km”分別代表“車速、最高速度、時(shí)間、距離”等信息。
接著打開手機(jī)客戶端,搜索藍(lán)牙,手機(jī)界面如圖8所示。

圖7 語(yǔ)音超速報(bào)警器硬件實(shí)物圖
連接單片機(jī)設(shè)備后,App屏幕上即時(shí)顯示當(dāng)前車速、行駛距離、行駛時(shí)間、最高速報(bào)警值。還有報(bào)警閾值設(shè)定“減1/加1”功能;App客戶端運(yùn)行展示如圖9所示。
直接在報(bào)警系統(tǒng)上對(duì)直流電機(jī)加/減速時(shí),LCD1602上的車速、距離、時(shí)間隨之發(fā)生變化;通過藍(lán)牙連接上手機(jī)APP后,車速、距離、時(shí)間隨系統(tǒng)上的數(shù)值同步變化,保持一致。

圖8手機(jī)藍(lán)牙搜索界面 圖9 手機(jī)屏幕同步顯示
本系統(tǒng)滿足了功能要求,不僅能語(yǔ)音提示,還可以在手機(jī)客戶端實(shí)時(shí)了解車速狀況,操作簡(jiǎn)單方便,反應(yīng)靈敏、報(bào)警迅速,給車主帶來極大的便利, 能有效提醒駕駛員在開車時(shí)安全駕駛,系統(tǒng)具備較好的推廣和市場(chǎng)應(yīng)用價(jià)值。