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