摘 要:本算法針對包含主控站臺的公交模擬系統(tǒng)算法存在的不足,提出通過無線模塊進行無線通信,并應(yīng)用單片機作為數(shù)據(jù)的中央處理裝置,通過一種靈活的編程算法,實現(xiàn)無需主控站臺,也可以實現(xiàn)模擬小車對模擬站臺的多對多通信,從而實現(xiàn)對于一條線路上各輛公交車大致位置的可靠定位。
關(guān)鍵詞:STC單片機;無線通信;公交定位
中圖分類號:TM615;U495 文獻標識碼:A 文章編號:1674-7712 (2014) 14-0000-01
在公交模擬系統(tǒng)的數(shù)據(jù)傳輸需要先通過主控站臺[1]計算數(shù)據(jù),再發(fā)往各個站臺的算法中,如果主控站臺出現(xiàn)故障,則整個系統(tǒng)都會處于癱瘓狀態(tài)。本算法針對這一問題,優(yōu)化了系統(tǒng)設(shè)計,實現(xiàn)了在不包含主控站臺的條件下,僅適用一個數(shù)據(jù)傳輸通道,實現(xiàn)模擬小車對模擬站臺的多對多通信功能。
一、總體設(shè)計方案
整個公交模擬報站系統(tǒng),主要由單片機主控模塊、無線數(shù)傳模塊、液晶顯示模塊、電源供電模塊等部分組成。
整個系統(tǒng)都以單片機STC89C52RC作為系統(tǒng)的主控芯片,由電源供電模塊供電;模擬小車部分以自動循跡小車為載體,使用紅外對管檢測站臺黑線模擬到站,并通過液晶顯示出當前站臺,同時將位置信息發(fā)送給主控站臺;模擬站臺部分使用液晶顯示線路上各車的位置,并通過無線模塊進行站臺間數(shù)據(jù)的傳遞,以達到每個站臺都能準確顯示出線路上各輛小車位置的功能。
二、硬件設(shè)計方案
本系統(tǒng)采用STC 公司的STC89C52單片機作為主控制器。STC89C52是STC公司生產(chǎn)的一種低功耗8位微控制器,采用外部時鐘,晶振頻率可達12Mhz,具有32個通用IO口,從速度和管腳數(shù)量兩個角度來看,可以達到本系統(tǒng)各個部分的要求。
系統(tǒng)硬件分為兩個部分:模擬小車部分和模擬站臺部分。模擬小車部分使用單片機P0.0-P0.3作為紅外對管信號接入引腳,P0.4-P0.7作為L298N電機驅(qū)動模塊的信號給入引腳,驅(qū)動模塊中ENA與ENB與高電平短接;P2.0-P2.5與無線模塊nRF24L01的6個信號口分別相連,液晶1602的并行數(shù)據(jù)口與單片機P1.0-P1.7相連,RS、RW、EN分別連接至P2.6、P2.7、P3.4口,并且P3.2管腳用于下降沿觸發(fā)外部中斷檢測小車到站黑線。模擬站臺部分均使用P2.0-P2.5管腳與無線模塊nRF24L01的6個信號口分別相連,液晶1602的并行數(shù)據(jù)口與單片機P1.0-P1.7相連,RS、RW、EN分別連接至P0.0、P0.1、P0.2。
系統(tǒng)顯示部分采用M1602模塊。該模塊有兩行、每行16個字符可以用來顯示,可以滿足小車與站臺的顯示需求。小車液晶第一行顯示小車編號“Number:1”,第二行顯示此時站臺編號“Position:2”(以X1小車在2號站臺為例)。站臺液晶顯示第一行為站臺編號“Positon:1”,第二行顯示最近的小車編號與最少站臺數(shù)“Bus2 Distance 1”(以1號站臺為例,假設(shè)最近的2號小車距離1站到達)。
小車部分以自動循跡小車為載體,以STC89C52為主控芯片,采用4個紅外對管集成模塊作為黑線探測器,直線行駛時置于小車前部的4個紅外對管中間兩個位于黑線上,左右兩個用于檢測白色路面,若以1表示高電平,0表示低電平,則直線行駛時四個紅外對管傳給單片機的四位信號分別為0110。當線路出現(xiàn)拐彎時,4個紅外對管反饋的信號會發(fā)生變化,例如,若此時路線右拐,則在小車還未改變直行的方向時,紅外對管傳給單片機的信號可能是:0010或者0001。不難知道,當傳輸信號為0010時,小車偏離路線角度并不是很大,向電機驅(qū)動模塊L298N送給指令1000,令右側(cè)輪停止少許,左側(cè)輪前進,即可以使小車向右小幅度轉(zhuǎn)彎;當傳輸信號為0001時,小車偏離路線角度較大,可以向電機驅(qū)動模塊L298N送給指令1001,令右輪反轉(zhuǎn),左輪正轉(zhuǎn),實現(xiàn)原地逆時針旋轉(zhuǎn)一定角度,從而使小車盡快回到黑線位于中間兩個紅外對管的情況繼續(xù)行駛。反之同理。
根據(jù)該系統(tǒng)大部分硬件采用5V供電以及nRF24L01無線模塊采用3.3V供電,所以采用高性能可充電鋰電池提供7.4V直流電,再經(jīng)三端穩(wěn)壓集成電路LM7805穩(wěn)壓,形成5V直流電供給單片機。5V直流電經(jīng)過AMS1117-3.3V三端穩(wěn)壓電路形成穩(wěn)定的3.3V,供給nRF24L01模塊。
三、系統(tǒng)軟件設(shè)計
(一)模擬小車
程序首先初始化無線模塊nRF24L01和液晶1602,并以tx[0]=1標記1號小車,同理tx[0]=2、tx[0]=3分別標記2號小車和3號小車,并定義全局變量N記錄本輛小車經(jīng)過站臺的位置信息。每輛小車都默認由1號站臺出發(fā),,無論順時針運行還是逆時針運行,都以經(jīng)過1號站臺記錄此時位置N=0。
由于STC89C52單片機中斷數(shù)量有限,所以在程序主循環(huán)中運行循跡程序,當用于檢測到站的紅外對管檢測到站臺黑線時,程序進入中斷,首先在中斷子程序中先關(guān)閉外部中斷,向L298N電機驅(qū)動送給指令0000,使小車停下。在中斷程序中,使全局變量N=N+1,tx[1]=N,并且設(shè)置無線模塊nRF24L01為發(fā)送模式,發(fā)送數(shù)組tx[]。發(fā)送完畢后,再次打開外部中斷,為小車下一次到站做準備。
(二)各個站臺
程序初始化無線模塊nRF24L01和液晶1602完成后,各個站臺始終處于等待接收狀態(tài)。當站臺數(shù)組Rx[]接收到來自小車發(fā)出的數(shù)組后,通過讀本地Rx[0]的數(shù)據(jù),判斷是由第n號小車發(fā)來,并將相應(yīng)編號的小車的站臺位置Rx[1]存放在需要發(fā)送給其它站臺的數(shù)組Count[]中的Count[n]的位置上。接收數(shù)據(jù)完成后,各個站臺單片機對Count[]數(shù)組進行運算。以1號站臺為例,小車通過1號站臺時位置信息數(shù)據(jù)N會被刷新為0,所以通過D[n]=(4-Count[n])%4一個公式,就可以計算得到再線路上的所有小車離1號站臺剩余的站數(shù)D[n],取所有小車離本站臺剩余的站數(shù)的最小值并記為min,并在液晶上顯示出這個最小值min與其小車的編號n,方便人們選擇要換乘的公交方向。
其他站臺程序與一號站臺類似,有區(qū)別的地方只是剩余的站數(shù)公式不同。再以2號站臺為例,對于各小車距離本站的站數(shù)以及最少的站數(shù)可以由以下公式得到:D[1]=(5-Tx[1])%4,D[2]=(5-Tx[2])%4,D[3]=(Tx[3]+1)%4,min=min(D[1],D[2],D[3])。
四、結(jié)束語
本系統(tǒng)提出的一種多無線模塊相互通信構(gòu)建的公交模擬系統(tǒng),對于無線模塊數(shù)據(jù)傳輸?shù)撵`活使用以及對于單片機數(shù)組數(shù)據(jù)的靈活操作,使得整個系統(tǒng)能夠準確的在每一站臺顯示出離此站剩余站數(shù)最少的公交車編號以及相距站數(shù)。該模擬系統(tǒng)的研究和實際應(yīng)用也將為不斷發(fā)展的公交系統(tǒng)的報站問題,提供一種可用的解決方案。
參考文獻:
[1]陳蓓玉.基于光伏供電自動循跡小車的智能公交模擬系統(tǒng)研究[J].中國科技信息,2013(11):174-176.