游安華,胥加林
(1.南京理工大學(xué) 工程訓(xùn)練中心,南京 210094;2. 南京理工大學(xué) 機(jī)械工程學(xué)院)
?
基于USB HID和nRF24L01+的飛行器無線調(diào)試系統(tǒng)
游安華1,胥加林2
(1.南京理工大學(xué) 工程訓(xùn)練中心,南京 210094;2. 南京理工大學(xué) 機(jī)械工程學(xué)院)
為了通過上位機(jī)實時采集飛控數(shù)據(jù)、在線調(diào)試飛行器,設(shè)計了一種基于USB HID和nRF24L01+的無線地面調(diào)試系統(tǒng)。系統(tǒng)接收飛控數(shù)據(jù),并將數(shù)據(jù)發(fā)送到上位機(jī),用于動態(tài)顯示飛行器狀態(tài)和后續(xù)研究分析;同時系統(tǒng)可以將上位機(jī)的控制信號發(fā)送給飛控系統(tǒng),實現(xiàn)在線調(diào)試、上位機(jī)控制。測試結(jié)果表明,該調(diào)試系統(tǒng)成本低、實時性好,滿足四旋翼飛行器的開發(fā)需要。
四旋翼飛行器;STM32微控制器;USB HID;nRF24L01+;無線通信
四旋翼飛行器機(jī)械結(jié)構(gòu)簡單、操控性能優(yōu)越,具有良好的軍事偵察、搜索救援性能[1-2]。且隨著微電子技術(shù)、傳感器技術(shù)的進(jìn)步,四旋翼飛行器得到迅速發(fā)展[3]。為加快飛行器的開發(fā),需實時采集飛行器姿態(tài)角和傳感器數(shù)據(jù),并對其研究分析,以優(yōu)化控制算法。而由于飛行器的飛行特點(diǎn),不能通過有線傳輸?shù)姆绞讲杉瘮?shù)據(jù),一定程度上影響飛行器的開發(fā)速度。但是,隨著中短距離無線傳輸?shù)陌l(fā)展,無線傳輸成為重要的數(shù)據(jù)傳輸方式。
本文基于USB HID和nRF24L01+,設(shè)計了一種無線地面調(diào)試系統(tǒng)。四旋翼飛行器的飛控系統(tǒng)將傳感器數(shù)據(jù)、PID參數(shù)、飛行器姿態(tài)角等數(shù)據(jù)打包后通過nRF24L01+模塊傳給地面調(diào)試系統(tǒng),地面調(diào)試系統(tǒng)的nRF24L01+模塊將接收到的數(shù)據(jù)基于USB HID協(xié)議通過STM32微控制器模塊上傳到上位機(jī),實時顯示飛行器姿態(tài),并將數(shù)據(jù)有選擇地存儲下來,用于后續(xù)的研究分析。同時可以通過上位機(jī)修改飛控系統(tǒng)參數(shù),然后基于USB HID協(xié)議通過STM32微控制器模塊和nRF24L01+模塊發(fā)送到飛控系統(tǒng),實現(xiàn)飛行器的無線調(diào)試。最后,基于某開源上位機(jī)對無線調(diào)試系統(tǒng)進(jìn)行了測試。
系統(tǒng)結(jié)構(gòu)主要包括USB HID協(xié)議、nRF24L01+模塊、STM32微控制器模塊3個部分。系統(tǒng)總體方案如圖1所示,本文主要設(shè)計地面調(diào)試系統(tǒng)部分。
圖1 系統(tǒng)總體方案圖
1.1 USB HID協(xié)議
USB[4]是一種計算機(jī)外圍設(shè)備接口標(biāo)準(zhǔn),具有成本低、傳輸速度快、數(shù)據(jù)傳輸可靠、支持熱插拔等優(yōu)點(diǎn)。
HID類USB接口是為一些人工輸入、輸出設(shè)備而設(shè)計的,其與計算機(jī)間的通信采用控制傳輸和中斷傳輸兩種方式,中斷傳輸方式擁有強(qiáng)大的錯誤檢測和錯誤重傳的功能[5]。同傳統(tǒng)的數(shù)據(jù)采集系統(tǒng)相比,HID類USB設(shè)備使用Windows系統(tǒng)自帶的HID類驅(qū)動程序,無需為其編寫復(fù)雜的上位機(jī)USB驅(qū)動程序,具有無驅(qū)動、簡單、實時的優(yōu)點(diǎn)。
1.2 nRF24L01+模塊
nRF24L01+是一款工作于2.4~2.5 GHz頻段的無線收發(fā)芯片,有多達(dá)125個頻點(diǎn),可通過SPI傳輸數(shù)據(jù),最大傳輸速度為2 Mbps,并可通過跳頻來避免干擾。室內(nèi)傳輸距離為30~40 m,室外傳輸距離為100~200 m。內(nèi)置CRC校驗和出錯重傳機(jī)制[6]。圖2是nRF24L01+模塊的電路原理圖。
圖2 nRF24L01+模塊電路原理圖
1.3 STM32微控制器模塊
STM32F103C8基于Cortex-M3內(nèi)核,最高工作頻率達(dá)72 MHz,內(nèi)部集成64 KB FLASH,全速USB2.0收發(fā)器,且最高速度達(dá)12 Mbps,是一個完整的小型片上系統(tǒng),是小型USB應(yīng)用的理想選擇。微控制器通過6個引腳與nRF24L01+模塊相連,分別是:MISO、MOSI、SCK、CSN、CE、IRQ。圖3是STM32微控制器的電路原理圖。
系統(tǒng)軟件設(shè)計主要包括USB HID設(shè)備程序和無線收發(fā)模塊程序。由于nRF24L01+無線收發(fā)芯片的室外傳輸距離為100~200 m,而人為控制距離為100 m以內(nèi),滿足控制需要,所以未設(shè)置復(fù)雜的預(yù)警程序。但如果接收數(shù)據(jù)出錯,則會在上位機(jī)顯示報警信息。
2.1 USB HID設(shè)備程序
該地面調(diào)試系統(tǒng)利用ST公司提供的USB-FS Devic library V3.3固件庫編寫下位機(jī)程序。USB HID設(shè)備程序主要包括初始化程序、中斷程序2部分。USB HID接入計算機(jī)后,計算機(jī)先枚舉到設(shè)備,獲取設(shè)備路徑。當(dāng)計算機(jī)與設(shè)備建立連接后,通過中斷的方式進(jìn)行通信,主機(jī)請求響應(yīng)和數(shù)據(jù)收發(fā)都在中斷程序中完成。
(1) 初始化
初始化主要包括USB中斷使能、優(yōu)先級配置、時鐘設(shè)置、數(shù)據(jù)緩存設(shè)置、獲取序列號、對接口上電并復(fù)位接口、設(shè)置設(shè)備地址和端點(diǎn)地址為0、枚舉。其中枚舉包括獲取設(shè)備描述符、配置描述符、接口描述符、HID描述符和報告描述符。
(2) 中斷程序
中斷服務(wù)程序根據(jù)不同的中斷請求,轉(zhuǎn)入相應(yīng)的處理程序。處理過程為在USB_LP_CAN1_RX0_IRQHandler()函數(shù)處響應(yīng)USB中斷請求,并跳轉(zhuǎn)到中斷服務(wù)函數(shù)USB_Istr(),以輪詢的方式訪問各中斷寄存器,判斷發(fā)生的中斷請求。根據(jù)不同的中斷類型,轉(zhuǎn)入相應(yīng)的處理程序,并返回處理結(jié)果,完成通信任務(wù)。
2.2 nRF24L01+收發(fā)程序
無線模塊軟件包括初始化、發(fā)送模式、接收模式3個部分。
(1) 初始化
nRF24L01+模塊進(jìn)行無線通信前,需要對其進(jìn)行初始化,主要包括發(fā)送地址、接收地址、應(yīng)答方式、自動重發(fā)次數(shù)、工作模式等。該調(diào)試系統(tǒng)的工作模式為增強(qiáng)型Shock Burst模式,使能自動應(yīng)答,自動重發(fā)時間為500 μs,最大重發(fā)次數(shù)為10次,傳輸速率為2 Mbps。
(2) 接收模式
通過寄存器RX_ADDR_PX配置接收地址為通道0,置高CE引腳130 μs,當(dāng)接收到有效的數(shù)據(jù)和地址且CRC校驗通過后,自動去除數(shù)據(jù)頭、標(biāo)志位、校驗碼,將數(shù)據(jù)寫入RX_FIFO,通過USB將接收到的數(shù)據(jù)發(fā)送給上位機(jī)。
部分代碼如下:
voidNRF_Check_Event(void){
u8 sta =NRF_Read_Reg(NRF_READ_REG + NRFRegSTATUS);
u8 rx_len =NRF_Read_Reg(R_RX_PL_WID);
NRF_Read_Buf(RD_RX_PLOAD,nRF24L01_2_RXDATA,rx_len);// 讀取接收到的數(shù)據(jù)
Usb_Hid_Adddata(nRF24L01_2_RXDATA,rx_len);
圖3 STM32微控制器電路原理圖
NRF_Write_Reg(NRF_WRITE_REG + NRFRegSTATUS, sta);
}
(3) 發(fā)送模式
STM32微控制器接收到上位機(jī)發(fā)送過來的命令后,將nRF24L01+設(shè)置為發(fā)送模式,自動生成數(shù)據(jù)頭、CRC校驗碼并置高CE發(fā)送數(shù)據(jù),數(shù)據(jù)發(fā)送完畢后立即自動進(jìn)入接收模式,接收應(yīng)答信號。當(dāng)接收到應(yīng)答信號后,置1狀態(tài)寄存器TX_DS,并清除TX_FIFO寄存器中的數(shù)據(jù)。若未收到應(yīng)答信號,則認(rèn)為數(shù)據(jù)丟失,將重發(fā)數(shù)據(jù),直到發(fā)送成功或達(dá)到最大重發(fā)次數(shù)。
部分代碼如下:
voidNRF_TxPacket_AP(uint8_t * tx_buf, uint8_t len){
PMAToUserBufferCopy(Hid_RxData,ENDP1_RXADDR,64);
SPI_CE_L(); //StandBy I模式
NRF_Write_Buf(0xa8, tx_buf, len); //裝載數(shù)據(jù)
SPI_CE_H(); //置高CE
}
圖4 無線數(shù)據(jù)傳輸模塊
為了驗證該無線地面調(diào)試系統(tǒng)的有效性,基于某開源上位機(jī)分別進(jìn)行了飛行器姿態(tài)顯示、在線調(diào)試和數(shù)據(jù)分析測試。圖4為該調(diào)試系統(tǒng)的無線數(shù)據(jù)傳輸模塊。
3.1 姿態(tài)顯示
姿態(tài)顯示可以將無線模塊發(fā)回的數(shù)據(jù)在上位機(jī)中動態(tài)顯示,并將傳回的數(shù)據(jù)賦予三維飛行器模型,再現(xiàn)飛行器的空中姿態(tài),便于PID參數(shù)和控制算法的測試驗證。圖5為飛行器狀態(tài)顯示圖。由圖5可知,無線模塊傳回的數(shù)據(jù)有:遙控器通道行程、飛行模式、電機(jī)轉(zhuǎn)速、飛行器高度等。由遙控器和電機(jī)數(shù)據(jù)可知,飛行在順時針旋轉(zhuǎn)。
圖5 飛行器狀態(tài)顯示
3.2 在線調(diào)試
PID參數(shù)調(diào)試需要大量的試驗,而每次修改PID參數(shù)
圖8 加速度計和陀螺儀X軸信號濾波前后對比圖
后,都需要對程序重新編譯、下載,占用大部分的調(diào)試時間。無線地面調(diào)試系統(tǒng)中的在線調(diào)試功能
可以通過上位機(jī)修改PID參數(shù),并通過無線模塊發(fā)送到飛控,有效降低了PID參數(shù)調(diào)試時間。圖6為飛行器在線調(diào)試界面。
由圖6可知,該上位機(jī)不僅可以進(jìn)行PID參數(shù)的在線調(diào)試、傳感器校準(zhǔn),還包括許多接口用于后續(xù)的功能擴(kuò)展。
3.3 數(shù)據(jù)分析
數(shù)據(jù)分析可以根據(jù)需要存儲無線地面調(diào)試系統(tǒng)發(fā)回的數(shù)據(jù),然后對其進(jìn)行研究分析,以改善飛行器的控制算法和濾波算法。圖7為數(shù)據(jù)采集界面,圖8為加速度計和陀螺儀傳感器X軸信號濾波前后對比圖。
圖8是將無線地面調(diào)試系統(tǒng)發(fā)回的數(shù)據(jù)通過Matlab處理后得到的,其中濾波前的信號是飛行器傳感器實際變化值,分析可知,機(jī)體振動對加速度傳感器影響較大,而對陀螺儀傳感器幾乎沒有影響。根據(jù)分析結(jié)果,采用不同的濾波算法對兩傳感器數(shù)據(jù)進(jìn)行濾波,濾波后的數(shù)據(jù)波形基本還原了傳感器實際變化值。
圖6 飛行器在線調(diào)試界面
圖7 數(shù)據(jù)采集界面
[1] 李波陳,王紅州,劉曉棟,等.可伸縮折疊式四旋翼飛行器設(shè)計[J].機(jī)械研究與應(yīng)用,2015,28(2):121-124.
[2] Jakob B, Morten K, Martin S. Autonomous hover flight for a quadrotor helicopter[D]. Aalborg , Denmark :Aalborg University,2007.
[3] 孫英達(dá),徐文琴,丁立新. nRF905無線收發(fā)芯片的應(yīng)用[J].機(jī)械制造與自動化, 2009,38(6): 115-116.
[4] Compaq,Intel,Philips.Universal Serial Bus Specification Revision2.0[EB/OL].[2016-06].http://www.usb.org.
[5] 王紀(jì)剛,袁紅兵,張相田.無線溫濕度數(shù)據(jù)采集板的設(shè)計[J].機(jī)械制造與自動化,2013,42(6):113-117.
[6] 金寶華,張勇,崔光照.基于nRF905的無線數(shù)據(jù)多點(diǎn)跳傳通信系統(tǒng)[J].儀表技術(shù)與傳感器,2004(9):39-40.
游安華(講師),主要研究方向為旋翼飛行器設(shè)計與開發(fā)、嵌入式開發(fā)。
Aircraft Wireless Debugging System Based on USB HID and nRF24L01+
You Anhua1,Xu Jialin2
(1.Engineering Training Center,Nanjing University of Science and Technology, Nanjing 210094,China;2.School of Mechanical Engineer,Nanjing University of Science and Technology)
In order to collect the real-time data and debug the aircraft online,the wireless debugging system based on USB HID and nRF24L01+is designed.The flight control system receives the data and then sends to the host computer.The data is used for the dynamic display of flight state and follow-up study.At the same time,the system can send the control signal to the host computer to realize online debugging and host computer control.The test results show that the system has low-cost and good real-time performance,and it meets the needs of the quadrotor development.
quadrotor;STM32 microcontroller;USB HID;nRF24L01+;wireless communication
TP332
A
?迪娜
2016-06-29)