尹延龍,丁瑞好,董錚
(湖北文理學院 計算機工程學院,湖北襄陽,441053)
隨著經(jīng)濟的快速發(fā)展,汽車已經(jīng)逐漸進入到了家家戶戶,使得人們的出行變得更加地舒適[1]。但與此同時,城市建設的步伐遠遠跟不上汽車行業(yè)的發(fā)展,隨著汽車數(shù)量的越來越多,道路擁擠已經(jīng)成了很多城市的通病,嚴重影響人們的出行。節(jié)假日擁堵情況更甚,通行十分困難。因此如何緩解道路擁擠,讓人們的出行更順利成為城市交通中的一個大問題[2~3]。
傳統(tǒng)的交通燈是通過設定路口交通燈時間為一定值進而調(diào)節(jié)車流量,控制太過簡單、單一,并不能適應現(xiàn)在日趨擁擠的道路,并且當路口道路車流量過于擁擠時,交通路口還需要協(xié)管員來協(xié)助調(diào)控交通燈的變化時間,以此緩解道路擁擠的情況。交通燈實時控制系統(tǒng)通過實時監(jiān)測各個方向的車流量,比較各個路口的車流量,進而計算出合理的交通燈變化時間調(diào)控交通燈。減少車輛的等待時間,合理的分配道路資源,緩解交通擁堵,既能減少交通警察人力資源的浪費,也能使人們的出行更加通暢,讓城市的交通更加智能,更美好[4]。
系統(tǒng)主要應用有主次干道的十字路口路段,用于調(diào)節(jié)十字路口的車輛擁堵情況。系統(tǒng)主要采用了傳感器、樹莓派和Python 技術。傳感器用于測量車流量,通過測量車輛通過路面產(chǎn)生的壓力,再將壓力信號轉(zhuǎn)化成電信號傳輸給系統(tǒng),傳感器本系統(tǒng)采用的是壓電傳感器。壓力傳感器安裝在各個路口,距離路口的一定距離的區(qū)域,測量在一定時間內(nèi)車輛是否通過近車監(jiān)測點和遠車監(jiān)測點來推算車流量。樹莓派三代B 型開發(fā)板用于接收壓力傳感器傳過來的電信號,再將電信號進行處理分析計算,得出交通燈顏色變化的時間,以此來控制交通燈的顏色變化,進而減緩車輛擁堵的情況。Python 是計算機編程語言,處理分析壓力傳感器傳來的車流量數(shù)據(jù)、計算綠燈的變化時間、控制交通燈顏色的變化等。
在經(jīng)濟方面,樹莓派和傳感器的成本都比較低,整個系統(tǒng)并不需要花費太高的成本,而且壓力傳感器壽命很長,可以使用很久,比較適合用來測量車流量。
交通燈實時控制系統(tǒng)是利用實時分析各個路口的車流量來計算出交通燈的狀態(tài)及綠燈時間。系統(tǒng)的功能需求如下:
(1)各個路口車流量數(shù)據(jù)采集與傳輸
功能描述:壓電傳感器根據(jù)收集通過該傳感器的壓力數(shù)據(jù),將壓力信號進而輸送給樹莓派。壓力傳感器是分布在各個路口的,不同路口的壓力信息都進行收集。
輸入:路口處的車流量壓力信號。
輸出:車流量的電信號。
(2)車流量電信號的分析處理
功能描述:壓力傳感器將車流量的壓力信號傳送給樹莓派,樹莓派再將收集到的壓力信號進行分析處理,計算出綠燈的變化時間,以此來控制交通燈的變化。
輸入:車流量的電信號。
輸出:交通燈的變化時間。
(3)交通燈控制
功能描述:根據(jù)樹莓派開發(fā)板計算出來的時間來控制路口交通燈的變化時間。同時路口的交通燈也可以由人為控制,當一些特殊情況發(fā)生時,交通協(xié)管員可以隨時控制交通燈的變化。
輸入:樹莓派計算交通燈時間。
輸出:交通燈是否變化。
根據(jù)系統(tǒng)的可行性和需求分析,設計了圖1 所示的系統(tǒng)功能模塊圖。系統(tǒng)主要分為車流量檢測模塊、車流量分析處理模塊和交通燈轉(zhuǎn)換模塊。車流量檢測模塊主要負責檢測路口的實時車流量,車流量分析處理模塊用于計算出路口的綠燈時間及交通燈是否發(fā)生變化,交通燈轉(zhuǎn)換模塊主要是根據(jù)系統(tǒng)的計算結(jié)果來進行交通燈狀態(tài)的轉(zhuǎn)換。
圖1 系統(tǒng)功能模塊圖
系統(tǒng)流程圖如圖2所示。安裝在路口的壓力傳感器會接收到車輛是否通過的信號,然后把車輛通過的壓力信號傳給樹莓派開發(fā)板。樹莓派開發(fā)板會根據(jù)壓力傳感器傳過來的車流量信號進行分析計算,分配出合適的綠燈時間及交通燈的狀態(tài)是否發(fā)生變化,并把最終結(jié)果輸出給交通燈,交通燈會根據(jù)樹莓派開發(fā)板的指令進行相應的變化,進而達到控制車流量的目的。
圖2 系統(tǒng)流程圖
交通燈實時控制系統(tǒng)的硬件部分主要有壓力傳感器、樹莓派三代B 型開發(fā)板、RGB LED 模擬交通燈。壓力傳感器收集路口處的實時車流量數(shù)據(jù)并將數(shù)據(jù)傳輸給樹莓派三代B 型開發(fā)板控制系統(tǒng),控制系統(tǒng)通過Python 語言編寫的程序處理分析壓力傳感器傳過來的車流量信息,并得出交通燈的變化時間規(guī)則。樹莓派開發(fā)板控制系統(tǒng)再將交通燈的變化信息傳輸給RGB彩色LED 模擬的交通燈顯示器,來模擬交通燈的變化[5-6]。硬件組成如圖3 所示。
圖3 系統(tǒng)硬件組成圖
系統(tǒng)采用的是RGB 彩色LED 來模擬交通燈的變化。其中,LED 燈中有三種顏色的發(fā)光二極管:紅色、綠色和藍色,有四個引腳:VCC、R、G、B。VCC 是用來連接電源的正極的。R,G,B 分別對應著紅綠藍三個燈的接口,再把這三個接口與樹莓派的GPIO 引腳進行連接,通過控制這三個燈的顏色比例變化來模擬交通燈的顏色變化。
系統(tǒng)研究的是十字路口紅綠燈變化情況,如圖4 所示,將東西南北四個方向的路口都分為直行(包括直行車道和右轉(zhuǎn)車道)和左轉(zhuǎn)的情況。其中,東西方向,南北方向紅綠燈變化情況一致,則僅需研究東或西側(cè),南或北側(cè)情況,即圖中D1,D2,D3,D4 這四個車道方向綠燈情況即可。當D1,D2,D3,D4 四個方向任意一個車道為綠燈時,其他車道都不能顯示綠燈。
圖4 路口交通圖
在交通十字路口,一般都會有一條車流量較多的主干道,一條車流量較少次干道。設定東西方向的車道為主干道,南北方向的車道為次干道,因為主次干道的車流量是不一樣的,一般情況下,主干道的車流量會大于次干道上的車流量,所以在初始綠燈時間的分配上,主干道的綠燈分配時間應該多于次干道上的綠燈時間。其中黃燈的時間固定為3s,所以在這個系統(tǒng)中不需要進行計算分配黃燈的時間,只需要計算紅燈,綠燈的時間即可。而車道的初始綠燈時間,應當是由十字路口平時的車流量所決定的,應提前測得合理的初始時間??紤]到在十字路口中車流量變化很快,更新時間不宜太長,還有系統(tǒng)所承受的計算壓力,更新時間不宜太短,在這個系統(tǒng)中設定為每5s 更新一次車流量,再根據(jù)更新的車流量計算出綠燈時間并將計算的綠燈時間更新給路口的交通燈[7~8]。
綠燈在每一次將要變化之前,都會先根據(jù)監(jiān)測的車流量大小來進行一次判斷,判斷是否要變換交通燈顏色。而在每一次監(jiān)測車流量之前,會先對綠燈的剩余時間進行判斷。如果判斷當前綠燈剩余時間小于或等于5s,則直接更新當前綠燈的剩余時間為5s,與此同時,當前綠燈開始閃爍,5s后,直接變換為黃燈,不再進行車流量的判斷。如果判斷當前綠燈時間大于5s,系統(tǒng)根據(jù)當前車流量計算綠燈時間,如果計算的綠燈時間小于剩余的綠燈時間,則當前交通燈的綠燈剩余時間更新為系統(tǒng)計算的綠燈的剩余時間,反之,如果計算的綠燈時間大于剩余的綠燈時間,交通燈當前綠燈時間不變。
系統(tǒng)初始情況下,會對各個不同車道分配一個初始綠燈時間Hinit,然后每5s 檢測一次路口的車流量,再根據(jù)車流量計算出當前路口的綠燈時間Hnr。然后比較Hnr,判斷是否開始下一方向的綠燈時間。當新分配的時間小于等于5s 時,各個方向的綠燈的剩余時間直接更新為5s,這5s 期間,綠燈處于閃爍的狀態(tài),且5s 后綠燈變化為黃燈,黃燈時間為3s,黃燈時間結(jié)束后下一路口的綠燈亮。當新分配的綠燈時間大于5s 時,再進行比較新分配的綠燈時間與當前路口剩余的綠燈時間。如圖5 所示,當分配時間小于等于當前路口綠燈剩余時間時,各方向剩余綠燈時間更新為新分配的時間,反之各方向剩余綠燈時間不更新。五秒后繼續(xù)檢測,并依次循環(huán)[9]。
圖5 程序流程圖
假設車輛的速度是20km/h,這在道路中其實已經(jīng)算是一個很低的速度了,那么這輛車在5s 內(nèi)的行駛距離將近28m。如果道路擁擠,那一輛車在監(jiān)測點之間的行駛距離肯定是低于20km/h。所以設定近車監(jiān)測點與遠車監(jiān)測點的距離為25m。當路段擁擠時,這段距離的車行駛速度會變慢,5s 之內(nèi)不會通過該路段,就會被計入車流量,當路段還比較通暢時,通過這段距離的車速度會很快,那么在5s 內(nèi)就會通過該路段,就不會被計入車流量。
如圖4 所示,該十字路口的總車流量為D=d1+d2+d3+d4+d5+d6+d7+d8。向南北方向直行的車流量總量為D1=d3+d7,向南北方向左轉(zhuǎn)的總車流量為D2=d4+d8,向東西方向直行的總車流量為D3=d1+d5,向東西方向左轉(zhuǎn)的總車流量為D4=d2+d6。系統(tǒng)設定該十字路口的綠燈順序依次是東西直行,東西左轉(zhuǎn),南北直行,南北左轉(zhuǎn),以此循環(huán)。檢測時間間隔為3s,路燈初始周期為H。
由于四個方向綠燈時間不能重合,所以每個方向綠燈都應該設置一個初始時間。綠燈初始時間的更新:每當綠燈進行轉(zhuǎn)換到下一路口綠燈時,下一路口的綠燈應該設置一個初始時間,而不應該沿用上一路口所計算的綠燈時間。因為上一路口在綠燈的過程中,車流量會越來越少,所計算的綠燈時間也會越來越少,在下一次綠燈變化之前,綠燈時間達到一個最小值。然而在這個過程中,其余路口都是紅燈時間,車流量會增大,如果繼續(xù)使用上一方向所計算的綠燈時間則會不合理,所以在每個路口綠燈變化之前綠燈時間需要更新到初始值。
由于夜間人們的出行量大大減少,道路上的車流量也隨之很少,所以在夜間再實行與白天同樣的交通燈的變化規(guī)則就有些不合理了。在夜間,因為出行的車輛較少,只需要提醒司機到路口時記得減速通過就可以了,這個時候就可以設置十字路口中四個路口黃燈持續(xù)閃爍,提醒司機注意來往車輛減速通過。關于交通燈夜間模式的時間設置,還要根據(jù)季節(jié)來設定。在夏季,白天較長,夜晚較短,夜間模式也應把時間推遲,可以設定凌晨一點開啟夜間模式,四點關閉夜間模式。而冬季,白天較短,夜晚較長,夜間模式可以提前到晚上十二點開啟夜間模式,早晨五點關閉夜間模式。夜間模式的設置也緩解了控制系統(tǒng)的壓力。
根據(jù)交通燈實時控制系統(tǒng)的功能模塊對系統(tǒng)測試,先將樹莓派和傳感器顯示燈這幾個模塊給連接起來,連接好之后接通電源,在樹莓派上運行程序,系統(tǒng)便開始運行了。因為系統(tǒng)的應用場景是設有主次干道的十字路口,所以測試時候會分為主干道和次干道分別進行測試,測試隨著車流量的變化交通燈是如何進行變化的。同時還會測試夜間時,交通燈是怎樣變化的。
根據(jù)系統(tǒng)測試方案設計如表1 所示的路口主干道情況的測試用例、如表2 所示的次干道情況的測試用例以及表3 所示的夜間模式的路口交通燈情況的測試用例。
表1 主干道測試用例表
表2 次干道測試用例表
表3 夜間模式測試用例表
通過樹莓派運行寫好的Python程序,可以通過將樹莓派連接到PC 端,在PC 端上控制樹莓派運行Python 代碼。代碼運行完成后,對該系統(tǒng)進行簡單的測試,檢測其功能。
系統(tǒng)剛開始檢測時,設定東西直行車道綠燈亮,則其他車道紅燈亮。如圖6 所示。
圖6 交通燈變化圖
綠燈時間結(jié)束后,東西方向直行車道交通燈黃燈亮起,其他方向仍為紅燈,如圖7 所示。
圖7 交通燈變化圖
東西直行黃燈結(jié)束后,變?yōu)榧t燈,下一車道交通燈黃燈亮,如圖8 所示。
圖8 交通燈變化圖
下一車道黃燈時間結(jié)束后,路燈亮,其他車道依然是紅燈,如圖9 所示。
圖9 交通燈變化圖
夜間路口黃燈持續(xù)閃爍,如圖10 所示。
圖10 交通燈夜間模式圖
當某一車道綠燈亮時,模擬車輛通過壓力傳感器,該車道的壓力傳感器產(chǎn)生信號傳送給了樹莓派系統(tǒng),系統(tǒng)在根據(jù)傳過來壓力信號的次數(shù)判斷車流量,再計算該車道的綠燈時間,系統(tǒng)再控制綠燈亮的時間,綠燈時間與車道車流量的大小成正比。
系統(tǒng)介紹了交通燈實時控制系統(tǒng)的目的和意義,結(jié)合了壓力傳感器和樹莓派開發(fā)板,參考了之前的智能交通燈的研究技術,讓交通燈隨著車流量的變化而實時變化,變得更加智能。同時這個系統(tǒng)的開發(fā)成本也比較低,其中用到的壓力傳感器在這個系統(tǒng)中也易于安裝和維護。系統(tǒng)開發(fā)的成功將會給人們的出行帶來極大的便利,讓人們的出行更加的舒適,很大地緩解交通擁堵的狀況,讓城市道路更通暢。