馬 廣,柯錦超,陳娜佳,王 震,周偉志
(北京理工大學珠海學院 計算機學院,廣東 珠海 519085)
隨著中國經濟的增長,國內機動車數量隨之增加,越來越多的交通事故給社會環境和生命安全帶來了嚴重威脅。交通安全問題不僅涉及車輛自身,更與交通環境密不可分,因此開發一個智能化的車載系統也日漸重要。
據調查顯示,目前的自治安全系統基于反應式機理,并且依賴于自治傳感器(雷達、激光雷達、攝像頭等)在給定時間內的實時反饋,自治傳感器的覆蓋范圍有限,缺乏協同性,并且存在盲區、適應性有限等問題。車載自組網(vehicular ad hoc networks,VANET)[1]將車輛間無線通信和高精度定位技術融合到車輛傳感器組件中,可以提供超視距提前感知能力[2],在主動安全系統匯總引入預期或前饋行為,能夠實現協作式駕駛應用。文獻[3]的協作式安全系統使駕駛員有更長的反應時間避免進入危險駕駛情況,從而減少其他主動安全系統或被動安全系統的需求。
VANET是指在交通環境中車輛之間相互通信組成的開放式ad hoc網絡[4],其目的是為了在道路上構建一個自組織的、費用低廉、部署方便的車輛間通信網絡,提供無中心、自組織、支持多跳轉發的數據傳輸能力,以實現事故預警、信息查詢、輔助加時、道路交通車間通信和Internet接入服務等應用[5]。
因此,為了解決眾多交通安全問題,研發了基于VANET的車輛協作系統,利用VANET所提供的超視距感知能力來提高駕駛員和周圍環境的安全,并且有利于節省油耗、增加舒適度以及減少環境(如路面結冰)帶來的影響。同時,系統具備與其他網絡互連的能力,能夠提供多種信息增值服務,為駕駛員提供安全應用。在駕駛員間建立易操作的實時通信,從而優化目前的交通環境。
該系統是一個基于VANET模式[6],搭建在S5P4418開發平臺的車載系統,旨在解決車輛間溝通難、車輛本身安全等問題。
基于VANET的車輛協作系統是將GPS、LTE、GIS等與嵌入式硬件技術相結合的高科技產物,車載終端主要由GPS模塊、語音識別模塊、中控模塊等構成。GPS模塊接收衛星數據并通過LTE模塊向基站發送數據實現GIS信息查詢;中控模塊由nano pi2-S5P4418平臺構成,負責數據處理和分析;數據采集端為C51單片機,負責數據采集,實現車載通信、緊急指示牌、道路交通信息、車內環境智能檢測、自動緊急呼救等功能。通過自組網在汽車與汽車之間,用戶與汽車之間建立通信協議,簡化操作使用戶能夠與汽車進行交互,汽車駕駛員之間能通過自動搜索附近車牌對應的IP進行一鍵實時語音對話,亦可通過麥克風,用戶對系統發出指令后,系統將信息轉化為LED文字顯示,解決了車輛間的溝通問題并提醒周圍車輛注意緊急情況,可避免因溝通不到位而發生的交通事故;該系統還搭載了溫度、有毒氣體、濕度傳感器,實時反饋車內安全問題,預警事故的發生;除此之外,該系統配備了一般車載系統所具備的GPS導航、實時路況信息通報等功能,滿足駕駛員的基本道路需求。
系統硬件框圖如圖1所示。

圖1 系統硬件框圖
車載系統需要一個強大卻微小的處理器,因此選擇一個能夠滿嵌入式系統開發需求的處理器對于項目而言至關重要。而嵌入式微處理器是整個硬件平臺的核心,目前在國內市場上流行很多種處理器核,其中ARM處理器以體積小、功耗低、性能高、成本低等優勢廣受歡迎。
所以根據設計需求,該項目選取廣州友善之臂計算機科技有限公司開發的NanoPi S2,采用Cortex-A9架構的四核S5P4418處理器(主頻1.4 GHz),整合了目前工業、消費、車載等行業常用接口,滿足常規應用,所以選用S5P4418作為系統核心。
S5P4418開發板配備了4 G INAND(SDIN5C1-4 G),內存配置了1 G DDR3并配備有三星電源管芯片—NXE2000;PCB布局布線充分考慮電器要求,具有極佳的性能和抗干擾特性,使系統穩定工作于各種環境下,有助于提高車載系統抗干擾性能。S5P4418開發板[7]被設計為一塊開源硬件,引出芯片的大部分重要接口可任意擴展使用的模塊,有利于車載系統開發拓展nRF24L、GPS等模塊。同時,采用Cortex-A9架構,其MPCore應用級處理器基于先進的推測型八級流水線[8],可避免因訪問指令的延時而影響跳轉指令的執行,可使系統中的緊急報警系統不被阻塞。每個周期內連續將二至四條指令發送到指令解碼,確保充分利用超標量流水線性能,使整個系統可高效處于運行狀態,保障系統的實時性。
該無線數據通信系統采用挪威Nordic公司推出的nRF24L射頻芯片,其工作頻段為2.4 GHz的全球開放ISM頻段。與藍牙和ZigBee相比,nRF24L射頻芯片沒有復雜的通信協議,完全對用戶透明,同種產品之間可以自由通信[9]。其能在低成本、低功耗、短延時、高容量的優點下建立無線通信組網,系統由單片機C51控制無線數字傳輸芯片nRF24L,通過無線方式進行數據雙向遠程傳輸,兩端采用半雙工方式通信。
隨著人們對低成本無線網絡需求的增長,目前國內外研究機構對nRF24L在組網技術上的研究已經非常成熟,并在相關領域取得了一定的成就,因此該系統選擇此射頻芯片進行無線通信,以確保短距離通信的有效性和可靠性。
系統硬件電路結構如圖2所示。

圖2 系統硬件電路結構
文獻[10]的車載終端通信由ZigBee模塊和nRF24L射頻模塊搭建,通過nRF24L無線傳輸,ZigBee和周圍的節點組建自組網,且由于終端綁定車牌對應唯一特定ip,這樣在一個nRF24L射頻允許組網的范圍內,每輛車都是唯一的,即可實現搜索附近車輛,在一定范圍內即可建立語音通信,達到實時對講的功能。
車內實時環境檢測通過ZigBee模塊中的傳感器采集到溫度、濕度、有毒氣體濃度、火焰等值,通過串口發送給S5P4418中控平臺對數據進行加工處理,并且通過4G模塊將數據上傳到yeelink服務器,最后通過串口返回相應數值顯示在終端和安卓端。當其中某一項檢測值超過所設定的閾值時,將會觸發緊急呼救系統,終端將會即時通過4G模塊發送求救信號,系統后臺會發送求救信息(車輛GPS坐標、事故時間、車牌號等)給預先存好的聯系人手機。
為了完善車輛間的信息交流,用戶也可通過終端或安卓端選擇相應的文字信息,單片機接收到用戶指令,終端會將相對應的信息在分析處理后在LED點陣屏上進行顯示。并且該系統配備了基本的道路信息提醒功能,利用高德地圖提供的SDK開發包和GPS模塊,滿足用戶最基本的導航和實時路況信息等功能。
該系統采用嵌入式Linux操作系統[11],具有內核小、效率高、內核更新速度快等特點,并且嵌入式Linux適應于多種CPU和多種硬件平臺,是一個跨平臺的系統。嵌入式Linux性能穩定、裁剪性好的特點,有利于拓展模塊的開發。同時,Linux內核結構在網絡方面非常完整,Linux全面支持網絡中最常用的TCP/IP協議,提供了包括無線網絡、Toker ring(令牌環網)、光纖甚至衛星的支持,完美解決了車載系統中對LTE-4G模塊的開發問題。
根據各個模塊終端的設計要求,每個平臺模塊運行環境和使用的編程語言不一。
(1)車載終端:硬件環境是Nanopi2-S5P4418平臺,運行環境是Linux操作系統Debian。
(2)移動設備終端:硬件環境為Android2.2或者更高版本系統的移動設備,運行環境是Android2.2或者更高版本,開發語言是Java,開發環境是Android Studio。
(3)服務器:Yeelink服務器、高德服務器,開發語言采用SQL、Java,開發環境是Eclipse。
(4)車載終端顯示:硬件環境是Nano pi2-S5P4418平臺,標準4.5寸觸摸板。
文獻[12]為滿足車載系統后續功能的開發需求,降低耦合的復雜程度,避免“觸一發而動全身”的問題,對車載終端的軟件系統設計采用分層以及模塊化的設計思想。根據該系統的實際應用,采用邏輯分層和功能分塊的設計方案[13],即每個模塊都必須完成特定的功能,同時提供上層服務,同時分配任務給下層模塊,盡可能降低模塊之間的通信量,減少軟件設計的復雜度,使系統擁有良好的可拓展性。
根據軟硬件的結構以及車載功能劃分,將該系統劃分為適合開發的多層結構,如圖3所示。每層提供API接口,層與層之間通過信息隊列等實現通信,上層作為功能接口,下層作為可選的策略來實現[14]。這樣的分層結構可使開發人員進行并行開發,縮短開發周期。

應用層觸摸屏控制顯示功能模塊通信協議及擴展層主要包含擴展新模塊的通信協議集網絡層GPS模塊、WIFI模塊、4G模塊硬件驅動層數據采集模塊、電源管理模塊、語音識別模塊硬件層傳感器、Zigbee等
圖3 軟件系統分層結構
(1)硬件層。
硬件層相當于物理接觸層,是車載系統的根本,主要實現物理世界和信息世界的銜接。借助感應器件的“感官”,實現物理世界物體間的互通,如C51單片機、各種傳感器(溫度、濕度、有毒氣體等)和GPS等節點采集物理世界的信息。
(2)網絡層。
網絡層是硬件層和應用層間的橋梁,主要實現兩層之間的信息互通,根據不同需求,提供最基本的端到端的信息處理及數據傳送服務。該層的核心技術已相對成熟,能夠單獨提供良好的通信服務,并且融合了多種通信網絡技術,如WIFI、4G、衛星通信等。
(3)應用層。
應用層處于車載系統架構的頂層,主要負責對硬件層采集的各種數據進行計算、處理,從而實現車內監控、檢測和管理。該層由兩個平臺構成,分別是車載終端和Android手機端,負責完成協作、管理、計算等,為用戶提供服務。
同時,為了提升用戶體驗,開發了Android手機終端,其分層結構劃分為三層:
(1)用戶表示層:用戶與手機終端的交互操作界面,為用戶顯示數據信息,同時根據用戶需求,接受用戶命令,并通過網絡進行信息傳輸。
(2)業務邏輯層:軟件架構的核心組成部分,針對具體的問題進行邏輯操作,重點是數據業務邏輯的處理和數據層的操作。
(3)數據訪問層:對Yeelink提供的數據庫進行訪問操作,實現車內監控、用戶信息的修改等操作。
車載系統是一個實時要求高的應用,保持客戶端和服務器端的信息同步是該系統實現的關鍵要素,所以系統的軟件設計和服務端的選擇至關重要。
服務器端選擇:為了保障服務端的信息與客戶端同步,選用了國內最大的物聯網平臺Yeelink,用以提供傳感器云服務。其具有的高并發介入服務器和云存儲方案能夠同時完成車載系統大量的傳感器數據接入和存儲任務,確保了車輛實時數據能夠安全地保存在互聯網上,使用戶可隨時查看車輛的實時信息。Yeelink配置了事件觸發機制,當數據達到設定閾值時,Yeelink平臺會自動調用車載系統預先設定的規則,發送短信至預存聯系人,實現車載系統的緊急報警應用。
由于車載系統具有實時性強的特點,終端會通過LTE-4G模塊實時上傳傳感器所采集到的車內信息,因此,若客戶端以頻繁請求的方式來保持和服務器端的同步,這種同步方案帶來的弊病是,當客戶端以固定頻率向Yeelink服務端發起請求,服務器端的數據可能并沒有更新,這樣便會帶來許多無謂的網絡傳輸,造成資源浪費。因此,針對這一問題,采用自行優化的Long-Polling實時技術來優化客戶端。
該項目采用基于Long-Polling[15]技術原理,自行改進后的AlarmManager+Sevice+Thead混合復用機制,創建AlarmManager系統級服務貫穿在APP整個生命周期中,負責定時執行實時輪詢服務器數據動態的任務,一旦AlarmManager監聽器監聽到服務器端傳感器數據更新,通過Binder機制向AMS發送廣播,觸發報警消息推送通知和撥打電話服務,并開啟多線程異步分發處理服務器端回調數據。采用AlarmManager系統級別服務負責輪詢請求服務器,解決Android系統電源鎖機制,即Android系統在屏幕熄滅后自動銷毀到級別較低的進程或服務,避免客戶端和服務不能進行即時通信或報警功能失效,同時實時觸發和保持后臺服務任務器和數據監聽器的有效執行。核心代碼如下:
public static void startPollingService (Context,int seconds,Class> cls,String action){
AlaraManager manager=(AlarmManager) cpntext
getSystemServicr(Context ALARM-SBRVICB);
Intent intent=new Intent(context,cls);
intent.setAction(action);
PedingIntent pendingIntent=PendingINtent.getService(context,0,intent,PendingIntent.PLAG-UPFATE-CURRBNT);
longtriggerAtTime=SystemClock.elapsedRealtime();
manager.setRepeating(AlarmManager.BLAPSBD-RBALTIMS,triggerAtTime,seconds*1000,pendingIntent);
}
文獻[16]的長輪詢是對定時輪詢的改進和提高,目的是為了降低無效的網絡傳輸。當服務器端沒有數據更新時,連接會保持一段時間周期直到數據或狀態改變或者時間過期,通過這種機制來減少無效的客戶端和服務器間的交互。原理圖如圖4所示,可見長連接的特點[16]:
·客戶端接收到更新會立即調用響應處理函數去處理服務器返回的信息,結束后再次發出請求,重新與服務器建立連接;
·在客戶端處理接收的信息,重新建立連接前,服務器端若有數據更新,這些信息會被保留,直到與客戶端建立連接,服務器端才會將更新的所有信息發出;
·服務器端會阻塞請求,直到有數據傳遞或超時才返回。

圖4 長輪詢原理
基于VANET的網絡特點,借助物聯網技術,在nano pi2- S5P4418開發板上實現了智能車載系統,并同時開發相應的安卓手機端系統。該系統不僅可以實現遠程對車內環境的實時監測報警和車內實時監控,使用戶可以無時無刻查看自己愛車的實況,更重要的是提供了車載實時通信和LED點陣屏信息提醒功能,為車輛間的聯系提供了一個良好的溝通平臺,很好地起到了交通安全事故的預警功能,有效減少交通事故的發生并提高道路交通的行車體驗。
參考文獻:
[1] ZEADALLY S,HUNT R,CHEN Y S,et al.Vehicular ad hoc networks(VANETS):status,results,and challenges[J].Telecommunication Systems,2012,50(4):217-241.
[2] 朱存智.車載自組織網絡(VANET)綜述[J].湖北廣播電視大學學報,2011,31(11):157-158.
[3] KARIM R.VANET:superior system for content distribution in vehicular network applications[D].New Jersey:Rutgers University,2009.
[4] 趙志峰,鄭少仁.Ad hoc網絡[J].中國數據通信,2002,4(9):1-5.
[5] 李 勇,黃均才,王鳳碧,等.Ad hoc網絡體系結構研究[J].計算機應用,2005,25(1):163-164.
[6] ABOOBAKER A K K.Performance analysis of authentication protocols in vehicular ad hoc networks (VANET)[D].London:Royal Holloway University,2009.
[7] 劉 覽.基于FPGA的32位RISC嵌入式微處理器設計[D].南京:南京航空航天大學,2015.
[8] 施 亮.嵌入式微處理器的調試技術[J].科技視界,2015(8):42-45.
[9] 任宏偉,王德亮,張素偉.基于MSP430單片機的網絡通信模塊的設計[J].甘肅科技縱橫,2011,40(6):24-26.
[10] 閆 沫.ZigBee協議棧的分析與設計[D].廈門:廈門大學,2007.
[11] 杜傳業.嵌入式Linux內核解析[D].天津:河北工業大學,2008.
[12] 甯油江,趙 津,石 晴,等.基于ZigBee的多車協作控制研究[J].現代電子技術,2017,40(6):114-117.
[13] 劉 張.基于嵌入式的車載多功能終端的研究和設計[D].成都:西華大學,2008.
[14] 王念橋.應用MVP模式改進軟件架構[J].計算機時代,2012(4):37-38.
[15] PHILLIPS B,HARDY B.Android編程權威指南[M].北京:人民郵電出版社,2014.
[16] 劉 偉,楊慧勇,喬 建,等.使用異步I/O構建高性能Web服務器[J].科技創新與生產力,2013(1):83-87.