穆向陽,周思迪,張嘉偉,劉浩,王博通,李磊
(1.西安石油大學大學電子工程學院學院,西安710065;2.西安石油大學大學,陜西省油氣井測控技術重點實驗室,西安710065)
汽車作為日常生活出行的重要交通工具,與車內人員的安全緊密聯系在一起,當有人員發生交通事故(尤其是在郊外)無法自救以及被困或長時間滯留車內,在無代理人施救以及車內環境(尤其是溫濕度)超過人體承受范圍的情況下,容易因未能及時施救而造成危及生命安全的嚴重后果。尤其是對行動不便、缺乏基本判別能力的弱勢群體,對于他們,更需要采取周到的監測與救援保護措施。
由劉元提出的通過無線蜂窩網絡GSM與GPS對車輛進行定位與報警[1],解決了對車輛進行定位的問題,但其報警的通道僅僅是發送短信,并未真正意義上達到“物”連“網”,且形式很單一。凱迪拉克推出的SRX系列,其前排車頂后視鏡后方帶有乘客偵測功能,當該功能啟動時,如果車主關閉門窗離開,而此時車內仍留有可移動的物體(例如小孩),車輛便會發出鳴笛和亮燈警告,提醒車主注意[2]。但這種報警方式比較傳統,在車內小孩睡著情況下,并不會觸發報警,即使最后小孩醒了也被偵測到了,而此時車主已不在車附近,根本聽不到報警,車外人員即使聽到報警也無法聯系車主,所以施救就相當困難。
針對于此,本設計是一款集報警救援于一體的車載裝置,并與物聯網、手機移動端實現互聯,以Wi-Fi控制模塊作為裝置的數據傳輸模塊與單片機相連,使用開源硬件Arduino單片機作為控制器,并使用中國移動公司旗下的OneNet作為物聯網平臺來實現數據與手機移動端二者共享,以GPRS模塊作為手機通信模塊。
本文設計了一種基于物聯網的車輛監控系統。設計分為以下幾個部分:
(1)車載終端(下位機)。車載終端設備包括:微處理器(MCU)、熱釋電紅外和溫濕度傳感器、GPS、GPRS模塊等。主要有定位、通信等功能。
(2)無線數據上傳。無線數據通信作為控制中心與各監測模塊進行信息交換的樞紐,在本次設計中選用GPRS無線數據網通信系統。
(3)監控中心(上位機)。監控中心采用一臺普通的計算機或者手機。本次設計采用OneNet平臺作為監控中心平臺,計算機或手機App(設備云),采用這些模塊的好處是可以利用其上網功能,在平臺界面上可以進行簡單的信息查詢并帶有地圖的操作界面,可顯示車輛實時位置,包括經緯度等。最終實現上下位機之間的通訊。監控系統示意圖如圖1所示。

圖1 監控系統示意圖
本研究硬件部分主要包括:本地監測單元、SIM900A通信模塊、Arduino UNO主控器、報警單元。預設傳感器報警條件(超過設定閾值)和碰撞條件(模擬開關打開),且和GPS通過數字串口連接來實現主控器與其之間的數據傳輸;SIM900A和手機端分別通過HTTP(POST)協議和HTTP(GET)協議與OneNet云實現數據透傳和獲取;一旦系統確認發生碰撞或有人滯留車內,就會觸發GPRS模塊向家人手機發送求救電話/信息以及本地聲光報警,從而告知家人和周邊人員前去救援,最終實現多層次的報警救援。硬件系統結構如圖2所示。

圖2 系統硬件結構
本研究監測單元由DHT11溫濕度及HC-SR501紅外熱釋電傳感器組成。DHT11溫濕度傳感器具有體積小、功耗低,信號傳輸距離遠(可達20米以上)等優點[3],它是一款含有已校準數字信號輸出的單線制串行接口復合傳感器。將DHT11溫濕度傳感器與一個高性能8位單片機相連接,在濕度校驗室中進行精確校準,可以有效地監測車內高溫或低溫環境因素,具有品質卓越、超快響應、抗干擾能力強等優點。
2號引腳用于微處理器與DHT11之間的通訊和同步,通信一次時間4ms左右,由MCU發送一次開始信號后,DHT11接收到開始信號并發送響應信號,送出數據并觸發一次信號采集,如果沒有接收到主機的開始信號,DHT11不進行濕溫度采集。
圖4為熱釋電傳感器的內部結構,由濾光片、熱釋電探測元和前置放大器組成,HC-SR501的原理圖如圖3所示,由LHI778采集紅外信號,OP1將信號放大,再由C3耦合至運放OP2進行第二級放大,將輸出信號V2由COP1和COP2構成的雙向鑒幅器處理,檢出有效觸發信號Vs去啟動延遲時間定時器,最終得到輸出信號Vo。
輸出延遲時間Tx為:
Tx≈24×103VR9C6
觸發封鎖時間Ti為:
Ti≈40×R10C7
由于默認靈敏度達7m,與實際設計不符,故調節VR6改變第二級運放的放大倍數來調整傳感器的靈敏度。調節VR9改變延遲輸出時間,通過多次測試,當A=2.5時,檢測靈敏度最低,約為3m,且延遲時間為5s時可將傳感器調整達到最佳符合狀態。

圖3 HC-SR501原理圖
GPRS通信模塊在車載監測救援系統中的主要作用是與監控中心進行通訊。本研究采用U-BLOX NEO-6M模組,通過MCU把車輛相關數據發送給GPRS通信模塊,通過無線通信方式將定位信息發往監控中心,監控中心可以準確地對目標車輛進行跟蹤和監控。
GPS定位基本原理如圖5,根據高空衛星的瞬間位置作為起算數據,通過在地面安置GPS接收器,計算從某一t時刻開始,GPS信號從衛星到達接收器的時間Δt(i=1,2,3,4)確定以下四個方程式:

圖4 GPS定位基本原理圖

其中,x、y、z和Vt0為未知參數,di=cΔti(i=1,2,3,4),di(i=1,2,3,4)表示衛星到地面接收器的距離;c為GPS信號的傳播速度(即光速);Vti(i=1,2,3,4)分別為衛星1~衛星4的衛星鐘的鐘差,(衛星星歷提供);Vt0為接收機的鐘差。由以上四個方程即可解算出待測點的坐標x、y、z和接收機的鐘差Vt0。
SIM900A與U-BLOX系列GPS配套工作,實現室內百度APIIP定位與室外GPS定位雙定位模式與短信電話報警功能,保證系統高可靠性。SIM900A與UBLOX GPS統一使用TTL電平的串行協議與MCU之間進行數據通信傳輸。Arduino UNO實時接收通信模塊傳回的定位信息,并打包存儲,在安全氣囊或者監測到車內有人滯留的情況下,通過AT指令集控制SIM900A模塊,以短信模式加載GPS信息并撥打報警短信電話到家人手機上,同時LED燈與有源蜂鳴器實現系統及時提醒使用者的預防性與引起周圍群眾注意的警示性,保證報警的可靠性、信息的準確性。
系統主程序設計流程圖如圖5所示。程序運行開始,進行波特率、Arduino I/O端口及GPRS的初始化。考慮到定位信息的重要性,故首先對讀取GPS幀數據進行循環判斷,當成功定位后(非INVALID),對經緯度數據進行解析;再執行獲取溫濕度和熱釋電數據等其他數字口數據信息;之后GPRS模塊連接OneNet平臺,完成數據上傳;當熱釋電傳感器檢測到車內有人,立即退出檢測循環并執行聲光報警和短信電話提示;同樣,當車輛的安全氣囊模擬開關打開后同樣會觸發電話短息報警。最終完成系統的自動監測報警求助。由于本次設計的關鍵在于GPS與GPRS能否及時響應觸發事件,功能分析如圖5所示。

圖5 系統主程序設計流程圖
通過NMEA-0183協議獲取需要的幀數據GPRMC,并從中將經緯度信息解析出來。其主要程序流程如圖6所示,在對GPS初始化后首先對其進行數據有效性的判斷,當確定數據為有效后需要對獲取的信息進行GPMRC幀數據判斷和解析,由于GPMRC句型基本格式為:$GPRMC(1),(2),(3),(4),(5),(6),(7),(8),(9),(10),(11),(12)*hh(CR)(LF),其中需要獲取的經緯度信息為(3)~(6),通過采用函數strstr(),memcpy()來從該語句中提取兩個逗號地址間的數據信息,并將相應數據存放于Save_Data結構體下[4]。
將獲取的經緯度及傳感器數據通過通信模塊上傳至OneNet物聯網平臺,等待報警處理。

圖6 GPS幀數據解析流程圖
完成數據采集、處理后,通過平臺支持的HTTP協議進行車載裝置與平臺的連接將數據以POST(透傳)的方式發送到OneNet云服務端,根據JSON格式,在建立通信后,上下位機通過數據流(stream)的方式進行通信[5],將車內采集到的GPS參數及溫濕度參數分為三條數據流(streams)與三個數據點(datapoints),并在子函數中將輸入的參數封裝成JSON格式。
其中,sensor_id_temp為數據流名稱(溫濕度、經緯度),value_str為實測數據。并準備HTTP報頭,完成主體發送,部分程序如下:
strcat(send_buf,"POST/devices/");
strcat(send_buf,device_id_temp);
strcat(send_buf,"/datapoints HTTP/1.1 ");
strcat(send_buf,"api-key:");
strcat(send_buf,API_VALUE_temp);
strcat(send_buf," ");
strcat(send_buf,"Host:");
strcat(send_buf,OneNetServer);
strcat(send_buf," ");
sprintf(tmp,"Content-Length:%d ",strlen(text));//計算JSON串長度
然后在上述基礎上構建完成JSON格式的數據流和HTTP報頭,利用終端設備與PC應用之間的連接與通信的AT指令:CIPSTART、CIPSEND、CIPCLOSE、CIPSHUT,實現與平臺服務器的連接與數據發送。本次設計中所用到的關于SIM900A模塊的AT命令如下面的代碼所示。每條AT命令執行后都要有相應的狀態返回。
經調試,成功實現網絡附著、與服務器平臺的連接及數據發送,同樣利用AT指令集實現報警短信發送及電話撥打,考慮到短信內容為中英文且字符數多,因此采用短信的PDU模式,實現的關鍵步驟如下:
Serial.println("AT+CMGF=0");//PDU模式
Serial.println("AT+CMGS=34");//PDU模式下短信內容字符數
Serial.print("0891***FF01");//第一條短信內容為車內有人,請求救援!
Serial.write(0x1A);//將短信發送出去
Serial.println("ATD137***9535;");//電話撥打
完成了系統軟硬件的搭建后,對系統進行調試,設置好家人手機號碼并在SIM900A卡槽插入SIM卡,讓測試者使用車載裝置進行了功能測試。當將測試者被鎖在車內,經熱釋電傳感器檢測后,首先會觸發蜂鳴器和LED燈發出10次的聲光報警,隨后設定的家人手機會收到發出的帶有OneNet的URL鏈接報警短信和求救電話;當打開安全氣囊的模擬開關后,同樣會收到求救電話和短信;如圖7-9所示,在收到報警短信后,打開地址鏈接進入OneNet的頁面可以直接在百度地圖上查看測試者的位置、時間及車內環境數據[6],此時,家人可根據這些信息及時選擇合適的營救措施,及時地避免了不必要的人員和財產損失。

圖7 發生滯留與碰撞短信

圖8 報警電話

圖9 OneNet云端 手機頁面
基于車載監測報警救援的客觀需求以及結合物聯網技術,系統通過車載裝置、OneNet云平臺和移動端相結合實現了多層次的監測報警救援,針對車主的安全保護采取多重監測措施,同時避免了對車體的影響,提高了監測報警的針對性,克服了傳統車載報警裝置單一的局限性。實驗證明,系統可實現車輛精確定位、對人員滯留及車輛碰撞情況自動報警、救援通信等功能,該設計成本不高,性能較好,符合現實需求,可為汽車用戶提供安全出行保障,具有較高的市場價值。