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