◆陳哲來(lái) 潘 鈺 梁大偉
?
基于ARM的交通燈控制系統(tǒng)的設(shè)計(jì)
◆陳哲來(lái) 潘 鈺 梁大偉
(江蘇警官學(xué)院 江蘇 210031)
交通燈控制著人來(lái)人往,但是固化的交通燈控制系統(tǒng),不僅無(wú)法處置突發(fā)狀況,而且也是一種時(shí)間上的浪費(fèi)。本課題將設(shè)計(jì)一種智能化交通燈信號(hào)燈系統(tǒng),在正常路口信號(hào)燈運(yùn)行基礎(chǔ)上,緩解交通擁堵現(xiàn)象,節(jié)省時(shí)間和費(fèi)用。
公安技術(shù)類;智能;交通燈
伴隨著社會(huì)經(jīng)濟(jì)的逐步發(fā)展,道路使用者數(shù)量也在不斷增加,現(xiàn)有交通設(shè)施提供的資源有限,城市交通問(wèn)題已經(jīng)成為人們所關(guān)注的熱點(diǎn)。與此同時(shí),世界各地的自駕游日益增多,私家車的數(shù)量急劇增加,國(guó)內(nèi)交通燈控制系統(tǒng)的問(wèn)題逐漸顯現(xiàn),其他國(guó)家也需要對(duì)其本國(guó)的交通燈控制系統(tǒng)做出優(yōu)化,以便更好適應(yīng)這種不斷增長(zhǎng)的需求?;趥鹘y(tǒng)交通燈控制系統(tǒng)設(shè)計(jì)過(guò)于死板,紅綠燈交替時(shí)間過(guò)于程式化的缺點(diǎn),智能交通燈控制系統(tǒng)的設(shè)計(jì)就顯示出了它的研究意義。
交通信號(hào)控制系統(tǒng)是現(xiàn)代城市交通控制和疏導(dǎo)的主要措施。平面交叉路口,作為城市交通的基本組成部分之一,其通行能力是解決城市交通問(wèn)題的核心,而交通信號(hào)燈又是平面交叉路口必不可少的交通控制手段。伴隨著計(jì)算機(jī)技術(shù)和自動(dòng)控制技術(shù)的發(fā)展,以及交通流理論的不斷發(fā)展完善,交通運(yùn)輸組織與優(yōu)化理論、技術(shù)的不斷提高,國(guó)內(nèi)外逐漸形成了一批高水平有實(shí)效的城市道路交通控制系統(tǒng)[1]。本次課題從交通燈控制系統(tǒng)這個(gè)點(diǎn)切入,進(jìn)行相關(guān)研究。
本文采用軟件和硬件相結(jié)合的設(shè)計(jì)方案,自動(dòng)控制十字路口四組紅、綠交通燈的狀態(tài)轉(zhuǎn)換,指揮各種車輛和行人安全通行,實(shí)現(xiàn)道路的最大通行效率,減輕交警路面指揮壓力。
選用Arduino Due作為本次實(shí)驗(yàn)的控制板,和其他Arduino控制板不同的是,它是第一塊基于32位ARM核心的Arduino控制板,比以往使用8位AVR核心的其他Arduino更加強(qiáng)大;內(nèi)部集成DMA控制器,極大地提高了運(yùn)算速度;同時(shí)擁有84Mhz的CPU時(shí)鐘頻率、96KBytes的SRAM和512KBytes的Flash,能滿足更快速度和更大存儲(chǔ)容量的應(yīng)用需求。需要注意的是,Arduino Due的運(yùn)行電壓是3.3V,I/O引腳的最大容忍電壓是3.3V,所以實(shí)驗(yàn)過(guò)程必須確保將電壓控制在3.3V以下[2]。
這個(gè)小模塊允許微控制器連接到Wi-Fi網(wǎng)絡(luò),并使用Hayes風(fēng)格的命令進(jìn)行簡(jiǎn)單的TCP/IP連接。處理器基于Tensilica Xtensa Diamond Standard 106Micro的L106 32位RISC微處理器內(nèi)核,運(yùn)行頻率為80 MHz。內(nèi)存如下:
(1)32KB指令RAM;
(2)32KB指令緩存RAM;
(3)80KB用戶數(shù)據(jù)RAM;
(4)16KB ETS系統(tǒng)數(shù)據(jù)RAM。
外部QSPI flash:支持最高16MB(通常包括51 KB至4MB)。 ESP8266引腳排列如表1所示:
表1 ESP8266引腳排列
移動(dòng)端和交通信號(hào)燈硬件互聯(lián)采用網(wǎng)絡(luò)層的TCP/IP協(xié)議,TCP(Transmission Control Protocol 傳輸控制協(xié)議)是一種面向連接的、可靠的、基于字節(jié)流的傳輸層通信協(xié)議。[3]實(shí)現(xiàn)該協(xié)議傳輸硬件端使用esp8266WIFI模塊,通過(guò)硬件端的Arduino Due與esp8266的串口通信,將AT指令傳輸給WIFI模塊,該模塊在收到指令后可以按照指令完成配置功能,選擇模式,發(fā)送數(shù)據(jù)等相關(guān)任務(wù)。移動(dòng)端使用套接字與esp8266通信,移動(dòng)端將指令用TCP數(shù)據(jù)包的形式發(fā)送給esp8266模塊,esp8266收到指令后通過(guò)串口傳給Arduino Due單片機(jī),單片機(jī)按照程序的指令映射控制紅綠燈的變化。
嵌入了單片機(jī)的加通紅綠燈信號(hào)系統(tǒng)使得交通警察可以在Android平臺(tái)終端,例如手機(jī),平板等,通過(guò)Wi-Fi協(xié)議遠(yuǎn)程連接周邊的交通信號(hào)燈,實(shí)現(xiàn)監(jiān)視,調(diào)控等功能。程序設(shè)計(jì)分為三種模式:監(jiān)視模式、手動(dòng)模式、應(yīng)急模式。
通常情況下,信號(hào)燈按照原指令運(yùn)行,需要時(shí),交警打開(kāi)移動(dòng)終端的Wi-Fi,連接上紅綠燈發(fā)出的信號(hào),輸入用戶名密碼即可以進(jìn)入監(jiān)視模式。監(jiān)視模式下,紅綠燈的當(dāng)前狀態(tài)會(huì)實(shí)時(shí)顯示在手機(jī)屏幕上,包括倒計(jì)時(shí)、信號(hào)燈目前顏色、紅綠燈參數(shù),部分帶有太陽(yáng)能電池的紅綠燈也應(yīng)當(dāng)在屏幕上顯示剩余電量。如遇特殊情況,軟件允許交警立刻切換為應(yīng)急模式,以此應(yīng)對(duì)不同的緊急情況,例如:火情,警情,大型活動(dòng)道路管控等。此情形下,交警可以對(duì)多個(gè)街區(qū)的道路信號(hào)燈進(jìn)行統(tǒng)籌管理,而不需要對(duì)單獨(dú)的紅綠燈進(jìn)行設(shè)置,只需選擇具體路線,再啟動(dòng)所需模式和預(yù)設(shè)的應(yīng)急方案,即可完成對(duì)路面的管控。極端情況下,可以使用純手動(dòng)模式,完全按照人工指令來(lái)顯示需要的紅綠燈模式,但是此模式必須使用授權(quán)碼才可以進(jìn)入。
Arduino串口用于Arduino電路板之間、Arduino與電腦、Arduino與其他串口設(shè)備之間的通信,大部分Arduino板使用數(shù)字引腳0(RX)和1(TX)進(jìn)行串口通信時(shí)都使用“Serial”,數(shù)字引腳0(RX)和1(TX)與Arduino USB接口的讀和寫(xiě)引腳是公用的。所以在程序上傳時(shí)數(shù)字引腳0(RX)和1(TX)不可以接其他串口設(shè)備,否則會(huì)出現(xiàn)上傳錯(cuò)誤的情況。Arduino Due 有三個(gè)額外的串口(3.3V TTL):Serial1對(duì)應(yīng)數(shù)字引腳19 (RX) and 18 (TX);Serial2 對(duì)應(yīng)數(shù)字引腳17 (RX) and 16 (TX);Serial3 對(duì)應(yīng)數(shù)字引腳15 (RX) and 14 (TX)。本項(xiàng)目使用serial1,也就是19 (RX) and 18 (TX)兩對(duì)數(shù)字引腳與esp8266模塊通信,其他引腳用來(lái)連接交通信號(hào)燈和傳感器等。
圖1 主模塊與控制板連接示意圖
4.1.1 ESP8266預(yù)配置
ESP8266支持flash,在正式連接其與電路板時(shí),先使用串口轉(zhuǎn)USB工具對(duì)其進(jìn)行預(yù)配置,這種配置會(huì)直接保存入FLASH,查詢版本固件號(hào):AT+GMR,必要的話,更新ESP8266的版本固件。具體配置指令如下:
(1)AT+CWMODE_DEF = 2;//設(shè)置當(dāng)前 Wi-Fi 模式并保存到 Flash(1: Station 模式,2: SoftAP 模式,3:SoftAP+Station 模式);
(2)AT+CWSAP_DEF =
4.1.2 ESP8266與Arduino Due接線
配置完成后按照表2將Arduino Due與ESP8266連接:
表2 Arduino Due與ESP8266連接對(duì)應(yīng)表
4.1.3嵌入AT指令對(duì)ESP8266初始化
每次對(duì)Arduino Due上電都包括對(duì)esp8266的初始化。將AT指令編入Arduino Due控制板中,在setup()函數(shù)中調(diào)用初始化函數(shù)。初始化核心步驟如下:
(1)AT;
(2)AT + RST//重啟;
(3)AT + CIPMUX=1//多連接模式(0:?jiǎn)芜B接模式,1:多連接模式);
(4)AT+CIPSERVER=1,8080 //建立TCP服務(wù)器,端口號(hào)8080。
使用初始化函數(shù)建立起Arduino Due與esp8266的穩(wěn)定通信渠道后,Arduino與esp8266開(kāi)始進(jìn)行數(shù)據(jù)交換,主要采用的為print()函數(shù)和AT+CIPSEND指令,該函數(shù)可以將AT指令從串口從Arduino Due發(fā)送至esp8266模塊,esp8266模塊在接收到AT+CIPSEND指令后可以將數(shù)據(jù)通過(guò)Wi-Fi發(fā)送給已連接的客戶端(Client),客戶端使用readLine()來(lái)讀取信息;同理,客戶端使用write()函數(shù)向esp8266發(fā)送指令,esp8266讀取指令后,再用print()函數(shù),將指令傳給Arduino due。通訊示意圖如圖2。
圖2 通訊示意圖
移動(dòng)端開(kāi)發(fā)主要采用Android Studio。Android Studio是谷歌推出的一個(gè)Android集成開(kāi)發(fā)工具,在IDEA的基礎(chǔ)上,Android Studio 提供了功能強(qiáng)大的布局編輯器,可以拖拉 UI控件并進(jìn)行效果預(yù)覽。
4.3.1用戶界面設(shè)計(jì)(User Interface)
圖3 用戶界面設(shè)計(jì)流程圖
4.3.2套接字程序設(shè)計(jì)(Socket)
套接字是TCP用主機(jī)的IP地址加上主機(jī)上的端口號(hào)作為TCP連接的端點(diǎn)。
Socket被服務(wù)器端用來(lái)識(shí)別連入的客戶端,使用stream來(lái)進(jìn)行通訊:getOutputStream(),getInputStream()。
因?yàn)楸痉?wù)器端支持多客戶端連接,服務(wù)器采用線程(Thread)來(lái)連接多客戶端,以此提高效率避免blocks。
圖4 ObjectStream客戶端----服務(wù)器時(shí)間線
圖5 多線程服務(wù)器時(shí)間線
對(duì)多個(gè)交通紅綠燈信號(hào)分析是必然趨勢(shì),Maram Bani Younes 和Azzedine Boukerche 在An Intelligent Traffic Light Scheduling Algorithm Through VANETs文中提到了ITLC算法,其旨在減少每個(gè)道路交叉口的等待延遲時(shí)間并增加路口單位時(shí)間內(nèi)的車流量,該算法通過(guò)分析環(huán)境交通流的交通車流量特性,使得每個(gè)交通燈處的排隊(duì)延遲減少了25%,車流量增加了30%。該算法利用Ad-hoc技術(shù)收集每個(gè)環(huán)境交通流量的實(shí)時(shí)交通特征,準(zhǔn)備區(qū)域被劃分在信號(hào)化道路交叉點(diǎn),以確定每個(gè)階段的最大允許時(shí)間[4]。
交通規(guī)劃者長(zhǎng)期使用歷史數(shù)據(jù)來(lái)制定信號(hào)燈方案,優(yōu)化“綠燈時(shí)間”以改善交通流量,這些復(fù)雜的系統(tǒng)會(huì)使用不同時(shí)間、日期、計(jì)劃和傳感器來(lái)檢測(cè)等待紅燈的車輛。美國(guó)猶他州交通局可以在30秒內(nèi)調(diào)整該州的幾乎所有信號(hào),其擁有來(lái)自一千多個(gè)閉路攝像機(jī)的數(shù)據(jù),可遠(yuǎn)程控制該州80%以上的交通信號(hào)燈。不同于以往使用人力來(lái)監(jiān)測(cè)和響應(yīng)交通流量,新信號(hào)使用雷達(dá)傳感器和攝像頭來(lái)檢測(cè)交通狀態(tài),使用復(fù)雜的算法根據(jù)實(shí)時(shí)情況立即調(diào)整交通信號(hào)燈。匹茲堡卡內(nèi)基梅隆大學(xué)機(jī)器人研究所的史蒂芬·史密斯教授和他的團(tuán)隊(duì)在2012年安裝了9個(gè)智能信號(hào),并獲得了立竿見(jiàn)影的結(jié)果。通過(guò)道路的行程時(shí)間縮短了25%,閑置時(shí)間下降了40%,車輛排放量下降了20%[5]。
最終,交通信號(hào)燈可能會(huì)實(shí)現(xiàn)在無(wú)須“預(yù)測(cè)”交通車流量的情況下,與交通工具相連接,直接“詢問(wèn)”車輛出行方案,并以此為依據(jù)改變相應(yīng)的交通信號(hào)燈計(jì)劃。
[1]畢海濱,劉玉德,林建龍, et al.交通信號(hào)控制系統(tǒng)的現(xiàn)狀與發(fā)展對(duì)策[J].北京工商大學(xué)學(xué)報(bào):自然科學(xué)版, 2008, 26(1):29-32.
[2]樂(lè)鑫信息科技.ESP8266 AT指令集,版本3.0.1.
[3]university of Purdue - CS18000: Problem Solving and Object- Oriented Programming - JAVA Networking.
[4]Bani Younes M , Boukerche A . [IEEE 2014 IEEE 39th Conference on Local Computer Networks Workshops (LCN Workshops) - Edmonton, AB, Canada (2014.9.8-2014.9.11)] 39th Annual IEEE Conference on Local Computer Networks Workshops - An Intelligent Traffic Light scheduling algorithm through VANETs[J]. 2014:637-642.
[5]Barry K . The Traffic Lights of Tomorrow Will Actively Manage Congestion[J]. Korean Journal of Radiology Official Journal of the Korean Radiological Society, 2014, 16(4):936-41.
江蘇警官學(xué)院大學(xué)生實(shí)踐創(chuàng)新創(chuàng)業(yè)訓(xùn)練計(jì)劃項(xiàng)目資助(編號(hào):201810329029Y)。