曾令超,伍銀波,周衛(wèi)
(1.廣東技術師范大學,廣東廣州,510665;2.深圳宇信和科技有限公司,廣東深圳,518000)
隨著我國社會水平的提升,我國的高速公路和智慧停車場也在這個過程中得到了較大程度的發(fā)展。而隨著我國高速公路和停車場數(shù)量的增多、規(guī)模的加大,過往車輛數(shù)量也在不斷增加。但目前人工通道的崗亭的發(fā)卡機和繳費機均為固定安裝在崗亭靠近車主的一側[1]這樣就需要車主停在合適的位置取卡或者還卡,甚至是下車,這種現(xiàn)象在交通高峰期是勢必會造成擁堵現(xiàn)象。對于人工收費的停車場,在面對節(jié)假日大量的游客旅游時,需要收費不停的收卡和發(fā)卡也會給景區(qū)造成一定的擁堵,此時自動收發(fā)卡機應運而生。目前發(fā)卡機和繳費機均為固定式安裝,車主停車位置稍偏或者臂長較短時,取還卡十分困難,更有甚者需要下車取卡。用戶體驗差,且在高峰期容易造成出入口擁堵。通過設計一款車輛收費的云平臺智能卡機可解決上述難題,提升用戶的使用體驗。
系統(tǒng)整體結構圖如圖1所示,其中裝置和云平臺之間數(shù)據(jù)交互是基于WiFi的MQTT(Message Queuing Telemetry Transport,消息隊列遙測傳輸)協(xié)議,而移動用戶端和云平臺數(shù)據(jù)交互則是基于移動通信網絡的MQTT協(xié)議。整體系統(tǒng)分為三部分構成,分別為收發(fā)卡機硬件、OneNET云平臺[2-6]以及移動用戶端。智能伸縮式驅動裝置通過超聲波測距模塊采集數(shù)據(jù)來判斷車輛是否到位,以此精確計算出車主位置同時伸出合適的距離去收卡或者發(fā)卡。通過語音識別模塊來接收車主用戶的指令,并且增加了語音播報模塊跟車主進行語音交互來進一步提升用戶體驗。最后將電機的狀態(tài)和超聲波測距模塊收集的數(shù)據(jù)通過WiFi模塊上傳到云端進行監(jiān)控和數(shù)據(jù)分析,同時云端也可以對智能伸縮式驅動裝置下發(fā)一些控制指令來實現(xiàn)遠程控制,及時處理機器故障導致的事故和在線升級等遠程操作。
圖1 系統(tǒng)整體結構圖
微控制器裝置的硬件包括ARM處理器、超聲波測距模塊、供電系統(tǒng)、按鍵模塊、限位開關、求助按鈕以及撥碼開關,主要的工作是數(shù)據(jù)的采集,將收集的數(shù)據(jù)轉換成MQTT協(xié)議通過WiFi模塊上傳至OneNET云平臺以及控制步進電機完成整個工作流程,并為整個系統(tǒng)提供穩(wěn)定的電源。整個系統(tǒng)的外設需要用到的I/O口不是很多,因此本裝置選用了一款高性能、性價比高的STM32F103C8T6,該芯片具有20KB的SDRAM和64KB的Flash,外設資源包括1個高級定時器、3個通用定時器、2個SPI通信接口、3個串行通信接口和36個GPIO口,外設資源完全滿足本系統(tǒng)設計需求。
220V市電輸入電路經過安規(guī)電容、電感濾波器等器件,降低EMI,盡可能提供給系統(tǒng)穩(wěn)定的電源并且能通過國內3C的要求,保證產品的質量。通過5V穩(wěn)壓管和3.3V穩(wěn)壓管為單片機、其他芯片和電機提供相應等級的電源電壓。
兩個超聲波測距模塊電路接口圖如圖2所示,超聲波測距模塊用來測量車輛與智能伸縮式驅動裝置的距離,通過ARM對其做進一步的數(shù)據(jù)處理再上傳云平臺。本設計采用的是HC-SR04模塊,該模塊性能穩(wěn)定,測度距離精確。能和國外的SRF05,SRF02等超聲波測距模塊相媲美。模塊高精度,盲區(qū)極小,測距十分穩(wěn)定。其原理為通過Trig來觸發(fā)測距,輸出至少10μs的高電平信號;模塊會自動發(fā)送8個40kHZ的方波來檢測是否有信號返回;若有信號返回,則通過I/O口Echo輸出一個高電平,高電平持續(xù)的時間就是超聲波從發(fā)射到返回的時間[7]。
圖2 超聲波測距模塊接口電路圖
通信接口電路圖如圖3所示,通信模塊采用的是ESP8266 WiFi模塊,此模塊硬件接口豐富,可支持UART,IIC,PWM,GPIO,ADC等,適用于各種物聯(lián)網應用場合。ARM微處理器通過發(fā)送WiFi模塊寫好的AT指令協(xié)議來連接上當?shù)氐木钟蚓W(私網),再由局域網連接上遠程服務器(公網),數(shù)據(jù)通過ARM處理器打包成MQTT協(xié)議上傳到OneNet云平臺進行解包成可讀數(shù)據(jù)顯示到網頁或者手機的APP上,用戶可以隨時掌握卡機的情況,同時可以通過之前封裝好的APP按鍵模塊對收發(fā)卡機進行MQTT協(xié)議下發(fā)到ARM處理器,ARM處理器通過將MQTT協(xié)議的指令解包后執(zhí)行相應的控制指令[3]。
圖3 通信模塊接口電路圖
語音識別模塊接口電路如圖4所示,LD3320提供的語音識別技術,是基于關鍵詞語列表的識別技術,語音識別芯片完成的工作就是:把通過MIC輸入的聲音進行頻譜分析;提取語音特征;關鍵詞語列表中的關鍵詞語進行對比匹配;找出得分最高的關鍵詞語作為識別結果輸出。這款語音識別芯片能在兩種情況下給出識別結果:(1)外部送入預定時間的語音數(shù)據(jù)后(比如5秒鐘的語音數(shù)據(jù)),芯片對這些語音數(shù)據(jù)運算分析后,給出識別結果;(2)外部送入語音數(shù)據(jù)流,語音識別芯片通過端點檢測VAD(voice activity detection)檢測出用戶停止說話,把用戶開始說話到停止說話之間的語音數(shù)據(jù)進行運算分析后,給出識別結果;對于第一種情況,可以理解為設定了一個定時錄音(比如為5秒鐘),芯片在5秒鐘后,會停止把聲音送入識別引擎,并且根據(jù)已送入引擎的語音數(shù)據(jù)計算出一個識別結果;對于第二種情況,需要了解VAD的工作原理:VAD技術是在一段語音數(shù)據(jù)流中,判斷出哪個時間點是人聲的開始,哪個時間點是人聲的結束。判斷的依據(jù)是,在背景聲音的基礎上有了語音發(fā)音,則視為聲音的開始。而后,檢測到一段持續(xù)時間的背景音(比如600毫秒),則視為人聲說話結束。通過VAD判斷出人聲說話的區(qū)域后,語音識別芯片會把這期間的聲音數(shù)據(jù)進行識別處理后,計算出識別結果。LD3320語音識別芯片在集成語音識別處理器和外部電路的同時,還包括A/D和D/A轉換器、麥克風接口和聲音輸出接口等[8]。并且,識別的關鍵詞語列表是可以任意動態(tài)編輯的,大大的降低了人工智能訓練的成本,通過SPI總線傳輸數(shù)據(jù)來實現(xiàn)編輯關鍵詞語列表以及一些狀態(tài)量的上傳。
圖4 語音識別模塊接口電路圖
語音播報接口電路圖如圖5所示。本模塊采用SYN6288語音模塊,采用SSOP封裝,體積小巧且可以通過串口與主控單片機連接,接收串口發(fā)送來的文本,實現(xiàn)文本到中文語音的轉換,低成本實現(xiàn)簡單的語音播報功能。其功能特點有:(1)支持GB2312、GBK、BIG5和UNICODE內碼格式的文本;(2)每次合成的文本量最多可達200字節(jié);(3)支持多種控制命令,包括:合成,停止,暫停合成,繼續(xù)合成,改變波特率等;(4)支持休眠功能,在休眠狀態(tài)下可降低功耗,支持多種方式查詢芯片狀態(tài);(5)支持串口數(shù)據(jù)通訊接口,支持三種通信波特率:9600,19200,38400;(6)支持16級音量調整,播放文本的前景音量和播放背景音樂的背景音量可分開控制;(7)可通過發(fā)送控制標志調節(jié)詞語語速,支持6級詞語語速調整;(8)芯片內固化有多首和弦音樂、提示音效和針對某行業(yè)領域的常見語音提示音;(9)內部繼承19首聲音提示音,23首和弦提示音,15首背景音樂;(10)內置10bit推挽式、可獨立供電的功放,進行數(shù)模DAC輸出。
圖5 語音播報模塊接口電路圖
單片機程序設計采用模塊化形式,以便以后進行單片機程序設計時方便移植??傮w設計方式采用對任務的進行不斷輪詢,同時有任務調節(jié)器來應對突發(fā)情況來完成此次設計,其中模塊包括無線通信模塊、數(shù)據(jù)采集模塊、語音交互模塊以及電機控制模塊。
智能伸縮式驅動裝置中的主程序控制部分主要完成的功能是無線通信、語音交互、數(shù)據(jù)采集以及電機控制。系統(tǒng)初始化后,任務調度器優(yōu)先執(zhí)行無線通信任務,每5s將各種數(shù)據(jù)上傳到云平臺,且接收云平臺下發(fā)的控制指令。在這個時間間隙中進行數(shù)據(jù)采集任務和語音交互任務,當數(shù)據(jù)發(fā)生異常時會發(fā)出電機停止命令,此時任務調度器會去執(zhí)行電機控制任務,然后在異常反饋給云平臺進行故障排除等。數(shù)據(jù)各方面正常后執(zhí)行語音交互任務,根據(jù)用戶說的語言來執(zhí)行語音交互任務和電機控制任務。
智能伸縮式驅動裝置通過調用AT指令連上當?shù)氐木钟蚓W,并配置好相應的API和鑒權信息才能通過MQTT協(xié)議與云端進行上傳距離數(shù)據(jù)和電機的運行情況,同時也可以接收云端下發(fā)的控制命令。
數(shù)據(jù)采集模塊主要由超聲波測距模塊采集數(shù)據(jù),要對超聲波進行發(fā)出和接收,通過將定時器初始化成輸入捕獲,將Trig和Echo口拉為低電平,向Trig口輸送20us的高電平脈沖,此時超聲波模塊可以捕捉到Echo的上升沿,同時打開定時器開始計時并將數(shù)據(jù)傳送到ARM微處理器進行判斷,同時清除標志位進行下一次的信號捕捉[9]。
智能伸縮式驅動裝置通過語音識別模塊來收集語音特征值,語音識別的程序需要語音識別初始化、寫入識別列表以及開始識別并準備好中斷響應函數(shù),打開中斷允許位。如果麥克風采集到聲音,不管是否識別正確,都會產生一個中斷信號。而中斷程序要根據(jù)寄存器的值分析結果。讀取 BA 寄存器的值,可以知道有幾個候選答案,而 C5 寄存器里的答案是得分最高、最可能正確的答案。語音播報模塊通過ARM微處理器發(fā)送控制指令即可實現(xiàn)文本到語音(或TTS語音)的轉換。
電機控制模塊是將電機抽象成一個包含電機當前狀態(tài)與目標狀態(tài)的結構體。通過修改結構體中的相應的電機參數(shù),能夠自動算出步進電機的控制量,由于其中的開環(huán)控制沒有反饋,故直接修改脈沖頻率對電機進行加減速。同時該電機控制模塊可以根據(jù)設定的路程與最大加速度進行速度規(guī)劃。通過不斷檢測當前電機位置進行實時速度控制與調整,保證步進電機的啟停運動中能夠在電機物理性能內,防止丟步現(xiàn)象的發(fā)生[10]。
任務制調度器時當數(shù)據(jù)采集任務特別是超聲波模塊采集的數(shù)據(jù)出現(xiàn)異常時,任務調度器會優(yōu)先讓ARM處理器去執(zhí)行電機控制任務中的停止動作,并上報異常給云平臺。
智能伸縮式驅動裝置的伸縮距離算法首先根據(jù)根據(jù)車輛檢測模塊獲取的S1和S2,二者求平均值計算出S3。然后從FLASH存儲器中讀取S4、S5、Kd,根據(jù)下式子計算伸縮距離S:
其中各參數(shù)含義如下:
S1:超聲波接收單元1測得的距離;
S2:超聲波接收單元2測得的距離;
S3:車輛到卡機面板的距離,為S1和S2的平均值;
S4:司機座椅車床側邊緣局車窗的距離,維護人員根據(jù)車型設置;
S5:車主上肢長,根據(jù)設備使用地區(qū)自動匹配當?shù)厝说钠骄现L,由維護人員設置,使用時讀取;
Kd:臂長系數(shù),由維護人員設置,使用時讀取。
OneNet平臺支持云端和手機APP控制,可以實時接收來自智能伸縮式驅動裝置上傳的超聲波測距模塊1和2的數(shù)據(jù),同時也可以下發(fā)控制命令控制步進電機,實現(xiàn)云端和智能伸縮式驅動裝置的交互。
通過綜合運用嵌入式開發(fā)技術、模塊化軟件設計和云平臺技術完成了收費卡機智能面板驅動裝置的開發(fā),有效解決了目前在高速公路的人工通道上的自動收發(fā)卡和人工停車場的智能收發(fā)卡存在的一系列問題,同時可以利用云平臺來進行遠程監(jiān)控和操作,大大提升的設備維護的方便性和應對突發(fā)情況的能力。