李金燁
利用Arduino開發(fā)板,連接紅、黃、綠3個LED發(fā)光模塊,編譯、上傳代碼后LED燈可交替發(fā)亮,這便是一個簡易的模擬交通信號的創(chuàng)客作品。
如果加裝數(shù)字觸摸傳感器、MIC聲音傳感器、紅外線傳感器等組件,作品的智能程度會更高。
現(xiàn)實生活中,交通信號燈交替發(fā)亮是如何設計的?我以十字型路口、左轉先于直行的模式進行說明。
在十字型路口處(不考慮右轉彎存在信號燈)的運行情況是這樣的:首先,南北方向左轉綠燈亮m1秒,黃燈亮3秒,之后變成紅燈。然后南北方向直行綠燈亮n1秒,黃燈亮3秒,之后變成紅燈。接著,東西方向左轉綠燈亮m2秒,黃燈亮3秒;然后東西方向直行綠燈亮n2秒,接著黃燈亮3秒,之后變成紅燈。
信號燈的指示就是通過這種循環(huán)模式完成的,它的規(guī)律性較強,能讓車輛有序通行。但是,這種方式的缺點在于,不論各方向的車流量如何變化,它都只按設定的時間依次運轉,在某個方向明顯無車也照樣開放綠燈與黃燈的固定時間內,車流量大的方向的車輛卻在等紅燈,影響通行效率。
針對這種情況,能不能用Arduino開發(fā)板及相關組件設計出優(yōu)化的交通信號指揮模型?
該模型設計的基本原則是依照預設時間運轉信號燈,根據(jù)車流量的變化適時調整信號燈。
具體實施辦法是,當某個方向綠燈開啟時,雖然未達到預設時間,若本方向再無通行車輛,偵測其他方向是否有需要通行的車輛,若有則轉換為黃燈3秒,之后變成紅燈。即將達到預設時間時,偵測其他方向是否有需要通行的車輛,若無則本方向綠燈繼續(xù)亮至車輛通行結束后轉換為黃燈,若偵測到其他方向有需要通行的車輛,則雖本方向車輛通行未結束也立即轉換為黃燈。達到預設時間時,若本方向無需要通行的車輛或所有方向均無需要通行的車輛,則信號燈按原設定運轉。
構建交通信號指揮模型需要的器材有Arduino開發(fā)板,紅、黃、綠色LED發(fā)光模塊,轉GPIO擴展版,紅外遙控器套件,3P連接線等。
基本思路是用紅外遙控器套件輸入數(shù)據(jù),模擬十字路口各方向左轉和直行車輛數(shù),利用為Arduino開發(fā)板定制的編程工具ArduBlock編寫程序,實現(xiàn)對交通信號燈(LED發(fā)光模塊)的智能控制。
按照南北方向左轉、南北方向直行、東西方向左轉和東西方向直行分組,實現(xiàn)交通信號燈智能控制的基礎偽代碼(以某一方向綠燈開啟為例)如下。
While 其他方向無通行車輛
{
Repeat
本車道綠燈開啟
Until 本方向無通行車輛
Repeat
本車道綠燈開啟
Until 本方向預設綠燈時間到
}
While 其他方向有通行車輛
{
Repeat
本車道綠燈開啟
Until 本方向預設綠燈時間到 or 本方向無通行車輛
}
本車道轉換為黃燈3秒
本車道轉換為紅燈
下一方向綠燈開啟并延時3秒
將以上分組各項再一分為二,如將“南北方向左轉”分為“南往西左轉”和“北往東左轉”,智能控制的效率會進一步提升。
利用Arduino開發(fā)板,我構建了交通信號智能指揮模型。將這一探究成果應用于現(xiàn)實交通指揮中,可提高效率、減少擁堵。
這里所述只是用Arduino開發(fā)板構建解決問題的模型,要想解決現(xiàn)實問題,還應從單片機、寄存器層面深層次入手。(指導老師:孫國強)