李云強,魯慶賓,張凌曉
(1.南陽理工學院 計算機與信息工程學院, 河南 南陽 473004;2.同濟大學 道路與交通工程教育部重點實驗室, 上海 201804)
超速駕駛導(dǎo)致的車禍悲劇每時每刻都在發(fā)生,在汽車上安裝超速報警器會在一定程度上減少因超速行駛引起的交通事故數(shù)量。通過對現(xiàn)有超速報警器的分析,設(shè)計新型超速報警器,增加語音智能提醒功能。超速時,報警器以聲光方式提醒駕駛員進行減速,克服惡劣天氣對顯示屏的影響,確保安全駕駛,并通過藍牙連接智能手機APP,駕駛員根據(jù)不同的路況,設(shè)置不同速度報警值,實時同步顯示當前速度,增強應(yīng)用效果。
基于STC8952RC的超速報警系統(tǒng)原理,如圖1所示,主要由上位機和下位機兩部分組成。下位機包含STC89C52單片機、車速測量部分(直流電動機、測速傳感器(霍爾傳感器測速))、液晶顯示、語音模塊(BY8301-16P)、串口藍牙(HC-06)和按鍵構(gòu)成。工作時,LCD1602液晶屏實時顯示速度值,可通過按鍵設(shè)置速度的報警閾值,當車速超過預(yù)定閾值,BY8301-16P語音模塊發(fā)出真人聲音提醒駕駛員減速慢行。
上位機通過HC-06藍牙連接智能手機客戶端App,具有實時數(shù)據(jù)顯示、刪除、歷史數(shù)據(jù)查看、報警提示和設(shè)定車速報警值等功能。
圖1 超速報警系統(tǒng)總體結(jié)構(gòu)
硬件電路結(jié)構(gòu)如圖2所示,主要由控制主機STC89C52和車速模擬(直流電機)、液晶顯示、有源蜂鳴器、語音模塊、揚聲器、串口藍牙等部分組成。
2.1.1直流電動機
直流電機的轉(zhuǎn)動模擬車速,直流電機與其連接簡單,方便調(diào)節(jié)速度,可靠性高。直流電動機電路圖如圖2(b)所示。直流電動機模擬車速,定時器外部中斷函數(shù)對其進行監(jiān)測,并把數(shù)據(jù)保存到寄存器,為后面的函數(shù)設(shè)計提供數(shù)據(jù)。
2.1.2霍爾傳感器(測速器元件)
霍爾傳感器是磁場傳感器,為測速元件,由傳感頭、磁場傳感器和齒圈組成。傳感頭包括霍爾元件、永磁體和電子電路等?;魻杺鞲衅髟砣鐖D3所示。
共4個按鍵,S1在電源部分,負責整個系統(tǒng)的啟動、關(guān)閉;S2在電機驅(qū)動上,負責直流電動機的啟動、關(guān)閉。SK1、SK2則控制超速速度報警值的增加、減少。SK1、SK2和89C52單片機的P3.3、P3.4引腳相連接,如圖2(f)所示。設(shè)計按鍵函數(shù)完成該功能,當按鍵按下時,函數(shù)啟動;加鍵按下時,速度報警值加1,最高報警值為99;減鍵按下時,速度報警值減1,最低報警值為0。
報警電路包括蜂鳴器(圖2(d))和語音提醒電路(圖2(e)):蜂鳴器與單片機的引腳P1.0連接,語音報警模塊與單片機的引腳P2.2連接。
當行駛速度超過設(shè)置的報警值時,發(fā)出警告。語音提示“請注意,你已超速,請注意安全”,同時蜂鳴器發(fā)出滴滴聲,指示燈閃爍。
圖2 超速報警器硬件系統(tǒng)整體電路結(jié)構(gòu)連接圖
圖3 霍爾傳感器的工作原理
BY8301-16P串口語音模塊有16個引腳,如圖4所示。它有6個觸發(fā)IO口,是24位DAC輸出,動態(tài)范圍支持90 dB,信噪比支持85 dB;Micro USB接口更新語音文件,無需安裝上位機軟件,支持XP和WIN7系統(tǒng)。
引腳1、2:分別是SPK2、SPK1,外接單聲道無源喇叭兩端;引腳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是播放時輸出高電平,停止為低;引腳10~15:IO6-IO1是觸發(fā)輸入口,接地觸發(fā);引腳16:GND負極。
圖4 語音芯片
向用戶直觀呈現(xiàn)車速行駛狀況實時的速度、行駛時間、行駛路程、超速報警值等信息。LCD_1602的A引腳D0接89C52的VCC,D0~D7分別與單片機的P0.0~P0.7相連接,K接地,如圖2(h)所示。
串口藍牙HC-06模塊體積小巧,方便安裝與設(shè)置,可實現(xiàn)超速報警系統(tǒng)與智能手機APP之間的通信。
輸入電壓:3.6~6 V;TXD:發(fā)送端;RXD:接收端;與單片機的P3.0、P3.1進行連接。STATE:藍牙連接狀態(tài)輸出引腳,連接時輸出高,未連接時輸出低。當系統(tǒng)啟動后,串口藍牙上的燈亮,表示初步連接成功。
系統(tǒng)軟件包括主程序及各模塊功能子程序。超速報警系統(tǒng)軟件工作流程如圖5所示。
圖5 超速報警軟件工作流程
主程序主要實現(xiàn)對參數(shù)初始化、調(diào)用一些其他功能模塊子程序。如對信號輸入引腳、按鍵、蜂鳴器等參數(shù)初始化進行變量定義,為其他程序提供數(shù)據(jù)。比如計數(shù)變量、速度和里程變量就是為報警函數(shù)提供數(shù)據(jù)。
子程序包括液晶顯示、按鍵處理子程序、報警、發(fā)送數(shù)據(jù)給APP、接收APP控制指令、定時器中斷執(zhí)行等功能。
如單片機和手機App之間進行收發(fā)信息通過HC-06串口藍牙,則設(shè)計sendtoapp()函數(shù)和rxappdata()函數(shù)實現(xiàn)此功能。
手機客戶端App實現(xiàn)對超速報警系統(tǒng)采集數(shù)據(jù)的實時更新和同步顯示,且可對速度報警閾值進行設(shè)定。
用Android Studio軟件,采用Java語言開發(fā)手機客戶端App代碼。
手機端要工作,首先要連接藍牙,通過藍牙與測速報警系統(tǒng)通信,藍牙通信過程如圖6所示。
圖6 藍牙工作流程
整個編碼的過程,首先啟動藍牙,然后傳輸信息,最后程序打包。
啟動藍牙功能:藍牙啟動后,要找到藍牙信息傳輸入口點,使用本地藍牙適配器類。設(shè)置設(shè)備可以被搜索,對當前藍牙設(shè)備進行查詢,看藍牙設(shè)備處在哪個狀態(tài),進行相應(yīng)的操作。
信息傳輸:藍牙通信監(jiān)聽時設(shè)計的主要函數(shù)有:connect()請求藍牙連接;getInptuStream()獲取輸入流,用來接收遠程方信息;getOutputStream()獲取輸出流,發(fā)送給遠程方的信息;getRemoteDevice()獲取遠程設(shè)備;close()關(guān)閉藍牙連接。
APP的打包:App代碼編寫完成后,進行打包,生成APK文件。
操作藍牙時,要先在xml文件里加入權(quán)限代碼,即設(shè)置軟件編譯開始的位置。
藍牙連接時,存放代碼文件夾命名為BT_chesuji;代碼主要存放在main文件夾里java資源文件和res兩個文件夾里。
java資源文件:實現(xiàn)業(yè)務(wù)功能的代碼,放在java文件夾里。其中BTJDQ.java是用來處理單片機,藍牙和手機之間的信息傳輸,設(shè)置設(shè)備可以被搜索,如果藍牙服務(wù)不可用,則進行提示;可用,則進行信息傳遞,實現(xiàn)藍牙數(shù)據(jù)的接收,對報警值是否增加或者減少進行反饋;Net.java則是對文件進行讀取并保存。
res資源文件:用來存放資源文件,包含圖片資源和布局資源。
圖片資源:如drawable,存放各種位圖文件,比如png形式的圖片,jpg形式的圖片等。
布局資源:用來布局的代碼頁面,放在layout文件夾里,當需要屏幕適配時,根據(jù)情況,會再創(chuàng)建一套布局。
values目錄有如下內(nèi)容等。
demens.xml:定義尺寸資源
string.xml:定義字符串資源
styles.xml:定義樣式資源。
此外項目比較大時會有:colors.xml:定義顏色資源;arrays.xml:定義數(shù)組資源。
超速報警硬件實物如圖7所示。上電工作,LCD屏幕上第一行顯示:“V:0 km/h VH:20”,第二行:“T:000 S:00.000Km”分別代表“車速、最高速度、時間、距離”等信息。
接著打開手機客戶端,搜索藍牙,手機界面如圖8所示。
圖7 語音超速報警器硬件實物圖
連接單片機設(shè)備后,App屏幕上即時顯示當前車速、行駛距離、行駛時間、最高速報警值。還有報警閾值設(shè)定“減1/加1”功能;App客戶端運行展示如圖9所示。
直接在報警系統(tǒng)上對直流電機加/減速時,LCD1602上的車速、距離、時間隨之發(fā)生變化;通過藍牙連接上手機APP后,車速、距離、時間隨系統(tǒng)上的數(shù)值同步變化,保持一致。
圖8手機藍牙搜索界面 圖9 手機屏幕同步顯示
本系統(tǒng)滿足了功能要求,不僅能語音提示,還可以在手機客戶端實時了解車速狀況,操作簡單方便,反應(yīng)靈敏、報警迅速,給車主帶來極大的便利, 能有效提醒駕駛員在開車時安全駕駛,系統(tǒng)具備較好的推廣和市場應(yīng)用價值。