劉思明
摘 要:飛思卡爾智能車(chē)設(shè)計(jì)大賽是全國(guó)170余所高校廣泛參與的全國(guó)大學(xué)生智能汽車(chē)競(jìng)賽。飛思卡爾智能車(chē)大賽提出制作一個(gè)能夠自主識(shí)別道路的模型汽車(chē),按照規(guī)定路線(xiàn)行進(jìn),以完成時(shí)間最短者為優(yōu)勝。在制作和調(diào)試智能車(chē)關(guān)鍵的過(guò)程中,需要?jiǎng)討B(tài)地跟蹤賽車(chē)的各種參數(shù)并實(shí)時(shí)地傳輸給上位機(jī)。最佳的選擇是采用無(wú)線(xiàn)傳輸數(shù)據(jù)給上位機(jī),可見(jiàn)能夠制作出無(wú)線(xiàn)實(shí)時(shí)數(shù)據(jù)采集系統(tǒng)是取得優(yōu)異比賽成績(jī)的關(guān)鍵。
關(guān)鍵詞:飛思卡爾智能車(chē);無(wú)線(xiàn)通信;上位機(jī)
DOI:10.16640/j.cnki.37-1222/t.2017.09.134
飛思卡爾智能車(chē)大賽提出制作一個(gè)能夠自主識(shí)別道路的模型汽車(chē),按照規(guī)定路線(xiàn)行進(jìn),以完成時(shí)間最短者為優(yōu)勝。在調(diào)試智能車(chē)關(guān)鍵的過(guò)程中,要使用算法對(duì)智能車(chē)的方向和速度進(jìn)行控制,選擇最佳算法是取勝的關(guān)鍵。比較和分析各種算法的優(yōu)劣,需要?jiǎng)討B(tài)地跟蹤賽車(chē)的各種參數(shù)并實(shí)時(shí)地傳輸給上位機(jī)。在不妨礙賽車(chē)運(yùn)行的情況下,最佳的選擇是采用無(wú)線(xiàn)的方式發(fā)送數(shù)據(jù)給上位機(jī),由上位機(jī)進(jìn)行保存和處理,這方便我們進(jìn)行實(shí)時(shí)地觀看跟蹤。在2014年飛思卡爾智能車(chē)第九屆比賽中,有很多賽車(chē)沖出賽道而無(wú)法取得比賽成績(jī),分析賽車(chē)采集到的賽道信息和智能車(chē)控制算法的缺陷是解決賽車(chē)沖出賽道的唯一途徑。要分析智能車(chē)采集到的大量賽道信息,由于BDM在線(xiàn)調(diào)試存在不足和不便之處,高速率數(shù)據(jù)傳輸?shù)臒o(wú)線(xiàn)上位機(jī)幾乎是唯一的選擇。能夠制作出高速率數(shù)據(jù)傳輸?shù)臒o(wú)線(xiàn)上位機(jī)是取得優(yōu)異比賽成績(jī)的關(guān)鍵。
1 無(wú)線(xiàn)上位機(jī)的選材
采用的通信模塊是XL24LD01無(wú)線(xiàn)收發(fā)模塊。XL24LD01是挪威NORDIC公司推出的一款高性能2.4G無(wú)線(xiàn)收發(fā)IC模塊,采用GFSK調(diào)制,工作在2400-2483M的國(guó)際通用ISM 頻段,最高數(shù)據(jù)速率可達(dá)2Mbps。XL24L01-D01集成了所有與RF協(xié)議相關(guān)的高速信號(hào)處理部分,如:自動(dòng)重發(fā)丟失數(shù)據(jù)包和自動(dòng)產(chǎn)生應(yīng)答信號(hào)等,模塊的SPI接口可以利用單片機(jī)的硬件SPI口連接或用單片機(jī)的I/O口進(jìn)行模擬,內(nèi)部有FIFO可以與各種高低速微處理器接口,便于使用低成本單片機(jī)。由于XL24LD01無(wú)線(xiàn)收發(fā)模塊鏈路層完全集成在芯片上,非常便于軟硬件的開(kāi)發(fā)。XL24LD01最高數(shù)據(jù)傳輸速率達(dá)2Mbps完全滿(mǎn)足了智能車(chē)與上位機(jī)大量數(shù)據(jù)的傳輸。XL24LD01模塊大小32*15.2mm,使用外置1/4波長(zhǎng)導(dǎo)線(xiàn)天線(xiàn)設(shè)計(jì),開(kāi)闊地1Mbps速率下,收發(fā)10個(gè)字節(jié)的數(shù)據(jù)量測(cè)試距離最遠(yuǎn)約300米左右,滿(mǎn)足了智能車(chē)與上位機(jī)傳輸距離的要求。
2 無(wú)線(xiàn)上位機(jī)系統(tǒng)設(shè)計(jì)
飛思卡爾智能車(chē)采集到的大量賽道信息通過(guò)單片機(jī)MPC5604的SPI接口發(fā)送給XL24LD01無(wú)線(xiàn)發(fā)送模塊,XL24LD01無(wú)線(xiàn)發(fā)送模塊接收到數(shù)據(jù)后,啟動(dòng)發(fā)射模式并把數(shù)據(jù)發(fā)送出去。XL24LD01無(wú)線(xiàn)接收模塊接收到數(shù)據(jù)后通過(guò)SPI接口把數(shù)據(jù)發(fā)送給STM32F103ARM開(kāi)發(fā)電路板,STM32F103ARM開(kāi)發(fā)電路板通過(guò)RS232串口把數(shù)據(jù)發(fā)送給PC上位機(jī)。PC上位機(jī)通過(guò)接收軟件把接收到的數(shù)據(jù)保存下來(lái)以便參賽者進(jìn)行分析。由于飛思卡爾智能車(chē)每20ms要采集128個(gè)字節(jié)的賽道數(shù)據(jù),要把這些數(shù)據(jù)及時(shí)地發(fā)送給上位機(jī),也就意味著整個(gè)系統(tǒng)的數(shù)據(jù)傳輸速率要超過(guò)51200bps。發(fā)送端SPI接口是標(biāo)準(zhǔn)的SPI接口,其最大的數(shù)據(jù)傳輸率為10Mbps,可見(jiàn)SPI接口完全可以滿(mǎn)足系統(tǒng)設(shè)計(jì)的要求。無(wú)線(xiàn)數(shù)據(jù)的傳輸速率是1Mbps,遠(yuǎn)遠(yuǎn)大于系統(tǒng)要求的51200bps。而在接收端控制XL24LD01無(wú)線(xiàn)接收模塊的MCU使用的是32位性能出色的STM32F103單片機(jī),為高速率的數(shù)據(jù)傳輸提供了有力保障。高速率數(shù)據(jù)傳輸使普通51單片機(jī)很難勝任。接收端串口的通信波特率為115200bps,能夠很輕松地完成系統(tǒng)數(shù)據(jù)的傳輸??梢?jiàn)整個(gè)系統(tǒng)的硬件配置完全滿(mǎn)足了設(shè)計(jì)的要求。由于整個(gè)系統(tǒng)采用的是單工通信,無(wú)論是發(fā)送端還是接收端都不需要在發(fā)送狀態(tài)和接收狀態(tài)進(jìn)行轉(zhuǎn)換,降低了系統(tǒng)的消耗時(shí)間,極大的降低了無(wú)線(xiàn)傳輸中的碰撞現(xiàn)象,提高了傳輸效率。
3 供電系統(tǒng)設(shè)計(jì)
整個(gè)系統(tǒng)硬件的設(shè)計(jì)首先要考慮到電源,由于XL24LD01無(wú)線(xiàn)收發(fā)模塊的工作電壓是1.9~3.6V,而智能車(chē)電源是大賽組委會(huì)統(tǒng)一提供的標(biāo)準(zhǔn)電源7.2V電池,則需一個(gè)外圍電壓轉(zhuǎn)換電路將電源電壓轉(zhuǎn)換為XL24LD01無(wú)線(xiàn)發(fā)送模塊的工作電壓3.3V。然后把XL24LD01無(wú)線(xiàn)發(fā)送模塊SPI口與飛思卡爾智能車(chē)電路板上的MCU的I/O口相連接。在發(fā)送端的軟件控制上采用循環(huán)發(fā)送。在接收端由于單片機(jī)STM32F103ARM開(kāi)發(fā)板提供3.3V電源,直接用杜邦跳線(xiàn)將XL24LD01無(wú)線(xiàn)接收模塊與單片機(jī)STM32F103ARM開(kāi)發(fā)電路板相連接即可。
4 數(shù)據(jù)的傳輸
在接收端的軟件控制上采用查詢(xún)的方法接收數(shù)據(jù),相對(duì)于中斷的接收方法而言,查詢(xún)的方法更適合高速率數(shù)據(jù)的傳輸。單片機(jī)STM32F103接收到數(shù)據(jù)后通過(guò)串口與上位機(jī)PC進(jìn)行數(shù)據(jù)的傳輸。上位機(jī)PC接收軟件的串口通信協(xié)議采用的是通信波特率為115200bps,8位數(shù)據(jù)位,1位停止位,無(wú)奇偶檢驗(yàn)位。接下來(lái)就是軟件調(diào)試,PC上位機(jī)終于能接收到數(shù)據(jù)了。但是接收到的數(shù)據(jù)與已知發(fā)送的數(shù)據(jù)相比較,出現(xiàn)了數(shù)據(jù)包錯(cuò)誤與數(shù)據(jù)包丟失現(xiàn)象。經(jīng)過(guò)耐心的查找原因,數(shù)據(jù)包的出錯(cuò)與接收端單片機(jī)STM32F103程序有關(guān),經(jīng)過(guò)程序的修改糾正了數(shù)據(jù)包出錯(cuò)的問(wèn)題。發(fā)現(xiàn)數(shù)據(jù)包的丟失與通信距離和天線(xiàn)的位置有關(guān),當(dāng)兩個(gè)收發(fā)天線(xiàn)的距離很近時(shí)沒(méi)有數(shù)據(jù)包的丟失,距離逐漸增大,出現(xiàn)了數(shù)據(jù)包的丟失,距離越遠(yuǎn)數(shù)據(jù)包丟失的概率越大。由于是在室內(nèi),接收天線(xiàn)接近墻面或靠近地面時(shí)容易出現(xiàn)丟包現(xiàn)象,所以接收天線(xiàn)盡可能的靠近飛思卡爾智能車(chē)的無(wú)線(xiàn)發(fā)射端來(lái)消除數(shù)據(jù)包的丟失。
參考文獻(xiàn):
[1]卓晴,黃開(kāi)勝,邵貝貝等.學(xué)做智能車(chē)———挑戰(zhàn)“飛思卡爾”杯[M].北京:北京航空航天大學(xué)出版社,2007.
[2]邵貝貝.單片機(jī)嵌入式應(yīng)用的在線(xiàn)開(kāi)發(fā)方法[M].北京:清華大學(xué)出版社,2008.