尹延龍,丁瑞好,董錚
(湖北文理學院 計算機工程學院,湖北襄陽,441053)
隨著經濟的快速發展,汽車已經逐漸進入到了家家戶戶,使得人們的出行變得更加地舒適[1]。但與此同時,城市建設的步伐遠遠跟不上汽車行業的發展,隨著汽車數量的越來越多,道路擁擠已經成了很多城市的通病,嚴重影響人們的出行。節假日擁堵情況更甚,通行十分困難。因此如何緩解道路擁擠,讓人們的出行更順利成為城市交通中的一個大問題[2~3]。
傳統的交通燈是通過設定路口交通燈時間為一定值進而調節車流量,控制太過簡單、單一,并不能適應現在日趨擁擠的道路,并且當路口道路車流量過于擁擠時,交通路口還需要協管員來協助調控交通燈的變化時間,以此緩解道路擁擠的情況。交通燈實時控制系統通過實時監測各個方向的車流量,比較各個路口的車流量,進而計算出合理的交通燈變化時間調控交通燈。減少車輛的等待時間,合理的分配道路資源,緩解交通擁堵,既能減少交通警察人力資源的浪費,也能使人們的出行更加通暢,讓城市的交通更加智能,更美好[4]。
系統主要應用有主次干道的十字路口路段,用于調節十字路口的車輛擁堵情況。系統主要采用了傳感器、樹莓派和Python 技術。傳感器用于測量車流量,通過測量車輛通過路面產生的壓力,再將壓力信號轉化成電信號傳輸給系統,傳感器本系統采用的是壓電傳感器。壓力傳感器安裝在各個路口,距離路口的一定距離的區域,測量在一定時間內車輛是否通過近車監測點和遠車監測點來推算車流量。樹莓派三代B 型開發板用于接收壓力傳感器傳過來的電信號,再將電信號進行處理分析計算,得出交通燈顏色變化的時間,以此來控制交通燈的顏色變化,進而減緩車輛擁堵的情況。Python 是計算機編程語言,處理分析壓力傳感器傳來的車流量數據、計算綠燈的變化時間、控制交通燈顏色的變化等。
在經濟方面,樹莓派和傳感器的成本都比較低,整個系統并不需要花費太高的成本,而且壓力傳感器壽命很長,可以使用很久,比較適合用來測量車流量。
交通燈實時控制系統是利用實時分析各個路口的車流量來計算出交通燈的狀態及綠燈時間。系統的功能需求如下:
(1)各個路口車流量數據采集與傳輸
功能描述:壓電傳感器根據收集通過該傳感器的壓力數據,將壓力信號進而輸送給樹莓派。壓力傳感器是分布在各個路口的,不同路口的壓力信息都進行收集。
輸入:路口處的車流量壓力信號。
輸出:車流量的電信號。
(2)車流量電信號的分析處理
功能描述:壓力傳感器將車流量的壓力信號傳送給樹莓派,樹莓派再將收集到的壓力信號進行分析處理,計算出綠燈的變化時間,以此來控制交通燈的變化。
輸入:車流量的電信號。
輸出:交通燈的變化時間。
(3)交通燈控制
功能描述:根據樹莓派開發板計算出來的時間來控制路口交通燈的變化時間。同時路口的交通燈也可以由人為控制,當一些特殊情況發生時,交通協管員可以隨時控制交通燈的變化。
輸入:樹莓派計算交通燈時間。
輸出:交通燈是否變化。
根據系統的可行性和需求分析,設計了圖1 所示的系統功能模塊圖。系統主要分為車流量檢測模塊、車流量分析處理模塊和交通燈轉換模塊。車流量檢測模塊主要負責檢測路口的實時車流量,車流量分析處理模塊用于計算出路口的綠燈時間及交通燈是否發生變化,交通燈轉換模塊主要是根據系統的計算結果來進行交通燈狀態的轉換。

圖1 系統功能模塊圖
系統流程圖如圖2所示。安裝在路口的壓力傳感器會接收到車輛是否通過的信號,然后把車輛通過的壓力信號傳給樹莓派開發板。樹莓派開發板會根據壓力傳感器傳過來的車流量信號進行分析計算,分配出合適的綠燈時間及交通燈的狀態是否發生變化,并把最終結果輸出給交通燈,交通燈會根據樹莓派開發板的指令進行相應的變化,進而達到控制車流量的目的。

圖2 系統流程圖
交通燈實時控制系統的硬件部分主要有壓力傳感器、樹莓派三代B 型開發板、RGB LED 模擬交通燈。壓力傳感器收集路口處的實時車流量數據并將數據傳輸給樹莓派三代B 型開發板控制系統,控制系統通過Python 語言編寫的程序處理分析壓力傳感器傳過來的車流量信息,并得出交通燈的變化時間規則。樹莓派開發板控制系統再將交通燈的變化信息傳輸給RGB彩色LED 模擬的交通燈顯示器,來模擬交通燈的變化[5-6]。硬件組成如圖3 所示。

圖3 系統硬件組成圖
系統采用的是RGB 彩色LED 來模擬交通燈的變化。其中,LED 燈中有三種顏色的發光二極管:紅色、綠色和藍色,有四個引腳:VCC、R、G、B。VCC 是用來連接電源的正極的。R,G,B 分別對應著紅綠藍三個燈的接口,再把這三個接口與樹莓派的GPIO 引腳進行連接,通過控制這三個燈的顏色比例變化來模擬交通燈的顏色變化。
系統研究的是十字路口紅綠燈變化情況,如圖4 所示,將東西南北四個方向的路口都分為直行(包括直行車道和右轉車道)和左轉的情況。其中,東西方向,南北方向紅綠燈變化情況一致,則僅需研究東或西側,南或北側情況,即圖中D1,D2,D3,D4 這四個車道方向綠燈情況即可。當D1,D2,D3,D4 四個方向任意一個車道為綠燈時,其他車道都不能顯示綠燈。

圖4 路口交通圖
在交通十字路口,一般都會有一條車流量較多的主干道,一條車流量較少次干道。設定東西方向的車道為主干道,南北方向的車道為次干道,因為主次干道的車流量是不一樣的,一般情況下,主干道的車流量會大于次干道上的車流量,所以在初始綠燈時間的分配上,主干道的綠燈分配時間應該多于次干道上的綠燈時間。其中黃燈的時間固定為3s,所以在這個系統中不需要進行計算分配黃燈的時間,只需要計算紅燈,綠燈的時間即可。而車道的初始綠燈時間,應當是由十字路口平時的車流量所決定的,應提前測得合理的初始時間。考慮到在十字路口中車流量變化很快,更新時間不宜太長,還有系統所承受的計算壓力,更新時間不宜太短,在這個系統中設定為每5s 更新一次車流量,再根據更新的車流量計算出綠燈時間并將計算的綠燈時間更新給路口的交通燈[7~8]。
綠燈在每一次將要變化之前,都會先根據監測的車流量大小來進行一次判斷,判斷是否要變換交通燈顏色。而在每一次監測車流量之前,會先對綠燈的剩余時間進行判斷。如果判斷當前綠燈剩余時間小于或等于5s,則直接更新當前綠燈的剩余時間為5s,與此同時,當前綠燈開始閃爍,5s后,直接變換為黃燈,不再進行車流量的判斷。如果判斷當前綠燈時間大于5s,系統根據當前車流量計算綠燈時間,如果計算的綠燈時間小于剩余的綠燈時間,則當前交通燈的綠燈剩余時間更新為系統計算的綠燈的剩余時間,反之,如果計算的綠燈時間大于剩余的綠燈時間,交通燈當前綠燈時間不變。
系統初始情況下,會對各個不同車道分配一個初始綠燈時間Hinit,然后每5s 檢測一次路口的車流量,再根據車流量計算出當前路口的綠燈時間Hnr。然后比較Hnr,判斷是否開始下一方向的綠燈時間。當新分配的時間小于等于5s 時,各個方向的綠燈的剩余時間直接更新為5s,這5s 期間,綠燈處于閃爍的狀態,且5s 后綠燈變化為黃燈,黃燈時間為3s,黃燈時間結束后下一路口的綠燈亮。當新分配的綠燈時間大于5s 時,再進行比較新分配的綠燈時間與當前路口剩余的綠燈時間。如圖5 所示,當分配時間小于等于當前路口綠燈剩余時間時,各方向剩余綠燈時間更新為新分配的時間,反之各方向剩余綠燈時間不更新。五秒后繼續檢測,并依次循環[9]。

圖5 程序流程圖
假設車輛的速度是20km/h,這在道路中其實已經算是一個很低的速度了,那么這輛車在5s 內的行駛距離將近28m。如果道路擁擠,那一輛車在監測點之間的行駛距離肯定是低于20km/h。所以設定近車監測點與遠車監測點的距離為25m。當路段擁擠時,這段距離的車行駛速度會變慢,5s 之內不會通過該路段,就會被計入車流量,當路段還比較通暢時,通過這段距離的車速度會很快,那么在5s 內就會通過該路段,就不會被計入車流量。
如圖4 所示,該十字路口的總車流量為D=d1+d2+d3+d4+d5+d6+d7+d8。向南北方向直行的車流量總量為D1=d3+d7,向南北方向左轉的總車流量為D2=d4+d8,向東西方向直行的總車流量為D3=d1+d5,向東西方向左轉的總車流量為D4=d2+d6。系統設定該十字路口的綠燈順序依次是東西直行,東西左轉,南北直行,南北左轉,以此循環。檢測時間間隔為3s,路燈初始周期為H。
由于四個方向綠燈時間不能重合,所以每個方向綠燈都應該設置一個初始時間。綠燈初始時間的更新:每當綠燈進行轉換到下一路口綠燈時,下一路口的綠燈應該設置一個初始時間,而不應該沿用上一路口所計算的綠燈時間。因為上一路口在綠燈的過程中,車流量會越來越少,所計算的綠燈時間也會越來越少,在下一次綠燈變化之前,綠燈時間達到一個最小值。然而在這個過程中,其余路口都是紅燈時間,車流量會增大,如果繼續使用上一方向所計算的綠燈時間則會不合理,所以在每個路口綠燈變化之前綠燈時間需要更新到初始值。
由于夜間人們的出行量大大減少,道路上的車流量也隨之很少,所以在夜間再實行與白天同樣的交通燈的變化規則就有些不合理了。在夜間,因為出行的車輛較少,只需要提醒司機到路口時記得減速通過就可以了,這個時候就可以設置十字路口中四個路口黃燈持續閃爍,提醒司機注意來往車輛減速通過。關于交通燈夜間模式的時間設置,還要根據季節來設定。在夏季,白天較長,夜晚較短,夜間模式也應把時間推遲,可以設定凌晨一點開啟夜間模式,四點關閉夜間模式。而冬季,白天較短,夜晚較長,夜間模式可以提前到晚上十二點開啟夜間模式,早晨五點關閉夜間模式。夜間模式的設置也緩解了控制系統的壓力。
根據交通燈實時控制系統的功能模塊對系統測試,先將樹莓派和傳感器顯示燈這幾個模塊給連接起來,連接好之后接通電源,在樹莓派上運行程序,系統便開始運行了。因為系統的應用場景是設有主次干道的十字路口,所以測試時候會分為主干道和次干道分別進行測試,測試隨著車流量的變化交通燈是如何進行變化的。同時還會測試夜間時,交通燈是怎樣變化的。
根據系統測試方案設計如表1 所示的路口主干道情況的測試用例、如表2 所示的次干道情況的測試用例以及表3 所示的夜間模式的路口交通燈情況的測試用例。

表1 主干道測試用例表

表2 次干道測試用例表

表3 夜間模式測試用例表
通過樹莓派運行寫好的Python程序,可以通過將樹莓派連接到PC 端,在PC 端上控制樹莓派運行Python 代碼。代碼運行完成后,對該系統進行簡單的測試,檢測其功能。
系統剛開始檢測時,設定東西直行車道綠燈亮,則其他車道紅燈亮。如圖6 所示。

圖6 交通燈變化圖
綠燈時間結束后,東西方向直行車道交通燈黃燈亮起,其他方向仍為紅燈,如圖7 所示。

圖7 交通燈變化圖
東西直行黃燈結束后,變為紅燈,下一車道交通燈黃燈亮,如圖8 所示。

圖8 交通燈變化圖
下一車道黃燈時間結束后,路燈亮,其他車道依然是紅燈,如圖9 所示。

圖9 交通燈變化圖
夜間路口黃燈持續閃爍,如圖10 所示。

圖10 交通燈夜間模式圖
當某一車道綠燈亮時,模擬車輛通過壓力傳感器,該車道的壓力傳感器產生信號傳送給了樹莓派系統,系統在根據傳過來壓力信號的次數判斷車流量,再計算該車道的綠燈時間,系統再控制綠燈亮的時間,綠燈時間與車道車流量的大小成正比。
系統介紹了交通燈實時控制系統的目的和意義,結合了壓力傳感器和樹莓派開發板,參考了之前的智能交通燈的研究技術,讓交通燈隨著車流量的變化而實時變化,變得更加智能。同時這個系統的開發成本也比較低,其中用到的壓力傳感器在這個系統中也易于安裝和維護。系統開發的成功將會給人們的出行帶來極大的便利,讓人們的出行更加的舒適,很大地緩解交通擁堵的狀況,讓城市道路更通暢。