王 偉, 張向文, 王文鴻
(桂林電子科技大學 電子工程與自動化學院,廣西 桂林 541004)
疲勞駕駛是造成交通事故和影響駕駛安全的重要因素之一,并且由于司機身體突發疾病造成交通安全事故也時有發生[1]。通過對駕駛員疲勞狀態的檢測,在駕駛員疲勞時發出報警,可以提醒駕駛員,提高駕駛的安全性。
目前在疲勞駕駛的研究上,國外比國內發展較好。市面上常見的國外產品包括車內智能環境調節系統、電子清醒帶和方向盤監視系統[1,2]。車內智能環境調節系統主要從自動改變車內溫度、車內光線和車內空氣流通程度等方面,給駕駛員提供一個不易疲勞駕駛的環境。電子清醒帶和方向盤監視裝置(steering attention monitor,SAM)可以根據駕駛員的疲勞狀態對駕駛員進行提醒[2]。國內石堅等人研究了一種疲勞駕駛預警系統,通過傳感器測量駕駛員駕駛時方向盤、踏板等的運動參數來判別駕駛員安全因素,但該系統僅僅具有發現疲勞駕駛的作用,預警效果不明顯[1]。李科勇研究了不同駕駛風格對疲勞駕駛狀態判斷的影響[3]。綜合分析可以看出,目前市場上較為成熟的產品的功能都比較單一,駕駛員疲勞狀態的診斷方式比較單一,報警處理功能不太完善。
為了提高駕駛員疲勞狀態判斷的準確性,并能夠根據駕駛員的疲勞程度進行不同方式的預警和處理,本文研究了一種新型的駕駛員疲勞狀態檢測預警系統。系統采用頸枕和攝像頭人眼識別相結合的雙重判斷方式,解決單獨采用人眼檢測方法對不同駕駛習慣的駕駛員難以準確判斷的問題。
設計的系統如圖1所示,包括安裝在駕駛室內,位于駕駛員前面的USB攝像頭和樹莓派3B+以及安裝在頸枕內的壓力傳感器、STM32單片機、振動馬達、GPS定位模塊和GSM通信模塊。通過樹莓派3B+結合USB攝像頭,可以對駕駛員面部信息進行實時采集,對駕駛員眼睛的閉合程度進行識別,根據眼睛閉合程度判斷駕駛員的駕駛狀態。安裝在頸枕內的壓力傳感器在駕駛員戴上頸枕后實時檢測壓力的變化,單片機實時讀取壓力數據與預設閾值對比判斷頭部的歪斜程度和駕駛員的疲勞狀態,綜合駕駛員眼睛閉合程度和頭部歪斜程度,判斷駕駛員的疲勞程度。當駕駛員處于疲勞狀態時,單片機啟動振動馬達發出振動報警信號,提醒駕駛員注意,并循環檢測駕駛員的疲勞狀態。當駕駛員處于深度疲勞狀態或突發疾病休克時,振動報警無效,啟動緊急呼救系統,通過GPS模塊確定駕駛員的位置信息,通過GSM模塊發送位置信息和呼救信息。

圖1 系統設計框圖
本設計采用樹莓派3B+作為主控嵌入式硬件平臺進行圖像處理。樹莓派提供豐富的外設接口,其引出了96個GPIO接口,能用來連接多個底層外設,具有SATA和HDMI接口,卡片的主板周圍繪有幾個USB接口,可同時連接鍵盤、網線、鼠標,同時擁有視頻模擬信號的電視輸出等[4,5]。此外,支持Python作為主要的編程語言,同時也支持Java、C語言等。其CPU單核多核性能提高,運行速度快,配備64位1.4 GHz四核處理器[4]。擁有獨立PoE供電引腳和獨立PoE以太網供電,具有穩定高效的網絡傳輸效率。雙頻2.4 GHz/5.0 GHz傳輸低功耗、速度快,并擁有1 GB大容量嵌入式內存。另外,系統使用了嵌入式的串口和USB硬件資源,電路簡單,連線方便,不需手工做板。樹莓派的體積小,功能強大,視頻處理能力強,通過SSH可在PC端遠程登陸控制,易于系統開發[4],另外,內置的藍牙易于與單片機通信。
設計的單片機最小系統如圖2所示。

圖2 單片機最小系統
接口方面,單片機利用兩路AD采集壓力傳感器信號,使用串口1與樹莓派通信,使用串口2與GSM模塊通信,使用串口3與GPS模塊通信。
壓力傳感器檢測駕駛員頭部的傾斜檢測,將駕駛員頭部擠壓頸枕的形變量轉換為角度或壓力值的變化,獲取駕駛員頭部側歪的程度。考慮到結合頸枕的設計以及STM32內部A/D匹配,選用FSR402型號薄膜壓力傳感器,滿足舒適度好、體積小、成本低、易于實現,而且能夠滿足特殊表面上的壓力分布數據采集需求。
本文設計使用的是RFP 薄膜壓力傳感器[6],如圖3所示,傳感器內置在頸枕兩側,每個長130 mm。使用STM32F103自帶的12位ADC測量,本次設計使用薄膜壓力傳感器作為人體開關,量程較小,當人頭部側壓程度較大即可觸發,故可不用精確的采集數據,所以只需要設置較高閾值,當傳感器的數值超過一定的數值時開關觸發。

圖3 薄膜壓力傳感器實物
系統選用的振動馬達用于發出振動報警信號。當駕駛員處于疲勞狀態時,單片機向振動馬達發送固定占空比的PWM波控制報警信號,馬達啟動發出振動信號,提醒駕駛員安全駕駛、注意休息。
選用以AT6558為主芯片的GPS模塊,模塊價格相對低廉,使用簡便。調試過程中先利用上位機來監測GPS模塊所得數據是否準確,所在環境是否能收到GPS信號,節省調試時間。此模塊采用串口進行通信,在與單片機連接時只需要兩根通信線和兩根數據線,而且所得到的數據準確。
GSM模塊采用SIM800C實現通信,利用GSM系統的短消息業務進行數據傳送,此模塊可以使用基于字符AT命令接口協議(文本模式)實現短消息傳輸。這種信息傳輸方式是GSM通信網所特有的,不需要撥號建立連接,直接把發送的信息加上目的地址,通過無線控制信道發送到短消息服務中心,經短消息服務中心完成存儲和轉發,最后發送到信宿。通過提前設定接收方手機號碼,即可實現發送短消息給指定手機。一旦網絡發現被叫方可以被叫通時,則消息被重新發送保證被叫方收到消息。
軟件設計部分,主要是駕駛員眼睛閉合程度的判斷、駕駛員頭部歪斜程度的判斷和報警信號的發送。
系統設計流程如圖4所示。

圖4 系統流程圖


圖5 眼部特征點標記示意
EAR值在駕駛員眼睛睜開時因駕駛環境和狀態影響基本保持在0.22~0.3之間,當駕駛員精神狀態不佳,處于疲勞駕駛時,EAR值會驟降至約0.18~0.05之間,通過多幀圖像結合判斷,當存在較長時間駕駛員眼睛的EAR值持續較低或者僅小部分時間處于較正常水平,即判定駕駛員處于疲勞駕駛狀態。
駕駛員頭部歪斜程度的檢測是通過內置于頸枕的兩個壓力傳感器實現的。當系統檢測到駕駛員后開始采集兩個壓力傳感器的壓力數據,經A/D轉換處理為數字量的電壓數據,當檢測到A/D引腳電壓高于2.0 V電壓閾值后,單片機定時器開始計時,若有4 s維持在電壓閾值,即2.0 V以上,則判斷駕駛員處于疲勞狀態,觸發危險警報。
當檢測到駕駛員處于疲勞駕駛狀態時,系統會觸發振動報警,讓駕駛員短時間內保持清醒,提醒駕駛員安全駕駛。若3次提醒未果,即在30 s內觸發報警,系統則判定駕駛員處于危險狀態,STM32單片機將通過串口與ATGM336H—5NGPS模塊通信,從參考文獻[10]了解到串口通信的數據包由發送設備通過自身的TXD接口傳輸到接收設備得RXD接口,在協議層中規定了數據包的內容,具體包括起始位、主體數據(8位或9位) 、校驗位以及停止位,通信的雙方必須將數據包的格式約定一致才能正常收發數據,對接收數據處理得到駕駛員所在地經、緯度信息,如圖6所示。單片機可以控制SIM800C通信模塊,向求救中心或者用戶指定的電話發送定位求救短信息。

圖6 定位信息
設計的系統包括兩部分,一部分由樹莓派與攝像頭組成,放置在儀表盤中間,駕駛員下前方。另一部分放置在頸枕后側,電路組合后置于盒中,由盒中引出兩個薄膜壓力傳感器內貼于頸枕兩側。
因系統尚未產品化,在測試階段,采用模擬駕駛方式測試,即將系統安裝在駕駛室內,駕駛員模擬不同的疲勞狀態。

圖7 眼睛閉合程度的測試
眼睛閉合程度的測試如圖7所示,對三種閉合程度進行了測試,圖7(a)為模擬駕駛員初入疲勞駕駛狀態,眼睛開合度較低,此時眼睛縱橫比為0.12,符合預期設定0.18~0.05,同時在預設值內開始檢測眨眼計數,此時眨眼計數為3,不發出報警信號。圖7(b)為模擬駕駛員完全疲勞駕駛狀態,眼睛近乎閉合,此時眨眼計數為8,超過眨眼計數閾值5,判斷駕駛員處于疲勞駕駛,發出報警信號。圖7(c)為駕駛員正常駕駛時,眼睛處于正常狀態,橫縱比為0.26。
對頭部歪斜程度的測試如圖8所示,圖8(a)模擬駕駛員正常駕駛狀態,駕駛員眼睛閉合度正常,頭部不側歪,頸枕不會有振動提醒。圖8(b)模擬駕駛員疲勞駕駛第一種狀態,駕駛員頭部不側歪,眼睛處在閉合和幾乎閉合的狀態,眼睛縱橫比低于0.18,且持續時間長于4 s,頸枕在4 s后發出振動提醒。圖8(c)模擬駕駛員疲勞駕駛第二種狀態,駕駛員眼睛完全閉合,長時間倚靠在頸枕上,此時由壓力傳感器A/D轉換后電壓高于2.0 V,頸枕4 s內發出振動提醒。此時駕駛員頭部繼續倚靠在頸枕上,模擬休克狀態,震動相繼持續3次,總約30 s后,系統判定駕駛員處于危險狀態,并向指定手機發送定位求救信息。

圖8 頭部歪斜程度測試
本文提出了一種駕駛員疲勞狀態檢測與安全預警系統,通過駕駛員前部的攝像頭檢測人眼的閉合程度和戴在駕駛員頸部的頸枕內的壓力傳感器檢測頭部側歪程度,綜合兩種檢測結果判斷駕駛員的疲勞狀態,提高檢測的準確性。經實驗模擬測試,系統可以比較準確地檢測出駕駛員的疲勞駕駛狀態和休克狀態。在檢測到駕駛員處于疲勞狀態時,頸枕內的振動馬達發出振動信號,能夠在駕駛員疲勞駕駛時瞬間恢復清醒,當循環檢測和提醒3次無效時,判斷駕駛員處于危險狀態,發出定位和遠程報警求救信息,最大限度的保障駕駛員的生命安全。