目前一些惡劣或危險的環(huán)境人類仍然無法置身其中進行現場檢測,如出現險情的礦井地道、地形崎嶇的巖洞等,很難取得現場的參數。在這種情況下只有借助于智能探測裝置。因智能小車控制方便、行動靈活,對比其他載體工具更容易勝任探測任務,因此成為各種探測儀器的首選工具。
本文設計的智能探測系統以小車為載體,將所測得的現場參數通過nRF24L01無線模塊實時傳回上位機,具有快速靈活的特點;在實際工作時可左右轉向和后退,自動躲避障礙物;同時該小車操控方便,可通過MFC搭建的人機交互界面利用鼠標和鍵盤對小車進行遠程控制。
1、系統總體結構設計
該系統基于Actel FPGA實現,采用兩塊Fusi。nStartkit開發(fā)板,一塊作為車載控制板,另一塊作為中轉板。車載控制板負責采集溫度、濕度、板載電壓、當前路況以及人體檢測等現場信息,驅動小車運行,同時通過無線發(fā)送現場信息以及接收上位機的控制命令。中轉板負責將接收到的無線信號通過串口轉發(fā)給PC機,同時將PC機由串口返回的控制指令利用無線模塊發(fā)送給車載控制板。PC機上采用MFC編寫人機交互界面,顯示小車所在環(huán)境的相關信息,同時提供鼠標、鍵盤等完善的操控手段。系統結構如圖1所示。
圖1 系統結構框圖
2、系統硬件設計
2、1無線數據傳輸芯片nRF24L01
2.1.1芯片簡介H
nRF24L01是挪威NorDic公司的單片2.4 GHz無線收發(fā)一體芯片,有多達125個頻道可供選擇,支持1 Mb/s和2 Mb/s傳輸速率。該芯片采用SPI接口進行數據讀寫和參數配置,以寄存器映射方式對各個寄存器進行管理,同時具有自動重傳、動態(tài)有效信息長度(DPL)、應答信號攜帶有效信息(ACK PAYLOAD)等高級功能。
2.1.2功能
動態(tài)有效信息長度(DPL)指的是發(fā)送端的nRF24L01芯片通過寫人有效數據區(qū)的數據長度決定當前一幀數據的大小,而接收端則通過接收到的數據幀中的控制域信息而不是寄存器中定義的數據長度提取有效數據。這個功能極大地提高了無線信道的使用率,同時減少了冗余數據的傳播,降低了數據在空中滯留的時間和數據被污染的概率。配合nRF24L0l的CRC校驗和自動重傳功能,在有效地降低數據誤碼率的同時保證了數據傳輸的時效性。
應答信號攜帶有效信息(ACK PAYLOAD)指nRF24L01芯片在開啟自動重傳和DPL的基礎上實現的雙向通信功能。圖2為一對無線模塊之間的一次攜帶應答有效信息的數據傳輸過程。主發(fā)送模塊(PTX)發(fā)送完第1幀數據后,自動置為接收模式,等待主接收模塊(PRX)發(fā)送應答信號或攜帶有效數據的應答信號。主接收模塊收到主發(fā)送模塊發(fā)送的第1個數據幀后,若此時有需要附加的有效數據,則在發(fā)送完ACK信號后繼續(xù)發(fā)送有效數據。而主發(fā)送模塊收到ACK信號后繼續(xù)接收有效信號,直到空中沒有殘留的無線信號再開始發(fā)送第2幀信號。
使用ACK PAYLOAD可以實現車載系統和PC機的雙向通信,該功能很好地解決了手動切換無線收發(fā)狀態(tài)導致雙方互相等待的問題,同時只在需要對車載控制板進行控制的時刻附帶應答有效信息,可以減少不必要的通信過程,大大提高了系統穩(wěn)定性。
圖2攜帶ACK PAYLOAD的1次數據傳輸示意圖
2.1.3實現功能的配置方法
要實現nRF24L01的ACK PAYLOAD功能需要經過以下步驟:首先進行無線模塊的基本配置,包括發(fā)送接收模式的選擇(CONFIG)、開啟自動重傳功能(EN_AA)、接收地址使能(EN_ADDR)、設置重傳時問不為零(SET-UP RETR)等;然后同時開啟DPL和ACK PAYLOAD功能,要實現這兩個功能,必須在完成第一步之后用nRF24L01白帶的ACTIVATE命令加上0x73數據開啟默認隱藏的兩個寄存器FEATURE和DYNPD。通過對這兩個寄存器的設置就可以實現數據的雙向通信。但要注意,接收端開啟DPL后要使用R_RX PL WID命令讀取當前數據幀的有效數據長度,同時使用W ACK PAY-LOAD命令將ACK PAYLOAD寫入FIFO。
2.2 Core 80515架構
Core 8051S是Actel公司推出的基于APB3總線的8051lP核,兼容8051的全部指令,同時又具備許多51單片機所沒有的獨特功能:
?。?)具有可配置的JTAG接口調試功能,可利用Flash_Pro下載器作為其調試工具;優(yōu)化指令執(zhí)行速度,內部設置流水線,可實現單個時鐘周期執(zhí)行一條指令,且是普通51單片機的12倍。
?。?)采用APB3外設總線結構和SER寄存器內存映射方式管理外設,將外部擴展的64 KB數據空間中的最高4 KB作為APB3外設的寄存器內存映射地址,每個APB3外設占據256 B的地址,因此最多可添加16個外設。
?。?)使用CoreConsole軟件以圖形化界面的方式添加Core8051S以及其他外設,既直觀又方便。
圖3是以CoreConsole開發(fā)的、基于Core805lS和APB3總線的50PC系統的典型架構。該軟件的開發(fā)流程與Altera公司基于NIOS Ⅱ處理器的soPc開發(fā)流程類似,同時又具有其獨特優(yōu)勢:在系統不復雜、控制部分遠多于計算處理時,使用Core805⊥s可靈活迅速地進行開發(fā),通過安裝ISA—Actel5 1為Keil提供調試驅動可直接使用Keil編寫代碼并進行在線程序調試,而優(yōu)化后的指令執(zhí)行速度可滿足大部分應用的要求。
圖3 CoreConsole下基于Core8051S的開發(fā)實例
本系統設計步驟:
?。?)利用CoreConsole以圖形化方式設計片上系統所需的總線及外設,包括SPI、PWM、GP10、UART等模塊;配置各模塊與APB3總線之間的連接關系,正確分配外設地址;然后生成.Ⅴ文件導人Actel集成開發(fā)環(huán)境Libero。
?。?)使用Libero的Flash Memory System Builder將Fu_S10n內部的Flash模塊配置為Core8051S的外部程序空問。如果有必要還可以將Fusi。n StartKit開發(fā)板上的SRAM作為Core8051S的外部數據空間使用。
(3)將工程編譯綜合后下載到開發(fā)板上,通過Keil編寫程序并進行調試。
3、系統軟件設計
3.1車載控制系統軟件設計
車載系統是本系統的核心部分,它擔負著現場環(huán)境探測,遠距離數據傳輸以及未知區(qū)域檢測等重要功能。因此該部分的設計對可靠性和穩(wěn)定性要求較高。系統的軟件流程圖如圖4所示。
圖4車載控制系統流程圖
車載系統軟件包含兩部分功能:采集現場各種參數和實現各種運行模式。通過溫濕度傳感器和人體紅外傳感器采集溫濕度值以及現場環(huán)境是否有人信號;通過無線返;回參數決定當前小車的運行模式,包括自動運行模式、半遙控模式和全遙控模式。自動運行模式下小車會根據采集到的光電對管組信息分析當前的路況,從而作出相應運行路徑修正處理;半遙控模式下通過鼠標控制Windows界面的參數來控制小車的行動;全遙控模式下通過操控鍵盤可直接操控小車運行。
車載系統自動運行時,通過內部算法進行路徑選擇和障礙規(guī)避。由于光電對管組信息相對較少,故采用查表映射法進行舵機電機驅動控制,即將光電對管組采集到的信息進行分類,根據不同的信息賦予小車不同的電機和舵機驅動值,而光電對管組采集得到的信息為6 bit數據,也就是數值為0~63,將其作為數組的下標,在數組內容中根據下標所表征的類型設置不同的經驗值,通過大量的運行測試即可得到比較理想的參數。車載系統檢測到小障礙物時,查表得到舵機電機參數,轉過一定角度繞開障礙物繼續(xù)運行;檢測到較大障礙物且無法繞過時,車載系統倒車回到安全區(qū)域繼續(xù)運行。
由于光電對管組存在干擾信號,在算法上進行了如下濾波處理:利用記憶功能將前幾次的行進路線保存,通過與當前輸出狀態(tài)的比對,判斷是否為干擾信息以決定是否摒棄當前控制量。
以上算法保證了車載系統在運行中出錯概率降到最低。
3.2人機交互界面設計
A機交互界面是采用微軟基礎類(MFC)開發(fā)的基于對活框架構的應用程序。采用CMSComm類處理中轉板與PC之間的串口通信,同時通過截獲軟件系統的消息傳遞函數來實現對鍵盤值的判斷。
本文詳細介紹了nRF24L01無線芯片的DPL和ACKPAYLOAD等功能,實現了車載系統與上位機之間的雙向通信,使用Actel公司的CoreConsole工具構建SoPC片上系統,同時設計了PC機上人機交互界面,完善了系統的運行和控制,實現了具有實時數據傳送、自動避障、遠程操控等功能的智能探測系統。